shell.h 1.1 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
#ifndef __SHELL_H__
#define __SHELL_H__

#include <rtthread.h>

#define FINSH_USING_HISTORY
#ifndef FINSH_THREAD_PRIORITY
#define FINSH_THREAD_PRIORITY 20
#endif
#ifndef FINSH_THREAD_STACK_SIZE
#define FINSH_THREAD_STACK_SIZE 2048
#endif
#define FINSH_CMD_SIZE		80

#define FINSH_OPTION_ECHO	0x01
#define FINSH_PROMPT		"finsh>>"

#ifdef FINSH_USING_HISTORY
enum input_stat
{
	WAIT_NORMAL,
	WAIT_SPEC_KEY,
	WAIT_FUNC_KEY,
};
	#ifndef FINSH_HISTORY_LINES
		#define FINSH_HISTORY_LINES 5
	#endif
#endif

struct finsh_shell
{
	struct rt_semaphore rx_sem;

	enum input_stat stat;

	rt_uint8_t echo_mode:1;
	rt_uint8_t use_history:1;

#ifdef FINSH_USING_HISTORY
	rt_uint8_t current_history;
	rt_uint16_t history_count;

	char cmd_history[FINSH_HISTORY_LINES][FINSH_CMD_SIZE];
#endif

	struct finsh_parser parser;

	char line[FINSH_CMD_SIZE];
	rt_uint8_t line_position;

	rt_device_t device;
};

B
bernard.xiong@gmail.com 已提交
54
void finsh_set_echo(rt_uint32_t echo);
55 56 57
rt_uint32_t finsh_get_echo(void);

void finsh_set_device(const char* device_name);
B
bernard.xiong@gmail.com 已提交
58
const char* finsh_get_device();
59 60

#endif