1 /* 2 * Copyright (c) 2017 Intel Corporation 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef ZEPHYR_INCLUDE_DRIVERS_CONSOLE_CONSOLE_H_ 8 #define ZEPHYR_INCLUDE_DRIVERS_CONSOLE_CONSOLE_H_ 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 #define CONSOLE_MAX_LINE_LEN CONFIG_CONSOLE_INPUT_MAX_LINE_LEN 15 16 /** @brief Console input representation 17 * 18 * This struct is used to represent an input line from a console. 19 * Recorded line must be NULL terminated. 20 */ 21 struct console_input { 22 /** FIFO uses first word itself, reserve space */ 23 intptr_t _unused; 24 /** Whether this is an mcumgr command */ 25 uint8_t is_mcumgr : 1; 26 /** Buffer where the input line is recorded */ 27 char line[CONSOLE_MAX_LINE_LEN]; 28 }; 29 30 /** @brief Console input processing handler signature 31 * 32 * Input processing is started when string is typed in the console. 33 * Carriage return is translated to NULL making string always NULL 34 * terminated. Application before calling register function need to 35 * initialize two fifo queues mentioned below. 36 * 37 * @param avail k_fifo queue keeping available input slots 38 * @param lines k_fifo queue of entered lines which to be processed 39 * in the application code. 40 * @param completion callback for tab completion of entered commands 41 * 42 * @return N/A 43 */ 44 typedef void (*console_input_fn)(struct k_fifo *avail, struct k_fifo *lines, 45 uint8_t (*completion)(char *str, uint8_t len)); 46 47 #ifdef __cplusplus 48 } 49 #endif 50 51 #endif /* ZEPHYR_INCLUDE_DRIVERS_CONSOLE_CONSOLE_H_ */ 52