luat_lib_hmeta.c 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. @module hmeta
  3. @summary 硬件元数据
  4. @version 1.0
  5. @date 2022.01.11
  6. @demo hmeta
  7. @tag LUAT_USE_HMETA
  8. @usage
  9. -- 本库开发中
  10. --[[
  11. 这个库的作用是展示当前硬件的能力, 例如:
  12. 1. 有多少GPIO, 各GPIO默认模式是什么, 是否支持上拉/下拉
  13. 2. 有多少I2C,支持哪些速率
  14. 3. 有多少SPI,支持哪些速率和模式
  15. 4. 扩展属性, 例如区分Air780E和Air600E
  16. ]]
  17. */
  18. #include "luat_base.h"
  19. #include "luat_hmeta.h"
  20. /*
  21. 获取模组名称
  22. @api hmeta.model()
  23. @return string 若能识别到,返回模组类型, 否则会是nil
  24. @usage
  25. sys.taskInit(function()
  26. while 1 do
  27. sys.wait(3000)
  28. -- hmeta识别底层模组类型的
  29. -- 不同的模组可以使用相同的bsp,但根据封装的不同,根据内部数据仍可识别出具体模块
  30. log.info("hmeta", hmeta.model())
  31. log.info("bsp", rtos.bsp())
  32. end
  33. end)
  34. */
  35. static int l_hmeta_model(lua_State *L) {
  36. char buff[40] = {0};
  37. luat_hmeta_model_name(buff);
  38. if (strlen(buff)) {
  39. lua_pushstring(L, buff);
  40. }
  41. else {
  42. lua_pushnil(L);
  43. }
  44. return 1;
  45. }
  46. /*
  47. 获取模组的硬件版本号
  48. @api hmeta.hwver()
  49. @return string 若能识别到,返回模组类型, 否则会是nil
  50. @usage
  51. sys.taskInit(function()
  52. while 1 do
  53. sys.wait(3000)
  54. -- hmeta识别底层模组类型的
  55. -- 不同的模组可以使用相同的bsp,但根据封装的不同,根据内部数据仍可识别出具体模块
  56. log.info("hmeta", hmeta.model(), hmeta.hwver())
  57. log.info("bsp", rtos.bsp())
  58. end
  59. end)
  60. */
  61. static int l_hmeta_hwver(lua_State *L) {
  62. char buff[40] = {0};
  63. luat_hmeta_hwversion(buff);
  64. if (strlen(buff)) {
  65. lua_pushstring(L, buff);
  66. }
  67. else {
  68. lua_pushnil(L);
  69. }
  70. return 1;
  71. }
  72. // static int l_hmeta_gpio(lua_State *L) {
  73. // return 0;
  74. // }
  75. // static int l_hmeta_uart(lua_State *L) {
  76. // return 0;
  77. // }
  78. #include "rotable2.h"
  79. static const rotable_Reg_t reg_hmeta[] =
  80. {
  81. { "model" , ROREG_FUNC(l_hmeta_model)},
  82. { "hwver" , ROREG_FUNC(l_hmeta_hwver)},
  83. // { "gpio" , ROREG_FUNC(l_hmeta_gpio)},
  84. // { "uart" , ROREG_FUNC(l_hmeta_uart)},
  85. { NULL, ROREG_INT(0)}
  86. };
  87. LUAMOD_API int luaopen_hmeta( lua_State *L ) {
  88. luat_newlib2(L, reg_hmeta);
  89. return 1;
  90. }