luat_statem.h 755 B

12345678910111213141516171819202122232425262728293031
  1. #include "luat_base.h"
  2. #include "luat_gpio.h"
  3. #include "luat_timer.h"
  4. typedef struct luat_statm_op {
  5. uint8_t tp;
  6. uint8_t arg1;
  7. uint8_t arg2;
  8. uint8_t arg3;
  9. }luat_statm_op_t;
  10. typedef struct luat_statem
  11. {
  12. uint8_t id;
  13. int16_t repeat;
  14. uint16_t op_count;
  15. uint16_t pc;
  16. uint8_t gpio_input_offset;
  17. uint32_t gpio_inputs[8]; // 按位存储的GPIO输入值,共256位
  18. luat_statm_op_t op_list[1];
  19. }luat_statem_t;
  20. #define LUAT_SM_OP_END 0x00
  21. #define LUAT_SM_OP_USLEEP 0x08
  22. #define LUAT_SM_OP_GPIO_SET 0x80
  23. #define LUAT_SM_OP_GPIO_GET 0x81
  24. void luat_statem_init(luat_statem_t* sm);
  25. void luat_statem_addop(luat_statem_t* sm, uint8_t tp, uint8_t arg1, uint8_t arg2, uint8_t arg3);
  26. void luat_statem_exec(luat_statem_t* sm);