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.

51 lines
1.4 KiB

1 year ago
  1. #pragma once
  2. #include "zi_module.hpp"
  3. #include <stdint.h>
  4. #include <functional>
  5. using namespace iflytop;
  6. int32_t ZIModule::getid() {
  7. int32_t id = 0;
  8. getid(&id);
  9. return id;
  10. };
  11. int32_t ZIModule::module_ping() { return 0; };
  12. int32_t ZIModule::module_set_reg(int32_t param_id, int32_t param_value) { return module_xxx_reg(param_id, false, param_value); }
  13. int32_t ZIModule::module_get_reg(int32_t param_id, int32_t *param_value) { return module_xxx_reg(param_id, true, *param_value); }
  14. int32_t ZIModule::_module_set_reg(int32_t regoff, int32_t *regval, int32_t val, int32_t min, int32_t max) {
  15. if (val < min || val > max) {
  16. return err::kparam_out_of_range;
  17. }
  18. *regval = val;
  19. return 0;
  20. }
  21. int32_t ZIModule::_module_get_reg(int32_t regoff, int32_t regval, int32_t &val) {
  22. val = regval;
  23. return 0;
  24. }
  25. int32_t ZIModule::_module_set_reg_float(int32_t regoff, float *regval, int32_t val, float precision, int32_t min, int32_t max) {
  26. if (val < min || val > max) {
  27. return err::kparam_out_of_range;
  28. }
  29. *regval = val * precision;
  30. return 0;
  31. }
  32. int32_t ZIModule::_module_get_reg_float(int32_t regoff, float regval, int32_t &val, float precision) {
  33. val = regval / precision;
  34. return 0;
  35. }
  36. int32_t ZIModule::module_get_error(int32_t *iserror) {
  37. *iserror = creg.module_errorcode;
  38. return 0;
  39. }
  40. int32_t ZIModule::module_clear_error() {
  41. creg.module_errorcode = 0;
  42. creg.module_errorbitflag0 = 0;
  43. return 0;
  44. }