Browse Source

add m3078

master
zhaohe 2 years ago
parent
commit
13e61a82c0
  1. 63
      components/sensors/m3078/m3078_code_scaner.cpp
  2. 20
      components/sensors/m3078/m3078_code_scaner.hpp
  3. 2
      components/zprotocols/zcancmder_v2

63
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;

20
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

2
components/zprotocols/zcancmder_v2

@ -1 +1 @@
Subproject commit 2a6b375ff43a398d758eee8e6323771d73edf3e6
Subproject commit 49da2ad73b5d7685d324353d889c7327dfbca3db
Loading…
Cancel
Save