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