From b7ad588d0936f7b5800e9a3628e8d88d9a9a1489 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 3 Nov 2023 11:29:14 +0800 Subject: [PATCH] update --- api/i_cmdparser.hpp | 10 ++-------- api/zi_a8000_optical_module.hpp | 2 +- cmdid.hpp | 3 ++- protocol_parser.cpp | 2 ++ protocol_proxy.cpp | 2 ++ protocol_proxy.hpp | 2 ++ zmodule_device_manager.cpp | 2 ++ zmodule_device_manager.hpp | 8 ++++++++ zmodule_device_script_cmder_paser.cpp | 3 ++- 9 files changed, 23 insertions(+), 11 deletions(-) diff --git a/api/i_cmdparser.hpp b/api/i_cmdparser.hpp index c92c113..54c3b47 100644 --- a/api/i_cmdparser.hpp +++ b/api/i_cmdparser.hpp @@ -42,7 +42,7 @@ class ICmdParserACK { } int32_t *getAck(int index) { - if (index < 0 || index >= rawlen / (int)sizeof(int32_t)) { + if (index < 0 || index >= sizeof(rawdata) / 4) { return nullptr; } return (int32_t *)rawdata + index; @@ -54,13 +54,7 @@ class ICmdParserACK { } return *((int32_t *)rawdata + index); } - - int32_t getAckInt32Num() { - if (rawlen != sizeof(int32_t)) { - return 0; - } - return *((int32_t *)rawdata); - } + int32_t getAckInt32Num() { return rawlen / (int)sizeof(int32_t); } }; typedef function ICmdFunction_t; diff --git a/api/zi_a8000_optical_module.hpp b/api/zi_a8000_optical_module.hpp index c6c358a..fb671f0 100644 --- a/api/zi_a8000_optical_module.hpp +++ b/api/zi_a8000_optical_module.hpp @@ -25,7 +25,7 @@ class ZIA8000OpticalModule { * 1. 下面方法属于单步测试采样的方法,用于调试。一般手动移动光学模组,然后利用下面方法进行测试 * 2. 正式逻辑不使用下面逻辑 */ - + virtual int32_t a8000_optical_module_power_ctrl(int32_t state) = 0; virtual int32_t a8000_optical_open_laser(int32_t type) = 0; virtual int32_t a8000_optical_close_laser(int32_t type) = 0; virtual int32_t a8000_optical_set_laster_gain(int32_t type, int32_t gain) = 0; diff --git a/cmdid.hpp b/cmdid.hpp index cf31f70..319cfe2 100644 --- a/cmdid.hpp +++ b/cmdid.hpp @@ -114,6 +114,7 @@ typedef enum { kpipette_ctrl_move_to_ul = CMDID(5, 3), // para:{4}, ack:{} #if 0 + virtual int32_t a8000_optical_module_power_ctrl(int32_t state) = 0; virtual int32_t a8000_optical_open_laser(int32_t type) = 0; virtual int32_t a8000_optical_close_laser(int32_t type) = 0; virtual int32_t a8000_optical_set_laster_gain(int32_t type, int32_t gain) = 0; @@ -122,7 +123,7 @@ typedef enum { virtual int32_t a8000_optical_read_laster_adc_val(int32_t type, int32_t* adcval) = 0; virtual int32_t a8000_optical_scan_current_point_amp_adc_val(int32_t type, int32_t lastergain, int32_t ampgain, int32_t* laster_fb_val, int32_t* adcval) = 0; #endif - + ka8000_optical_module_power_ctrl = CMDID(6, 0), // para:{4}, ack:{} ka8000_optical_open_laser = CMDID(6, 1), // para:{4}, ack:{} ka8000_optical_close_laser = CMDID(6, 2), // para:{4}, ack:{} ka8000_optical_set_laster_gain = CMDID(6, 3), // para:{4,4}, ack:{} diff --git a/protocol_parser.cpp b/protocol_parser.cpp index f84e60c..324ed72 100644 --- a/protocol_parser.cpp +++ b/protocol_parser.cpp @@ -264,6 +264,7 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in PROCESS_PACKET_10(kpipette_ctrl_move_to_ul, ZIPipetteCtrlModule, pipette_ctrl_move_to_ul); #if 0 + virtual int32_t a8000_optical_module_power_ctrl(int32_t state) = 0; virtual int32_t a8000_optical_open_laser(int32_t type) = 0; virtual int32_t a8000_optical_close_laser(int32_t type) = 0; virtual int32_t a8000_optical_set_laster_gain(int32_t type, int32_t gain) = 0; @@ -272,6 +273,7 @@ void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, in virtual int32_t a8000_optical_read_laster_adc_val(int32_t type, int32_t* adcval) = 0; virtual int32_t a8000_optical_scan_current_point_amp_adc_val(int32_t type, int32_t lastergain, int32_t ampgain, int32_t* laster_fb_val, int32_t* adcval) = 0; #endif + PROCESS_PACKET_10(ka8000_optical_module_power_ctrl, ZIA8000OpticalModule, a8000_optical_module_power_ctrl); PROCESS_PACKET_10(ka8000_optical_open_laser, ZIA8000OpticalModule, a8000_optical_open_laser); PROCESS_PACKET_10(ka8000_optical_close_laser, ZIA8000OpticalModule, a8000_optical_close_laser); PROCESS_PACKET_20(ka8000_optical_set_laster_gain, ZIA8000OpticalModule, a8000_optical_set_laster_gain); diff --git a/protocol_proxy.cpp b/protocol_proxy.cpp index c14484b..af14f9e 100644 --- a/protocol_proxy.cpp +++ b/protocol_proxy.cpp @@ -204,6 +204,7 @@ int32_t ZIProtocolProxy::pipette_ctrl_put_tip() { PROXY_IMPL_00(kpipette_ctrl_pu int32_t ZIProtocolProxy::pipette_ctrl_move_to_ul(int32_t para0) { PROXY_IMPL_10(kpipette_ctrl_move_to_ul, 30); }; #if 0 + virtual int32_t a8000_optical_module_power_ctrl(int32_t state) = 0; virtual int32_t a8000_optical_open_laser(int32_t type) = 0; virtual int32_t a8000_optical_close_laser(int32_t type) = 0; virtual int32_t a8000_optical_set_laster_gain(int32_t type, int32_t gain) = 0; @@ -213,6 +214,7 @@ int32_t ZIProtocolProxy::pipette_ctrl_move_to_ul(int32_t para0) { PROXY_IMPL_10( virtual int32_t a8000_optical_scan_current_point_amp_adc_val(int32_t type, int32_t lastergain, int32_t ampgain, int32_t* laster_fb_val, int32_t* adcval) = 0; #endif +int32_t ZIProtocolProxy::a8000_optical_module_power_ctrl(int32_t para0) { PROXY_IMPL_10(ka8000_optical_module_power_ctrl, 30); } int32_t ZIProtocolProxy::a8000_optical_open_laser(int32_t para0) { PROXY_IMPL_10(ka8000_optical_open_laser, 30); } int32_t ZIProtocolProxy::a8000_optical_close_laser(int32_t para0) { PROXY_IMPL_10(ka8000_optical_close_laser, 30); } int32_t ZIProtocolProxy::a8000_optical_set_laster_gain(int32_t para0, int32_t para1) { PROXY_IMPL_20(ka8000_optical_set_laster_gain, 30); } diff --git a/protocol_proxy.hpp b/protocol_proxy.hpp index 5c14814..55d6e22 100644 --- a/protocol_proxy.hpp +++ b/protocol_proxy.hpp @@ -156,6 +156,7 @@ class ZIProtocolProxy : public ZIMotor, // virtual int32_t pipette_ctrl_move_to_ul(int32_t ul) override; #if 0 + virtual int32_t a8000_optical_module_power_ctrl(int32_t state) = 0; virtual int32_t a8000_optical_open_laser(int32_t type) = 0; virtual int32_t a8000_optical_close_laser(int32_t type) = 0; virtual int32_t a8000_optical_set_laster_gain(int32_t type, int32_t gain) = 0; @@ -165,6 +166,7 @@ class ZIProtocolProxy : public ZIMotor, // virtual int32_t a8000_optical_scan_current_point_amp_adc_val(int32_t type, int32_t lastergain, int32_t ampgain, int32_t* laster_fb_val, int32_t* adcval) = 0; #endif + virtual int32_t a8000_optical_module_power_ctrl(int32_t state) override; virtual int32_t a8000_optical_open_laser(int32_t type) override; virtual int32_t a8000_optical_close_laser(int32_t type) override; virtual int32_t a8000_optical_set_laster_gain(int32_t type, int32_t gain) override; diff --git a/zmodule_device_manager.cpp b/zmodule_device_manager.cpp index 2b5e4b5..50404af 100644 --- a/zmodule_device_manager.cpp +++ b/zmodule_device_manager.cpp @@ -145,6 +145,7 @@ int32_t ZModuleDeviceManager::pipette_ctrl_put_tip(uint16_t id) { PROXY_IMPL(ZIP int32_t ZModuleDeviceManager::pipette_ctrl_move_to_ul(uint16_t id, int32_t ul) { PROXY_IMPL(ZIPipetteCtrlModule, pipette_ctrl_move_to_ul, ul); } #if 0 + virtual int32_t a8000_optical_module_power_ctrl(int32_t state) = 0; virtual int32_t a8000_optical_open_laser(int32_t type) = 0; virtual int32_t a8000_optical_close_laser(int32_t type) = 0; virtual int32_t a8000_optical_set_laster_gain(int32_t type, int32_t gain) = 0; @@ -154,6 +155,7 @@ int32_t ZModuleDeviceManager::pipette_ctrl_move_to_ul(uint16_t id, int32_t ul) { virtual int32_t a8000_optical_scan_current_point_amp_adc_val(int32_t type, int32_t lastergain, int32_t ampgain, int32_t* laster_fb_val, int32_t* adcval) = 0; #endif +int32_t ZModuleDeviceManager::a8000_optical_module_power_ctrl(uint16_t id, int32_t state) { PROXY_IMPL(ZIA8000OpticalModule, a8000_optical_module_power_ctrl, state); } int32_t ZModuleDeviceManager::a8000_optical_open_laser(uint16_t id, int32_t type) { PROXY_IMPL(ZIA8000OpticalModule, a8000_optical_open_laser, type); } int32_t ZModuleDeviceManager::a8000_optical_close_laser(uint16_t id, int32_t type) { PROXY_IMPL(ZIA8000OpticalModule, a8000_optical_close_laser, type); } int32_t ZModuleDeviceManager::a8000_optical_set_laster_gain(uint16_t id, int32_t type, int32_t gain) { PROXY_IMPL(ZIA8000OpticalModule, a8000_optical_set_laster_gain, type, gain); } diff --git a/zmodule_device_manager.hpp b/zmodule_device_manager.hpp index d407baf..c4c99b1 100644 --- a/zmodule_device_manager.hpp +++ b/zmodule_device_manager.hpp @@ -27,6 +27,12 @@ class ZModuleDeviceManager { for (auto &cb : m_on_reg_val_change_event_cbs) if (cb) cb(moduleid, event_id, eventval); } + + void for_each_module(function cb) { + for (auto &it : m_modulers) { + if (cb) cb(it.first); + } + } /******************************************************************************* * ZIModule * *******************************************************************************/ @@ -185,6 +191,7 @@ class ZModuleDeviceManager { virtual int32_t pipette_ctrl_move_to_ul(uint16_t id, int32_t ul); #if 0 + virtual int32_t a8000_optical_module_power_ctrl(int32_t state) = 0; virtual int32_t a8000_optical_open_laser(int32_t type) = 0; virtual int32_t a8000_optical_close_laser(int32_t type) = 0; virtual int32_t a8000_optical_set_laster_gain(int32_t type, int32_t gain) = 0; @@ -194,6 +201,7 @@ class ZModuleDeviceManager { virtual int32_t a8000_optical_scan_current_point_amp_adc_val(int32_t type, int32_t lastergain, int32_t ampgain, int32_t* laster_fb_val, int32_t* adcval) = 0; #endif + virtual int32_t a8000_optical_module_power_ctrl(uint16_t id, int32_t state); virtual int32_t a8000_optical_open_laser(uint16_t id, int32_t type); virtual int32_t a8000_optical_close_laser(uint16_t id, int32_t type); virtual int32_t a8000_optical_set_laster_gain(uint16_t id, int32_t type, int32_t gain); diff --git a/zmodule_device_script_cmder_paser.cpp b/zmodule_device_script_cmder_paser.cpp index afc5376..5f43fea 100644 --- a/zmodule_device_script_cmder_paser.cpp +++ b/zmodule_device_script_cmder_paser.cpp @@ -220,8 +220,8 @@ void ZModuleDeviceScriptCmderPaser::regfn() { PROCESS_PACKET_10(pipette_ctrl_put_tip, "(mid)"); PROCESS_PACKET_20(pipette_ctrl_move_to_ul, "(mid, ul)"); - #if 0 + virtual int32_t a8000_optical_module_power_ctrl(int32_t state) = 0; virtual int32_t a8000_optical_open_laser(int32_t type) = 0; virtual int32_t a8000_optical_close_laser(int32_t type) = 0; virtual int32_t a8000_optical_set_laster_gain(int32_t type, int32_t gain) = 0; @@ -231,6 +231,7 @@ void ZModuleDeviceScriptCmderPaser::regfn() { virtual int32_t a8000_optical_scan_current_point_amp_adc_val(int32_t type, int32_t lastergain, int32_t ampgain, int32_t* laster_fb_val, int32_t* adcval) = 0; #endif + PROCESS_PACKET_20(a8000_optical_module_power_ctrl, "(mid,state)"); PROCESS_PACKET_20(a8000_optical_open_laser, "(mid,type)"); PROCESS_PACKET_20(a8000_optical_close_laser, "(mid,type)"); PROCESS_PACKET_30(a8000_optical_set_laster_gain, "(type,mid,gain)");