v1.16.0 #323

Merged
muellerr merged 223 commits from develop into main 2022-11-18 14:23:24 +01:00
7 changed files with 37 additions and 29 deletions
Showing only changes of commit d3d29a3691 - Show all commits

View File

@ -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.

View File

@ -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)

View File

@ -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();
} }

View File

@ -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

View File

@ -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;
} }

View File

@ -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

@ -1 +1 @@
Subproject commit 3d2dee8c9c6265162579d363eeed6e55d03f36b9 Subproject commit a82665321e545fda6360a1a881558fe50e93f64b