diff --git a/CMakeLists.txt b/CMakeLists.txt index 54b43f47..c67fb75a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -93,7 +93,7 @@ set(OBSW_ADD_BPX_BATTERY_HANDLER 1 CACHE STRING "Add BPX battery module") set(OBSW_ADD_STAR_TRACKER - ${INIT_VAL} + 1 CACHE STRING "Add Startracker module") set(OBSW_ADD_SUN_SENSORS ${INIT_VAL} diff --git a/linux/acs/StrComHandler.cpp b/linux/acs/StrComHandler.cpp index 6fed7317..f070efd4 100644 --- a/linux/acs/StrComHandler.cpp +++ b/linux/acs/StrComHandler.cpp @@ -2,6 +2,7 @@ #include #include +#include #include #include #include @@ -23,6 +24,8 @@ extern "C" { using namespace returnvalue; +static constexpr bool PACKET_WIRETAPPING = false; + StrComHandler::StrComHandler(object_id_t objectId) : SystemObject(objectId) { lock = MutexFactory::instance()->createMutex(); semaphore.acquire(); @@ -680,6 +683,10 @@ ReturnValue_t StrComHandler::sendMessage(CookieIF* cookie, const uint8_t* sendDa const uint8_t* txFrame; size_t frameLen; datalinkLayer.encodeFrame(sendData, sendLen, &txFrame, frameLen); + if(PACKET_WIRETAPPING) { + sif::debug << "Sendign STR frame" << std::endl; + arrayprinter::print(txFrame, frameLen); + } ssize_t bytesWritten = write(serialPort, txFrame, frameLen); if (bytesWritten != static_cast(frameLen)) { sif::warning << "StrComHandler: Sending packet failed" << std::endl; @@ -782,8 +789,10 @@ ReturnValue_t StrComHandler::handleSerialReception() { << std::endl; return FAILED; } else if (bytesRead > 0) { - // sif::info << "Received " << bytesRead << " bytes from the STR" << std::endl; - // arrayprinter::print(recBuf.data(), bytesRead); + if(PACKET_WIRETAPPING) { + sif::info << "Received " << bytesRead << " bytes from the STR" << std::endl; + arrayprinter::print(recBuf.data(), bytesRead); + } datalinkLayer.feedData(recBuf.data(), bytesRead); } return OK; @@ -797,6 +806,10 @@ ReturnValue_t StrComHandler::readOneReply(uint32_t failParameter) { handleSerialReception(); result = datalinkLayer.checkRingBufForFrame(&replyPtr, replyLen); if (result == returnvalue::OK) { + if(PACKET_WIRETAPPING) { + sif::debug << "Received STR reply frame" << std::endl; + arrayprinter::print(replyPtr, replyLen); + } return returnvalue::OK; } else if (result != ArcsecDatalinkLayer::DEC_IN_PROGRESS) { triggerEvent(STR_HELPER_DEC_ERROR, result, failParameter); diff --git a/mission/acs/str/StarTrackerHandler.cpp b/mission/acs/str/StarTrackerHandler.cpp index dbcaf940..e548b485 100644 --- a/mission/acs/str/StarTrackerHandler.cpp +++ b/mission/acs/str/StarTrackerHandler.cpp @@ -352,7 +352,7 @@ ReturnValue_t StarTrackerHandler::buildTransitionDeviceCommand(DeviceCommandId_t } case (FwBootState::SET_TIME): { bootState = FwBootState::WAIT_FOR_EXECUTION; - *id = startracker::SET_TIME; + *id = startracker::SET_TIME_FROM_SYS_TIME; return buildCommandFromCommand(*id, nullptr, 0); } case (FwBootState::LOGLEVEL): { @@ -465,7 +465,8 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi preparePingRequest(); return returnvalue::OK; } - case (startracker::SET_TIME): { + case (startracker::SET_TIME_FROM_SYS_TIME): { + // Might be buggy, need more answers from arcsec... SetTimeActionRequest setTimeRequest{}; timeval tv; Clock::getClock(&tv); @@ -674,7 +675,7 @@ void StarTrackerHandler::fillCommandAndReplyMap() { startracker::MAX_FRAME_SIZE * 2 + 2); this->insertInCommandAndReplyMap(startracker::LOGLEVEL, 3, nullptr, startracker::MAX_FRAME_SIZE * 2 + 2); - this->insertInCommandAndReplyMap(startracker::SET_TIME, 3, nullptr, + this->insertInCommandAndReplyMap(startracker::SET_TIME_FROM_SYS_TIME, 3, nullptr, startracker::MAX_FRAME_SIZE * 2 + 2); this->insertInCommandAndReplyMap(startracker::LOGSUBSCRIPTION, 3, nullptr, startracker::MAX_FRAME_SIZE * 2 + 2); @@ -923,7 +924,7 @@ ReturnValue_t StarTrackerHandler::interpretDeviceReply(DeviceCommandId_t id, ReturnValue_t result = returnvalue::OK; switch (id) { - case (startracker::SET_TIME): { + case (startracker::SET_TIME_FROM_SYS_TIME): { result = handleActionReply(packet); break; } @@ -1394,7 +1395,7 @@ ReturnValue_t StarTrackerHandler::scanForActionReply(uint8_t replyId, DeviceComm break; } case (ARC_ACTION_REQ_SETTIME_ID): { - *foundId = startracker::SET_TIME; + *foundId = startracker::SET_TIME_FROM_SYS_TIME; break; } case (startracker::ID::CHECKSUM): { @@ -2013,7 +2014,7 @@ ReturnValue_t StarTrackerHandler::checkProgram() { startupState = StartupState::BOOT_BOOTLOADER; } if (bootState == FwBootState::VERIFY_BOOT) { - bootState = FwBootState::SET_TIME; + bootState = FwBootState::LOGLEVEL; } else if (internalState == InternalState::BOOTLOADER_CHECK) { triggerEvent(BOOTING_BOOTLOADER_FAILED_EVENT); internalState = InternalState::FAILED_BOOTLOADER_BOOT; diff --git a/mission/acs/str/strHelpers.h b/mission/acs/str/strHelpers.h index 21038a91..894ceac5 100644 --- a/mission/acs/str/strHelpers.h +++ b/mission/acs/str/strHelpers.h @@ -326,7 +326,7 @@ static const DeviceCommandId_t DEBUG_CAMERA = 83; static const DeviceCommandId_t FIRMWARE_UPDATE = 84; static const DeviceCommandId_t DISABLE_TIMESTAMP_GENERATION = 85; static const DeviceCommandId_t ENABLE_TIMESTAMP_GENERATION = 86; -static constexpr DeviceCommandId_t SET_TIME = 87; +static constexpr DeviceCommandId_t SET_TIME_FROM_SYS_TIME = 87; static const DeviceCommandId_t NONE = 0xFFFFFFFF; static const uint32_t VERSION_SET_ID = REQ_VERSION; @@ -650,7 +650,7 @@ class SolutionSet : public StaticLocalDataSet { // Ticks timestamp lp_var_t ticks = lp_var_t(sid.objectId, PoolIds::TICKS_SOLUTION_SET, this); /// Unix time stamp - lp_var_t time = lp_var_t(sid.objectId, PoolIds::TIME_SOLUTION_SET, this); + lp_var_t timeUs = lp_var_t(sid.objectId, PoolIds::TIME_SOLUTION_SET, this); // Calibrated quaternion (takes into account the mounting quaternion), typically same as // track q values lp_var_t caliQw = lp_var_t(sid.objectId, PoolIds::CALI_QW, this); @@ -695,7 +695,7 @@ class SolutionSet : public StaticLocalDataSet { void printSet() { PoolReadGuard rg(this); sif::info << "SolutionSet::printSet: Ticks: " << this->ticks << std::endl; - sif::info << "SolutionSet::printSet: Time: " << this->time << std::endl; + sif::info << "SolutionSet::printSet: Time: " << this->timeUs << std::endl; sif::info << "SolutionSet::printSet: Calibrated quaternion Qw: " << this->caliQw << std::endl; sif::info << "SolutionSet::printSet: Calibrated quaternion Qx: " << this->caliQx << std::endl; sif::info << "SolutionSet::printSet: Calibrated quaternion Qy: " << this->caliQy << std::endl; diff --git a/tmtc b/tmtc index 9be81f17..1f2f2aac 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 9be81f1725004b55e937718fbaddc4f4e4e74081 +Subproject commit 1f2f2aac13b0b32c22f0a75e557743ad32f7dc70