1
0
mirror of https://github.com/NevermindZZT/letter-shell.git synced 2025-01-01 09:58:41 +08:00

41 Commits

Author SHA1 Message Date
Letter
abc23365d0 命令组支持函数签名 2024-06-13 22:40:10 +08:00
Letter
199fa5fe92 新增 segger rtt demo 2024-04-20 05:13:52 +00:00
Letter
9d9cb2c5bd 新增 数组参数支持 2023-10-29 04:53:20 +00:00
Letter
795da34975 修复 命令表方式编译问题
优化 命令参数分词方法
2023-10-14 04:23:33 +00:00
Letter
1725f88d1e 移除 命令结构体填充 2023-05-27 08:23:01 +00:00
Letter
e9375840bd 新增 自定义类型解析
- 可以对自定义的数据结构定义解析器,然后使用函数签名进行参数自动解析
2023-04-22 07:50:25 +00:00
Letter
99b5e6d386 新增 支持自定义类型的函数签名 2023-04-16 17:18:38 +08:00
Letter
acd9dceb4e 新增 函数签名
## 函数签名

之前的版本里,如果声明的命令是 `SHELL_TYPE_CMD_FUNC`,shell 会自动进行参数的转换,但是参数转换后的类型是猜出来的,无法保证转换后的数据类型是正确的,一旦猜错了,就容易导致程序挂掉

由此,借鉴 Java 等语言的函数签名,新版也引入了函数签名的概念,在声明命令时,可以给定最终执行命令的函数的签名,shell 根据这个签名进行参数转换,使用此功能时,需要打开宏 `SHELL_USING_FUNC_SIGNATURE`

函数签名是一个字符串,通过这个字符串声明表达函数的参数类型,返回值不声明,比如一个函数`int func(int a, char *b, char c)`,它的函数签名就是 `ics`

基本类型的参数签名定义如下:

| 类型                 | 签名 |
| -------------------- | ---- |
| char(字符)           | c    |
| int/short/char(数字) | i    |
| char * (字符串)      | s    |
| pointer              | p    |

声明命令时,在最后添加一个参数 `.data.cmd.signature = "ics"` 即可,比如:

```c
void shellFuncSignatureTest(int a, char *b, char c)
{
    printf("a = %d, b = %s, c = %c\r\n", a, b, c);
}
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC),
funcSignatureTest, shellFuncSignatureTest, test function signature, .data.cmd.signature = "isc");
```
2023-04-15 16:30:44 +08:00
Letter
c4dad4c43a 更新 配置方式,可以使用一个 overlay 的头文件进行配置 2023-04-08 20:03:56 +08:00
Letter
35cadf2695 更新 esp-idf demo 2022-05-08 12:44:37 +08:00
Letter
c823f6403d 新增 安全用户组件 2022-03-12 21:37:49 +08:00
Letter
a6e391b449 新增 telnet组件 2021-08-08 14:16:12 +08:00
Letter
698626bc46 Merge branch 'shell3.1' of https://github.com/NevermindZZT/letter-shell into shell3.1 2021-08-07 12:09:17 +08:00
Letter
62082b4601 新增 命令返回值变量 2021-08-07 12:07:22 +08:00
Sean.Y
2384858d62 新增推箱子游戏 2021-08-04 08:41:37 +08:00
Letter
1eebc8f06e Merge branch 'shell3.1' of https://github.com/NevermindZZT/letter-shell into shell3.1 2021-07-31 13:51:50 +08:00
Letter
c6adeb363c 修正 CMakeLists.txt文件命名 2021-07-31 13:45:42 +08:00
Letter
2e7ec71c5c 新增 命令行游戏demo 2021-07-31 13:39:27 +08:00
Letter
6b79f9a4a1 新增 双击tab快速帮助 2021-06-12 16:39:12 +08:00
Letter
fe95543f6b 修复 x86 demo输入过快时的回显问题 2021-06-05 23:04:53 +08:00
Letter
26acf89e61
Merge branch 'shell3.1' into master 2021-05-31 22:45:24 +08:00
Letter
b68a8e3b6f 新增 passthrough模式 2021-05-31 22:39:11 +08:00
Letter
7898c24578 更新 stm32-freertos demo 2021-05-28 20:16:00 +08:00
Letter
4522c026bb 修复 log工具问题
优化 x86 demo使用cmake构建
2021-05-22 21:50:35 +08:00
NevermindZZT
480223721d 更改 shell读写接口 2021-04-05 19:06:25 +08:00
NevermindZZT
ef1bde9600 增加 cpp support的readme和示例 2021-01-17 15:30:47 +08:00
Letter
cf3f6d7f1f 新增 shell格式化输入 2020-12-15 20:43:14 +08:00
Letter
38b8c7795f 增加 参数自动转换最大参数限制
修复 对错误命令使用help时会引起异常的问题
2020-11-29 14:32:48 +08:00
Letter
6019d58b04 新增 shell命令组组件 2020-10-18 16:00:55 +08:00
Letter
5fb5e43e06 新增 节点变量
x86 demo增加一个按键键值测试命令
2020-09-05 12:10:19 +08:00
Letter
2bc0966db7 新增 字符串变量类型
移除 常量类型,改为使用变量只读属性实现
2020-08-23 17:46:05 +08:00
Letter
864ce4874f 新增 文件系统支持组件 2020-08-16 15:26:59 +08:00
Letter
e528087d71 新增 shell尾行模式 2020-08-01 17:33:49 +08:00
Letter
b8efab542b 新增 shell伴生对象
新增 支持提示符路径修改
移除 sh命令
2020-07-25 15:04:33 +08:00
Letter
1624e4835c 新增 支持在程序中调用接口直接运行命令
新增 支持在程序中调用接口直接运行命令
修复 直接运行未导出命令时,参数错误时的错误处理
2020-07-14 22:15:03 +08:00
Letter
a1f0bc50c6 新增 支持未导出函数执行 2020-06-22 15:28:08 +08:00
Letter
c9509964d3 新增是否在登录后清除命令行的配置 2020-06-04 10:20:17 +08:00
Letter
85ed0caf02 新增shell信息显示控制 2020-05-26 10:13:36 +08:00
Letter
7634d5ac68 增加esp-idf的demo 2020-02-23 21:03:12 +08:00
Letter
6d6cecfe01 新增命令权限打印
新增命令权限打印
支持切换用户同时输入密码
加入shell格式化输出函数
2020-01-18 16:21:02 +08:00
Letter
912bbf5851 shell 3.0 2020-01-17 17:51:32 +08:00