i hate this stupid class
All checks were successful
EIVE/eive-obsw/pipeline/pr-main This commit looks good

This commit is contained in:
Robin Müller 2023-07-12 17:59:07 +02:00
parent 735c60d4c2
commit e9d48687d7
Signed by: muellerr
GPG Key ID: 407F9B00F858F270

View File

@ -1,3 +1,4 @@
#include <fsfw/globalfunctions/arrayprinter.h>
#include <fsfw/ipc/QueueFactory.h> #include <fsfw/ipc/QueueFactory.h>
#include <fsfw/timemanager/Stopwatch.h> #include <fsfw/timemanager/Stopwatch.h>
#include <mission/acs/str/StarTrackerHandler.h> #include <mission/acs/str/StarTrackerHandler.h>
@ -466,12 +467,14 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi
} }
case (startracker::SET_TIME): { case (startracker::SET_TIME): {
SetTimeActionRequest setTimeRequest; SetTimeActionRequest setTimeRequest;
time_t epoch;
timeval tv; timeval tv;
Clock::getClock(&tv); Clock::getClock(&tv);
epoch = tv.tv_sec;
setTimeRequest.unixTime = epoch;
arc_pack_settime_action_req(&setTimeRequest, commandBuffer, &rawPacketLen); arc_pack_settime_action_req(&setTimeRequest, commandBuffer, &rawPacketLen);
size_t serLen = 0;
// Time in milliseconds. Manual serialization because arcsec API ignores endianness.
SerializeAdapter::serialize(&setTimeRequest.unixTime, commandBuffer + 2, &serLen,
sizeof(commandBuffer), SerializeIF::Endianness::NETWORK);
rawPacket = commandBuffer;
return returnvalue::OK; return returnvalue::OK;
} }
case (startracker::REQ_TIME): { case (startracker::REQ_TIME): {
@ -886,6 +889,7 @@ ReturnValue_t StarTrackerHandler::scanForReply(const uint8_t* start, size_t rema
switch (startracker::getReplyFrameType(start)) { switch (startracker::getReplyFrameType(start)) {
case TMTC_ACTIONREPLY: { case TMTC_ACTIONREPLY: {
*foundLen = remainingSize; *foundLen = remainingSize;
arrayprinter::print(start, remainingSize);
return scanForActionReply(startracker::getId(start), foundId); return scanForActionReply(startracker::getId(start), foundId);
break; break;
} }
@ -918,6 +922,10 @@ ReturnValue_t StarTrackerHandler::interpretDeviceReply(DeviceCommandId_t id,
ReturnValue_t result = returnvalue::OK; ReturnValue_t result = returnvalue::OK;
switch (id) { switch (id) {
case (startracker::SET_TIME): {
result = handleActionReply(packet);
break;
}
case (startracker::REQ_TIME): { case (startracker::REQ_TIME): {
result = handleTm(packet, timeSet, startracker::TimeSet::SIZE, "REQ_TIME"); result = handleTm(packet, timeSet, startracker::TimeSet::SIZE, "REQ_TIME");
break; break;
@ -1897,14 +1905,18 @@ ReturnValue_t StarTrackerHandler::handleSetParamReply(const uint8_t* rawFrame) {
ReturnValue_t StarTrackerHandler::handleActionReply(const uint8_t* rawFrame) { ReturnValue_t StarTrackerHandler::handleActionReply(const uint8_t* rawFrame) {
uint8_t status = startracker::getStatusField(rawFrame); uint8_t status = startracker::getStatusField(rawFrame);
ReturnValue_t result = returnvalue::OK;
if (status != startracker::STATUS_OK) { if (status != startracker::STATUS_OK) {
sif::warning << "StarTrackerHandler::handleActionReply: Failed to execute action " sif::warning << "StarTrackerHandler::handleActionReply: Failed to execute action "
<< "command with action ID " << "command with action ID "
<< static_cast<unsigned int>(*(rawFrame + ACTION_ID_OFFSET)) << " and status " << static_cast<unsigned int>(*(rawFrame + ACTION_ID_OFFSET)) << " and status "
<< static_cast<unsigned int>(status) << std::endl; << static_cast<unsigned int>(status) << std::endl;
return ACTION_FAILED; result = ACTION_FAILED;
} }
return returnvalue::OK; if (internalState != InternalState::IDLE) {
handleStartup(*rawFrame, *(rawFrame + PARAMETER_ID_OFFSET));
}
return result;
} }
ReturnValue_t StarTrackerHandler::handleChecksumReply(const uint8_t* rawFrame) { ReturnValue_t StarTrackerHandler::handleChecksumReply(const uint8_t* rawFrame) {