|
@ -1,88 +0,0 @@ |
|
|
#pragma once
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
|
|
|
|
#include <functional>
|
|
|
|
|
|
|
|
|
|
|
|
#include "apibasic/basic.hpp"
|
|
|
|
|
|
|
|
|
|
|
|
namespace iflytop { |
|
|
|
|
|
using namespace std; |
|
|
|
|
|
|
|
|
|
|
|
#define REG_SET(reg, ...) _module_set_reg(param_id, ®, 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, ®, 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) \
|
|
|
|
|
|
public: \ |
|
|
|
|
|
virtual int32_t module_get_version(int32_t *val) { \ |
|
|
|
|
|
*val = version; \ |
|
|
|
|
|
return 0; \ |
|
|
|
|
|
} \ |
|
|
|
|
|
virtual int32_t module_get_type(int32_t *val) { \ |
|
|
|
|
|
*val = type; \ |
|
|
|
|
|
return 0; \ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#define MODULE_COMMON_PROCESS_REG_CB()
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
int32_t module_errorcode; |
|
|
|
|
|
int32_t module_status; |
|
|
|
|
|
} module_common_reg_t; |
|
|
|
|
|
|
|
|
|
|
|
class ZIModule { |
|
|
|
|
|
int32_t m_inited_flag = 0; |
|
|
|
|
|
|
|
|
|
|
|
protected: |
|
|
|
|
|
module_common_reg_t creg; |
|
|
|
|
|
|
|
|
|
|
|
public: |
|
|
|
|
|
virtual ~ZIModule() {} |
|
|
|
|
|
|
|
|
|
|
|
public: |
|
|
|
|
|
virtual int32_t getid(); |
|
|
|
|
|
virtual int32_t module_ping(); |
|
|
|
|
|
virtual int32_t module_get_error(int32_t *iserror); |
|
|
|
|
|
virtual int32_t module_clear_error(); |
|
|
|
|
|
virtual int32_t module_set_reg(int32_t param_id, int32_t param_value); |
|
|
|
|
|
virtual int32_t module_get_reg(int32_t param_id, int32_t *param_value); |
|
|
|
|
|
virtual int32_t module_get_status(int32_t *status); |
|
|
|
|
|
virtual int32_t module_get_version(int32_t *val) = 0; |
|
|
|
|
|
virtual int32_t module_get_type(int32_t *val) = 0; |
|
|
|
|
|
virtual int32_t module_stop() { return 0; } |
|
|
|
|
|
virtual int32_t module_active_cfg() { return 0; } |
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************************************************************
|
|
|
|
|
|
* 用户实现 * |
|
|
|
|
|
***********************************************************************************************************************/ |
|
|
|
|
|
virtual int32_t getid(int32_t *id) = 0; |
|
|
|
|
|
virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t &val) = 0; |
|
|
|
|
|
|
|
|
|
|
|
public: |
|
|
|
|
|
// slice
|
|
|
|
|
|
virtual int32_t bfcall(int32_t cmdid, uint8_t *param, int32_t len) { return 0; }; |
|
|
|
|
|
virtual void aftercall(int32_t cmdid, uint8_t *param, int32_t len, uint8_t *ack, int32_t acklen, int32_t ret) {}; |
|
|
|
|
|
|
|
|
|
|
|
protected: |
|
|
|
|
|
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); |
|
|
|
|
|
virtual int32_t _module_get_reg(int32_t regoff, int32_t regval, int32_t &val); |
|
|
|
|
|
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); |
|
|
|
|
|
virtual int32_t _module_get_reg_float(int32_t regoff, float regval, int32_t &val, float precision); |
|
|
|
|
|
virtual int32_t _module_xxx_reg(int32_t param_id, bool read, int32_t &val); |
|
|
|
|
|
|
|
|
|
|
|
public: |
|
|
|
|
|
public: |
|
|
|
|
|
}; |
|
|
|
|
|
} // namespace iflytop
|
|
|
|