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.

88 lines
3.5 KiB

2 years ago
1 year 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 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
  1. #pragma once
  2. #include <stdint.h>
  3. #include <functional>
  4. #include "apibasic/basic.hpp"
  5. namespace iflytop {
  6. using namespace std;
  7. #define REG_SET(reg, ...) _module_set_reg(param_id, &reg, val, ##__VA_ARGS__)
  8. #define REG_GET(reg) _module_get_reg(param_id, reg, val)
  9. #define REG_SET_FLOAT(reg, precision, ...) _module_set_reg_float(param_id, &reg, val, precision, ##__VA_ARGS__)
  10. #define REG_GET_FLOAT(reg, precision) _module_get_reg_float(param_id, reg, val, precision)
  11. #define ACTION_NONE 0
  12. #define PROCESS_REG(param_id, readaction, writeacton) \
  13. case param_id: { \
  14. if (read) { \
  15. return readaction; \
  16. } else { \
  17. return writeacton; \
  18. } \
  19. } break;
  20. #define ENABLE_MODULE(name, type, version) \
  21. public: \
  22. virtual int32_t module_get_version(int32_t *val) { \
  23. *val = version; \
  24. return 0; \
  25. } \
  26. virtual int32_t module_get_type(int32_t *val) { \
  27. *val = type; \
  28. return 0; \
  29. }
  30. #define MODULE_COMMON_PROCESS_REG_CB()
  31. typedef struct {
  32. int32_t module_errorcode;
  33. int32_t module_status;
  34. } module_common_reg_t;
  35. class ZIModule {
  36. int32_t m_inited_flag = 0;
  37. protected:
  38. module_common_reg_t creg;
  39. public:
  40. virtual ~ZIModule() {}
  41. public:
  42. virtual int32_t getid();
  43. virtual int32_t module_ping();
  44. virtual int32_t module_get_error(int32_t *iserror);
  45. virtual int32_t module_clear_error();
  46. virtual int32_t module_set_reg(int32_t param_id, int32_t param_value);
  47. virtual int32_t module_get_reg(int32_t param_id, int32_t *param_value);
  48. virtual int32_t module_get_status(int32_t *status);
  49. virtual int32_t module_get_version(int32_t *val) = 0;
  50. virtual int32_t module_get_type(int32_t *val) = 0;
  51. virtual int32_t module_stop() { return 0; }
  52. virtual int32_t module_active_cfg() { return 0; }
  53. /***********************************************************************************************************************
  54. * *
  55. ***********************************************************************************************************************/
  56. virtual int32_t getid(int32_t *id) = 0;
  57. virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t &val) = 0;
  58. public:
  59. // slice
  60. virtual int32_t bfcall(int32_t cmdid, uint8_t *param, int32_t len) { return 0; };
  61. virtual void aftercall(int32_t cmdid, uint8_t *param, int32_t len, uint8_t *ack, int32_t acklen, int32_t ret) {};
  62. protected:
  63. virtual int32_t _module_set_reg(int32_t regoff, int32_t *regval, int32_t val, int32_t min = INT32_MIN, int32_t max = INT32_MAX);
  64. virtual int32_t _module_get_reg(int32_t regoff, int32_t regval, int32_t &val);
  65. virtual int32_t _module_set_reg_float(int32_t regoff, float *regval, int32_t val, float precision, int32_t min = INT32_MIN, int32_t max = INT32_MAX);
  66. virtual int32_t _module_get_reg_float(int32_t regoff, float regval, int32_t &val, float precision);
  67. virtual int32_t _module_xxx_reg(int32_t param_id, bool read, int32_t &val);
  68. public:
  69. public:
  70. };
  71. } // namespace iflytop