shell_cfg_user.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /**
  2. * @file shell_cfg_user.h
  3. * @author Letter (nevermindzzt@gmail.com)
  4. * @brief shell config
  5. * @version 3.0.0
  6. * @date 2019-12-31
  7. *
  8. * @copyright (c) 2019 Letter
  9. *
  10. */
  11. #ifndef __SHELL_CFG_USER_H__
  12. #define __SHELL_CFG_USER_H__
  13. #include "stdlib.h"
  14. unsigned int userGetTick();
  15. /**
  16. * @brief 是否使用shell伴生对象
  17. * 一些扩展的组件(文件系统支持,日志工具等)需要使用伴生对象
  18. */
  19. #define SHELL_USING_COMPANION 0
  20. /**
  21. * @brief 支持shell尾行模式
  22. */
  23. #define SHELL_SUPPORT_END_LINE 1
  24. /**
  25. * @brief 使用执行未导出函数的功能
  26. * 启用后,可以通过`exec [addr] [args]`直接执行对应地址的函数
  27. * @attention 如果地址错误,可能会直接引起程序崩溃
  28. */
  29. #define SHELL_EXEC_UNDEF_FUNC 1
  30. /**
  31. * @brief 保存命令返回值
  32. * 开启后会默认定义一个`RETVAL`变量,会保存上一次命令执行的返回值,可以在随后的命令中进行调用
  33. * 如果命令的`SHELL_CMD_DISABLE_RETURN`标志被设置,则该命令不会更新`RETVAL`
  34. */
  35. #define SHELL_KEEP_RETURN_VALUE 1
  36. /**
  37. * @brief shell格式化输入的缓冲大小
  38. * 为0时不使用shell格式化输入
  39. * @note shell格式化输入会阻塞shellTask, 仅适用于在有操作系统的情况下使用
  40. */
  41. #define SHELL_SCAN_BUFFER 128
  42. /**
  43. * @brief 获取系统时间(ms)
  44. * 定义此宏为获取系统Tick,如`HAL_GetTick()`
  45. * @note 此宏不定义时无法使用双击tab补全命令help,无法使用shell超时锁定
  46. */
  47. #define SHELL_GET_TICK() userGetTick()
  48. /**
  49. * @brief shell内存分配
  50. * shell本身不需要此接口,若使用shell伴生对象,需要进行定义
  51. */
  52. #define SHELL_MALLOC(size) malloc(size)
  53. /**
  54. * @brief shell内存释放
  55. * shell本身不需要此接口,若使用shell伴生对象,需要进行定义
  56. */
  57. #define SHELL_FREE(obj) free(obj)
  58. /**
  59. * @brief 使用函数签名
  60. * 使能后,可以在声明命令时,指定函数的签名,shell 会根据函数签名进行参数转换,
  61. * 而不是自动判断参数的类型,如果参数和函数签名不匹配,会停止执行命令
  62. */
  63. #define SHELL_USING_FUNC_SIGNATURE 1
  64. /**
  65. * @brief 支持数组参数
  66. * 使能后,可以在命令中使用数组参数,如`cmd [1,2,3]`
  67. * 需要使能 `SHELL_USING_FUNC_SIGNATURE` 宏,并且配置 `SHELL_MALLOC`, `SHELL_FREE`
  68. */
  69. #define SHELL_SUPPORT_ARRAY_PARAM 1
  70. #endif