Browse Source

重构部分代码结构

master
zhaohe 1 year ago
parent
commit
a9244060a5
  1. 4
      components/mini_servo_motor/mini_servo_motor_ctrl_module.hpp
  2. 3
      components/step_motor_ctrl_module/step_motor_ctrl_module.hpp
  3. 0
      components/step_motor_ctrl_module/step_motor_ctrl_module_v2.cpp
  4. 0
      components/step_motor_ctrl_module/step_motor_ctrl_module_v2.hpp
  5. 4
      components/zcancmder/zcan_board_module.hpp
  6. 137
      components/zcancmder/zimodule_impl_v1.hpp
  7. 146
      components/zprotocols/zcancmder_v2/api/zi_module.hpp

4
components/mini_servo_motor/mini_servo_motor_ctrl_module.hpp

@ -5,9 +5,11 @@
#include "feite_servo_motor.hpp" #include "feite_servo_motor.hpp"
#include "sdk/components/zprotocols/zcancmder/api/i_mini_servo_module.hpp" #include "sdk/components/zprotocols/zcancmder/api/i_mini_servo_module.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\api\api.hpp" #include "sdk\components\zprotocols\zcancmder_v2\api\api.hpp"
#include "sdk\components\zcancmder\zimodule_impl_v1.hpp"
namespace iflytop { namespace iflytop {
class MiniRobotCtrlModule : public I_MiniServoModule, public ZIModule, public ZIMotor {
class MiniRobotCtrlModule : public I_MiniServoModule, public ZIModuleImplV1, public ZIMotor {
ENABLE_MODULE(StepMotorCtrlModule, kmini_servo_motor_module, 0x0001); ENABLE_MODULE(StepMotorCtrlModule, kmini_servo_motor_module, 0x0001);
public: public:

3
components/step_motor_ctrl_module/step_motor_ctrl_module.hpp

@ -3,8 +3,9 @@
#include "sdk/os/zos.hpp" #include "sdk/os/zos.hpp"
#include "sdk\components\tmc\basic\tmc_ic_interface.hpp" #include "sdk\components\tmc\basic\tmc_ic_interface.hpp"
#include "sdk\components\zcancmder\zcanreceiver.hpp" #include "sdk\components\zcancmder\zcanreceiver.hpp"
#include "sdk\components\zcancmder\zimodule_impl_v1.hpp"
namespace iflytop { namespace iflytop {
class StepMotorCtrlModule : public ZIModule, public ZIMotor {
class StepMotorCtrlModule : public ZIModuleImplV1, public ZIMotor {
ENABLE_MODULE(StepMotorCtrlModule, kmotor_module, 0x0001); ENABLE_MODULE(StepMotorCtrlModule, kmotor_module, 0x0001);
public: public:

0
components/step_motor_ctrl_module/step_motor_ctrl_module_v2.cpp

0
components/step_motor_ctrl_module/step_motor_ctrl_module_v2.hpp

4
components/zcancmder/zcan_board_module.hpp

@ -9,7 +9,7 @@
#include "sdk/chip/api/zi_temperature.hpp" #include "sdk/chip/api/zi_temperature.hpp"
#include "sdk\chip\api\zi_adc.hpp" #include "sdk\chip\api\zi_adc.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\api\api.hpp" #include "sdk\components\zprotocols\zcancmder_v2\api\api.hpp"
#include "sdk\components\zcancmder\zimodule_impl_v1.hpp"
/** /**
* @brief * @brief
* *
@ -30,7 +30,7 @@
namespace iflytop { namespace iflytop {
using namespace std; using namespace std;
class ZCanBoardModule : public ZIModule {
class ZCanBoardModule : public ZIModuleImplV1 {
public: public:
typedef struct { typedef struct {
ZGPIO::InputGpioCfg_t input[32]; ZGPIO::InputGpioCfg_t input[32];

137
components/zcancmder/zimodule_impl_v1.hpp

@ -0,0 +1,137 @@
#pragma once
#include <stdint.h>
#include <functional>
#include "sdk\components\zprotocols\zcancmder_v2\api\zi_module.hpp"
namespace iflytop {
using namespace std;
#define REG_SET(reg, ...) _module_set_reg(param_id, &reg, val, ##__VA_ARGS__)
#define REG_GET(reg) _module_get_reg(param_id, reg, val)
#define REG_SET_FLOAT(reg, precision, ...) _module_set_reg_float(param_id, &reg, val, precision, ##__VA_ARGS__)
#define REG_GET_FLOAT(reg, precision) _module_get_reg_float(param_id, reg, val, precision)
#define ACTION_NONE 0
#define PROCESS_REG(param_id, readaction, writeacton) \
case param_id: { \
if (read) { \
return readaction; \
} else { \
return writeacton; \
} \
} break;
#define ENABLE_MODULE(name, type, version) \
const char *module_name = #name; \
int32_t module_version = version; \
int32_t module_type = type;
#define MODULE_COMMON_PROCESS_REG_CB() \
PROCESS_REG(kreg_module_version, /* */ REG_GET(module_version), ACTION_NONE); \
PROCESS_REG(kreg_module_type, /* */ REG_GET(module_type), ACTION_NONE); \
PROCESS_REG(kreg_module_status, /* */ module_get_status(&val), ACTION_NONE); \
PROCESS_REG(kreg_module_errorcode, /* */ REG_GET(m_com_reg.module_errorcode), ACTION_NONE); \
PROCESS_REG(kreg_module_initflag, /* */ module_get_inited_flag(&val), module_set_inited_flag(val)); \
PROCESS_REG(kreg_module_errorbitflag0, /* */ REG_GET(m_com_reg.module_errorbitflag0), ACTION_NONE); \
PROCESS_REG(kreg_module_enableflag, /* */ REG_GET(m_com_reg.module_enable), ACTION_NONE);
typedef struct {
// int32_t module_version;
// int32_t module_type;
int32_t module_errorcode;
int32_t module_errorbitflag0;
int32_t module_enable;
} module_common_reg_t;
class ZIModuleImplV1 : public ZIModule {
int32_t m_inited_flag = 0;
protected:
module_common_reg_t m_com_reg;
public:
virtual ~ZIModuleImplV1() {}
virtual int32_t getid() {
int32_t id = 0;
getid(&id);
return id;
};
virtual int32_t getid(int32_t *id) = 0;
virtual int32_t module_ping() { return 0; };
virtual int32_t module_stop() { return err::koperation_not_support; }
virtual int32_t module_break() { return module_stop(); }
virtual int32_t module_start() { return err::koperation_not_support; }
virtual int32_t module_get_status(int32_t *status) = 0;
virtual int32_t module_get_error(int32_t *iserror) {
*iserror = m_com_reg.module_errorcode;
return 0;
}
virtual int32_t module_clear_error() {
m_com_reg.module_errorcode = 0;
m_com_reg.module_errorbitflag0 = 0;
return 0;
}
virtual int32_t module_enable(int32_t enable) { return err::koperation_not_support; }
virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t &val) { return err::koperation_not_support; }
virtual int32_t module_set_reg(int32_t param_id, int32_t param_value) { return module_xxx_reg(param_id, false, param_value); }
virtual int32_t module_get_reg(int32_t param_id, int32_t *param_value) { return module_xxx_reg(param_id, true, *param_value); }
virtual int32_t module_readio(int32_t *io) { return err::koperation_not_support; }
virtual int32_t module_writeio(int32_t idindex, int32_t io) { return err::koperation_not_support; }
virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) { return err::koperation_not_support; }
virtual int32_t module_read_raw(int32_t index, uint8_t *data, int32_t *len) { return err::koperation_not_support; }
virtual int32_t module_set_inited_flag(int32_t flag) {
m_inited_flag = flag;
return 0;
}
virtual int32_t module_get_inited_flag(int32_t *flag) {
*flag = m_inited_flag;
return 0;
}
virtual int32_t module_get_inited_flag() { return m_inited_flag; }
virtual int32_t module_factory_reset() { return err::koperation_not_support; }
virtual int32_t module_flush_cfg() { return err::ksucc; }
virtual int32_t module_active_cfg() { return err::ksucc; }
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) {
if (val < min || val > max) {
return err::kparam_out_of_range;
}
*regval = val;
return 0;
}
virtual int32_t _module_get_reg(int32_t regoff, int32_t regval, int32_t &val) {
val = regval;
return 0;
}
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) {
if (val < min || val > max) {
return err::kparam_out_of_range;
}
*regval = val * precision;
return 0;
}
virtual int32_t _module_get_reg_float(int32_t regoff, float regval, int32_t &val, float precision) {
val = regval / precision;
return 0;
}
public:
};
} // namespace iflytop

146
components/zprotocols/zcancmder_v2/api/zi_module.hpp

@ -9,134 +9,32 @@
namespace iflytop { namespace iflytop {
using namespace std; using namespace std;
#define REG_SET(reg, ...) _module_set_reg(param_id, &reg, val, ##__VA_ARGS__)
#define REG_GET(reg) _module_get_reg(param_id, reg, val)
#define REG_SET_FLOAT(reg, precision, ...) _module_set_reg_float(param_id, &reg, val, precision, ##__VA_ARGS__)
#define REG_GET_FLOAT(reg, precision) _module_get_reg_float(param_id, reg, val, precision)
#define ACTION_NONE 0
#define PROCESS_REG(param_id, readaction, writeacton) \
case param_id: { \
if (read) { \
return readaction; \
} else { \
return writeacton; \
} \
} break;
#define ENABLE_MODULE(name, type, version) \
const char *module_name = #name; \
int32_t module_version = version; \
int32_t module_type = type;
#define MODULE_COMMON_PROCESS_REG_CB() \
PROCESS_REG(kreg_module_version, /* */ REG_GET(module_version), ACTION_NONE); \
PROCESS_REG(kreg_module_type, /* */ REG_GET(module_type), ACTION_NONE); \
PROCESS_REG(kreg_module_status, /* */ module_get_status(&val), ACTION_NONE); \
PROCESS_REG(kreg_module_errorcode, /* */ REG_GET(m_com_reg.module_errorcode), ACTION_NONE); \
PROCESS_REG(kreg_module_initflag, /* */ module_get_inited_flag(&val), module_set_inited_flag(val)); \
PROCESS_REG(kreg_module_errorbitflag0, /* */ REG_GET(m_com_reg.module_errorbitflag0), ACTION_NONE); \
PROCESS_REG(kreg_module_enableflag, /* */ REG_GET(m_com_reg.module_enable), ACTION_NONE); \
typedef struct {
// int32_t module_version;
// int32_t module_type;
int32_t module_errorcode;
int32_t module_errorbitflag0;
int32_t module_enable;
} module_common_reg_t;
class ZIModule { class ZIModule {
int32_t m_inited_flag = 0;
protected:
module_common_reg_t m_com_reg;
public: public:
virtual ~ZIModule() {} virtual ~ZIModule() {}
virtual int32_t getid(int32_t *id) = 0;
virtual int32_t getid() {
int32_t id = 0;
getid(&id);
return id;
};
virtual int32_t module_ping() { return 0; };
virtual int32_t module_stop() { return err::koperation_not_support; }
virtual int32_t module_break() { return module_stop(); }
virtual int32_t module_start() { return err::koperation_not_support; }
virtual int32_t module_get_status(int32_t *status) = 0;
virtual int32_t module_get_error(int32_t *iserror) {
*iserror = m_com_reg.module_errorcode;
return 0;
}
virtual int32_t module_clear_error() {
m_com_reg.module_errorcode = 0;
m_com_reg.module_errorbitflag0 = 0;
return 0;
}
virtual int32_t module_enable(int32_t enable) { return err::koperation_not_support; }
virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t &val) { return err::koperation_not_support; }
virtual int32_t module_set_reg(int32_t param_id, int32_t param_value) { return module_xxx_reg(param_id, false, param_value); }
virtual int32_t module_get_reg(int32_t param_id, int32_t *param_value) { return module_xxx_reg(param_id, true, *param_value); }
virtual int32_t module_readio(int32_t *io) { return err::koperation_not_support; }
virtual int32_t module_writeio(int32_t idindex, int32_t io) { return err::koperation_not_support; }
virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) { return err::koperation_not_support; }
virtual int32_t module_read_raw(int32_t index, uint8_t *data, int32_t *len) { return err::koperation_not_support; }
virtual int32_t module_set_inited_flag(int32_t flag) {
m_inited_flag = flag;
return 0;
}
virtual int32_t module_get_inited_flag(int32_t *flag) {
*flag = m_inited_flag;
return 0;
}
virtual int32_t module_get_inited_flag() { return m_inited_flag; }
virtual int32_t module_factory_reset() { return err::koperation_not_support; }
virtual int32_t module_flush_cfg() { return err::ksucc; }
virtual int32_t module_active_cfg() { return err::ksucc; }
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) {
if (val < min || val > max) {
return err::kparam_out_of_range;
}
*regval = val;
return 0;
}
virtual int32_t _module_get_reg(int32_t regoff, int32_t regval, int32_t &val) {
val = regval;
return 0;
}
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) {
if (val < min || val > max) {
return err::kparam_out_of_range;
}
*regval = val * precision;
return 0;
}
virtual int32_t _module_get_reg_float(int32_t regoff, float regval, int32_t &val, float precision) {
val = regval / precision;
return 0;
}
virtual int32_t getid(int32_t *id) = 0;
virtual int32_t getid() = 0;
virtual int32_t module_ping() = 0;
virtual int32_t module_stop() = 0;
virtual int32_t module_break() = 0;
virtual int32_t module_start() = 0;
virtual int32_t module_get_status(int32_t *status) = 0;
virtual int32_t module_get_error(int32_t *iserror) = 0;
virtual int32_t module_clear_error() = 0;
virtual int32_t module_enable(int32_t enable) = 0;
virtual int32_t module_set_reg(int32_t param_id, int32_t param_value) = 0;
virtual int32_t module_get_reg(int32_t param_id, int32_t *param_value) = 0;
virtual int32_t module_readio(int32_t *io) = 0;
virtual int32_t module_writeio(int32_t idindex, int32_t io) = 0;
virtual int32_t module_read_adc(int32_t adcindex, int32_t *adc) = 0;
virtual int32_t module_read_raw(int32_t index, uint8_t *data, int32_t *len) = 0;
virtual int32_t module_set_inited_flag(int32_t flag) = 0;
virtual int32_t module_get_inited_flag(int32_t *flag) = 0;
virtual int32_t module_get_inited_flag() = 0;
virtual int32_t module_factory_reset() = 0;
virtual int32_t module_flush_cfg() = 0;
virtual int32_t module_active_cfg() = 0;
public: public:
}; };
} // namespace iflytop } // namespace iflytop
Loading…
Cancel
Save