zcancmder_v2
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
3.2 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. #pragma once
  2. #include <stdint.h>
  3. #include <functional>
  4. #include "errorcode.hpp"
  5. namespace iflytop {
  6. using namespace std;
  7. #define ACTION_NONE ;
  8. #define PROCESS_REG(param_id, readaction, writeacton) \
  9. case param_id: { \
  10. if (read) { \
  11. readaction; \
  12. } else { \
  13. writeacton; \
  14. } \
  15. }
  16. class ModuleCMDExecStatus {
  17. public:
  18. int32_t exec_status = 0;
  19. int32_t exec_val[6] = {0};
  20. void set_exec_status(int32_t status, int32_t val0 = 0, int32_t val1 = 0, int32_t val2 = 0, int32_t val3 = 0, int32_t val4 = 0, int32_t val5 = 0) {
  21. exec_status = status;
  22. exec_val[0] = val0;
  23. exec_val[1] = val1;
  24. exec_val[2] = val2;
  25. exec_val[3] = val3;
  26. exec_val[4] = val4;
  27. exec_val[5] = val5;
  28. }
  29. };
  30. class ZIModule {
  31. int32_t m_inited_flag = 0;
  32. public:
  33. virtual ~ZIModule() {}
  34. virtual int32_t getid(int32_t *id) = 0;
  35. virtual int32_t getid() {
  36. int32_t id = 0;
  37. getid(&id);
  38. return id;
  39. };
  40. virtual int32_t module_ping() = 0;
  41. virtual int32_t module_stop() { return err::koperation_not_support; }
  42. virtual int32_t module_break() { return err::koperation_not_support; }
  43. virtual int32_t module_start() { return err::koperation_not_support; }
  44. virtual int32_t module_get_last_exec_status(int32_t *status) { return err::koperation_not_support; }
  45. virtual int32_t module_get_status(int32_t *status) { return err::koperation_not_support; }
  46. virtual int32_t module_get_error(int32_t *iserror) { return err::koperation_not_support; }
  47. virtual int32_t module_clear_error() { return err::koperation_not_support; }
  48. virtual int32_t module_enable(int32_t enable) { return err::koperation_not_support; }
  49. virtual int32_t module_set_reg(int32_t param_id, int32_t param_value) { return err::koperation_not_support; }
  50. virtual int32_t module_get_reg(int32_t param_id, int32_t *param_value) { return err::koperation_not_support; }
  51. virtual int32_t module_readio(int32_t *io) { return err::koperation_not_support; }
  52. virtual int32_t module_writeio(int32_t idindex, int32_t io) { return err::koperation_not_support; }
  53. virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) { return err::koperation_not_support; }
  54. virtual int32_t module_read_raw(int32_t index, uint8_t *data, int32_t *len) { return err::koperation_not_support; }
  55. virtual int32_t module_set_inited_flag(int32_t flag) {
  56. m_inited_flag = flag;
  57. return 0;
  58. }
  59. virtual int32_t module_get_inited_flag(int32_t *flag) {
  60. *flag = m_inited_flag;
  61. return 0;
  62. }
  63. virtual int32_t module_get_inited_flag() { return m_inited_flag; }
  64. // kmodule_factory_reset = CMDID(1, 14), // para:{}, ack:{}
  65. // kmodule_flush_cfg = CMDID(1, 15), // para:{}, ack:{}
  66. // kmodule_active_cfg = CMDID(1, 16), // para:{}, ack:{}
  67. virtual int32_t module_factory_reset() { return err::koperation_not_support; }
  68. virtual int32_t module_flush_cfg() { return err::koperation_not_support; }
  69. virtual int32_t module_active_cfg() { return err::koperation_not_support; }
  70. };
  71. } // namespace iflytop