From 66ce8c1962ad34bf19ae6344f9a2d2ac89c74707 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Tue, 26 Sep 2023 14:18:57 +0800 Subject: [PATCH] update --- components/zcancmder/zcanreceiver.cpp | 6 ++++- components/zcancmder/zcanreceiver.hpp | 3 +++ .../zcancmder_module/zcan_basic_order_module.cpp | 29 ++++++---------------- .../zcancmder_module/zcan_basic_order_module.hpp | 6 ++--- 4 files changed, 18 insertions(+), 26 deletions(-) diff --git a/components/zcancmder/zcanreceiver.cpp b/components/zcancmder/zcanreceiver.cpp index 627f335..c047d37 100644 --- a/components/zcancmder/zcanreceiver.cpp +++ b/components/zcancmder/zcanreceiver.cpp @@ -41,7 +41,7 @@ bool CanPacketRxBuffer::iscmd(CmdID_t id, uint8_t subcmdid) { return cmdheader->cmdid == (uint16_t)id && cmdheader->subcmdid == subcmdid; } -Cmdheader_t* CanPacketRxBuffer::get_cmdheader() { +Cmdheader_t *CanPacketRxBuffer::get_cmdheader() { Cmdheader_t *cmdheader = (Cmdheader_t *)rxdata; return cmdheader; } @@ -185,6 +185,7 @@ void ZCanCmder::sendErrorAck(Cmdheader_t *cmdheader, int16_t errcode) { } bool ZCanCmder::sendPacketSub(int npacket, int packetIndex, uint8_t *packet, size_t len, int overtimems) { + // ZLOGI(TAG, "sendPacketSub(%d:%d)", npacket, packetIndex); CAN_TxHeaderTypeDef pHeader; uint8_t aData[8] /*8byte table*/; uint32_t txMailBox = 0; @@ -216,6 +217,9 @@ bool ZCanCmder::sendPacketSub(int npacket, int packetIndex, uint8_t *packet, siz } // m_os->sleepMS(1); } + if (txPacketInterval_ms > 0) { + osDelay(txPacketInterval_ms); + } return true; } diff --git a/components/zcancmder/zcanreceiver.hpp b/components/zcancmder/zcanreceiver.hpp index 8c40aea..6ee0664 100644 --- a/components/zcancmder/zcanreceiver.hpp +++ b/components/zcancmder/zcanreceiver.hpp @@ -91,6 +91,8 @@ class ZCanCmder : public ZCanIRQListener { list m_listenerList2; CanPacketRxBuffer m_canPacketRxBuffer[1]; + int txPacketInterval_ms = 0; + public: ZCanCmder() {} CFG *createCFG(uint8_t deviceId); @@ -105,6 +107,7 @@ class ZCanCmder : public ZCanIRQListener { void sendErrorAck(Cmdheader_t *rxcmdheader, int16_t errcode); bool sendPacketSub(int npacket, int packetIndex, uint8_t *packet, size_t len, int overtimems); uint8_t getDeviceId() { return m_config->deviceId; } + void setTxPacketInterval(int interval_ms) { txPacketInterval_ms = interval_ms; } void loop(); diff --git a/components/zcancmder_module/zcan_basic_order_module.cpp b/components/zcancmder_module/zcan_basic_order_module.cpp index f477bb6..5ba5c81 100644 --- a/components/zcancmder_module/zcan_basic_order_module.cpp +++ b/components/zcancmder_module/zcan_basic_order_module.cpp @@ -12,13 +12,13 @@ void ZCanBasicOrderModule::initialize(ZCanCmder* zcanReceiver) { m_zcanReceiver = zcanReceiver; } #if 0 -void ZCanBasicOrderModule::regInputCtl(readfn_t fn) { m_readfn = fn; } -void ZCanBasicOrderModule::regOutCtl(writefn_t fn) { m_writefn = fn; } -void ZCanBasicOrderModule::regReadAdcVal(readadcval_t fn) { m_readadcval = fn; } +void ZCanBasicOrderModule::reg_read_io(readfn_t fn) { m_readfn = fn; } +void ZCanBasicOrderModule::reg_set_io(writefn_t fn) { m_writefn = fn; } +void ZCanBasicOrderModule::reg_read_adc(readadcval_t fn) { m_readadcval = fn; } #endif -void ZCanBasicOrderModule::regInputCtl(uint8_t id, readfn_t fn) { m_inputCtlMap[id] = fn; } -void ZCanBasicOrderModule::regOutCtl(uint8_t id, writefn_t fn) { m_outCtlMap[id] = fn; } -void ZCanBasicOrderModule::regReadAdcVal(uint8_t id, readadcval_t fn) { m_readAdcValMap[id] = fn; } +void ZCanBasicOrderModule::reg_read_io(uint8_t id, readfn_t fn) { m_inputCtlMap[id] = fn; } +void ZCanBasicOrderModule::reg_set_io(uint8_t id, writefn_t fn) { m_outCtlMap[id] = fn; } +void ZCanBasicOrderModule::reg_read_adc(uint8_t id, readadcval_t fn) { m_readAdcValMap[id] = fn; } void ZCanBasicOrderModule::onRceivePacket(CanPacketRxBuffer* rxbuf) { if (rxbuf->iscmd(kcmd_ping, 0)) { @@ -46,14 +46,7 @@ void ZCanBasicOrderModule::onRceivePacket(CanPacketRxBuffer* rxbuf) { kcmd_set_io_t* cmd = rxbuf->get_data_as(); kcmd_set_io_ack_t ack; bool val = cmd->val; -#if 0 - if (m_writefn && m_writefn(cmd->ioid, val)) { - ack.ioid = cmd->ioid; - ack.val = val; - m_zcanReceiver->sendAck(rxbuf->get_cmdheader(), (uint8_t*)&ack, sizeof(ack)); - return; - } -#endif + if (m_outCtlMap.find(cmd->ioid) != m_outCtlMap.end()) { m_outCtlMap[cmd->ioid](val); ack.ioid = cmd->ioid; @@ -66,14 +59,6 @@ void ZCanBasicOrderModule::onRceivePacket(CanPacketRxBuffer* rxbuf) { kcmd_readadc_raw_t* cmd = rxbuf->get_data_as(); kcmd_readadc_raw_ack_t ack; int32_t val = 0; -#if 0 - if (m_readadcval && m_readadcval(cmd->sensorid, val)) { - ack.sensorid = cmd->sensorid; - ack.val = val; - m_zcanReceiver->sendAck(rxbuf->get_cmdheader(), (uint8_t*)&ack, sizeof(ack)); - return; - } -#endif if (m_readAdcValMap.find(cmd->sensorid) != m_readAdcValMap.end()) { val = m_readAdcValMap[cmd->sensorid](); ack.sensorid = cmd->sensorid; diff --git a/components/zcancmder_module/zcan_basic_order_module.hpp b/components/zcancmder_module/zcan_basic_order_module.hpp index d3d8a5a..97d2385 100644 --- a/components/zcancmder_module/zcan_basic_order_module.hpp +++ b/components/zcancmder_module/zcan_basic_order_module.hpp @@ -37,9 +37,9 @@ class ZCanBasicOrderModule : public ZCanCmderListener { public: void initialize(ZCanCmder* zcanReceiver); - void regInputCtl(uint8_t id, readfn_t fn); - void regOutCtl(uint8_t id, writefn_t fn); - void regReadAdcVal(uint8_t id, readadcval_t fn); + void reg_read_io(uint8_t id, readfn_t fn); + void reg_set_io(uint8_t id, writefn_t fn); + void reg_read_adc(uint8_t id, readadcval_t fn); public: virtual void onRceivePacket(CanPacketRxBuffer* rxbuf);