Variable STR CFG path #824
18
CHANGELOG.md
18
CHANGELOG.md
@ -16,6 +16,18 @@ will consitute of a breaking change warranting a new major release:
|
|||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
## Fixed
|
||||||
|
|
||||||
|
- STR config path was previously hardcoded to `/mnt/sd0/startracker/flight-config.json`.
|
||||||
|
A new abstraction was introduces which now uses the active SD card to build the correct
|
||||||
|
config path when initializing the star tracker.
|
||||||
|
|
||||||
|
## Added
|
||||||
|
|
||||||
|
- Introduced a new `RELOAD_JSON_CFG_FILE` command for the STR to reload the JSON configuration
|
||||||
|
data based on the current output of the config file path getter function. A reboot of the
|
||||||
|
device is still necessary to load the configuration to the STR.
|
||||||
|
|
||||||
# [v7.3.0] 2023-11-07
|
# [v7.3.0] 2023-11-07
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
@ -696,7 +708,7 @@ This is the version which will fly on the satellite for the initial launch phase
|
|||||||
This gives other tasks some time to register the SD cards being unusable, and therefore provides
|
This gives other tasks some time to register the SD cards being unusable, and therefore provides
|
||||||
a way for them to perform any re-initialization tasks necessary after SD card switches.
|
a way for them to perform any re-initialization tasks necessary after SD card switches.
|
||||||
- TCS controller now only has an OFF mode and an ON mode
|
- TCS controller now only has an OFF mode and an ON mode
|
||||||
- The TCS controller pauses operations related to the TCS board assembly (reading sensors and
|
- The TCS controller pauses operations related to the TCS board assembly (reading sensors and
|
||||||
the primary control loop) while a TCS board recovery is on-going.
|
the primary control loop) while a TCS board recovery is on-going.
|
||||||
- Allow specifying custom OBSW update filename. This allowed keeping a cleaner file structure
|
- Allow specifying custom OBSW update filename. This allowed keeping a cleaner file structure
|
||||||
where each update has a name including the version
|
where each update has a name including the version
|
||||||
@ -1761,8 +1773,8 @@ Syrlinks PR: PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/353
|
|||||||
- Syrlinks Handler: Read RX frequency shift as 24 bit signed number now. Also include
|
- Syrlinks Handler: Read RX frequency shift as 24 bit signed number now. Also include
|
||||||
validity handling for datasets.
|
validity handling for datasets.
|
||||||
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/350
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/350
|
||||||
- `GyroADIS1650XHandler`: Changed calculation of angular rate to be sensitivity based instead of
|
- `GyroADIS1650XHandler`: Changed calculation of angular rate to be sensitivity based instead of
|
||||||
max. range based, as previous fix still left an margin of error between ADIS16505 sensors
|
max. range based, as previous fix still left an margin of error between ADIS16505 sensors
|
||||||
and L3GD20 sensors.
|
and L3GD20 sensors.
|
||||||
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/346
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/346
|
||||||
|
|
||||||
|
@ -139,14 +139,7 @@ ReturnValue_t StarTrackerHandler::initialize() {
|
|||||||
|
|
||||||
// Spin up a thread to do the JSON initialization, takes 200-250 ms which would
|
// Spin up a thread to do the JSON initialization, takes 200-250 ms which would
|
||||||
// delay whole satellite boot process.
|
// delay whole satellite boot process.
|
||||||
jcfgCountdown.resetTimer();
|
reloadJsonCfgFile();
|
||||||
auto strCfgPath = cfgPathGetter.getCfgPath();
|
|
||||||
if (strCfgPath.has_value()) {
|
|
||||||
jsonCfgTask = std::thread{setUpJsonCfgs, std::ref(jcfgs), strCfgPath.value()};
|
|
||||||
} else {
|
|
||||||
// Simplified FDIR: Just continue as usual..
|
|
||||||
JCFG_DONE = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
EventManagerIF* manager = ObjectManager::instance()->get<EventManagerIF>(objects::EVENT_MANAGER);
|
EventManagerIF* manager = ObjectManager::instance()->get<EventManagerIF>(objects::EVENT_MANAGER);
|
||||||
if (manager == nullptr) {
|
if (manager == nullptr) {
|
||||||
@ -175,6 +168,18 @@ ReturnValue_t StarTrackerHandler::initialize() {
|
|||||||
return returnvalue::OK;
|
return returnvalue::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool StarTrackerHandler::reloadJsonCfgFile() {
|
||||||
|
jcfgCountdown.resetTimer();
|
||||||
|
auto strCfgPath = cfgPathGetter.getCfgPath();
|
||||||
|
if (strCfgPath.has_value()) {
|
||||||
|
jsonCfgTask = std::thread{setUpJsonCfgs, std::ref(jcfgs), strCfgPath.value()};
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Simplified FDIR: Just continue as usual..
|
||||||
|
JCFG_DONE = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
||||||
const uint8_t* data, size_t size) {
|
const uint8_t* data, size_t size) {
|
||||||
ReturnValue_t result = returnvalue::OK;
|
ReturnValue_t result = returnvalue::OK;
|
||||||
@ -193,6 +198,15 @@ ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueu
|
|||||||
addSecondaryTmForNormalMode(idToAdd);
|
addSecondaryTmForNormalMode(idToAdd);
|
||||||
return EXECUTION_FINISHED;
|
return EXECUTION_FINISHED;
|
||||||
}
|
}
|
||||||
|
case (startracker::RELOAD_JSON_CFG_FILE): {
|
||||||
|
// 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()) {
|
||||||
|
return HasActionsIF::EXECUTION_FINISHED;
|
||||||
|
}
|
||||||
|
return returnvalue::FAILED;
|
||||||
|
}
|
||||||
case (startracker::RESET_SECONDARY_TM_SET): {
|
case (startracker::RESET_SECONDARY_TM_SET): {
|
||||||
resetSecondaryTmSet();
|
resetSecondaryTmSet();
|
||||||
return EXECUTION_FINISHED;
|
return EXECUTION_FINISHED;
|
||||||
|
@ -544,6 +544,7 @@ class StarTrackerHandler : public DeviceHandlerBase {
|
|||||||
void doNormalTransition(Mode_t modeFrom, Submode_t subModeFrom);
|
void doNormalTransition(Mode_t modeFrom, Submode_t subModeFrom);
|
||||||
void bootFirmware(Mode_t toMode);
|
void bootFirmware(Mode_t toMode);
|
||||||
void bootBootloader();
|
void bootBootloader();
|
||||||
|
bool reloadJsonCfgFile();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* MISSION_DEVICES_STARTRACKERHANDLER_H_ */
|
#endif /* MISSION_DEVICES_STARTRACKERHANDLER_H_ */
|
||||||
|
@ -387,6 +387,7 @@ static constexpr DeviceCommandId_t REQ_CENTROIDS = 94;
|
|||||||
static constexpr DeviceCommandId_t ADD_SECONDARY_TM_TO_NORMAL_MODE = 95;
|
static constexpr DeviceCommandId_t ADD_SECONDARY_TM_TO_NORMAL_MODE = 95;
|
||||||
static constexpr DeviceCommandId_t RESET_SECONDARY_TM_SET = 96;
|
static constexpr DeviceCommandId_t RESET_SECONDARY_TM_SET = 96;
|
||||||
static constexpr DeviceCommandId_t READ_SECONDARY_TM_SET = 97;
|
static constexpr DeviceCommandId_t READ_SECONDARY_TM_SET = 97;
|
||||||
|
static constexpr DeviceCommandId_t RELOAD_JSON_CFG_FILE = 100;
|
||||||
static const DeviceCommandId_t NONE = 0xFFFFFFFF;
|
static const DeviceCommandId_t NONE = 0xFFFFFFFF;
|
||||||
|
|
||||||
static const uint32_t VERSION_SET_ID = REQ_VERSION;
|
static const uint32_t VERSION_SET_ID = REQ_VERSION;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user