diff --git a/components/cmdscheduler/cmd_scheduler_v2.cpp b/components/cmdscheduler/cmd_scheduler_v2.cpp index a0baa77..de118a3 100644 --- a/components/cmdscheduler/cmd_scheduler_v2.cpp +++ b/components/cmdscheduler/cmd_scheduler_v2.cpp @@ -106,12 +106,33 @@ void CmdSchedulerV2::dumpack(ICmdParserACK* ack) { ZLOGI(TAG, "\tACK[%d] \t\t%d", i, (int)ack->getAckInt32Val(i)); } } else if (ack->acktype == ack->kAckType_buf) { - ZLOGI_NOT_END_LINE(TAG, "\t ACK_BUF:"); - for (int i = 0; i < ack->rawlen; i++) { - printf(" %02x", ack->rawdata[i]); + #define ALIAS_LEN 8 + ZLOGI_NOT_END_LINE(TAG, "\t ACK_BUF(%d):\n", ack->rawlen); + for (int32_t i = 0; i * ALIAS_LEN < ack->rawlen; i++) { + ZLOGI_NOT_END_LINE(TAG, "%8x\t\t", i * ALIAS_LEN); + for (int32_t j = 0; j < ALIAS_LEN; j++) { + if (i * ALIAS_LEN + j < ack->rawlen) { + printf("%02x ", ack->rawdata[i * ALIAS_LEN + j]); + } + } + printf("|"); + for (int32_t j = 0; j < ALIAS_LEN; j++) { + if (i * ALIAS_LEN + j < ack->rawlen) { + if (ack->rawdata[i * ALIAS_LEN + j] >= 0x20 && ack->rawdata[i * ALIAS_LEN + j] <= 0x7e) { + printf("%c", ack->rawdata[i * ALIAS_LEN + j]); + } else { + printf("."); + } + } + } + printf("\n"); } - printf("\n"); - } else { + } else if (ack->acktype == ack->kAckType_str) { + ZLOGI_NOT_END_LINE(TAG, "\t ACK_BUF(%d):", ack->rawlen); + printf("%s\n", (char*)ack->rawdata); + } + + else { ZLOGI(TAG, "\tok"); } } else { diff --git a/components/sensors/m3078/m3078_code_scaner.cpp b/components/sensors/m3078/m3078_code_scaner.cpp index eefff00..e77cdcd 100644 --- a/components/sensors/m3078/m3078_code_scaner.cpp +++ b/components/sensors/m3078/m3078_code_scaner.cpp @@ -26,18 +26,22 @@ void M3078CodeScanner::initialize(int moduleid, hardware_config_t* hardwareconfi } }); m_uart.startRxIt(); - m_triggerGpio.initAsOutput(hardwareconfig->triggerPin, ZGPIO::kMode_nopull, false, false); + m_triggerGpio.initAsOutput(hardwareconfig->triggerPin, ZGPIO::kMode_nopull, true, false); m_com_reg.module_enable = 1; id = moduleid; } void M3078CodeScanner::trigger() { + ZLOGI(TAG, "trigger"); clearIdinfo(); m_triggerGpio.setState(0); zos_delay(3); m_uart.clearRxData(); m_triggerGpio.setState(1); } -void M3078CodeScanner::stopTrigger() { m_triggerGpio.setState(0); } +void M3078CodeScanner::stopTrigger() { + ZLOGI(TAG, "stopTrigger"); + m_triggerGpio.setState(0); +} bool M3078CodeScanner::idInfoIsReady() { return m_codeisready; } char* M3078CodeScanner::getIdinfo() { return codecache; } void M3078CodeScanner::clearIdinfo() { diff --git a/components/zprotocol_helper/micro_computer_module_device_script_cmder_paser.cpp b/components/zprotocol_helper/micro_computer_module_device_script_cmder_paser.cpp index 0a49321..108e14a 100644 --- a/components/zprotocol_helper/micro_computer_module_device_script_cmder_paser.cpp +++ b/components/zprotocol_helper/micro_computer_module_device_script_cmder_paser.cpp @@ -25,9 +25,19 @@ void MicroComputerModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, m_cmdParser = cancmder; m_deviceManager = deviceManager; + /******************************************************************************* + * ¼æÈÝ½Ó¿Ú * + *******************************************************************************/ cancmder->regCMD("dumpreg", "(mid)", 1, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) { // app_dump_reg(paramN, paraV, ack); }); + cancmder->regCMD("scanmodule", "()", 0, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) { // + do_scan_module(paramN, paraV, ack); + }); + + /******************************************************************************* + * ½Ó¿Ú * + *******************************************************************************/ cancmder->regCMD("app_dump_regs", "(mid)", 1, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) { // app_dump_reg(paramN, paraV, ack); }); @@ -40,10 +50,13 @@ void MicroComputerModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, cancmder->regCMD("app_wait_for_module", "(mid,timeout)", -1, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) { // do_wait_for_module(paramN, paraV, ack); }); - - cancmder->regCMD("scanmodule", "()", 0, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) { // + cancmder->regCMD("app_scanmodule", "()", 0, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) { // do_scan_module(paramN, paraV, ack); }); + cancmder->regCMD("app_module_read_raw_str", "(mid,size)", 2, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) { // + app_module_read_raw_str(paramN, paraV, ack); + }); + deviceManager->regOnRegValChangeEvent([this](int32_t moduleid, int32_t event_id, int32_t eventval) { // ZLOGI(TAG, "onRegValChangeEvent(%d,%d,%d)", moduleid, event_id, eventval); }); @@ -63,6 +76,16 @@ void MicroComputerModuleDeviceScriptCmderPaser::app_dump_reg(int32_t paramN, con app_dump_reg(moduleId, regid); } +void MicroComputerModuleDeviceScriptCmderPaser::app_module_read_raw_str(int32_t paramN, const char* paraV[], ICmdParserACK* ack) { + ack->ecode = 0; + uint16_t moduleId = atoi(paraV[0]); + uint16_t startadd = atoi(paraV[1]); + ack->rawlen = sizeof(ack->rawdata); + ack->ecode = m_deviceManager->module_read_raw(moduleId, startadd, ack->rawdata, &ack->rawlen); + ack->acktype = ICmdParserACK::kAckType_str; + return; +} + void MicroComputerModuleDeviceScriptCmderPaser::app_dump_reg(int32_t moduleId, int32_t regid) { #define DUMP_CONFIG(tag, configid) \ if (regid == 0 || regid == configid) { \ diff --git a/components/zprotocol_helper/micro_computer_module_device_script_cmder_paser.hpp b/components/zprotocol_helper/micro_computer_module_device_script_cmder_paser.hpp index 539c076..400fb13 100644 --- a/components/zprotocol_helper/micro_computer_module_device_script_cmder_paser.hpp +++ b/components/zprotocol_helper/micro_computer_module_device_script_cmder_paser.hpp @@ -18,6 +18,8 @@ class MicroComputerModuleDeviceScriptCmderPaser : public ZModuleDeviceScriptCmde void do_wait_for_module(int32_t paramN, const char* paraV[], ICmdParserACK* ack); void app_dump_regs(int32_t paramN, const char* paraV[], ICmdParserACK* ack); void app_dump_reg(int32_t paramN, const char* paraV[], ICmdParserACK* ack); + void app_module_read_raw_str(int32_t paramN, const char* paraV[], ICmdParserACK* ack); + }; } // namespace iflytop diff --git a/components/zprotocols/zcancmder_v2 b/components/zprotocols/zcancmder_v2 index 87d2bfa..fe55b29 160000 --- a/components/zprotocols/zcancmder_v2 +++ b/components/zprotocols/zcancmder_v2 @@ -1 +1 @@ -Subproject commit 87d2bfa20a22003f1731511b6c50f925330a5ebd +Subproject commit fe55b29b2ec36c1dba99d1d69c4dc9e607dcad63