1 2 #ifndef CLI_CONSOLE_H 3 #define CLI_CONSOLE_H 4 5 #include <stdint.h> 6 #include <stdlib.h> 7 #include "aos/kernel.h" 8 #include "aos/list.h" 9 10 #define CLI_CONSOLE_TAG_LEN 64 11 12 #define CLI_CONSOLE_MAX_NAME_LEN 32 13 14 typedef void (* command_callback)(void *private_data); 15 16 typedef struct _wraper_task { 17 dlist_t task_list_node; 18 void *task; 19 } wraper_task; 20 21 typedef struct _device_console { 22 char *name; 23 int fd; 24 int (*read)(void *buf, size_t len, void *private_data); 25 int (*write)(const void *buf, size_t len, void *private_data); 26 int (*init)(void *private_data); 27 int (*deinit)(void *private_data); 28 } device_console; 29 30 typedef struct _command_line_console { 31 dlist_t i_list; 32 device_console *dev_console; 33 char name[CLI_CONSOLE_MAX_NAME_LEN]; 34 int init_flag; 35 int exit_flag; 36 int alive; 37 void *private_data; 38 void *task; 39 char cli_tag[CLI_CONSOLE_TAG_LEN]; 40 unsigned char cli_tag_len; 41 aos_sem_t sem; 42 aos_sem_t console_exit_sem; 43 unsigned int att_pid; 44 command_callback finsh_callback; 45 command_callback start_callback; 46 dlist_t task_list; 47 char cli_console_inbuf[CLI_INBUF_SIZE]; 48 } cli_console; 49 50 int get_alive_console_num(void); 51 52 int32_t create_default_console_task(uint32_t stack_size, uint32_t priority); 53 54 cli_console *get_current_console(void); 55 56 cli_console *get_default_console(void); 57 58 cli_console *set_default_console(void *console); 59 60 cli_console *get_global_console(void); 61 62 cli_console *set_global_console(void *console); 63 64 cli_console *get_clitask_console(void); 65 66 void cli_console_set_exit_flag(cli_console *console); 67 68 void cli_console_set_tag_len(uint8_t cli_tag_len, int *error); 69 70 uint8_t cli_console_get_tag_len(int *error); 71 72 void cli_console_set_tag(char cli_tag, uint32_t idx, int *error); 73 74 char cli_console_get_tag(uint32_t idx, int *error); 75 76 char *cli_console_get_all_tag(int *error); 77 78 int cli_console_read(cli_console *console, void *buf, size_t nbytes); 79 80 int cli_console_write(cli_console *console, const void *buf, size_t nbytes); 81 82 int cli_console_deinit(cli_console *console); 83 84 int cli_console_init(cli_console *console); 85 86 cli_console *cli_console_create(device_console *dev_console, const char *name, void *private_data); 87 88 int cli_console_destory(cli_console *console); 89 90 int cli_console_task_create(cli_console *console, uint32_t stack_size, uint32_t priority); 91 92 int cli_console_task_destory(cli_console *console); 93 94 void cli_console_current_task_destory(void); 95 96 char *cli_task_get_console_name(void); 97 98 char *cli_console_get_name(cli_console *console); 99 100 int cli_console_task_check_exit_flag(void); 101 102 void check_console_task_exit(void); 103 104 int cli_task_set_console(void *task_handle, void *console); 105 106 char *cli_task_get_console(void *task_handle); 107 108 void cli_console_remove_task_list_node(cli_console *console, void *task); 109 110 void cli_console_add_task_list_node(void *current_console, void *task); 111 112 int cli_console_check_task_list_node(cli_console *console, void *task); 113 114 int cli_task_clear_console(void *task_handle); 115 116 void multiple_console_init(void); 117 118 int uart_console_write(const void *buf, size_t len, void *privata_data); 119 120 int uart_console_read(void *buf, size_t len, void *privata_data); 121 122 void cli_console_show(void); 123 124 #endif /*CLI_CONSOLE_H*/ 125