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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
/**
* @file rtems/shell.h
*
* Instantatiate a new terminal shell.
*/
/*
* Author:
*
* WORK: fernando.ruiz@ctv.es
* HOME: correo@fernando-ruiz.com
*
* Thanks at:
* Chris John
*
* $Id$
*/
#ifndef __SHELL_H__
#define __SHELL_H__
#include <rtems.h>
#include <stdio.h>
#include <termios.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef int (*shell_command_t)(int argc,char * argv[]);
struct shell_cmd_tt ;
typedef struct shell_cmd_tt shell_cmd_t;
struct shell_cmd_tt {
char *name;
char *usage;
char *topic;
shell_command_t command;
shell_cmd_t *alias;
shell_cmd_t *next;
};
uint32_t new_rtems_name(char * rtems_name);
shell_cmd_t * shell_lookup_cmd(char * cmd);
shell_cmd_t * shell_add_cmd(char * cmd,
char * topic,
char * usage,
shell_command_t command);
shell_cmd_t * shell_alias_cmd(char * cmd, char * alias);
int shell_make_args(char * cmd,
int * pargc,
char * argv[]);
typedef struct {
rtems_name magic; /* 'S','E','N','V': Shell Environment */
char * devname;
char * taskname;
tcflag_t tcflag;
/* user extensions */
int exit_shell; /* logout */
int forever ; /* repeat login */
int errorlevel;
int mdump_adr;
} shell_env_t;
int shell_scanline(char * line,int size,FILE * in,FILE * out) ;
void cat_file(FILE * out,char *name);
void write_file(char *name,char * content);
rtems_status_code shell_init(
char *task_name,
uint32_t task_stacksize, /*0 default*/
rtems_task_priority task_priority,
char *devname,
tcflag_t tcflag,
int forever
);
rtems_boolean shell_shell_loop(
shell_env_t *shell_env
);
extern shell_env_t global_shell_env;
extern shell_env_t *current_shell_env;
/*--------*/
/* cmds.c */
/*--------*/
int str2int(char * s);
void register_cmds(void);
#ifdef __cplusplus
}
#endif
#endif
|