111 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2006-2018, RT-Thread Development Team
 | |
|  *
 | |
|  * SPDX-License-Identifier: Apache-2.0
 | |
|  *
 | |
|  * Change Logs:
 | |
|  * Date           Author       Notes
 | |
|  * 2011-06-02     Bernard      Add finsh_get_prompt function declaration
 | |
|  */
 | |
| 
 | |
| #ifndef __SHELL_H__
 | |
| #define __SHELL_H__
 | |
| 
 | |
| #include <rtthread.h>
 | |
| #include "finsh.h"
 | |
| 
 | |
| #ifndef FINSH_THREAD_PRIORITY
 | |
| #define FINSH_THREAD_PRIORITY 20
 | |
| #endif
 | |
| #ifndef FINSH_THREAD_STACK_SIZE
 | |
| #define FINSH_THREAD_STACK_SIZE 2048
 | |
| #endif
 | |
| #ifndef FINSH_CMD_SIZE
 | |
| #define FINSH_CMD_SIZE      80
 | |
| #endif
 | |
| 
 | |
| #define FINSH_OPTION_ECHO   0x01
 | |
| 
 | |
| #define FINSH_PROMPT        finsh_get_prompt()
 | |
| const char* finsh_get_prompt(void);
 | |
| int finsh_set_prompt(const char * prompt);
 | |
| 
 | |
| #ifdef FINSH_USING_HISTORY
 | |
|     #ifndef FINSH_HISTORY_LINES
 | |
|         #define FINSH_HISTORY_LINES 5
 | |
|     #endif
 | |
| #endif
 | |
| 
 | |
| #ifdef FINSH_USING_AUTH
 | |
|     #ifndef FINSH_PASSWORD_MAX
 | |
|         #define FINSH_PASSWORD_MAX RT_NAME_MAX
 | |
|     #endif
 | |
|     #ifndef FINSH_PASSWORD_MIN
 | |
|         #define FINSH_PASSWORD_MIN 6
 | |
|     #endif
 | |
|     #ifndef FINSH_DEFAULT_PASSWORD
 | |
|         #define FINSH_DEFAULT_PASSWORD "rtthread"
 | |
|     #endif
 | |
| #endif /* FINSH_USING_AUTH */
 | |
| 
 | |
| #ifndef FINSH_THREAD_NAME
 | |
| #define FINSH_THREAD_NAME   "tshell"
 | |
| #endif
 | |
| 
 | |
| enum input_stat
 | |
| {
 | |
|     WAIT_NORMAL,
 | |
|     WAIT_SPEC_KEY,
 | |
|     WAIT_FUNC_KEY,
 | |
| };
 | |
| struct finsh_shell
 | |
| {
 | |
|     struct rt_semaphore rx_sem;
 | |
| 
 | |
|     enum input_stat stat;
 | |
| 
 | |
|     rt_uint8_t echo_mode:1;
 | |
|     rt_uint8_t prompt_mode: 1;
 | |
| 
 | |
| #ifdef FINSH_USING_HISTORY
 | |
|     rt_uint16_t current_history;
 | |
|     rt_uint16_t history_count;
 | |
| 
 | |
|     char cmd_history[FINSH_HISTORY_LINES][FINSH_CMD_SIZE];
 | |
| #endif
 | |
| 
 | |
| #ifndef FINSH_USING_MSH_ONLY
 | |
|     struct finsh_parser parser;
 | |
| #endif
 | |
| 
 | |
|     char line[FINSH_CMD_SIZE];
 | |
|     rt_uint8_t line_position;
 | |
|     rt_uint8_t line_curpos;
 | |
| 
 | |
| #ifndef RT_USING_POSIX
 | |
|     rt_device_t device;
 | |
| #endif
 | |
| 
 | |
| #ifdef FINSH_USING_AUTH
 | |
|     char password[FINSH_PASSWORD_MAX];
 | |
| #endif
 | |
| };
 | |
| 
 | |
| void finsh_set_echo(rt_uint32_t echo);
 | |
| rt_uint32_t finsh_get_echo(void);
 | |
| 
 | |
| int finsh_system_init(void);
 | |
| void finsh_set_device(const char* device_name);
 | |
| const char* finsh_get_device(void);
 | |
| 
 | |
| rt_uint32_t finsh_get_prompt_mode(void);
 | |
| void finsh_set_prompt_mode(rt_uint32_t prompt_mode);
 | |
| 
 | |
| #ifdef FINSH_USING_AUTH
 | |
| rt_err_t finsh_set_password(const char *password);
 | |
| const char *finsh_get_password(void);
 | |
| #endif
 | |
| 
 | |
| #endif
 | |
| 
 |