diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
index d6ab3cb..c61406d 100644
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/sdk b/sdk
index 097b325..2f53851 160000
--- a/sdk
+++ b/sdk
@@ -1 +1 @@
-Subproject commit 097b32522d663f401836639fe9229f494b45984f
+Subproject commit 2f53851e65c19d2f4c01efd6804408d48c986749
diff --git a/usrc/main.cpp b/usrc/main.cpp
index fc6600e..38d5724 100644
--- a/usrc/main.cpp
+++ b/usrc/main.cpp
@@ -57,6 +57,8 @@ SingleAxisMotorControler m_tjMotorControlService; // 推进电机
OneDimensionalCodeLaserScanner m_oneDimensionalCodeLaserScanner;
IDCardReaderService m_idCardReaderService;
+ZCanReceiver m_canReceiver;
+
void input_sensors_init() {
io_fybh_read1.initAsInput(FYBH_READ1, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, false /*mirror*/);
io_fybh_read2.initAsInput(FYBH_READ2, ZGPIO::kMode_nopull, ZGPIO::kIRQ_noIrq, false /*mirror*/);
@@ -76,9 +78,13 @@ void input_sensors_init() {
io_fybjl_sensor0.initAsInput(FYBJL_SENSOR0, ZGPIO::kMode_nopull, ZGPIO::kIRQ_risingAndFallingIrq, true /*mirror*/);
}
-icps::error_t Main::onHostRegisterWriteEvent(IflytopCanProtocolStackProcesser *processer, icps::WriteEvent *event) { return icps::kSuccess; }
-icps::error_t Main::onHostRegisterReadEvent(IflytopCanProtocolStackProcesser *processer, icps::ReadEvent *event) { return icps::kSuccess; }
-void Main::onHostRegisterReportEvent(IflytopCanProtocolStackProcesser *processer, icps::ReportEvent *event) {}
+void Main::onRceivePacket(CanPacketRxBuffer *rxbuf, uint8_t *packet, size_t len) {
+ ZLOGI(TAG, "onRceivePacket from %d %d", rxbuf->id, len);
+ for (size_t i = 0; i < len; i++) {
+ printf("%02X ", packet[i]);
+ }
+ printf("\n");
+}
void Main::run() {
ZHALCORE::cfg_t oscfg = {
@@ -93,142 +99,15 @@ void Main::run() {
debuglight.initAsOutput(DEBUG_LIGHT_GPIO, ZGPIO::kMode_nopull, false, false);
ZHAL_CORE_REG(200, { debuglight.toggleState(); });
- /*******************************************************************************
- * 协议栈初始化 *
- *******************************************************************************/
- { //
- auto *cfg = IflytopCanProtocolStackProcesser::createDefaultConfig(DEVICE_ID, 128);
- m_protocolStack.initialize(cfg);
- m_protocolStack.setDumpPacketFlag(false);
- // m_protocolStack.registerListener(this);
- // m_protocolStack.activeReg(REG_GPIO_INPUT0, icps::kwr, 0);
- }
-
- { //
- m_deviceBaseControlService.initialize(&m_protocolStack, DEVICE_ID);
- m_deviceBaseControlService.setListener([](int32_t engineer_mode) {
- // m_pyMotorControlService.setEngineerMode(engineer_mode);
- // m_tjMotorControlService.setEngineerMode(engineer_mode);
- });
- }
-
- /*******************************************************************************
- * GPIO输入初始化 *
- *******************************************************************************/
- input_sensors_init();
- {
- m_ioControlService.initialize(&m_protocolStack, GPIO_INPUT_ADD_BASE, nullptr, //
- //
- [this](int io_off) {
- if (io_off == 0) return io_fybjl_sensor0.getState();
- if (io_off == 1) return io_fybjl_sensor1.getState();
- if (io_off == 2) return io_fybjl_sensor2.getState();
- if (io_off == 3) return io_fybjl_sensor3.getState();
- if (io_off == 4) return io_fybjl_sensor4.getState();
- if (io_off == 5) return io_fybjl_sensor5.getState();
- if (io_off == 6) return io_fybjl_sensor6.getState();
-
- if (io_off == 7) return io_fybjl_sensor7.getState();
- if (io_off == 8) return io_fybjl_sensor8.getState();
- if (io_off == 9) return io_fybh_read1.getState();
- if (io_off == 10) return io_fybh_read2.getState();
- if (io_off == 11) return io_fybh_read3.getState();
- if (io_off == 12) return io_fybh_read4.getState();
- if (io_off == 13) return io_fybh_read5.getState();
- if (io_off == 14) return io_fybh_read6.getState();
-
- return false;
- });
- }
+ ZCanReceiver::CFG *cfg = m_canReceiver.createCFG(DEVICE_ID);
+ m_canReceiver.init(cfg);
+ m_canReceiver.registerListener(this);
- /*******************************************************************************
- * 横移电机 *
- *******************************************************************************/
- {
- TMC5130::cfg_t cfg = {.hspi = &MOTOR_SPI, .enn_pin = MOTOR0_ENN, .csn_pin = MOTOR0_CSN};
-
- m_py_motor.initialize(&cfg);
- int32_t chipv = m_py_motor.readChipVERSION();
- ZLOGI(TAG, "m_py_motor:%lx", chipv);
- m_py_motor.setIHOLD_IRUN(1, 31, 0);
- // m_py_motor.rotate(500000);
-
- m_py_motor.setIHOLD_IRUN(2, 12, 0);
- m_py_motor.setMotorShaft(false);
-
- m_pyMotorControlService.initialize( //
- "infeedMotor", &m_protocolStack, REG_PY_MOTOR_CTRL_ADD_BASE,
- &io_fybjl_sensor1, // ZERO_GPIO
- NULL, // LGPIO
- NULL, // RGPIO
- &m_py_motor // motor
- );
-
- m_pyMotorControlService.cfg_acc->setVal(30000);
- m_pyMotorControlService.cfg_dec->setVal(30000);
- m_pyMotorControlService.cfg_velocity->setVal(1000000);
- m_pyMotorControlService.cfg_zero_shift->setVal(0);
- m_pyMotorControlService.cfg_runhome_velocity->setVal(50000);
- m_pyMotorControlService.cfg_runtohome_dec->setVal(100000);
- m_pyMotorControlService.cfg_min_pos->setVal(-1000);
- m_pyMotorControlService.cfg_max_pos->setVal(1144028);
- m_pyMotorControlService.cfg_runtohome_max_distance->setVal(INT32_MAX);
- m_pyMotorControlService.cfg_runtohome_leave_zero_point_distance->setVal(256 * 200 * 1);
- }
-
- /*******************************************************************************
- * 推杆电机 *
- *******************************************************************************/
- {
- TMC5130::cfg_t cfg = {.hspi = &MOTOR_SPI, .enn_pin = MOTOR1_ENN, .csn_pin = MOTOR1_CSN};
-
- m_tj_motor.initialize(&cfg);
- int32_t chipv = m_tj_motor.readChipVERSION();
- ZLOGI(TAG, "m_tj_motor:%lx", chipv);
- m_tj_motor.setIHOLD_IRUN(1, 31, 0);
- // m_tj_motor.rotate(500000);
-
- m_tj_motor.setIHOLD_IRUN(2, 12, 0);
- m_tj_motor.setMotorShaft(true);
-
- m_tjMotorControlService.initialize( //
- "outfeedMotor", &m_protocolStack, REG_TJ_MOTOR_CTRL_ADD_BASE,
- &io_fybjl_sensor4, // ZERO_GPIO
- NULL, // LGPIO
- NULL, // RGPIO
- &m_tj_motor // motor
- );
- m_tjMotorControlService.cfg_acc->setVal(30000);
- m_tjMotorControlService.cfg_dec->setVal(30000);
- m_tjMotorControlService.cfg_velocity->setVal(1000000);
- m_tjMotorControlService.cfg_zero_shift->setVal(0);
- m_tjMotorControlService.cfg_runhome_velocity->setVal(50000);
- m_tjMotorControlService.cfg_runtohome_dec->setVal(100000);
- m_tjMotorControlService.cfg_min_pos->setVal(-1000);
- m_tjMotorControlService.cfg_max_pos->setVal(1130108);
- m_tjMotorControlService.cfg_runtohome_max_distance->setVal(INT32_MAX);
- m_tjMotorControlService.cfg_runtohome_leave_zero_point_distance->setVal(256 * 200 * 1);
- }
-
- /*******************************************************************************
- * 扫码枪初始化 *
- *******************************************************************************/
- {
- m_m3078CodeScanner.initialize(&REACTION_BOX_SWEEP_SENSOR_UART, PC11, true /*trigger pin mirror*/);
- // m_m3078CodeScanner.trigger();
- m_idCardReaderService.initialize("idCardReaderService", &m_protocolStack, REG_ID_CARD_READER_CTRL_ADD_BASE, &m_m3078CodeScanner);
- }
-
- {
- // 扫描开始位置:518400
- // 扫描结束位置:659200
- OneDimensionalCodeLaserScanner::cfg_t cfg;
- cfg.triggerPin = FYBJL_SENSOR0;
- cfg.codestartpos = 518500;
- cfg.codeendpos = 659200;
- cfg.readder = [this]() { return m_tj_motor.getXACTUAL(); };
- m_oneDimensionalCodeLaserScanner.initialize(&m_protocolStack, REG_LARSER_SCANNER_CTRL_ADD_BASE, &cfg);
- }
+ // uint8_t packet[255];
+ // for (int i = 0; i < 255; i++) {
+ // packet[i] = i;
+ // }
+ // ZHAL_CORE_REG(200, { m_canReceiver.sendPacket(packet, 255); });
ZLOGI(TAG, "init done");
while (1) {
diff --git a/usrc/main.hpp b/usrc/main.hpp
index 891cc4e..5767d46 100644
--- a/usrc/main.hpp
+++ b/usrc/main.hpp
@@ -6,18 +6,14 @@
#include "sdk\components\iflytop_can_slave_modules\device_base_control_service.hpp"
#include "sdk\components\iflytop_can_slave_v1\iflytop_can_slave.hpp"
-
+#include "sdk\components\zcanreceiver\zcanreceiver.hpp"
namespace iflytop {
using namespace std;
-class Main {
+class Main : public ZCanRceiverListener {
private:
/* data */
public:
-
- virtual bool isThisRegOwnToMe(IflytopCanProtocolStackProcesser *processer, icps::Reg_t *reg) { return false; }
- virtual icps::error_t onHostRegisterWriteEvent(IflytopCanProtocolStackProcesser *processer, icps::WriteEvent *event);
- virtual icps::error_t onHostRegisterReadEvent(IflytopCanProtocolStackProcesser *processer, icps::ReadEvent *event);
- virtual void onHostRegisterReportEvent(IflytopCanProtocolStackProcesser *processer, icps::ReportEvent *event);
+ virtual void onRceivePacket(CanPacketRxBuffer *rxbuf, uint8_t *packet, size_t len);
Main(/* args */){};
~Main(){};
diff --git a/usrc/project.hpp b/usrc/project.hpp
index c3a5134..3c85f9a 100644
--- a/usrc/project.hpp
+++ b/usrc/project.hpp
@@ -2,7 +2,7 @@
#define VERSION "v1.0"
// 设备ID
-#define DEVICE_ID (128 + 5)
+#define DEVICE_ID (2)
// 调试串口
#define DEBUG_UART huart1
// 调试指示灯