This commit is contained in:
parent
a648b4be37
commit
f9d2d35f86
@ -169,6 +169,7 @@ bool StarTrackerHandler::reloadJsonCfgFile() {
|
|||||||
auto strCfgPath = cfgPathGetter.getCfgPath();
|
auto strCfgPath = cfgPathGetter.getCfgPath();
|
||||||
if (strCfgPath.has_value()) {
|
if (strCfgPath.has_value()) {
|
||||||
jcfgPending = true;
|
jcfgPending = true;
|
||||||
|
JCFG_DONE = false;
|
||||||
jsonCfgTask = std::thread{setUpJsonCfgs, std::ref(jcfgs), strCfgPath.value()};
|
jsonCfgTask = std::thread{setUpJsonCfgs, std::ref(jcfgs), strCfgPath.value()};
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -182,6 +183,21 @@ ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueu
|
|||||||
ReturnValue_t result = returnvalue::OK;
|
ReturnValue_t result = returnvalue::OK;
|
||||||
|
|
||||||
switch (actionId) {
|
switch (actionId) {
|
||||||
|
case (startracker::RELOAD_JSON_CFG_FILE): {
|
||||||
|
if (jcfgPending) {
|
||||||
|
return HasActionsIF::IS_BUSY;
|
||||||
|
}
|
||||||
|
// It should be noted that this just reloads the JSON config structure in memory from the
|
||||||
|
// JSON file. The configuration still needs to be sent to the STR. The easiest way to achieve
|
||||||
|
// this is to simply reboot the device after a reload.
|
||||||
|
if(reloadJsonCfgFile()) {
|
||||||
|
// Could trigger this after the thread has finished, but the base class does not accept
|
||||||
|
// commands for buildCommandForCommand when it is OFF. I am sure there is way to solve
|
||||||
|
// this, but I don't care anymore. This is fine.
|
||||||
|
return HasActionsIF::EXECUTION_FINISHED;
|
||||||
|
};
|
||||||
|
return returnvalue::OK;
|
||||||
|
}
|
||||||
case (startracker::ADD_SECONDARY_TM_TO_NORMAL_MODE): {
|
case (startracker::ADD_SECONDARY_TM_TO_NORMAL_MODE): {
|
||||||
if (size < 4) {
|
if (size < 4) {
|
||||||
return HasActionsIF::INVALID_PARAMETERS;
|
return HasActionsIF::INVALID_PARAMETERS;
|
||||||
@ -195,16 +211,6 @@ ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueu
|
|||||||
addSecondaryTmForNormalMode(idToAdd);
|
addSecondaryTmForNormalMode(idToAdd);
|
||||||
return EXECUTION_FINISHED;
|
return EXECUTION_FINISHED;
|
||||||
}
|
}
|
||||||
case (startracker::RELOAD_JSON_CFG_FILE): {
|
|
||||||
if (jcfgPending) {
|
|
||||||
return HasActionsIF::IS_BUSY;
|
|
||||||
}
|
|
||||||
// It should be noted that this just reloads the JSON config structure in memory from the
|
|
||||||
// JSON file. The configuration still needs to be sent to the STR. The easiest way to achieve
|
|
||||||
// this is to simply reboot the device after a reload.
|
|
||||||
reloadJsonCfgFile();
|
|
||||||
return returnvalue::OK;
|
|
||||||
}
|
|
||||||
case (startracker::RESET_SECONDARY_TM_SET): {
|
case (startracker::RESET_SECONDARY_TM_SET): {
|
||||||
resetSecondaryTmSet();
|
resetSecondaryTmSet();
|
||||||
return EXECUTION_FINISHED;
|
return EXECUTION_FINISHED;
|
||||||
@ -355,20 +361,11 @@ void StarTrackerHandler::performOperationHook() {
|
|||||||
}
|
}
|
||||||
if (jcfgPending) {
|
if (jcfgPending) {
|
||||||
if (JCFG_DONE) {
|
if (JCFG_DONE) {
|
||||||
auto iter = deviceCommandMap.find(startracker::RELOAD_JSON_CFG_FILE);
|
|
||||||
if (iter != deviceCommandMap.end()) {
|
|
||||||
if (iter->second.sendReplyTo != MessageQueueIF::NO_QUEUE) {
|
|
||||||
actionHelper.finish(true, iter->second.sendReplyTo, startracker::RELOAD_JSON_CFG_FILE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
jsonCfgTask.join();
|
jsonCfgTask.join();
|
||||||
jcfgPending = false;
|
jcfgPending = false;
|
||||||
|
JCFG_DONE = false;
|
||||||
} else if (jcfgCountdown.hasTimedOut()) {
|
} else if (jcfgCountdown.hasTimedOut()) {
|
||||||
auto iter = deviceCommandMap.find(startracker::RELOAD_JSON_CFG_FILE);
|
JCFG_DONE = false;
|
||||||
if (iter->second.sendReplyTo != MessageQueueIF::NO_QUEUE) {
|
|
||||||
actionHelper.finish(false, iter->second.sendReplyTo, startracker::RELOAD_JSON_CFG_FILE,
|
|
||||||
returnvalue::FAILED);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -549,6 +546,7 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
|
|||||||
rawPacket = commandBuffer;
|
rawPacket = commandBuffer;
|
||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
case (startracker::REQ_TIME): {
|
case (startracker::REQ_TIME): {
|
||||||
prepareTimeRequest();
|
prepareTimeRequest();
|
||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
@ -762,6 +760,7 @@ void StarTrackerHandler::fillCommandAndReplyMap() {
|
|||||||
startracker::MAX_FRAME_SIZE * 2 + 2);
|
startracker::MAX_FRAME_SIZE * 2 + 2);
|
||||||
this->insertInCommandMap(startracker::UPLOAD_IMAGE);
|
this->insertInCommandMap(startracker::UPLOAD_IMAGE);
|
||||||
this->insertInCommandMap(startracker::DOWNLOAD_IMAGE);
|
this->insertInCommandMap(startracker::DOWNLOAD_IMAGE);
|
||||||
|
this->insertInCommandMap(startracker::RELOAD_JSON_CFG_FILE);
|
||||||
this->insertInCommandAndReplyMap(startracker::REQ_POWER, 3, &powerSet,
|
this->insertInCommandAndReplyMap(startracker::REQ_POWER, 3, &powerSet,
|
||||||
startracker::MAX_FRAME_SIZE * 2 + 2);
|
startracker::MAX_FRAME_SIZE * 2 + 2);
|
||||||
this->insertInCommandAndReplyMap(startracker::REQ_INTERFACE, 3, &interfaceSet,
|
this->insertInCommandAndReplyMap(startracker::REQ_INTERFACE, 3, &interfaceSet,
|
||||||
|
Loading…
Reference in New Issue
Block a user