Browse Source

update

master
zhaohe 2 years ago
parent
commit
66ce8c1962
  1. 6
      components/zcancmder/zcanreceiver.cpp
  2. 3
      components/zcancmder/zcanreceiver.hpp
  3. 29
      components/zcancmder_module/zcan_basic_order_module.cpp
  4. 6
      components/zcancmder_module/zcan_basic_order_module.hpp

6
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;
}

3
components/zcancmder/zcanreceiver.hpp

@ -91,6 +91,8 @@ class ZCanCmder : public ZCanIRQListener {
list<zcan_cmder_listener_t> 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();

29
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_t>();
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_t>();
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;

6
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);

Loading…
Cancel
Save