xref: /nrf52832-nimble/rt-thread/components/finsh/shell.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * Copyright (c) 2006-2018, RT-Thread Development Team
3*10465441SEvalZero  *
4*10465441SEvalZero  * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero  *
6*10465441SEvalZero  * Change Logs:
7*10465441SEvalZero  * Date           Author       Notes
8*10465441SEvalZero  * 2011-06-02     Bernard      Add finsh_get_prompt function declaration
9*10465441SEvalZero  */
10*10465441SEvalZero 
11*10465441SEvalZero #ifndef __SHELL_H__
12*10465441SEvalZero #define __SHELL_H__
13*10465441SEvalZero 
14*10465441SEvalZero #include <rtthread.h>
15*10465441SEvalZero #include "finsh.h"
16*10465441SEvalZero 
17*10465441SEvalZero #ifndef FINSH_THREAD_PRIORITY
18*10465441SEvalZero #define FINSH_THREAD_PRIORITY 20
19*10465441SEvalZero #endif
20*10465441SEvalZero #ifndef FINSH_THREAD_STACK_SIZE
21*10465441SEvalZero #define FINSH_THREAD_STACK_SIZE 2048
22*10465441SEvalZero #endif
23*10465441SEvalZero #ifndef FINSH_CMD_SIZE
24*10465441SEvalZero #define FINSH_CMD_SIZE      80
25*10465441SEvalZero #endif
26*10465441SEvalZero 
27*10465441SEvalZero #define FINSH_OPTION_ECHO   0x01
28*10465441SEvalZero 
29*10465441SEvalZero #define FINSH_PROMPT        finsh_get_prompt()
30*10465441SEvalZero const char* finsh_get_prompt(void);
31*10465441SEvalZero int finsh_set_prompt(const char * prompt);
32*10465441SEvalZero 
33*10465441SEvalZero #ifdef FINSH_USING_HISTORY
34*10465441SEvalZero     #ifndef FINSH_HISTORY_LINES
35*10465441SEvalZero         #define FINSH_HISTORY_LINES 5
36*10465441SEvalZero     #endif
37*10465441SEvalZero #endif
38*10465441SEvalZero 
39*10465441SEvalZero #ifdef FINSH_USING_AUTH
40*10465441SEvalZero     #ifndef FINSH_PASSWORD_MAX
41*10465441SEvalZero         #define FINSH_PASSWORD_MAX RT_NAME_MAX
42*10465441SEvalZero     #endif
43*10465441SEvalZero     #ifndef FINSH_PASSWORD_MIN
44*10465441SEvalZero         #define FINSH_PASSWORD_MIN 6
45*10465441SEvalZero     #endif
46*10465441SEvalZero     #ifndef FINSH_DEFAULT_PASSWORD
47*10465441SEvalZero         #define FINSH_DEFAULT_PASSWORD "rtthread"
48*10465441SEvalZero     #endif
49*10465441SEvalZero #endif /* FINSH_USING_AUTH */
50*10465441SEvalZero 
51*10465441SEvalZero #ifndef FINSH_THREAD_NAME
52*10465441SEvalZero #define FINSH_THREAD_NAME   "tshell"
53*10465441SEvalZero #endif
54*10465441SEvalZero 
55*10465441SEvalZero enum input_stat
56*10465441SEvalZero {
57*10465441SEvalZero     WAIT_NORMAL,
58*10465441SEvalZero     WAIT_SPEC_KEY,
59*10465441SEvalZero     WAIT_FUNC_KEY,
60*10465441SEvalZero };
61*10465441SEvalZero struct finsh_shell
62*10465441SEvalZero {
63*10465441SEvalZero     struct rt_semaphore rx_sem;
64*10465441SEvalZero 
65*10465441SEvalZero     enum input_stat stat;
66*10465441SEvalZero 
67*10465441SEvalZero     rt_uint8_t echo_mode:1;
68*10465441SEvalZero     rt_uint8_t prompt_mode: 1;
69*10465441SEvalZero 
70*10465441SEvalZero #ifdef FINSH_USING_HISTORY
71*10465441SEvalZero     rt_uint16_t current_history;
72*10465441SEvalZero     rt_uint16_t history_count;
73*10465441SEvalZero 
74*10465441SEvalZero     char cmd_history[FINSH_HISTORY_LINES][FINSH_CMD_SIZE];
75*10465441SEvalZero #endif
76*10465441SEvalZero 
77*10465441SEvalZero #ifndef FINSH_USING_MSH_ONLY
78*10465441SEvalZero     struct finsh_parser parser;
79*10465441SEvalZero #endif
80*10465441SEvalZero 
81*10465441SEvalZero     char line[FINSH_CMD_SIZE];
82*10465441SEvalZero     rt_uint8_t line_position;
83*10465441SEvalZero     rt_uint8_t line_curpos;
84*10465441SEvalZero 
85*10465441SEvalZero #ifndef RT_USING_POSIX
86*10465441SEvalZero     rt_device_t device;
87*10465441SEvalZero #endif
88*10465441SEvalZero 
89*10465441SEvalZero #ifdef FINSH_USING_AUTH
90*10465441SEvalZero     char password[FINSH_PASSWORD_MAX];
91*10465441SEvalZero #endif
92*10465441SEvalZero };
93*10465441SEvalZero 
94*10465441SEvalZero void finsh_set_echo(rt_uint32_t echo);
95*10465441SEvalZero rt_uint32_t finsh_get_echo(void);
96*10465441SEvalZero 
97*10465441SEvalZero int finsh_system_init(void);
98*10465441SEvalZero void finsh_set_device(const char* device_name);
99*10465441SEvalZero const char* finsh_get_device(void);
100*10465441SEvalZero 
101*10465441SEvalZero rt_uint32_t finsh_get_prompt_mode(void);
102*10465441SEvalZero void finsh_set_prompt_mode(rt_uint32_t prompt_mode);
103*10465441SEvalZero 
104*10465441SEvalZero #ifdef FINSH_USING_AUTH
105*10465441SEvalZero rt_err_t finsh_set_password(const char *password);
106*10465441SEvalZero const char *finsh_get_password(void);
107*10465441SEvalZero #endif
108*10465441SEvalZero 
109*10465441SEvalZero #endif
110*10465441SEvalZero 
111