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.

95 lines
2.2 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. #include "zi_module.hpp"
  2. #include <stdint.h>
  3. #include <functional>
  4. using namespace iflytop;
  5. int32_t ZIModule::getid() {
  6. int32_t id = 0;
  7. getid(&id);
  8. return id;
  9. };
  10. int32_t ZIModule::module_ping() { return 0; };
  11. int32_t ZIModule::module_set_reg(int32_t param_id, int32_t param_value) { return _module_xxx_reg(param_id, false, param_value); }
  12. int32_t ZIModule::module_get_reg(int32_t param_id, int32_t *param_value) { return _module_xxx_reg(param_id, true, *param_value); }
  13. int32_t ZIModule::_module_xxx_reg(int32_t param_id, bool read, int32_t &val) {
  14. if (param_id == kreg_module_version) {
  15. if (read) {
  16. module_get_version(&val);
  17. return 0;
  18. } else {
  19. return 0;
  20. }
  21. }
  22. else if (param_id == kreg_module_type) {
  23. if (read) {
  24. module_get_type(&val);
  25. return 0;
  26. } else {
  27. return 0;
  28. }
  29. }
  30. else if (param_id == kreg_module_status) {
  31. if (read) {
  32. module_get_status(&val);
  33. return 0;
  34. } else {
  35. return 0;
  36. }
  37. }
  38. else if (param_id == kreg_module_errorcode) {
  39. if (read) {
  40. val = creg.module_errorcode;
  41. return 0;
  42. } else {
  43. return 0;
  44. }
  45. }
  46. return module_xxx_reg(param_id, read, val);
  47. }
  48. int32_t ZIModule::_module_set_reg(int32_t regoff, int32_t *regval, int32_t val, int32_t min, int32_t max) {
  49. if (val < min || val > max) {
  50. return err::kparam_out_of_range;
  51. }
  52. *regval = val;
  53. return 0;
  54. }
  55. int32_t ZIModule::_module_get_reg(int32_t regoff, int32_t regval, int32_t &val) {
  56. val = regval;
  57. return 0;
  58. }
  59. int32_t ZIModule::_module_set_reg_float(int32_t regoff, float *regval, int32_t val, float precision, int32_t min, int32_t max) {
  60. if (val < min || val > max) {
  61. return err::kparam_out_of_range;
  62. }
  63. *regval = val * precision;
  64. return 0;
  65. }
  66. int32_t ZIModule::_module_get_reg_float(int32_t regoff, float regval, int32_t &val, float precision) {
  67. val = regval / precision;
  68. return 0;
  69. }
  70. int32_t ZIModule::module_get_error(int32_t *iserror) {
  71. *iserror = creg.module_errorcode;
  72. return 0;
  73. }
  74. int32_t ZIModule::module_clear_error() {
  75. creg.module_errorcode = 0;
  76. return 0;
  77. }
  78. int32_t ZIModule::module_get_status(int32_t *status) {
  79. *status = creg.m_module_status;
  80. return 0;
  81. }