command to reset error signal

This commit is contained in:
Jakob Meier
2021-12-10 10:07:23 +01:00
parent 1895d7c3db
commit f9581f3100
9 changed files with 169 additions and 59 deletions

View File

@ -49,7 +49,9 @@ ReturnValue_t StarTrackerHandler::initialize() {
if (result != RETURN_OK) {
return result;
}
result = manager->subscribeToAllEventsFrom(eventQueue->getId(), objects::STR_IMG_LOADER);
result = manager->subscribeToEventRange(eventQueue->getId(),
event::getEventId(StrImageLoader::IMAGE_UPLOAD_FAILED),
event::getEventId(StrImageLoader::IMAGE_DOWNLOAD_SUCCESSFUL));
if (result != RETURN_OK) {
#if FSFW_CPP_OSTREAM_ENABLED == 1
sif::warning << "StarTrackerHandler::initialize: Failed to subscribe to events form image"
@ -58,7 +60,10 @@ ReturnValue_t StarTrackerHandler::initialize() {
return ObjectManagerIF::CHILD_INIT_FAILED;
}
strImageLoader->setComIF(communicationInterface);
result = strImageLoader->setComIF(communicationInterface);
if (result != RETURN_OK) {
return ObjectManagerIF::CHILD_INIT_FAILED;
}
strImageLoader->setComCookie(comCookie);
return RETURN_OK;
}
@ -68,6 +73,11 @@ ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueu
ReturnValue_t result = RETURN_OK;
if (actionId == StarTracker::STOP_IMAGE_LOADER) {
strImageLoader->stopProcess();
return EXECUTION_FINISHED;
}
if (imageLoaderExecuting == true) {
return IMAGE_LOADER_EXECUTING;
}
@ -176,7 +186,7 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
return RETURN_OK;
}
case (StarTracker::TAKE_IMAGE): {
prepareTakeImageCommand();
prepareTakeImageCommand(commandData);
return RETURN_OK;
}
case (StarTracker::SUBSCRIBE_TO_TM): {
@ -191,6 +201,10 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
prepareTemperatureRequest();
return RETURN_OK;
}
case (StarTracker::RESET_ERROR): {
prepareErrorResetRequest();
return RETURN_OK;
}
case (StarTracker::LIMITS): {
Limits limits;
result = prepareParamCommand(commandData, commandDataLen, limits);
@ -294,6 +308,8 @@ void StarTrackerHandler::fillCommandAndReplyMap() {
StarTracker::MAX_FRAME_SIZE * 2 + 2);
this->insertInCommandAndReplyMap(StarTracker::TAKE_IMAGE, 3, nullptr,
StarTracker::MAX_FRAME_SIZE * 2 + 2);
this->insertInCommandAndReplyMap(StarTracker::RESET_ERROR, 3, nullptr,
StarTracker::MAX_FRAME_SIZE * 2 + 2);
}
ReturnValue_t StarTrackerHandler::scanForReply(const uint8_t *start, size_t remainingSize,
@ -366,6 +382,10 @@ ReturnValue_t StarTrackerHandler::interpretDeviceReply(DeviceCommandId_t id, con
result = handleActionReply();
break;
}
case (StarTracker::RESET_ERROR): {
result = handleActionReply();
break;
}
case (StarTracker::TAKE_IMAGE): {
result = handleActionReply();
break;
@ -535,6 +555,10 @@ ReturnValue_t StarTrackerHandler::scanForActionReply(DeviceCommandId_t *foundId)
*foundId = StarTracker::UPLOAD_IMAGE;
break;
}
case (StarTracker::ID::ERROR_RESET): {
*foundId = StarTracker::RESET_ERROR;
break;
}
default:
sif::warning << "StarTrackerHandler::scanForParameterReply: Unknown parameter reply id"
<< std::endl;
@ -710,9 +734,10 @@ void StarTrackerHandler::prepareRebootCommand() {
rawPacketLen = dataLinkLayer.getEncodedLength();
}
void StarTrackerHandler::prepareTakeImageCommand() {
void StarTrackerHandler::prepareTakeImageCommand(const uint8_t* commandData) {
uint32_t length = 0;
struct CameraActionRequest camReq;
camReq.actionid = *commandData;
arc_pack_camera_action_req(&camReq, commandBuffer, &length);
dataLinkLayer.encodeFrame(commandBuffer, length);
rawPacket = dataLinkLayer.getEncodedFrame();
@ -761,6 +786,15 @@ void StarTrackerHandler::prepareTemperatureRequest() {
rawPacketLen = dataLinkLayer.getEncodedLength();
}
void StarTrackerHandler::prepareErrorResetRequest() {
uint32_t length = 0;
struct ResetErrorSignalActionRequest req;
arc_pack_reseterrorsignal_action_req(&req, commandBuffer, &length);
dataLinkLayer.encodeFrame(commandBuffer, length);
rawPacket = dataLinkLayer.getEncodedFrame();
rawPacketLen = dataLinkLayer.getEncodedLength();
}
ReturnValue_t StarTrackerHandler::prepareParamCommand(const uint8_t* commandData,
size_t commandDataLen, ArcsecJsonParamBase& paramSet) {
ReturnValue_t result = RETURN_OK;