Browse Source

add code scaner

master
zhaohe 1 year ago
parent
commit
0923cbacbd
  1. 29
      components/sensors/m3078/m3078_code_scaner.cpp
  2. 20
      components/sensors/m3078/m3078_code_scaner.hpp
  3. 45
      components/zcancmder/zcan_protocol_parser.cpp
  4. 10
      components/zcancmder/zcan_protocol_parser.hpp

29
components/sensors/m3078/m3078_code_scaner.cpp

@ -27,8 +27,8 @@ void M3078CodeScanner::initialize(int moduleid, hardware_config_t* hardwareconfi
});
m_uart.startRxIt();
m_triggerGpio.initAsOutput(hardwareconfig->triggerPin, ZGPIO::kMode_nopull, true, false);
//creg.module_enable = 1;
id = moduleid;
// creg.module_enable = 1;
id = moduleid;
}
void M3078CodeScanner::trigger() {
ZLOGI(TAG, "trigger");
@ -56,27 +56,29 @@ int32_t M3078CodeScanner::module_stop() {
stopTrigger();
return 0;
}
int32_t M3078CodeScanner::module_break() {
int32_t M3078CodeScanner::code_scaner_start_scan() {
trigger();
return 0;
}
int32_t M3078CodeScanner::code_scaner_stop_scan() {
stopTrigger();
return 0;
}
int32_t M3078CodeScanner::module_start() {
trigger();
int32_t M3078CodeScanner::code_scaner_result_is_ready(int32_t* ready) {
*ready = read_status();
return 0;
}
int32_t M3078CodeScanner::module_get_status(int32_t* status) {
*status = read_status();
int32_t M3078CodeScanner::code_scaner_get_result_length(int32_t* length) {
*length = getIdinfoLen();
return 0;
}
int32_t M3078CodeScanner::module_read_raw(int32_t startadd, uint8_t* data, int32_t* len) {
ZLOGI(TAG, "module_read_raw");
int32_t M3078CodeScanner::code_scaner_read_scaner_result(uint8_t* result, int32_t* len) {
if (codecachelen > *len) {
return err::kbuffer_not_enough;
}
*len = codecachelen;
memcpy(data, codecache, codecachelen);
memcpy(result, codecache, codecachelen);
return 0;
}
int32_t M3078CodeScanner::get_id_info_len(int32_t* len) {
@ -90,9 +92,6 @@ int32_t M3078CodeScanner::get_raw_sector_num(int32_t* num) {
int32_t M3078CodeScanner::module_xxx_reg(int32_t param_id, bool read, int32_t& val) {
switch (param_id) {
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;

20
components/sensors/m3078/m3078_code_scaner.hpp

@ -3,8 +3,8 @@
//
#pragma once
#include "sdk/os/zos.hpp"
#include "a8000_protocol\protocol.hpp"
#include "sdk/os/zos.hpp"
/**
* @brief
@ -26,7 +26,7 @@
namespace iflytop {
using namespace std;
class M3078CodeScanner : public ZIModule {
class M3078CodeScanner : public ZIModule, public ZICodeScaner {
ENABLE_MODULE(M3078CodeScanner, kcode_scaner, 1);
public:
@ -85,16 +85,20 @@ class M3078CodeScanner : public ZIModule {
*id = this->id;
return 0;
}
virtual int32_t module_stop() ;
virtual int32_t module_break() ;
virtual int32_t module_start() ;
virtual int32_t module_read_raw(int32_t index, uint8_t* data, int32_t* len) ;
virtual int32_t module_get_status(int32_t* status) override;
private:
virtual int32_t module_xxx_reg(int32_t param_id, bool read, int32_t& val) override;
int32_t read_status();
virtual int32_t module_stop() override;
public:
virtual int32_t code_scaner_start_scan() override;
virtual int32_t code_scaner_stop_scan() override;
virtual int32_t code_scaner_result_is_ready(int32_t* ready) override;
virtual int32_t code_scaner_get_result_length(int32_t* length) override;
virtual int32_t code_scaner_read_scaner_result(uint8_t* result, int32_t* len) override;
private:
int32_t read_status();
int32_t get_id_info_len(int32_t* len);
int32_t get_raw_sector_num(int32_t* num);
};

45
components/zcancmder/zcan_protocol_parser.cpp

@ -296,6 +296,9 @@ int32_t ZCanProtocolParser::mini_servo_rotate_with_torque(cmdcontxt_t* cxt) {
#undef MODULE_CLASS
/***********************************************************************************************************************
* ZIBoard *
***********************************************************************************************************************/
#define MODULE_CLASS ZIBoard
int32_t ZCanProtocolParser::board_read_ext_io(cmdcontxt_t* cxt) {
CHECK_AND_GET_MODULE(1);
@ -307,6 +310,48 @@ int32_t ZCanProtocolParser::board_write_ext_io(cmdcontxt_t* cxt) {
CHECK_AND_GET_MODULE(2);
return module->board_write_ext_io(cxt->params[0], cxt->params[1]);
}
int32_t ZCanProtocolParser::board_read_muti_io(cmdcontxt_t* cxt) {
CHECK_AND_GET_MODULE(0);
int32_t* ack = (int32_t*)cxt->ackbuf;
cxt->acklen = 4;
return module->board_read_muti_io(ack);
}
#undef MODULE_CLASS
/***********************************************************************************************************************
* ZICodeScaner *
***********************************************************************************************************************/
#define MODULE_CLASS ZICodeScaner
int32_t ZCanProtocolParser::code_scaner_start_scan(cmdcontxt_t* cxt) {
CHECK_AND_GET_MODULE(0);
return module->code_scaner_start_scan();
}
int32_t ZCanProtocolParser::code_scaner_stop_scan(cmdcontxt_t* cxt) {
CHECK_AND_GET_MODULE(0);
return module->code_scaner_stop_scan();
}
int32_t ZCanProtocolParser::code_scaner_result_is_ready(cmdcontxt_t* cxt) {
CHECK_AND_GET_MODULE(1);
int32_t* ack = (int32_t*)cxt->ackbuf;
cxt->acklen = 4;
return module->code_scaner_result_is_ready(&ack[0]);
}
int32_t ZCanProtocolParser::code_scaner_get_result_length(cmdcontxt_t* cxt) {
CHECK_AND_GET_MODULE(1);
int32_t* ack = (int32_t*)cxt->ackbuf;
cxt->acklen = 4;
return module->code_scaner_get_result_length(&ack[0]);
}
int32_t ZCanProtocolParser::code_scaner_read_scaner_result(cmdcontxt_t* cxt) {
CHECK_AND_GET_MODULE(0);
return module->code_scaner_read_scaner_result(cxt->ackbuf, &cxt->acklen);
}
#undef MODULE_CLASS
#if 0

10
components/zcancmder/zcan_protocol_parser.hpp

@ -79,11 +79,15 @@ class ZCanProtocolParser : public IZCanReceiverListener {
static int32_t mini_servo_rotate(cmdcontxt_t* cxt);
static int32_t mini_servo_rotate_with_torque(cmdcontxt_t* cxt);
// virtual int32_t board_read_ext_io(int32_t ioindex, int32_t *val) = 0;
// virtual int32_t board_write_ext_io(int32_t ioindex, int32_t val) = 0;
static int32_t board_read_ext_io(cmdcontxt_t* cxt);
static int32_t board_write_ext_io(cmdcontxt_t* cxt);
static int32_t board_read_muti_io(cmdcontxt_t* cxt);
static int32_t code_scaner_start_scan(cmdcontxt_t* cxt);
static int32_t code_scaner_stop_scan(cmdcontxt_t* cxt);
static int32_t code_scaner_result_is_ready(cmdcontxt_t* cxt);
static int32_t code_scaner_get_result_length(cmdcontxt_t* cxt);
static int32_t code_scaner_read_scaner_result(cmdcontxt_t* cxt);
#if 0
static int32_t xymotor_enable(cmdcontxt_t* cxt);

Loading…
Cancel
Save