v1.16.0 #323
@ -10,6 +10,13 @@ list yields a list of all related PRs for each release.
|
|||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
# [v1.14.1]
|
||||||
|
|
||||||
|
- Various bugfixes and regression fixes
|
||||||
|
- General file handling at program initialization now works properly again
|
||||||
|
- Scratch buffer preferred SD card handling works again
|
||||||
|
- Use scoped locks in TCS controller to avoid deadlocks
|
||||||
|
|
||||||
# [v1.14.0]
|
# [v1.14.0]
|
||||||
|
|
||||||
- Provide full SW update capability for the OBSW.
|
- Provide full SW update capability for the OBSW.
|
||||||
|
@ -11,7 +11,7 @@ cmake_minimum_required(VERSION 3.13)
|
|||||||
|
|
||||||
set(OBSW_VERSION_MAJOR_IF_GIT_FAILS 1)
|
set(OBSW_VERSION_MAJOR_IF_GIT_FAILS 1)
|
||||||
set(OBSW_VERSION_MINOR_IF_GIT_FAILS 14)
|
set(OBSW_VERSION_MINOR_IF_GIT_FAILS 14)
|
||||||
set(OBSW_VERSION_REVISION_IF_GIT_FAILS 0)
|
set(OBSW_VERSION_REVISION_IF_GIT_FAILS 1)
|
||||||
|
|
||||||
# set(CMAKE_VERBOSE TRUE)
|
# set(CMAKE_VERBOSE TRUE)
|
||||||
|
|
||||||
|
@ -1227,10 +1227,8 @@ void CoreController::performWatchdogControlOperation() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CoreController::performMountedSdCardOperations() {
|
void CoreController::performMountedSdCardOperations() {
|
||||||
auto mountedSdCardOp = [&](bool &mntSwitch, sd::SdCard sdCard, std::string mntPoint) {
|
auto mountedSdCardOp = [&](sd::SdCard sdCard, std::string mntPoint) {
|
||||||
if (mntSwitch) {
|
if (not performOneShotSdCardOpsSwitch) {
|
||||||
bool sdCardMounted = sdcMan->isSdCardUsable(sdCard);
|
|
||||||
if (sdCardMounted and not performOneShotSdCardOpsSwitch) {
|
|
||||||
std::ostringstream path;
|
std::ostringstream path;
|
||||||
path << mntPoint << "/" << CONF_FOLDER;
|
path << mntPoint << "/" << CONF_FOLDER;
|
||||||
if (not std::filesystem::exists(path.str())) {
|
if (not std::filesystem::exists(path.str())) {
|
||||||
@ -1239,17 +1237,19 @@ void CoreController::performMountedSdCardOperations() {
|
|||||||
initVersionFile();
|
initVersionFile();
|
||||||
initClockFromTimeFile();
|
initClockFromTimeFile();
|
||||||
performRebootFileHandling(false);
|
performRebootFileHandling(false);
|
||||||
performOneShotSdCardOpsSwitch = true;
|
|
||||||
}
|
|
||||||
mntSwitch = false;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (sdInfo.active == sd::SdCard::SLOT_1) {
|
bool clearOneShotFlag = false;
|
||||||
mountedSdCardOp(sdInfo.mountSwitch.second, sd::SdCard::SLOT_1, config::SD_1_MOUNT_POINT);
|
if (sdInfo.active == sd::SdCard::SLOT_0 and sdcMan->isSdCardUsable(sd::SdCard::SLOT_0)) {
|
||||||
mountedSdCardOp(sdInfo.mountSwitch.first, sd::SdCard::SLOT_0, config::SD_0_MOUNT_POINT);
|
mountedSdCardOp(sd::SdCard::SLOT_0, config::SD_0_MOUNT_POINT);
|
||||||
} else {
|
clearOneShotFlag = true;
|
||||||
mountedSdCardOp(sdInfo.mountSwitch.first, sd::SdCard::SLOT_0, config::SD_0_MOUNT_POINT);
|
}
|
||||||
mountedSdCardOp(sdInfo.mountSwitch.second, sd::SdCard::SLOT_1, config::SD_1_MOUNT_POINT);
|
if (sdInfo.active == sd::SdCard::SLOT_1 and sdcMan->isSdCardUsable(sd::SdCard::SLOT_1)) {
|
||||||
|
mountedSdCardOp(sd::SdCard::SLOT_1, config::SD_1_MOUNT_POINT);
|
||||||
|
clearOneShotFlag = true;
|
||||||
|
}
|
||||||
|
if (clearOneShotFlag) {
|
||||||
|
performOneShotSdCardOpsSwitch = true;
|
||||||
}
|
}
|
||||||
timeFileHandler();
|
timeFileHandler();
|
||||||
}
|
}
|
||||||
|
@ -205,7 +205,7 @@ class CoreController : public ExtendedControllerBase {
|
|||||||
|
|
||||||
RebootFile rebootFile = {};
|
RebootFile rebootFile = {};
|
||||||
std::string currMntPrefix;
|
std::string currMntPrefix;
|
||||||
bool performOneShotSdCardOpsSwitch = true;
|
bool performOneShotSdCardOpsSwitch = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Index 0: Chip 0 Copy 0
|
* Index 0: Chip 0 Copy 0
|
||||||
|
@ -27,8 +27,7 @@ SdCardManager::SdCardManager() : SystemObject(objects::SDC_MANAGER), cmdExecutor
|
|||||||
}
|
}
|
||||||
uint8_t prefSdRaw = 0;
|
uint8_t prefSdRaw = 0;
|
||||||
result = scratch::readNumber(scratch::PREFERED_SDC_KEY, prefSdRaw);
|
result = scratch::readNumber(scratch::PREFERED_SDC_KEY, prefSdRaw);
|
||||||
result = mutex->unlockMutex();
|
if (mutex->unlockMutex() != returnvalue::OK) {
|
||||||
if (result != returnvalue::OK) {
|
|
||||||
sif::error << "SdCardManager::SdCardManager: Mutex unlock failed" << std::endl;
|
sif::error << "SdCardManager::SdCardManager: Mutex unlock failed" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -238,7 +238,8 @@ void ThermalController::copySensors() {
|
|||||||
PoolReadGuard pg0(&max31865Set0);
|
PoolReadGuard pg0(&max31865Set0);
|
||||||
if (pg0.getReadResult() == returnvalue::OK) {
|
if (pg0.getReadResult() == returnvalue::OK) {
|
||||||
sensorTemperatures.sensor_ploc_heatspreader.value = max31865Set0.temperatureCelcius.value;
|
sensorTemperatures.sensor_ploc_heatspreader.value = max31865Set0.temperatureCelcius.value;
|
||||||
sensorTemperatures.sensor_ploc_heatspreader.setValid(max31865Set0.temperatureCelcius.isValid());
|
sensorTemperatures.sensor_ploc_heatspreader.setValid(
|
||||||
|
max31865Set0.temperatureCelcius.isValid());
|
||||||
if (not sensorTemperatures.sensor_ploc_heatspreader.isValid()) {
|
if (not sensorTemperatures.sensor_ploc_heatspreader.isValid()) {
|
||||||
sensorTemperatures.sensor_ploc_heatspreader.value = INVALID_TEMPERATURE;
|
sensorTemperatures.sensor_ploc_heatspreader.value = INVALID_TEMPERATURE;
|
||||||
}
|
}
|
||||||
@ -249,7 +250,8 @@ void ThermalController::copySensors() {
|
|||||||
PoolReadGuard pg1(&max31865Set1);
|
PoolReadGuard pg1(&max31865Set1);
|
||||||
if (pg1.getReadResult() == returnvalue::OK) {
|
if (pg1.getReadResult() == returnvalue::OK) {
|
||||||
sensorTemperatures.sensor_ploc_missionboard.value = max31865Set1.temperatureCelcius.value;
|
sensorTemperatures.sensor_ploc_missionboard.value = max31865Set1.temperatureCelcius.value;
|
||||||
sensorTemperatures.sensor_ploc_missionboard.setValid(max31865Set1.temperatureCelcius.isValid());
|
sensorTemperatures.sensor_ploc_missionboard.setValid(
|
||||||
|
max31865Set1.temperatureCelcius.isValid());
|
||||||
if (not sensorTemperatures.sensor_ploc_missionboard.isValid()) {
|
if (not sensorTemperatures.sensor_ploc_missionboard.isValid()) {
|
||||||
sensorTemperatures.sensor_ploc_missionboard.value = INVALID_TEMPERATURE;
|
sensorTemperatures.sensor_ploc_missionboard.value = INVALID_TEMPERATURE;
|
||||||
}
|
}
|
||||||
@ -271,7 +273,8 @@ void ThermalController::copySensors() {
|
|||||||
PoolReadGuard pg3(&max31865Set3);
|
PoolReadGuard pg3(&max31865Set3);
|
||||||
if (pg3.getReadResult() == returnvalue::OK) {
|
if (pg3.getReadResult() == returnvalue::OK) {
|
||||||
sensorTemperatures.sensor_dac_heatspreader.value = max31865Set3.temperatureCelcius.value;
|
sensorTemperatures.sensor_dac_heatspreader.value = max31865Set3.temperatureCelcius.value;
|
||||||
sensorTemperatures.sensor_dac_heatspreader.setValid(max31865Set3.temperatureCelcius.isValid());
|
sensorTemperatures.sensor_dac_heatspreader.setValid(
|
||||||
|
max31865Set3.temperatureCelcius.isValid());
|
||||||
if (not sensorTemperatures.sensor_dac_heatspreader.isValid()) {
|
if (not sensorTemperatures.sensor_dac_heatspreader.isValid()) {
|
||||||
sensorTemperatures.sensor_dac_heatspreader.value = INVALID_TEMPERATURE;
|
sensorTemperatures.sensor_dac_heatspreader.value = INVALID_TEMPERATURE;
|
||||||
}
|
}
|
||||||
@ -389,7 +392,6 @@ void ThermalController::copySensors() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
PoolReadGuard pg14(&max31865Set14);
|
PoolReadGuard pg14(&max31865Set14);
|
||||||
if (pg14.getReadResult() == returnvalue::OK) {
|
if (pg14.getReadResult() == returnvalue::OK) {
|
||||||
|
2
tmtc
2
tmtc
@ -1 +1 @@
|
|||||||
Subproject commit 3d2dee8c9c6265162579d363eeed6e55d03f36b9
|
Subproject commit a82665321e545fda6360a1a881558fe50e93f64b
|
Loading…
Reference in New Issue
Block a user