Compare commits
46 Commits
Author | SHA1 | Date | |
---|---|---|---|
c226d971c2 | |||
1bda30773f
|
|||
db74d0490b | |||
c209c71d5f
|
|||
2e83627139 | |||
3cb9cd124d
|
|||
fc23438e5d
|
|||
aa4bf5f293 | |||
7c6cd12f14 | |||
e26338e4cb
|
|||
55dcb3595b
|
|||
0337104173
|
|||
5a1b2470f0
|
|||
c51fbb9074
|
|||
58961efb3f
|
|||
f9f6ac27e8
|
|||
1b295139a0 | |||
cfbd6d3b1e | |||
63b6db258c | |||
c709bd0881 | |||
a81eae7726 | |||
a39da169d8 | |||
4f335ea270 | |||
90b4a4d8c0 | |||
3acdb54fab | |||
6048ffe656 | |||
5060de1f6d | |||
26bf178b2a | |||
b9167c7e22 | |||
b97afc9f1c | |||
a1d360502f | |||
ddbf4a5ff0 | |||
6febf6242a | |||
da71aea101 | |||
df397f6dee
|
|||
e148e95471
|
|||
b11461c2f7 | |||
1748d18852
|
|||
05fbff2e6d
|
|||
a023fe2c7d | |||
2a4d86de54 | |||
8062c5edad | |||
0788a3d551 | |||
b2b6e2e797 | |||
5e79293d38 | |||
196823b2e0 |
29
CHANGELOG.md
29
CHANGELOG.md
@ -16,6 +16,33 @@ will consitute of a breaking change warranting a new major release:
|
||||
|
||||
# [unreleased]
|
||||
|
||||
# [v6.5.1] 2023-09-12
|
||||
|
||||
- Bumped `eive-tmtc` to v5.5.0.
|
||||
|
||||
# [v6.5.0] 2023-09-12
|
||||
|
||||
## Changed
|
||||
|
||||
- Relaxed SUS FDIR. The devices have shown to be glitchy in orbit, but still seem to deliver
|
||||
sensible raw values most of the time. Some further testing is necessary, but some changes in the
|
||||
code should cause the SUS devices to remain healthy for now.
|
||||
- The primary and the secondary temperature sensors for the PLOC mission boards are exchanged.
|
||||
- ACS parameters for the SUSMGM (FLP) safe mode have been adjusted. This safe mode is now the
|
||||
default one.
|
||||
- MGM3100 Startup Configuration: Ignore bit 1 of the CMM reply, which is sometimes set to
|
||||
1 in the reply for some reason.
|
||||
|
||||
# [v6.4.1] 2023-08-21
|
||||
|
||||
## Fixed
|
||||
|
||||
- `PDEC_CONFIG_CORRUPTED` event now actually contains the readback instead of the expected
|
||||
config
|
||||
- Magnetic field vector was not calculated if only MGM4 was available, but still written to
|
||||
the dataset. This would result in a NaN vector. Allowance for usage of MGM4 is now checked
|
||||
before entering calculation.
|
||||
|
||||
# [v6.4.0] 2023-08-16
|
||||
|
||||
- `eive-tmtc`: v5.4.3
|
||||
@ -24,6 +51,8 @@ will consitute of a breaking change warranting a new major release:
|
||||
|
||||
- The handling function of the GPS data is only called once per GPS read. This should remove
|
||||
the fake fix-has-changed events.
|
||||
- Fix for PLOC SUPV HK set parsing.
|
||||
- The timestamp for the `POSSIBLE_FILE_CORRUPTION` event will be generated properly now.
|
||||
|
||||
## Changed
|
||||
|
||||
|
@ -10,8 +10,8 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
set(OBSW_VERSION_MAJOR 6)
|
||||
set(OBSW_VERSION_MINOR 4)
|
||||
set(OBSW_VERSION_REVISION 0)
|
||||
set(OBSW_VERSION_MINOR 5)
|
||||
set(OBSW_VERSION_REVISION 1)
|
||||
|
||||
# set(CMAKE_VERBOSE TRUE)
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* @brief Auto-generated event translation file. Contains 304 translations.
|
||||
* @brief Auto-generated event translation file. Contains 306 translations.
|
||||
* @details
|
||||
* Generated on: 2023-08-15 13:27:11
|
||||
* Generated on: 2023-09-12 10:05:17
|
||||
*/
|
||||
#include "translateEvents.h"
|
||||
|
||||
@ -309,6 +309,8 @@ const char *DUMP_NOK_CANCELLED_STRING = "DUMP_NOK_CANCELLED";
|
||||
const char *DUMP_MISC_CANCELLED_STRING = "DUMP_MISC_CANCELLED";
|
||||
const char *DUMP_HK_CANCELLED_STRING = "DUMP_HK_CANCELLED";
|
||||
const char *DUMP_CFDP_CANCELLED_STRING = "DUMP_CFDP_CANCELLED";
|
||||
const char *TEMPERATURE_ALL_ONES_START_STRING = "TEMPERATURE_ALL_ONES_START";
|
||||
const char *TEMPERATURE_ALL_ONES_RECOVERY_STRING = "TEMPERATURE_ALL_ONES_RECOVERY";
|
||||
|
||||
const char *translateEvents(Event event) {
|
||||
switch ((event & 0xFFFF)) {
|
||||
@ -920,6 +922,10 @@ const char *translateEvents(Event event) {
|
||||
return DUMP_HK_CANCELLED_STRING;
|
||||
case (14314):
|
||||
return DUMP_CFDP_CANCELLED_STRING;
|
||||
case (14500):
|
||||
return TEMPERATURE_ALL_ONES_START_STRING;
|
||||
case (14501):
|
||||
return TEMPERATURE_ALL_ONES_RECOVERY_STRING;
|
||||
default:
|
||||
return "UNKNOWN_EVENT";
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @brief Auto-generated object translation file.
|
||||
* @details
|
||||
* Contains 171 translations.
|
||||
* Generated on: 2023-08-15 13:27:11
|
||||
* Generated on: 2023-09-12 10:05:17
|
||||
*/
|
||||
#include "translateObjects.h"
|
||||
|
||||
|
@ -111,6 +111,7 @@ void ObjectFactory::produce(void* args) {
|
||||
new CoreController(objects::CORE_CONTROLLER, enableHkSets);
|
||||
|
||||
auto* stackHandler = new Stack5VHandler(*pwrSwitcher);
|
||||
static_cast<void>(stackHandler);
|
||||
|
||||
// Initialize chip select to avoid SPI bus issues.
|
||||
createRadSensorChipSelect(gpioComIF);
|
||||
|
@ -40,6 +40,7 @@ enum : uint8_t {
|
||||
COM_SUBSYSTEM = 142,
|
||||
PERSISTENT_TM_STORE = 143,
|
||||
SYRLINKS_COM = 144,
|
||||
SUS_HANDLER = 145,
|
||||
COMMON_SUBSYSTEM_ID_END
|
||||
|
||||
};
|
||||
|
2
fsfw
2
fsfw
Submodule fsfw updated: 796c7a9e37...d246ce34d0
@ -303,3 +303,5 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
|
||||
14312;0x37e8;DUMP_MISC_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
|
||||
14313;0x37e9;DUMP_HK_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
|
||||
14314;0x37ea;DUMP_CFDP_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
|
||||
14500;0x38a4;TEMPERATURE_ALL_ONES_START;MEDIUM;Detected invalid values, starting invalid message counting;mission/acs/SusHandler.h
|
||||
14501;0x38a5;TEMPERATURE_ALL_ONES_RECOVERY;INFO;Detected valid values again, resetting invalid message counter. P1: Invalid message counter.;mission/acs/SusHandler.h
|
||||
|
|
@ -60,3 +60,4 @@
|
||||
142;COM_SUBSYSTEM
|
||||
143;PERSISTENT_TM_STORE
|
||||
144;SYRLINKS_COM
|
||||
145;SUS_HANDLER
|
||||
|
|
@ -303,3 +303,5 @@ Event ID (dec); Event ID (hex); Name; Severity; Description; File Path
|
||||
14312;0x37e8;DUMP_MISC_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
|
||||
14313;0x37e9;DUMP_HK_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
|
||||
14314;0x37ea;DUMP_CFDP_CANCELLED;LOW;P1: Number of dumped packets. P2: Total dumped bytes.;mission/persistentTmStoreDefs.h
|
||||
14500;0x38a4;TEMPERATURE_ALL_ONES_START;MEDIUM;Detected invalid values, starting invalid message counting;mission/acs/SusHandler.h
|
||||
14501;0x38a5;TEMPERATURE_ALL_ONES_RECOVERY;INFO;Detected valid values again, resetting invalid message counter. P1: Invalid message counter.;mission/acs/SusHandler.h
|
||||
|
|
@ -60,3 +60,4 @@
|
||||
142;COM_SUBSYSTEM
|
||||
143;PERSISTENT_TM_STORE
|
||||
144;SYRLINKS_COM
|
||||
145;SUS_HANDLER
|
||||
|
|
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* @brief Auto-generated event translation file. Contains 304 translations.
|
||||
* @brief Auto-generated event translation file. Contains 306 translations.
|
||||
* @details
|
||||
* Generated on: 2023-08-15 13:27:11
|
||||
* Generated on: 2023-09-12 10:05:17
|
||||
*/
|
||||
#include "translateEvents.h"
|
||||
|
||||
@ -309,6 +309,8 @@ const char *DUMP_NOK_CANCELLED_STRING = "DUMP_NOK_CANCELLED";
|
||||
const char *DUMP_MISC_CANCELLED_STRING = "DUMP_MISC_CANCELLED";
|
||||
const char *DUMP_HK_CANCELLED_STRING = "DUMP_HK_CANCELLED";
|
||||
const char *DUMP_CFDP_CANCELLED_STRING = "DUMP_CFDP_CANCELLED";
|
||||
const char *TEMPERATURE_ALL_ONES_START_STRING = "TEMPERATURE_ALL_ONES_START";
|
||||
const char *TEMPERATURE_ALL_ONES_RECOVERY_STRING = "TEMPERATURE_ALL_ONES_RECOVERY";
|
||||
|
||||
const char *translateEvents(Event event) {
|
||||
switch ((event & 0xFFFF)) {
|
||||
@ -920,6 +922,10 @@ const char *translateEvents(Event event) {
|
||||
return DUMP_HK_CANCELLED_STRING;
|
||||
case (14314):
|
||||
return DUMP_CFDP_CANCELLED_STRING;
|
||||
case (14500):
|
||||
return TEMPERATURE_ALL_ONES_START_STRING;
|
||||
case (14501):
|
||||
return TEMPERATURE_ALL_ONES_RECOVERY_STRING;
|
||||
default:
|
||||
return "UNKNOWN_EVENT";
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @brief Auto-generated object translation file.
|
||||
* @details
|
||||
* Contains 175 translations.
|
||||
* Generated on: 2023-08-15 13:27:11
|
||||
* Generated on: 2023-09-12 10:05:17
|
||||
*/
|
||||
#include "translateObjects.h"
|
||||
|
||||
|
@ -767,6 +767,9 @@ void AcsBoardPolling::mgmRm3100Handler(MgmRm3100& mgm) {
|
||||
mgm.replyResult = result;
|
||||
return;
|
||||
}
|
||||
// For some reason, bit 1 is sometimes set on the reply, even if it is not set for the
|
||||
// command.. Ignore it for now by clearing it.
|
||||
rawReply[1] &= ~(1 << 1);
|
||||
if (rawReply[1] != mgmRm3100::CMM_VALUE) {
|
||||
sif::error << "AcsBoardPolling: MGM RM3100 read back CMM invalid" << std::endl;
|
||||
mgm.replyResult = result;
|
||||
|
@ -170,18 +170,12 @@ ReturnValue_t SusPolling::handleSusPolling() {
|
||||
}
|
||||
MutexGuard mg(ipcLock);
|
||||
susDevs[idx].ownReply.tempRaw = ((rawReply[0] & 0x0f) << 8) | rawReply[1];
|
||||
// Reply is all ones. Sensor is probably off or faulty when
|
||||
// it should not be.
|
||||
if (susDevs[idx].ownReply.tempRaw == 0x0fff) {
|
||||
susDevs[idx].replyResult = returnvalue::FAILED;
|
||||
} else {
|
||||
susDevs[idx].replyResult = returnvalue::OK;
|
||||
for (unsigned chIdx = 0; chIdx < 6; chIdx++) {
|
||||
susDevs[idx].ownReply.channelsRaw[chIdx] =
|
||||
(rawReply[chIdx * 2 + 2] << 8) | rawReply[chIdx * 2 + 3];
|
||||
}
|
||||
susDevs[idx].ownReply.dataWasSet = true;
|
||||
susDevs[idx].replyResult = returnvalue::OK;
|
||||
for (unsigned chIdx = 0; chIdx < 6; chIdx++) {
|
||||
susDevs[idx].ownReply.channelsRaw[chIdx] =
|
||||
(rawReply[chIdx * 2 + 2] << 8) | rawReply[chIdx * 2 + 3];
|
||||
}
|
||||
susDevs[idx].ownReply.dataWasSet = true;
|
||||
}
|
||||
}
|
||||
return OK;
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
#include <array>
|
||||
|
||||
//#include "lwgps/lwgps.h"
|
||||
// #include "lwgps/lwgps.h"
|
||||
#include "test/TestTask.h"
|
||||
|
||||
class ScexUartReader;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* @brief Auto-generated event translation file. Contains 304 translations.
|
||||
* @brief Auto-generated event translation file. Contains 306 translations.
|
||||
* @details
|
||||
* Generated on: 2023-08-15 13:27:11
|
||||
* Generated on: 2023-09-12 10:05:17
|
||||
*/
|
||||
#include "translateEvents.h"
|
||||
|
||||
@ -309,6 +309,8 @@ const char *DUMP_NOK_CANCELLED_STRING = "DUMP_NOK_CANCELLED";
|
||||
const char *DUMP_MISC_CANCELLED_STRING = "DUMP_MISC_CANCELLED";
|
||||
const char *DUMP_HK_CANCELLED_STRING = "DUMP_HK_CANCELLED";
|
||||
const char *DUMP_CFDP_CANCELLED_STRING = "DUMP_CFDP_CANCELLED";
|
||||
const char *TEMPERATURE_ALL_ONES_START_STRING = "TEMPERATURE_ALL_ONES_START";
|
||||
const char *TEMPERATURE_ALL_ONES_RECOVERY_STRING = "TEMPERATURE_ALL_ONES_RECOVERY";
|
||||
|
||||
const char *translateEvents(Event event) {
|
||||
switch ((event & 0xFFFF)) {
|
||||
@ -920,6 +922,10 @@ const char *translateEvents(Event event) {
|
||||
return DUMP_HK_CANCELLED_STRING;
|
||||
case (14314):
|
||||
return DUMP_CFDP_CANCELLED_STRING;
|
||||
case (14500):
|
||||
return TEMPERATURE_ALL_ONES_START_STRING;
|
||||
case (14501):
|
||||
return TEMPERATURE_ALL_ONES_RECOVERY_STRING;
|
||||
default:
|
||||
return "UNKNOWN_EVENT";
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
* @brief Auto-generated object translation file.
|
||||
* @details
|
||||
* Contains 175 translations.
|
||||
* Generated on: 2023-08-15 13:27:11
|
||||
* Generated on: 2023-09-12 10:05:17
|
||||
*/
|
||||
#include "translateObjects.h"
|
||||
|
||||
|
@ -595,9 +595,10 @@ void PdecHandler::checkConfig() {
|
||||
sif::warning << "PdecHandler::checkConfig: Failed to create second word" << std::endl;
|
||||
return;
|
||||
}
|
||||
if (firstWord != pdecConfig.readbackFirstWord() or
|
||||
secondWord != pdecConfig.readbackSecondWord()) {
|
||||
triggerEvent(PDEC_CONFIG_CORRUPTED, firstWord, secondWord);
|
||||
uint32_t readbackFirstWord = pdecConfig.readbackFirstWord();
|
||||
uint32_t readbackSecondWord = pdecConfig.readbackSecondWord();
|
||||
if (firstWord != readbackFirstWord or secondWord != readbackSecondWord) {
|
||||
triggerEvent(PDEC_CONFIG_CORRUPTED, readbackFirstWord, readbackSecondWord);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2105,9 +2105,9 @@ uint32_t PlocSupervisorHandler::getTransitionDelayMs(Mode_t modeFrom, Mode_t mod
|
||||
// if (result != returnvalue::OK) {
|
||||
// return result;
|
||||
// }
|
||||
//#if OBSW_VERBOSE_LEVEL >= 1 && OBSW_DEBUG_PLOC_SUPERVISOR == 1
|
||||
// #if OBSW_VERBOSE_LEVEL >= 1 && OBSW_DEBUG_PLOC_SUPERVISOR == 1
|
||||
// loggingReport.printSet();
|
||||
//#endif
|
||||
// #endif
|
||||
// nextReplyId = supv::EXE_REPORT;
|
||||
// return result;
|
||||
// }
|
||||
|
@ -274,12 +274,12 @@ ReturnValue_t PlocSupvUartManager::initiateUpdateContinuation() {
|
||||
}
|
||||
|
||||
// ReturnValue_t PlocSupvHelper::startEventBufferRequest(std::string path) {
|
||||
//#ifdef XIPHOS_Q7S
|
||||
// #ifdef XIPHOS_Q7S
|
||||
// ReturnValue_t result = FilesystemHelper::checkPath(path);
|
||||
// if (result != returnvalue::OK) {
|
||||
// return result;
|
||||
// }
|
||||
//#endif
|
||||
// #endif
|
||||
// if (not std::filesystem::exists(path)) {
|
||||
// return PATH_NOT_EXISTS;
|
||||
// }
|
||||
@ -836,11 +836,11 @@ uint32_t PlocSupvUartManager::getFileSize(std::string filename) {
|
||||
ReturnValue_t PlocSupvUartManager::handleEventBufferReception(ploc::SpTmReader& reader) {
|
||||
ReturnValue_t result = returnvalue::OK;
|
||||
// TODO: Fix
|
||||
//#ifdef XIPHOS_Q7S
|
||||
// #ifdef XIPHOS_Q7S
|
||||
// if (not sdcMan->getActiveSdCard()) {
|
||||
// return HasFileSystemIF::FILESYSTEM_INACTIVE;
|
||||
// }
|
||||
//#endif
|
||||
// #endif
|
||||
// std::string filename = Filenaming::generateAbsoluteFilename(
|
||||
// eventBufferReq.path, eventBufferReq.filename, timestamping);
|
||||
// std::ofstream file(filename, std::ios_base::app | std::ios_base::out);
|
||||
|
@ -20,6 +20,9 @@ void SusHandler::doStartUp() {
|
||||
}
|
||||
if (internalState == InternalState::STARTUP) {
|
||||
if (commandExecuted) {
|
||||
if (waitingForRecovery) {
|
||||
waitingForRecovery = false;
|
||||
}
|
||||
setMode(MODE_ON);
|
||||
internalState = InternalState::NONE;
|
||||
commandExecuted = false;
|
||||
@ -83,15 +86,36 @@ ReturnValue_t SusHandler::scanForReply(const uint8_t *start, size_t len, DeviceC
|
||||
}
|
||||
ReturnValue_t SusHandler::interpretDeviceReply(DeviceCommandId_t id, const uint8_t *packet) {
|
||||
const auto *reply = reinterpret_cast<const acs::SusReply *>(packet);
|
||||
if (reply->dataWasSet) {
|
||||
if (internalState == InternalState::STARTUP) {
|
||||
commandExecuted = true;
|
||||
}
|
||||
PoolReadGuard pg(&dataset);
|
||||
dataset.setValidity(true, true);
|
||||
dataset.tempC = max1227::getTemperature(reply->tempRaw);
|
||||
std::memcpy(dataset.channels.value, reply->channelsRaw, sizeof(reply->channelsRaw));
|
||||
if (!reply->dataWasSet) {
|
||||
return returnvalue::OK;
|
||||
}
|
||||
if (internalState == InternalState::STARTUP) {
|
||||
commandExecuted = true;
|
||||
}
|
||||
PoolReadGuard pg(&dataset);
|
||||
// Simple FDIR variant to make the handler more robust to invalid messages which
|
||||
// appear sometimes for the SUS device: Allow invalid message up to a certain threshold
|
||||
// before triggering FDIR reactions.
|
||||
if (reply->tempRaw == 0xfff and not waitingForRecovery) {
|
||||
if (invalidMsgCounter == 0) {
|
||||
triggerEvent(TEMPERATURE_ALL_ONES_START);
|
||||
} else if (invalidMsgCounter == susMax1227::MAX_INVALID_MSG_COUNT) {
|
||||
triggerEvent(DeviceHandlerIF::DEVICE_WANTS_HARD_REBOOT);
|
||||
waitingForRecovery = true;
|
||||
}
|
||||
invalidMsgCounter++;
|
||||
dataset.setValidity(false, true);
|
||||
dataset.tempC = thermal::INVALID_TEMPERATURE;
|
||||
std::memset(dataset.channels.value, 0, sizeof(dataset.channels.value));
|
||||
return returnvalue::OK;
|
||||
}
|
||||
if (invalidMsgCounter > 0) {
|
||||
triggerEvent(TEMPERATURE_ALL_ONES_RECOVERY, invalidMsgCounter);
|
||||
invalidMsgCounter = 0;
|
||||
}
|
||||
dataset.setValidity(true, true);
|
||||
dataset.tempC = max1227::getTemperature(reply->tempRaw);
|
||||
std::memcpy(dataset.channels.value, reply->channelsRaw, sizeof(reply->channelsRaw));
|
||||
return returnvalue::OK;
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,15 @@ class SusHandler : public DeviceHandlerBase {
|
||||
static constexpr DeviceCommandId_t REPLY = 0x77;
|
||||
|
||||
static const uint8_t INTERFACE_ID = CLASS_ID::SUS_HANDLER;
|
||||
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::SUS_BOARD_ASS;
|
||||
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::SUS_HANDLER;
|
||||
|
||||
//! [EXPORT] : [COMMENT] Detected invalid values, starting invalid message counting
|
||||
static constexpr Event TEMPERATURE_ALL_ONES_START =
|
||||
event::makeEvent(SUBSYSTEM_ID, 0, severity::MEDIUM);
|
||||
//! [EXPORT] : [COMMENT] Detected valid values again, resetting invalid message counter.
|
||||
//! P1: Invalid message counter.
|
||||
static constexpr Event TEMPERATURE_ALL_ONES_RECOVERY =
|
||||
event::makeEvent(SUBSYSTEM_ID, 1, severity::INFO);
|
||||
|
||||
SusHandler(uint32_t objectId, uint8_t susIdx, object_id_t deviceCommunication,
|
||||
CookieIF *comCookie);
|
||||
@ -46,6 +54,8 @@ class SusHandler : public DeviceHandlerBase {
|
||||
susMax1227::SusDataset dataset;
|
||||
acs::SusRequest request{};
|
||||
uint8_t susIdx;
|
||||
bool waitingForRecovery = true;
|
||||
uint32_t invalidMsgCounter = 0;
|
||||
|
||||
uint32_t transitionDelay = 1000;
|
||||
bool goToNormalMode = false;
|
||||
|
@ -8,6 +8,14 @@
|
||||
|
||||
namespace susMax1227 {
|
||||
|
||||
// This is 16 seconds for a polling frequency of 0.4 seconds.
|
||||
static constexpr uint32_t MAX_INVALID_MSG_COUNT = 40;
|
||||
// Using a decrement time of 32 seconds should cause faulty device incrementation to best faster
|
||||
// the decrementation, so that FDIR reactions will eventuall be triggered.
|
||||
// NOTE: Not used currently, we perform the strange reply check logic in the handler and trigger
|
||||
// a reboot directly using the appropriate event.
|
||||
static constexpr uint32_t FAULTY_COM_DECREMENT_TIME_MS = 32000;
|
||||
|
||||
static const DeviceCommandId_t NONE = 0x0; // Set when no command is pending
|
||||
|
||||
static const DeviceCommandId_t WRITE_SETUP = 1;
|
||||
|
@ -1372,12 +1372,13 @@ void ThermalController::ctrlPlPcduBoard() {
|
||||
tooHotHandler(objects::PLPCDU_HANDLER, tooHotFlags.eBandTooHotFlag);
|
||||
}
|
||||
|
||||
// ToDo: remove one of the following 2
|
||||
void ThermalController::ctrlPlocMissionBoard() {
|
||||
ctrlCtx.thermalComponent = tcsCtrl::PLOCMISSION_BOARD;
|
||||
sensors[0].first = sensorTemperatures.plocHeatspreader.isValid();
|
||||
sensors[0].second = sensorTemperatures.plocHeatspreader.value;
|
||||
sensors[1].first = sensorTemperatures.plocMissionboard.isValid();
|
||||
sensors[1].second = sensorTemperatures.plocMissionboard.value;
|
||||
sensors[0].first = sensorTemperatures.plocMissionboard.isValid();
|
||||
sensors[0].second = sensorTemperatures.plocMissionboard.value;
|
||||
sensors[1].first = sensorTemperatures.plocHeatspreader.isValid();
|
||||
sensors[1].second = sensorTemperatures.plocHeatspreader.value;
|
||||
sensors[2].first = sensorTemperatures.dacHeatspreader.isValid();
|
||||
sensors[2].second = sensorTemperatures.dacHeatspreader.value;
|
||||
numSensors = 3;
|
||||
|
@ -79,7 +79,7 @@ class AcsParameters : public HasParametersIF {
|
||||
float mgm13variance[3] = {pow(1.5e-8, 2), pow(1.5e-8, 2), pow(1.5e-8, 2)};
|
||||
float mgm4variance[3] = {pow(1.7e-6, 2), pow(1.7e-6, 2), pow(1.7e-6, 2)};
|
||||
float mgmVectorFilterWeight = 0.85;
|
||||
float mgmDerivativeFilterWeight = 0.85;
|
||||
float mgmDerivativeFilterWeight = 0.99;
|
||||
uint8_t useMgm4 = false;
|
||||
} mgmHandlingParameters;
|
||||
|
||||
@ -771,7 +771,7 @@ class AcsParameters : public HasParametersIF {
|
||||
-0.000889232196185857, -0.00168429567131815}};
|
||||
float susBrightnessThreshold = 0.7;
|
||||
float susVectorFilterWeight = .85;
|
||||
float susRateFilterWeight = .85;
|
||||
float susRateFilterWeight = .99;
|
||||
} susHandlingParameters;
|
||||
|
||||
struct GyrHandlingParameters {
|
||||
@ -834,15 +834,15 @@ class AcsParameters : public HasParametersIF {
|
||||
double k_alignGyr = 4.0e-5;
|
||||
double k_parallelGyr = 3.75e-4;
|
||||
|
||||
double k_orthoSusMgm = 1.1e-2;
|
||||
double k_alignSusMgm = 2.0e-5;
|
||||
double k_parallelSusMgm = 4.4e-4;
|
||||
double k_orthoSusMgm = 4.4e-3;
|
||||
double k_alignSusMgm = 4.0e-5;
|
||||
double k_parallelSusMgm = 3.75e-4;
|
||||
|
||||
double sunTargetDirLeop[3] = {0, sqrt(.5), sqrt(.5)};
|
||||
double sunTargetDir[3] = {0, 0, 1};
|
||||
|
||||
uint8_t useMekf = false;
|
||||
uint8_t useGyr = true;
|
||||
uint8_t useGyr = false;
|
||||
uint8_t dampingDuringEclipse = true;
|
||||
|
||||
float sineLimitSunRotRate = 0.24;
|
||||
|
@ -25,7 +25,8 @@ void SensorProcessing::processMgm(const float *mgm0Value, bool mgm0valid, const
|
||||
gpsDataProcessed->altitude.value, timeOfMgmMeasurement, magIgrfModel);
|
||||
gpsValid = true;
|
||||
}
|
||||
if (!mgm0valid && !mgm1valid && !mgm2valid && !mgm3valid && !mgm4valid) {
|
||||
if (not mgm0valid and not mgm1valid and not mgm2valid and not mgm3valid and
|
||||
(not mgm4valid or not mgmParameters->useMgm4)) {
|
||||
{
|
||||
PoolReadGuard pg(mgmDataProcessed);
|
||||
if (pg.getReadResult() == returnvalue::OK) {
|
||||
|
@ -8,12 +8,12 @@
|
||||
// I really don't want to pull in all of those GomSpace headers just for 6 constants..
|
||||
// Those are the headers which contain the defines which were just hardcoded below.
|
||||
|
||||
//#include "p60acu_hk.h"
|
||||
//#include "p60acu_param.h"
|
||||
//#include "p60dock_hk.h"
|
||||
//#include "p60dock_param.h"
|
||||
//#include "p60pdu_hk.h"
|
||||
//#include "p60pdu_param.h"
|
||||
// #include "p60acu_hk.h"
|
||||
// #include "p60acu_param.h"
|
||||
// #include "p60dock_hk.h"
|
||||
// #include "p60dock_param.h"
|
||||
// #include "p60pdu_hk.h"
|
||||
// #include "p60pdu_param.h"
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include "SusFdir.h"
|
||||
|
||||
#include "eive/objects.h"
|
||||
#include "mission/acs/susMax1227Helpers.h"
|
||||
|
||||
SusFdir::SusFdir(object_id_t sensorId)
|
||||
: DeviceHandlerFailureIsolation(sensorId, objects::SUS_BOARD_ASS) {}
|
||||
|
@ -320,6 +320,7 @@ ReturnValue_t PersistentTmStore::loadNextDumpFile() {
|
||||
}
|
||||
// File will change, reset this field for correct state-keeping.
|
||||
dumpParams.currentSameFileIdx = std::nullopt;
|
||||
dumpParams.currentFileUnixStamp = dumpParams.dumpIter->epoch;
|
||||
// Increment iterator for next cycle.
|
||||
dumpParams.dumpIter++;
|
||||
};
|
||||
|
2
tmtc
2
tmtc
Submodule tmtc updated: b50c75c13c...d23cc6834a
Reference in New Issue
Block a user