Various Improvements & Fixes #187

Merged
meierj merged 201 commits from mueller/various-improvements-rpi-tweaks into develop 2022-03-26 21:07:07 +01:00
223 changed files with 5526 additions and 11272 deletions
Showing only changes of commit af19d40444 - Show all commits

View File

@@ -441,12 +441,24 @@ Beagle Bone Black for download here
Download it and unzip it somewhere in the Xilinx installation folder. Download it and unzip it somewhere in the Xilinx installation folder.
You can use the following command if `wget` can be used or for CI/CD: You can use the following command if `wget` can be used or for CI/CD:
``` ```sh
wget https://eive-cloud.irs.uni-stuttgart.de/index.php/s/agnJGYeRf6fw2ci/download/cortexa9hf-neon-xiphos-linux-gnueabi.tar.gz wget https://eive-cloud.irs.uni-stuttgart.de/index.php/s/SyXpdBBQX32xPgE/download/cortexa9hf-neon-xiphos-linux-gnueabi.tar.gz
``` ```
Then, create a new environmental variables `Q7S_SYSROOT` and set it to the local system root path. Then, create a new environmental variables `Q7S_SYSROOT` and set it to the local system root path.
### Updating system root for CI
If the system root is updated, it needs to be manually updated on the buggy file server.
If access on `buggy.irs.uni-stuttgart.de` is possible with `ssh` and the rootfs in the cloud
[was updated](https://eive-cloud.irs.uni-stuttgart.de/index.php/apps/files/?dir=/EIVE_IRS/Software/rootfs&fileid=831849)
as well, you can update the rootfs like this:
```sh
cd /var/www/eive/tools
wget https://eive-cloud.irs.uni-stuttgart.de/index.php/s/SyXpdBBQX32xPgE/download/cortexa9hf-neon-xiphos-linux-gnueabi.tar.gz
```
## Setting up UNIX environment for real-time functionalities ## Setting up UNIX environment for real-time functionalities
Please note that on most UNIX environments (e.g. Ubuntu), the real time functionalities Please note that on most UNIX environments (e.g. Ubuntu), the real time functionalities

View File

@@ -142,13 +142,13 @@ void Q7STestTask::testDummyParams() {
param.print(); param.print();
int test = 0; int test = 0;
result = param.getValue<int>(DummyParameter::DUMMY_KEY_PARAM_1, &test); result = param.getValue<int>(DummyParameter::DUMMY_KEY_PARAM_1, test);
if (result != HasReturnvaluesIF::RETURN_OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
sif::warning << "Q7STestTask::testDummyParams: Key " << DummyParameter::DUMMY_KEY_PARAM_1 sif::warning << "Q7STestTask::testDummyParams: Key " << DummyParameter::DUMMY_KEY_PARAM_1
<< " does not exist" << std::endl; << " does not exist" << std::endl;
} }
std::string test2; std::string test2;
result = param.getValue<std::string>(DummyParameter::DUMMY_KEY_PARAM_2, &test2); result = param.getValue<std::string>(DummyParameter::DUMMY_KEY_PARAM_2, test2);
if (result != HasReturnvaluesIF::RETURN_OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
sif::warning << "Q7STestTask::testDummyParams: Key " << DummyParameter::DUMMY_KEY_PARAM_1 sif::warning << "Q7STestTask::testDummyParams: Key " << DummyParameter::DUMMY_KEY_PARAM_1
<< " does not exist" << std::endl; << " does not exist" << std::endl;

View File

@@ -1169,15 +1169,6 @@ void ObjectFactory::createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF*
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_DRO, consumer, gpio::DIR_OUT, gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_DRO, consumer, gpio::DIR_OUT,
gpio::Levels::LOW); gpio::Levels::LOW);
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_DRO, gpio); plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_DRO, gpio);
consumer = "PLPCDU_ENB_HPA";
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_HPA, consumer, gpio::DIR_OUT,
gpio::Levels::LOW);
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_HPA, gpio);
consumer = "PLPCDU_ENB_MPA";
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_MPA, consumer, gpio::DIR_OUT,
gpio::Levels::LOW);
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_MPA, gpio);
consumer = "PLPCDU_ENB_X8"; consumer = "PLPCDU_ENB_X8";
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_X8, consumer, gpio::DIR_OUT, gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_X8, consumer, gpio::DIR_OUT,
gpio::Levels::LOW); gpio::Levels::LOW);
@@ -1186,6 +1177,14 @@ void ObjectFactory::createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF*
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_TX, consumer, gpio::DIR_OUT, gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_TX, consumer, gpio::DIR_OUT,
gpio::Levels::LOW); gpio::Levels::LOW);
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_TX, gpio); plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_TX, gpio);
consumer = "PLPCDU_ENB_MPA";
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_MPA, consumer, gpio::DIR_OUT,
gpio::Levels::LOW);
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_MPA, gpio);
consumer = "PLPCDU_ENB_HPA";
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_HPA, consumer, gpio::DIR_OUT,
gpio::Levels::LOW);
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_HPA, gpio);
// Chip select pin is active low // Chip select pin is active low
consumer = "PLPCDU_ADC_CS"; consumer = "PLPCDU_ADC_CS";
@@ -1197,8 +1196,9 @@ void ObjectFactory::createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF*
q7s::SPI_DEFAULT_DEV, plpcdu::MAX_ADC_REPLY_SIZE, q7s::SPI_DEFAULT_DEV, plpcdu::MAX_ADC_REPLY_SIZE,
spi::DEFAULT_MAX_1227_MODE, spi::DEFAULT_MAX_1227_SPEED); spi::DEFAULT_MAX_1227_MODE, spi::DEFAULT_MAX_1227_SPEED);
// Create device handler components // Create device handler components
auto plPcduHandler = new PayloadPcduHandler(objects::PLPCDU_HANDLER, objects::SPI_COM_IF, auto plPcduHandler =
spiCookie, gpioComIF, false); new PayloadPcduHandler(objects::PLPCDU_HANDLER, objects::SPI_COM_IF, spiCookie, gpioComIF,
SdCardManager::instance(), false);
spiCookie->setCallbackMode(PayloadPcduHandler::extConvAsTwoCallback, plPcduHandler); spiCookie->setCallbackMode(PayloadPcduHandler::extConvAsTwoCallback, plPcduHandler);
static_cast<void>(plPcduHandler); static_cast<void>(plPcduHandler);
#if OBSW_TEST_PL_PCDU == 1 #if OBSW_TEST_PL_PCDU == 1

View File

@@ -1517,69 +1517,69 @@ ReturnValue_t StarTrackerHandler::prepareUploadCentroidCommand(const uint8_t* co
<< " does not exist" << std::endl; << " does not exist" << std::endl;
return result; return result;
} }
result = j.getValue(StarTracker::UploadCentroidKeys::id, &req.id); result = j.getValue(StarTracker::UploadCentroidKeys::id, req.id);
if (result != RETURN_OK) { if (result != RETURN_OK) {
sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key " sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key "
<< StarTracker::UploadCentroidKeys::id << " does not exist" << std::endl; << StarTracker::UploadCentroidKeys::id << " does not exist" << std::endl;
return result; return result;
} }
result = j.getValue(StarTracker::UploadCentroidKeys::pixx, &req.pixx); result = j.getValue(StarTracker::UploadCentroidKeys::pixx, req.pixx);
if (result != RETURN_OK) { if (result != RETURN_OK) {
sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key " sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key "
<< StarTracker::UploadCentroidKeys::pixx << " does not exist" << std::endl; << StarTracker::UploadCentroidKeys::pixx << " does not exist" << std::endl;
return result; return result;
} }
result = j.getValue(StarTracker::UploadCentroidKeys::pixy, &req.pixy); result = j.getValue(StarTracker::UploadCentroidKeys::pixy, req.pixy);
if (result != RETURN_OK) { if (result != RETURN_OK) {
sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key " sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key "
<< StarTracker::UploadCentroidKeys::pixy << " does not exist" << std::endl; << StarTracker::UploadCentroidKeys::pixy << " does not exist" << std::endl;
return result; return result;
} }
result = j.getValue(StarTracker::UploadCentroidKeys::x_uncorrected, &req.x_uncorrected); result = j.getValue(StarTracker::UploadCentroidKeys::x_uncorrected, req.x_uncorrected);
if (result != RETURN_OK) { if (result != RETURN_OK) {
sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key " sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key "
<< StarTracker::UploadCentroidKeys::x_uncorrected << " does not exist" << StarTracker::UploadCentroidKeys::x_uncorrected << " does not exist"
<< std::endl; << std::endl;
return result; return result;
} }
result = j.getValue(StarTracker::UploadCentroidKeys::y_uncorrected, &req.y_uncorrected); result = j.getValue(StarTracker::UploadCentroidKeys::y_uncorrected, req.y_uncorrected);
if (result != RETURN_OK) { if (result != RETURN_OK) {
sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key " sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key "
<< StarTracker::UploadCentroidKeys::y_uncorrected << " does not exist" << StarTracker::UploadCentroidKeys::y_uncorrected << " does not exist"
<< std::endl; << std::endl;
return result; return result;
} }
result = j.getValue(StarTracker::UploadCentroidKeys::x_corrected, &req.x_corrected); result = j.getValue(StarTracker::UploadCentroidKeys::x_corrected, req.x_corrected);
if (result != RETURN_OK) { if (result != RETURN_OK) {
sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key " sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key "
<< StarTracker::UploadCentroidKeys::x_corrected << " does not exist" << std::endl; << StarTracker::UploadCentroidKeys::x_corrected << " does not exist" << std::endl;
return result; return result;
} }
result = j.getValue(StarTracker::UploadCentroidKeys::y_corrected, &req.y_corrected); result = j.getValue(StarTracker::UploadCentroidKeys::y_corrected, req.y_corrected);
if (result != RETURN_OK) { if (result != RETURN_OK) {
sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key " sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key "
<< StarTracker::UploadCentroidKeys::y_corrected << " does not exist" << std::endl; << StarTracker::UploadCentroidKeys::y_corrected << " does not exist" << std::endl;
return result; return result;
} }
result = j.getValue(StarTracker::UploadCentroidKeys::magnitude, &req.magnitude); result = j.getValue(StarTracker::UploadCentroidKeys::magnitude, req.magnitude);
if (result != RETURN_OK) { if (result != RETURN_OK) {
sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key " sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key "
<< StarTracker::UploadCentroidKeys::magnitude << " does not exist" << std::endl; << StarTracker::UploadCentroidKeys::magnitude << " does not exist" << std::endl;
return result; return result;
} }
result = j.getValue(StarTracker::UploadCentroidKeys::cxa, &req.cxa); result = j.getValue(StarTracker::UploadCentroidKeys::cxa, req.cxa);
if (result != RETURN_OK) { if (result != RETURN_OK) {
sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key " sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key "
<< StarTracker::UploadCentroidKeys::cxa << " does not exist" << std::endl; << StarTracker::UploadCentroidKeys::cxa << " does not exist" << std::endl;
return result; return result;
} }
result = j.getValue(StarTracker::UploadCentroidKeys::cya, &req.cya); result = j.getValue(StarTracker::UploadCentroidKeys::cya, req.cya);
if (result != RETURN_OK) { if (result != RETURN_OK) {
sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key " sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key "
<< StarTracker::UploadCentroidKeys::cya << " does not exist" << std::endl; << StarTracker::UploadCentroidKeys::cya << " does not exist" << std::endl;
return result; return result;
} }
result = j.getValue(StarTracker::UploadCentroidKeys::quality, &req.quality); result = j.getValue(StarTracker::UploadCentroidKeys::quality, req.quality);
if (result != RETURN_OK) { if (result != RETURN_OK) {
sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key " sif::warning << "StarTrackerHandler::prepareUploadCentroidCommand: The key "
<< StarTracker::UploadCentroidKeys::quality << " does not exist" << std::endl; << StarTracker::UploadCentroidKeys::quality << " does not exist" << std::endl;

View File

@@ -1,5 +1,6 @@
#include "SdCardManager.h" #include "SdCardManager.h"
#include <fsfw/ipc/MutexGuard.h>
#include <unistd.h> #include <unistd.h>
#include <cstring> #include <cstring>
@@ -15,7 +16,9 @@
SdCardManager* SdCardManager::factoryInstance = nullptr; SdCardManager* SdCardManager::factoryInstance = nullptr;
SdCardManager::SdCardManager() : SystemObject(objects::SDC_MANAGER), cmdExecutor(256) {} SdCardManager::SdCardManager() : SystemObject(objects::SDC_MANAGER), cmdExecutor(256) {
mutex = MutexFactory::instance()->createMutex();
}
SdCardManager::~SdCardManager() {} SdCardManager::~SdCardManager() {}
@@ -162,6 +165,7 @@ ReturnValue_t SdCardManager::setSdCardState(sd::SdCard sdCard, bool on) {
ReturnValue_t SdCardManager::getSdCardActiveStatus(SdStatePair& active) { ReturnValue_t SdCardManager::getSdCardActiveStatus(SdStatePair& active) {
using namespace std; using namespace std;
MutexGuard mg(mutex);
if (not filesystem::exists(SD_STATE_FILE)) { if (not filesystem::exists(SD_STATE_FILE)) {
return STATUS_FILE_NEXISTS; return STATUS_FILE_NEXISTS;
} }
@@ -366,6 +370,7 @@ ReturnValue_t SdCardManager::updateSdCardStateFile() {
if (cmdExecutor.getCurrentState() == CommandExecutor::States::PENDING) { if (cmdExecutor.getCurrentState() == CommandExecutor::States::PENDING) {
return CommandExecutor::COMMAND_PENDING; return CommandExecutor::COMMAND_PENDING;
} }
MutexGuard mg(mutex);
// Use q7hw utility and pipe the command output into the state file // Use q7hw utility and pipe the command output into the state file
std::string updateCmd = "q7hw sd info all > " + std::string(SD_STATE_FILE); std::string updateCmd = "q7hw sd info all > " + std::string(SD_STATE_FILE);
cmdExecutor.load(updateCmd, blocking, printCmdOutput); cmdExecutor.load(updateCmd, blocking, printCmdOutput);
@@ -440,6 +445,7 @@ void SdCardManager::setPrintCommandOutput(bool print) { this->printCmdOutput = p
bool SdCardManager::isSdCardMounted(sd::SdCard sdCard) { bool SdCardManager::isSdCardMounted(sd::SdCard sdCard) {
SdCardManager::SdStatePair active; SdCardManager::SdStatePair active;
ReturnValue_t result = this->getSdCardActiveStatus(active); ReturnValue_t result = this->getSdCardActiveStatus(active);
if (result != HasReturnvaluesIF::RETURN_OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
sif::debug << "SdCardManager::isSdCardMounted: Failed to get SD card active state"; sif::debug << "SdCardManager::isSdCardMounted: Failed to get SD card active state";
return false; return false;

View File

@@ -10,11 +10,12 @@
#include <string> #include <string>
#include <utility> #include <utility>
#include "definitions.h"
#include "events/subsystemIdRanges.h" #include "events/subsystemIdRanges.h"
#include "fsfw/events/Event.h" #include "fsfw/events/Event.h"
#include "fsfw/returnvalues/HasReturnvaluesIF.h" #include "fsfw/returnvalues/HasReturnvaluesIF.h"
#include "fsfw_hal/linux/CommandExecutor.h" #include "fsfw_hal/linux/CommandExecutor.h"
#include "mission/memory/SdCardMountedIF.h"
#include "mission/memory/definitions.h"
#include "returnvalues/classIds.h" #include "returnvalues/classIds.h"
class MutexIF; class MutexIF;
@@ -23,10 +24,16 @@ class MutexIF;
* @brief Manages handling of SD cards like switching them on or off or getting the current * @brief Manages handling of SD cards like switching them on or off or getting the current
* state * state
*/ */
<<<<<<< HEAD
class SdCardManager : public SystemObject { class SdCardManager : public SystemObject {
=======
class SdCardManager : public SystemObject, public SdCardMountedIF {
>>>>>>> mueller/plpcdu-sus-updates
friend class SdCardAccess; friend class SdCardAccess;
public: public:
using mountInitCb = ReturnValue_t (*)(void* args);
enum class Operations { SWITCHING_ON, SWITCHING_OFF, MOUNTING, UNMOUNTING, IDLE }; enum class Operations { SWITCHING_ON, SWITCHING_OFF, MOUNTING, UNMOUNTING, IDLE };
enum class OpStatus { IDLE, TIMEOUT, ONGOING, SUCCESS, FAIL }; enum class OpStatus { IDLE, TIMEOUT, ONGOING, SUCCESS, FAIL };
@@ -88,7 +95,7 @@ class SdCardManager : public SystemObject {
* @param sdCard * @param sdCard
* @return * @return
*/ */
ReturnValue_t getPreferredSdCard(sd::SdCard& sdCard) const; ReturnValue_t getPreferredSdCard(sd::SdCard& sdCard) const override;
/** /**
* Switch on the specified SD card. * Switch on the specified SD card.
@@ -170,7 +177,7 @@ class SdCardManager : public SystemObject {
* @param prefSdCardPtr * @param prefSdCardPtr
* @return * @return
*/ */
std::string getCurrentMountPrefix(sd::SdCard prefSdCardPtr = sd::SdCard::NONE); std::string getCurrentMountPrefix(sd::SdCard prefSdCardPtr = sd::SdCard::NONE) override;
OpStatus checkCurrentOp(Operations& currentOp); OpStatus checkCurrentOp(Operations& currentOp);
@@ -183,19 +190,20 @@ class SdCardManager : public SystemObject {
void setPrintCommandOutput(bool print); void setPrintCommandOutput(bool print);
/** /**
* @brief Checks if an SD card is mounted * @brief Checks if an SD card is mounted.
* *
* @param sdCard The SD card to check * @param sdCard The SD card to check
* *
* @return true if mounted, otherwise false * @return true if mounted, otherwise false
*/ */
bool isSdCardMounted(sd::SdCard sdCard); bool isSdCardMounted(sd::SdCard sdCard) override;
private: private:
CommandExecutor cmdExecutor; CommandExecutor cmdExecutor;
Operations currentOp = Operations::IDLE; Operations currentOp = Operations::IDLE;
bool blocking = false; bool blocking = false;
bool printCmdOutput = true; bool printCmdOutput = true;
MutexIF* mutex = nullptr;
SdCardManager(); SdCardManager();

2
fsfw

Submodule fsfw updated: 4747e54c5d...123f2ff360

View File

@@ -1,140 +1,153 @@
2200;STORE_SEND_WRITE_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2200;STORE_SEND_WRITE_FAILED;LOW;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2201;STORE_WRITE_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2201;STORE_WRITE_FAILED;LOW;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2202;STORE_SEND_READ_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2202;STORE_SEND_READ_FAILED;LOW;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2203;STORE_READ_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2203;STORE_READ_FAILED;LOW;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2204;UNEXPECTED_MSG;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2204;UNEXPECTED_MSG;LOW;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2205;STORING_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2205;STORING_FAILED;LOW;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2206;TM_DUMP_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2206;TM_DUMP_FAILED;LOW;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2207;STORE_INIT_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2207;STORE_INIT_FAILED;LOW;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2208;STORE_INIT_EMPTY;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2208;STORE_INIT_EMPTY;INFO;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2209;STORE_CONTENT_CORRUPTED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2209;STORE_CONTENT_CORRUPTED;LOW;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2210;STORE_INITIALIZE;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2210;STORE_INITIALIZE;INFO;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2211;INIT_DONE;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2211;INIT_DONE;INFO;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2212;DUMP_FINISHED;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2212;DUMP_FINISHED;INFO;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2213;DELETION_FINISHED;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2213;DELETION_FINISHED;INFO;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2214;DELETION_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2214;DELETION_FAILED;LOW;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2215;AUTO_CATALOGS_SENDING_FAILED;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h 2215;AUTO_CATALOGS_SENDING_FAILED;INFO;;./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2600;GET_DATA_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/storagemanager/StorageManagerIF.h 2600;GET_DATA_FAILED;LOW;;./fsfw/src/fsfw/storagemanager/StorageManagerIF.h
2601;STORE_DATA_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/storagemanager/StorageManagerIF.h 2601;STORE_DATA_FAILED;LOW;;./fsfw/src/fsfw/storagemanager/StorageManagerIF.h
2800;DEVICE_BUILDING_COMMAND_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h 2800;DEVICE_BUILDING_COMMAND_FAILED;LOW;;./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2801;DEVICE_SENDING_COMMAND_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h 2801;DEVICE_SENDING_COMMAND_FAILED;LOW;;./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2802;DEVICE_REQUESTING_REPLY_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h 2802;DEVICE_REQUESTING_REPLY_FAILED;LOW;;./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2803;DEVICE_READING_REPLY_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h 2803;DEVICE_READING_REPLY_FAILED;LOW;;./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2804;DEVICE_INTERPRETING_REPLY_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h 2804;DEVICE_INTERPRETING_REPLY_FAILED;LOW;;./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2805;DEVICE_MISSED_REPLY;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h 2805;DEVICE_MISSED_REPLY;LOW;;./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2806;DEVICE_UNKNOWN_REPLY;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h 2806;DEVICE_UNKNOWN_REPLY;LOW;;./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2807;DEVICE_UNREQUESTED_REPLY;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h 2807;DEVICE_UNREQUESTED_REPLY;LOW;;./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2808;INVALID_DEVICE_COMMAND;LOW;Indicates a SW bug in child class.;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h 2808;INVALID_DEVICE_COMMAND;LOW;Indicates a SW bug in child class.;./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2809;MONITORING_LIMIT_EXCEEDED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h 2809;MONITORING_LIMIT_EXCEEDED;LOW;;./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2810;MONITORING_AMBIGUOUS;HIGH;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h 2810;MONITORING_AMBIGUOUS;HIGH;;./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
2811;DEVICE_WANTS_HARD_REBOOT;HIGH;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h 2811;DEVICE_WANTS_HARD_REBOOT;HIGH;;./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
4201;FUSE_CURRENT_HIGH;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/power/Fuse.h 4201;FUSE_CURRENT_HIGH;LOW;;./fsfw/src/fsfw/power/Fuse.h
4202;FUSE_WENT_OFF;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/power/Fuse.h 4202;FUSE_WENT_OFF;LOW;;./fsfw/src/fsfw/power/Fuse.h
4204;POWER_ABOVE_HIGH_LIMIT;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/power/Fuse.h 4204;POWER_ABOVE_HIGH_LIMIT;LOW;;./fsfw/src/fsfw/power/Fuse.h
4205;POWER_BELOW_LOW_LIMIT;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/power/Fuse.h 4205;POWER_BELOW_LOW_LIMIT;LOW;;./fsfw/src/fsfw/power/Fuse.h
4300;SWITCH_WENT_OFF;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/power/PowerSwitchIF.h 4300;SWITCH_WENT_OFF;LOW;;./fsfw/src/fsfw/power/PowerSwitchIF.h
5000;HEATER_ON;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/Heater.h 5000;HEATER_ON;INFO;;./fsfw/src/fsfw/thermal/Heater.h
5001;HEATER_OFF;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/Heater.h 5001;HEATER_OFF;INFO;;./fsfw/src/fsfw/thermal/Heater.h
5002;HEATER_TIMEOUT;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/Heater.h 5002;HEATER_TIMEOUT;LOW;;./fsfw/src/fsfw/thermal/Heater.h
5003;HEATER_STAYED_ON;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/Heater.h 5003;HEATER_STAYED_ON;LOW;;./fsfw/src/fsfw/thermal/Heater.h
5004;HEATER_STAYED_OFF;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/Heater.h 5004;HEATER_STAYED_OFF;LOW;;./fsfw/src/fsfw/thermal/Heater.h
5200;TEMP_SENSOR_HIGH;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h 5200;TEMP_SENSOR_HIGH;LOW;;./fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
5201;TEMP_SENSOR_LOW;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h 5201;TEMP_SENSOR_LOW;LOW;;./fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
5202;TEMP_SENSOR_GRADIENT;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h 5202;TEMP_SENSOR_GRADIENT;LOW;;./fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
5901;COMPONENT_TEMP_LOW;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h 5901;COMPONENT_TEMP_LOW;LOW;;./fsfw/src/fsfw/thermal/ThermalComponentIF.h
5902;COMPONENT_TEMP_HIGH;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h 5902;COMPONENT_TEMP_HIGH;LOW;;./fsfw/src/fsfw/thermal/ThermalComponentIF.h
5903;COMPONENT_TEMP_OOL_LOW;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h 5903;COMPONENT_TEMP_OOL_LOW;LOW;;./fsfw/src/fsfw/thermal/ThermalComponentIF.h
5904;COMPONENT_TEMP_OOL_HIGH;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h 5904;COMPONENT_TEMP_OOL_HIGH;LOW;;./fsfw/src/fsfw/thermal/ThermalComponentIF.h
5905;TEMP_NOT_IN_OP_RANGE;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h 5905;TEMP_NOT_IN_OP_RANGE;LOW;;./fsfw/src/fsfw/thermal/ThermalComponentIF.h
7101;FDIR_CHANGED_STATE;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h 7101;FDIR_CHANGED_STATE;INFO;;./fsfw/src/fsfw/fdir/FailureIsolationBase.h
7102;FDIR_STARTS_RECOVERY;MEDIUM;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h 7102;FDIR_STARTS_RECOVERY;MEDIUM;;./fsfw/src/fsfw/fdir/FailureIsolationBase.h
7103;FDIR_TURNS_OFF_DEVICE;MEDIUM;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h 7103;FDIR_TURNS_OFF_DEVICE;MEDIUM;;./fsfw/src/fsfw/fdir/FailureIsolationBase.h
7201;MONITOR_CHANGED_STATE;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h 7201;MONITOR_CHANGED_STATE;LOW;;./fsfw/src/fsfw/monitoring/MonitoringIF.h
7202;VALUE_BELOW_LOW_LIMIT;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h 7202;VALUE_BELOW_LOW_LIMIT;LOW;;./fsfw/src/fsfw/monitoring/MonitoringIF.h
7203;VALUE_ABOVE_HIGH_LIMIT;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h 7203;VALUE_ABOVE_HIGH_LIMIT;LOW;;./fsfw/src/fsfw/monitoring/MonitoringIF.h
7204;VALUE_OUT_OF_RANGE;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h 7204;VALUE_OUT_OF_RANGE;LOW;;./fsfw/src/fsfw/monitoring/MonitoringIF.h
7400;CHANGING_MODE;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h 7400;CHANGING_MODE;INFO;;./fsfw/src/fsfw/modes/HasModesIF.h
7401;MODE_INFO;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h 7401;MODE_INFO;INFO;;./fsfw/src/fsfw/modes/HasModesIF.h
7402;FALLBACK_FAILED;HIGH;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h 7402;FALLBACK_FAILED;HIGH;;./fsfw/src/fsfw/modes/HasModesIF.h
7403;MODE_TRANSITION_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h 7403;MODE_TRANSITION_FAILED;LOW;;./fsfw/src/fsfw/modes/HasModesIF.h
7404;CANT_KEEP_MODE;HIGH;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h 7404;CANT_KEEP_MODE;HIGH;;./fsfw/src/fsfw/modes/HasModesIF.h
7405;OBJECT_IN_INVALID_MODE;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h 7405;OBJECT_IN_INVALID_MODE;LOW;;./fsfw/src/fsfw/modes/HasModesIF.h
7406;FORCING_MODE;MEDIUM;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h 7406;FORCING_MODE;MEDIUM;;./fsfw/src/fsfw/modes/HasModesIF.h
7407;MODE_CMD_REJECTED;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h 7407;MODE_CMD_REJECTED;LOW;;./fsfw/src/fsfw/modes/HasModesIF.h
7506;HEALTH_INFO;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h 7506;HEALTH_INFO;INFO;;./fsfw/src/fsfw/health/HasHealthIF.h
7507;CHILD_CHANGED_HEALTH;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h 7507;CHILD_CHANGED_HEALTH;INFO;;./fsfw/src/fsfw/health/HasHealthIF.h
7508;CHILD_PROBLEMS;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h 7508;CHILD_PROBLEMS;LOW;;./fsfw/src/fsfw/health/HasHealthIF.h
7509;OVERWRITING_HEALTH;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h 7509;OVERWRITING_HEALTH;LOW;;./fsfw/src/fsfw/health/HasHealthIF.h
7510;TRYING_RECOVERY;MEDIUM;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h 7510;TRYING_RECOVERY;MEDIUM;;./fsfw/src/fsfw/health/HasHealthIF.h
7511;RECOVERY_STEP;MEDIUM;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h 7511;RECOVERY_STEP;MEDIUM;;./fsfw/src/fsfw/health/HasHealthIF.h
7512;RECOVERY_DONE;MEDIUM;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h 7512;RECOVERY_DONE;MEDIUM;;./fsfw/src/fsfw/health/HasHealthIF.h
7900;RF_AVAILABLE;INFO;A RF available signal was detected. P1: raw RFA state, P2: 0;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h 7900;RF_AVAILABLE;INFO;A RF available signal was detected. P1: raw RFA state, P2: 0;./fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
7901;RF_LOST;INFO;A previously found RF available signal was lost. P1: raw RFA state, P2: 0;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h 7901;RF_LOST;INFO;A previously found RF available signal was lost. P1: raw RFA state, P2: 0;./fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
7902;BIT_LOCK;INFO;A Bit Lock signal. Was detected. P1: raw BLO state, P2: 0;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h 7902;BIT_LOCK;INFO;A Bit Lock signal. Was detected. P1: raw BLO state, P2: 0;./fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
7903;BIT_LOCK_LOST;INFO;A previously found Bit Lock signal was lost. P1: raw BLO state, P2: 0;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h 7903;BIT_LOCK_LOST;INFO;A previously found Bit Lock signal was lost. P1: raw BLO state, P2: 0;./fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
7905;FRAME_PROCESSING_FAILED;LOW;The CCSDS Board could not interpret a TC;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h 7905;FRAME_PROCESSING_FAILED;LOW;The CCSDS Board could not interpret a TC;./fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
8900;CLOCK_SET;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/pus/Service9TimeManagement.h 8900;CLOCK_SET;INFO;;./fsfw/src/fsfw/pus/Service9TimeManagement.h
8901;CLOCK_SET_FAILURE;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/pus/Service9TimeManagement.h 8901;CLOCK_SET_FAILURE;LOW;;./fsfw/src/fsfw/pus/Service9TimeManagement.h
9700;TEST;INFO;;/home/rmueller/EIVE/eive-obsw/fsfw/src/fsfw/pus/Service17Test.h 9700;TEST;INFO;;./fsfw/src/fsfw/pus/Service17Test.h
10600;CHANGE_OF_SETUP_PARAMETER;LOW;;/home/rmueller/EIVE/eive-obsw/fsfw/hal/src/fsfw_hal/devicehandlers/MgmLIS3MDLHandler.h 10600;CHANGE_OF_SETUP_PARAMETER;LOW;;./fsfw/hal/src/fsfw_hal/devicehandlers/MgmLIS3MDLHandler.h
10900;GPIO_PULL_HIGH_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/HeaterHandler.h 10900;GPIO_PULL_HIGH_FAILED;LOW;;./mission/devices/HeaterHandler.h
10901;GPIO_PULL_LOW_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/HeaterHandler.h 10901;GPIO_PULL_LOW_FAILED;LOW;;./mission/devices/HeaterHandler.h
10902;SWITCH_ALREADY_ON;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/HeaterHandler.h 10902;SWITCH_ALREADY_ON;LOW;;./mission/devices/HeaterHandler.h
10903;SWITCH_ALREADY_OFF;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/HeaterHandler.h 10903;SWITCH_ALREADY_OFF;LOW;;./mission/devices/HeaterHandler.h
10904;MAIN_SWITCH_TIMEOUT;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/HeaterHandler.h 10904;MAIN_SWITCH_TIMEOUT;LOW;;./mission/devices/HeaterHandler.h
11000;MAIN_SWITCH_ON_TIMEOUT;LOW;;/home/rmueller/EIVE/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h 11000;MAIN_SWITCH_ON_TIMEOUT;LOW;;./mission/devices/SolarArrayDeploymentHandler.h
11001;MAIN_SWITCH_OFF_TIMEOUT;LOW;;/home/rmueller/EIVE/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h 11001;MAIN_SWITCH_OFF_TIMEOUT;LOW;;./mission/devices/SolarArrayDeploymentHandler.h
11002;DEPLOYMENT_FAILED;HIGH;;/home/rmueller/EIVE/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h 11002;DEPLOYMENT_FAILED;HIGH;;./mission/devices/SolarArrayDeploymentHandler.h
11003;DEPL_SA1_GPIO_SWTICH_ON_FAILED;HIGH;;/home/rmueller/EIVE/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h 11003;DEPL_SA1_GPIO_SWTICH_ON_FAILED;HIGH;;./mission/devices/SolarArrayDeploymentHandler.h
11004;DEPL_SA2_GPIO_SWTICH_ON_FAILED;HIGH;;/home/rmueller/EIVE/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h 11004;DEPL_SA2_GPIO_SWTICH_ON_FAILED;HIGH;;./mission/devices/SolarArrayDeploymentHandler.h
11101;MEMORY_READ_RPT_CRC_FAILURE;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/PlocMPSoCHandler.h 11101;MEMORY_READ_RPT_CRC_FAILURE;LOW;;./mission/devices/PlocMPSoCHandler.h
11102;ACK_FAILURE;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/PlocMPSoCHandler.h 11102;ACK_FAILURE;LOW;;./mission/devices/PlocMPSoCHandler.h
11103;EXE_FAILURE;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/PlocMPSoCHandler.h 11103;EXE_FAILURE;LOW;;./mission/devices/PlocMPSoCHandler.h
11104;CRC_FAILURE_EVENT;LOW;;/home/rmueller/EIVE/eive-obsw/mission/devices/PlocMPSoCHandler.h 11104;CRC_FAILURE_EVENT;LOW;;./mission/devices/PlocMPSoCHandler.h
11201;SELF_TEST_I2C_FAILURE;LOW;Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h 11201;SELF_TEST_I2C_FAILURE;LOW;Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;./mission/devices/IMTQHandler.h
11202;SELF_TEST_SPI_FAILURE;LOW;Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h 11202;SELF_TEST_SPI_FAILURE;LOW;Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;./mission/devices/IMTQHandler.h
11203;SELF_TEST_ADC_FAILURE;LOW;Get self test result returns failure in measurement of current and temperature. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h 11203;SELF_TEST_ADC_FAILURE;LOW;Get self test result returns failure in measurement of current and temperature. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;./mission/devices/IMTQHandler.h
11204;SELF_TEST_PWM_FAILURE;LOW;Get self test result returns PWM failure which concerns the coil actuation. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h 11204;SELF_TEST_PWM_FAILURE;LOW;Get self test result returns PWM failure which concerns the coil actuation. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;./mission/devices/IMTQHandler.h
11205;SELF_TEST_TC_FAILURE;LOW;Get self test result returns TC failure (system failure) P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h 11205;SELF_TEST_TC_FAILURE;LOW;Get self test result returns TC failure (system failure) P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;./mission/devices/IMTQHandler.h
11206;SELF_TEST_MTM_RANGE_FAILURE;LOW;Get self test result returns failure that MTM values were outside of the expected range. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h 11206;SELF_TEST_MTM_RANGE_FAILURE;LOW;Get self test result returns failure that MTM values were outside of the expected range. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;./mission/devices/IMTQHandler.h
11207;SELF_TEST_COIL_CURRENT_FAILURE;LOW;Get self test result returns failure indicating that the coil current was outside of the expected range P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h 11207;SELF_TEST_COIL_CURRENT_FAILURE;LOW;Get self test result returns failure indicating that the coil current was outside of the expected range P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;./mission/devices/IMTQHandler.h
11208;INVALID_ERROR_BYTE;LOW;Received invalid error byte. This indicates an error of the communication link between IMTQ and OBC.;/home/rmueller/EIVE/eive-obsw/mission/devices/IMTQHandler.h 11208;INVALID_ERROR_BYTE;LOW;Received invalid error byte. This indicates an error of the communication link between IMTQ and OBC.;./mission/devices/IMTQHandler.h
11301;ERROR_STATE;HIGH;Reaction wheel signals an error state;/home/rmueller/EIVE/eive-obsw/mission/devices/RwHandler.h 11301;ERROR_STATE;HIGH;Reaction wheel signals an error state;./mission/devices/RwHandler.h
11501;SUPV_MEMORY_READ_RPT_CRC_FAILURE;LOW;PLOC supervisor crc failure in telemetry packet;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocSupervisorHandler.h 11501;SUPV_MEMORY_READ_RPT_CRC_FAILURE;LOW;PLOC supervisor crc failure in telemetry packet;./bsp_q7s/devices/PlocSupervisorHandler.h
11502;SUPV_ACK_FAILURE;LOW;PLOC supervisor received acknowledgment failure report;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocSupervisorHandler.h 11502;SUPV_ACK_FAILURE;LOW;PLOC supervisor received acknowledgment failure report;./bsp_q7s/devices/PlocSupervisorHandler.h
11503;SUPV_EXE_FAILURE;LOW;PLOC received execution failure report;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocSupervisorHandler.h 11503;SUPV_EXE_FAILURE;LOW;PLOC received execution failure report;./bsp_q7s/devices/PlocSupervisorHandler.h
11504;SUPV_CRC_FAILURE_EVENT;LOW;PLOC supervisor reply has invalid crc;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocSupervisorHandler.h 11504;SUPV_CRC_FAILURE_EVENT;LOW;PLOC supervisor reply has invalid crc;./bsp_q7s/devices/PlocSupervisorHandler.h
11600;SANITIZATION_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/bsp_q7s/memory/SdCardManager.h 11600;SANITIZATION_FAILED;LOW;;./bsp_q7s/memory/SdCardManager.h
11700;UPDATE_FILE_NOT_EXISTS;LOW;;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocUpdater.h 11601;MOUNTED_SD_CARD;INFO;;./bsp_q7s/memory/SdCardManager.h
11701;ACTION_COMMANDING_FAILED;LOW;Failed to send command to supervisor handler P1: Return value of CommandActionHelper::commandAction P2: Action ID of command to send;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocUpdater.h 11603;REBOOT_HW;MEDIUM;;./bsp_q7s/core/CoreController.h
11702;UPDATE_AVAILABLE_FAILED;LOW;Supervisor handler replied action message indicating a command execution failure of the update available command;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocUpdater.h 11700;UPDATE_FILE_NOT_EXISTS;LOW;;./bsp_q7s/devices/PlocUpdater.h
11703;UPDATE_TRANSFER_FAILED;LOW;Supervisor handler failed to transfer an update space packet. P1: Parameter holds the number of update packets already sent (inclusive the failed packet);/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocUpdater.h 11701;ACTION_COMMANDING_FAILED;LOW;Failed to send command to supervisor handler P1: Return value of CommandActionHelper::commandAction P2: Action ID of command to send;./bsp_q7s/devices/PlocUpdater.h
11704;UPDATE_VERIFY_FAILED;LOW;Supervisor failed to execute the update verify command.;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocUpdater.h 11702;UPDATE_AVAILABLE_FAILED;LOW;Supervisor handler replied action message indicating a command execution failure of the update available command;./bsp_q7s/devices/PlocUpdater.h
11705;UPDATE_FINISHED;INFO;MPSoC update successful completed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocUpdater.h 11703;UPDATE_TRANSFER_FAILED;LOW;Supervisor handler failed to transfer an update space packet. P1: Parameter holds the number of update packets already sent (inclusive the failed packet);./bsp_q7s/devices/PlocUpdater.h
11800;SEND_MRAM_DUMP_FAILED;LOW;Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocMemoryDumper.h 11704;UPDATE_VERIFY_FAILED;LOW;Supervisor failed to execute the update verify command.;./bsp_q7s/devices/PlocUpdater.h
11801;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocMemoryDumper.h 11705;UPDATE_FINISHED;INFO;MPSoC update successful completed;./bsp_q7s/devices/PlocUpdater.h
11802;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/PlocMemoryDumper.h 11800;SEND_MRAM_DUMP_FAILED;LOW;Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command;./bsp_q7s/devices/PlocMemoryDumper.h
11901;INVALID_TC_FRAME;HIGH;;/home/rmueller/EIVE/eive-obsw/linux/obc/PdecHandler.h 11801;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;./bsp_q7s/devices/PlocMemoryDumper.h
11902;INVALID_FAR;HIGH;Read invalid FAR from PDEC after startup;/home/rmueller/EIVE/eive-obsw/linux/obc/PdecHandler.h 11802;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;./bsp_q7s/devices/PlocMemoryDumper.h
11903;CARRIER_LOCK;INFO;Carrier lock detected;/home/rmueller/EIVE/eive-obsw/linux/obc/PdecHandler.h 11901;INVALID_TC_FRAME;HIGH;;./linux/obc/PdecHandler.h
11904;BIT_LOCK_PDEC;INFO;Bit lock detected (data valid);/home/rmueller/EIVE/eive-obsw/linux/obc/PdecHandler.h 11902;INVALID_FAR;HIGH;Read invalid FAR from PDEC after startup;./linux/obc/PdecHandler.h
12000;IMAGE_UPLOAD_FAILED;LOW;Image upload failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 11903;CARRIER_LOCK;INFO;Carrier lock detected;./linux/obc/PdecHandler.h
12001;IMAGE_DOWNLOAD_FAILED;LOW;Image download failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 11904;BIT_LOCK_PDEC;INFO;Bit lock detected (data valid);./linux/obc/PdecHandler.h
12002;IMAGE_UPLOAD_SUCCESSFUL;LOW;Uploading image to star tracker was successfulop;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12000;IMAGE_UPLOAD_FAILED;LOW;Image upload failed;./bsp_q7s/devices/startracker/StrHelper.h
12003;IMAGE_DOWNLOAD_SUCCESSFUL;LOW;Image download was successful;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12001;IMAGE_DOWNLOAD_FAILED;LOW;Image download failed;./bsp_q7s/devices/startracker/StrHelper.h
12004;FLASH_WRITE_SUCCESSFUL;LOW;Finished flash write procedure successfully;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12002;IMAGE_UPLOAD_SUCCESSFUL;LOW;Uploading image to star tracker was successfulop;./bsp_q7s/devices/startracker/StrHelper.h
12005;FLASH_READ_SUCCESSFUL;LOW;Finished flash read procedure successfully;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12003;IMAGE_DOWNLOAD_SUCCESSFUL;LOW;Image download was successful;./bsp_q7s/devices/startracker/StrHelper.h
12006;FLASH_WRITE_FAILED;LOW;Flash write procedure failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12004;FLASH_WRITE_SUCCESSFUL;LOW;Finished flash write procedure successfully;./bsp_q7s/devices/startracker/StrHelper.h
12007;FLASH_READ_FAILED;LOW;Flash read procedure failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12005;FLASH_READ_SUCCESSFUL;LOW;Finished flash read procedure successfully;./bsp_q7s/devices/startracker/StrHelper.h
12008;FPGA_DOWNLOAD_SUCCESSFUL;LOW;Download of FPGA image successful;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12006;FLASH_WRITE_FAILED;LOW;Flash write procedure failed;./bsp_q7s/devices/startracker/StrHelper.h
12009;FPGA_DOWNLOAD_FAILED;LOW;Download of FPGA image failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12007;FLASH_READ_FAILED;LOW;Flash read procedure failed;./bsp_q7s/devices/startracker/StrHelper.h
12010;FPGA_UPLOAD_SUCCESSFUL;LOW;Upload of FPGA image successful;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12008;FPGA_DOWNLOAD_SUCCESSFUL;LOW;Download of FPGA image successful;./bsp_q7s/devices/startracker/StrHelper.h
12011;FPGA_UPLOAD_FAILED;LOW;Upload of FPGA image failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12009;FPGA_DOWNLOAD_FAILED;LOW;Download of FPGA image failed;./bsp_q7s/devices/startracker/StrHelper.h
12012;STR_HELPER_READING_REPLY_FAILED;LOW;Failed to read communication interface reply data P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12010;FPGA_UPLOAD_SUCCESSFUL;LOW;Upload of FPGA image successful;./bsp_q7s/devices/startracker/StrHelper.h
12013;STR_HELPER_COM_ERROR;LOW;Unexpected stop of decoding sequence P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12011;FPGA_UPLOAD_FAILED;LOW;Upload of FPGA image failed;./bsp_q7s/devices/startracker/StrHelper.h
12014;STR_HELPER_NO_REPLY;LOW;Star tracker did not send replies (maybe device is powered off) P1: Position of upload or download packet for which no reply was sent;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12012;STR_HELPER_READING_REPLY_FAILED;LOW;Failed to read communication interface reply data P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed;./bsp_q7s/devices/startracker/StrHelper.h
12015;STR_HELPER_DEC_ERROR;LOW;Error during decoding of received reply occurred P1: Return value of decoding function P2: Position of upload/download packet, or address of flash write/read request;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12013;STR_HELPER_COM_ERROR;LOW;Unexpected stop of decoding sequence P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed;./bsp_q7s/devices/startracker/StrHelper.h
12016;POSITION_MISMATCH;LOW;Position mismatch P1: The expected position and thus the position for which the image upload/download failed;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12014;STR_HELPER_NO_REPLY;LOW;Star tracker did not send replies (maybe device is powered off) P1: Position of upload or download packet for which no reply was sent;./bsp_q7s/devices/startracker/StrHelper.h
12017;STR_HELPER_FILE_NOT_EXISTS;LOW;Specified file does not exist P1: Internal state of str helper;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12015;STR_HELPER_DEC_ERROR;LOW;Error during decoding of received reply occurred P1: Return value of decoding function P2: Position of upload/download packet, or address of flash write/read request;./bsp_q7s/devices/startracker/StrHelper.h
12018;STR_HELPER_SENDING_PACKET_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12016;POSITION_MISMATCH;LOW;Position mismatch P1: The expected position and thus the position for which the image upload/download failed;./bsp_q7s/devices/startracker/StrHelper.h
12019;STR_HELPER_REQUESTING_MSG_FAILED;LOW;;/home/rmueller/EIVE/eive-obsw/bsp_q7s/devices/startracker/StrHelper.h 12017;STR_HELPER_FILE_NOT_EXISTS;LOW;Specified file does not exist P1: Internal state of str helper;./bsp_q7s/devices/startracker/StrHelper.h
12018;STR_HELPER_SENDING_PACKET_FAILED;LOW;;./bsp_q7s/devices/startracker/StrHelper.h
12019;STR_HELPER_REQUESTING_MSG_FAILED;LOW;;./bsp_q7s/devices/startracker/StrHelper.h
12101;NEG_V_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;./mission/devices/PayloadPcduHandler.h
12102;U_DRO_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;./mission/devices/PayloadPcduHandler.h
12103;I_DRO_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;./mission/devices/PayloadPcduHandler.h
12104;U_X8_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;./mission/devices/PayloadPcduHandler.h
12105;I_X8_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;./mission/devices/PayloadPcduHandler.h
12106;U_TX_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;./mission/devices/PayloadPcduHandler.h
12107;I_TX_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;./mission/devices/PayloadPcduHandler.h
12108;U_MPA_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;./mission/devices/PayloadPcduHandler.h
12109;I_MPA_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;./mission/devices/PayloadPcduHandler.h
12110;U_HPA_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;./mission/devices/PayloadPcduHandler.h
12111;I_HPA_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;./mission/devices/PayloadPcduHandler.h
1 2200 0x0898 STORE_SEND_WRITE_FAILED LOW ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
2 2201 0x0899 STORE_WRITE_FAILED LOW ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
3 2202 0x089a STORE_SEND_READ_FAILED LOW ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
4 2203 0x089b STORE_READ_FAILED LOW ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
5 2204 0x089c UNEXPECTED_MSG LOW ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
6 2205 0x089d STORING_FAILED LOW ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
7 2206 0x089e TM_DUMP_FAILED LOW ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
8 2207 0x089f STORE_INIT_FAILED LOW ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
9 2208 0x08a0 STORE_INIT_EMPTY INFO ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
10 2209 0x08a1 STORE_CONTENT_CORRUPTED LOW ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
11 2210 0x08a2 STORE_INITIALIZE INFO ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
12 2211 0x08a3 INIT_DONE INFO ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
13 2212 0x08a4 DUMP_FINISHED INFO ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
14 2213 0x08a5 DELETION_FINISHED INFO ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
15 2214 0x08a6 DELETION_FAILED LOW ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
16 2215 0x08a7 AUTO_CATALOGS_SENDING_FAILED INFO ./fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
17 2600 0x0a28 GET_DATA_FAILED LOW ./fsfw/src/fsfw/storagemanager/StorageManagerIF.h fsfw/src/fsfw/storagemanager/StorageManagerIF.h
18 2601 0x0a29 STORE_DATA_FAILED LOW ./fsfw/src/fsfw/storagemanager/StorageManagerIF.h fsfw/src/fsfw/storagemanager/StorageManagerIF.h
19 2800 0x0af0 DEVICE_BUILDING_COMMAND_FAILED LOW ./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
20 2801 0x0af1 DEVICE_SENDING_COMMAND_FAILED LOW ./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
21 2802 0x0af2 DEVICE_REQUESTING_REPLY_FAILED LOW ./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
22 2803 0x0af3 DEVICE_READING_REPLY_FAILED LOW ./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
23 2804 0x0af4 DEVICE_INTERPRETING_REPLY_FAILED LOW ./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
24 2805 0x0af5 DEVICE_MISSED_REPLY LOW ./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
25 2806 0x0af6 DEVICE_UNKNOWN_REPLY LOW ./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
26 2807 0x0af7 DEVICE_UNREQUESTED_REPLY LOW ./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
27 2808 0x0af8 INVALID_DEVICE_COMMAND LOW Indicates a SW bug in child class. ./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
28 2809 0x0af9 MONITORING_LIMIT_EXCEEDED LOW ./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
29 2810 0x0afa MONITORING_AMBIGUOUS HIGH ./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
30 2811 0x0afb DEVICE_WANTS_HARD_REBOOT HIGH ./fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
31 4201 0x1069 FUSE_CURRENT_HIGH LOW ./fsfw/src/fsfw/power/Fuse.h fsfw/src/fsfw/power/Fuse.h
32 4202 0x106a FUSE_WENT_OFF LOW ./fsfw/src/fsfw/power/Fuse.h fsfw/src/fsfw/power/Fuse.h
33 4204 0x106c POWER_ABOVE_HIGH_LIMIT LOW ./fsfw/src/fsfw/power/Fuse.h fsfw/src/fsfw/power/Fuse.h
34 4205 0x106d POWER_BELOW_LOW_LIMIT LOW ./fsfw/src/fsfw/power/Fuse.h fsfw/src/fsfw/power/Fuse.h
35 4300 0x10cc SWITCH_WENT_OFF LOW ./fsfw/src/fsfw/power/PowerSwitchIF.h fsfw/src/fsfw/power/PowerSwitchIF.h
36 5000 0x1388 HEATER_ON INFO ./fsfw/src/fsfw/thermal/Heater.h fsfw/src/fsfw/thermal/Heater.h
37 5001 0x1389 HEATER_OFF INFO ./fsfw/src/fsfw/thermal/Heater.h fsfw/src/fsfw/thermal/Heater.h
38 5002 0x138a HEATER_TIMEOUT LOW ./fsfw/src/fsfw/thermal/Heater.h fsfw/src/fsfw/thermal/Heater.h
39 5003 0x138b HEATER_STAYED_ON LOW ./fsfw/src/fsfw/thermal/Heater.h fsfw/src/fsfw/thermal/Heater.h
40 5004 0x138c HEATER_STAYED_OFF LOW ./fsfw/src/fsfw/thermal/Heater.h fsfw/src/fsfw/thermal/Heater.h
41 5200 0x1450 TEMP_SENSOR_HIGH LOW ./fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
42 5201 0x1451 TEMP_SENSOR_LOW LOW ./fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
43 5202 0x1452 TEMP_SENSOR_GRADIENT LOW ./fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
44 5901 0x170d COMPONENT_TEMP_LOW LOW ./fsfw/src/fsfw/thermal/ThermalComponentIF.h fsfw/src/fsfw/thermal/ThermalComponentIF.h
45 5902 0x170e COMPONENT_TEMP_HIGH LOW ./fsfw/src/fsfw/thermal/ThermalComponentIF.h fsfw/src/fsfw/thermal/ThermalComponentIF.h
46 5903 0x170f COMPONENT_TEMP_OOL_LOW LOW ./fsfw/src/fsfw/thermal/ThermalComponentIF.h fsfw/src/fsfw/thermal/ThermalComponentIF.h
47 5904 0x1710 COMPONENT_TEMP_OOL_HIGH LOW ./fsfw/src/fsfw/thermal/ThermalComponentIF.h fsfw/src/fsfw/thermal/ThermalComponentIF.h
48 5905 0x1711 TEMP_NOT_IN_OP_RANGE LOW ./fsfw/src/fsfw/thermal/ThermalComponentIF.h fsfw/src/fsfw/thermal/ThermalComponentIF.h
49 7101 0x1bbd FDIR_CHANGED_STATE INFO ./fsfw/src/fsfw/fdir/FailureIsolationBase.h fsfw/src/fsfw/fdir/FailureIsolationBase.h
50 7102 0x1bbe FDIR_STARTS_RECOVERY MEDIUM ./fsfw/src/fsfw/fdir/FailureIsolationBase.h fsfw/src/fsfw/fdir/FailureIsolationBase.h
51 7103 0x1bbf FDIR_TURNS_OFF_DEVICE MEDIUM ./fsfw/src/fsfw/fdir/FailureIsolationBase.h fsfw/src/fsfw/fdir/FailureIsolationBase.h
52 7201 0x1c21 MONITOR_CHANGED_STATE LOW ./fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/monitoring/MonitoringIF.h
53 7202 0x1c22 VALUE_BELOW_LOW_LIMIT LOW ./fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/monitoring/MonitoringIF.h
54 7203 0x1c23 VALUE_ABOVE_HIGH_LIMIT LOW ./fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/monitoring/MonitoringIF.h
55 7204 0x1c24 VALUE_OUT_OF_RANGE LOW ./fsfw/src/fsfw/monitoring/MonitoringIF.h fsfw/src/fsfw/monitoring/MonitoringIF.h
56 7400 0x1ce8 CHANGING_MODE INFO ./fsfw/src/fsfw/modes/HasModesIF.h fsfw/src/fsfw/modes/HasModesIF.h
57 7401 0x1ce9 MODE_INFO INFO ./fsfw/src/fsfw/modes/HasModesIF.h fsfw/src/fsfw/modes/HasModesIF.h
58 7402 0x1cea FALLBACK_FAILED HIGH ./fsfw/src/fsfw/modes/HasModesIF.h fsfw/src/fsfw/modes/HasModesIF.h
59 7403 0x1ceb MODE_TRANSITION_FAILED LOW ./fsfw/src/fsfw/modes/HasModesIF.h fsfw/src/fsfw/modes/HasModesIF.h
60 7404 0x1cec CANT_KEEP_MODE HIGH ./fsfw/src/fsfw/modes/HasModesIF.h fsfw/src/fsfw/modes/HasModesIF.h
61 7405 0x1ced OBJECT_IN_INVALID_MODE LOW ./fsfw/src/fsfw/modes/HasModesIF.h fsfw/src/fsfw/modes/HasModesIF.h
62 7406 0x1cee FORCING_MODE MEDIUM ./fsfw/src/fsfw/modes/HasModesIF.h fsfw/src/fsfw/modes/HasModesIF.h
63 7407 0x1cef MODE_CMD_REJECTED LOW ./fsfw/src/fsfw/modes/HasModesIF.h fsfw/src/fsfw/modes/HasModesIF.h
64 7506 0x1d52 HEALTH_INFO INFO ./fsfw/src/fsfw/health/HasHealthIF.h fsfw/src/fsfw/health/HasHealthIF.h
65 7507 0x1d53 CHILD_CHANGED_HEALTH INFO ./fsfw/src/fsfw/health/HasHealthIF.h fsfw/src/fsfw/health/HasHealthIF.h
66 7508 0x1d54 CHILD_PROBLEMS LOW ./fsfw/src/fsfw/health/HasHealthIF.h fsfw/src/fsfw/health/HasHealthIF.h
67 7509 0x1d55 OVERWRITING_HEALTH LOW ./fsfw/src/fsfw/health/HasHealthIF.h fsfw/src/fsfw/health/HasHealthIF.h
68 7510 0x1d56 TRYING_RECOVERY MEDIUM ./fsfw/src/fsfw/health/HasHealthIF.h fsfw/src/fsfw/health/HasHealthIF.h
69 7511 0x1d57 RECOVERY_STEP MEDIUM ./fsfw/src/fsfw/health/HasHealthIF.h fsfw/src/fsfw/health/HasHealthIF.h
70 7512 0x1d58 RECOVERY_DONE MEDIUM ./fsfw/src/fsfw/health/HasHealthIF.h fsfw/src/fsfw/health/HasHealthIF.h
71 7900 0x1edc RF_AVAILABLE INFO A RF available signal was detected. P1: raw RFA state, P2: 0 ./fsfw/src/fsfw/datalinklayer/DataLinkLayer.h fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
72 7901 0x1edd RF_LOST INFO A previously found RF available signal was lost. P1: raw RFA state, P2: 0 ./fsfw/src/fsfw/datalinklayer/DataLinkLayer.h fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
73 7902 0x1ede BIT_LOCK INFO A Bit Lock signal. Was detected. P1: raw BLO state, P2: 0 ./fsfw/src/fsfw/datalinklayer/DataLinkLayer.h fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
74 7903 0x1edf BIT_LOCK_LOST INFO A previously found Bit Lock signal was lost. P1: raw BLO state, P2: 0 ./fsfw/src/fsfw/datalinklayer/DataLinkLayer.h fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
75 7905 0x1ee1 FRAME_PROCESSING_FAILED LOW The CCSDS Board could not interpret a TC ./fsfw/src/fsfw/datalinklayer/DataLinkLayer.h fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
76 8900 0x22c4 CLOCK_SET INFO ./fsfw/src/fsfw/pus/Service9TimeManagement.h fsfw/src/fsfw/pus/Service9TimeManagement.h
77 8901 0x22c5 CLOCK_SET_FAILURE LOW ./fsfw/src/fsfw/pus/Service9TimeManagement.h fsfw/src/fsfw/pus/Service9TimeManagement.h
78 9700 0x25e4 TEST INFO ./fsfw/src/fsfw/pus/Service17Test.h fsfw/src/fsfw/pus/Service17Test.h
79 10600 0x2968 CHANGE_OF_SETUP_PARAMETER LOW ./fsfw/hal/src/fsfw_hal/devicehandlers/MgmLIS3MDLHandler.h fsfw/hal/src/fsfw_hal/devicehandlers/MgmLIS3MDLHandler.h
80 10800 10900 0x2a30 SWITCH_CMD_SENT GPIO_PULL_HIGH_FAILED INFO LOW Indicates that a FSFW object requested setting a switch P1: 1 if on was requested, 0 for off | P2: Switch Index ./mission/devices/HeaterHandler.h mission/devices/devicedefinitions/powerDefinitions.h
81 10801 10901 0x2a31 SWITCH_HAS_CHANGED GPIO_PULL_LOW_FAILED INFO LOW Indicated that a swithc state has changed P1: New switch state, 1 for on, 0 for off | P2: Switch Index ./mission/devices/HeaterHandler.h mission/devices/devicedefinitions/powerDefinitions.h
82 10802 10902 0x2a32 SWITCHING_Q7S_DENIED SWITCH_ALREADY_ON MEDIUM LOW ./mission/devices/HeaterHandler.h mission/devices/devicedefinitions/powerDefinitions.h
83 10900 10903 0x2a94 GPIO_PULL_HIGH_FAILED SWITCH_ALREADY_OFF LOW ./mission/devices/HeaterHandler.h mission/devices/HeaterHandler.h
84 10901 10904 0x2a95 GPIO_PULL_LOW_FAILED MAIN_SWITCH_TIMEOUT LOW ./mission/devices/HeaterHandler.h mission/devices/HeaterHandler.h
85 10902 11000 0x2a96 SWITCH_ALREADY_ON MAIN_SWITCH_ON_TIMEOUT LOW ./mission/devices/SolarArrayDeploymentHandler.h mission/devices/HeaterHandler.h
86 10903 11001 0x2a97 SWITCH_ALREADY_OFF MAIN_SWITCH_OFF_TIMEOUT LOW ./mission/devices/SolarArrayDeploymentHandler.h mission/devices/HeaterHandler.h
87 10904 11002 0x2a98 MAIN_SWITCH_TIMEOUT DEPLOYMENT_FAILED LOW HIGH ./mission/devices/SolarArrayDeploymentHandler.h mission/devices/HeaterHandler.h
88 11000 11003 0x2af8 MAIN_SWITCH_ON_TIMEOUT DEPL_SA1_GPIO_SWTICH_ON_FAILED LOW HIGH ./mission/devices/SolarArrayDeploymentHandler.h mission/devices/SolarArrayDeploymentHandler.h
89 11001 11004 0x2af9 MAIN_SWITCH_OFF_TIMEOUT DEPL_SA2_GPIO_SWTICH_ON_FAILED LOW HIGH ./mission/devices/SolarArrayDeploymentHandler.h mission/devices/SolarArrayDeploymentHandler.h
90 11002 11101 0x2afa DEPLOYMENT_FAILED MEMORY_READ_RPT_CRC_FAILURE HIGH LOW ./mission/devices/PlocMPSoCHandler.h mission/devices/SolarArrayDeploymentHandler.h
91 11003 11102 0x2afb DEPL_SA1_GPIO_SWTICH_ON_FAILED ACK_FAILURE HIGH LOW ./mission/devices/PlocMPSoCHandler.h mission/devices/SolarArrayDeploymentHandler.h
92 11004 11103 0x2afc DEPL_SA2_GPIO_SWTICH_ON_FAILED EXE_FAILURE HIGH LOW ./mission/devices/PlocMPSoCHandler.h mission/devices/SolarArrayDeploymentHandler.h
93 11101 11104 0x2b5d MEMORY_READ_RPT_CRC_FAILURE CRC_FAILURE_EVENT LOW ./mission/devices/PlocMPSoCHandler.h mission/devices/PlocMPSoCHandler.h
94 11102 11201 0x2b5e ACK_FAILURE SELF_TEST_I2C_FAILURE LOW Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA ./mission/devices/IMTQHandler.h mission/devices/PlocMPSoCHandler.h
95 11103 11202 0x2b5f EXE_FAILURE SELF_TEST_SPI_FAILURE LOW Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA ./mission/devices/IMTQHandler.h mission/devices/PlocMPSoCHandler.h
96 11104 11203 0x2b60 CRC_FAILURE_EVENT SELF_TEST_ADC_FAILURE LOW Get self test result returns failure in measurement of current and temperature. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA ./mission/devices/IMTQHandler.h mission/devices/PlocMPSoCHandler.h
97 11201 11204 0x2bc1 SELF_TEST_I2C_FAILURE SELF_TEST_PWM_FAILURE LOW Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Get self test result returns PWM failure which concerns the coil actuation. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA ./mission/devices/IMTQHandler.h mission/devices/IMTQHandler.h
98 11202 11205 0x2bc2 SELF_TEST_SPI_FAILURE SELF_TEST_TC_FAILURE LOW Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Get self test result returns TC failure (system failure) P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA ./mission/devices/IMTQHandler.h mission/devices/IMTQHandler.h
99 11203 11206 0x2bc3 SELF_TEST_ADC_FAILURE SELF_TEST_MTM_RANGE_FAILURE LOW Get self test result returns failure in measurement of current and temperature. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Get self test result returns failure that MTM values were outside of the expected range. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA ./mission/devices/IMTQHandler.h mission/devices/IMTQHandler.h
100 11204 11207 0x2bc4 SELF_TEST_PWM_FAILURE SELF_TEST_COIL_CURRENT_FAILURE LOW Get self test result returns PWM failure which concerns the coil actuation. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Get self test result returns failure indicating that the coil current was outside of the expected range P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA ./mission/devices/IMTQHandler.h mission/devices/IMTQHandler.h
101 11205 11208 0x2bc5 SELF_TEST_TC_FAILURE INVALID_ERROR_BYTE LOW Get self test result returns TC failure (system failure) P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Received invalid error byte. This indicates an error of the communication link between IMTQ and OBC. ./mission/devices/IMTQHandler.h mission/devices/IMTQHandler.h
102 11206 11301 0x2bc6 SELF_TEST_MTM_RANGE_FAILURE ERROR_STATE LOW HIGH Get self test result returns failure that MTM values were outside of the expected range. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA Reaction wheel signals an error state ./mission/devices/RwHandler.h mission/devices/IMTQHandler.h
103 11207 11501 0x2bc7 SELF_TEST_COIL_CURRENT_FAILURE SUPV_MEMORY_READ_RPT_CRC_FAILURE LOW Get self test result returns failure indicating that the coil current was outside of the expected range P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA PLOC supervisor crc failure in telemetry packet ./bsp_q7s/devices/PlocSupervisorHandler.h mission/devices/IMTQHandler.h
104 11208 11502 0x2bc8 INVALID_ERROR_BYTE SUPV_ACK_FAILURE LOW Received invalid error byte. This indicates an error of the communication link between IMTQ and OBC. PLOC supervisor received acknowledgment failure report ./bsp_q7s/devices/PlocSupervisorHandler.h mission/devices/IMTQHandler.h
105 11301 11503 0x2c25 ERROR_STATE SUPV_EXE_FAILURE HIGH LOW Reaction wheel signals an error state PLOC received execution failure report ./bsp_q7s/devices/PlocSupervisorHandler.h mission/devices/RwHandler.h
106 11401 11504 0x2c89 BOOTING_FIRMWARE_FAILED SUPV_CRC_FAILURE_EVENT LOW Failed to boot firmware PLOC supervisor reply has invalid crc ./bsp_q7s/devices/PlocSupervisorHandler.h linux/devices/startracker/StarTrackerHandler.h
107 11402 11600 0x2c8a BOOTING_BOOTLOADER_FAILED SANITIZATION_FAILED LOW Failed to boot star tracker into bootloader mode ./bsp_q7s/memory/SdCardManager.h linux/devices/startracker/StarTrackerHandler.h
108 11501 11601 0x2ced SUPV_MEMORY_READ_RPT_CRC_FAILURE MOUNTED_SD_CARD LOW INFO PLOC supervisor crc failure in telemetry packet ./bsp_q7s/memory/SdCardManager.h bsp_q7s/devices/PlocSupervisorHandler.h
109 11502 11603 0x2cee SUPV_ACK_FAILURE REBOOT_HW LOW MEDIUM PLOC supervisor received acknowledgment failure report ./bsp_q7s/core/CoreController.h bsp_q7s/devices/PlocSupervisorHandler.h
110 11503 11700 0x2cef SUPV_EXE_FAILURE UPDATE_FILE_NOT_EXISTS LOW PLOC received execution failure report ./bsp_q7s/devices/PlocUpdater.h bsp_q7s/devices/PlocSupervisorHandler.h
111 11504 11701 0x2cf0 SUPV_CRC_FAILURE_EVENT ACTION_COMMANDING_FAILED LOW PLOC supervisor reply has invalid crc Failed to send command to supervisor handler P1: Return value of CommandActionHelper::commandAction P2: Action ID of command to send ./bsp_q7s/devices/PlocUpdater.h bsp_q7s/devices/PlocSupervisorHandler.h
112 11600 11702 0x2d50 SANITIZATION_FAILED UPDATE_AVAILABLE_FAILED LOW Supervisor handler replied action message indicating a command execution failure of the update available command ./bsp_q7s/devices/PlocUpdater.h bsp_q7s/memory/SdCardManager.h
113 11601 11703 0x2d51 MOUNTED_SD_CARD UPDATE_TRANSFER_FAILED INFO LOW Supervisor handler failed to transfer an update space packet. P1: Parameter holds the number of update packets already sent (inclusive the failed packet) ./bsp_q7s/devices/PlocUpdater.h bsp_q7s/memory/SdCardManager.h
114 11700 11704 0x2db4 UPDATE_FILE_NOT_EXISTS UPDATE_VERIFY_FAILED LOW Supervisor failed to execute the update verify command. ./bsp_q7s/devices/PlocUpdater.h bsp_q7s/devices/PlocUpdater.h
115 11701 11705 0x2db5 ACTION_COMMANDING_FAILED UPDATE_FINISHED LOW INFO Failed to send command to supervisor handler P1: Return value of CommandActionHelper::commandAction P2: Action ID of command to send MPSoC update successful completed ./bsp_q7s/devices/PlocUpdater.h bsp_q7s/devices/PlocUpdater.h
116 11702 11800 0x2db6 UPDATE_AVAILABLE_FAILED SEND_MRAM_DUMP_FAILED LOW Supervisor handler replied action message indicating a command execution failure of the update available command Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command ./bsp_q7s/devices/PlocMemoryDumper.h bsp_q7s/devices/PlocUpdater.h
117 11703 11801 0x2db7 UPDATE_TRANSFER_FAILED MRAM_DUMP_FAILED LOW Supervisor handler failed to transfer an update space packet. P1: Parameter holds the number of update packets already sent (inclusive the failed packet) Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command ./bsp_q7s/devices/PlocMemoryDumper.h bsp_q7s/devices/PlocUpdater.h
118 11704 11802 0x2db8 UPDATE_VERIFY_FAILED MRAM_DUMP_FINISHED LOW Supervisor failed to execute the update verify command. MRAM dump finished successfully ./bsp_q7s/devices/PlocMemoryDumper.h bsp_q7s/devices/PlocUpdater.h
119 11705 11901 0x2db9 UPDATE_FINISHED INVALID_TC_FRAME INFO HIGH MPSoC update successful completed ./linux/obc/PdecHandler.h bsp_q7s/devices/PlocUpdater.h
120 11800 11902 0x2e18 SEND_MRAM_DUMP_FAILED INVALID_FAR LOW HIGH Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command Read invalid FAR from PDEC after startup ./linux/obc/PdecHandler.h bsp_q7s/devices/PlocMemoryDumper.h
121 11801 11903 0x2e19 MRAM_DUMP_FAILED CARRIER_LOCK LOW INFO Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command Carrier lock detected ./linux/obc/PdecHandler.h bsp_q7s/devices/PlocMemoryDumper.h
122 11802 11904 0x2e1a MRAM_DUMP_FINISHED BIT_LOCK_PDEC LOW INFO MRAM dump finished successfully Bit lock detected (data valid) ./linux/obc/PdecHandler.h bsp_q7s/devices/PlocMemoryDumper.h
123 11901 12000 0x2e7d INVALID_TC_FRAME IMAGE_UPLOAD_FAILED HIGH LOW Image upload failed ./bsp_q7s/devices/startracker/StrHelper.h linux/obc/PdecHandler.h
124 11902 12001 0x2e7e INVALID_FAR IMAGE_DOWNLOAD_FAILED HIGH LOW Read invalid FAR from PDEC after startup Image download failed ./bsp_q7s/devices/startracker/StrHelper.h linux/obc/PdecHandler.h
125 11903 12002 0x2e7f CARRIER_LOCK IMAGE_UPLOAD_SUCCESSFUL INFO LOW Carrier lock detected Uploading image to star tracker was successfulop ./bsp_q7s/devices/startracker/StrHelper.h linux/obc/PdecHandler.h
126 11904 12003 0x2e80 BIT_LOCK_PDEC IMAGE_DOWNLOAD_SUCCESSFUL INFO LOW Bit lock detected (data valid) Image download was successful ./bsp_q7s/devices/startracker/StrHelper.h linux/obc/PdecHandler.h
127 12000 12004 0x2ee0 IMAGE_UPLOAD_FAILED FLASH_WRITE_SUCCESSFUL LOW Image upload failed Finished flash write procedure successfully ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
128 12001 12005 0x2ee1 IMAGE_DOWNLOAD_FAILED FLASH_READ_SUCCESSFUL LOW Image download failed Finished flash read procedure successfully ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
129 12002 12006 0x2ee2 IMAGE_UPLOAD_SUCCESSFUL FLASH_WRITE_FAILED LOW Uploading image to star tracker was successfulop Flash write procedure failed ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
130 12003 12007 0x2ee3 IMAGE_DOWNLOAD_SUCCESSFUL FLASH_READ_FAILED LOW Image download was successful Flash read procedure failed ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
131 12004 12008 0x2ee4 FLASH_WRITE_SUCCESSFUL FPGA_DOWNLOAD_SUCCESSFUL LOW Finished flash write procedure successfully Download of FPGA image successful ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
132 12005 12009 0x2ee5 FLASH_READ_SUCCESSFUL FPGA_DOWNLOAD_FAILED LOW Finished flash read procedure successfully Download of FPGA image failed ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
133 12006 12010 0x2ee6 FLASH_READ_FAILED FPGA_UPLOAD_SUCCESSFUL LOW Flash read procedure failed Upload of FPGA image successful ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
134 12007 12011 0x2ee7 FIRMWARE_UPDATE_SUCCESSFUL FPGA_UPLOAD_FAILED LOW Firmware update was successful Upload of FPGA image failed ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
135 12008 12012 0x2ee8 FIRMWARE_UPDATE_FAILED STR_HELPER_READING_REPLY_FAILED LOW Firmware update failed Failed to read communication interface reply data P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
136 12009 12013 0x2ee9 STR_HELPER_READING_REPLY_FAILED STR_HELPER_COM_ERROR LOW Failed to read communication interface reply data P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed Unexpected stop of decoding sequence P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
137 12010 12014 0x2eea STR_HELPER_COM_ERROR STR_HELPER_NO_REPLY LOW Unexpected stop of decoding sequence P1: Return code of failed communication interface read call P1: Upload/download position for which the read call failed Star tracker did not send replies (maybe device is powered off) P1: Position of upload or download packet for which no reply was sent ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
138 12011 12015 0x2eeb STR_HELPER_NO_REPLY STR_HELPER_DEC_ERROR LOW Star tracker did not send replies (maybe device is powered off) P1: Position of upload or download packet for which no reply was sent Error during decoding of received reply occurred P1: Return value of decoding function P2: Position of upload/download packet, or address of flash write/read request ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
139 12012 12016 0x2eec STR_HELPER_DEC_ERROR POSITION_MISMATCH LOW Error during decoding of received reply occurred P1: Return value of decoding function P2: Position of upload/download packet, or address of flash write/read request Position mismatch P1: The expected position and thus the position for which the image upload/download failed ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
140 12013 12017 0x2eed POSITION_MISMATCH STR_HELPER_FILE_NOT_EXISTS LOW Position mismatch P1: The expected position and thus the position for which the image upload/download failed Specified file does not exist P1: Internal state of str helper ./bsp_q7s/devices/startracker/StrHelper.h linux/devices/startracker/StrHelper.h
141 12018 STR_HELPER_SENDING_PACKET_FAILED LOW ./bsp_q7s/devices/startracker/StrHelper.h
142 12019 STR_HELPER_REQUESTING_MSG_FAILED LOW ./bsp_q7s/devices/startracker/StrHelper.h
143 12101 NEG_V_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value ./mission/devices/PayloadPcduHandler.h
144 12102 U_DRO_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value ./mission/devices/PayloadPcduHandler.h
145 12103 I_DRO_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value ./mission/devices/PayloadPcduHandler.h
146 12104 U_X8_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value ./mission/devices/PayloadPcduHandler.h
147 12105 I_X8_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value ./mission/devices/PayloadPcduHandler.h
148 12106 U_TX_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value ./mission/devices/PayloadPcduHandler.h
149 12107 I_TX_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value ./mission/devices/PayloadPcduHandler.h
150 12108 U_MPA_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value ./mission/devices/PayloadPcduHandler.h
151 12109 I_MPA_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value ./mission/devices/PayloadPcduHandler.h
152 12110 U_HPA_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value ./mission/devices/PayloadPcduHandler.h
153 12111 I_HPA_OUT_OF_BOUNDS MEDIUM P1: 0 -> too low, 1 -> too high P2: Float value ./mission/devices/PayloadPcduHandler.h

View File

@@ -74,6 +74,7 @@
0x50000300;TMTC_BRIDGE 0x50000300;TMTC_BRIDGE
0x50000400;TMTC_POLLING_TASK 0x50000400;TMTC_POLLING_TASK
0x50000500;FILE_SYSTEM_HANDLER 0x50000500;FILE_SYSTEM_HANDLER
0x50000550;SDC_MANAGER
0x50000600;PTME 0x50000600;PTME
0x50000700;PDEC_HANDLER 0x50000700;PDEC_HANDLER
0x50000800;CCSDS_HANDLER 0x50000800;CCSDS_HANDLER
1 0x00005060 P60DOCK_TEST_TASK
74 0x50000300 TMTC_BRIDGE
75 0x50000400 TMTC_POLLING_TASK
76 0x50000500 FILE_SYSTEM_HANDLER
77 0x50000550 SDC_MANAGER
78 0x50000550 0x50000600 SDC_MANAGER PTME
79 0x50000600 0x50000700 PTME PDEC_HANDLER
80 0x50000700 0x50000800 PDEC_HANDLER CCSDS_HANDLER

File diff suppressed because it is too large Load Diff

View File

@@ -2,9 +2,18 @@ import os
import enum import enum
from pathlib import Path from pathlib import Path
PATH_VAR_ROOT = Path(os.path.abspath(os.curdir))
ROOT_DIR = PATH_VAR_ROOT.absolute() def determine_obsw_root_path() -> str:
OBSW_ROOT_DIR = PATH_VAR_ROOT.parent.absolute() for _ in range(5):
if os.path.exists("CMakeLists.txt"):
return os.curdir
else:
os.chdir("..")
PATH_VAR_ROOT = os.path.dirname(os.path.realpath(__file__))
ROOT_DIR = PATH_VAR_ROOT
OBSW_ROOT_DIR = Path(determine_obsw_root_path())
DATABASE_NAME = "eive_mod.db" DATABASE_NAME = "eive_mod.db"

View File

@@ -3,12 +3,17 @@ Event exporter.
""" """
import datetime import datetime
import time import time
import os
from fsfwgen.events.event_parser import handle_csv_export, handle_cpp_export, \ from fsfwgen.events.event_parser import (
SubsystemDefinitionParser, EventParser handle_csv_export,
handle_cpp_export,
SubsystemDefinitionParser,
EventParser,
)
from fsfwgen.parserbase.file_list_parser import FileListParser from fsfwgen.parserbase.file_list_parser import FileListParser
from fsfwgen.utility.printer import PrettyPrinter from fsfwgen.utility.printer import PrettyPrinter
from fsfwgen.utility.file_management import copy_file, move_file from fsfwgen.utility.file_management import copy_file
from fsfwgen.core import get_console_logger from fsfwgen.core import get_console_logger
from definitions import BspType, ROOT_DIR, OBSW_ROOT_DIR from definitions import BspType, ROOT_DIR, OBSW_ROOT_DIR
@@ -25,15 +30,16 @@ MOVE_CSV_FILE = True
PARSE_HOST_BSP = True PARSE_HOST_BSP = True
CPP_FILENAME = f'{__package__}/translateEvents.cpp' # Store these files relative to the events folder
CPP_H_FILENAME = f'{__package__}/translateEvents.h' CPP_FILENAME = f"{os.path.dirname(os.path.realpath(__file__))}/translateEvents.cpp"
CPP_H_FILENAME = f"{os.path.dirname(os.path.realpath(__file__))}/translateEvents.h"
BSP_SELECT = BspType.BSP_Q7S BSP_SELECT = BspType.BSP_Q7S
BSP_DIR_NAME = BSP_SELECT.value BSP_DIR_NAME = BSP_SELECT.value
CSV_FILENAME = f"{BSP_SELECT.value}_events.csv" # Store this file in the root of the generators folder
CSV_MOVE_DESTINATION = f'{ROOT_DIR}' CSV_FILENAME = f"{ROOT_DIR}/{BSP_SELECT.value}_events.csv"
if BSP_SELECT == BspType.BSP_Q7S or BSP_SELECT == BspType.BSP_LINUX_BOARD: if BSP_SELECT == BspType.BSP_Q7S or BSP_SELECT == BspType.BSP_LINUX_BOARD:
FSFW_CONFIG_ROOT = f"{OBSW_ROOT_DIR}/linux/fsfwconfig" FSFW_CONFIG_ROOT = f"{OBSW_ROOT_DIR}/linux/fsfwconfig"
@@ -47,16 +53,20 @@ FILE_SEPARATOR = ";"
SUBSYSTEM_DEFINITION_DESTINATIONS = [ SUBSYSTEM_DEFINITION_DESTINATIONS = [
f"{FSFW_CONFIG_ROOT}/events/subsystemIdRanges.h", f"{FSFW_CONFIG_ROOT}/events/subsystemIdRanges.h",
f"{OBSW_ROOT_DIR}/fsfw/src/fsfw/events/fwSubsystemIdRanges.h", f"{OBSW_ROOT_DIR}/fsfw/src/fsfw/events/fwSubsystemIdRanges.h",
f"{OBSW_ROOT_DIR}/common/config/commonSubsystemIds.h" f"{OBSW_ROOT_DIR}/common/config/commonSubsystemIds.h",
] ]
HEADER_DEFINITION_DESTINATIONS = [ HEADER_DEFINITION_DESTINATIONS = [
f"{OBSW_ROOT_DIR}/mission/", f"{OBSW_ROOT_DIR}/fsfw/", f"{FSFW_CONFIG_ROOT}", f"{OBSW_ROOT_DIR}/mission/",
f"{OBSW_ROOT_DIR}/test/", f"{OBSW_ROOT_DIR}/bsp_q7s", f"{OBSW_ROOT_DIR}/linux/" f"{OBSW_ROOT_DIR}/fsfw/",
f"{FSFW_CONFIG_ROOT}",
f"{OBSW_ROOT_DIR}/test/",
f"{OBSW_ROOT_DIR}/bsp_q7s",
f"{OBSW_ROOT_DIR}/linux/",
] ]
def parse_events( def parse_events(
generate_csv: bool = True, generate_cpp: bool = True, print_events: bool = True generate_csv: bool = True, generate_cpp: bool = True, print_events: bool = True
): ):
LOGGER.info("EventParser: Parsing events: ") LOGGER.info("EventParser: Parsing events: ")
# Small delay for clean printout # Small delay for clean printout
@@ -73,11 +83,14 @@ def parse_events(
) )
if generate_cpp: if generate_cpp:
handle_cpp_export( handle_cpp_export(
event_list=event_list, date_string=DATE_STRING_FULL, file_name=CPP_FILENAME, event_list=event_list,
generate_header=GENERATE_CPP_H, header_file_name=CPP_H_FILENAME date_string=DATE_STRING_FULL,
file_name=CPP_FILENAME,
generate_header=GENERATE_CPP_H,
header_file_name=CPP_H_FILENAME,
) )
if COPY_CPP_FILE: if COPY_CPP_FILE:
LOGGER.info(f'EventParser: Copying file to {CPP_COPY_DESTINATION}') LOGGER.info(f"EventParser: Copying file to {CPP_COPY_DESTINATION}")
copy_file(CPP_FILENAME, CPP_COPY_DESTINATION) copy_file(CPP_FILENAME, CPP_COPY_DESTINATION)
copy_file(CPP_H_FILENAME, CPP_COPY_DESTINATION) copy_file(CPP_H_FILENAME, CPP_COPY_DESTINATION)
@@ -85,7 +98,7 @@ def parse_events(
def generate_event_list() -> list: def generate_event_list() -> list:
subsystem_parser = SubsystemDefinitionParser(SUBSYSTEM_DEFINITION_DESTINATIONS) subsystem_parser = SubsystemDefinitionParser(SUBSYSTEM_DEFINITION_DESTINATIONS)
subsystem_table = subsystem_parser.parse_files() subsystem_table = subsystem_parser.parse_files()
LOGGER.info(f'Found {len(subsystem_table)} subsystem definitions.') LOGGER.info(f"Found {len(subsystem_table)} subsystem definitions.")
PrettyPrinter.pprint(subsystem_table) PrettyPrinter.pprint(subsystem_table)
event_header_parser = FileListParser(HEADER_DEFINITION_DESTINATIONS) event_header_parser = FileListParser(HEADER_DEFINITION_DESTINATIONS)
event_headers = event_header_parser.parse_header_files( event_headers = event_header_parser.parse_header_files(
@@ -94,8 +107,9 @@ def generate_event_list() -> list:
# PrettyPrinter.pprint(event_headers) # PrettyPrinter.pprint(event_headers)
# myEventList = parseHeaderFiles(subsystem_table, event_headers) # myEventList = parseHeaderFiles(subsystem_table, event_headers)
event_parser = EventParser(event_headers, subsystem_table) event_parser = EventParser(event_headers, subsystem_table)
event_parser.obsw_root_path = OBSW_ROOT_DIR
event_parser.set_moving_window_mode(moving_window_size=7) event_parser.set_moving_window_mode(moving_window_size=7)
event_table = event_parser.parse_files() event_table = event_parser.parse_files()
event_list = sorted(event_table.items()) event_list = sorted(event_table.items())
LOGGER.info(f'Found {len(event_list)} entries') LOGGER.info(f"Found {len(event_list)} entries")
return event_list return event_list

View File

@@ -1,7 +1,7 @@
/** /**
* @brief Auto-generated event translation file. Contains 140 translations. * @brief Auto-generated event translation file. Contains 153 translations.
* @details * @details
* Generated on: 2022-02-03 17:30:40 * Generated on: 2022-02-26 13:53:13
*/ */
#include "translateEvents.h" #include "translateEvents.h"
@@ -112,6 +112,8 @@ const char *SUPV_ACK_FAILURE_STRING = "SUPV_ACK_FAILURE";
const char *SUPV_EXE_FAILURE_STRING = "SUPV_EXE_FAILURE"; const char *SUPV_EXE_FAILURE_STRING = "SUPV_EXE_FAILURE";
const char *SUPV_CRC_FAILURE_EVENT_STRING = "SUPV_CRC_FAILURE_EVENT"; const char *SUPV_CRC_FAILURE_EVENT_STRING = "SUPV_CRC_FAILURE_EVENT";
const char *SANITIZATION_FAILED_STRING = "SANITIZATION_FAILED"; const char *SANITIZATION_FAILED_STRING = "SANITIZATION_FAILED";
const char *MOUNTED_SD_CARD_STRING = "MOUNTED_SD_CARD";
const char *REBOOT_HW_STRING = "REBOOT_HW";
const char *UPDATE_FILE_NOT_EXISTS_STRING = "UPDATE_FILE_NOT_EXISTS"; const char *UPDATE_FILE_NOT_EXISTS_STRING = "UPDATE_FILE_NOT_EXISTS";
const char *ACTION_COMMANDING_FAILED_STRING = "ACTION_COMMANDING_FAILED"; const char *ACTION_COMMANDING_FAILED_STRING = "ACTION_COMMANDING_FAILED";
const char *UPDATE_AVAILABLE_FAILED_STRING = "UPDATE_AVAILABLE_FAILED"; const char *UPDATE_AVAILABLE_FAILED_STRING = "UPDATE_AVAILABLE_FAILED";
@@ -145,291 +147,328 @@ const char *POSITION_MISMATCH_STRING = "POSITION_MISMATCH";
const char *STR_HELPER_FILE_NOT_EXISTS_STRING = "STR_HELPER_FILE_NOT_EXISTS"; const char *STR_HELPER_FILE_NOT_EXISTS_STRING = "STR_HELPER_FILE_NOT_EXISTS";
const char *STR_HELPER_SENDING_PACKET_FAILED_STRING = "STR_HELPER_SENDING_PACKET_FAILED"; const char *STR_HELPER_SENDING_PACKET_FAILED_STRING = "STR_HELPER_SENDING_PACKET_FAILED";
const char *STR_HELPER_REQUESTING_MSG_FAILED_STRING = "STR_HELPER_REQUESTING_MSG_FAILED"; const char *STR_HELPER_REQUESTING_MSG_FAILED_STRING = "STR_HELPER_REQUESTING_MSG_FAILED";
const char *NEG_V_OUT_OF_BOUNDS_STRING = "NEG_V_OUT_OF_BOUNDS";
const char *U_DRO_OUT_OF_BOUNDS_STRING = "U_DRO_OUT_OF_BOUNDS";
const char *I_DRO_OUT_OF_BOUNDS_STRING = "I_DRO_OUT_OF_BOUNDS";
const char *U_X8_OUT_OF_BOUNDS_STRING = "U_X8_OUT_OF_BOUNDS";
const char *I_X8_OUT_OF_BOUNDS_STRING = "I_X8_OUT_OF_BOUNDS";
const char *U_TX_OUT_OF_BOUNDS_STRING = "U_TX_OUT_OF_BOUNDS";
const char *I_TX_OUT_OF_BOUNDS_STRING = "I_TX_OUT_OF_BOUNDS";
const char *U_MPA_OUT_OF_BOUNDS_STRING = "U_MPA_OUT_OF_BOUNDS";
const char *I_MPA_OUT_OF_BOUNDS_STRING = "I_MPA_OUT_OF_BOUNDS";
const char *U_HPA_OUT_OF_BOUNDS_STRING = "U_HPA_OUT_OF_BOUNDS";
const char *I_HPA_OUT_OF_BOUNDS_STRING = "I_HPA_OUT_OF_BOUNDS";
const char * translateEvents(Event event) { const char *translateEvents(Event event) {
switch( (event & 0xffff) ) { switch((event & 0xFFFF)) {
case(2200): case (2200):
return STORE_SEND_WRITE_FAILED_STRING; return STORE_SEND_WRITE_FAILED_STRING;
case(2201): case (2201):
return STORE_WRITE_FAILED_STRING; return STORE_WRITE_FAILED_STRING;
case(2202): case (2202):
return STORE_SEND_READ_FAILED_STRING; return STORE_SEND_READ_FAILED_STRING;
case(2203): case (2203):
return STORE_READ_FAILED_STRING; return STORE_READ_FAILED_STRING;
case(2204): case (2204):
return UNEXPECTED_MSG_STRING; return UNEXPECTED_MSG_STRING;
case(2205): case (2205):
return STORING_FAILED_STRING; return STORING_FAILED_STRING;
case(2206): case (2206):
return TM_DUMP_FAILED_STRING; return TM_DUMP_FAILED_STRING;
case(2207): case (2207):
return STORE_INIT_FAILED_STRING; return STORE_INIT_FAILED_STRING;
case(2208): case (2208):
return STORE_INIT_EMPTY_STRING; return STORE_INIT_EMPTY_STRING;
case(2209): case (2209):
return STORE_CONTENT_CORRUPTED_STRING; return STORE_CONTENT_CORRUPTED_STRING;
case(2210): case (2210):
return STORE_INITIALIZE_STRING; return STORE_INITIALIZE_STRING;
case(2211): case (2211):
return INIT_DONE_STRING; return INIT_DONE_STRING;
case(2212): case (2212):
return DUMP_FINISHED_STRING; return DUMP_FINISHED_STRING;
case(2213): case (2213):
return DELETION_FINISHED_STRING; return DELETION_FINISHED_STRING;
case(2214): case (2214):
return DELETION_FAILED_STRING; return DELETION_FAILED_STRING;
case(2215): case (2215):
return AUTO_CATALOGS_SENDING_FAILED_STRING; return AUTO_CATALOGS_SENDING_FAILED_STRING;
case(2600): case (2600):
return GET_DATA_FAILED_STRING; return GET_DATA_FAILED_STRING;
case(2601): case (2601):
return STORE_DATA_FAILED_STRING; return STORE_DATA_FAILED_STRING;
case(2800): case (2800):
return DEVICE_BUILDING_COMMAND_FAILED_STRING; return DEVICE_BUILDING_COMMAND_FAILED_STRING;
case(2801): case (2801):
return DEVICE_SENDING_COMMAND_FAILED_STRING; return DEVICE_SENDING_COMMAND_FAILED_STRING;
case(2802): case (2802):
return DEVICE_REQUESTING_REPLY_FAILED_STRING; return DEVICE_REQUESTING_REPLY_FAILED_STRING;
case(2803): case (2803):
return DEVICE_READING_REPLY_FAILED_STRING; return DEVICE_READING_REPLY_FAILED_STRING;
case(2804): case (2804):
return DEVICE_INTERPRETING_REPLY_FAILED_STRING; return DEVICE_INTERPRETING_REPLY_FAILED_STRING;
case(2805): case (2805):
return DEVICE_MISSED_REPLY_STRING; return DEVICE_MISSED_REPLY_STRING;
case(2806): case (2806):
return DEVICE_UNKNOWN_REPLY_STRING; return DEVICE_UNKNOWN_REPLY_STRING;
case(2807): case (2807):
return DEVICE_UNREQUESTED_REPLY_STRING; return DEVICE_UNREQUESTED_REPLY_STRING;
case(2808): case (2808):
return INVALID_DEVICE_COMMAND_STRING; return INVALID_DEVICE_COMMAND_STRING;
case(2809): case (2809):
return MONITORING_LIMIT_EXCEEDED_STRING; return MONITORING_LIMIT_EXCEEDED_STRING;
case(2810): case (2810):
return MONITORING_AMBIGUOUS_STRING; return MONITORING_AMBIGUOUS_STRING;
case(2811): case (2811):
return DEVICE_WANTS_HARD_REBOOT_STRING; return DEVICE_WANTS_HARD_REBOOT_STRING;
case(4201): case (4201):
return FUSE_CURRENT_HIGH_STRING; return FUSE_CURRENT_HIGH_STRING;
case(4202): case (4202):
return FUSE_WENT_OFF_STRING; return FUSE_WENT_OFF_STRING;
case(4204): case (4204):
return POWER_ABOVE_HIGH_LIMIT_STRING; return POWER_ABOVE_HIGH_LIMIT_STRING;
case(4205): case (4205):
return POWER_BELOW_LOW_LIMIT_STRING; return POWER_BELOW_LOW_LIMIT_STRING;
case(4300): case (4300):
return SWITCH_WENT_OFF_STRING; return SWITCH_WENT_OFF_STRING;
case(5000): case (5000):
return HEATER_ON_STRING; return HEATER_ON_STRING;
case(5001): case (5001):
return HEATER_OFF_STRING; return HEATER_OFF_STRING;
case(5002): case (5002):
return HEATER_TIMEOUT_STRING; return HEATER_TIMEOUT_STRING;
case(5003): case (5003):
return HEATER_STAYED_ON_STRING; return HEATER_STAYED_ON_STRING;
case(5004): case (5004):
return HEATER_STAYED_OFF_STRING; return HEATER_STAYED_OFF_STRING;
case(5200): case (5200):
return TEMP_SENSOR_HIGH_STRING; return TEMP_SENSOR_HIGH_STRING;
case(5201): case (5201):
return TEMP_SENSOR_LOW_STRING; return TEMP_SENSOR_LOW_STRING;
case(5202): case (5202):
return TEMP_SENSOR_GRADIENT_STRING; return TEMP_SENSOR_GRADIENT_STRING;
case(5901): case (5901):
return COMPONENT_TEMP_LOW_STRING; return COMPONENT_TEMP_LOW_STRING;
case(5902): case (5902):
return COMPONENT_TEMP_HIGH_STRING; return COMPONENT_TEMP_HIGH_STRING;
case(5903): case (5903):
return COMPONENT_TEMP_OOL_LOW_STRING; return COMPONENT_TEMP_OOL_LOW_STRING;
case(5904): case (5904):
return COMPONENT_TEMP_OOL_HIGH_STRING; return COMPONENT_TEMP_OOL_HIGH_STRING;
case(5905): case (5905):
return TEMP_NOT_IN_OP_RANGE_STRING; return TEMP_NOT_IN_OP_RANGE_STRING;
case(7101): case (7101):
return FDIR_CHANGED_STATE_STRING; return FDIR_CHANGED_STATE_STRING;
case(7102): case (7102):
return FDIR_STARTS_RECOVERY_STRING; return FDIR_STARTS_RECOVERY_STRING;
case(7103): case (7103):
return FDIR_TURNS_OFF_DEVICE_STRING; return FDIR_TURNS_OFF_DEVICE_STRING;
case(7201): case (7201):
return MONITOR_CHANGED_STATE_STRING; return MONITOR_CHANGED_STATE_STRING;
case(7202): case (7202):
return VALUE_BELOW_LOW_LIMIT_STRING; return VALUE_BELOW_LOW_LIMIT_STRING;
case(7203): case (7203):
return VALUE_ABOVE_HIGH_LIMIT_STRING; return VALUE_ABOVE_HIGH_LIMIT_STRING;
case(7204): case (7204):
return VALUE_OUT_OF_RANGE_STRING; return VALUE_OUT_OF_RANGE_STRING;
case(7400): case (7400):
return CHANGING_MODE_STRING; return CHANGING_MODE_STRING;
case(7401): case (7401):
return MODE_INFO_STRING; return MODE_INFO_STRING;
case(7402): case (7402):
return FALLBACK_FAILED_STRING; return FALLBACK_FAILED_STRING;
case(7403): case (7403):
return MODE_TRANSITION_FAILED_STRING; return MODE_TRANSITION_FAILED_STRING;
case(7404): case (7404):
return CANT_KEEP_MODE_STRING; return CANT_KEEP_MODE_STRING;
case(7405): case (7405):
return OBJECT_IN_INVALID_MODE_STRING; return OBJECT_IN_INVALID_MODE_STRING;
case(7406): case (7406):
return FORCING_MODE_STRING; return FORCING_MODE_STRING;
case(7407): case (7407):
return MODE_CMD_REJECTED_STRING; return MODE_CMD_REJECTED_STRING;
case(7506): case (7506):
return HEALTH_INFO_STRING; return HEALTH_INFO_STRING;
case(7507): case (7507):
return CHILD_CHANGED_HEALTH_STRING; return CHILD_CHANGED_HEALTH_STRING;
case(7508): case (7508):
return CHILD_PROBLEMS_STRING; return CHILD_PROBLEMS_STRING;
case(7509): case (7509):
return OVERWRITING_HEALTH_STRING; return OVERWRITING_HEALTH_STRING;
case(7510): case (7510):
return TRYING_RECOVERY_STRING; return TRYING_RECOVERY_STRING;
case(7511): case (7511):
return RECOVERY_STEP_STRING; return RECOVERY_STEP_STRING;
case(7512): case (7512):
return RECOVERY_DONE_STRING; return RECOVERY_DONE_STRING;
case(7900): case (7900):
return RF_AVAILABLE_STRING; return RF_AVAILABLE_STRING;
case(7901): case (7901):
return RF_LOST_STRING; return RF_LOST_STRING;
case(7902): case (7902):
return BIT_LOCK_STRING; return BIT_LOCK_STRING;
case(7903): case (7903):
return BIT_LOCK_LOST_STRING; return BIT_LOCK_LOST_STRING;
case(7905): case (7905):
return FRAME_PROCESSING_FAILED_STRING; return FRAME_PROCESSING_FAILED_STRING;
case(8900): case (8900):
return CLOCK_SET_STRING; return CLOCK_SET_STRING;
case(8901): case (8901):
return CLOCK_SET_FAILURE_STRING; return CLOCK_SET_FAILURE_STRING;
case(9700): case (9700):
return TEST_STRING; return TEST_STRING;
case(10600): case (10600):
return CHANGE_OF_SETUP_PARAMETER_STRING; return CHANGE_OF_SETUP_PARAMETER_STRING;
case(10900): case (10900):
return GPIO_PULL_HIGH_FAILED_STRING; return GPIO_PULL_HIGH_FAILED_STRING;
case(10901): case (10901):
return GPIO_PULL_LOW_FAILED_STRING; return GPIO_PULL_LOW_FAILED_STRING;
case(10902): case (10902):
return SWITCH_ALREADY_ON_STRING; return SWITCH_ALREADY_ON_STRING;
case(10903): case (10903):
return SWITCH_ALREADY_OFF_STRING; return SWITCH_ALREADY_OFF_STRING;
case(10904): case (10904):
return MAIN_SWITCH_TIMEOUT_STRING; return MAIN_SWITCH_TIMEOUT_STRING;
case(11000): case (11000):
return MAIN_SWITCH_ON_TIMEOUT_STRING; return MAIN_SWITCH_ON_TIMEOUT_STRING;
case(11001): case (11001):
return MAIN_SWITCH_OFF_TIMEOUT_STRING; return MAIN_SWITCH_OFF_TIMEOUT_STRING;
case(11002): case (11002):
return DEPLOYMENT_FAILED_STRING; return DEPLOYMENT_FAILED_STRING;
case(11003): case (11003):
return DEPL_SA1_GPIO_SWTICH_ON_FAILED_STRING; return DEPL_SA1_GPIO_SWTICH_ON_FAILED_STRING;
case(11004): case (11004):
return DEPL_SA2_GPIO_SWTICH_ON_FAILED_STRING; return DEPL_SA2_GPIO_SWTICH_ON_FAILED_STRING;
case(11101): case (11101):
return MEMORY_READ_RPT_CRC_FAILURE_STRING; return MEMORY_READ_RPT_CRC_FAILURE_STRING;
case(11102): case (11102):
return ACK_FAILURE_STRING; return ACK_FAILURE_STRING;
case(11103): case (11103):
return EXE_FAILURE_STRING; return EXE_FAILURE_STRING;
case(11104): case (11104):
return CRC_FAILURE_EVENT_STRING; return CRC_FAILURE_EVENT_STRING;
case(11201): case (11201):
return SELF_TEST_I2C_FAILURE_STRING; return SELF_TEST_I2C_FAILURE_STRING;
case(11202): case (11202):
return SELF_TEST_SPI_FAILURE_STRING; return SELF_TEST_SPI_FAILURE_STRING;
case(11203): case (11203):
return SELF_TEST_ADC_FAILURE_STRING; return SELF_TEST_ADC_FAILURE_STRING;
case(11204): case (11204):
return SELF_TEST_PWM_FAILURE_STRING; return SELF_TEST_PWM_FAILURE_STRING;
case(11205): case (11205):
return SELF_TEST_TC_FAILURE_STRING; return SELF_TEST_TC_FAILURE_STRING;
case(11206): case (11206):
return SELF_TEST_MTM_RANGE_FAILURE_STRING; return SELF_TEST_MTM_RANGE_FAILURE_STRING;
case(11207): case (11207):
return SELF_TEST_COIL_CURRENT_FAILURE_STRING; return SELF_TEST_COIL_CURRENT_FAILURE_STRING;
case(11208): case (11208):
return INVALID_ERROR_BYTE_STRING; return INVALID_ERROR_BYTE_STRING;
case(11301): case (11301):
return ERROR_STATE_STRING; return ERROR_STATE_STRING;
case(11501): case (11501):
return SUPV_MEMORY_READ_RPT_CRC_FAILURE_STRING; return SUPV_MEMORY_READ_RPT_CRC_FAILURE_STRING;
case(11502): case (11502):
return SUPV_ACK_FAILURE_STRING; return SUPV_ACK_FAILURE_STRING;
case(11503): case (11503):
return SUPV_EXE_FAILURE_STRING; return SUPV_EXE_FAILURE_STRING;
case(11504): case (11504):
return SUPV_CRC_FAILURE_EVENT_STRING; return SUPV_CRC_FAILURE_EVENT_STRING;
case(11600): case (11600):
return SANITIZATION_FAILED_STRING; return SANITIZATION_FAILED_STRING;
case(11700): case (11601):
return UPDATE_FILE_NOT_EXISTS_STRING; return MOUNTED_SD_CARD_STRING;
case(11701): case (11603):
return ACTION_COMMANDING_FAILED_STRING; return REBOOT_HW_STRING;
case(11702): case (11700):
return UPDATE_AVAILABLE_FAILED_STRING; return UPDATE_FILE_NOT_EXISTS_STRING;
case(11703): case (11701):
return UPDATE_TRANSFER_FAILED_STRING; return ACTION_COMMANDING_FAILED_STRING;
case(11704): case (11702):
return UPDATE_VERIFY_FAILED_STRING; return UPDATE_AVAILABLE_FAILED_STRING;
case(11705): case (11703):
return UPDATE_FINISHED_STRING; return UPDATE_TRANSFER_FAILED_STRING;
case(11800): case (11704):
return SEND_MRAM_DUMP_FAILED_STRING; return UPDATE_VERIFY_FAILED_STRING;
case(11801): case (11705):
return MRAM_DUMP_FAILED_STRING; return UPDATE_FINISHED_STRING;
case(11802): case (11800):
return MRAM_DUMP_FINISHED_STRING; return SEND_MRAM_DUMP_FAILED_STRING;
case(11901): case (11801):
return INVALID_TC_FRAME_STRING; return MRAM_DUMP_FAILED_STRING;
case(11902): case (11802):
return INVALID_FAR_STRING; return MRAM_DUMP_FINISHED_STRING;
case(11903): case (11901):
return CARRIER_LOCK_STRING; return INVALID_TC_FRAME_STRING;
case(11904): case (11902):
return BIT_LOCK_PDEC_STRING; return INVALID_FAR_STRING;
case(12000): case (11903):
return IMAGE_UPLOAD_FAILED_STRING; return CARRIER_LOCK_STRING;
case(12001): case (11904):
return IMAGE_DOWNLOAD_FAILED_STRING; return BIT_LOCK_PDEC_STRING;
case(12002): case (12000):
return IMAGE_UPLOAD_SUCCESSFUL_STRING; return IMAGE_UPLOAD_FAILED_STRING;
case(12003): case (12001):
return IMAGE_DOWNLOAD_SUCCESSFUL_STRING; return IMAGE_DOWNLOAD_FAILED_STRING;
case(12004): case (12002):
return FLASH_WRITE_SUCCESSFUL_STRING; return IMAGE_UPLOAD_SUCCESSFUL_STRING;
case(12005): case (12003):
return FLASH_READ_SUCCESSFUL_STRING; return IMAGE_DOWNLOAD_SUCCESSFUL_STRING;
case(12006): case (12004):
return FLASH_WRITE_FAILED_STRING; return FLASH_WRITE_SUCCESSFUL_STRING;
case(12007): case (12005):
return FLASH_READ_FAILED_STRING; return FLASH_READ_SUCCESSFUL_STRING;
case(12008): case (12006):
return FPGA_DOWNLOAD_SUCCESSFUL_STRING; return FLASH_WRITE_FAILED_STRING;
case(12009): case (12007):
return FPGA_DOWNLOAD_FAILED_STRING; return FLASH_READ_FAILED_STRING;
case(12010): case (12008):
return FPGA_UPLOAD_SUCCESSFUL_STRING; return FPGA_DOWNLOAD_SUCCESSFUL_STRING;
case(12011): case (12009):
return FPGA_UPLOAD_FAILED_STRING; return FPGA_DOWNLOAD_FAILED_STRING;
case(12012): case (12010):
return STR_HELPER_READING_REPLY_FAILED_STRING; return FPGA_UPLOAD_SUCCESSFUL_STRING;
case(12013): case (12011):
return STR_HELPER_COM_ERROR_STRING; return FPGA_UPLOAD_FAILED_STRING;
case(12014): case (12012):
return STR_HELPER_NO_REPLY_STRING; return STR_HELPER_READING_REPLY_FAILED_STRING;
case(12015): case (12013):
return STR_HELPER_DEC_ERROR_STRING; return STR_HELPER_COM_ERROR_STRING;
case(12016): case (12014):
return POSITION_MISMATCH_STRING; return STR_HELPER_NO_REPLY_STRING;
case(12017): case (12015):
return STR_HELPER_FILE_NOT_EXISTS_STRING; return STR_HELPER_DEC_ERROR_STRING;
case(12018): case (12016):
return STR_HELPER_SENDING_PACKET_FAILED_STRING; return POSITION_MISMATCH_STRING;
case(12019): case (12017):
return STR_HELPER_REQUESTING_MSG_FAILED_STRING; return STR_HELPER_FILE_NOT_EXISTS_STRING;
default: case (12018):
return "UNKNOWN_EVENT"; return STR_HELPER_SENDING_PACKET_FAILED_STRING;
case (12019):
return STR_HELPER_REQUESTING_MSG_FAILED_STRING;
case (12101):
return NEG_V_OUT_OF_BOUNDS_STRING;
case (12102):
return U_DRO_OUT_OF_BOUNDS_STRING;
case (12103):
return I_DRO_OUT_OF_BOUNDS_STRING;
case (12104):
return U_X8_OUT_OF_BOUNDS_STRING;
case (12105):
return I_X8_OUT_OF_BOUNDS_STRING;
case (12106):
return U_TX_OUT_OF_BOUNDS_STRING;
case (12107):
return I_TX_OUT_OF_BOUNDS_STRING;
case (12108):
return U_MPA_OUT_OF_BOUNDS_STRING;
case (12109):
return I_MPA_OUT_OF_BOUNDS_STRING;
case (12110):
return U_HPA_OUT_OF_BOUNDS_STRING;
case (12111):
return I_HPA_OUT_OF_BOUNDS_STRING;
default:
return "UNKNOWN_EVENT";
} }
return 0; return 0;
} }

View File

@@ -3,6 +3,6 @@
#include "fsfw/events/Event.h" #include "fsfw/events/Event.h"
const char * translateEvents(Event event); const char *translateEvents(Event event);
#endif /* FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_ */ #endif /* FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_ */

View File

@@ -4,26 +4,31 @@ import time
from objects.objects import parse_objects from objects.objects import parse_objects
from events.event_parser import parse_events from events.event_parser import parse_events
from returnvalues.returnvalues_parser import parse_returnvalues from returnvalues.returnvalues_parser import parse_returnvalues
from fsfwgen.core import return_generic_args_parser, init_printout, get_console_logger, ParserTypes from fsfwgen.core import (
return_generic_args_parser,
init_printout,
get_console_logger,
ParserTypes,
)
LOGGER = get_console_logger() LOGGER = get_console_logger()
def main(): def main():
init_printout(project_string='EIVE') init_printout(project_string="EIVE")
parser = return_generic_args_parser() parser = return_generic_args_parser()
args = parser.parse_args() args = parser.parse_args()
if args.type == 'objects': if args.type == "objects":
LOGGER.info(f'Generating objects data..') LOGGER.info(f"Generating objects data..")
time.sleep(0.05) time.sleep(0.05)
parse_objects() parse_objects()
elif args.type == 'events': elif args.type == "events":
LOGGER.info(f'Generating event data') LOGGER.info(f"Generating event data")
time.sleep(0.05) time.sleep(0.05)
parse_events() parse_events()
elif args.type == 'returnvalues': elif args.type == "returnvalues":
LOGGER.info('Generating returnvalue data') LOGGER.info("Generating returnvalue data")
time.sleep(0.05) time.sleep(0.05)
parse_returnvalues() parse_returnvalues()
pass pass

View File

@@ -2,13 +2,18 @@
Object exporter. Object exporter.
""" """
import datetime import datetime
import os
from fsfwgen.core import get_console_logger from fsfwgen.core import get_console_logger
from fsfwgen.objects.objects import sql_object_exporter, ObjectDefinitionParser, \ from fsfwgen.objects.objects import (
write_translation_file, \ sql_object_exporter,
export_object_file, write_translation_header_file ObjectDefinitionParser,
write_translation_file,
export_object_file,
write_translation_header_file,
)
from fsfwgen.utility.printer import PrettyPrinter from fsfwgen.utility.printer import PrettyPrinter
from fsfwgen.utility.file_management import copy_file, move_file from fsfwgen.utility.file_management import copy_file
from definitions import BspType, DATABASE_NAME, OBSW_ROOT_DIR, ROOT_DIR from definitions import BspType, DATABASE_NAME, OBSW_ROOT_DIR, ROOT_DIR
@@ -34,16 +39,17 @@ else:
EXPORT_TO_SQL = True EXPORT_TO_SQL = True
CPP_COPY_DESTINATION = f"{FSFW_CONFIG_ROOT}/objects/" CPP_COPY_DESTINATION = f"{FSFW_CONFIG_ROOT}/objects/"
CSV_MOVE_DESTINATION = f"{ROOT_DIR}" CPP_FILENAME = f"{os.path.dirname(os.path.realpath(__file__))}//translateObjects.cpp"
CPP_FILENAME = f'{__package__}/translateObjects.cpp' CPP_H_FILENAME = f"{os.path.dirname(os.path.realpath(__file__))}//translateObjects.h"
CPP_H_FILENAME = f'{__package__}/translateObjects.h' CSV_OBJECT_FILENAME = f"{ROOT_DIR}/{BSP_SELECT.value}_objects.csv"
CSV_OBJECT_FILENAME = f"{BSP_SELECT.value}_objects.csv"
FILE_SEPARATOR = ";" FILE_SEPARATOR = ";"
OBJECTS_PATH = f"{FSFW_CONFIG_ROOT}/objects/systemObjectList.h" OBJECTS_PATH = f"{FSFW_CONFIG_ROOT}/objects/systemObjectList.h"
FRAMEWORK_OBJECT_PATH = f'{OBSW_ROOT_DIR}/fsfw/src/fsfw/objectmanager/frameworkObjects.h' FRAMEWORK_OBJECT_PATH = (
COMMON_OBJECTS_PATH = f'{OBSW_ROOT_DIR}/common/config/commonObjects.h' f"{OBSW_ROOT_DIR}/fsfw/src/fsfw/objectmanager/frameworkObjects.h"
)
COMMON_OBJECTS_PATH = f"{OBSW_ROOT_DIR}/common/config/commonObjects.h"
OBJECTS_DEFINITIONS = [OBJECTS_PATH, FRAMEWORK_OBJECT_PATH, COMMON_OBJECTS_PATH] OBJECTS_DEFINITIONS = [OBJECTS_PATH, FRAMEWORK_OBJECT_PATH, COMMON_OBJECTS_PATH]
SQL_DELETE_OBJECTS_CMD = """ SQL_DELETE_OBJECTS_CMD = """
@@ -70,35 +76,41 @@ def parse_objects(print_object_list: bool = True):
subsystem_definitions = object_parser.parse_files() subsystem_definitions = object_parser.parse_files()
# id_subsystem_definitions.update(framework_subsystem_definitions) # id_subsystem_definitions.update(framework_subsystem_definitions)
list_items = sorted(subsystem_definitions.items()) list_items = sorted(subsystem_definitions.items())
LOGGER.info(f'ObjectParser: Number of objects: {len(list_items)}') LOGGER.info(f"ObjectParser: Number of objects: {len(list_items)}")
if print_object_list: if print_object_list:
PrettyPrinter.pprint(list_items) PrettyPrinter.pprint(list_items)
handle_file_export(list_items) handle_file_export(list_items)
if EXPORT_TO_SQL: if EXPORT_TO_SQL:
LOGGER.info('ObjectParser: Exporting to SQL') LOGGER.info("ObjectParser: Exporting to SQL")
sql_object_exporter( sql_object_exporter(
object_table=list_items, delete_cmd=SQL_DELETE_OBJECTS_CMD, object_table=list_items,
delete_cmd=SQL_DELETE_OBJECTS_CMD,
insert_cmd=SQL_INSERT_INTO_OBJECTS_CMD, insert_cmd=SQL_INSERT_INTO_OBJECTS_CMD,
create_cmd=SQL_CREATE_OBJECTS_CMD, db_filename=f"{ROOT_DIR}/{DATABASE_NAME}" create_cmd=SQL_CREATE_OBJECTS_CMD,
db_filename=f"{ROOT_DIR}/{DATABASE_NAME}",
) )
def handle_file_export(list_items): def handle_file_export(list_items):
if GENERATE_CPP: if GENERATE_CPP:
LOGGER.info('ObjectParser: Generating translation C++ file') LOGGER.info("ObjectParser: Generating C++ translation file")
write_translation_file( write_translation_file(
filename=CPP_FILENAME, list_of_entries=list_items, date_string_full=DATE_STRING_FULL filename=CPP_FILENAME,
list_of_entries=list_items,
date_string_full=DATE_STRING_FULL,
) )
if COPY_CPP: if COPY_CPP:
print("ObjectParser: Copying object file to " + CPP_COPY_DESTINATION) LOGGER.info("ObjectParser: Copying object file to " + CPP_COPY_DESTINATION)
copy_file(CPP_FILENAME, CPP_COPY_DESTINATION) copy_file(CPP_FILENAME, CPP_COPY_DESTINATION)
if GENERATE_HEADER: if GENERATE_HEADER:
write_translation_header_file(filename=CPP_H_FILENAME) write_translation_header_file(filename=CPP_H_FILENAME)
copy_file(filename=CPP_H_FILENAME, destination=CPP_COPY_DESTINATION) copy_file(filename=CPP_H_FILENAME, destination=CPP_COPY_DESTINATION)
if GENERATE_CSV: if GENERATE_CSV:
print("ObjectParser: Generating text export.") LOGGER.info("ObjectParser: Generating text export")
export_object_file( export_object_file(
filename=CSV_OBJECT_FILENAME, object_list=list_items, file_separator=FILE_SEPARATOR filename=CSV_OBJECT_FILENAME,
object_list=list_items,
file_separator=FILE_SEPARATOR,
) )

View File

@@ -1,8 +1,8 @@
/** /**
* @brief Auto-generated object translation file. * @brief Auto-generated object translation file.
* @details * @details
* Contains 111 translations. * Contains 112 translations.
* Generated on: 2022-02-21 17:31:37 * Generated on: 2022-02-26 14:03:55
*/ */
#include "translateObjects.h" #include "translateObjects.h"
@@ -82,6 +82,7 @@ const char *PUS_PACKET_DISTRIBUTOR_STRING = "PUS_PACKET_DISTRIBUTOR";
const char *TMTC_BRIDGE_STRING = "TMTC_BRIDGE"; const char *TMTC_BRIDGE_STRING = "TMTC_BRIDGE";
const char *TMTC_POLLING_TASK_STRING = "TMTC_POLLING_TASK"; const char *TMTC_POLLING_TASK_STRING = "TMTC_POLLING_TASK";
const char *FILE_SYSTEM_HANDLER_STRING = "FILE_SYSTEM_HANDLER"; const char *FILE_SYSTEM_HANDLER_STRING = "FILE_SYSTEM_HANDLER";
const char *SDC_MANAGER_STRING = "SDC_MANAGER";
const char *PTME_STRING = "PTME"; const char *PTME_STRING = "PTME";
const char *PDEC_HANDLER_STRING = "PDEC_HANDLER"; const char *PDEC_HANDLER_STRING = "PDEC_HANDLER";
const char *CCSDS_HANDLER_STRING = "CCSDS_HANDLER"; const char *CCSDS_HANDLER_STRING = "CCSDS_HANDLER";
@@ -118,232 +119,234 @@ const char *TM_FUNNEL_STRING = "TM_FUNNEL";
const char *CCSDS_IP_CORE_BRIDGE_STRING = "CCSDS_IP_CORE_BRIDGE"; const char *CCSDS_IP_CORE_BRIDGE_STRING = "CCSDS_IP_CORE_BRIDGE";
const char *NO_OBJECT_STRING = "NO_OBJECT"; const char *NO_OBJECT_STRING = "NO_OBJECT";
const char* translateObject(object_id_t object) { const char *translateObject(object_id_t object) {
switch( (object & 0xFFFFFFFF) ) { switch ((object & 0xFFFFFFFF)) {
case 0x00005060: case 0x00005060:
return P60DOCK_TEST_TASK_STRING; return P60DOCK_TEST_TASK_STRING;
case 0x43000003: case 0x43000003:
return CORE_CONTROLLER_STRING; return CORE_CONTROLLER_STRING;
case 0x43100002: case 0x43100002:
return ACS_CONTROLLER_STRING; return ACS_CONTROLLER_STRING;
case 0x43400001: case 0x43400001:
return THERMAL_CONTROLLER_STRING; return THERMAL_CONTROLLER_STRING;
case 0x44120006: case 0x44120006:
return MGM_0_LIS3_HANDLER_STRING; return MGM_0_LIS3_HANDLER_STRING;
case 0x44120010: case 0x44120010:
return GYRO_0_ADIS_HANDLER_STRING; return GYRO_0_ADIS_HANDLER_STRING;
case 0x44120032: case 0x44120032:
return SUS_0_STRING; return SUS_0_STRING;
case 0x44120033: case 0x44120033:
return SUS_1_STRING; return SUS_1_STRING;
case 0x44120034: case 0x44120034:
return SUS_2_STRING; return SUS_2_STRING;
case 0x44120035: case 0x44120035:
return SUS_3_STRING; return SUS_3_STRING;
case 0x44120036: case 0x44120036:
return SUS_4_STRING; return SUS_4_STRING;
case 0x44120037: case 0x44120037:
return SUS_5_STRING; return SUS_5_STRING;
case 0x44120038: case 0x44120038:
return SUS_6_STRING; return SUS_6_STRING;
case 0x44120039: case 0x44120039:
return SUS_7_STRING; return SUS_7_STRING;
case 0x44120040: case 0x44120040:
return SUS_8_STRING; return SUS_8_STRING;
case 0x44120041: case 0x44120041:
return SUS_9_STRING; return SUS_9_STRING;
case 0x44120042: case 0x44120042:
return SUS_10_STRING; return SUS_10_STRING;
case 0x44120043: case 0x44120043:
return SUS_11_STRING; return SUS_11_STRING;
case 0x44120047: case 0x44120047:
return RW1_STRING; return RW1_STRING;
case 0x44120107: case 0x44120107:
return MGM_1_RM3100_HANDLER_STRING; return MGM_1_RM3100_HANDLER_STRING;
case 0x44120111: case 0x44120111:
return GYRO_1_L3G_HANDLER_STRING; return GYRO_1_L3G_HANDLER_STRING;
case 0x44120148: case 0x44120148:
return RW2_STRING; return RW2_STRING;
case 0x44120208: case 0x44120208:
return MGM_2_LIS3_HANDLER_STRING; return MGM_2_LIS3_HANDLER_STRING;
case 0x44120212: case 0x44120212:
return GYRO_2_ADIS_HANDLER_STRING; return GYRO_2_ADIS_HANDLER_STRING;
case 0x44120249: case 0x44120249:
return RW3_STRING; return RW3_STRING;
case 0x44120309: case 0x44120309:
return MGM_3_RM3100_HANDLER_STRING; return MGM_3_RM3100_HANDLER_STRING;
case 0x44120313: case 0x44120313:
return GYRO_3_L3G_HANDLER_STRING; return GYRO_3_L3G_HANDLER_STRING;
case 0x44120350: case 0x44120350:
return RW4_STRING; return RW4_STRING;
case 0x44130001: case 0x44130001:
return STAR_TRACKER_STRING; return STAR_TRACKER_STRING;
case 0x44130045: case 0x44130045:
return GPS_CONTROLLER_STRING; return GPS_CONTROLLER_STRING;
case 0x44140014: case 0x44140014:
return IMTQ_HANDLER_STRING; return IMTQ_HANDLER_STRING;
case 0x442000A1: case 0x442000A1:
return PCDU_HANDLER_STRING; return PCDU_HANDLER_STRING;
case 0x44250000: case 0x44250000:
return P60DOCK_HANDLER_STRING; return P60DOCK_HANDLER_STRING;
case 0x44250001: case 0x44250001:
return PDU1_HANDLER_STRING; return PDU1_HANDLER_STRING;
case 0x44250002: case 0x44250002:
return PDU2_HANDLER_STRING; return PDU2_HANDLER_STRING;
case 0x44250003: case 0x44250003:
return ACU_HANDLER_STRING; return ACU_HANDLER_STRING;
case 0x44260000: case 0x44260000:
return BPX_BATT_HANDLER_STRING; return BPX_BATT_HANDLER_STRING;
case 0x44300000: case 0x44300000:
return PLPCDU_HANDLER_STRING; return PLPCDU_HANDLER_STRING;
case 0x443200A5: case 0x443200A5:
return RAD_SENSOR_STRING; return RAD_SENSOR_STRING;
case 0x44330000: case 0x44330000:
return PLOC_UPDATER_STRING; return PLOC_UPDATER_STRING;
case 0x44330001: case 0x44330001:
return PLOC_MEMORY_DUMPER_STRING; return PLOC_MEMORY_DUMPER_STRING;
case 0x44330002: case 0x44330002:
return STR_HELPER_STRING; return STR_HELPER_STRING;
case 0x44330015: case 0x44330015:
return PLOC_MPSOC_HANDLER_STRING; return PLOC_MPSOC_HANDLER_STRING;
case 0x44330016: case 0x44330016:
return PLOC_SUPERVISOR_HANDLER_STRING; return PLOC_SUPERVISOR_HANDLER_STRING;
case 0x444100A2: case 0x444100A2:
return SOLAR_ARRAY_DEPL_HANDLER_STRING; return SOLAR_ARRAY_DEPL_HANDLER_STRING;
case 0x444100A4: case 0x444100A4:
return HEATER_HANDLER_STRING; return HEATER_HANDLER_STRING;
case 0x44420004: case 0x44420004:
return TMP1075_HANDLER_1_STRING; return TMP1075_HANDLER_1_STRING;
case 0x44420005: case 0x44420005:
return TMP1075_HANDLER_2_STRING; return TMP1075_HANDLER_2_STRING;
case 0x44420016: case 0x44420016:
return RTD_IC_3_STRING; return RTD_IC_3_STRING;
case 0x44420017: case 0x44420017:
return RTD_IC_4_STRING; return RTD_IC_4_STRING;
case 0x44420018: case 0x44420018:
return RTD_IC_5_STRING; return RTD_IC_5_STRING;
case 0x44420019: case 0x44420019:
return RTD_IC_6_STRING; return RTD_IC_6_STRING;
case 0x44420020: case 0x44420020:
return RTD_IC_7_STRING; return RTD_IC_7_STRING;
case 0x44420021: case 0x44420021:
return RTD_IC_8_STRING; return RTD_IC_8_STRING;
case 0x44420022: case 0x44420022:
return RTD_IC_9_STRING; return RTD_IC_9_STRING;
case 0x44420023: case 0x44420023:
return RTD_IC_10_STRING; return RTD_IC_10_STRING;
case 0x44420024: case 0x44420024:
return RTD_IC_11_STRING; return RTD_IC_11_STRING;
case 0x44420025: case 0x44420025:
return RTD_IC_12_STRING; return RTD_IC_12_STRING;
case 0x44420026: case 0x44420026:
return RTD_IC_13_STRING; return RTD_IC_13_STRING;
case 0x44420027: case 0x44420027:
return RTD_IC_14_STRING; return RTD_IC_14_STRING;
case 0x44420028: case 0x44420028:
return RTD_IC_15_STRING; return RTD_IC_15_STRING;
case 0x44420029: case 0x44420029:
return RTD_IC_16_STRING; return RTD_IC_16_STRING;
case 0x44420030: case 0x44420030:
return RTD_IC_17_STRING; return RTD_IC_17_STRING;
case 0x44420031: case 0x44420031:
return RTD_IC_18_STRING; return RTD_IC_18_STRING;
case 0x445300A3: case 0x445300A3:
return SYRLINKS_HK_HANDLER_STRING; return SYRLINKS_HK_HANDLER_STRING;
case 0x49000000: case 0x49000000:
return ARDUINO_COM_IF_STRING; return ARDUINO_COM_IF_STRING;
case 0x49010005: case 0x49010005:
return GPIO_IF_STRING; return GPIO_IF_STRING;
case 0x49020004: case 0x49020004:
return SPI_COM_IF_STRING; return SPI_COM_IF_STRING;
case 0x49030003: case 0x49030003:
return UART_COM_IF_STRING; return UART_COM_IF_STRING;
case 0x49040002: case 0x49040002:
return I2C_COM_IF_STRING; return I2C_COM_IF_STRING;
case 0x49050001: case 0x49050001:
return CSP_COM_IF_STRING; return CSP_COM_IF_STRING;
case 0x50000100: case 0x50000100:
return CCSDS_PACKET_DISTRIBUTOR_STRING; return CCSDS_PACKET_DISTRIBUTOR_STRING;
case 0x50000200: case 0x50000200:
return PUS_PACKET_DISTRIBUTOR_STRING; return PUS_PACKET_DISTRIBUTOR_STRING;
case 0x50000300: case 0x50000300:
return TMTC_BRIDGE_STRING; return TMTC_BRIDGE_STRING;
case 0x50000400: case 0x50000400:
return TMTC_POLLING_TASK_STRING; return TMTC_POLLING_TASK_STRING;
case 0x50000500: case 0x50000500:
return FILE_SYSTEM_HANDLER_STRING; return FILE_SYSTEM_HANDLER_STRING;
case 0x50000600: case 0x50000550:
return PTME_STRING; return SDC_MANAGER_STRING;
case 0x50000700: case 0x50000600:
return PDEC_HANDLER_STRING; return PTME_STRING;
case 0x50000800: case 0x50000700:
return CCSDS_HANDLER_STRING; return PDEC_HANDLER_STRING;
case 0x51000500: case 0x50000800:
return PUS_SERVICE_6_STRING; return CCSDS_HANDLER_STRING;
case 0x53000000: case 0x51000500:
return FSFW_OBJECTS_START_STRING; return PUS_SERVICE_6_STRING;
case 0x53000001: case 0x53000000:
return PUS_SERVICE_1_VERIFICATION_STRING; return FSFW_OBJECTS_START_STRING;
case 0x53000002: case 0x53000001:
return PUS_SERVICE_2_DEVICE_ACCESS_STRING; return PUS_SERVICE_1_VERIFICATION_STRING;
case 0x53000003: case 0x53000002:
return PUS_SERVICE_3_HOUSEKEEPING_STRING; return PUS_SERVICE_2_DEVICE_ACCESS_STRING;
case 0x53000005: case 0x53000003:
return PUS_SERVICE_5_EVENT_REPORTING_STRING; return PUS_SERVICE_3_HOUSEKEEPING_STRING;
case 0x53000008: case 0x53000005:
return PUS_SERVICE_8_FUNCTION_MGMT_STRING; return PUS_SERVICE_5_EVENT_REPORTING_STRING;
case 0x53000009: case 0x53000008:
return PUS_SERVICE_9_TIME_MGMT_STRING; return PUS_SERVICE_8_FUNCTION_MGMT_STRING;
case 0x53000017: case 0x53000009:
return PUS_SERVICE_17_TEST_STRING; return PUS_SERVICE_9_TIME_MGMT_STRING;
case 0x53000020: case 0x53000017:
return PUS_SERVICE_20_PARAMETERS_STRING; return PUS_SERVICE_17_TEST_STRING;
case 0x53000200: case 0x53000020:
return PUS_SERVICE_200_MODE_MGMT_STRING; return PUS_SERVICE_20_PARAMETERS_STRING;
case 0x53000201: case 0x53000200:
return PUS_SERVICE_201_HEALTH_STRING; return PUS_SERVICE_200_MODE_MGMT_STRING;
case 0x53001000: case 0x53000201:
return CFDP_PACKET_DISTRIBUTOR_STRING; return PUS_SERVICE_201_HEALTH_STRING;
case 0x53010000: case 0x53001000:
return HEALTH_TABLE_STRING; return CFDP_PACKET_DISTRIBUTOR_STRING;
case 0x53010100: case 0x53010000:
return MODE_STORE_STRING; return HEALTH_TABLE_STRING;
case 0x53030000: case 0x53010100:
return EVENT_MANAGER_STRING; return MODE_STORE_STRING;
case 0x53040000: case 0x53030000:
return INTERNAL_ERROR_REPORTER_STRING; return EVENT_MANAGER_STRING;
case 0x534f0100: case 0x53040000:
return TC_STORE_STRING; return INTERNAL_ERROR_REPORTER_STRING;
case 0x534f0200: case 0x534f0100:
return TM_STORE_STRING; return TC_STORE_STRING;
case 0x534f0300: case 0x534f0200:
return IPC_STORE_STRING; return TM_STORE_STRING;
case 0x53500010: case 0x534f0300:
return TIME_STAMPER_STRING; return IPC_STORE_STRING;
case 0x53ffffff: case 0x53500010:
return FSFW_OBJECTS_END_STRING; return TIME_STAMPER_STRING;
case 0x54000010: case 0x53ffffff:
return SPI_TEST_STRING; return FSFW_OBJECTS_END_STRING;
case 0x54000020: case 0x54000010:
return UART_TEST_STRING; return SPI_TEST_STRING;
case 0x54000030: case 0x54000020:
return I2C_TEST_STRING; return UART_TEST_STRING;
case 0x5400AFFE: case 0x54000030:
return DUMMY_HANDLER_STRING; return I2C_TEST_STRING;
case 0x5400CAFE: case 0x5400AFFE:
return DUMMY_INTERFACE_STRING; return DUMMY_HANDLER_STRING;
case 0x54123456: case 0x5400CAFE:
return LIBGPIOD_TEST_STRING; return DUMMY_INTERFACE_STRING;
case 0x54694269: case 0x54123456:
return TEST_TASK_STRING; return LIBGPIOD_TEST_STRING;
case 0x73000100: case 0x54694269:
return TM_FUNNEL_STRING; return TEST_TASK_STRING;
case 0x73500000: case 0x73000100:
return CCSDS_IP_CORE_BRIDGE_STRING; return TM_FUNNEL_STRING;
case 0xFFFFFFFF: case 0x73500000:
return NO_OBJECT_STRING; return CCSDS_IP_CORE_BRIDGE_STRING;
default: case 0xFFFFFFFF:
return "UNKNOWN_OBJECT"; return NO_OBJECT_STRING;
} default:
return 0; return "UNKNOWN_OBJECT";
}
return 0;
} }

View File

@@ -3,6 +3,6 @@
#include <fsfw/objectmanager/SystemObjectIF.h> #include <fsfw/objectmanager/SystemObjectIF.h>
const char* translateObject(object_id_t object); const char *translateObject(object_id_t object);
#endif /* FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */ #endif /* FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */

View File

@@ -24,33 +24,34 @@ EXPORT_TO_SQL = True
PRINT_TABLES = True PRINT_TABLES = True
FILE_SEPARATOR = ';' FILE_SEPARATOR = ";"
MAX_STRING_LENGTH = 32 MAX_STRING_LENGTH = 32
BSP_SELECT = BspType.BSP_Q7S BSP_SELECT = BspType.BSP_Q7S
BSP_DIR_NAME = BSP_SELECT.value BSP_DIR_NAME = BSP_SELECT.value
CSV_RETVAL_FILENAME = f'{BSP_SELECT.value}_returnvalues.csv' CSV_RETVAL_FILENAME = f"{ROOT_DIR}/{BSP_SELECT.value}_returnvalues.csv"
CSV_MOVE_DESTINATION = f'{ROOT_DIR}'
ADD_LINUX_FOLDER = False ADD_LINUX_FOLDER = False
if BSP_SELECT == BspType.BSP_Q7S or BSP_SELECT == BspType.BSP_LINUX_BOARD: if BSP_SELECT == BspType.BSP_Q7S or BSP_SELECT == BspType.BSP_LINUX_BOARD:
FSFW_CONFIG_ROOT = f'{OBSW_ROOT_DIR}/linux/fsfwconfig' FSFW_CONFIG_ROOT = f"{OBSW_ROOT_DIR}/linux/fsfwconfig"
ADD_LINUX_FOLDER = True ADD_LINUX_FOLDER = True
else: else:
FSFW_CONFIG_ROOT = f'{OBSW_ROOT_DIR}/{BSP_DIR_NAME}/fsfwconfig' FSFW_CONFIG_ROOT = f"{OBSW_ROOT_DIR}/{BSP_DIR_NAME}/fsfwconfig"
BSP_PATH = f"{OBSW_ROOT_DIR}/{BSP_DIR_NAME}" BSP_PATH = f"{OBSW_ROOT_DIR}/{BSP_DIR_NAME}"
INTERFACE_DEFINITION_FILES = [ INTERFACE_DEFINITION_FILES = [
f'{OBSW_ROOT_DIR}/fsfw/src/fsfw/returnvalues/FwClassIds.h', f"{OBSW_ROOT_DIR}/fsfw/src/fsfw/returnvalues/FwClassIds.h",
f'{OBSW_ROOT_DIR}/common/config/commonClassIds.h', f"{OBSW_ROOT_DIR}/common/config/commonClassIds.h",
f'{FSFW_CONFIG_ROOT}/returnvalues/classIds.h' f"{FSFW_CONFIG_ROOT}/returnvalues/classIds.h",
] ]
RETURNVALUE_SOURCES = [ RETURNVALUE_SOURCES = [
f'{OBSW_ROOT_DIR}/mission/', f'{OBSW_ROOT_DIR}/fsfw/', f'{BSP_PATH}' f"{OBSW_ROOT_DIR}/mission/",
f"{OBSW_ROOT_DIR}/fsfw/",
f"{BSP_PATH}",
] ]
if ADD_LINUX_FOLDER: if ADD_LINUX_FOLDER:
RETURNVALUE_SOURCES.append(f'{OBSW_ROOT_DIR}/linux') RETURNVALUE_SOURCES.append(f"{OBSW_ROOT_DIR}/linux")
SQL_DELETE_RETURNVALUES_CMD = """ SQL_DELETE_RETURNVALUES_CMD = """
DROP TABLE IF EXISTS Returnvalues DROP TABLE IF EXISTS Returnvalues
@@ -76,16 +77,20 @@ VALUES(?,?,?,?,?)
def parse_returnvalues(): def parse_returnvalues():
returnvalue_table = generate_returnvalue_table() returnvalue_table = generate_returnvalue_table()
if EXPORT_TO_FILE: if EXPORT_TO_FILE:
ReturnValueParser.export_to_file(CSV_RETVAL_FILENAME, returnvalue_table, FILE_SEPARATOR) ReturnValueParser.export_to_file(
CSV_RETVAL_FILENAME, returnvalue_table, FILE_SEPARATOR
)
# if MOVE_CSV_FILE: # if MOVE_CSV_FILE:
# move_file(file_name=CSV_RETVAL_FILENAME, destination=CSV_MOVE_DESTINATION) # move_file(file_name=CSV_RETVAL_FILENAME, destination=CSV_MOVE_DESTINATION)
if EXPORT_TO_SQL: if EXPORT_TO_SQL:
LOGGER.info('ReturnvalueParser: Exporting to SQL') LOGGER.info("ReturnvalueParser: Exporting to SQL")
sql_retval_exporter(returnvalue_table, db_filename=f"{ROOT_DIR}/{DATABASE_NAME}") sql_retval_exporter(
returnvalue_table, db_filename=f"{ROOT_DIR}/{DATABASE_NAME}"
)
def generate_returnvalue_table(): def generate_returnvalue_table():
""" Core function to parse for the return values """ """Core function to parse for the return values"""
interface_parser = InterfaceParser( interface_parser = InterfaceParser(
file_list=INTERFACE_DEFINITION_FILES, print_table=PRINT_TABLES file_list=INTERFACE_DEFINITION_FILES, print_table=PRINT_TABLES
) )
@@ -104,10 +109,8 @@ def sql_retval_exporter(returnvalue_table, db_filename: str):
sql_writer.open(SQL_CREATE_RETURNVALUES_CMD) sql_writer.open(SQL_CREATE_RETURNVALUES_CMD)
for entry in returnvalue_table.items(): for entry in returnvalue_table.items():
sql_writer.write_entries( sql_writer.write_entries(
SQL_INSERT_RETURNVALUES_CMD, (entry[0], SQL_INSERT_RETURNVALUES_CMD,
entry[1][2], (entry[0], entry[1][2], entry[1][4], entry[1][3], entry[1][1]),
entry[1][4], )
entry[1][3],
entry[1][1]))
sql_writer.commit() sql_writer.commit()
sql_writer.close() sql_writer.close()

View File

@@ -1,7 +1,7 @@
/** /**
* @brief Auto-generated event translation file. Contains 140 translations. * @brief Auto-generated event translation file. Contains 153 translations.
* @details * @details
* Generated on: 2022-02-03 17:30:40 * Generated on: 2022-02-26 13:53:13
*/ */
#include "translateEvents.h" #include "translateEvents.h"
@@ -112,6 +112,8 @@ const char *SUPV_ACK_FAILURE_STRING = "SUPV_ACK_FAILURE";
const char *SUPV_EXE_FAILURE_STRING = "SUPV_EXE_FAILURE"; const char *SUPV_EXE_FAILURE_STRING = "SUPV_EXE_FAILURE";
const char *SUPV_CRC_FAILURE_EVENT_STRING = "SUPV_CRC_FAILURE_EVENT"; const char *SUPV_CRC_FAILURE_EVENT_STRING = "SUPV_CRC_FAILURE_EVENT";
const char *SANITIZATION_FAILED_STRING = "SANITIZATION_FAILED"; const char *SANITIZATION_FAILED_STRING = "SANITIZATION_FAILED";
const char *MOUNTED_SD_CARD_STRING = "MOUNTED_SD_CARD";
const char *REBOOT_HW_STRING = "REBOOT_HW";
const char *UPDATE_FILE_NOT_EXISTS_STRING = "UPDATE_FILE_NOT_EXISTS"; const char *UPDATE_FILE_NOT_EXISTS_STRING = "UPDATE_FILE_NOT_EXISTS";
const char *ACTION_COMMANDING_FAILED_STRING = "ACTION_COMMANDING_FAILED"; const char *ACTION_COMMANDING_FAILED_STRING = "ACTION_COMMANDING_FAILED";
const char *UPDATE_AVAILABLE_FAILED_STRING = "UPDATE_AVAILABLE_FAILED"; const char *UPDATE_AVAILABLE_FAILED_STRING = "UPDATE_AVAILABLE_FAILED";
@@ -145,9 +147,20 @@ const char *POSITION_MISMATCH_STRING = "POSITION_MISMATCH";
const char *STR_HELPER_FILE_NOT_EXISTS_STRING = "STR_HELPER_FILE_NOT_EXISTS"; const char *STR_HELPER_FILE_NOT_EXISTS_STRING = "STR_HELPER_FILE_NOT_EXISTS";
const char *STR_HELPER_SENDING_PACKET_FAILED_STRING = "STR_HELPER_SENDING_PACKET_FAILED"; const char *STR_HELPER_SENDING_PACKET_FAILED_STRING = "STR_HELPER_SENDING_PACKET_FAILED";
const char *STR_HELPER_REQUESTING_MSG_FAILED_STRING = "STR_HELPER_REQUESTING_MSG_FAILED"; const char *STR_HELPER_REQUESTING_MSG_FAILED_STRING = "STR_HELPER_REQUESTING_MSG_FAILED";
const char *NEG_V_OUT_OF_BOUNDS_STRING = "NEG_V_OUT_OF_BOUNDS";
const char *U_DRO_OUT_OF_BOUNDS_STRING = "U_DRO_OUT_OF_BOUNDS";
const char *I_DRO_OUT_OF_BOUNDS_STRING = "I_DRO_OUT_OF_BOUNDS";
const char *U_X8_OUT_OF_BOUNDS_STRING = "U_X8_OUT_OF_BOUNDS";
const char *I_X8_OUT_OF_BOUNDS_STRING = "I_X8_OUT_OF_BOUNDS";
const char *U_TX_OUT_OF_BOUNDS_STRING = "U_TX_OUT_OF_BOUNDS";
const char *I_TX_OUT_OF_BOUNDS_STRING = "I_TX_OUT_OF_BOUNDS";
const char *U_MPA_OUT_OF_BOUNDS_STRING = "U_MPA_OUT_OF_BOUNDS";
const char *I_MPA_OUT_OF_BOUNDS_STRING = "I_MPA_OUT_OF_BOUNDS";
const char *U_HPA_OUT_OF_BOUNDS_STRING = "U_HPA_OUT_OF_BOUNDS";
const char *I_HPA_OUT_OF_BOUNDS_STRING = "I_HPA_OUT_OF_BOUNDS";
const char *translateEvents(Event event) { const char *translateEvents(Event event) {
switch ((event & 0xffff)) { switch((event & 0xFFFF)) {
case (2200): case (2200):
return STORE_SEND_WRITE_FAILED_STRING; return STORE_SEND_WRITE_FAILED_STRING;
case (2201): case (2201):
@@ -362,6 +375,10 @@ const char *translateEvents(Event event) {
return SUPV_CRC_FAILURE_EVENT_STRING; return SUPV_CRC_FAILURE_EVENT_STRING;
case (11600): case (11600):
return SANITIZATION_FAILED_STRING; return SANITIZATION_FAILED_STRING;
case (11601):
return MOUNTED_SD_CARD_STRING;
case (11603):
return REBOOT_HW_STRING;
case (11700): case (11700):
return UPDATE_FILE_NOT_EXISTS_STRING; return UPDATE_FILE_NOT_EXISTS_STRING;
case (11701): case (11701):
@@ -428,6 +445,28 @@ const char *translateEvents(Event event) {
return STR_HELPER_SENDING_PACKET_FAILED_STRING; return STR_HELPER_SENDING_PACKET_FAILED_STRING;
case (12019): case (12019):
return STR_HELPER_REQUESTING_MSG_FAILED_STRING; return STR_HELPER_REQUESTING_MSG_FAILED_STRING;
case (12101):
return NEG_V_OUT_OF_BOUNDS_STRING;
case (12102):
return U_DRO_OUT_OF_BOUNDS_STRING;
case (12103):
return I_DRO_OUT_OF_BOUNDS_STRING;
case (12104):
return U_X8_OUT_OF_BOUNDS_STRING;
case (12105):
return I_X8_OUT_OF_BOUNDS_STRING;
case (12106):
return U_TX_OUT_OF_BOUNDS_STRING;
case (12107):
return I_TX_OUT_OF_BOUNDS_STRING;
case (12108):
return U_MPA_OUT_OF_BOUNDS_STRING;
case (12109):
return I_MPA_OUT_OF_BOUNDS_STRING;
case (12110):
return U_HPA_OUT_OF_BOUNDS_STRING;
case (12111):
return I_HPA_OUT_OF_BOUNDS_STRING;
default: default:
return "UNKNOWN_EVENT"; return "UNKNOWN_EVENT";
} }

View File

@@ -3,6 +3,6 @@
#include "fsfw/events/Event.h" #include "fsfw/events/Event.h"
const char* translateEvents(Event event); const char *translateEvents(Event event);
#endif /* FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_ */ #endif /* FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_ */

View File

@@ -1,8 +1,8 @@
/** /**
* @brief Auto-generated object translation file. * @brief Auto-generated object translation file.
* @details * @details
* Contains 111 translations. * Contains 112 translations.
* Generated on: 2022-02-21 17:31:37 * Generated on: 2022-02-26 14:03:55
*/ */
#include "translateObjects.h" #include "translateObjects.h"
@@ -82,6 +82,7 @@ const char *PUS_PACKET_DISTRIBUTOR_STRING = "PUS_PACKET_DISTRIBUTOR";
const char *TMTC_BRIDGE_STRING = "TMTC_BRIDGE"; const char *TMTC_BRIDGE_STRING = "TMTC_BRIDGE";
const char *TMTC_POLLING_TASK_STRING = "TMTC_POLLING_TASK"; const char *TMTC_POLLING_TASK_STRING = "TMTC_POLLING_TASK";
const char *FILE_SYSTEM_HANDLER_STRING = "FILE_SYSTEM_HANDLER"; const char *FILE_SYSTEM_HANDLER_STRING = "FILE_SYSTEM_HANDLER";
const char *SDC_MANAGER_STRING = "SDC_MANAGER";
const char *PTME_STRING = "PTME"; const char *PTME_STRING = "PTME";
const char *PDEC_HANDLER_STRING = "PDEC_HANDLER"; const char *PDEC_HANDLER_STRING = "PDEC_HANDLER";
const char *CCSDS_HANDLER_STRING = "CCSDS_HANDLER"; const char *CCSDS_HANDLER_STRING = "CCSDS_HANDLER";
@@ -272,6 +273,8 @@ const char *translateObject(object_id_t object) {
return TMTC_POLLING_TASK_STRING; return TMTC_POLLING_TASK_STRING;
case 0x50000500: case 0x50000500:
return FILE_SYSTEM_HANDLER_STRING; return FILE_SYSTEM_HANDLER_STRING;
case 0x50000550:
return SDC_MANAGER_STRING;
case 0x50000600: case 0x50000600:
return PTME_STRING; return PTME_STRING;
case 0x50000700: case 0x50000700:

View File

@@ -3,6 +3,6 @@
#include <fsfw/objectmanager/SystemObjectIF.h> #include <fsfw/objectmanager/SystemObjectIF.h>
const char* translateObject(object_id_t object); const char *translateObject(object_id_t object);
#endif /* FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */ #endif /* FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */

View File

@@ -13,11 +13,13 @@
#include "devices/gpioIds.h" #include "devices/gpioIds.h"
PayloadPcduHandler::PayloadPcduHandler(object_id_t objectId, object_id_t comIF, CookieIF* cookie, PayloadPcduHandler::PayloadPcduHandler(object_id_t objectId, object_id_t comIF, CookieIF* cookie,
GpioIF* gpioIF, bool periodicPrintout) GpioIF* gpioIF, SdCardMountedIF* sdcMan,
bool periodicPrintout)
: DeviceHandlerBase(objectId, comIF, cookie), : DeviceHandlerBase(objectId, comIF, cookie),
adcSet(this), adcSet(this),
periodicPrintout(periodicPrintout), periodicPrintout(periodicPrintout),
gpioIF(gpioIF) {} gpioIF(gpioIF),
sdcMan(sdcMan) {}
void PayloadPcduHandler::doStartUp() { void PayloadPcduHandler::doStartUp() {
if ((state != States::PCDU_OFF) and (state != States::ON_TRANS_SSR)) { if ((state != States::PCDU_OFF) and (state != States::ON_TRANS_SSR)) {
@@ -35,8 +37,11 @@ void PayloadPcduHandler::doStartUp() {
// If necessary, check whether a certain amount of time has elapsed // If necessary, check whether a certain amount of time has elapsed
if (transitionOk) { if (transitionOk) {
transitionOk = false; transitionOk = false;
state = States::ON_TRANS_ADC_CLOSE_ZERO;
// We are now in ON mode // We are now in ON mode
startTransition(MODE_NORMAL, 0); startTransition(MODE_NORMAL, 0);
adcCountdown.setTimeout(50);
adcCountdown.resetTimer();
adcState = AdcStates::BOOT_DELAY; adcState = AdcStates::BOOT_DELAY;
// The ADC can now be read. If the values are not close to zero, we should not allow // The ADC can now be read. If the values are not close to zero, we should not allow
// transition // transition
@@ -45,13 +50,161 @@ void PayloadPcduHandler::doStartUp() {
} }
} }
void PayloadPcduHandler::stateMachineToNormal() {
using namespace plpcdu;
if (adcState == AdcStates::BOOT_DELAY) {
if (adcCountdown.hasTimedOut()) {
adcState = AdcStates::SEND_SETUP;
adcCmdExecuted = false;
}
}
if (adcState == AdcStates::SEND_SETUP) {
if (adcCmdExecuted) {
adcState = AdcStates::NORMAL;
setMode(MODE_NORMAL, NORMAL_ADC_ONLY);
adcCountdown.setTimeout(100);
adcCountdown.resetTimer();
adcCmdExecuted = false;
}
}
if (submode == plpcdu::NORMAL_ALL_ON) {
if (state == States::ON_TRANS_ADC_CLOSE_ZERO) {
if (not commandExecuted) {
float waitTime = SSR_TO_DRO_WAIT_TIME;
params.getValue(PlPcduParameter::SSR_TO_DRO_WAIT_TIME_K, waitTime);
countdown.setTimeout(std::round(waitTime * 1000));
countdown.resetTimer();
commandExecuted = true;
// TODO: For now, skip ADC check
transitionOk = true;
}
// ADC values are ok, 5 seconds have elapsed
if (transitionOk and countdown.hasTimedOut()) {
state = States::ON_TRANS_DRO;
// Now start monitoring for negative voltages instead
monMode = MonitoringMode::NEGATIVE;
commandExecuted = false;
transitionOk = false;
}
}
if (state == States::ON_TRANS_DRO) {
if (not commandExecuted) {
float waitTime = DRO_TO_X8_WAIT_TIME;
params.getValue(PlPcduParameter::DRO_TO_X8_WAIT_TIME_K, waitTime);
countdown.setTimeout(std::round(waitTime * 1000));
countdown.resetTimer();
#if OBSW_VERBOSE_LEVEL >= 1
sif::info << "Enabling PL PCDU DRO module" << std::endl;
#endif
// Switch on DRO and start monitoring for negative voltages
gpioIF->pullHigh(gpioIds::PLPCDU_ENB_DRO);
adcCountdown.setTimeout(100);
adcCountdown.resetTimer();
commandExecuted = true;
}
// ADC values are ok, 5 seconds have elapsed
if (transitionOk and countdown.hasTimedOut()) {
state = States::ON_TRANS_X8;
commandExecuted = false;
transitionOk = false;
}
}
if (state == States::ON_TRANS_X8) {
if (not commandExecuted) {
float waitTime = X8_TO_TX_WAIT_TIME;
params.getValue(PlPcduParameter::X8_TO_TX_WAIT_TIME_K, waitTime);
countdown.setTimeout(std::round(waitTime * 1000));
countdown.resetTimer();
#if OBSW_VERBOSE_LEVEL >= 1
sif::info << "Enabling PL PCDU X8 module" << std::endl;
#endif
// Switch on X8
gpioIF->pullHigh(gpioIds::PLPCDU_ENB_X8);
adcCountdown.setTimeout(100);
adcCountdown.resetTimer();
commandExecuted = true;
}
// ADC values are ok, 5 seconds have elapsed
if (transitionOk and countdown.hasTimedOut()) {
state = States::ON_TRANS_TX;
commandExecuted = false;
transitionOk = false;
}
}
if (state == States::ON_TRANS_TX) {
if (not commandExecuted) {
float waitTime = TX_TO_MPA_WAIT_TIME;
params.getValue(PlPcduParameter::TX_TO_MPA_WAIT_TIME_K, waitTime);
countdown.setTimeout(std::round(waitTime * 1000));
countdown.resetTimer();
#if OBSW_VERBOSE_LEVEL >= 1
sif::info << "Enabling PL PCDU TX module" << std::endl;
#endif
// Switch on TX
gpioIF->pullHigh(gpioIds::PLPCDU_ENB_TX);
// Wait for 100 ms before checking ADC values
adcCountdown.setTimeout(100);
adcCountdown.resetTimer();
commandExecuted = true;
}
// ADC values are ok, 5 seconds have elapsed
if (transitionOk and countdown.hasTimedOut()) {
state = States::ON_TRANS_MPA;
commandExecuted = false;
transitionOk = false;
}
}
if (state == States::ON_TRANS_MPA) {
if (not commandExecuted) {
float waitTime = MPA_TO_HPA_WAIT_TIME;
params.getValue(PlPcduParameter::MPA_TO_HPA_WAIT_TIME_K, waitTime);
countdown.setTimeout(std::round(waitTime * 1000));
countdown.resetTimer();
#if OBSW_VERBOSE_LEVEL >= 1
sif::info << "Enabling PL PCDU MPA module" << std::endl;
#endif
// Switch on MPA
gpioIF->pullHigh(gpioIds::PLPCDU_ENB_MPA);
// Wait for 100 ms before checking ADC values
adcCountdown.setTimeout(100);
adcCountdown.resetTimer();
commandExecuted = true;
}
// ADC values are ok, 5 seconds have elapsed
if (transitionOk and countdown.hasTimedOut()) {
state = States::ON_TRANS_HPA;
commandExecuted = false;
transitionOk = false;
}
}
if (state == States::ON_TRANS_HPA) {
if (not commandExecuted) {
// Switch on HPA
gpioIF->pullHigh(gpioIds::PLPCDU_ENB_HPA);
#if OBSW_VERBOSE_LEVEL >= 1
sif::info << "Enabling PL PCDU HPA module" << std::endl;
#endif
commandExecuted = true;
}
// ADC values are ok, 5 seconds have elapsed
if (transitionOk and countdown.hasTimedOut()) {
state = States::PCDU_ON;
setMode(MODE_NORMAL, plpcdu::NORMAL_ALL_ON);
countdown.resetTimer();
commandExecuted = false;
transitionOk = false;
}
}
}
}
void PayloadPcduHandler::doTransition(Mode_t modeFrom, Submode_t subModeFrom) { void PayloadPcduHandler::doTransition(Mode_t modeFrom, Submode_t subModeFrom) {
if (mode == _MODE_TO_NORMAL) { if (mode == _MODE_TO_NORMAL) {
stateMachineToNormal(); stateMachineToNormal();
} }
} }
void PayloadPcduHandler::doShutDown() {} void PayloadPcduHandler::doShutDown() { transitionBackToOff(); }
ReturnValue_t PayloadPcduHandler::buildNormalDeviceCommand(DeviceCommandId_t* id) { ReturnValue_t PayloadPcduHandler::buildNormalDeviceCommand(DeviceCommandId_t* id) {
switch (adcState) { switch (adcState) {
@@ -75,6 +228,9 @@ ReturnValue_t PayloadPcduHandler::buildTransitionDeviceCommand(DeviceCommandId_t
*id = plpcdu::SETUP_CMD; *id = plpcdu::SETUP_CMD;
return buildCommandFromCommand(*id, nullptr, 0); return buildCommandFromCommand(*id, nullptr, 0);
} }
if (mode == _MODE_TO_NORMAL) {
return buildNormalDeviceCommand(id);
}
return NOTHING_TO_SEND; return NOTHING_TO_SEND;
} }
@@ -150,6 +306,8 @@ ReturnValue_t PayloadPcduHandler::interpretDeviceReply(DeviceCommandId_t id,
return pg.getReadResult(); return pg.getReadResult();
} }
handleExtConvRead(packet); handleExtConvRead(packet);
checkAdcValues();
adcSet.setValidity(true, true);
handlePrintout(); handlePrintout();
break; break;
} }
@@ -162,6 +320,8 @@ ReturnValue_t PayloadPcduHandler::interpretDeviceReply(DeviceCommandId_t id,
uint8_t tempStartIdx = ADC_REPLY_SIZE + TEMP_REPLY_SIZE - 2; uint8_t tempStartIdx = ADC_REPLY_SIZE + TEMP_REPLY_SIZE - 2;
adcSet.tempC.value = adcSet.tempC.value =
max1227::getTemperature(packet[tempStartIdx] << 8 | packet[tempStartIdx + 1]); max1227::getTemperature(packet[tempStartIdx] << 8 | packet[tempStartIdx + 1]);
checkAdcValues();
adcSet.setValidity(true, true);
handlePrintout(); handlePrintout();
break; break;
} }
@@ -180,7 +340,9 @@ uint32_t PayloadPcduHandler::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo
ReturnValue_t PayloadPcduHandler::initializeLocalDataPool(localpool::DataPool& localDataPoolMap, ReturnValue_t PayloadPcduHandler::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
LocalDataPoolManager& poolManager) { LocalDataPoolManager& poolManager) {
localDataPoolMap.emplace(plpcdu::PlPcduPoolIds::CHANNEL_VEC, &channelValues); localDataPoolMap.emplace(plpcdu::PlPcduPoolIds::CHANNEL_VEC, &channelValues);
localDataPoolMap.emplace(plpcdu::PlPcduPoolIds::PROCESSED_VEC, &processedValues);
localDataPoolMap.emplace(plpcdu::PlPcduPoolIds::TEMP, &tempC); localDataPoolMap.emplace(plpcdu::PlPcduPoolIds::TEMP, &tempC);
poolManager.subscribeForPeriodicPacket(adcSet.getSid(), false, 0.1, true);
return HasReturnvaluesIF::RETURN_OK; return HasReturnvaluesIF::RETURN_OK;
} }
@@ -195,6 +357,7 @@ void PayloadPcduHandler::handleExtConvRead(const uint8_t* bufStart) {
} }
void PayloadPcduHandler::handlePrintout() { void PayloadPcduHandler::handlePrintout() {
using namespace plpcdu;
if (periodicPrintout) { if (periodicPrintout) {
if (opDivider.checkAndIncrement()) { if (opDivider.checkAndIncrement()) {
sif::info << "PL PCDU ADC hex [" << std::setfill('0') << std::hex; sif::info << "PL PCDU ADC hex [" << std::setfill('0') << std::hex;
@@ -205,6 +368,17 @@ void PayloadPcduHandler::handlePrintout() {
} }
} }
sif::info << "] | T[C] " << std::dec << adcSet.tempC.value << std::endl; sif::info << "] | T[C] " << std::dec << adcSet.tempC.value << std::endl;
sif::info << "Neg V: " << adcSet.processed[U_NEG_V_FB] << std::endl;
sif::info << "I HPA [mA]: " << adcSet.processed[I_HPA] << std::endl;
sif::info << "U HPA [V]: " << adcSet.processed[U_HPA_DIV_6] << std::endl;
sif::info << "I MPA [mA]: " << adcSet.processed[I_MPA] << std::endl;
sif::info << "U MPA [V]: " << adcSet.processed[U_MPA_DIV_6] << std::endl;
sif::info << "I TX [mA]: " << adcSet.processed[I_TX] << std::endl;
sif::info << "U TX [V]: " << adcSet.processed[U_TX_DIV_6] << std::endl;
sif::info << "I X8 [mA]: " << adcSet.processed[I_X8] << std::endl;
sif::info << "U X8 [V]: " << adcSet.processed[U_X8_DIV_6] << std::endl;
sif::info << "I DRO [mA]: " << adcSet.processed[I_DRO] << std::endl;
sif::info << "U DRO [V]: " << adcSet.processed[U_DRO_DIV_6] << std::endl;
} }
} }
} }
@@ -231,108 +405,154 @@ void PayloadPcduHandler::transitionBackToOff() {
triggerEvent(TRANSITION_BACK_TO_OFF, static_cast<uint32_t>(currentState)); triggerEvent(TRANSITION_BACK_TO_OFF, static_cast<uint32_t>(currentState));
} }
void PayloadPcduHandler::stateMachineToNormal() { void PayloadPcduHandler::checkAdcValues() {
if (adcState == AdcStates::BOOT_DELAY) { using namespace plpcdu;
if (adcCountdown.hasTimedOut()) { checkJsonFileInit();
adcState = AdcStates::SEND_SETUP; adcSet.processed[U_BAT_DIV_6] =
adcCmdExecuted = false; static_cast<float>(adcSet.channels[0]) * VOLTAGE_DIV / MAX122X_BIT * MAX122X_VREF;
adcSet.processed[U_NEG_V_FB] =
V_POS - VOLTAGE_DIV_U_NEG *
(V_POS - static_cast<float>(adcSet.channels[1]) / MAX122X_BIT * MAX122X_VREF);
adcSet.processed[I_HPA] = static_cast<float>(adcSet.channels[2]) * SCALE_CURRENT_HPA * 1000.0;
adcSet.processed[U_HPA_DIV_6] = static_cast<float>(adcSet.channels[3]) * SCALE_VOLTAGE;
adcSet.processed[I_MPA] = static_cast<float>(adcSet.channels[4]) * SCALE_CURRENT_MPA * 1000.0;
adcSet.processed[U_MPA_DIV_6] = static_cast<float>(adcSet.channels[5]) * SCALE_VOLTAGE;
adcSet.processed[I_TX] = static_cast<float>(adcSet.channels[6]) * SCALE_CURRENT_TX * 1000.0;
adcSet.processed[U_TX_DIV_6] = static_cast<float>(adcSet.channels[7]) * SCALE_VOLTAGE;
adcSet.processed[I_X8] = static_cast<float>(adcSet.channels[8]) * SCALE_CURRENT_X8 * 1000.0;
adcSet.processed[U_X8_DIV_6] = static_cast<float>(adcSet.channels[9]) * SCALE_VOLTAGE;
adcSet.processed[I_DRO] = static_cast<float>(adcSet.channels[10]) * SCALE_CURRENT_DRO * 1000.0;
adcSet.processed[U_DRO_DIV_6] = static_cast<float>(adcSet.channels[11]) * SCALE_VOLTAGE;
float lowerBound = 0.0;
float upperBound = 0.0;
bool adcTransition = false;
adcTransition = state == States::ON_TRANS_DRO and adcCountdown.isBusy();
// Now check against voltage and current limits, depending on state
if (state >= States::ON_TRANS_DRO and not adcTransition) {
params.getValue(PlPcduParameter::NEG_V_LOWER_BOUND_K, lowerBound);
params.getValue(PlPcduParameter::NEG_V_UPPER_BOUND_K, upperBound);
if (not checkVoltage(adcSet.processed[U_NEG_V_FB], lowerBound, upperBound,
NEG_V_OUT_OF_BOUNDS)) {
return;
}
params.getValue(PlPcduParameter::DRO_U_LOWER_BOUND_K, lowerBound);
params.getValue(PlPcduParameter::DRO_U_UPPER_BOUND_K, upperBound);
if (not checkVoltage(adcSet.processed[U_DRO_DIV_6], lowerBound, upperBound,
U_DRO_OUT_OF_BOUNDS)) {
return;
}
params.getValue(PlPcduParameter::DRO_I_UPPER_BOUND_K, upperBound);
if (not checkCurrent(adcSet.processed[I_DRO], upperBound, I_DRO_OUT_OF_BOUNDS)) {
return;
} }
} }
if (adcState == AdcStates::SEND_SETUP) { adcTransition = state == States::ON_TRANS_X8 and adcCountdown.isBusy();
if (adcCmdExecuted) { if (state >= States::ON_TRANS_X8 and not adcTransition) {
adcState = AdcStates::NORMAL; params.getValue(PlPcduParameter::X8_U_LOWER_BOUND_K, lowerBound);
setMode(MODE_NORMAL, plpcdu::NORMAL_ADC_ONLY); params.getValue(PlPcduParameter::X8_U_UPPER_BOUND_K, upperBound);
adcCmdExecuted = false; if (not checkVoltage(adcSet.processed[U_X8_DIV_6], lowerBound, upperBound,
U_X8_OUT_OF_BOUNDS)) {
return;
}
params.getValue(PlPcduParameter::X8_I_UPPER_BOUND_K, upperBound);
if (not checkCurrent(adcSet.processed[I_X8], upperBound, I_X8_OUT_OF_BOUNDS)) {
return;
} }
} }
if (submode == plpcdu::NORMAL_ALL_ON) { adcTransition = state == States::ON_TRANS_TX and adcCountdown.isBusy();
if (state == States::ON_TRANS_ADC_CLOSE_ZERO) { if (state >= States::ON_TRANS_TX and not adcTransition) {
if (not commandExecuted) { params.getValue(PlPcduParameter::TX_U_LOWER_BOUND_K, lowerBound);
countdown.resetTimer(); params.getValue(PlPcduParameter::TX_U_UPPER_BOUND_K, upperBound);
commandExecuted = true; if (not checkVoltage(adcSet.processed[U_TX_DIV_6], lowerBound, upperBound,
} U_TX_OUT_OF_BOUNDS)) {
// ADC values are ok, 5 seconds have elapsed return;
if (transitionOk and countdown.hasTimedOut()) {
state = States::ON_TRANS_DRO;
// Now start monitoring for negative voltages instead
monMode = MonitoringMode::NEGATIVE;
countdown.resetTimer();
commandExecuted = false;
transitionOk = false;
}
} }
if (state == States::ON_TRANS_DRO) { params.getValue(PlPcduParameter::TX_I_UPPER_BOUND_K, upperBound);
if (not commandExecuted) { if (not checkCurrent(adcSet.processed[I_TX], upperBound, I_TX_OUT_OF_BOUNDS)) {
// Switch on DRO and start monitoring for negative voltagea return;
gpioIF->pullHigh(gpioIds::PLPCDU_ENB_DRO);
commandExecuted = true;
}
// ADC values are ok, 5 seconds have elapsed
if (transitionOk and countdown.hasTimedOut()) {
state = States::ON_TRANS_X8;
countdown.resetTimer();
commandExecuted = false;
transitionOk = false;
}
}
if (state == States::ON_TRANS_X8) {
if (not commandExecuted) {
// Switch on X8
gpioIF->pullHigh(gpioIds::PLPCDU_ENB_X8);
commandExecuted = true;
}
// ADC values are ok, 5 seconds have elapsed
if (transitionOk and countdown.hasTimedOut()) {
state = States::ON_TRANS_TX;
countdown.resetTimer();
commandExecuted = false;
transitionOk = false;
}
}
if (state == States::ON_TRANS_TX) {
if (not commandExecuted) {
// Switch on TX
gpioIF->pullHigh(gpioIds::PLPCDU_ENB_TX);
commandExecuted = true;
}
// ADC values are ok, 5 seconds have elapsed
if (transitionOk and countdown.hasTimedOut()) {
state = States::ON_TRANS_MPA;
countdown.resetTimer();
commandExecuted = false;
transitionOk = false;
}
}
if (state == States::ON_TRANS_MPA) {
if (not commandExecuted) {
// Switch on MPA
gpioIF->pullHigh(gpioIds::PLPCDU_ENB_MPA);
commandExecuted = true;
}
// ADC values are ok, 5 seconds have elapsed
if (transitionOk and countdown.hasTimedOut()) {
state = States::ON_TRANS_HPA;
countdown.resetTimer();
commandExecuted = false;
transitionOk = false;
}
}
if (state == States::ON_TRANS_HPA) {
if (not commandExecuted) {
// Switch on HPA
gpioIF->pullHigh(gpioIds::PLPCDU_ENB_HPA);
commandExecuted = true;
}
// ADC values are ok, 5 seconds have elapsed
if (transitionOk and countdown.hasTimedOut()) {
state = States::PCDU_ON;
setMode(MODE_NORMAL, plpcdu::NORMAL_ALL_ON);
countdown.resetTimer();
commandExecuted = false;
transitionOk = false;
}
} }
} }
adcTransition = state == States::ON_TRANS_MPA and adcCountdown.isBusy();
if (state >= States::ON_TRANS_MPA and not adcTransition) {
params.getValue(PlPcduParameter::MPA_U_LOWER_BOUND_K, lowerBound);
params.getValue(PlPcduParameter::MPA_U_UPPER_BOUND_K, upperBound);
if (not checkVoltage(adcSet.processed[U_MPA_DIV_6], lowerBound, upperBound,
U_MPA_OUT_OF_BOUNDS)) {
return;
}
params.getValue(PlPcduParameter::MPA_I_UPPER_BOUND_K, upperBound);
if (not checkCurrent(adcSet.processed[I_MPA], upperBound, I_MPA_OUT_OF_BOUNDS)) {
return;
}
}
adcTransition = state == States::ON_TRANS_HPA and adcCountdown.isBusy();
if (state >= States::ON_TRANS_HPA and not adcTransition) {
params.getValue(PlPcduParameter::HPA_U_LOWER_BOUND_K, lowerBound);
params.getValue(PlPcduParameter::HPA_U_UPPER_BOUND_K, upperBound);
if (not checkVoltage(adcSet.processed[U_HPA_DIV_6], lowerBound, upperBound,
U_HPA_OUT_OF_BOUNDS)) {
return;
}
params.getValue(PlPcduParameter::HPA_I_UPPER_BOUND_K, upperBound);
if (not checkCurrent(adcSet.processed[I_HPA], upperBound, I_HPA_OUT_OF_BOUNDS)) {
return;
}
}
transitionOk = true;
}
void PayloadPcduHandler::checkJsonFileInit() {
if (not jsonFileInitComplete) {
sd::SdCard prefSd;
sdcMan->getPreferredSdCard(prefSd);
if (sdcMan->isSdCardMounted(prefSd)) {
params.initialize(sdcMan->getCurrentMountPrefix(prefSd));
jsonFileInitComplete = true;
}
}
}
bool PayloadPcduHandler::checkVoltage(float val, float lowerBound, float upperBound, Event event) {
bool tooLarge = false;
if (val < lowerBound or val > upperBound) {
if (val > upperBound) {
tooLarge = true;
} else {
tooLarge = false;
}
uint32_t p2 = 0;
serializeFloat(p2, val);
triggerEvent(event, tooLarge, p2);
transitionOk = false;
transitionBackToOff();
return false;
}
return true;
}
bool PayloadPcduHandler::checkCurrent(float val, float upperBound, Event event) {
if (val > upperBound) {
uint32_t p2 = 0;
serializeFloat(p2, val);
triggerEvent(event, true, p2);
transitionOk = false;
transitionBackToOff();
return false;
}
return true;
}
ReturnValue_t PayloadPcduHandler::isModeCombinationValid(Mode_t mode, Submode_t submode) {
if (mode == MODE_NORMAL and submode <= 1) {
return HasReturnvaluesIF::RETURN_OK;
}
return DeviceHandlerBase::isModeCombinationValid(mode, submode);
}
ReturnValue_t PayloadPcduHandler::serializeFloat(uint32_t& param, float val) {
size_t dummy = 0;
return SerializeAdapter::serialize(&val, reinterpret_cast<uint8_t*>(&param), &dummy, 4,
SerializeIF::Endianness::NETWORK);
} }
#ifdef FSFW_OSAL_LINUX #ifdef FSFW_OSAL_LINUX
@@ -464,4 +684,5 @@ ReturnValue_t PayloadPcduHandler::transferAsTwo(SpiComIF* comIf, SpiCookie* cook
} }
return HasReturnvaluesIF::RETURN_OK; return HasReturnvaluesIF::RETURN_OK;
} }
#endif #endif

View File

@@ -9,6 +9,7 @@
#include "fsfw/FSFW.h" #include "fsfw/FSFW.h"
#include "fsfw_hal/common/gpio/GpioIF.h" #include "fsfw_hal/common/gpio/GpioIF.h"
#include "mission/devices/devicedefinitions/payloadPcduDefinitions.h" #include "mission/devices/devicedefinitions/payloadPcduDefinitions.h"
#include "mission/memory/SdCardMountedIF.h"
#ifdef FSFW_OSAL_LINUX #ifdef FSFW_OSAL_LINUX
class SpiComIF; class SpiComIF;
@@ -32,11 +33,34 @@ class SpiCookie;
class PayloadPcduHandler : public DeviceHandlerBase { class PayloadPcduHandler : public DeviceHandlerBase {
public: public:
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PL_PCDU_HANDLER; static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PL_PCDU_HANDLER;
//! [EXPORT] : [COMMENT] Could not transition properly and went back to ALL OFF
static constexpr Event TRANSITION_BACK_TO_OFF = static constexpr Event TRANSITION_BACK_TO_OFF =
event::makeEvent(SUBSYSTEM_ID, 0, severity::MEDIUM); event::makeEvent(SUBSYSTEM_ID, 0, severity::MEDIUM);
//! [EXPORT] : [COMMENT] P1: 0 -> too low, 1 -> too high P2: Float value
static constexpr Event NEG_V_OUT_OF_BOUNDS = event::makeEvent(SUBSYSTEM_ID, 1, severity::MEDIUM);
//! [EXPORT] : [COMMENT] P1: 0 -> too low, 1 -> too high P2: Float value
static constexpr Event U_DRO_OUT_OF_BOUNDS = event::makeEvent(SUBSYSTEM_ID, 2, severity::MEDIUM);
//! [EXPORT] : [COMMENT] P1: 0 -> too low, 1 -> too high P2: Float value
static constexpr Event I_DRO_OUT_OF_BOUNDS = event::makeEvent(SUBSYSTEM_ID, 3, severity::MEDIUM);
//! [EXPORT] : [COMMENT] P1: 0 -> too low, 1 -> too high P2: Float value
static constexpr Event U_X8_OUT_OF_BOUNDS = event::makeEvent(SUBSYSTEM_ID, 4, severity::MEDIUM);
//! [EXPORT] : [COMMENT] P1: 0 -> too low, 1 -> too high P2: Float value
static constexpr Event I_X8_OUT_OF_BOUNDS = event::makeEvent(SUBSYSTEM_ID, 5, severity::MEDIUM);
//! [EXPORT] : [COMMENT] P1: 0 -> too low, 1 -> too high P2: Float value
static constexpr Event U_TX_OUT_OF_BOUNDS = event::makeEvent(SUBSYSTEM_ID, 6, severity::MEDIUM);
//! [EXPORT] : [COMMENT] P1: 0 -> too low, 1 -> too high P2: Float value
static constexpr Event I_TX_OUT_OF_BOUNDS = event::makeEvent(SUBSYSTEM_ID, 7, severity::MEDIUM);
//! [EXPORT] : [COMMENT] P1: 0 -> too low, 1 -> too high P2: Float value
static constexpr Event U_MPA_OUT_OF_BOUNDS = event::makeEvent(SUBSYSTEM_ID, 8, severity::MEDIUM);
//! [EXPORT] : [COMMENT] P1: 0 -> too low, 1 -> too high P2: Float value
static constexpr Event I_MPA_OUT_OF_BOUNDS = event::makeEvent(SUBSYSTEM_ID, 9, severity::MEDIUM);
//! [EXPORT] : [COMMENT] P1: 0 -> too low, 1 -> too high P2: Float value
static constexpr Event U_HPA_OUT_OF_BOUNDS = event::makeEvent(SUBSYSTEM_ID, 10, severity::MEDIUM);
//! [EXPORT] : [COMMENT] P1: 0 -> too low, 1 -> too high P2: Float value
static constexpr Event I_HPA_OUT_OF_BOUNDS = event::makeEvent(SUBSYSTEM_ID, 11, severity::MEDIUM);
PayloadPcduHandler(object_id_t objectId, object_id_t comIF, CookieIF* cookie, GpioIF* gpioIF, PayloadPcduHandler(object_id_t objectId, object_id_t comIF, CookieIF* cookie, GpioIF* gpioIF,
bool periodicPrintout); SdCardMountedIF* sdcMan, bool periodicPrintout);
void setToGoToNormalModeImmediately(bool enable); void setToGoToNormalModeImmediately(bool enable);
void enablePeriodicPrintout(bool enable, uint8_t divider); void enablePeriodicPrintout(bool enable, uint8_t divider);
@@ -86,13 +110,18 @@ class PayloadPcduHandler : public DeviceHandlerBase {
bool commandExecuted = false; bool commandExecuted = false;
bool adcCmdExecuted = false; bool adcCmdExecuted = false;
bool periodicPrintout = false; bool periodicPrintout = false;
bool jsonFileInitComplete = false;
PeriodicOperationDivider opDivider = PeriodicOperationDivider(5); PeriodicOperationDivider opDivider = PeriodicOperationDivider(5);
uint8_t tempReadDivisor = 1; uint8_t tempReadDivisor = 1;
Countdown countdown = Countdown(5000); Countdown countdown = Countdown(5000);
Countdown adcCountdown = Countdown(50); Countdown adcCountdown = Countdown(50);
GpioIF* gpioIF; GpioIF* gpioIF;
SdCardMountedIF* sdcMan;
plpcdu::PlPcduParameter params;
PoolEntry<uint16_t> channelValues = PoolEntry<uint16_t>({0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}); PoolEntry<uint16_t> channelValues = PoolEntry<uint16_t>({0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0});
PoolEntry<float> processedValues =
PoolEntry<float>({0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0});
PoolEntry<float> tempC = PoolEntry<float>({0.0}); PoolEntry<float> tempC = PoolEntry<float>({0.0});
void doTransition(Mode_t modeFrom, Submode_t subModeFrom) override; void doTransition(Mode_t modeFrom, Submode_t subModeFrom) override;
@@ -111,10 +140,16 @@ class PayloadPcduHandler : public DeviceHandlerBase {
uint32_t getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) override; uint32_t getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) override;
ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap, ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
LocalDataPoolManager& poolManager) override; LocalDataPoolManager& poolManager) override;
ReturnValue_t isModeCombinationValid(Mode_t mode, Submode_t submode) override;
void handleExtConvRead(const uint8_t* bufStart); void handleExtConvRead(const uint8_t* bufStart);
void handlePrintout(); void handlePrintout();
void checkAdcValues();
void checkJsonFileInit();
void stateMachineToNormal(); void stateMachineToNormal();
bool checkVoltage(float val, float lowerBound, float upperBound, Event event);
bool checkCurrent(float val, float upperBound, Event event);
ReturnValue_t serializeFloat(uint32_t& param, float val);
}; };
#endif /* LINUX_DEVICES_PLPCDUHANDLER_H_ */ #endif /* LINUX_DEVICES_PLPCDUHANDLER_H_ */

View File

@@ -5,8 +5,12 @@
#include <fsfw/devicehandlers/DeviceHandlerIF.h> #include <fsfw/devicehandlers/DeviceHandlerIF.h>
#include <cstddef> #include <cstddef>
#include <filesystem>
#include <nlohmann/json.hpp>
#include "OBSWConfig.h"
#include "mission/devices/max1227.h" #include "mission/devices/max1227.h"
#include "mission/memory/NVMParameterBase.h"
namespace plpcdu { namespace plpcdu {
@@ -16,7 +20,7 @@ enum PlPcduAdcChannels : uint8_t {
U_BAT_DIV_6 = 0, U_BAT_DIV_6 = 0,
// According to schematic, will be 2.2158V for Vneg = +0V and 0.2446V for Vneg = -6V // According to schematic, will be 2.2158V for Vneg = +0V and 0.2446V for Vneg = -6V
// Full Forumula: V_neg = V_post - (R1 + R2) / R1 * (V_pos - V_out) with R1 being 27.4k // Full Forumula: V_neg = V_post - (R1 + R2) / R1 * (V_pos - V_out) with R1 being 27.4k
// and R2 being 49.9k // and R2 being 49.9k. FB = Feedback
U_NEG_V_FB = 1, U_NEG_V_FB = 1,
I_HPA = 2, I_HPA = 2,
U_HPA_DIV_6 = 3, U_HPA_DIV_6 = 3,
@@ -31,7 +35,7 @@ enum PlPcduAdcChannels : uint8_t {
NUM_CHANNELS = 12 NUM_CHANNELS = 12
}; };
enum PlPcduPoolIds : uint32_t { CHANNEL_VEC = 0, TEMP = 1 }; enum PlPcduPoolIds : uint32_t { CHANNEL_VEC = 0, PROCESSED_VEC = 1, TEMP = 2 };
static constexpr size_t MAX_ADC_REPLY_SIZE = 64; static constexpr size_t MAX_ADC_REPLY_SIZE = 64;
@@ -57,6 +61,62 @@ static constexpr uint8_t CHANNEL_N = CHANNELS_NUM - 1;
// Store temperature as well // Store temperature as well
static constexpr size_t DATASET_ENTRIES = CHANNELS_NUM + 1; static constexpr size_t DATASET_ENTRIES = CHANNELS_NUM + 1;
static constexpr uint8_t VOLTAGE_DIV = 6;
// 12-bit ADC: 2 to the power of 12 minus 1
static constexpr uint16_t MAX122X_BIT = 4095;
static constexpr float MAX122X_VREF = 2.5;
static constexpr float GAIN_INA169 = 100.0;
static constexpr float R_SHUNT_HPA = 0.008;
static constexpr float R_SHUNT_MPA = 0.015;
static constexpr float R_SHUNT_TX = 0.05;
static constexpr float R_SHUNT_X8 = 0.015;
static constexpr float R_SHUNT_DRO = 0.022;
static constexpr float V_POS = 3.3;
static constexpr float VOLTAGE_DIV_U_NEG = (49.9 + 27.4) / 27.4;
static constexpr float MAX122X_SCALE = MAX122X_VREF / MAX122X_BIT;
static constexpr float SCALE_VOLTAGE = MAX122X_SCALE * VOLTAGE_DIV;
static constexpr float SCALE_CURRENT_HPA = MAX122X_SCALE / (GAIN_INA169 * R_SHUNT_HPA);
static constexpr float SCALE_CURRENT_MPA = MAX122X_SCALE / (GAIN_INA169 * R_SHUNT_MPA);
static constexpr float SCALE_CURRENT_TX = MAX122X_SCALE / (GAIN_INA169 * R_SHUNT_TX);
static constexpr float SCALE_CURRENT_X8 = MAX122X_SCALE / (GAIN_INA169 * R_SHUNT_X8);
static constexpr float SCALE_CURRENT_DRO = MAX122X_SCALE / (GAIN_INA169 * R_SHUNT_DRO);
// TODO: Make these configurable parameters using a JSON file
// Upper bound of currents in milliamperes [mA]
static constexpr double NEG_V_LOWER_BOUND = -6.5;
static constexpr double NEG_V_UPPER_BOUND = -2.7;
static constexpr double DRO_U_LOWER_BOUND = 5.0;
static constexpr double DRO_U_UPPER_BOUND = 7.0;
static constexpr double DRO_I_UPPER_BOUND = 40.0;
static constexpr double X8_U_LOWER_BOUND = 2.6;
static constexpr double X8_U_UPPER_BOUND = 4.0;
static constexpr double X8_I_UPPER_BOUND = 100.0;
static constexpr double TX_U_LOWER_BOUND = 2.6;
static constexpr double TX_U_UPPER_BOUND = 4.0;
static constexpr double TX_I_UPPER_BOUND = 250.0;
static constexpr double MPA_U_LOWER_BOUND = 2.6;
static constexpr double MPA_U_UPPER_BOUND = 4.0;
static constexpr double MPA_I_UPPER_BOUND = 650.0;
static constexpr double HPA_U_LOWER_BOUND = 9.4;
static constexpr double HPA_U_UPPER_BOUND = 11.0;
static constexpr double HPA_I_UPPER_BOUND = 3000.0;
// Wait time in floating point seconds
static constexpr double SSR_TO_DRO_WAIT_TIME = 5.0;
static constexpr double DRO_TO_X8_WAIT_TIME = 905.0;
static constexpr double X8_TO_TX_WAIT_TIME = 5.0;
static constexpr double TX_TO_MPA_WAIT_TIME = 5.0;
static constexpr double MPA_TO_HPA_WAIT_TIME = 5.0;
/**
* The current of the processed values is calculated and stored as a milliamperes [mA].
* The voltages are stored as Volt values.
*/
class PlPcduAdcSet : public StaticLocalDataSet<DATASET_ENTRIES> { class PlPcduAdcSet : public StaticLocalDataSet<DATASET_ENTRIES> {
public: public:
PlPcduAdcSet(HasLocalDataPoolIF* owner) : StaticLocalDataSet(owner, ADC_SET_ID) {} PlPcduAdcSet(HasLocalDataPoolIF* owner) : StaticLocalDataSet(owner, ADC_SET_ID) {}
@@ -64,9 +124,85 @@ class PlPcduAdcSet : public StaticLocalDataSet<DATASET_ENTRIES> {
PlPcduAdcSet(object_id_t objectId) : StaticLocalDataSet(sid_t(objectId, ADC_SET_ID)) {} PlPcduAdcSet(object_id_t objectId) : StaticLocalDataSet(sid_t(objectId, ADC_SET_ID)) {}
lp_vec_t<uint16_t, 12> channels = lp_vec_t<uint16_t, 12>(sid.objectId, CHANNEL_VEC, this); lp_vec_t<uint16_t, 12> channels = lp_vec_t<uint16_t, 12>(sid.objectId, CHANNEL_VEC, this);
lp_vec_t<float, 12> processed = lp_vec_t<float, 12>(sid.objectId, PROCESSED_VEC, this);
lp_var_t<float> tempC = lp_var_t<float>(sid.objectId, TEMP, this); lp_var_t<float> tempC = lp_var_t<float>(sid.objectId, TEMP, this);
}; };
class PlPcduParameter : public NVMParameterBase {
public:
static constexpr char SSR_TO_DRO_WAIT_TIME_K[] = "ssrToDroWait";
static constexpr char DRO_TO_X8_WAIT_TIME_K[] = "droToX8Wait";
static constexpr char X8_TO_TX_WAIT_TIME_K[] = "X8ToTxWait";
static constexpr char TX_TO_MPA_WAIT_TIME_K[] = "txToMpaWait";
static constexpr char MPA_TO_HPA_WAIT_TIME_K[] = "mpaToHpaWait";
static constexpr char NEG_V_LOWER_BOUND_K[] = "negVoltLowerBound";
static constexpr char NEG_V_UPPER_BOUND_K[] = "negVoltUpperBound";
static constexpr char DRO_U_LOWER_BOUND_K[] = "droVoltLowerBound";
static constexpr char DRO_U_UPPER_BOUND_K[] = "droVoltUpperBound";
static constexpr char DRO_I_UPPER_BOUND_K[] = "droCurrUpperBound";
static constexpr char X8_U_LOWER_BOUND_K[] = "x8VoltLowerBound";
static constexpr char X8_U_UPPER_BOUND_K[] = "x8VoltUpperBound";
static constexpr char X8_I_UPPER_BOUND_K[] = "x8CurrUpperBound";
static constexpr char TX_U_LOWER_BOUND_K[] = "txVoltLowerBound";
static constexpr char TX_U_UPPER_BOUND_K[] = "txVoltUpperBound";
static constexpr char TX_I_UPPER_BOUND_K[] = "txCurrUpperBound";
static constexpr char MPA_U_LOWER_BOUND_K[] = "mpaVoltLowerBound";
static constexpr char MPA_U_UPPER_BOUND_K[] = "mpaVoltUpperBound";
static constexpr char MPA_I_UPPER_BOUND_K[] = "mpaCurrUpperBound";
static constexpr char HPA_U_LOWER_BOUND_K[] = "hpaVoltLowerBound";
static constexpr char HPA_U_UPPER_BOUND_K[] = "hpaVoltUpperBound";
static constexpr char HPA_I_UPPER_BOUND_K[] = "hpaCurrUpperBound";
PlPcduParameter() : NVMParameterBase(""), mountPrefix("") {
// Initialize with default values
insertValue(SSR_TO_DRO_WAIT_TIME_K, SSR_TO_DRO_WAIT_TIME);
insertValue(DRO_TO_X8_WAIT_TIME_K, DRO_TO_X8_WAIT_TIME);
insertValue(X8_TO_TX_WAIT_TIME_K, X8_TO_TX_WAIT_TIME);
insertValue(TX_TO_MPA_WAIT_TIME_K, TX_TO_MPA_WAIT_TIME);
insertValue(MPA_TO_HPA_WAIT_TIME_K, MPA_TO_HPA_WAIT_TIME);
insertValue(NEG_V_LOWER_BOUND_K, NEG_V_LOWER_BOUND);
insertValue(NEG_V_UPPER_BOUND_K, NEG_V_UPPER_BOUND);
insertValue(DRO_U_LOWER_BOUND_K, DRO_U_LOWER_BOUND);
insertValue(DRO_U_UPPER_BOUND_K, DRO_U_UPPER_BOUND);
insertValue(DRO_I_UPPER_BOUND_K, DRO_I_UPPER_BOUND);
insertValue(X8_U_LOWER_BOUND_K, X8_U_LOWER_BOUND);
insertValue(X8_U_UPPER_BOUND_K, X8_U_UPPER_BOUND);
insertValue(X8_I_UPPER_BOUND_K, X8_I_UPPER_BOUND);
insertValue(TX_U_LOWER_BOUND_K, TX_U_LOWER_BOUND);
insertValue(TX_U_UPPER_BOUND_K, TX_U_UPPER_BOUND);
insertValue(TX_I_UPPER_BOUND_K, TX_I_UPPER_BOUND);
insertValue(MPA_U_LOWER_BOUND_K, MPA_U_LOWER_BOUND);
insertValue(MPA_U_UPPER_BOUND_K, MPA_U_UPPER_BOUND);
insertValue(MPA_I_UPPER_BOUND_K, MPA_I_UPPER_BOUND);
insertValue(HPA_U_LOWER_BOUND_K, HPA_U_LOWER_BOUND);
insertValue(HPA_U_UPPER_BOUND_K, HPA_U_UPPER_BOUND);
insertValue(HPA_I_UPPER_BOUND_K, HPA_I_UPPER_BOUND);
}
ReturnValue_t initialize(std::string mountPrefix) {
setFullName(mountPrefix + "/conf/plpcdu.json");
ReturnValue_t result = readJsonFile();
if (result != HasReturnvaluesIF::RETURN_OK) {
// File does not exist. Create it. Keys and appropriate init values were
// specified in constructor
#if OBSW_VERBOSE_LEVEL >= 1
sif::info << "Creating PL PCDU JSON file at " << getFullName() << std::endl;
#endif
writeJsonFile();
}
return HasReturnvaluesIF::RETURN_OK;
}
private:
std::string mountPrefix;
};
} // namespace plpcdu } // namespace plpcdu
#endif /* LINUX_DEVICES_DEVICEDEFINITIONS_PAYLOADPCDUDEFINITIONS_H_ */ #endif /* LINUX_DEVICES_DEVICEDEFINITIONS_PAYLOADPCDUDEFINITIONS_H_ */

View File

@@ -19,7 +19,7 @@ ReturnValue_t NVMParameterBase::readJsonFile() {
ReturnValue_t NVMParameterBase::writeJsonFile() { ReturnValue_t NVMParameterBase::writeJsonFile() {
std::ofstream o(fullName); std::ofstream o(fullName);
o << std::setw(4) << json; o << std::setw(4) << json << std::endl;
return HasReturnvaluesIF::RETURN_OK; return HasReturnvaluesIF::RETURN_OK;
} }

View File

@@ -34,7 +34,7 @@ class NVMParameterBase : public HasReturnvaluesIF {
ReturnValue_t setValue(std::string key, T value); ReturnValue_t setValue(std::string key, T value);
template <typename T> template <typename T>
ReturnValue_t getValue(std::string key, T* value) const; ReturnValue_t getValue(std::string key, T& value) const;
void printKeys() const; void printKeys() const;
void print() const; void print() const;
@@ -67,11 +67,11 @@ inline ReturnValue_t NVMParameterBase::setValue(std::string key, T value) {
} }
template <typename T> template <typename T>
inline ReturnValue_t NVMParameterBase::getValue(std::string key, T* value) const { inline ReturnValue_t NVMParameterBase::getValue(std::string key, T& value) const {
if (!json.contains(key)) { if (!json.contains(key)) {
return KEY_NOT_EXISTS; return KEY_NOT_EXISTS;
} }
*value = json[key]; value = json[key];
return RETURN_OK; return RETURN_OK;
} }

View File

@@ -0,0 +1,18 @@
#ifndef MISSION_MEMORY_SDCARDMOUNTERIF_H_
#define MISSION_MEMORY_SDCARDMOUNTERIF_H_
#include <string>
#include "definitions.h"
class SdCardMountedIF {
public:
virtual ~SdCardMountedIF(){};
virtual std::string getCurrentMountPrefix(sd::SdCard prefSdCardPtr = sd::SdCard::NONE) = 0;
virtual bool isSdCardMounted(sd::SdCard sdCard) = 0;
virtual ReturnValue_t getPreferredSdCard(sd::SdCard& sdCard) const = 0;
private:
};
#endif /* MISSION_MEMORY_SDCARDMOUNTERIF_H_ */

2
tmtc

Submodule tmtc updated: 7e24589184...1238df0383