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 typedef void (*console_input_fn)(struct k_fifo *avail, struct k_fifo *lines, 43 uint8_t (*completion)(char *str, uint8_t len)); 44 45 #ifdef __cplusplus 46 } 47 #endif 48 49 #endif /* ZEPHYR_INCLUDE_DRIVERS_CONSOLE_CONSOLE_H_ */ 50