luat_base.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /******************************************************************************
  2. * LuatOS基础操作
  3. * @author wendal
  4. * @since 0.0.1
  5. *****************************************************************************/
  6. #ifndef LUAT_BASE
  7. #define LUAT_BASE
  8. /**LuatOS版本号*/
  9. #define LUAT_VERSION "V0003"
  10. // 调试开关, 预留
  11. #define LUAT_DEBUG 0
  12. #define LUAT_WEAK __attribute__((weak))
  13. //-------------------------------
  14. // 通用头文件
  15. #include "lua.h"
  16. #include "lualib.h"
  17. #include "lauxlib.h"
  18. #include "stdint.h"
  19. #include "string.h"
  20. //-------------------------------
  21. //lua_State * luat_get_state();
  22. /**
  23. * LuatOS主入口函数, 从这里开始就交由LuatOS控制了.
  24. * 集成时,该函数应在独立的thread/task中启动
  25. */
  26. int luat_main (void);
  27. /**
  28. * 加载库函数. 平台实现应该根据时间情况, 加载可用的标准库和扩展库.
  29. * 其中, 标准库定义为_G/table/io/os等lua原生库.
  30. * 扩展库为下述luaopen_XXXX及厂商自行扩展的库.
  31. */
  32. void luat_openlibs(lua_State *L);
  33. // 以下luaopen_大多有平台无关的实现, 需要实现的是对应的luat_XXX_XXX 方法.
  34. /** 加载sys库, 预留, 实际不可用状态*/
  35. LUAMOD_API int luaopen_sys( lua_State *L );
  36. /** 加载rtos库, 必选*/
  37. LUAMOD_API int luaopen_rtos( lua_State *L );
  38. /** 加载timer库, 可选*/
  39. LUAMOD_API int luaopen_timer( lua_State *L );
  40. /** 加载msgbus库, 预留, 实际不可用状态*/
  41. LUAMOD_API int luaopen_msgbus( lua_State *L );
  42. /** 加载gpio库, 可选*/
  43. LUAMOD_API int luaopen_gpio( lua_State *L );
  44. /** 加载adc库, 可选*/
  45. LUAMOD_API int luaopen_adc( lua_State *L );
  46. /** 加载pwm库, 可选*/
  47. LUAMOD_API int luaopen_pwm( lua_State *L );
  48. /** 加载uart库, 一般都需要*/
  49. LUAMOD_API int luaopen_uart( lua_State *L );
  50. /** 加载pm库, 预留*/
  51. LUAMOD_API int luaopen_pm( lua_State *L );
  52. /** 加载fs库, 预留*/
  53. LUAMOD_API int luaopen_fs( lua_State *L );
  54. /** 加载wlan库, 操作wifi,可选*/
  55. LUAMOD_API int luaopen_wlan( lua_State *L );
  56. /** 加载socket库, 依赖netclient.h,可选*/
  57. LUAMOD_API int luaopen_socket( lua_State *L );
  58. /** 加载sensor库, 依赖gpio库, 可选*/
  59. LUAMOD_API int luaopen_sensor( lua_State *L );
  60. /** 加载log库, 必选, 依赖底层uart抽象层*/
  61. LUAMOD_API int luaopen_log( lua_State *L );
  62. /** 加载json库, 可选*/
  63. LUAMOD_API int luaopen_cjson( lua_State *L );
  64. /** 加载i2c库, 可选*/
  65. LUAMOD_API int luaopen_i2c( lua_State *L );
  66. /** 加载spi库, 可选*/
  67. LUAMOD_API int luaopen_spi( lua_State *L );
  68. /** 加载disp库, 可选, 会依赖i2c和spi*/
  69. LUAMOD_API int luaopen_disp( lua_State *L );
  70. /** 加载utest库, 预留*/
  71. LUAMOD_API int luaopen_utest( lua_State *L );
  72. /** 加载mqtt库, 预留*/
  73. LUAMOD_API int luaopen_mqtt( lua_State *L );
  74. /** 加载mqtt库, 预留*/
  75. LUAMOD_API int luaopen_http( lua_State *L );
  76. /** 加载pack库, 可选,平台无关*/
  77. LUAMOD_API int luaopen_pack( lua_State *L );
  78. /** 加载mqttcore库, 可选,平台无关*/
  79. LUAMOD_API int luaopen_mqttcore( lua_State *L );
  80. /** 加载crypto库, 可选*/
  81. LUAMOD_API int luaopen_crypto( lua_State *L );
  82. LUAMOD_API int luaopen_pm( lua_State *L);
  83. LUAMOD_API int luaopen_m2m( lua_State *L);
  84. LUAMOD_API int luaopen_libcoap( lua_State *L);
  85. LUAMOD_API int luaopen_lpmem( lua_State *L);
  86. LUAMOD_API int luaopen_ctiot( lua_State *L);
  87. /** sprintf需要支持longlong值的打印, 提供平台无关的实现*/
  88. int l_sprintf(char *buf, size_t size, const char *fmt, ...);
  89. /** 重启设备 */
  90. void luat_os_reboot(int code);
  91. /** 设备进入待机模式 */
  92. void luat_os_standy(int timeout);
  93. /** 厂商/模块名字, 例如Air302, Air640W*/
  94. const char* luat_os_bsp(void);
  95. /** 停止启动,当前仅rt-thread实现有这个设置*/
  96. void stopboot(void);
  97. void luat_timer_us_delay(size_t us);
  98. const char* luat_version_str(void);
  99. #endif