diff --git a/components/sensors/m3078/m3078_code_scaner.cpp b/components/sensors/m3078/m3078_code_scaner.cpp index ff7ad36..50e81aa 100644 --- a/components/sensors/m3078/m3078_code_scaner.cpp +++ b/components/sensors/m3078/m3078_code_scaner.cpp @@ -26,8 +26,8 @@ void M3078CodeScanner::initialize(int moduleid, hardware_config_t* hardwareconfi } }); m_uart.startRxIt(); - m_triggerGpio.initAsOutput(hardwareconfig->triggerPin, ZGPIO::kMode_nopull, false, false); + m_com_reg.module_enable = 1; } void M3078CodeScanner::trigger() { m_codeisready = false; @@ -36,8 +36,7 @@ void M3078CodeScanner::trigger() { m_uart.clearRxData(); m_triggerGpio.setState(1); } -void M3078CodeScanner::stopTrigger() { m_triggerGpio.setState(0); } - +void M3078CodeScanner::stopTrigger() { m_triggerGpio.setState(0); } bool M3078CodeScanner::idInfoIsReady() { return m_codeisready; } char* M3078CodeScanner::getIdinfo() { return codecache; } void M3078CodeScanner::clearIdinfo() { @@ -60,53 +59,35 @@ int32_t M3078CodeScanner::module_start() { trigger(); return 0; } - -#define ACTION_NULL ; -#define REG(param_id, readaction, writeacton) \ - case param_id: { \ - if (read) { \ - readaction; \ - } else { \ - writeacton; \ - } \ +int32_t M3078CodeScanner::module_read_raw(int32_t startadd, uint8_t* data, int32_t* len) { + ZLOGI(TAG, "module_read_raw"); + if (codecachelen > *len) { + return err::kbuffer_not_enough; } - + *len = codecachelen; + memcpy(data, codecache, codecachelen); + return 0; +} +int32_t M3078CodeScanner::get_id_info_len(int32_t* len) { + *len = codecachelen; + return 0; +} +int32_t M3078CodeScanner::get_raw_sector_num(int32_t* num) { + *num = 1; + return 0; +} int32_t M3078CodeScanner::module_xxx_reg(int32_t param_id, bool read, int32_t& val) { switch (param_id) { - REG(kreg_module_version, /* */ val = 0x0001, ACTION_NULL); - REG(kreg_module_type, /* */ val = 0, ACTION_NULL); - REG(kreg_module_status, /* */ val = read_status(), ACTION_NULL); - REG(kreg_module_errorcode, /* */ val = 0, ACTION_NULL); - REG(kreg_module_initflag, /* */ val = module_get_inited_flag(), module_set_inited_flag(val)); - REG(kreg_module_enableflag, /* */ val = 1, ACTION_NULL); - REG(kreg_module_last_cmd_exec_status, val = 0, ACTION_NULL); + MODULE_COMMON_PROCESS_REG_CB(); + PROCESS_REG(kreg_module_raw_sector_size, /* */ get_id_info_len(&val), ACTION_NONE); + PROCESS_REG(kreg_module_raw_sector_num, /* */ get_raw_sector_num(&val), ACTION_NONE); + default: return err::kmodule_not_find_config_index; break; } return 0; } - - -#if 0 -int32_t M3078CodeScanner::code_scaner_start_scan() { - ZLOGI(TAG, "code_scaner_start_scan"); - return module_start(); -} -int32_t M3078CodeScanner::code_scaner_stop_scan() { - ZLOGI(TAG, "code_scaner_stop_scan"); - return module_stop(); -} -int32_t M3078CodeScanner::code_scaner_read_scaner_result(int32_t startadd, uint8_t* data, int32_t* len) { - ZLOGI(TAG, "code_scaner_read_scaner_result"); - if (codecachelen > *len) { - return err::kbuffer_not_enough; - } - *len = codecachelen; - memcpy(data, codecache, codecachelen); - return 0; -} -#endif int32_t M3078CodeScanner::read_status() { if (m_triggerGpio.getState() == 0) { return 0; diff --git a/components/sensors/m3078/m3078_code_scaner.hpp b/components/sensors/m3078/m3078_code_scaner.hpp index f188767..bc1edb8 100644 --- a/components/sensors/m3078/m3078_code_scaner.hpp +++ b/components/sensors/m3078/m3078_code_scaner.hpp @@ -27,6 +27,8 @@ namespace iflytop { using namespace std; class M3078CodeScanner : public ZIModule { + ENABLE_MODULE(M3078CodeScanner, kcode_scaner, 1); + public: typedef struct { UART_HandleTypeDef* uart; @@ -79,8 +81,6 @@ class M3078CodeScanner : public ZIModule { void clearIdinfo(); public: - virtual int32_t ping() { return 0; }; - virtual int32_t getid(int32_t* id) override { *id = this->id; return 0; @@ -88,18 +88,14 @@ class M3078CodeScanner : public ZIModule { virtual int32_t module_stop(); virtual int32_t module_break(); virtual int32_t module_start(); - - 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); -#if 0 - virtual int32_t code_scaner_start_scan(); - virtual int32_t code_scaner_stop_scan(); - virtual int32_t code_scaner_read_scaner_result(int32_t startadd, uint8_t* data, int32_t* len); -#endif + virtual int32_t module_read_raw(int32_t index, uint8_t* data, int32_t* len); private: - int32_t module_xxx_reg(int32_t param_id, bool read, int32_t& param_value); - int32_t read_status(); + virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t& val) override; + int32_t read_status(); + + int32_t get_id_info_len(int32_t* len); + int32_t get_raw_sector_num(int32_t* num); }; } // namespace iflytop \ No newline at end of file diff --git a/components/zprotocols/zcancmder_v2 b/components/zprotocols/zcancmder_v2 index 2a6b375..49da2ad 160000 --- a/components/zprotocols/zcancmder_v2 +++ b/components/zprotocols/zcancmder_v2 @@ -1 +1 @@ -Subproject commit 2a6b375ff43a398d758eee8e6323771d73edf3e6 +Subproject commit 49da2ad73b5d7685d324353d889c7327dfbca3db