lua_pin.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * @File: lua_pin.c
  3. * @Author: liu2guang
  4. * @Date: 2018-05-09 02:21:05
  5. *
  6. * @LICENSE: https://github.com/liu2guang/lua2rtt/blob/master/LICENSE.
  7. *
  8. * Change Logs:
  9. * Date Author Notes
  10. * 2018-05-09 liu2guang The first version.
  11. */
  12. #include <lua.h>
  13. #include <lauxlib.h>
  14. #include <lualib.h>
  15. #include <rtdevice.h>
  16. static int pin_mode(lua_State *L)
  17. {
  18. uint32_t pin = (uint32_t)luaL_checknumber(L, 1);
  19. uint32_t mode = (uint32_t)luaL_checknumber(L, 2);
  20. rt_pin_mode(pin, mode);
  21. return 1;
  22. }
  23. static int pin_write(lua_State *L)
  24. {
  25. uint32_t pin = (uint32_t)luaL_checknumber(L, 1);
  26. uint32_t value = (uint32_t)luaL_checknumber(L, 2);
  27. rt_pin_write(pin, value);
  28. return 1;
  29. }
  30. static int pin_read(lua_State *L)
  31. {
  32. uint32_t value = 0;
  33. uint32_t pin = (uint32_t)luaL_checknumber(L, 1);
  34. value = rt_pin_read(pin);
  35. lua_pushnumber(L, (lua_Number)(value));
  36. return 1;
  37. }
  38. // Module function map s
  39. #define MIN_OPT_LEVEL 2
  40. #include "lrodefs.h"
  41. static const LUA_REG_TYPE pin_map[] =
  42. {
  43. {LSTRKEY("mode") , LFUNCVAL(pin_mode) },
  44. {LSTRKEY("write"), LFUNCVAL(pin_write)},
  45. {LSTRKEY("read") , LFUNCVAL(pin_read) },
  46. {LNILKEY, LNILKEY}
  47. };
  48. LUALIB_API int luaopen_pin(lua_State *L)
  49. {
  50. LREGISTER(L, "pin", pin_map);
  51. }