Variable STR CFG path #824
@ -5,6 +5,8 @@
|
|||||||
#include <mission/acs/str/strHelpers.h>
|
#include <mission/acs/str/strHelpers.h>
|
||||||
#include <mission/acs/str/strJsonCommands.h>
|
#include <mission/acs/str/strJsonCommands.h>
|
||||||
|
|
||||||
|
#include "fsfw/ipc/MessageQueueIF.h"
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include <sagitta/client/actionreq.h>
|
#include <sagitta/client/actionreq.h>
|
||||||
#include <sagitta/client/client_tm_structs.h>
|
#include <sagitta/client/client_tm_structs.h>
|
||||||
@ -183,21 +185,6 @@ 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;
|
||||||
@ -361,11 +348,21 @@ void StarTrackerHandler::performOperationHook() {
|
|||||||
}
|
}
|
||||||
if (jcfgPending) {
|
if (jcfgPending) {
|
||||||
if (JCFG_DONE) {
|
if (JCFG_DONE) {
|
||||||
|
sif::debug << "jcfg fucking done" << std::endl;
|
||||||
jsonCfgTask.join();
|
jsonCfgTask.join();
|
||||||
jcfgPending = false;
|
jcfgPending = false;
|
||||||
JCFG_DONE = false;
|
JCFG_DONE = false;
|
||||||
|
auto iter = deviceCommandMap.find(startracker::RELOAD_JSON_CFG_FILE);
|
||||||
|
if (iter != deviceCommandMap.end() and iter->second.sendReplyTo != MessageQueueIF::NO_QUEUE) {
|
||||||
|
sif::debug << "jcfg sending finished" << std::endl;
|
||||||
|
actionHelper.finish(true, iter->second.sendReplyTo, startracker::RELOAD_JSON_CFG_FILE);
|
||||||
|
}
|
||||||
} else if (jcfgCountdown.hasTimedOut()) {
|
} else if (jcfgCountdown.hasTimedOut()) {
|
||||||
JCFG_DONE = false;
|
JCFG_DONE = false;
|
||||||
|
auto iter = deviceCommandMap.find(startracker::RELOAD_JSON_CFG_FILE);
|
||||||
|
if (iter != deviceCommandMap.end() and iter->second.sendReplyTo != MessageQueueIF::NO_QUEUE) {
|
||||||
|
actionHelper.finish(false, iter->second.sendReplyTo, startracker::RELOAD_JSON_CFG_FILE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -532,6 +529,16 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
|
|||||||
preparePingRequest();
|
preparePingRequest();
|
||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
}
|
}
|
||||||
|
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::SET_TIME_FROM_SYS_TIME): {
|
case (startracker::SET_TIME_FROM_SYS_TIME): {
|
||||||
SetTimeActionRequest setTimeRequest{};
|
SetTimeActionRequest setTimeRequest{};
|
||||||
timeval tv;
|
timeval tv;
|
||||||
@ -2846,3 +2853,5 @@ ReturnValue_t StarTrackerHandler::checkCommand(ActionId_t actionId) {
|
|||||||
}
|
}
|
||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReturnValue_t StarTrackerHandler::acceptExternalDeviceCommands() { return returnvalue::OK; }
|
||||||
|
@ -27,7 +27,9 @@ extern "C" {
|
|||||||
* @details Datasheet: https://eive-cloud.irs.uni-stuttgart.de/index.php/apps/files/?dir=/EIVE_IRS/
|
* @details Datasheet: https://eive-cloud.irs.uni-stuttgart.de/index.php/apps/files/?dir=/EIVE_IRS/
|
||||||
* Arbeitsdaten/08_Used%20Components/ArcSec_KULeuven_Startracker/
|
* Arbeitsdaten/08_Used%20Components/ArcSec_KULeuven_Startracker/
|
||||||
* Sagitta%201.0%20Datapack&fileid=659181
|
* Sagitta%201.0%20Datapack&fileid=659181
|
||||||
* @author J. Meier
|
* @note The STR code is a chaotic inconsistent mess and should be re-written with a simpler base
|
||||||
|
* class. DO NOT USE THIS AS REFERENCE. Stay away from it.
|
||||||
|
* @author J. Meier, R. Mueller
|
||||||
*/
|
*/
|
||||||
class StarTrackerHandler : public DeviceHandlerBase {
|
class StarTrackerHandler : public DeviceHandlerBase {
|
||||||
public:
|
public:
|
||||||
@ -546,6 +548,7 @@ class StarTrackerHandler : public DeviceHandlerBase {
|
|||||||
void bootFirmware(Mode_t toMode);
|
void bootFirmware(Mode_t toMode);
|
||||||
void bootBootloader();
|
void bootBootloader();
|
||||||
bool reloadJsonCfgFile();
|
bool reloadJsonCfgFile();
|
||||||
|
ReturnValue_t acceptExternalDeviceCommands() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* MISSION_DEVICES_STARTRACKERHANDLER_H_ */
|
#endif /* MISSION_DEVICES_STARTRACKERHANDLER_H_ */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user