|
@ -353,11 +353,64 @@ void MicroComputerModuleDeviceScriptCmderPaser::initialize(ICmdParser* cancmder, |
|
|
m_cmdParser = cancmder; |
|
|
m_cmdParser = cancmder; |
|
|
m_deviceManager = deviceManager; |
|
|
m_deviceManager = deviceManager; |
|
|
|
|
|
|
|
|
cancmder->regCMD("dumpreg", "dumpreg (mid)", 1, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) { do_dumpreg(paramN, paraV, ack); }); |
|
|
|
|
|
|
|
|
cancmder->regCMD("dumpreg", "(mid)", 1, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) { do_dumpreg(paramN, paraV, ack); }); |
|
|
cancmder->regCMD("scanmodule", "()", 0, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) { do_scan_module(paramN, paraV, ack); }); |
|
|
cancmder->regCMD("scanmodule", "()", 0, [this](int32_t paramN, const char* paraV[], ICmdParserACK* ack) { do_scan_module(paramN, paraV, ack); }); |
|
|
deviceManager->regOnRegValChangeEvent([this](int32_t moduleid, int32_t event_id, int32_t eventval) { //
|
|
|
deviceManager->regOnRegValChangeEvent([this](int32_t moduleid, int32_t event_id, int32_t eventval) { //
|
|
|
ZLOGI(TAG, "onRegValChangeEvent(%d,%d,%d)", moduleid, event_id, eventval); |
|
|
ZLOGI(TAG, "onRegValChangeEvent(%d,%d,%d)", moduleid, event_id, eventval); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void MicroComputerModuleDeviceScriptCmderPaser::do_wait_for_module(int32_t paramN, const char* paraV[], ICmdParserACK* ack) { |
|
|
|
|
|
if (paramN < 1) { |
|
|
|
|
|
ack->ecode = err::kcmd_param_num_error; |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
if (paramN > 2) { |
|
|
|
|
|
ack->ecode = err::kcmd_param_num_error; |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int32_t moduleId = atoi(paraV[0]); |
|
|
|
|
|
int32_t timeout = 0; |
|
|
|
|
|
if (paramN == 2) { |
|
|
|
|
|
timeout = atoi(paraV[1]); |
|
|
|
|
|
} |
|
|
|
|
|
return do_wait_for_module(moduleId, timeout, ack); |
|
|
|
|
|
} |
|
|
|
|
|
void MicroComputerModuleDeviceScriptCmderPaser::do_wait_for_module(int32_t moduleid, int32_t timeout, ICmdParserACK* ack) { |
|
|
|
|
|
ThisThread thisThread; |
|
|
|
|
|
int32_t remaining = timeout; |
|
|
|
|
|
int32_t i = 0; |
|
|
|
|
|
while (!thisThread.getExitFlag()) { |
|
|
|
|
|
int32_t status = 0; |
|
|
|
|
|
int32_t ecode = m_deviceManager->module_get_status(moduleid, &status); |
|
|
|
|
|
if (ecode == 0 && status == 0) { |
|
|
|
|
|
ZLOGI(TAG, "wait for module %d ok", moduleid); |
|
|
|
|
|
ack->ecode = 0; |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief ³¬Ê±Í˳ö |
|
|
|
|
|
*/ |
|
|
|
|
|
if (timeout > 0) { |
|
|
|
|
|
remaining -= 30; |
|
|
|
|
|
if (remaining <= 0) { |
|
|
|
|
|
ack->ecode = err::kovertime; |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief |
|
|
|
|
|
*/ |
|
|
|
|
|
i++; |
|
|
|
|
|
if (i % 10 == 0) ZLOGI(TAG, "wait for module %d %d", moduleid, status); |
|
|
|
|
|
thisThread.sleep(30); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void MicroComputerModuleDeviceScriptCmderPaser::do_scan_module(int32_t paramN, const char* paraV[], ICmdParserACK* ack) { |
|
|
void MicroComputerModuleDeviceScriptCmderPaser::do_scan_module(int32_t paramN, const char* paraV[], ICmdParserACK* ack) { |
|
|