diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
index 411f6f3..7b365a4 100644
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/usrc/cmdline_support.cpp b/usrc/cmdline_support.cpp
new file mode 100644
index 0000000..cddac57
--- /dev/null
+++ b/usrc/cmdline_support.cpp
@@ -0,0 +1,24 @@
+#include "cmdline_support.hpp"
+using namespace iflytop;
+
+void CmdlineSupport::init(Device* device) {
+ //
+ m_device = device;
+
+ // void line_locking_solenoid_valve(bool on);
+ // void blower_set_val(bool on);
+
+ auto* cmdlineparser = &m_device->m_uart_cmdline_parser;
+ cmdlineparser->registerCmd("line_locking_solenoid_valve", "(bool on)", 1, //
+ [this](int32_t paramN, const char** paraV, ICmdParserACK* ack) {
+ int val = atoi(paraV[0]);
+ m_device->line_locking_solenoid_valve(val);
+ return 0;
+ });
+ cmdlineparser->registerCmd("blower_set_val", "(bool on)", 1, //
+ [this](int32_t paramN, const char** paraV, ICmdParserACK* ack) {
+ int val = atoi(paraV[0]);
+ m_device->blower_set_val(val);
+ return 0;
+ });
+}
\ No newline at end of file
diff --git a/usrc/cmdline_support.hpp b/usrc/cmdline_support.hpp
new file mode 100644
index 0000000..ede8949
--- /dev/null
+++ b/usrc/cmdline_support.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "device.hpp"
+#include "sdk/os/zos.hpp"
+namespace iflytop {
+using namespace std;
+class CmdlineSupport {
+ Device* m_device = nullptr;
+
+ public:
+ void init(Device* device);
+};
+} // namespace iflytop
\ No newline at end of file
diff --git a/usrc/cmdline_version.cpp b/usrc/cmdline_version.cpp
deleted file mode 100644
index 730f9d0..0000000
--- a/usrc/cmdline_version.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-#include
-#include
-
-#include "sdk/os/zos.hpp"
-#include "sdk\components\flash\zsimple_flash.hpp"
-#include "sdk\components\zcancmder\zcanreceiver.hpp"
-#include "sdk\components\zcancmder_module\zcan_basic_order_module.hpp"
-#include "sdk\components\zprotocols\zcancmder_v2\protocol_parser.hpp"
-//
-#include "sdk\components\flash\znvs.hpp"
-//
-#include "sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp"
-#include "sdk\components\cmdscheduler\cmd_scheduler_v2.hpp"
-#include "sdk\components\hardware\uart\zuart_dma_receiver.hpp"
-#include "sdk\components\mini_servo_motor\mini_servo_motor_ctrl_module.hpp"
-#include "sdk\components\pipette_module\pipette_ctrl_module_v2.hpp"
-#include "sdk\components\sensors\m3078\m3078_code_scaner.hpp"
-#include "sdk\components\sensors\tmp117\tmp117.hpp"
-#include "sdk\components\ti\drv8710.hpp"
-#include "sdk\components\tmc\ic\ztmc5130.hpp"
-#include "sdk\components\water_cooling_temperature_control_module\pwm_ctrl_module.hpp"
-#include "sdk\components\water_cooling_temperature_control_module\water_cooling_temperature_control_module.hpp"
-#include "sdk\components\zcancmder\zcan_board_module.hpp"
-#include "sdk\components\zcancmder\zcanreceiver_master.hpp"
-#include "sdk\components\zprotocol_helper\micro_computer_module_device_script_cmder_paser.hpp"
-#include "sdk\components\zprotocols\zcancmder_v2\protocol_proxy.hpp"
-#include "sdk\components\zprotocols\zcancmder_v2\zmodule_device_manager.hpp"
-// #include "M3078CodeScanner"
-
-#define TAG "main"
-using namespace iflytop;
-using namespace std;
-static ZModuleDeviceManager g_zModuleDeviceManager;
-static MicroComputerModuleDeviceScriptCmderPaser g_zModuleDeviceScriptCmderPaser;
-static ZCanCommnaderMaster g_zcanCommnaderMaster;
-static ZIProtocolProxy proxy[255];
-
-void cmdline_version_main() {
- chip_cfg_t chipcfg;
- chipcfg.us_dleay_tim = &PC_SYS_DELAY_US_TIMER;
- chipcfg.tim_irq_scheduler_tim = &PC_SYS_TIM_IRQ_SCHEDULER_TIMER;
- chipcfg.huart = &PC_DEBUG_UART;
- chipcfg.debuglight = PC_DEBUG_LIGHT_GPIO;
-
- chip_init(&chipcfg);
-
- zos_cfg_t zoscfg;
- zos_init(&zoscfg);
-
- ZLOGI(TAG, "boardId:%d", 0);
-
- ZLOGI(TAG, "init can bus");
- auto* m_zcanCommnaderMaster_cfg = g_zcanCommnaderMaster.createCFG(); // can×ÜÏßÅäÖÃ
- g_zcanCommnaderMaster.init(m_zcanCommnaderMaster_cfg); // can×ÜÏß
- g_zModuleDeviceManager.initialize(&g_zcanCommnaderMaster);
- ZLOGI(TAG, "init can bus end...");
-
- static ZUARTDmaReceiver dmaUartReceiver;
- static CmdSchedulerV2 cmder;
- ZUARTDmaReceiver::hardware_config_t cfg = {
- .huart = &PC_DEBUG_UART,
- .dma_rx = &PC_DEBUG_UART_DMA_HANDLER,
- .rxbuffersize = PC_DEBUG_UART_RX_BUF_SIZE,
- .rxovertime_ms = 10,
- };
- ZLOGI(TAG, "init cmder");
- dmaUartReceiver.initialize(&cfg);
- cmder.initialize(&dmaUartReceiver);
- ZLOGI(TAG, "init cmder end...");
-
- ZLOGI(TAG, "init module");
- g_zModuleDeviceManager.initialize(&g_zcanCommnaderMaster);
- g_zModuleDeviceScriptCmderPaser.initialize(&cmder, &g_zModuleDeviceManager);
- ZLOGI(TAG, "reg modules");
-
- for (size_t i = 1; i < 255; i++) {
- proxy[i].initialize(i, &g_zcanCommnaderMaster);
- g_zModuleDeviceManager.registerModule(&proxy[i]);
- }
-
- ZLOGI(TAG, "board init ok...");
-
- while (true) {
- OSDefaultSchduler::getInstance()->loop();
- cmder.schedule();
- }
-};
diff --git a/usrc/cmdline_version.hpp b/usrc/cmdline_version.hpp
deleted file mode 100644
index 320a69b..0000000
--- a/usrc/cmdline_version.hpp
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-void cmdline_version_main();
-
diff --git a/usrc/device.cpp b/usrc/device.cpp
index 44075e5..972669a 100644
--- a/usrc/device.cpp
+++ b/usrc/device.cpp
@@ -35,7 +35,9 @@ void Device::init() {
init_bus();
sub_module_init();
ZLOGI(TAG, "init end...");
+}
+void Device::loop() {
while (true) {
OSDefaultSchduler::getInstance()->loop();
m_uart_cmdline_parser.schedule();
@@ -160,5 +162,12 @@ void Device::sub_module_init() {
m_device_manager.module_active_cfg(42);
}
-void Device::line_locking_solenoid_valve_init() {}
-void Device::line_locking_solenoid_valve(bool on) {}
+static ZGPIO line_locking_solenoid_valve_gpio;
+void Device::line_locking_solenoid_valve_init() { //
+ line_locking_solenoid_valve_gpio.initAsOutput(PC3, ZGPIO::kMode_nopull, false, false);
+}
+void Device::line_locking_solenoid_valve(bool on) { line_locking_solenoid_valve_gpio.setState(on); }
+
+static ZGPIO blower_gpio;
+void Device::blower_init() { blower_gpio.initAsOutput(PC2, ZGPIO::kMode_nopull, true, false); }
+void Device::blower_set_val(bool on) { blower_gpio.setState(on); }
diff --git a/usrc/device.hpp b/usrc/device.hpp
index 6796ff6..d95f308 100644
--- a/usrc/device.hpp
+++ b/usrc/device.hpp
@@ -61,6 +61,7 @@ typedef enum {
} sub_device_list_t;
class Device {
+ public:
ZModuleDeviceManager m_device_manager;
CmdSchedulerV2 m_uart_cmdline_parser;
@@ -85,6 +86,11 @@ class Device {
void line_locking_solenoid_valve_init();
void line_locking_solenoid_valve(bool on);
+ void blower_init();
+ void blower_set_val(bool on);
+
+ void loop();
+
private:
void init_uart_cmder();
void init_dm();
diff --git a/usrc/main.cpp b/usrc/main.cpp
index 4c2468e..5f3cae0 100644
--- a/usrc/main.cpp
+++ b/usrc/main.cpp
@@ -9,6 +9,7 @@
//
#include "sdk\components\flash\znvs.hpp"
//
+#include "cmdline_support.hpp"
#include "device.hpp"
#include "sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp"
#include "sdk\components\cmdscheduler\cmd_scheduler_v2.hpp"
@@ -37,6 +38,11 @@ extern "C" {
void StartDefaultTask(void const* argument) { umain(); }
}
-Device gdevice;
+Device gdevice;
+CmdlineSupport cmdlineSupport;
-void umain() { gdevice.init(); };
+void umain() {
+ gdevice.init();
+ cmdlineSupport.init(&gdevice);
+ gdevice.loop();
+};
diff --git a/usrc/width_detecter.cpp b/usrc/width_detecter.cpp
new file mode 100644
index 0000000..dfa6e21
--- /dev/null
+++ b/usrc/width_detecter.cpp
@@ -0,0 +1,2 @@
+#include "width_detecter.hpp"
+
diff --git a/usrc/width_detecter.hpp b/usrc/width_detecter.hpp
new file mode 100644
index 0000000..4021e6c
--- /dev/null
+++ b/usrc/width_detecter.hpp
@@ -0,0 +1,17 @@
+#pragma once
+
+#include "sdk/os/zos.hpp"
+
+namespace iflytop {
+class WindthDetecter {
+ public:
+ void init(int32_t resetpos, int32_t zeropos, int32_t direction);
+ void start_direct();
+ void stop();
+
+ int32_t get_width();
+
+ private:
+ void loop();
+};
+} // namespace iflytop
\ No newline at end of file