1414
1515#include "finsh.h"
1616
17+ #ifdef FINSH_USING_SYMTAB
18+ struct finsh_syscall * _syscall_table_begin = NULL ;
19+ struct finsh_syscall * _syscall_table_end = NULL ;
20+ struct finsh_sysvar * _sysvar_table_begin = NULL ;
21+ struct finsh_sysvar * _sysvar_table_end = NULL ;
22+
23+ #elif defined(CONFIG_ARDUINO )
24+ #ifdef ADD_SHELL_CMD
25+ #undef ADD_SHELL_CMD
26+ #endif
27+ // insert prototype
28+ #define ADD_SHELL_CMD (name , desc , fn , r_type , ...) \
29+ extern r_type fn(__VA_ARGS__);
30+ #include "shell_cmd.h"
31+ #undef ADD_SHELL_CMD
32+ // insert entry
33+ #ifdef FINSH_USING_DESCRIPTION
34+ #define ADD_SHELL_CMD (name , desc , fn , r_type , ...) \
35+ {#name, #desc, (syscall_func)fn},
36+ #else
37+ #define ADD_SHELL_CMD (name , desc , fn , r_type , ...) \
38+ {#name, (syscall_func)fn},
39+ #endif
40+ struct finsh_syscall _syscall_table [] = {
41+ #include "shell_cmd.h"
42+ };
43+ #undef ADD_SHELL_CMD
44+
45+ #ifdef ADD_SHELL_VAR
46+ #undef ADD_SHELL_VAR
47+ #endif
48+ // insert prototype
49+ #define finsh_type_unknown void*
50+ #define finsh_type_void void
51+ #define finsh_type_voidp void*
52+ #define finsh_type_char char
53+ #define finsh_type_uchar unsigned char
54+ #define finsh_type_charp char*
55+ #define finsh_type_short short
56+ #define finsh_type_ushort unsigned short
57+ #define finsh_type_shortp short*
58+ #define finsh_type_int int
59+ #define finsh_type_uint unsigned int
60+ #define finsh_type_intp int*
61+ #define finsh_type_long long
62+ #define finsh_type_ulong unsigned long
63+ #define finsh_type_longp unsigned*
64+ #define ADD_SHELL_VAR (name , desc , var , type ) \
65+ extern type var;
66+ #include "shell_var.h"
67+ #undef finsh_type_unknown
68+ #undef finsh_type_void
69+ #undef finsh_type_voidp
70+ #undef finsh_type_char
71+ #undef finsh_type_uchar
72+ #undef finsh_type_charp
73+ #undef finsh_type_short
74+ #undef finsh_type_ushort
75+ #undef finsh_type_shortp
76+ #undef finsh_type_int
77+ #undef finsh_type_uint
78+ #undef finsh_type_intp
79+ #undef finsh_type_long
80+ #undef finsh_type_ulong
81+ #undef finsh_type_longp
82+ #undef ADD_SHELL_VAR
83+ // insert entry
84+ #ifdef FINSH_USING_DESCRIPTION
85+ #define ADD_SHELL_VAR (name , desc , var , type ) \
86+ {#name, #desc, type, &var},
87+ #else
88+ #define ADD_SHELL_VAR (name , desc , var , type ) \
89+ {#name, type, &var},
90+ #endif
91+ struct finsh_sysvar _sysvar_table [] = {
92+ #include "shell_var.h"
93+ };
94+ #undef ADD_SHELL_VAR
95+
96+ struct finsh_syscall * _syscall_table_begin = & _syscall_table [0 ];
97+ struct finsh_syscall * _syscall_table_end = \
98+ & _syscall_table [sizeof (_syscall_table ) / sizeof (struct finsh_syscall )];
99+ struct finsh_sysvar * _sysvar_table_begin = & _sysvar_table [0 ];
100+ struct finsh_sysvar * _sysvar_table_end = \
101+ & _sysvar_table [sizeof (_sysvar_table ) / sizeof (struct finsh_sysvar )];
102+
103+ #else /* FINSH_USING_SYMTAB */
17104long hello (void );
18105long version (void );
19106long list (void );
@@ -27,24 +114,6 @@ long list_msgqueue(void);
27114long list_mempool (void );
28115long list_timer (void );
29116
30- #ifdef CONFIG_ARDUINO
31- #define CONVERT_TO_CMD (f ) \
32- void f(void); \
33- long f##_(void) { \
34- f(); \
35- return 0; \
36- }
37- #define INSERT_CMD (f ) {#f, f##_}
38-
39- CONVERT_TO_CMD (list_mem );
40- #endif /* CONFIG_ARDUINO */
41-
42- #ifdef FINSH_USING_SYMTAB
43- struct finsh_syscall * _syscall_table_begin = NULL ;
44- struct finsh_syscall * _syscall_table_end = NULL ;
45- struct finsh_sysvar * _sysvar_table_begin = NULL ;
46- struct finsh_sysvar * _sysvar_table_end = NULL ;
47- #else
48117struct finsh_syscall _syscall_table [] =
49118{
50119 {"hello" , hello },
@@ -73,16 +142,12 @@ struct finsh_syscall _syscall_table[] =
73142 {"list_memp" , list_mempool },
74143#endif
75144 {"list_timer" , list_timer },
76- #ifdef CONFIG_ARDUINO
77- INSERT_CMD (list_mem ),
78- #endif
79145};
80146struct finsh_syscall * _syscall_table_begin = & _syscall_table [0 ];
81147struct finsh_syscall * _syscall_table_end = & _syscall_table [sizeof (_syscall_table ) / sizeof (struct finsh_syscall )];
82-
83148struct finsh_sysvar * _sysvar_table_begin = NULL ;
84149struct finsh_sysvar * _sysvar_table_end = NULL ;
85- #endif
150+ #endif /* FINSH_USING_SYMTAB */
86151
87152#endif /* RT_USING_FINSH */
88153
0 commit comments