meier/startracker #118
@ -126,6 +126,13 @@ void initmission::initTasks() {
|
|||||||
if(result != HasReturnvaluesIF::RETURN_OK) {
|
if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
initmission::printAddObjectError("FILE_SYSTEM_TASK", objects::FILE_SYSTEM_HANDLER);
|
initmission::printAddObjectError("FILE_SYSTEM_TASK", objects::FILE_SYSTEM_HANDLER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PeriodicTaskIF* strImgLoaderTask = factory->createPeriodicTask(
|
||||||
|
"FILE_SYSTEM_TASK", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
|
||||||
|
result = strImgLoaderTask->addComponent(objects::STR_IMG_LOADER);
|
||||||
|
if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
initmission::printAddObjectError("FILE_SYSTEM_TASK", objects::STR_IMG_LOADER);
|
||||||
|
}
|
||||||
#endif /* BOARD_TE0720 */
|
#endif /* BOARD_TE0720 */
|
||||||
|
|
||||||
#if OBSW_TEST_CCSDS_BRIDGE == 1
|
#if OBSW_TEST_CCSDS_BRIDGE == 1
|
||||||
@ -187,6 +194,7 @@ void initmission::initTasks() {
|
|||||||
|
|
||||||
#if BOARD_TE0720 == 0
|
#if BOARD_TE0720 == 0
|
||||||
fsTask->startTask();
|
fsTask->startTask();
|
||||||
|
strImgLoaderTask->startTask();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
sif::info << "Tasks started.." << std::endl;
|
sif::info << "Tasks started.." << std::endl;
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include "ObjectFactory.h"
|
#include "ObjectFactory.h"
|
||||||
|
|
||||||
|
#include "../devices/devicedefinitions/StarTrackerDefinitions.h"
|
||||||
#include "OBSWConfig.h"
|
#include "OBSWConfig.h"
|
||||||
#include "devConf.h"
|
#include "devConf.h"
|
||||||
#include "ccsdsConfig.h"
|
#include "ccsdsConfig.h"
|
||||||
@ -16,7 +18,8 @@
|
|||||||
#include "bsp_q7s/devices/PlocSupervisorHandler.h"
|
#include "bsp_q7s/devices/PlocSupervisorHandler.h"
|
||||||
#include "bsp_q7s/devices/PlocUpdater.h"
|
#include "bsp_q7s/devices/PlocUpdater.h"
|
||||||
#include "bsp_q7s/devices/PlocMemoryDumper.h"
|
#include "bsp_q7s/devices/PlocMemoryDumper.h"
|
||||||
#include "bsp_q7s/devices/StarTrackerImageHelper.h"
|
#include "bsp_q7s/devices/StrImageLoader.h"
|
||||||
|
#include "bsp_q7s/devices/StarTrackerHandler.h"
|
||||||
#include "bsp_q7s/callbacks/rwSpiCallback.h"
|
#include "bsp_q7s/callbacks/rwSpiCallback.h"
|
||||||
#include "bsp_q7s/callbacks/gnssCallback.h"
|
#include "bsp_q7s/callbacks/gnssCallback.h"
|
||||||
|
|
||||||
@ -40,14 +43,12 @@
|
|||||||
#include "mission/devices/PlocMPSoCHandler.h"
|
#include "mission/devices/PlocMPSoCHandler.h"
|
||||||
#include "mission/devices/RadiationSensorHandler.h"
|
#include "mission/devices/RadiationSensorHandler.h"
|
||||||
#include "mission/devices/RwHandler.h"
|
#include "mission/devices/RwHandler.h"
|
||||||
#include "mission/devices/StarTrackerHandler.h"
|
|
||||||
#include "mission/devices/devicedefinitions/GomspaceDefinitions.h"
|
#include "mission/devices/devicedefinitions/GomspaceDefinitions.h"
|
||||||
#include "mission/devices/devicedefinitions/SyrlinksDefinitions.h"
|
#include "mission/devices/devicedefinitions/SyrlinksDefinitions.h"
|
||||||
#include "mission/devices/devicedefinitions/PlocMPSoCDefinitions.h"
|
#include "mission/devices/devicedefinitions/PlocMPSoCDefinitions.h"
|
||||||
#include "mission/devices/devicedefinitions/RadSensorDefinitions.h"
|
#include "mission/devices/devicedefinitions/RadSensorDefinitions.h"
|
||||||
#include "mission/devices/devicedefinitions/Max31865Definitions.h"
|
#include "mission/devices/devicedefinitions/Max31865Definitions.h"
|
||||||
#include "mission/devices/devicedefinitions/RwDefinitions.h"
|
#include "mission/devices/devicedefinitions/RwDefinitions.h"
|
||||||
#include "mission/devices/devicedefinitions/StarTrackerDefinitions.h"
|
|
||||||
#include "mission/devices/GPSHyperionHandler.h"
|
#include "mission/devices/GPSHyperionHandler.h"
|
||||||
#include "mission/tmtc/CCSDSHandler.h"
|
#include "mission/tmtc/CCSDSHandler.h"
|
||||||
#include "mission/tmtc/VirtualChannel.h"
|
#include "mission/tmtc/VirtualChannel.h"
|
||||||
@ -168,13 +169,15 @@ void ObjectFactory::produce(void* args) {
|
|||||||
new FileSystemHandler(objects::FILE_SYSTEM_HANDLER);
|
new FileSystemHandler(objects::FILE_SYSTEM_HANDLER);
|
||||||
|
|
||||||
#if OBSW_ADD_STAR_TRACKER == 1
|
#if OBSW_ADD_STAR_TRACKER == 1
|
||||||
UartCookie* starTrackerCookie = new UartCookie(objects::START_TRACKER,
|
UartCookie* starTrackerCookie = new UartCookie(objects::STAR_TRACKER,
|
||||||
q7s::UART_STAR_TRACKER_DEV, UartModes::NON_CANONICAL, uart::STAR_TRACKER_BAUD,
|
q7s::UART_STAR_TRACKER_DEV, UartModes::NON_CANONICAL, uart::STAR_TRACKER_BAUD,
|
||||||
StarTracker::MAX_FRAME_SIZE* 2 + 2);
|
StarTracker::MAX_FRAME_SIZE* 2 + 2);
|
||||||
starTrackerCookie->setNoFixedSizeReply();
|
starTrackerCookie->setNoFixedSizeReply();
|
||||||
StarTrackerHandler* starTrackerHandler = new StarTrackerHandler(objects::START_TRACKER, objects::UART_COM_IF, starTrackerCookie);
|
StrImageLoader* strImageLoader = new StrImageLoader(objects::STR_IMG_LOADER);
|
||||||
|
StarTrackerHandler* starTrackerHandler = new StarTrackerHandler(objects::STAR_TRACKER,
|
||||||
|
objects::UART_COM_IF, starTrackerCookie, strImageLoader);
|
||||||
starTrackerHandler->setStartUpImmediately();
|
starTrackerHandler->setStartUpImmediately();
|
||||||
new StarTrackerImageHelper(objects::STR_IMG_HELPER);
|
|
||||||
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
|
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
|
||||||
|
|
||||||
#endif /* TE7020 == 0 */
|
#endif /* TE7020 == 0 */
|
||||||
|
@ -21,7 +21,7 @@ ReturnValue_t ArcsecDatalinkLayer::decodeFrame(const uint8_t* rawData, size_t ra
|
|||||||
for (bytePos = 0; bytePos < rawDataSize; bytePos++) {
|
for (bytePos = 0; bytePos < rawDataSize; bytePos++) {
|
||||||
enum arc_dec_result decResult = arc_transport_decode_body(*(rawData + bytePos), &slipInfo,
|
enum arc_dec_result decResult = arc_transport_decode_body(*(rawData + bytePos), &slipInfo,
|
||||||
decodedFrame, &decFrameSize);
|
decodedFrame, &decFrameSize);
|
||||||
*bytesLeft = rawDataSize - bytePos;
|
*bytesLeft = rawDataSize - bytePos - 1;
|
||||||
switch (decResult) {
|
switch (decResult) {
|
||||||
case ARC_DEC_INPROGRESS: {
|
case ARC_DEC_INPROGRESS: {
|
||||||
if (bytePos == rawDataSize - 1) {
|
if (bytePos == rawDataSize - 1) {
|
||||||
@ -37,13 +37,15 @@ ReturnValue_t ArcsecDatalinkLayer::decodeFrame(const uint8_t* rawData, size_t ra
|
|||||||
case ARC_DEC_SYNC: {
|
case ARC_DEC_SYNC: {
|
||||||
// Reset length of SLIP struct for next frame
|
// Reset length of SLIP struct for next frame
|
||||||
slipInfo.length = 0;
|
slipInfo.length = 0;
|
||||||
RETURN_OK;
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
sif::debug << "ArcsecDatalinkLayer::decodeFrame: Unknown result code" << std::endl;
|
sif::debug << "ArcsecDatalinkLayer::decodeFrame: Unknown result code" << std::endl;
|
||||||
break;
|
break;
|
||||||
|
return RETURN_FAILED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return RETURN_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t ArcsecDatalinkLayer::getReplyFrameType() {
|
uint8_t ArcsecDatalinkLayer::getReplyFrameType() {
|
||||||
@ -55,7 +57,7 @@ const uint8_t* ArcsecDatalinkLayer::getReply() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ArcsecDatalinkLayer::encodeFrame(const uint8_t* data, uint32_t length) {
|
void ArcsecDatalinkLayer::encodeFrame(const uint8_t* data, uint32_t length) {
|
||||||
arc_transport_encode_body(commandBuffer, length, encBuffer, &encFrameSize);
|
arc_transport_encode_body(data, length, encBuffer, &encFrameSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t* ArcsecDatalinkLayer::getEncodedFrame() {
|
uint8_t* ArcsecDatalinkLayer::getEncodedFrame() {
|
||||||
@ -66,3 +68,11 @@ uint32_t ArcsecDatalinkLayer::getEncodedLength() {
|
|||||||
return encFrameSize;
|
return encFrameSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t ArcsecDatalinkLayer::getStatusField() {
|
||||||
|
return *(decodedFrame + STATUS_OFFSET);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ArcsecDatalinkLayer::getId() {
|
||||||
|
return *(decodedFrame + ID_OFFSET);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#ifndef BSP_Q7S_DEVICES_ARCSECDATALINKLAYER_H_
|
#ifndef BSP_Q7S_DEVICES_ARCSECDATALINKLAYER_H_
|
||||||
#define BSP_Q7S_DEVICES_ARCSECDATALINKLAYER_H_
|
#define BSP_Q7S_DEVICES_ARCSECDATALINKLAYER_H_
|
||||||
|
|
||||||
#include "mission/devices/devicedefinitions/StarTrackerDefinitions.h"
|
#include "devicedefinitions/StarTrackerDefinitions.h"
|
||||||
#include "fsfw/returnvalues/HasReturnValuesIF.h"
|
#include "fsfw/returnvalues/HasReturnValuesIF.h"
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -23,6 +23,8 @@ public:
|
|||||||
//! [EXPORT] : [COMMENT] Detected CRC failure in received frame
|
//! [EXPORT] : [COMMENT] Detected CRC failure in received frame
|
||||||
static const ReturnValue_t CRC_FAILURE = MAKE_RETURN_CODE(0xA2);
|
static const ReturnValue_t CRC_FAILURE = MAKE_RETURN_CODE(0xA2);
|
||||||
|
|
||||||
|
static const uint8_t STATUS_OK = 0;
|
||||||
|
|
||||||
ArcsecDatalinkLayer();
|
ArcsecDatalinkLayer();
|
||||||
virtual ~ArcsecDatalinkLayer();
|
virtual ~ArcsecDatalinkLayer();
|
||||||
|
|
||||||
@ -63,13 +65,27 @@ public:
|
|||||||
*/
|
*/
|
||||||
uint8_t* getEncodedFrame();
|
uint8_t* getEncodedFrame();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Returns status of reply
|
||||||
|
*/
|
||||||
|
uint8_t getStatusField();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Returns ID of reply
|
||||||
|
*/
|
||||||
|
uint8_t getId();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
static const uint8_t ID_OFFSET = 1;
|
||||||
|
static const uint8_t STATUS_OFFSET = 2;
|
||||||
|
|
||||||
// Used by arcsec slip decoding function process received data
|
// Used by arcsec slip decoding function process received data
|
||||||
uint8_t rxBuffer[StarTracker::MAX_FRAME_SIZE];
|
uint8_t rxBuffer[StarTracker::MAX_FRAME_SIZE];
|
||||||
// Decoded frame will be copied to this buffer
|
// Decoded frame will be copied to this buffer
|
||||||
uint8_t decodedFrame[StarTracker::MAX_FRAME_SIZE];
|
uint8_t decodedFrame[StarTracker::MAX_FRAME_SIZE];
|
||||||
// Buffer where encoded frames will be stored
|
// Buffer where encoded frames will be stored. First byte of encoded frame represents type of
|
||||||
|
// reply
|
||||||
uint8_t encBuffer[StarTracker::MAX_FRAME_SIZE * 2 + 2];
|
uint8_t encBuffer[StarTracker::MAX_FRAME_SIZE * 2 + 2];
|
||||||
// Size of decoded frame
|
// Size of decoded frame
|
||||||
uint32_t decFrameSize = 0;
|
uint32_t decFrameSize = 0;
|
||||||
|
@ -2,5 +2,7 @@ target_sources(${TARGET_NAME} PRIVATE
|
|||||||
PlocSupervisorHandler.cpp
|
PlocSupervisorHandler.cpp
|
||||||
PlocUpdater.cpp
|
PlocUpdater.cpp
|
||||||
PlocMemoryDumper.cpp
|
PlocMemoryDumper.cpp
|
||||||
StarTrackerImageHelper.cpp
|
StrImageLoader.cpp
|
||||||
|
ArcsecDatalinkLayer.cpp
|
||||||
|
StarTrackerHandler.cpp
|
||||||
)
|
)
|
@ -1,7 +1,11 @@
|
|||||||
|
#include <fstream>
|
||||||
|
|
||||||
#include "StarTrackerHandler.h"
|
#include "StarTrackerHandler.h"
|
||||||
#include "OBSWConfig.h"
|
#include "OBSWConfig.h"
|
||||||
|
#include "devicedefinitions/StarTrackerJsonCommands.h"
|
||||||
|
|
||||||
#include <fsfw/globalfunctions/CRC.h>
|
#include <fsfw/globalfunctions/CRC.h>
|
||||||
|
#include <fsfw/ipc/QueueFactory.h>
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include <thirdparty/arcsec_star_tracker/client/generated/telemetry.h>
|
#include <thirdparty/arcsec_star_tracker/client/generated/telemetry.h>
|
||||||
@ -21,7 +25,6 @@ StarTrackerHandler::StarTrackerHandler(object_id_t objectId, object_id_t comIF,
|
|||||||
sif::error << "StarTrackerHandler: Invalid str image loader" << std::endl;
|
sif::error << "StarTrackerHandler: Invalid str image loader" << std::endl;
|
||||||
}
|
}
|
||||||
eventQueue = QueueFactory::instance()->createMessageQueue(EventMessage::EVENT_MESSAGE_SIZE * 5);
|
eventQueue = QueueFactory::instance()->createMessageQueue(EventMessage::EVENT_MESSAGE_SIZE * 5);
|
||||||
slipInit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StarTrackerHandler::~StarTrackerHandler() {
|
StarTrackerHandler::~StarTrackerHandler() {
|
||||||
@ -43,7 +46,7 @@ ReturnValue_t StarTrackerHandler::initialize() {
|
|||||||
return ObjectManagerIF::CHILD_INIT_FAILED;;
|
return ObjectManagerIF::CHILD_INIT_FAILED;;
|
||||||
}
|
}
|
||||||
result = manager->registerListener(eventQueue->getId());
|
result = manager->registerListener(eventQueue->getId());
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != RETURN_OK) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
result = manager->subscribeToAllEventsFrom(eventQueue->getId(), objects::STR_IMG_LOADER);
|
result = manager->subscribeToAllEventsFrom(eventQueue->getId(), objects::STR_IMG_LOADER);
|
||||||
@ -57,18 +60,28 @@ ReturnValue_t StarTrackerHandler::initialize() {
|
|||||||
|
|
||||||
strImageLoader->setComIF(communicationInterface);
|
strImageLoader->setComIF(communicationInterface);
|
||||||
strImageLoader->setComCookie(comCookie);
|
strImageLoader->setComCookie(comCookie);
|
||||||
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
||||||
const uint8_t* data, size_t size) {
|
const uint8_t* data, size_t size) {
|
||||||
|
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
|
||||||
if (imageLoaderExecuting == true) {
|
if (imageLoaderExecuting == true) {
|
||||||
return IMAGE_LOADER_EXECUTING;
|
return IMAGE_LOADER_EXECUTING;
|
||||||
}
|
}
|
||||||
// Intercept image loader commands which do not follow the common DHB communication flow
|
// Intercept image loader commands which do not follow the common DHB communication flow
|
||||||
switch(actionId) {
|
switch(actionId) {
|
||||||
case(StarTracker::UPLOAD_IMAGE): {
|
case(StarTracker::UPLOAD_IMAGE): {
|
||||||
strImageLoader->startImageUpload();
|
if (size > MAX_PATH_SIZE) {
|
||||||
|
return FILE_PATH_TOO_LONG;
|
||||||
|
}
|
||||||
|
result = strImageLoader->startImageUpload(
|
||||||
|
std::string(reinterpret_cast<const char*>(data), size));
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
imageLoaderExecuting = true;
|
imageLoaderExecuting = true;
|
||||||
return EXECUTION_FINISHED;
|
return EXECUTION_FINISHED;
|
||||||
}
|
}
|
||||||
@ -80,7 +93,7 @@ ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueu
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return DeviceHandlerBase::executeAction();
|
return DeviceHandlerBase::executeAction(actionId, commandedBy, data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void StarTrackerHandler::performOperationHook() {
|
void StarTrackerHandler::performOperationHook() {
|
||||||
@ -180,6 +193,14 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
|
|||||||
prepareTemperatureRequest();
|
prepareTemperatureRequest();
|
||||||
return RETURN_OK;
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
|
case (StarTracker::LIMITS): {
|
||||||
|
result = prepareLimitsCommand(commandData, commandDataLen);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
case (StarTracker::TRACKING): {
|
||||||
|
result = prepareTrackingCommand(commandData, commandDataLen);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return DeviceHandlerIF::COMMAND_NOT_IMPLEMENTED;
|
return DeviceHandlerIF::COMMAND_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
@ -210,20 +231,20 @@ void StarTrackerHandler::fillCommandAndReplyMap() {
|
|||||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||||
this->insertInCommandAndReplyMap(StarTracker::REQ_TEMPERATURE, 3, &temperatureSet,
|
this->insertInCommandAndReplyMap(StarTracker::REQ_TEMPERATURE, 3, &temperatureSet,
|
||||||
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||||
|
this->insertInCommandAndReplyMap(StarTracker::LIMITS, 3, nullptr,
|
||||||
|
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t StarTrackerHandler::scanForReply(const uint8_t *start, size_t remainingSize,
|
ReturnValue_t StarTrackerHandler::scanForReply(const uint8_t *start, size_t remainingSize,
|
||||||
DeviceCommandId_t *foundId, size_t *foundLen) {
|
DeviceCommandId_t *foundId, size_t *foundLen) {
|
||||||
|
|
||||||
ReturnValue_t result = RETURN_OK;
|
ReturnValue_t result = RETURN_OK;
|
||||||
uint32_t decodedLength = 0;
|
|
||||||
size_t bytePos = 0;
|
|
||||||
size_t bytesLeft = 0;
|
size_t bytesLeft = 0;
|
||||||
|
|
||||||
result = dataLinkLayer.decodeFrame(start, remainingSize, &bytesLeft);
|
result = dataLinkLayer.decodeFrame(start, remainingSize, &bytesLeft);
|
||||||
remainingSize = *bytesLeft;
|
|
||||||
switch(result) {
|
switch(result) {
|
||||||
case ArcsecDatalinkLayer::DEC_IN_PROGRESS: {
|
case ArcsecDatalinkLayer::DEC_IN_PROGRESS: {
|
||||||
|
remainingSize = bytesLeft;
|
||||||
// Need a second doSendRead pass to reaa in whole packet
|
// Need a second doSendRead pass to reaa in whole packet
|
||||||
return IGNORE_REPLY_DATA;
|
return IGNORE_REPLY_DATA;
|
||||||
}
|
}
|
||||||
@ -231,23 +252,24 @@ ReturnValue_t StarTrackerHandler::scanForReply(const uint8_t *start, size_t rema
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
remainingSize = bytesLeft;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (dataLinkLayer.getReplyFrameType()) {
|
switch (dataLinkLayer.getReplyFrameType()) {
|
||||||
case TMTC_ACTIONREPLY: {
|
case TMTC_ACTIONREPLY: {
|
||||||
*foundLen = remainingsize - bytesLeft;
|
*foundLen = remainingSize - bytesLeft;
|
||||||
result = scanForActionReply(foundId);
|
result = scanForActionReply(foundId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TMTC_SETPARAMREPLY: {
|
case TMTC_SETPARAMREPLY: {
|
||||||
*foundLen = remainingsize - bytesLeft;
|
*foundLen = remainingSize - bytesLeft;
|
||||||
result = scanForSetParameterReply(foundId);
|
result = scanForSetParameterReply(foundId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TMTC_TELEMETRYREPLYA:
|
case TMTC_TELEMETRYREPLYA:
|
||||||
case TMTC_TELEMETRYREPLY: {
|
case TMTC_TELEMETRYREPLY: {
|
||||||
*foundLen = remainingsize - bytesLeft;
|
*foundLen = remainingSize - bytesLeft;
|
||||||
result = scanForTmReply(foundId);
|
result = scanForTmReply(foundId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -257,6 +279,8 @@ ReturnValue_t StarTrackerHandler::scanForReply(const uint8_t *start, size_t rema
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
remainingSize = bytesLeft;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -301,6 +325,10 @@ ReturnValue_t StarTrackerHandler::interpretDeviceReply(DeviceCommandId_t id, con
|
|||||||
handleTemperatureTm();
|
handleTemperatureTm();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case (StarTracker::LIMITS): {
|
||||||
|
result = handleSetParamReply();
|
||||||
|
break;
|
||||||
|
}
|
||||||
default: {
|
default: {
|
||||||
sif::debug << "StarTrackerHandler::interpretDeviceReply: Unknown device reply id:" << id
|
sif::debug << "StarTrackerHandler::interpretDeviceReply: Unknown device reply id:" << id
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
@ -407,6 +435,13 @@ size_t StarTrackerHandler::getNextReplyLength(DeviceCommandId_t commandId){
|
|||||||
return StarTracker::MAX_FRAME_SIZE;
|
return StarTracker::MAX_FRAME_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReturnValue_t StarTrackerHandler::doSendReadHook() {
|
||||||
|
if(imageLoaderExecuting) {
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
ReturnValue_t StarTrackerHandler::scanForActionReply(DeviceCommandId_t *foundId) {
|
ReturnValue_t StarTrackerHandler::scanForActionReply(DeviceCommandId_t *foundId) {
|
||||||
const uint8_t* reply = dataLinkLayer.getReply();
|
const uint8_t* reply = dataLinkLayer.getReply();
|
||||||
switch (*reply) {
|
switch (*reply) {
|
||||||
@ -423,7 +458,7 @@ ReturnValue_t StarTrackerHandler::scanForActionReply(DeviceCommandId_t *foundId)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
sif::debug << "StarTrackerHandler::scanForSetParameterReply: Unknown parameter reply id"
|
sif::warning << "StarTrackerHandler::scanForSetParameterReply: Unknown parameter reply id"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
return RETURN_FAILED;
|
return RETURN_FAILED;
|
||||||
}
|
}
|
||||||
@ -437,6 +472,10 @@ ReturnValue_t StarTrackerHandler::scanForSetParameterReply(DeviceCommandId_t *fo
|
|||||||
*foundId = StarTracker::SUBSCRIBE_TO_TM;
|
*foundId = StarTracker::SUBSCRIBE_TO_TM;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case (StarTracker::ID::LIMITS): {
|
||||||
|
*foundId = StarTracker::LIMITS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
sif::debug << "StarTrackerHandler::scanForSetParameterReply: Unknown parameter reply id"
|
sif::debug << "StarTrackerHandler::scanForSetParameterReply: Unknown parameter reply id"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
@ -519,10 +558,9 @@ void StarTrackerHandler::preparePingRequest() {
|
|||||||
uint32_t length = 0;
|
uint32_t length = 0;
|
||||||
struct PingActionRequest pingRequest = {PING_ID};
|
struct PingActionRequest pingRequest = {PING_ID};
|
||||||
arc_pack_ping_action_req(&pingRequest, commandBuffer, &length);
|
arc_pack_ping_action_req(&pingRequest, commandBuffer, &length);
|
||||||
uint32_t encLength = 0;
|
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||||
arc_transport_encode_body(commandBuffer, length, encBuffer, &encLength);
|
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||||
rawPacket = encBuffer;
|
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||||
rawPacketLen = encLength;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void StarTrackerHandler::prepareVersionRequest() {
|
void StarTrackerHandler::prepareVersionRequest() {
|
||||||
@ -587,10 +625,9 @@ void StarTrackerHandler::prepareSubscriptionCommand(const uint8_t* tmId) {
|
|||||||
void StarTrackerHandler::prepareSolutionRequest() {
|
void StarTrackerHandler::prepareSolutionRequest() {
|
||||||
uint32_t length = 0;
|
uint32_t length = 0;
|
||||||
arc_tm_pack_solution_req(commandBuffer, &length);
|
arc_tm_pack_solution_req(commandBuffer, &length);
|
||||||
uint32_t encLength = 0;
|
dataLinkLayer.encodeFrame(commandBuffer, length);
|
||||||
arc_transport_encode_body(commandBuffer, length, encBuffer, &encLength);
|
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||||
rawPacket = encBuffer;
|
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||||
rawPacketLen = encLength;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void StarTrackerHandler::prepareTemperatureRequest() {
|
void StarTrackerHandler::prepareTemperatureRequest() {
|
||||||
@ -601,6 +638,48 @@ void StarTrackerHandler::prepareTemperatureRequest() {
|
|||||||
rawPacketLen = dataLinkLayer.getEncodedLength();
|
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReturnValue_t StarTrackerHandler::prepareLimitsCommand(const uint8_t* commandData,
|
||||||
|
size_t commandDataLen) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
if (commandDataLen > MAX_PATH_SIZE) {
|
||||||
|
return FILE_PATH_TOO_LONG;
|
||||||
|
}
|
||||||
|
std::string fullName(reinterpret_cast<const char*>(commandData), commandDataLen);
|
||||||
|
|
||||||
|
Limits limits;
|
||||||
|
result = limits.create(fullName, commandBuffer);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "StarTrackerHandler::prepareLimitsCommand: Failed to create limits command"
|
||||||
|
<< std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
dataLinkLayer.encodeFrame(commandBuffer, Limits::COMMAND_SIZE);
|
||||||
|
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||||
|
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t StarTrackerHandler::prepareTrackingCommand(const uint8_t* commandData,
|
||||||
|
size_t commandDataLen) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
if (commandDataLen > MAX_PATH_SIZE) {
|
||||||
|
return FILE_PATH_TOO_LONG;
|
||||||
|
}
|
||||||
|
std::string fullName(reinterpret_cast<const char*>(commandData), commandDataLen);
|
||||||
|
|
||||||
|
Tracking tracking;
|
||||||
|
result = tracking.create(fullName, commandBuffer);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "StarTrackerHandler::prepareTrackingCommand: Failed to create tracking "
|
||||||
|
" command" << std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
dataLinkLayer.encodeFrame(commandBuffer, Tracking::COMMAND_SIZE);
|
||||||
|
rawPacket = dataLinkLayer.getEncodedFrame();
|
||||||
|
rawPacketLen = dataLinkLayer.getEncodedLength();
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
ReturnValue_t StarTrackerHandler::handleSetParamReply() {
|
ReturnValue_t StarTrackerHandler::handleSetParamReply() {
|
||||||
const uint8_t* reply = dataLinkLayer.getReply();
|
const uint8_t* reply = dataLinkLayer.getReply();
|
||||||
uint8_t status = *(reply + STATUS_OFFSET);
|
uint8_t status = *(reply + STATUS_OFFSET);
|
||||||
@ -963,7 +1042,7 @@ uint32_t StarTrackerHandler::deserializeUint32(const uint8_t* buffer) {
|
|||||||
return word;
|
return word;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t StarTrackerHandler::deserializeUint64(uint8_t* buffer) {
|
uint64_t StarTrackerHandler::deserializeUint64(const uint8_t* buffer) {
|
||||||
uint64_t word = 0;
|
uint64_t word = 0;
|
||||||
word = static_cast<uint64_t>(*(buffer + 7)) << 56
|
word = static_cast<uint64_t>(*(buffer + 7)) << 56
|
||||||
| static_cast<uint64_t>(*(buffer + 6)) << 48
|
| static_cast<uint64_t>(*(buffer + 6)) << 48
|
@ -3,12 +3,11 @@
|
|||||||
|
|
||||||
#include <fsfw/devicehandlers/DeviceHandlerBase.h>
|
#include <fsfw/devicehandlers/DeviceHandlerBase.h>
|
||||||
#include <fsfw/src/fsfw/serialize/SerializeAdapter.h>
|
#include <fsfw/src/fsfw/serialize/SerializeAdapter.h>
|
||||||
#include <mission/devices/devicedefinitions/StarTrackerDefinitions.h>
|
|
||||||
#include <thirdparty/arcsec_star_tracker/common/SLIP.h>
|
#include <thirdparty/arcsec_star_tracker/common/SLIP.h>
|
||||||
#include <fsfw/datapool/PoolReadGuard.h>
|
#include <fsfw/datapool/PoolReadGuard.h>
|
||||||
#include <bsp_q7s/devices/StrImageLoader.h>
|
#include <bsp_q7s/devices/StrImageLoader.h>
|
||||||
#include <bsp_q7s/devices/ArcsecDataLinkLayer.h>
|
#include <bsp_q7s/devices/ArcsecDataLinkLayer.h>
|
||||||
#include <fsfw/events/HasEventsIF.h>
|
#include <bsp_q7s/devices/devicedefinitions/StarTrackerDefinitions.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This is the device handler for the star tracker from arcsec.
|
* @brief This is the device handler for the star tracker from arcsec.
|
||||||
@ -68,6 +67,8 @@ protected:
|
|||||||
*/
|
*/
|
||||||
virtual size_t getNextReplyLength(DeviceCommandId_t deviceCommand) override;
|
virtual size_t getNextReplyLength(DeviceCommandId_t deviceCommand) override;
|
||||||
|
|
||||||
|
virtual ReturnValue_t doSendReadHook() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
static const uint8_t INTERFACE_ID = CLASS_ID::STR_HANDLER;
|
static const uint8_t INTERFACE_ID = CLASS_ID::STR_HANDLER;
|
||||||
@ -102,7 +103,11 @@ private:
|
|||||||
//! [EXPORT] : [COMMENT] Position value in upload image reply not matching sent position
|
//! [EXPORT] : [COMMENT] Position value in upload image reply not matching sent position
|
||||||
static const ReturnValue_t UPLOAD_IMAGE_FAILED = MAKE_RETURN_CODE(0xA9);
|
static const ReturnValue_t UPLOAD_IMAGE_FAILED = MAKE_RETURN_CODE(0xA9);
|
||||||
//! [EXPORT] : [COMMENT] Received upload image command with invalid length
|
//! [EXPORT] : [COMMENT] Received upload image command with invalid length
|
||||||
static const ReturnValue_t INVALID_UPLOAD_COMMAND = MAKE_RETURN_CODE(0xA9);
|
static const ReturnValue_t INVALID_UPLOAD_COMMAND = MAKE_RETURN_CODE(0xAA);
|
||||||
|
//! [EXPORT] : [COMMENT] Received invalid path string. Exceeds allowed length
|
||||||
|
static const ReturnValue_t FILE_PATH_TOO_LONG = MAKE_RETURN_CODE(0xAB);
|
||||||
|
|
||||||
|
static const size_t MAX_PATH_SIZE = 50;
|
||||||
|
|
||||||
// position (uint32) + 1024 image data
|
// position (uint32) + 1024 image data
|
||||||
static const size_t UPLOAD_COMMAND_LEN = 1028;
|
static const size_t UPLOAD_COMMAND_LEN = 1028;
|
||||||
@ -123,9 +128,6 @@ private:
|
|||||||
static const MutexIF::TimeoutType TIMEOUT_TYPE= MutexIF::TimeoutType::WAITING;
|
static const MutexIF::TimeoutType TIMEOUT_TYPE= MutexIF::TimeoutType::WAITING;
|
||||||
static const uint32_t MUTEX_TIMEOUT = 20;
|
static const uint32_t MUTEX_TIMEOUT = 20;
|
||||||
|
|
||||||
// Pointer to object responsible for uploading and downloading images to/from the star tracker
|
|
||||||
StrImageLoader* strImageLoader = nullptr;
|
|
||||||
|
|
||||||
MessageQueueIF* eventQueue = nullptr;
|
MessageQueueIF* eventQueue = nullptr;
|
||||||
|
|
||||||
ArcsecDatalinkLayer dataLinkLayer;
|
ArcsecDatalinkLayer dataLinkLayer;
|
||||||
@ -137,6 +139,9 @@ private:
|
|||||||
StarTracker::TimeSet timeSet;
|
StarTracker::TimeSet timeSet;
|
||||||
StarTracker::SolutionSet solutionSet;
|
StarTracker::SolutionSet solutionSet;
|
||||||
|
|
||||||
|
// Pointer to object responsible for uploading and downloading images to/from the star tracker
|
||||||
|
StrImageLoader* strImageLoader = nullptr;
|
||||||
|
|
||||||
uint8_t commandBuffer[StarTracker::MAX_FRAME_SIZE];
|
uint8_t commandBuffer[StarTracker::MAX_FRAME_SIZE];
|
||||||
|
|
||||||
enum class InternalState {
|
enum class InternalState {
|
||||||
@ -166,6 +171,11 @@ private:
|
|||||||
*/
|
*/
|
||||||
void prepareTimeRequest();
|
void prepareTimeRequest();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Handles all received event messages
|
||||||
|
*/
|
||||||
|
void handleEvent(EventMessage* eventMessage);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Fills command buffer with data to boot image (works only when star tracker is
|
* @brief Fills command buffer with data to boot image (works only when star tracker is
|
||||||
* in bootloader mode).
|
* in bootloader mode).
|
||||||
@ -210,6 +220,12 @@ private:
|
|||||||
*/
|
*/
|
||||||
void prepareTemperatureRequest();
|
void prepareTemperatureRequest();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Reads limit parameters from json file specified with commandData and prepares
|
||||||
|
* the command to apply the limits to the star tracker.
|
||||||
|
*/
|
||||||
|
ReturnValue_t prepareLimitsCommand(const uint8_t* commandData, size_t commandDataLen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Default function to handle action replies
|
* @brief Default function to handle action replies
|
||||||
*/
|
*/
|
||||||
@ -277,7 +293,7 @@ private:
|
|||||||
*
|
*
|
||||||
* @note Deserialization will be performed in little endian byte order
|
* @note Deserialization will be performed in little endian byte order
|
||||||
*/
|
*/
|
||||||
uint64_t deserializeUint64(uint8_t* buffer);
|
uint64_t deserializeUint64(const uint8_t* buffer);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* MISSION_DEVICES_STARTRACKERHANDLER_H_ */
|
#endif /* MISSION_DEVICES_STARTRACKERHANDLER_H_ */
|
@ -1,311 +0,0 @@
|
|||||||
#include "fsfw/ipc/QueueFactory.h"
|
|
||||||
#include "StarTrackerImageHelper.h"
|
|
||||||
|
|
||||||
#include <fstream>
|
|
||||||
#include <filesystem>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
StarTrackerImageHelper::StarTrackerImageHelper(object_id_t objectId) :
|
|
||||||
SystemObject(objectId), commandActionHelper(this), actionHelper(this, nullptr) {
|
|
||||||
commandQueue = QueueFactory::instance()->createMessageQueue(QUEUE_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
StarTrackerImageHelper::~StarTrackerImageHelper() {
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t StarTrackerImageHelper::initialize() {
|
|
||||||
sdcMan = SdCardManager::instance();
|
|
||||||
if (sdcMan == nullptr) {
|
|
||||||
sif::warning << "StarTrackerImageHelper::initialize: Invaldi SD Card Manager" << std::endl;
|
|
||||||
}
|
|
||||||
ReturnValue_t result = SystemObject::initialize();
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
result = commandActionHelper.initialize();
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
result = actionHelper.initialize(commandQueue);
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t StarTrackerImageHelper::performOperation(uint8_t operationCode) {
|
|
||||||
readCommandQueue();
|
|
||||||
doStateMachine();
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t StarTrackerImageHelper::executeAction(ActionId_t actionId,
|
|
||||||
MessageQueueId_t commandedBy, const uint8_t* data, size_t size) {
|
|
||||||
ReturnValue_t result = EXECUTION_FINISHED;
|
|
||||||
|
|
||||||
if (state != State::IDLE) {
|
|
||||||
return IS_BUSY;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (size > MAX_STR_IMAGE_PATH) {
|
|
||||||
return NAME_TOO_LONG;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (actionId) {
|
|
||||||
case UPLOAD_IMAGE:
|
|
||||||
result = prepareUploadCommand(data, size);
|
|
||||||
if (result == RETURN_OK) {
|
|
||||||
result = EXECUTION_FINISHED;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DOWNLOAD_IMAGE:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return INVALID_ACTION_ID;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
MessageQueueId_t StarTrackerImageHelper::getCommandQueue() const {
|
|
||||||
return commandQueue->getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
MessageQueueIF* StarTrackerImageHelper::getCommandQueuePtr() {
|
|
||||||
return commandQueue;
|
|
||||||
}
|
|
||||||
|
|
||||||
void StarTrackerImageHelper::readCommandQueue() {
|
|
||||||
CommandMessage message;
|
|
||||||
ReturnValue_t result;
|
|
||||||
|
|
||||||
for (result = commandQueue->receiveMessage(&message); result == HasReturnvaluesIF::RETURN_OK;
|
|
||||||
result = commandQueue->receiveMessage(&message)) {
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
result = actionHelper.handleActionMessage(&message);
|
|
||||||
if (result == HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
result = commandActionHelper.handleReply(&message);
|
|
||||||
if (result == HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
sif::debug << "StarTrackerImageHelper::readCommandQueue: Received inalid message"
|
|
||||||
<< std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void StarTrackerImageHelper::doStateMachine() {
|
|
||||||
switch (state) {
|
|
||||||
case State::IDLE:
|
|
||||||
break;
|
|
||||||
case State::SEND_NEXT_UPLOAD_CMD:
|
|
||||||
commandImageUpload();
|
|
||||||
break;
|
|
||||||
case State::COMMAND_EXECUTING:
|
|
||||||
case State::UPLOAD_LAST:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sif::debug << "StarTrackerImageHelper::doStateMachine: Invalid state" << std::endl;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t StarTrackerImageHelper::getImageLocation(const uint8_t* data, size_t size) {
|
|
||||||
|
|
||||||
// Check if file is stored on SD card and if associated SD card is mounted
|
|
||||||
if (std::string(reinterpret_cast<const char*>(data), SD_PREFIX_LENGTH) == std::string(SdCardManager::SD_0_MOUNT_POINT)) {
|
|
||||||
if (!isSdCardMounted(sd::SLOT_0)) {
|
|
||||||
sif::warning << "StarTrackerImageHelper::getImageLocation: SD card 0 not mounted" << std::endl;
|
|
||||||
return SD_NOT_MOUNTED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (std::string(reinterpret_cast<const char*>(data), SD_PREFIX_LENGTH) == std::string(SdCardManager::SD_1_MOUNT_POINT)) {
|
|
||||||
if (!isSdCardMounted(sd::SLOT_0)) {
|
|
||||||
sif::warning << "StarTrackerImageHelper::getImageLocation: SD card 1 not mounted" << std::endl;
|
|
||||||
return SD_NOT_MOUNTED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Specified path in RAM filesystem
|
|
||||||
}
|
|
||||||
|
|
||||||
imageFile = std::string(reinterpret_cast<const char*>(data), size);
|
|
||||||
|
|
||||||
// Check if file exists
|
|
||||||
if(not std::filesystem::exists(imageFile)) {
|
|
||||||
return FILE_NOT_EXISTS;
|
|
||||||
}
|
|
||||||
return RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool StarTrackerImageHelper::isSdCardMounted(sd::SdCard sdCard) {
|
|
||||||
SdCardManager::SdStatePair active;
|
|
||||||
ReturnValue_t result = sdcMan->getSdCardActiveStatus(active);
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
sif::debug << "StarTrackerImageHelper::isSdCardMounted: Failed to get SD card active state";
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (sdCard == sd::SLOT_0) {
|
|
||||||
if (active.first == sd::MOUNTED) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (sdCard == sd::SLOT_1) {
|
|
||||||
if (active.second == sd::MOUNTED) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sif::debug << "StarTrackerImageHelper::isSdCardMounted: Unknown SD card specified" << std::endl;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t StarTrackerImageHelper::prepareUploadCommand(const uint8_t* data, size_t size) {
|
|
||||||
ReturnValue_t result = RETURN_OK;
|
|
||||||
result = getImageLocation(data, size);
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
imageSize = std::filesystem::file_size(imageFile);
|
|
||||||
remainingCommands = imageSize / SIZE_IMAGE_PART ;
|
|
||||||
if (imageSize % SIZE_IMAGE_PART) {
|
|
||||||
remainingCommands++;
|
|
||||||
}
|
|
||||||
commandsSent = 0;
|
|
||||||
state = State::SEND_NEXT_UPLOAD_CMD;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
void StarTrackerImageHelper::stepSuccessfulReceived(ActionId_t actionId,
|
|
||||||
uint8_t step) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void StarTrackerImageHelper::stepFailedReceived(ActionId_t actionId, uint8_t step,
|
|
||||||
ReturnValue_t returnCode) {
|
|
||||||
switch (pendingCommand) {
|
|
||||||
case (StarTracker::UPLOAD_IMAGE):
|
|
||||||
if (retries < MAX_RETRIES) {
|
|
||||||
// Repeat sending last command
|
|
||||||
commandsSent--;
|
|
||||||
remainingCommands++;
|
|
||||||
commandImageUpload();
|
|
||||||
retries++;
|
|
||||||
state = State::COMMAND_EXECUTING;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
triggerEvent(IMAGE_UPLOAD_FAILED, returnCode, commandsSent);
|
|
||||||
retries = 0;
|
|
||||||
state = State::IDLE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sif::debug << "StarTrackerImageHelper::completionSuccessfulReceived: Invalid pending command"
|
|
||||||
<< std::endl;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void StarTrackerImageHelper::dataReceived(ActionId_t actionId, const uint8_t* data, uint32_t size) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void StarTrackerImageHelper::completionSuccessfulReceived(ActionId_t actionId) {
|
|
||||||
switch (pendingCommand) {
|
|
||||||
case (StarTracker::UPLOAD_IMAGE):
|
|
||||||
if (state == State::UPLOAD_LAST) {
|
|
||||||
triggerEvent(IMAGE_UPLOAD_FINISHED);
|
|
||||||
pendingCommand = StarTracker::NONE;
|
|
||||||
state = State::IDLE;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
state = State::SEND_NEXT_UPLOAD_CMD;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sif::debug << "StarTrackerImageHelper::completionSuccessfulReceived: Invalid pending command"
|
|
||||||
<< std::endl;
|
|
||||||
state = State::IDLE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void StarTrackerImageHelper::completionFailedReceived(ActionId_t actionId,
|
|
||||||
ReturnValue_t returnCode) {
|
|
||||||
switch(pendingCommand) {
|
|
||||||
case(StarTracker::UPLOAD_IMAGE): {
|
|
||||||
triggerEvent(IMAGE_UPLOAD_FAILED, returnCode, commandsSent);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
sif::debug << "StarTrackerImageHelper::completionFailedReceived: Invalid pending command "
|
|
||||||
<< std::endl;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
state = State::IDLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void StarTrackerImageHelper::commandImageUpload() {
|
|
||||||
ReturnValue_t result = RETURN_OK;
|
|
||||||
uint16_t dataLen = 0;
|
|
||||||
uint8_t tmpCommandBuffer[UPLOAD_COMMAND_SIZE] = {0};
|
|
||||||
uint32_t position = commandsSent;
|
|
||||||
|
|
||||||
if (not std::filesystem::exists(imageFile)) {
|
|
||||||
triggerEvent(IMAGE_FILE_NOT_EXISTS, commandsSent);
|
|
||||||
state = State::IDLE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::ifstream file(imageFile, std::ifstream::binary);
|
|
||||||
file.seekg(position, file.beg);
|
|
||||||
|
|
||||||
if (remainingCommands == 1) {
|
|
||||||
dataLen = imageSize - file.tellg();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
dataLen = SIZE_IMAGE_PART;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t size = 0;
|
|
||||||
size_t maxSize = sizeof(position);
|
|
||||||
uint8_t* commandBufferPtr = tmpCommandBuffer;
|
|
||||||
uint8_t** buffer = &commandBufferPtr;
|
|
||||||
SerializeAdapter::serialize(&position, buffer, &size, maxSize,
|
|
||||||
SerializeIF::Endianness::BIG);
|
|
||||||
file.read(reinterpret_cast<char*>(tmpCommandBuffer), dataLen);
|
|
||||||
file.close();
|
|
||||||
|
|
||||||
result = commandActionHelper.commandAction(objects::START_TRACKER,
|
|
||||||
StarTracker::UPLOAD_IMAGE, tmpCommandBuffer - size , UPLOAD_COMMAND_SIZE);
|
|
||||||
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
sif::warning << "StarTrackerImageHelper::commandImageUpload: Failed to send image "
|
|
||||||
<< "upload command" << std::endl;
|
|
||||||
triggerEvent(ACTION_COMMANDING_FAILED, result, StarTracker::UPLOAD_IMAGE);
|
|
||||||
state = State::IDLE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
remainingCommands--;
|
|
||||||
commandsSent++;
|
|
||||||
|
|
||||||
if (remainingCommands == 0) {
|
|
||||||
state = State::UPLOAD_LAST;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
state = State::COMMAND_EXECUTING;
|
|
||||||
}
|
|
||||||
pendingCommand = StarTracker::UPLOAD_IMAGE;
|
|
||||||
}
|
|
@ -1,153 +0,0 @@
|
|||||||
#ifndef MISSION_DEVICES_STARTRACKERIMAGEHELPER_H_
|
|
||||||
#define MISSION_DEVICES_STARTRACKERIMAGEHELPER_H_
|
|
||||||
|
|
||||||
#include "OBSWConfig.h"
|
|
||||||
#include "mission/devices/devicedefinitions/StarTrackerDefinitions.h"
|
|
||||||
#include "fsfw/action/CommandActionHelper.h"
|
|
||||||
#include "fsfw/action/ActionHelper.h"
|
|
||||||
#include "fsfw/action/HasActionsIF.h"
|
|
||||||
#include "fsfw/action/CommandsActionsIF.h"
|
|
||||||
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
|
||||||
#include "fsfw/tasks/ExecutableObjectIF.h"
|
|
||||||
#include "fsfw/objectmanager/SystemObject.h"
|
|
||||||
#include "bsp_q7s/memory/SdCardManager.h"
|
|
||||||
#include "linux/fsfwconfig/objects/systemObjectList.h"
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief An object of this class helps to download and upload images from/to the star tracker.
|
|
||||||
*
|
|
||||||
* @details The star tracker can only receive upload image commands with maximum 1024 bytes of data.
|
|
||||||
* Thus this class is used to raed the image from the file system and split the upload
|
|
||||||
* procedure into multiple steps.
|
|
||||||
* The same applies to downloading images from the star tracker (max. 1024 bytes in image
|
|
||||||
* download reply).
|
|
||||||
*
|
|
||||||
* @author J. Meier
|
|
||||||
*/
|
|
||||||
class StarTrackerImageHelper : public SystemObject,
|
|
||||||
public HasActionsIF,
|
|
||||||
public ExecutableObjectIF,
|
|
||||||
public HasReturnvaluesIF,
|
|
||||||
public CommandsActionsIF {
|
|
||||||
public:
|
|
||||||
|
|
||||||
static const ActionId_t UPLOAD_IMAGE = 0;
|
|
||||||
static const ActionId_t DOWNLOAD_IMAGE = 1;
|
|
||||||
|
|
||||||
StarTrackerImageHelper(object_id_t objectId);
|
|
||||||
virtual ~StarTrackerImageHelper();
|
|
||||||
|
|
||||||
ReturnValue_t performOperation(uint8_t operationCode = 0) override;
|
|
||||||
ReturnValue_t executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
|
||||||
const uint8_t* data, size_t size);
|
|
||||||
MessageQueueId_t getCommandQueue() const;
|
|
||||||
ReturnValue_t initialize() override;
|
|
||||||
MessageQueueIF* getCommandQueuePtr() override;
|
|
||||||
void stepSuccessfulReceived(ActionId_t actionId, uint8_t step) override;
|
|
||||||
void stepFailedReceived(ActionId_t actionId, uint8_t step, ReturnValue_t returnCode) override;
|
|
||||||
void dataReceived(ActionId_t actionId, const uint8_t* data, uint32_t size) override;
|
|
||||||
void completionSuccessfulReceived(ActionId_t actionId) override;
|
|
||||||
void completionFailedReceived(ActionId_t actionId, ReturnValue_t returnCode) override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
static const uint8_t INTERFACE_ID = CLASS_ID::STR_IMG_HELPER;
|
|
||||||
|
|
||||||
//! [EXPORT] : [COMMENT] Image helper is already executing a command
|
|
||||||
static const ReturnValue_t IMAGE_HELPER_BUSY = MAKE_RETURN_CODE(0xA0);
|
|
||||||
//! [EXPORT] : [COMMENT] Invalid path to image location
|
|
||||||
static const ReturnValue_t NAME_TOO_LONG = MAKE_RETURN_CODE(0xA1);
|
|
||||||
//! [EXPORT] : [COMMENT] SD card with image not mounted
|
|
||||||
static const ReturnValue_t SD_NOT_MOUNTED = MAKE_RETURN_CODE(0xA2);
|
|
||||||
//! [EXPORT] : [COMMENT] Specified image does not exist
|
|
||||||
static const ReturnValue_t FILE_NOT_EXISTS = MAKE_RETURN_CODE(0xA3);
|
|
||||||
|
|
||||||
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::STR_IMAGE_HELPER;
|
|
||||||
|
|
||||||
//! [EXPORT] : [COMMENT] Try to read image file to upload but the file does not exist.
|
|
||||||
//! P1: Refers to the upload step the reading fails
|
|
||||||
static const Event IMAGE_FILE_NOT_EXISTS = MAKE_EVENT(0, severity::LOW);
|
|
||||||
//! [EXPORT] : [COMMENT] Failed to send command to star tracker handler
|
|
||||||
//! P1: Return value of CommandActionHelper::commandAction
|
|
||||||
//! P2: Action ID of command to send
|
|
||||||
static const Event ACTION_COMMANDING_FAILED = MAKE_EVENT(1, severity::LOW);
|
|
||||||
//! [EXPORT] : [COMMENT] Star tracker handler replies with completion or step failure message to upload image command
|
|
||||||
//!P1: Return code of execution/step failure message
|
|
||||||
//!P2: Failed upload step (equal to number of commands already sent)
|
|
||||||
static const Event IMAGE_UPLOAD_FAILED = MAKE_EVENT(2, severity::LOW);
|
|
||||||
//! [EXPORT] : [COMMENT] Image upload was successful
|
|
||||||
static const Event IMAGE_UPLOAD_FINISHED = MAKE_EVENT(3, severity::LOW);
|
|
||||||
|
|
||||||
static const uint8_t MAX_RETRIES = 3;
|
|
||||||
static const uint32_t QUEUE_SIZE = config::STR_IMG_HELPER_QUEUE_SIZE;
|
|
||||||
static const size_t MAX_STR_IMAGE_PATH = 50;
|
|
||||||
static const size_t SD_PREFIX_LENGTH = 8;
|
|
||||||
// Size of one image part which can be sent per action request
|
|
||||||
static const size_t SIZE_IMAGE_PART = 1024;
|
|
||||||
// Position (uint32_t) + image data (1024 bytes)
|
|
||||||
static const size_t UPLOAD_COMMAND_SIZE = 1028;
|
|
||||||
|
|
||||||
MessageQueueIF* commandQueue = nullptr;
|
|
||||||
|
|
||||||
SdCardManager* sdcMan = nullptr;
|
|
||||||
|
|
||||||
CommandActionHelper commandActionHelper;
|
|
||||||
|
|
||||||
ActionHelper actionHelper;
|
|
||||||
|
|
||||||
enum class State: uint8_t {
|
|
||||||
IDLE,
|
|
||||||
SEND_NEXT_UPLOAD_CMD,
|
|
||||||
UPLOAD_LAST,
|
|
||||||
COMMAND_EXECUTING
|
|
||||||
};
|
|
||||||
|
|
||||||
State state = State::IDLE;
|
|
||||||
|
|
||||||
ActionId_t pendingCommand = StarTracker::NONE;
|
|
||||||
|
|
||||||
uint32_t commandsSent = 0;
|
|
||||||
uint32_t remainingCommands = 0;
|
|
||||||
// Counts retries when command was rejected by star tracker
|
|
||||||
uint8_t retries = 0;
|
|
||||||
|
|
||||||
// Path and name of active image (either upload or download image)
|
|
||||||
std::string imageFile;
|
|
||||||
// In case of upload command this variable stores the size of the image to upload
|
|
||||||
std::uintmax_t imageSize;
|
|
||||||
|
|
||||||
void readCommandQueue();
|
|
||||||
void doStateMachine();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Extracts the path and name form the received command.
|
|
||||||
*
|
|
||||||
* @param data Pointer to received command
|
|
||||||
* @param size Size of the received command
|
|
||||||
*
|
|
||||||
* @details This string defines the image to upload (must be previously written to the SD card).
|
|
||||||
* In case of the download image command, this string defines the location and name of
|
|
||||||
* the image file to create.
|
|
||||||
*/
|
|
||||||
ReturnValue_t getImageLocation(const uint8_t* data, size_t size);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Prepares properties for the upload image command and changes the state to initiate
|
|
||||||
* the execution of the upload image command.
|
|
||||||
*/
|
|
||||||
ReturnValue_t prepareUploadCommand(const uint8_t* data, size_t size);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Reads part of image from file and sends upload image command to star tracker
|
|
||||||
* handler.
|
|
||||||
*/
|
|
||||||
void commandImageUpload();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Checks whether the SD card to read from is mounted or not.
|
|
||||||
*/
|
|
||||||
bool isSdCardMounted(sd::SdCard sdCard);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* MISSION_DEVICES_STARTRACKERIMAGEHELPER_H_ */
|
|
@ -1,8 +1,9 @@
|
|||||||
#include "StrImageLoader.h"
|
#include "StrImageLoader.h"
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
|
|
||||||
StrImageLoader::StrImageLoader(object_id_t objectId) {
|
StrImageLoader::StrImageLoader(object_id_t objectId) : SystemObject(objectId){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -13,7 +14,9 @@ ReturnValue_t StrImageLoader::initialize() {
|
|||||||
sdcMan = SdCardManager::instance();
|
sdcMan = SdCardManager::instance();
|
||||||
if (sdcMan == nullptr) {
|
if (sdcMan == nullptr) {
|
||||||
sif::warning << "StrImageLoader::initialize: Invalid SD Card Manager" << std::endl;
|
sif::warning << "StrImageLoader::initialize: Invalid SD Card Manager" << std::endl;
|
||||||
|
return RETURN_FAILED;
|
||||||
}
|
}
|
||||||
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t StrImageLoader::performOperation(uint8_t operationCode) {
|
ReturnValue_t StrImageLoader::performOperation(uint8_t operationCode) {
|
||||||
@ -26,10 +29,11 @@ ReturnValue_t StrImageLoader::performOperation(uint8_t operationCode) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case InternalState::UPLOAD_IMAGE: {
|
case InternalState::UPLOAD_IMAGE: {
|
||||||
result = uploadImage();
|
result = performImageUpload();
|
||||||
if (result == RETURN_OK){
|
if (result == RETURN_OK){
|
||||||
triggerEvent(IMAGE_UPLOAD_SUCCESSFUL);
|
triggerEvent(IMAGE_UPLOAD_SUCCESSFUL);
|
||||||
}
|
}
|
||||||
|
internalState = InternalState::IDLE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case InternalState::DOWNLOAD_IMAGE:
|
case InternalState::DOWNLOAD_IMAGE:
|
||||||
@ -72,85 +76,138 @@ ReturnValue_t StrImageLoader::startImageUpload(std::string image) {
|
|||||||
internalState = InternalState::UPLOAD_IMAGE;
|
internalState = InternalState::UPLOAD_IMAGE;
|
||||||
|
|
||||||
semaphore.release();
|
semaphore.release();
|
||||||
|
|
||||||
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t StrImageLoader::uploadImage() {
|
ReturnValue_t StrImageLoader::startImageDownload() {
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t StrImageLoader::performImageUpload() {
|
||||||
ReturnValue_t result = RETURN_OK;
|
ReturnValue_t result = RETURN_OK;
|
||||||
size_t receivedDataLen = 0;
|
|
||||||
uint8_t *receivedData = nullptr;
|
|
||||||
size_t bytesLeft = 0;
|
|
||||||
uint32_t readSize = 0;
|
|
||||||
uint32_t imageSize = 0;
|
uint32_t imageSize = 0;
|
||||||
struct UploadActionRequest uploadReq;
|
struct UploadActionRequest uploadReq;
|
||||||
uploadReq.position = 0;
|
uploadReq.position = 0;
|
||||||
uploadReq.data = {0};
|
std::memset(&uploadReq.data, 0, sizeof(uploadReq.data));
|
||||||
|
|
||||||
if (not std::filesystem::exists(uploadImage)) {
|
if (not std::filesystem::exists(uploadImage)) {
|
||||||
triggerEvent(IMAGE_FILE_NOT_EXISTS, uploadReq.position);
|
triggerEvent(IMAGE_FILE_NOT_EXISTS, uploadReq.position);
|
||||||
state = State::IDLE;
|
internalState = InternalState::IDLE;
|
||||||
return RETURN_FAILED;
|
return RETURN_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ifstream file(uploadImage, std::ifstream::binary);
|
std::ifstream file(uploadImage, std::ifstream::binary);
|
||||||
|
// Set position of next character to end of file input stream
|
||||||
file.seekg(0, file.end);
|
file.seekg(0, file.end);
|
||||||
|
// tellg returns position of character in input stream
|
||||||
imageSize = file.tellg();
|
imageSize = file.tellg();
|
||||||
file.seekg(uploadReq.position * SIZE_IMAGE_PART, file.beg);
|
// Set position of next character to beginning of file input stream
|
||||||
|
file.seekg(0, file.beg);
|
||||||
while(uploadReq.position * SIZE_IMAGE_PART < imageSize) {
|
if (imageSize >= SIZE_IMAGE_PART) {
|
||||||
result =
|
file.read(reinterpret_cast<char*>(uploadReq.data), SIZE_IMAGE_PART);
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t remainder = imageSize - uploadReq.position * SIZE_IMAGE_PART;
|
|
||||||
file.read(reinterpret_cast<char*>(uploadReq.data), remainder);
|
|
||||||
uploadReq.position++;
|
|
||||||
datalinkLayer.encodeFrame(uploadReq.data, remainder);
|
|
||||||
result = communicationInterface->sendMessage(comCookie, datalinkLayer.getEncodedFrame(),
|
|
||||||
datalinkLayer.getEncodedLength());
|
|
||||||
if (result = RETURN_OK) {
|
|
||||||
sif::warning << "StrImageLoader::uploadImage: Failed to send upload packet" << std::endl;
|
|
||||||
triggerEvent(SENDING_UPLOAD_PACKET_FAILED, result, uploadReq.position);
|
|
||||||
return RETURN_FAILED;
|
|
||||||
}
|
|
||||||
result = ArcsecDatalinkLayer::DEC_IN_PROGRESS;
|
|
||||||
while(result == ArcsecDatalinkLayer::DEC_IN_PROGRESS) {
|
|
||||||
result = communicationInterface->requestReceiveMessage(comCookie, StarTracker::MAX_FRAME_SIZE* 2 + 2);
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
sif::warning << "StrImageLoader::uploadImage: Failed to request reply" << std::endl;
|
|
||||||
triggerEvent(UPLOAD_REQUESTING_MSG_FAILED, result, uploadReq.position);
|
|
||||||
return RETURN_FAILED;
|
|
||||||
}
|
|
||||||
result = communicationInterface->readReceivedMessage(comCookie, receivedData,
|
|
||||||
receivedDataLen);
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
sif::warning << "StrImageLoader::uploadImage: Failed to read received message"
|
|
||||||
<< std::endl;
|
|
||||||
triggerEvent(UPLOAD_READING_REPLY_FAILED, result, uploadReq.position);
|
|
||||||
}
|
|
||||||
result = datalinkLayer.decodeFrame(receivedData, receivedDataLen, &bytesLeft);
|
|
||||||
if (bytesLeft != 0) {
|
|
||||||
// This should never happen
|
|
||||||
triggerEvent(UPLOAD_COM_ERROR, result, uploadReq.position);
|
|
||||||
return RETURN_FAILED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (remainingCommands == 1) {
|
|
||||||
dataLen = imageSize - file.tellg();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dataLen = SIZE_IMAGE_PART;
|
file.read(reinterpret_cast<char*>(uploadReq.data), imageSize);
|
||||||
}
|
}
|
||||||
|
while(uploadReq.position * SIZE_IMAGE_PART < imageSize) {
|
||||||
size_t size = 0;
|
result = uploadSendAndRead(&uploadReq);
|
||||||
size_t maxSize = sizeof(position);
|
if (result != RETURN_OK) {
|
||||||
uint8_t* commandBufferPtr = tmpCommandBuffer;
|
return RETURN_FAILED;
|
||||||
uint8_t** buffer = &commandBufferPtr;
|
}
|
||||||
SerializeAdapter::serialize(&position, buffer, &size, maxSize,
|
result = checkUploadReply();
|
||||||
SerializeIF::Endianness::BIG);
|
if (result != RETURN_OK) {
|
||||||
file.read(reinterpret_cast<char*>(uploadReq.data), dataLen);
|
return result;
|
||||||
|
}
|
||||||
|
uploadReq.position++;
|
||||||
|
file.seekg(uploadReq.position * SIZE_IMAGE_PART, file.beg);
|
||||||
|
}
|
||||||
|
std::memset(uploadReq.data, 0, sizeof(uploadReq.data));
|
||||||
|
uint32_t remainder = imageSize - uploadReq.position * SIZE_IMAGE_PART;
|
||||||
|
file.read(reinterpret_cast<char*>(uploadReq.data), remainder);
|
||||||
file.close();
|
file.close();
|
||||||
|
uploadReq.position++;
|
||||||
arc_pack_upload_action_req()
|
result = uploadSendAndRead(&uploadReq);
|
||||||
communicationInterface->requestReceiveMessage(comCookie, )
|
if (result != RETURN_OK) {
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
result = checkUploadReply();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReturnValue_t StrImageLoader::uploadSendAndRead(struct UploadActionRequest* uploadReq) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
ReturnValue_t decResult = RETURN_OK;
|
||||||
|
size_t receivedDataLen = 0;
|
||||||
|
uint8_t *receivedData = nullptr;
|
||||||
|
size_t bytesLeft = 0;
|
||||||
|
uint32_t size = 0;
|
||||||
|
uint32_t missedReplies = 0;
|
||||||
|
arc_pack_upload_action_req(uploadReq, commandBuffer, &size);
|
||||||
|
datalinkLayer.encodeFrame(commandBuffer, size);
|
||||||
|
result = communicationInterface->sendMessage(comCookie, datalinkLayer.getEncodedFrame(),
|
||||||
|
datalinkLayer.getEncodedLength());
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "StrImageLoader::uploadImage: Failed to send upload packet" << std::endl;
|
||||||
|
triggerEvent(SENDING_UPLOAD_PACKET_FAILED, result, uploadReq->position);
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
decResult = ArcsecDatalinkLayer::DEC_IN_PROGRESS;
|
||||||
|
while (decResult == ArcsecDatalinkLayer::DEC_IN_PROGRESS) {
|
||||||
|
result = communicationInterface->requestReceiveMessage(comCookie,
|
||||||
|
StarTracker::MAX_FRAME_SIZE * 2 + 2);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "StrImageLoader::uploadImage: Failed to request reply" << std::endl;
|
||||||
|
triggerEvent(UPLOAD_REQUESTING_MSG_FAILED, result, uploadReq->position);
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
result = communicationInterface->readReceivedMessage(comCookie, &receivedData, &receivedDataLen);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "StrImageLoader::uploadImage: Failed to read received message" << std::endl;
|
||||||
|
triggerEvent(UPLOAD_READING_REPLY_FAILED, result, uploadReq->position);
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
if (receivedDataLen == 0 && missedReplies < MAX_POLLS) {
|
||||||
|
missedReplies++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if ((receivedDataLen == 0) && (missedReplies >= MAX_POLLS)) {
|
||||||
|
triggerEvent(NO_REPLY, uploadReq->position);
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
missedReplies = 0;
|
||||||
|
}
|
||||||
|
decResult = datalinkLayer.decodeFrame(receivedData, receivedDataLen, &bytesLeft);
|
||||||
|
if (bytesLeft != 0) {
|
||||||
|
// This should never happen
|
||||||
|
sif::warning << "StrImageLoader::uploadSendAndRead: Bytes left after decoding" << std::endl;
|
||||||
|
triggerEvent(UPLOAD_COM_ERROR, result, uploadReq->position);
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (decResult != RETURN_OK) {
|
||||||
|
triggerEvent(DEC_ERROR, decResult, uploadReq->position);
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t StrImageLoader::checkUploadReply() {
|
||||||
|
uint8_t type = datalinkLayer.getReplyFrameType();
|
||||||
|
if (type != TMTC_ACTIONREPLY) {
|
||||||
|
sif::warning << "StrImageLoader::checkUploadReply: Received invalid upload reply"
|
||||||
|
<< std::endl;
|
||||||
|
triggerEvent(INVALID_TYPE_ID);
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
uint8_t status = datalinkLayer.getStatusField();
|
||||||
|
if (status != ArcsecDatalinkLayer::STATUS_OK) {
|
||||||
|
triggerEvent(STATUS_ERROR);
|
||||||
|
sif::warning << "StrImageLoader::checkUploadReply: Status failure" << std::endl;
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
@ -7,6 +7,15 @@
|
|||||||
#include "bsp_q7s/memory/SdCardManager.h"
|
#include "bsp_q7s/memory/SdCardManager.h"
|
||||||
#include "bsp_q7s/devices/ArcsecDatalinkLayer.h"
|
#include "bsp_q7s/devices/ArcsecDatalinkLayer.h"
|
||||||
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
||||||
|
#include "fsfw/objectmanager/SystemObject.h"
|
||||||
|
#include "fsfw/tasks/ExecutableObjectIF.h"
|
||||||
|
#include "fsfw/devicehandlers/DeviceCommunicationIF.h"
|
||||||
|
#include "fsfw/devicehandlers/CookieIF.h"
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "thirdparty/arcsec_star_tracker/common/generated/tmtcstructs.h"
|
||||||
|
#include "thirdparty/arcsec_star_tracker/client/generated/actionreq.h"
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief An object of this class runs in a separate task and is responsible for uploading and
|
* @brief An object of this class runs in a separate task and is responsible for uploading and
|
||||||
@ -34,16 +43,28 @@ public:
|
|||||||
//! [EXPORT] : [COMMENT] Failed to read communication interface reply data
|
//! [EXPORT] : [COMMENT] Failed to read communication interface reply data
|
||||||
//!P1: Return code of failed communication interface read call
|
//!P1: Return code of failed communication interface read call
|
||||||
//!P1: Upload position for which the read call failed
|
//!P1: Upload position for which the read call failed
|
||||||
static const Event UPLOAD_READING_REPLY_FAILED = MAKE_EVENT(3, severity::LOW);
|
static const Event UPLOAD_READING_REPLY_FAILED = MAKE_EVENT(4, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] Unexpected stop of decoding sequence
|
//! [EXPORT] : [COMMENT] Unexpected stop of decoding sequence
|
||||||
//!P1: Return code of failed communication interface read call
|
//!P1: Return code of failed communication interface read call
|
||||||
//!P1: Upload position for which the read call failed
|
//!P1: Upload position for which the read call failed
|
||||||
static const Event UPLOAD_COM_ERROR = MAKE_EVENT(4, severity::LOW);
|
static const Event UPLOAD_COM_ERROR = MAKE_EVENT(5, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Star tracker did not send replies (maybe device is powered off)
|
||||||
|
//!P1: Position of upload packet for which no reply was sent
|
||||||
|
static const Event NO_REPLY = MAKE_EVENT(6, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Received reply with invalid type ID
|
||||||
|
static const Event INVALID_TYPE_ID = MAKE_EVENT(7, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Status field in reply signals error
|
||||||
|
static const Event STATUS_ERROR = MAKE_EVENT(8, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Error during decoding of received reply occurred
|
||||||
|
//P1: Return value of decoding function
|
||||||
|
//P2: Position of upload packet for which reply decoding failed
|
||||||
|
static const Event DEC_ERROR = MAKE_EVENT(9, severity::LOW);
|
||||||
|
|
||||||
|
|
||||||
StrImageLoader(object_id_t objectId);
|
StrImageLoader(object_id_t objectId);
|
||||||
virtual ~StrImageLoader();
|
virtual ~StrImageLoader();
|
||||||
|
|
||||||
|
ReturnValue_t initialize() override;
|
||||||
ReturnValue_t performOperation(uint8_t operationCode = 0) override;
|
ReturnValue_t performOperation(uint8_t operationCode = 0) override;
|
||||||
|
|
||||||
void setComIF(DeviceCommunicationIF* communicationInterface_);
|
void setComIF(DeviceCommunicationIF* communicationInterface_);
|
||||||
@ -57,6 +78,11 @@ public:
|
|||||||
*/
|
*/
|
||||||
ReturnValue_t startImageUpload(std::string image);
|
ReturnValue_t startImageUpload(std::string image);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Calling this function initiates the download of an image from the star tracker.
|
||||||
|
*/
|
||||||
|
ReturnValue_t startImageDownload();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
static const uint8_t INTERFACE_ID = CLASS_ID::STR_IMG_LOADER;
|
static const uint8_t INTERFACE_ID = CLASS_ID::STR_IMG_LOADER;
|
||||||
@ -69,6 +95,8 @@ private:
|
|||||||
// Size of one image part which can be sent per action request
|
// Size of one image part which can be sent per action request
|
||||||
static const size_t SIZE_IMAGE_PART = 1024;
|
static const size_t SIZE_IMAGE_PART = 1024;
|
||||||
|
|
||||||
|
static const uint32_t MAX_POLLS = 10000;
|
||||||
|
|
||||||
enum class InternalState {
|
enum class InternalState {
|
||||||
IDLE,
|
IDLE,
|
||||||
UPLOAD_IMAGE,
|
UPLOAD_IMAGE,
|
||||||
@ -86,6 +114,8 @@ private:
|
|||||||
|
|
||||||
SdCardManager* sdcMan = nullptr;
|
SdCardManager* sdcMan = nullptr;
|
||||||
|
|
||||||
|
uint8_t commandBuffer[StarTracker::MAX_FRAME_SIZE];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Communication object responsible for low level access of star tracker
|
* Communication object responsible for low level access of star tracker
|
||||||
* Must be set by star tracker handler
|
* Must be set by star tracker handler
|
||||||
@ -94,10 +124,30 @@ private:
|
|||||||
// Communication cookie. Must be set by the star tracker handler
|
// Communication cookie. Must be set by the star tracker handler
|
||||||
CookieIF* comCookie = nullptr;
|
CookieIF* comCookie = nullptr;
|
||||||
|
|
||||||
|
// Queue id of raw data receiver
|
||||||
|
MessageQueueId_t rawDataReceiver = MessageQueueIF::NO_QUEUE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Performs image uploading
|
* @brief Performs image uploading
|
||||||
*/
|
*/
|
||||||
ReturnValue_t uploadImage();
|
ReturnValue_t performImageUpload();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sends a upload image packet and receives the action reply.
|
||||||
|
*
|
||||||
|
* @param uploadReq Pointer to upload request structure to send
|
||||||
|
*
|
||||||
|
* @return RETURN_OK if successful, otherwise RETURN_FALIED
|
||||||
|
*/
|
||||||
|
ReturnValue_t uploadSendAndRead(struct UploadActionRequest* uploadReq);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Checks the reply to an upload action request
|
||||||
|
*
|
||||||
|
* @return RETURN_OK if reply confirms success of upload packet transfer, otherwise
|
||||||
|
* REUTRN_FAILED
|
||||||
|
*/
|
||||||
|
ReturnValue_t checkUploadReply();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* BSP_Q7S_DEVICES_STRIMAGELOADER_H_ */
|
#endif /* BSP_Q7S_DEVICES_STRIMAGELOADER_H_ */
|
||||||
|
@ -97,6 +97,16 @@ static const DeviceCommandId_t REQ_POWER = 11;
|
|||||||
static const DeviceCommandId_t SUBSCRIBE_TO_TM = 18;
|
static const DeviceCommandId_t SUBSCRIBE_TO_TM = 18;
|
||||||
static const DeviceCommandId_t REQ_SOLUTION = 24;
|
static const DeviceCommandId_t REQ_SOLUTION = 24;
|
||||||
static const DeviceCommandId_t REQ_TEMPERATURE = 25;
|
static const DeviceCommandId_t REQ_TEMPERATURE = 25;
|
||||||
|
static const DeviceCommandId_t LIMITS = 40;
|
||||||
|
static const DeviceCommandId_t MONTING = 41;
|
||||||
|
static const DeviceCommandId_t CAMERA = 42;
|
||||||
|
static const DeviceCommandId_t BLOB = 43;
|
||||||
|
static const DeviceCommandId_t CENTROIDING = 44;
|
||||||
|
static const DeviceCommandId_t LISA = 45;
|
||||||
|
static const DeviceCommandId_t MACTHING = 46;
|
||||||
|
static const DeviceCommandId_t TRACKING = 47;
|
||||||
|
static const DeviceCommandId_t VALIDATION = 48;
|
||||||
|
static const DeviceCommandId_t ALGO = 49;
|
||||||
static const DeviceCommandId_t NONE = 0xFFFFFFFF;
|
static const DeviceCommandId_t NONE = 0xFFFFFFFF;
|
||||||
|
|
||||||
static const uint32_t VERSION_SET_ID = REQ_VERSION;
|
static const uint32_t VERSION_SET_ID = REQ_VERSION;
|
||||||
@ -122,6 +132,16 @@ namespace ID {
|
|||||||
static const uint8_t BOOT = 1;
|
static const uint8_t BOOT = 1;
|
||||||
static const uint8_t VERSION = 2;
|
static const uint8_t VERSION = 2;
|
||||||
static const uint8_t INTERFACE = 3;
|
static const uint8_t INTERFACE = 3;
|
||||||
|
static const uint8_t LIMITS = 5;
|
||||||
|
static const uint8_t MOUNTING = 6;
|
||||||
|
static const uint8_t CAMERA = 9;
|
||||||
|
static const uint8_t BLOB = 10;
|
||||||
|
static const uint8_t CENTROIDING = 11;
|
||||||
|
static const uint8_t LISA = 12;
|
||||||
|
static const uint8_t MATCHING = 13;
|
||||||
|
static const uint8_t TRACKING = 14;
|
||||||
|
static const uint8_t VALIDATION = 15;
|
||||||
|
static const uint8_t ALGO = 16;
|
||||||
static const uint8_t REBOOT = 7;
|
static const uint8_t REBOOT = 7;
|
||||||
static const uint8_t UPLOAD_IMAGE = 10;
|
static const uint8_t UPLOAD_IMAGE = 10;
|
||||||
static const uint8_t POWER = 11;
|
static const uint8_t POWER = 11;
|
||||||
@ -489,11 +509,11 @@ public:
|
|||||||
sif::info << "SolutionSet::printSet: Track Qz: "
|
sif::info << "SolutionSet::printSet: Track Qz: "
|
||||||
<< this->trackQz << std::endl;
|
<< this->trackQz << std::endl;
|
||||||
sif::info << "SolutionSet::printSet: Track removed: "
|
sif::info << "SolutionSet::printSet: Track removed: "
|
||||||
<< static_cast<uint8_t>(this->trackRemoved) << std::endl;
|
<< static_cast<unsigned int>(this->trackRemoved.value) << std::endl;
|
||||||
sif::info << "SolutionSet::printSet: Number of stars centroided: "
|
sif::info << "SolutionSet::printSet: Number of stars centroided: "
|
||||||
<< static_cast<uint8_t>(this->starsCentroided) << std::endl;
|
<< static_cast<unsigned int>(this->starsCentroided.value) << std::endl;
|
||||||
sif::info << "SolutionSet::printSet: Number of stars matched database: "
|
sif::info << "SolutionSet::printSet: Number of stars matched database: "
|
||||||
<< static_cast<uint8_t>(this->starsMatchedDatabase) << std::endl;
|
<< static_cast<unsigned int>(this->starsMatchedDatabase.value) << std::endl;
|
||||||
sif::info << "SolutionSet::printSet: LISA Qw: "
|
sif::info << "SolutionSet::printSet: LISA Qw: "
|
||||||
<< this->lisaQw << std::endl;
|
<< this->lisaQw << std::endl;
|
||||||
sif::info << "SolutionSet::printSet: LISA Qx: "
|
sif::info << "SolutionSet::printSet: LISA Qx: "
|
||||||
@ -505,13 +525,13 @@ public:
|
|||||||
sif::info << "SolutionSet::printSet: LISA Percentage close: "
|
sif::info << "SolutionSet::printSet: LISA Percentage close: "
|
||||||
<< this->lisaPercentageClose << std::endl;
|
<< this->lisaPercentageClose << std::endl;
|
||||||
sif::info << "SolutionSet::printSet: LISA number of close stars: "
|
sif::info << "SolutionSet::printSet: LISA number of close stars: "
|
||||||
<< static_cast<uint8_t>(this->lisaNrClose) << std::endl;
|
<< static_cast<unsigned int>(this->lisaNrClose.value) << std::endl;
|
||||||
sif::info << "SolutionSet::printSet: Is trust worthy: "
|
sif::info << "SolutionSet::printSet: Is trust worthy: "
|
||||||
<< static_cast<uint8_t>(this->isTrustWorthy) << std::endl;
|
<< static_cast<unsigned int>(this->isTrustWorthy.value) << std::endl;
|
||||||
sif::info << "SolutionSet::printSet: Stable count: "
|
sif::info << "SolutionSet::printSet: Stable count: "
|
||||||
<< this->stableCount << std::endl;
|
<< this->stableCount << std::endl;
|
||||||
sif::info << "SolutionSet::printSet: Solution strategy: "
|
sif::info << "SolutionSet::printSet: Solution strategy: "
|
||||||
<< static_cast<uint8_t>(this->solutionStrategy) << std::endl;
|
<< static_cast<unsigned int>(this->solutionStrategy.value) << std::endl;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
343
bsp_q7s/devices/devicedefinitions/StarTrackerJsonCommands.h
Normal file
343
bsp_q7s/devices/devicedefinitions/StarTrackerJsonCommands.h
Normal file
@ -0,0 +1,343 @@
|
|||||||
|
#ifndef BSP_Q7S_DEVICES_DEVICEDEFINITIONS_STARTRACKERJSONCOMMANDS_H_
|
||||||
|
#define BSP_Q7S_DEVICES_DEVICEDEFINITIONS_STARTRACKERJSONCOMMANDS_H_
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <fstream>
|
||||||
|
#include <filesystem>
|
||||||
|
#include <nlohmann/json.hpp>
|
||||||
|
|
||||||
|
#include "fsfw/serviceinterface/ServiceInterface.h"
|
||||||
|
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
||||||
|
#include "bsp_q7s/devices/devicedefinitions/StarTrackerDefinitions.h"
|
||||||
|
|
||||||
|
#include "thirdparty/arcsec_star_tracker/common/generated/tmtcstructs.h"
|
||||||
|
|
||||||
|
using json = nlohmann::json;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This file defines a few helper classes to generate commands by means of the arcsec
|
||||||
|
* json files.
|
||||||
|
* @author J. Meier
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace arcseckeys {
|
||||||
|
static const char PROPERTIES[] = "properties";
|
||||||
|
static const char NAME[] = "name";
|
||||||
|
static const char VALUE[] = "value";
|
||||||
|
|
||||||
|
static const char LIMITS[] = "limits";
|
||||||
|
static const char ACTION[] = "action";
|
||||||
|
static const char FPGA18CURRENT[] = "FPGA18Current";
|
||||||
|
static const char FPGA25CURRENT[] = "FPGA25Current";
|
||||||
|
static const char FPGA10CURRENT[] = "FPGA10Current";
|
||||||
|
static const char MCUCURRENT[] = "MCUCurrent";
|
||||||
|
static const char CMOS21CURRENT[] = "CMOS21Current";
|
||||||
|
static const char CMOSPIXCURRENT[] = "CMOSPixCurrent";
|
||||||
|
static const char CMOS33CURRENT[] = "CMOS33Current";
|
||||||
|
static const char CMOSVRESCURRENT[] = "CMOSVResCurrent";
|
||||||
|
static const char CMOS_TEMPERATURE[] = "CMOSTemperature";
|
||||||
|
static const char MCU_TEMPERATURE[] = "MCUTemperature";
|
||||||
|
|
||||||
|
static const char TRACKING[] = "tracking";
|
||||||
|
static const char THIN_LIMIT[] = "thinLimit";
|
||||||
|
static const char OUTLIER_THRESHOLD[] = "outlierThreshold";
|
||||||
|
static const char OUTLIER_THRESHOLD_QUEST[] = "outlierThresholdQUEST";
|
||||||
|
static const char TRACKER_CHOICE[] = "trackerChoice";
|
||||||
|
}
|
||||||
|
|
||||||
|
class ArcsecJsonBase : public HasReturnvaluesIF {
|
||||||
|
public:
|
||||||
|
|
||||||
|
static const uint8_t INTERFACE_ID = CLASS_ID::ARCSEC_JSON_BASE;
|
||||||
|
//! [EXPORT] : [COMMENT] Specified json file does not exist
|
||||||
|
static const ReturnValue_t JSON_FILE_NOT_EXISTS = MAKE_RETURN_CODE(1);
|
||||||
|
//! [EXPORT] : [COMMENT] Requested set does not exist in json file
|
||||||
|
static const ReturnValue_t SET_NOT_EXISTS = MAKE_RETURN_CODE(2);
|
||||||
|
//! [EXPORT] : [COMMENT] Requested parameter does not exist in json file
|
||||||
|
static const ReturnValue_t PARAM_NOT_EXISTS = MAKE_RETURN_CODE(3);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Constructor
|
||||||
|
*
|
||||||
|
* @param fullname Name with absolute path of json file containing the parameters to set.
|
||||||
|
*/
|
||||||
|
ArcsecJsonBase() {}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initializes the properties json object and the set json object
|
||||||
|
*
|
||||||
|
* @param fullname Name including absolute path to json file
|
||||||
|
* @param setName The name of the set to work on
|
||||||
|
*
|
||||||
|
* @param return JSON_FILE_NOT_EXISTS if specified file does not exist, otherwise
|
||||||
|
* RETURN_OK
|
||||||
|
*/
|
||||||
|
ReturnValue_t init(const std::string filename,std::string setName) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
if(not std::filesystem::exists(filename)) {
|
||||||
|
sif::warning << "ArcsecJsonBase::init: JSON file " << filename << " does not exist"
|
||||||
|
<< std::endl;
|
||||||
|
return JSON_FILE_NOT_EXISTS;
|
||||||
|
}
|
||||||
|
createJsonObject(filename);
|
||||||
|
result = initSet(setName);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Reads the value of a parameter from a json set
|
||||||
|
*
|
||||||
|
* @param name The name of the parameter
|
||||||
|
* @param value The string representation of the read value
|
||||||
|
*
|
||||||
|
* @return RETURN_OK if successful, otherwise PARAM_NOT_EXISTS
|
||||||
|
*/
|
||||||
|
ReturnValue_t getParam(const std::string name, std::string& value) {
|
||||||
|
for (json::iterator it = set.begin(); it != set.end(); ++it) {
|
||||||
|
if ((*it)[arcseckeys::NAME] == name) {
|
||||||
|
value = (*it)[arcseckeys::VALUE];
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return PARAM_NOT_EXISTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function adds a float represented as string to a buffer
|
||||||
|
*
|
||||||
|
* @param value The float in string representation to add
|
||||||
|
* @param buffer Pointer to the buffer the float will be written to
|
||||||
|
*/
|
||||||
|
void addfloat(const std::string value, uint8_t* buffer) {
|
||||||
|
float param = std::stof(value);
|
||||||
|
std::memcpy(buffer, ¶m, sizeof(param));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function adds a uint8_t represented as string to a buffer
|
||||||
|
*
|
||||||
|
* @param value The uint8_t in string representation to add
|
||||||
|
* @param buffer Pointer to the buffer the uint8_t will be written to
|
||||||
|
*/
|
||||||
|
void adduint8(const std::string value, uint8_t* buffer) {
|
||||||
|
uint8_t param = std::stoi(value);
|
||||||
|
std::memcpy(buffer, ¶m, sizeof(param));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function adds a uint32_t represented as string to a buffer
|
||||||
|
*
|
||||||
|
* @param value The uint32_t in string representation to add
|
||||||
|
* @param buffer Pointer to the buffer the uint32_t will be written to
|
||||||
|
*/
|
||||||
|
void adduint32(const std::string value, uint8_t* buffer) {
|
||||||
|
uint32_t param = std::stoi(value);
|
||||||
|
std::memcpy(buffer, ¶m, sizeof(param));
|
||||||
|
}
|
||||||
|
|
||||||
|
void addSetParamHeader(uint8_t* buffer, uint8_t setId) {
|
||||||
|
*buffer = static_cast<uint8_t>(TMTC_SETPARAMREQ);
|
||||||
|
*(buffer + 1) = setId;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
void createJsonObject(const std::string fullname) {
|
||||||
|
json j;
|
||||||
|
std::ifstream file(fullname);
|
||||||
|
file >> j;
|
||||||
|
file.close();
|
||||||
|
properties = j[arcseckeys::PROPERTIES];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Extracts the json set object form the json file
|
||||||
|
*
|
||||||
|
* @param setName The name of the set to create the json object from
|
||||||
|
*/
|
||||||
|
ReturnValue_t initSet(std::string setName) {
|
||||||
|
for (json::iterator it = properties.begin(); it != properties.end(); ++it) {
|
||||||
|
if ((*it)["name"] == setName) {
|
||||||
|
set = (*it)["fields"];
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SET_NOT_EXISTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
json properties;
|
||||||
|
json set;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Generates command to set the limit parameters
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class Limits : public ArcsecJsonBase {
|
||||||
|
public:
|
||||||
|
|
||||||
|
static const size_t COMMAND_SIZE = 43;
|
||||||
|
|
||||||
|
Limits() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Fills a buffer with the tracking parameters
|
||||||
|
*
|
||||||
|
* @param fullname The name including the absolute path of the json file containing the
|
||||||
|
* limits parameters to set.
|
||||||
|
* @param buffer Pointer to the buffer the command will be written to
|
||||||
|
*/
|
||||||
|
ReturnValue_t create(std::string fullname, uint8_t* buffer) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
result = init(fullname, arcseckeys::LIMITS);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = createCommand(buffer);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
ReturnValue_t createCommand(uint8_t* buffer) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
uint8_t offset = 0;
|
||||||
|
std::string param;
|
||||||
|
addSetParamHeader(buffer, StarTracker::ID::LIMITS);
|
||||||
|
offset = 2;
|
||||||
|
result = getParam(arcseckeys::ACTION, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
adduint8(param, buffer + offset);
|
||||||
|
offset += sizeof(uint8_t);
|
||||||
|
result = getParam(arcseckeys::FPGA18CURRENT, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
offset += sizeof(float);
|
||||||
|
result = getParam(arcseckeys::FPGA25CURRENT, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
offset += sizeof(float);
|
||||||
|
result = getParam(arcseckeys::FPGA10CURRENT, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
offset += sizeof(float);
|
||||||
|
result = getParam(arcseckeys::MCUCURRENT, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
offset += sizeof(float);
|
||||||
|
result = getParam(arcseckeys::CMOS21CURRENT, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
offset += sizeof(float);
|
||||||
|
result = getParam(arcseckeys::CMOSPIXCURRENT, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
offset += sizeof(float);
|
||||||
|
result = getParam(arcseckeys::CMOS33CURRENT, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
offset += sizeof(float);
|
||||||
|
result = getParam(arcseckeys::CMOSVRESCURRENT, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
offset += sizeof(float);
|
||||||
|
result = getParam(arcseckeys::CMOS_TEMPERATURE, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
offset += sizeof(float);
|
||||||
|
result = getParam(arcseckeys::MCU_TEMPERATURE, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Generates the command to configure the tracking algorithm.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class Tracking : public ArcsecJsonBase {
|
||||||
|
public:
|
||||||
|
|
||||||
|
static const size_t COMMAND_SIZE = 15;
|
||||||
|
|
||||||
|
Tracking() {}
|
||||||
|
/**
|
||||||
|
* @brief Fills a buffer with the tracking parameters
|
||||||
|
*
|
||||||
|
* @param fullname The name including the absolute path of the json file containing the
|
||||||
|
* tracking parameters to set.
|
||||||
|
* @param buffer Pointer to the buffer the command will be written to
|
||||||
|
*/
|
||||||
|
ReturnValue_t create(std::string fullname, uint8_t* buffer) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
result = init(fullname, arcseckeys::TRACKING);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = createCommand(buffer);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
ReturnValue_t createCommand(uint8_t* buffer) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
uint8_t offset = 0;
|
||||||
|
std::string param;
|
||||||
|
addSetParamHeader(buffer, StarTracker::ID::TRACKING);
|
||||||
|
offset = 2;
|
||||||
|
result = getParam(arcseckeys::THIN_LIMIT, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
offset += sizeof(float);
|
||||||
|
result = getParam(arcseckeys::OUTLIER_THRESHOLD, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
offset += sizeof(float);
|
||||||
|
result = getParam(arcseckeys::OUTLIER_THRESHOLD_QUEST, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
addfloat(param, buffer + offset);
|
||||||
|
offset += sizeof(float);
|
||||||
|
result = getParam(arcseckeys::TRACKER_CHOICE, param);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
adduint8(param, buffer + offset);
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* BSP_Q7S_DEVICES_DEVICEDEFINITIONS_STARTRACKERJSONCOMMANDS_H_ */
|
@ -457,8 +457,8 @@ void SdCardManager::setPrintCommandOutput(bool print) {
|
|||||||
|
|
||||||
bool SdCardManager::isSdCardMounted(sd::SdCard sdCard) {
|
bool SdCardManager::isSdCardMounted(sd::SdCard sdCard) {
|
||||||
SdCardManager::SdStatePair active;
|
SdCardManager::SdStatePair active;
|
||||||
ReturnValue_t result = sdcMan->getSdCardActiveStatus(active);
|
ReturnValue_t result = this->getSdCardActiveStatus(active);
|
||||||
if (result != 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;
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,8 @@ enum commonClassIds: uint8_t {
|
|||||||
GOM_SPACE_HANDLER, //GOMS
|
GOM_SPACE_HANDLER, //GOMS
|
||||||
PLOC_MEMORY_DUMPER, //PLMEMDUMP
|
PLOC_MEMORY_DUMPER, //PLMEMDUMP
|
||||||
PDEC_HANDLER, //PDEC
|
PDEC_HANDLER, //PDEC
|
||||||
CCSDS_HANDLER, //PDEC
|
CCSDS_HANDLER, //CCSDS
|
||||||
|
ARCSEC_JSON_BASE, //JSONBASE
|
||||||
COMMON_CLASS_ID_END // [EXPORT] : [END]
|
COMMON_CLASS_ID_END // [EXPORT] : [END]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ enum commonObjects: uint32_t {
|
|||||||
RW3 = 0x44120249,
|
RW3 = 0x44120249,
|
||||||
RW4 = 0x44120350,
|
RW4 = 0x44120350,
|
||||||
|
|
||||||
START_TRACKER = 0x44130001,
|
STAR_TRACKER = 0x44130001,
|
||||||
|
|
||||||
PLOC_UPDATER = 0x44330000,
|
PLOC_UPDATER = 0x44330000,
|
||||||
PLOC_MEMORY_DUMPER = 0x44330001,
|
PLOC_MEMORY_DUMPER = 0x44330001,
|
||||||
|
@ -1,120 +1,130 @@
|
|||||||
2200;STORE_SEND_WRITE_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2200;STORE_SEND_WRITE_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2201;STORE_WRITE_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2201;STORE_WRITE_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2202;STORE_SEND_READ_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2202;STORE_SEND_READ_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2203;STORE_READ_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2203;STORE_READ_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2204;UNEXPECTED_MSG;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2204;UNEXPECTED_MSG;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2205;STORING_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2205;STORING_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2206;TM_DUMP_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2206;TM_DUMP_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2207;STORE_INIT_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2207;STORE_INIT_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2208;STORE_INIT_EMPTY;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2208;STORE_INIT_EMPTY;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2209;STORE_CONTENT_CORRUPTED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2209;STORE_CONTENT_CORRUPTED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2210;STORE_INITIALIZE;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2210;STORE_INITIALIZE;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2211;INIT_DONE;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2211;INIT_DONE;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2212;DUMP_FINISHED;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2212;DUMP_FINISHED;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2213;DELETION_FINISHED;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2213;DELETION_FINISHED;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2214;DELETION_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2214;DELETION_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2215;AUTO_CATALOGS_SENDING_FAILED;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
2215;AUTO_CATALOGS_SENDING_FAILED;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/tmstorage/TmStoreBackendIF.h
|
||||||
2600;GET_DATA_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
2600;GET_DATA_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
||||||
2601;STORE_DATA_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
2601;STORE_DATA_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/storagemanager/StorageManagerIF.h
|
||||||
2800;DEVICE_BUILDING_COMMAND_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2800;DEVICE_BUILDING_COMMAND_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2801;DEVICE_SENDING_COMMAND_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2801;DEVICE_SENDING_COMMAND_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2802;DEVICE_REQUESTING_REPLY_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2802;DEVICE_REQUESTING_REPLY_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2803;DEVICE_READING_REPLY_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2803;DEVICE_READING_REPLY_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2804;DEVICE_INTERPRETING_REPLY_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2804;DEVICE_INTERPRETING_REPLY_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2805;DEVICE_MISSED_REPLY;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2805;DEVICE_MISSED_REPLY;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2806;DEVICE_UNKNOWN_REPLY;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2806;DEVICE_UNKNOWN_REPLY;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2807;DEVICE_UNREQUESTED_REPLY;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2807;DEVICE_UNREQUESTED_REPLY;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2808;INVALID_DEVICE_COMMAND;LOW;Indicates a SW bug in child class.;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2808;INVALID_DEVICE_COMMAND;LOW;Indicates a SW bug in child class.;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2809;MONITORING_LIMIT_EXCEEDED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2809;MONITORING_LIMIT_EXCEEDED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
2810;MONITORING_AMBIGUOUS;HIGH;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
2810;MONITORING_AMBIGUOUS;HIGH;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/devicehandlers/DeviceHandlerIF.h
|
||||||
4201;FUSE_CURRENT_HIGH;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/power/Fuse.h
|
4201;FUSE_CURRENT_HIGH;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/power/Fuse.h
|
||||||
4202;FUSE_WENT_OFF;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/power/Fuse.h
|
4202;FUSE_WENT_OFF;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/power/Fuse.h
|
||||||
4204;POWER_ABOVE_HIGH_LIMIT;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/power/Fuse.h
|
4204;POWER_ABOVE_HIGH_LIMIT;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/power/Fuse.h
|
||||||
4205;POWER_BELOW_LOW_LIMIT;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/power/Fuse.h
|
4205;POWER_BELOW_LOW_LIMIT;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/power/Fuse.h
|
||||||
4300;SWITCH_WENT_OFF;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/power/PowerSwitchIF.h
|
4300;SWITCH_WENT_OFF;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/power/PowerSwitchIF.h
|
||||||
5000;HEATER_ON;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/Heater.h
|
5000;HEATER_ON;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/Heater.h
|
||||||
5001;HEATER_OFF;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/Heater.h
|
5001;HEATER_OFF;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/Heater.h
|
||||||
5002;HEATER_TIMEOUT;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/Heater.h
|
5002;HEATER_TIMEOUT;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/Heater.h
|
||||||
5003;HEATER_STAYED_ON;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/Heater.h
|
5003;HEATER_STAYED_ON;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/Heater.h
|
||||||
5004;HEATER_STAYED_OFF;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/Heater.h
|
5004;HEATER_STAYED_OFF;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/Heater.h
|
||||||
5200;TEMP_SENSOR_HIGH;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
|
5200;TEMP_SENSOR_HIGH;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
|
||||||
5201;TEMP_SENSOR_LOW;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
|
5201;TEMP_SENSOR_LOW;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
|
||||||
5202;TEMP_SENSOR_GRADIENT;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
|
5202;TEMP_SENSOR_GRADIENT;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/AbstractTemperatureSensor.h
|
||||||
5901;COMPONENT_TEMP_LOW;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
5901;COMPONENT_TEMP_LOW;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
5902;COMPONENT_TEMP_HIGH;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
5902;COMPONENT_TEMP_HIGH;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
5903;COMPONENT_TEMP_OOL_LOW;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
5903;COMPONENT_TEMP_OOL_LOW;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
5904;COMPONENT_TEMP_OOL_HIGH;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
5904;COMPONENT_TEMP_OOL_HIGH;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
5905;TEMP_NOT_IN_OP_RANGE;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
5905;TEMP_NOT_IN_OP_RANGE;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/thermal/ThermalComponentIF.h
|
||||||
7101;FDIR_CHANGED_STATE;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h
|
7101;FDIR_CHANGED_STATE;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h
|
||||||
7102;FDIR_STARTS_RECOVERY;MEDIUM;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h
|
7102;FDIR_STARTS_RECOVERY;MEDIUM;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h
|
||||||
7103;FDIR_TURNS_OFF_DEVICE;MEDIUM;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h
|
7103;FDIR_TURNS_OFF_DEVICE;MEDIUM;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/fdir/FailureIsolationBase.h
|
||||||
7201;MONITOR_CHANGED_STATE;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
7201;MONITOR_CHANGED_STATE;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
7202;VALUE_BELOW_LOW_LIMIT;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
7202;VALUE_BELOW_LOW_LIMIT;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
7203;VALUE_ABOVE_HIGH_LIMIT;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
7203;VALUE_ABOVE_HIGH_LIMIT;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
7204;VALUE_OUT_OF_RANGE;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
7204;VALUE_OUT_OF_RANGE;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/monitoring/MonitoringIF.h
|
||||||
7301;SWITCHING_TM_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/datapool/HkSwitchHelper.h
|
7301;SWITCHING_TM_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/datapool/HkSwitchHelper.h
|
||||||
7400;CHANGING_MODE;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7400;CHANGING_MODE;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7401;MODE_INFO;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7401;MODE_INFO;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7402;FALLBACK_FAILED;HIGH;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7402;FALLBACK_FAILED;HIGH;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7403;MODE_TRANSITION_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7403;MODE_TRANSITION_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7404;CANT_KEEP_MODE;HIGH;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7404;CANT_KEEP_MODE;HIGH;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7405;OBJECT_IN_INVALID_MODE;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7405;OBJECT_IN_INVALID_MODE;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7406;FORCING_MODE;MEDIUM;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7406;FORCING_MODE;MEDIUM;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7407;MODE_CMD_REJECTED;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
7407;MODE_CMD_REJECTED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/modes/HasModesIF.h
|
||||||
7506;HEALTH_INFO;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7506;HEALTH_INFO;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7507;CHILD_CHANGED_HEALTH;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7507;CHILD_CHANGED_HEALTH;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7508;CHILD_PROBLEMS;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7508;CHILD_PROBLEMS;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7509;OVERWRITING_HEALTH;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7509;OVERWRITING_HEALTH;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7510;TRYING_RECOVERY;MEDIUM;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7510;TRYING_RECOVERY;MEDIUM;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7511;RECOVERY_STEP;MEDIUM;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7511;RECOVERY_STEP;MEDIUM;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7512;RECOVERY_DONE;MEDIUM;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
7512;RECOVERY_DONE;MEDIUM;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/health/HasHealthIF.h
|
||||||
7900;RF_AVAILABLE;INFO;A RF available signal was detected. P1: raw RFA state, P2: 0;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
7900;RF_AVAILABLE;INFO;A RF available signal was detected. P1: raw RFA state, P2: 0;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\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;/home/eive/EIVE/Robin/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;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
||||||
7902;BIT_LOCK;INFO;A Bit Lock signal. Was detected. P1: raw BLO state, P2: 0;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
7902;BIT_LOCK;INFO;A Bit Lock signal. Was detected. P1: raw BLO state, P2: 0;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\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;/home/eive/EIVE/Robin/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;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
||||||
7905;FRAME_PROCESSING_FAILED;LOW;The CCSDS Board could not interpret a TC;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
7905;FRAME_PROCESSING_FAILED;LOW;The CCSDS Board could not interpret a TC;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/datalinklayer/DataLinkLayer.h
|
||||||
8900;CLOCK_SET;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/pus/Service9TimeManagement.h
|
8900;CLOCK_SET;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/pus/Service9TimeManagement.h
|
||||||
8901;CLOCK_SET_FAILURE;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/pus/Service9TimeManagement.h
|
8901;CLOCK_SET_FAILURE;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/pus/Service9TimeManagement.h
|
||||||
9700;TEST;INFO;;/home/eive/EIVE/Robin/eive-obsw/fsfw/src/fsfw/pus/Service17Test.h
|
9700;TEST;INFO;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/src/fsfw/pus/Service17Test.h
|
||||||
10600;CHANGE_OF_SETUP_PARAMETER;LOW;;/home/eive/EIVE/Robin/eive-obsw/fsfw/hal/src/fsfw_hal/devicehandlers/MgmLIS3MDLHandler.h
|
10600;CHANGE_OF_SETUP_PARAMETER;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/fsfw/hal/src/fsfw_hal/devicehandlers/MgmLIS3MDLHandler.h
|
||||||
10900;GPIO_PULL_HIGH_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/linux/devices/HeaterHandler.h
|
10900;GPIO_PULL_HIGH_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/devices/HeaterHandler.h
|
||||||
10901;GPIO_PULL_LOW_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/linux/devices/HeaterHandler.h
|
10901;GPIO_PULL_LOW_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/devices/HeaterHandler.h
|
||||||
10902;SWITCH_ALREADY_ON;LOW;;/home/eive/EIVE/Robin/eive-obsw/linux/devices/HeaterHandler.h
|
10902;SWITCH_ALREADY_ON;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/devices/HeaterHandler.h
|
||||||
10903;SWITCH_ALREADY_OFF;LOW;;/home/eive/EIVE/Robin/eive-obsw/linux/devices/HeaterHandler.h
|
10903;SWITCH_ALREADY_OFF;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/devices/HeaterHandler.h
|
||||||
10904;MAIN_SWITCH_TIMEOUT;LOW;;/home/eive/EIVE/Robin/eive-obsw/linux/devices/HeaterHandler.h
|
10904;MAIN_SWITCH_TIMEOUT;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/devices/HeaterHandler.h
|
||||||
11000;MAIN_SWITCH_ON_TIMEOUT;LOW;;/home/eive/EIVE/Robin/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h
|
11000;MAIN_SWITCH_ON_TIMEOUT;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/devices/SolarArrayDeploymentHandler.h
|
||||||
11001;MAIN_SWITCH_OFF_TIMEOUT;LOW;;/home/eive/EIVE/Robin/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h
|
11001;MAIN_SWITCH_OFF_TIMEOUT;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/devices/SolarArrayDeploymentHandler.h
|
||||||
11002;DEPLOYMENT_FAILED;HIGH;;/home/eive/EIVE/Robin/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h
|
11002;DEPLOYMENT_FAILED;HIGH;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/devices/SolarArrayDeploymentHandler.h
|
||||||
11003;DEPL_SA1_GPIO_SWTICH_ON_FAILED;HIGH;;/home/eive/EIVE/Robin/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h
|
11003;DEPL_SA1_GPIO_SWTICH_ON_FAILED;HIGH;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/devices/SolarArrayDeploymentHandler.h
|
||||||
11004;DEPL_SA2_GPIO_SWTICH_ON_FAILED;HIGH;;/home/eive/EIVE/Robin/eive-obsw/linux/devices/SolarArrayDeploymentHandler.h
|
11004;DEPL_SA2_GPIO_SWTICH_ON_FAILED;HIGH;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/devices/SolarArrayDeploymentHandler.h
|
||||||
11101;MEMORY_READ_RPT_CRC_FAILURE;LOW;;/home/eive/EIVE/Robin/eive-obsw/mission/devices/PlocMPSoCHandler.h
|
11101;MEMORY_READ_RPT_CRC_FAILURE;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/mission/devices/PlocMPSoCHandler.h
|
||||||
11102;ACK_FAILURE;LOW;;/home/eive/EIVE/Robin/eive-obsw/mission/devices/PlocMPSoCHandler.h
|
11102;ACK_FAILURE;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/mission/devices/PlocMPSoCHandler.h
|
||||||
11103;EXE_FAILURE;LOW;;/home/eive/EIVE/Robin/eive-obsw/mission/devices/PlocMPSoCHandler.h
|
11103;EXE_FAILURE;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/mission/devices/PlocMPSoCHandler.h
|
||||||
11104;CRC_FAILURE_EVENT;LOW;;/home/eive/EIVE/Robin/eive-obsw/mission/devices/PlocMPSoCHandler.h
|
11104;CRC_FAILURE_EVENT;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/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/eive/EIVE/Robin/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;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\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;/home/eive/EIVE/Robin/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;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\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;/home/eive/EIVE/Robin/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;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\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;/home/eive/EIVE/Robin/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;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\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;/home/eive/EIVE/Robin/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;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\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;/home/eive/EIVE/Robin/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;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\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;/home/eive/EIVE/Robin/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;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\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.;/home/eive/EIVE/Robin/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.;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/mission/devices/IMTQHandler.h
|
||||||
11301;ERROR_STATE;HIGH;Reaction wheel signals an error state;/home/eive/EIVE/Robin/eive-obsw/mission/devices/RwHandler.h
|
11301;ERROR_STATE;HIGH;Reaction wheel signals an error state;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/mission/devices/RwHandler.h
|
||||||
11501;SUPV_MEMORY_READ_RPT_CRC_FAILURE;LOW;PLOC supervisor crc failure in telemetry packet;/home/eive/EIVE/Robin/eive-obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
11501;SUPV_MEMORY_READ_RPT_CRC_FAILURE;LOW;PLOC supervisor crc failure in telemetry packet;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
||||||
11502;SUPV_ACK_FAILURE;LOW;PLOC supervisor received acknowledgment failure report;/home/eive/EIVE/Robin/eive-obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
11502;SUPV_ACK_FAILURE;LOW;PLOC supervisor received acknowledgment failure report;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
||||||
11503;SUPV_EXE_FAILURE;LOW;PLOC received execution failure report;/home/eive/EIVE/Robin/eive-obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
11503;SUPV_EXE_FAILURE;LOW;PLOC received execution failure report;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
||||||
11504;SUPV_CRC_FAILURE_EVENT;LOW;PLOC supervisor reply has invalid crc;/home/eive/EIVE/Robin/eive-obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
11504;SUPV_CRC_FAILURE_EVENT;LOW;PLOC supervisor reply has invalid crc;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/PlocSupervisorHandler.h
|
||||||
11600;SANITIZATION_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/bsp_q7s/memory/SdCardManager.h
|
11600;SANITIZATION_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/memory/SdCardManager.h
|
||||||
11700;UPDATE_FILE_NOT_EXISTS;LOW;;/home/eive/EIVE/Robin/eive-obsw/bsp_q7s/devices/PlocUpdater.h
|
11700;UPDATE_FILE_NOT_EXISTS;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/PlocUpdater.h
|
||||||
11701;ACTION_COMMANDING_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/bsp_q7s/devices/PlocUpdater.h
|
11701;ACTION_COMMANDING_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\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;/home/eive/EIVE/Robin/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;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\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);/home/eive/EIVE/Robin/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);C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/PlocUpdater.h
|
||||||
11704;UPDATE_VERIFY_FAILED;LOW;Supervisor failed to execute the update verify command.;/home/eive/EIVE/Robin/eive-obsw/bsp_q7s/devices/PlocUpdater.h
|
11704;UPDATE_VERIFY_FAILED;LOW;Supervisor failed to execute the update verify command.;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/PlocUpdater.h
|
||||||
11705;UPDATE_FINISHED;INFO;MPSoC update successful completed;/home/eive/EIVE/Robin/eive-obsw/bsp_q7s/devices/PlocUpdater.h
|
11705;UPDATE_FINISHED;INFO;MPSoC update successful completed;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/PlocUpdater.h
|
||||||
11800;SEND_MRAM_DUMP_FAILED;LOW;;/home/eive/EIVE/Robin/eive-obsw/bsp_q7s/devices/PlocMemoryDumper.h
|
11800;SEND_MRAM_DUMP_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/PlocMemoryDumper.h
|
||||||
11801;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;/home/eive/EIVE/Robin/eive-obsw/bsp_q7s/devices/PlocMemoryDumper.h
|
11801;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/PlocMemoryDumper.h
|
||||||
11802;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;/home/eive/EIVE/Robin/eive-obsw/bsp_q7s/devices/PlocMemoryDumper.h
|
11802;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/PlocMemoryDumper.h
|
||||||
11901;INVALID_TC_FRAME;HIGH;;/home/eive/EIVE/Robin/eive-obsw/linux/obc/PdecHandler.h
|
11901;INVALID_TC_FRAME;HIGH;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/obc/PdecHandler.h
|
||||||
11902;INVALID_FAR;HIGH;Read invalid FAR from PDEC after startup;/home/eive/EIVE/Robin/eive-obsw/linux/obc/PdecHandler.h
|
11902;INVALID_FAR;HIGH;Read invalid FAR from PDEC after startup;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/obc/PdecHandler.h
|
||||||
11903;CARRIER_LOCK;INFO;Carrier lock detected;/home/eive/EIVE/Robin/eive-obsw/linux/obc/PdecHandler.h
|
11903;CARRIER_LOCK;INFO;Carrier lock detected;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/obc/PdecHandler.h
|
||||||
11904;BIT_LOCK_PDEC;INFO;Bit lock detected (data valid);/home/eive/EIVE/Robin/eive-obsw/linux/obc/PdecHandler.h
|
11904;BIT_LOCK_PDEC;INFO;Bit lock detected (data valid);C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/linux/obc/PdecHandler.h
|
||||||
|
12000;IMAGE_FILE_NOT_EXISTS;LOW;Try to upload image but specified image does not exist;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/StrImageLoader.h
|
||||||
|
12001;SENDING_UPLOAD_PACKET_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/StrImageLoader.h
|
||||||
|
12002;UPLOAD_REQUESTING_MSG_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/StrImageLoader.h
|
||||||
|
12003;IMAGE_UPLOAD_SUCCESSFUL;LOW;Uploading image to star tracker was successful;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/StrImageLoader.h
|
||||||
|
12004;UPLOAD_READING_REPLY_FAILED;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/StrImageLoader.h
|
||||||
|
12005;UPLOAD_COM_ERROR;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/StrImageLoader.h
|
||||||
|
12006;NO_REPLY;LOW;Star tracker did not send replies (maybe device is powered off)P1: Position of upload packet for which no reply was sent;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/StrImageLoader.h
|
||||||
|
12007;INVALID_TYPE_ID;LOW;Received reply with invalid type ID;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/StrImageLoader.h
|
||||||
|
12008;STATUS_ERROR;LOW;Status field in reply signals error;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/StrImageLoader.h
|
||||||
|
12009;DEC_ERROR;LOW;;C:\Users\jakob\OneDrive\Work\EIVE\Q7S\Software\eive_obsw/bsp_q7s/devices/StrImageLoader.h
|
||||||
|
|
@ -27,7 +27,7 @@
|
|||||||
0x44120309;MGM_3_RM3100_HANDLER
|
0x44120309;MGM_3_RM3100_HANDLER
|
||||||
0x44120313;GYRO_3_L3G_HANDLER
|
0x44120313;GYRO_3_L3G_HANDLER
|
||||||
0x44120350;RW4
|
0x44120350;RW4
|
||||||
0x44130001;START_TRACKER
|
0x44130001;STAR_TRACKER
|
||||||
0x44130045;GPS0_HANDLER
|
0x44130045;GPS0_HANDLER
|
||||||
0x44130146;GPS1_HANDLER
|
0x44130146;GPS1_HANDLER
|
||||||
0x44140014;IMTQ_HANDLER
|
0x44140014;IMTQ_HANDLER
|
||||||
@ -39,6 +39,7 @@
|
|||||||
0x443200A5;RAD_SENSOR
|
0x443200A5;RAD_SENSOR
|
||||||
0x44330000;PLOC_UPDATER
|
0x44330000;PLOC_UPDATER
|
||||||
0x44330001;PLOC_MEMORY_DUMPER
|
0x44330001;PLOC_MEMORY_DUMPER
|
||||||
|
0x44330002;STR_IMG_LOADER
|
||||||
0x44330015;PLOC_MPSOC_HANDLER
|
0x44330015;PLOC_MPSOC_HANDLER
|
||||||
0x44330016;PLOC_SUPERVISOR_HANDLER
|
0x44330016;PLOC_SUPERVISOR_HANDLER
|
||||||
0x444100A2;SOLAR_ARRAY_DEPL_HANDLER
|
0x444100A2;SOLAR_ARRAY_DEPL_HANDLER
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated event translation file. Contains 120 translations.
|
* @brief Auto-generated event translation file. Contains 130 translations.
|
||||||
* @details
|
* @details
|
||||||
* Generated on: 2021-11-25 14:09:00
|
* Generated on: 2021-12-04 11:03:12
|
||||||
*/
|
*/
|
||||||
#include "translateEvents.h"
|
#include "translateEvents.h"
|
||||||
|
|
||||||
@ -125,6 +125,16 @@ const char *INVALID_TC_FRAME_STRING = "INVALID_TC_FRAME";
|
|||||||
const char *INVALID_FAR_STRING = "INVALID_FAR";
|
const char *INVALID_FAR_STRING = "INVALID_FAR";
|
||||||
const char *CARRIER_LOCK_STRING = "CARRIER_LOCK";
|
const char *CARRIER_LOCK_STRING = "CARRIER_LOCK";
|
||||||
const char *BIT_LOCK_PDEC_STRING = "BIT_LOCK_PDEC";
|
const char *BIT_LOCK_PDEC_STRING = "BIT_LOCK_PDEC";
|
||||||
|
const char *IMAGE_FILE_NOT_EXISTS_STRING = "IMAGE_FILE_NOT_EXISTS";
|
||||||
|
const char *SENDING_UPLOAD_PACKET_FAILED_STRING = "SENDING_UPLOAD_PACKET_FAILED";
|
||||||
|
const char *UPLOAD_REQUESTING_MSG_FAILED_STRING = "UPLOAD_REQUESTING_MSG_FAILED";
|
||||||
|
const char *IMAGE_UPLOAD_SUCCESSFUL_STRING = "IMAGE_UPLOAD_SUCCESSFUL";
|
||||||
|
const char *UPLOAD_READING_REPLY_FAILED_STRING = "UPLOAD_READING_REPLY_FAILED";
|
||||||
|
const char *UPLOAD_COM_ERROR_STRING = "UPLOAD_COM_ERROR";
|
||||||
|
const char *NO_REPLY_STRING = "NO_REPLY";
|
||||||
|
const char *INVALID_TYPE_ID_STRING = "INVALID_TYPE_ID";
|
||||||
|
const char *STATUS_ERROR_STRING = "STATUS_ERROR";
|
||||||
|
const char *DEC_ERROR_STRING = "DEC_ERROR";
|
||||||
|
|
||||||
const char * translateEvents(Event event) {
|
const char * translateEvents(Event event) {
|
||||||
switch( (event & 0xffff) ) {
|
switch( (event & 0xffff) ) {
|
||||||
@ -368,6 +378,26 @@ const char * translateEvents(Event event) {
|
|||||||
return CARRIER_LOCK_STRING;
|
return CARRIER_LOCK_STRING;
|
||||||
case(11904):
|
case(11904):
|
||||||
return BIT_LOCK_PDEC_STRING;
|
return BIT_LOCK_PDEC_STRING;
|
||||||
|
case(12000):
|
||||||
|
return IMAGE_FILE_NOT_EXISTS_STRING;
|
||||||
|
case(12001):
|
||||||
|
return SENDING_UPLOAD_PACKET_FAILED_STRING;
|
||||||
|
case(12002):
|
||||||
|
return UPLOAD_REQUESTING_MSG_FAILED_STRING;
|
||||||
|
case(12003):
|
||||||
|
return IMAGE_UPLOAD_SUCCESSFUL_STRING;
|
||||||
|
case(12004):
|
||||||
|
return UPLOAD_READING_REPLY_FAILED_STRING;
|
||||||
|
case(12005):
|
||||||
|
return UPLOAD_COM_ERROR_STRING;
|
||||||
|
case(12006):
|
||||||
|
return NO_REPLY_STRING;
|
||||||
|
case(12007):
|
||||||
|
return INVALID_TYPE_ID_STRING;
|
||||||
|
case(12008):
|
||||||
|
return STATUS_ERROR_STRING;
|
||||||
|
case(12009):
|
||||||
|
return DEC_ERROR_STRING;
|
||||||
default:
|
default:
|
||||||
return "UNKNOWN_EVENT";
|
return "UNKNOWN_EVENT";
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated object translation file.
|
* @brief Auto-generated object translation file.
|
||||||
* @details
|
* @details
|
||||||
* Contains 112 translations.
|
* Contains 113 translations.
|
||||||
* Generated on: 2021-11-22 17:04:51
|
* Generated on: 2021-12-04 11:03:17
|
||||||
*/
|
*/
|
||||||
#include "translateObjects.h"
|
#include "translateObjects.h"
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ const char *RW3_STRING = "RW3";
|
|||||||
const char *MGM_3_RM3100_HANDLER_STRING = "MGM_3_RM3100_HANDLER";
|
const char *MGM_3_RM3100_HANDLER_STRING = "MGM_3_RM3100_HANDLER";
|
||||||
const char *GYRO_3_L3G_HANDLER_STRING = "GYRO_3_L3G_HANDLER";
|
const char *GYRO_3_L3G_HANDLER_STRING = "GYRO_3_L3G_HANDLER";
|
||||||
const char *RW4_STRING = "RW4";
|
const char *RW4_STRING = "RW4";
|
||||||
const char *START_TRACKER_STRING = "START_TRACKER";
|
const char *STAR_TRACKER_STRING = "STAR_TRACKER";
|
||||||
const char *GPS0_HANDLER_STRING = "GPS0_HANDLER";
|
const char *GPS0_HANDLER_STRING = "GPS0_HANDLER";
|
||||||
const char *GPS1_HANDLER_STRING = "GPS1_HANDLER";
|
const char *GPS1_HANDLER_STRING = "GPS1_HANDLER";
|
||||||
const char *IMTQ_HANDLER_STRING = "IMTQ_HANDLER";
|
const char *IMTQ_HANDLER_STRING = "IMTQ_HANDLER";
|
||||||
@ -47,6 +47,7 @@ const char *ACU_HANDLER_STRING = "ACU_HANDLER";
|
|||||||
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
|
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
|
||||||
const char *PLOC_UPDATER_STRING = "PLOC_UPDATER";
|
const char *PLOC_UPDATER_STRING = "PLOC_UPDATER";
|
||||||
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
|
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
|
||||||
|
const char *STR_IMG_LOADER_STRING = "STR_IMG_LOADER";
|
||||||
const char *PLOC_MPSOC_HANDLER_STRING = "PLOC_MPSOC_HANDLER";
|
const char *PLOC_MPSOC_HANDLER_STRING = "PLOC_MPSOC_HANDLER";
|
||||||
const char *PLOC_SUPERVISOR_HANDLER_STRING = "PLOC_SUPERVISOR_HANDLER";
|
const char *PLOC_SUPERVISOR_HANDLER_STRING = "PLOC_SUPERVISOR_HANDLER";
|
||||||
const char *SOLAR_ARRAY_DEPL_HANDLER_STRING = "SOLAR_ARRAY_DEPL_HANDLER";
|
const char *SOLAR_ARRAY_DEPL_HANDLER_STRING = "SOLAR_ARRAY_DEPL_HANDLER";
|
||||||
@ -180,7 +181,7 @@ const char* translateObject(object_id_t object) {
|
|||||||
case 0x44120350:
|
case 0x44120350:
|
||||||
return RW4_STRING;
|
return RW4_STRING;
|
||||||
case 0x44130001:
|
case 0x44130001:
|
||||||
return START_TRACKER_STRING;
|
return STAR_TRACKER_STRING;
|
||||||
case 0x44130045:
|
case 0x44130045:
|
||||||
return GPS0_HANDLER_STRING;
|
return GPS0_HANDLER_STRING;
|
||||||
case 0x44130146:
|
case 0x44130146:
|
||||||
@ -203,6 +204,8 @@ const char* translateObject(object_id_t object) {
|
|||||||
return PLOC_UPDATER_STRING;
|
return PLOC_UPDATER_STRING;
|
||||||
case 0x44330001:
|
case 0x44330001:
|
||||||
return PLOC_MEMORY_DUMPER_STRING;
|
return PLOC_MEMORY_DUMPER_STRING;
|
||||||
|
case 0x44330002:
|
||||||
|
return STR_IMG_LOADER_STRING;
|
||||||
case 0x44330015:
|
case 0x44330015:
|
||||||
return PLOC_MPSOC_HANDLER_STRING;
|
return PLOC_MPSOC_HANDLER_STRING;
|
||||||
case 0x44330016:
|
case 0x44330016:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated event translation file. Contains 120 translations.
|
* @brief Auto-generated event translation file. Contains 130 translations.
|
||||||
* @details
|
* @details
|
||||||
* Generated on: 2021-11-25 14:09:00
|
* Generated on: 2021-12-04 11:03:12
|
||||||
*/
|
*/
|
||||||
#include "translateEvents.h"
|
#include "translateEvents.h"
|
||||||
|
|
||||||
@ -125,6 +125,16 @@ const char *INVALID_TC_FRAME_STRING = "INVALID_TC_FRAME";
|
|||||||
const char *INVALID_FAR_STRING = "INVALID_FAR";
|
const char *INVALID_FAR_STRING = "INVALID_FAR";
|
||||||
const char *CARRIER_LOCK_STRING = "CARRIER_LOCK";
|
const char *CARRIER_LOCK_STRING = "CARRIER_LOCK";
|
||||||
const char *BIT_LOCK_PDEC_STRING = "BIT_LOCK_PDEC";
|
const char *BIT_LOCK_PDEC_STRING = "BIT_LOCK_PDEC";
|
||||||
|
const char *IMAGE_FILE_NOT_EXISTS_STRING = "IMAGE_FILE_NOT_EXISTS";
|
||||||
|
const char *SENDING_UPLOAD_PACKET_FAILED_STRING = "SENDING_UPLOAD_PACKET_FAILED";
|
||||||
|
const char *UPLOAD_REQUESTING_MSG_FAILED_STRING = "UPLOAD_REQUESTING_MSG_FAILED";
|
||||||
|
const char *IMAGE_UPLOAD_SUCCESSFUL_STRING = "IMAGE_UPLOAD_SUCCESSFUL";
|
||||||
|
const char *UPLOAD_READING_REPLY_FAILED_STRING = "UPLOAD_READING_REPLY_FAILED";
|
||||||
|
const char *UPLOAD_COM_ERROR_STRING = "UPLOAD_COM_ERROR";
|
||||||
|
const char *NO_REPLY_STRING = "NO_REPLY";
|
||||||
|
const char *INVALID_TYPE_ID_STRING = "INVALID_TYPE_ID";
|
||||||
|
const char *STATUS_ERROR_STRING = "STATUS_ERROR";
|
||||||
|
const char *DEC_ERROR_STRING = "DEC_ERROR";
|
||||||
|
|
||||||
const char * translateEvents(Event event) {
|
const char * translateEvents(Event event) {
|
||||||
switch( (event & 0xffff) ) {
|
switch( (event & 0xffff) ) {
|
||||||
@ -368,6 +378,26 @@ const char * translateEvents(Event event) {
|
|||||||
return CARRIER_LOCK_STRING;
|
return CARRIER_LOCK_STRING;
|
||||||
case(11904):
|
case(11904):
|
||||||
return BIT_LOCK_PDEC_STRING;
|
return BIT_LOCK_PDEC_STRING;
|
||||||
|
case(12000):
|
||||||
|
return IMAGE_FILE_NOT_EXISTS_STRING;
|
||||||
|
case(12001):
|
||||||
|
return SENDING_UPLOAD_PACKET_FAILED_STRING;
|
||||||
|
case(12002):
|
||||||
|
return UPLOAD_REQUESTING_MSG_FAILED_STRING;
|
||||||
|
case(12003):
|
||||||
|
return IMAGE_UPLOAD_SUCCESSFUL_STRING;
|
||||||
|
case(12004):
|
||||||
|
return UPLOAD_READING_REPLY_FAILED_STRING;
|
||||||
|
case(12005):
|
||||||
|
return UPLOAD_COM_ERROR_STRING;
|
||||||
|
case(12006):
|
||||||
|
return NO_REPLY_STRING;
|
||||||
|
case(12007):
|
||||||
|
return INVALID_TYPE_ID_STRING;
|
||||||
|
case(12008):
|
||||||
|
return STATUS_ERROR_STRING;
|
||||||
|
case(12009):
|
||||||
|
return DEC_ERROR_STRING;
|
||||||
default:
|
default:
|
||||||
return "UNKNOWN_EVENT";
|
return "UNKNOWN_EVENT";
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated object translation file.
|
* @brief Auto-generated object translation file.
|
||||||
* @details
|
* @details
|
||||||
* Contains 112 translations.
|
* Contains 113 translations.
|
||||||
* Generated on: 2021-11-22 17:04:51
|
* Generated on: 2021-12-04 11:03:17
|
||||||
*/
|
*/
|
||||||
#include "translateObjects.h"
|
#include "translateObjects.h"
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ const char *RW3_STRING = "RW3";
|
|||||||
const char *MGM_3_RM3100_HANDLER_STRING = "MGM_3_RM3100_HANDLER";
|
const char *MGM_3_RM3100_HANDLER_STRING = "MGM_3_RM3100_HANDLER";
|
||||||
const char *GYRO_3_L3G_HANDLER_STRING = "GYRO_3_L3G_HANDLER";
|
const char *GYRO_3_L3G_HANDLER_STRING = "GYRO_3_L3G_HANDLER";
|
||||||
const char *RW4_STRING = "RW4";
|
const char *RW4_STRING = "RW4";
|
||||||
const char *START_TRACKER_STRING = "START_TRACKER";
|
const char *STAR_TRACKER_STRING = "STAR_TRACKER";
|
||||||
const char *GPS0_HANDLER_STRING = "GPS0_HANDLER";
|
const char *GPS0_HANDLER_STRING = "GPS0_HANDLER";
|
||||||
const char *GPS1_HANDLER_STRING = "GPS1_HANDLER";
|
const char *GPS1_HANDLER_STRING = "GPS1_HANDLER";
|
||||||
const char *IMTQ_HANDLER_STRING = "IMTQ_HANDLER";
|
const char *IMTQ_HANDLER_STRING = "IMTQ_HANDLER";
|
||||||
@ -47,6 +47,7 @@ const char *ACU_HANDLER_STRING = "ACU_HANDLER";
|
|||||||
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
|
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
|
||||||
const char *PLOC_UPDATER_STRING = "PLOC_UPDATER";
|
const char *PLOC_UPDATER_STRING = "PLOC_UPDATER";
|
||||||
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
|
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
|
||||||
|
const char *STR_IMG_LOADER_STRING = "STR_IMG_LOADER";
|
||||||
const char *PLOC_MPSOC_HANDLER_STRING = "PLOC_MPSOC_HANDLER";
|
const char *PLOC_MPSOC_HANDLER_STRING = "PLOC_MPSOC_HANDLER";
|
||||||
const char *PLOC_SUPERVISOR_HANDLER_STRING = "PLOC_SUPERVISOR_HANDLER";
|
const char *PLOC_SUPERVISOR_HANDLER_STRING = "PLOC_SUPERVISOR_HANDLER";
|
||||||
const char *SOLAR_ARRAY_DEPL_HANDLER_STRING = "SOLAR_ARRAY_DEPL_HANDLER";
|
const char *SOLAR_ARRAY_DEPL_HANDLER_STRING = "SOLAR_ARRAY_DEPL_HANDLER";
|
||||||
@ -180,7 +181,7 @@ const char* translateObject(object_id_t object) {
|
|||||||
case 0x44120350:
|
case 0x44120350:
|
||||||
return RW4_STRING;
|
return RW4_STRING;
|
||||||
case 0x44130001:
|
case 0x44130001:
|
||||||
return START_TRACKER_STRING;
|
return STAR_TRACKER_STRING;
|
||||||
case 0x44130045:
|
case 0x44130045:
|
||||||
return GPS0_HANDLER_STRING;
|
return GPS0_HANDLER_STRING;
|
||||||
case 0x44130146:
|
case 0x44130146:
|
||||||
@ -203,6 +204,8 @@ const char* translateObject(object_id_t object) {
|
|||||||
return PLOC_UPDATER_STRING;
|
return PLOC_UPDATER_STRING;
|
||||||
case 0x44330001:
|
case 0x44330001:
|
||||||
return PLOC_MEMORY_DUMPER_STRING;
|
return PLOC_MEMORY_DUMPER_STRING;
|
||||||
|
case 0x44330002:
|
||||||
|
return STR_IMG_LOADER_STRING;
|
||||||
case 0x44330015:
|
case 0x44330015:
|
||||||
return PLOC_MPSOC_HANDLER_STRING;
|
return PLOC_MPSOC_HANDLER_STRING;
|
||||||
case 0x44330016:
|
case 0x44330016:
|
||||||
|
@ -588,7 +588,6 @@ ReturnValue_t pst::pstUart(FixedTimeslotTaskIF *thisSequence) {
|
|||||||
thisSequence->addSlot(objects::PLOC_UPDATER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
thisSequence->addSlot(objects::PLOC_UPDATER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
thisSequence->addSlot(objects::PLOC_MEMORY_DUMPER, length * 0,
|
thisSequence->addSlot(objects::PLOC_MEMORY_DUMPER, length * 0,
|
||||||
DeviceHandlerIF::PERFORM_OPERATION);
|
DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
thisSequence->addSlot(objects::STR_IMG_HELPER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
|
||||||
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
||||||
thisSequence->addSlot(objects::PLOC_SUPERVISOR_HANDLER, length * 0,
|
thisSequence->addSlot(objects::PLOC_SUPERVISOR_HANDLER, length * 0,
|
||||||
DeviceHandlerIF::PERFORM_OPERATION);
|
DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
@ -650,11 +649,11 @@ ReturnValue_t pst::pstUart(FixedTimeslotTaskIF *thisSequence) {
|
|||||||
|
|
||||||
#if OBSW_ADD_STAR_TRACKER == 1
|
#if OBSW_ADD_STAR_TRACKER == 1
|
||||||
uartPstEmpty = false;
|
uartPstEmpty = false;
|
||||||
thisSequence->addSlot(objects::START_TRACKER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
thisSequence->addSlot(objects::STAR_TRACKER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
thisSequence->addSlot(objects::START_TRACKER, length * 0.2, DeviceHandlerIF::SEND_WRITE);
|
thisSequence->addSlot(objects::STAR_TRACKER, length * 0.2, DeviceHandlerIF::SEND_WRITE);
|
||||||
thisSequence->addSlot(objects::START_TRACKER, length * 0.4, DeviceHandlerIF::GET_WRITE);
|
thisSequence->addSlot(objects::STAR_TRACKER, length * 0.4, DeviceHandlerIF::GET_WRITE);
|
||||||
thisSequence->addSlot(objects::START_TRACKER, length * 0.6, DeviceHandlerIF::SEND_READ);
|
thisSequence->addSlot(objects::STAR_TRACKER, length * 0.6, DeviceHandlerIF::SEND_READ);
|
||||||
thisSequence->addSlot(objects::START_TRACKER, length * 0.8, DeviceHandlerIF::GET_READ);
|
thisSequence->addSlot(objects::STAR_TRACKER, length * 0.8, DeviceHandlerIF::GET_READ);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(uartPstEmpty) {
|
if(uartPstEmpty) {
|
||||||
|
@ -262,7 +262,7 @@ bool PdecHandler::checkFrameAna(uint32_t pdecFar) {
|
|||||||
}
|
}
|
||||||
case(FrameAna_t::FRAME_DIRTY): {
|
case(FrameAna_t::FRAME_DIRTY): {
|
||||||
triggerEvent(INVALID_TC_FRAME, FRAME_DIRTY);
|
triggerEvent(INVALID_TC_FRAME, FRAME_DIRTY);
|
||||||
sif::debug << "PdecHandler::checkFrameAna: Frame dirty" << std::endl;
|
sif::warning << "PdecHandler::checkFrameAna: Frame dirty" << std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case(FrameAna_t::FRAME_ILLEGAL): {
|
case(FrameAna_t::FRAME_ILLEGAL): {
|
||||||
@ -314,50 +314,50 @@ void PdecHandler::handleIReason(uint32_t pdecFar, ReturnValue_t parameter1) {
|
|||||||
switch(ireason) {
|
switch(ireason) {
|
||||||
case(IReason_t::NO_REPORT): {
|
case(IReason_t::NO_REPORT): {
|
||||||
triggerEvent(INVALID_TC_FRAME, parameter1, NO_REPORT);
|
triggerEvent(INVALID_TC_FRAME, parameter1, NO_REPORT);
|
||||||
sif::debug << "PdecHandler::handleIReason: No illegal report" << std::endl;
|
sif::info << "PdecHandler::handleIReason: No illegal report" << std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case(IReason_t::ERROR_VERSION_NUMBER): {
|
case(IReason_t::ERROR_VERSION_NUMBER): {
|
||||||
triggerEvent(INVALID_TC_FRAME, parameter1, ERROR_VERSION_NUMBER);
|
triggerEvent(INVALID_TC_FRAME, parameter1, ERROR_VERSION_NUMBER);
|
||||||
sif::debug << "PdecHandler::handleIReason: Error in version number and reserved A and B "
|
sif::info << "PdecHandler::handleIReason: Error in version number and reserved A and B "
|
||||||
<< "fields" << std::endl;
|
<< "fields" << std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case(IReason_t::ILLEGAL_COMBINATION): {
|
case(IReason_t::ILLEGAL_COMBINATION): {
|
||||||
triggerEvent(INVALID_TC_FRAME, parameter1, ILLEGAL_COMBINATION);
|
triggerEvent(INVALID_TC_FRAME, parameter1, ILLEGAL_COMBINATION);
|
||||||
sif::debug << "PdecHandler::handleIReason: Illegal combination (AC) of bypass and control "
|
sif::info << "PdecHandler::handleIReason: Illegal combination (AC) of bypass and control "
|
||||||
<< "command flags" << std::endl;
|
<< "command flags" << std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case(IReason_t::INVALID_SC_ID): {
|
case(IReason_t::INVALID_SC_ID): {
|
||||||
triggerEvent(INVALID_TC_FRAME, parameter1, INVALID_SC_ID);
|
triggerEvent(INVALID_TC_FRAME, parameter1, INVALID_SC_ID);
|
||||||
sif::debug << "PdecHandler::handleIReason: Invalid spacecraft identifier " << std::endl;
|
sif::info << "PdecHandler::handleIReason: Invalid spacecraft identifier " << std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case(IReason_t::INVALID_VC_ID_MSB): {
|
case(IReason_t::INVALID_VC_ID_MSB): {
|
||||||
triggerEvent(INVALID_TC_FRAME, parameter1, INVALID_VC_ID_MSB);
|
triggerEvent(INVALID_TC_FRAME, parameter1, INVALID_VC_ID_MSB);
|
||||||
sif::debug << "PdecHandler::handleIReason: VC identifier bit 0 to 4 did not match "
|
sif::info << "PdecHandler::handleIReason: VC identifier bit 0 to 4 did not match "
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case(IReason_t::INVALID_VC_ID_LSB): {
|
case(IReason_t::INVALID_VC_ID_LSB): {
|
||||||
triggerEvent(INVALID_TC_FRAME, parameter1, INVALID_VC_ID_LSB);
|
triggerEvent(INVALID_TC_FRAME, parameter1, INVALID_VC_ID_LSB);
|
||||||
sif::debug << "PdecHandler::handleIReason: VC identifier bit 5 did not match " << std::endl;
|
sif::info << "PdecHandler::handleIReason: VC identifier bit 5 did not match " << std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case(IReason_t::NS_NOT_ZERO): {
|
case(IReason_t::NS_NOT_ZERO): {
|
||||||
triggerEvent(INVALID_TC_FRAME, parameter1, NS_NOT_ZERO);
|
triggerEvent(INVALID_TC_FRAME, parameter1, NS_NOT_ZERO);
|
||||||
sif::debug << "PdecHandler::handleIReason: N(S) of BC or BD frame not set to all zeros"
|
sif::info << "PdecHandler::handleIReason: N(S) of BC or BD frame not set to all zeros"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case(IReason_t::INCORRECT_BC_CC): {
|
case(IReason_t::INCORRECT_BC_CC): {
|
||||||
triggerEvent(INVALID_TC_FRAME, parameter1, INVALID_BC_CC);
|
triggerEvent(INVALID_TC_FRAME, parameter1, INVALID_BC_CC);
|
||||||
sif::debug << "PdecHandler::handleIReason: Invalid BC control command format" << std::endl;
|
sif::info << "PdecHandler::handleIReason: Invalid BC control command format" << std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
sif::debug << "PdecHandler::handleIReason: Invalid reason id" << std::endl;
|
sif::info << "PdecHandler::handleIReason: Invalid reason id" << std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -373,7 +373,7 @@ void PdecHandler::handleNewTc() {
|
|||||||
}
|
}
|
||||||
#if OBSW_DEBUG_PDEC_HANDLER == 1
|
#if OBSW_DEBUG_PDEC_HANDLER == 1
|
||||||
unsigned int mapId = tcSegment[0] & MAP_ID_MASK;
|
unsigned int mapId = tcSegment[0] & MAP_ID_MASK;
|
||||||
sif::debug << "PdecHandler::handleNewTc: Received TC segment with map ID " << mapId
|
sif::info << "PdecHandler::handleNewTc: Received TC segment with map ID " << mapId
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
printTC(tcLength);
|
printTC(tcLength);
|
||||||
#endif /* OBSW_DEBUG_PDEC_HANDLER */
|
#endif /* OBSW_DEBUG_PDEC_HANDLER */
|
||||||
@ -460,7 +460,7 @@ void PdecHandler::printTC(uint32_t tcLength) {
|
|||||||
tcSegmentStream << std::setfill('0') << std::setw(2) << std::hex
|
tcSegmentStream << std::setfill('0') << std::setw(2) << std::hex
|
||||||
<< static_cast<unsigned int>(tcSegment[idx]);
|
<< static_cast<unsigned int>(tcSegment[idx]);
|
||||||
}
|
}
|
||||||
sif::debug << tcSegmentStream.str() << std::endl;
|
sif::info << tcSegmentStream.str() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t PdecHandler::calcMapAddrEntry(uint8_t moduleId) {
|
uint8_t PdecHandler::calcMapAddrEntry(uint8_t moduleId) {
|
||||||
|
@ -14,7 +14,6 @@ target_sources(${TARGET_NAME} PUBLIC
|
|||||||
RadiationSensorHandler.cpp
|
RadiationSensorHandler.cpp
|
||||||
GyroADIS16507Handler.cpp
|
GyroADIS16507Handler.cpp
|
||||||
RwHandler.cpp
|
RwHandler.cpp
|
||||||
StarTrackerHandler.cpp
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2
tmtc
2
tmtc
@ -1 +1 @@
|
|||||||
Subproject commit bcec5df6e2636e3751f7a7eb103b893dc4581c10
|
Subproject commit 7b01165ff937e45e052caeb550e622a8b9df6ee2
|
Loading…
x
Reference in New Issue
Block a user