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