From e97970ef640dffe659309e46f92bd904de137149 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 29 Feb 2024 11:51:06 +0100 Subject: [PATCH] that should be all necessary changes --- linux/acs/StrComHandler.cpp | 16 ++++++++-------- mission/acs/str/ArcsecDatalinkLayer.cpp | 4 ++-- mission/acs/str/StarTrackerHandler.cpp | 25 +++++++++++++++++-------- mission/acs/str/strHelpers.h | 1 + thirdparty/sagittactl | 2 +- 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/linux/acs/StrComHandler.cpp b/linux/acs/StrComHandler.cpp index 9c5e045f..65a1b5a4 100644 --- a/linux/acs/StrComHandler.cpp +++ b/linux/acs/StrComHandler.cpp @@ -270,7 +270,7 @@ ReturnValue_t StrComHandler::performImageDownload() { file.close(); return returnvalue::OK; } - arc_pack_download_action_req(&downloadReq, cmdBuf.data(), &size); + prv_arc_pack_download_action_req(&downloadReq, cmdBuf.data(), &size); result = sendAndRead(size, downloadReq.position); if (result != returnvalue::OK) { if (retries < CONFIG_MAX_DOWNLOAD_RETRIES) { @@ -349,7 +349,7 @@ ReturnValue_t StrComHandler::performImageUpload() { } file.seekg(uploadReq.position * SIZE_IMAGE_PART, file.beg); file.read(reinterpret_cast(uploadReq.data), SIZE_IMAGE_PART); - arc_pack_upload_action_req(&uploadReq, cmdBuf.data(), &size); + prv_arc_pack_upload_action_req(&uploadReq, cmdBuf.data(), &size); result = sendAndRead(size, uploadReq.position); if (result != returnvalue::OK) { return returnvalue::FAILED; @@ -375,7 +375,7 @@ ReturnValue_t StrComHandler::performImageUpload() { file.seekg(fullChunks * SIZE_IMAGE_PART, file.beg); file.read(reinterpret_cast(uploadReq.data), remainder); file.close(); - arc_pack_upload_action_req(&uploadReq, cmdBuf.data(), &size); + prv_arc_pack_upload_action_req(&uploadReq, cmdBuf.data(), &size); result = sendAndRead(size, uploadReq.position); if (result != returnvalue::OK) { return returnvalue::FAILED; @@ -445,7 +445,7 @@ ReturnValue_t StrComHandler::performFlashWrite() { bytesWrittenInRegion = 0; } req.address = bytesWrittenInRegion; - arc_pack_write_action_req(&req, cmdBuf.data(), &size); + prv_arc_pack_write_action_req(&req, cmdBuf.data(), &size); result = sendAndRead(size, req.address); if (result != returnvalue::OK) { return result; @@ -488,7 +488,7 @@ ReturnValue_t StrComHandler::performFlashWrite() { req.length = remainingBytes; totalBytesWritten += CHUNK_SIZE; bytesWrittenInRegion += remainingBytes; - arc_pack_write_action_req(&req, cmdBuf.data(), &size); + prv_arc_pack_write_action_req(&req, cmdBuf.data(), &size); result = sendAndRead(size, req.address); if (result != returnvalue::OK) { return result; @@ -536,7 +536,7 @@ ReturnValue_t StrComHandler::performFlashRead() { } else { req.length = CHUNK_SIZE; } - arc_pack_read_action_req(&req, cmdBuf.data(), &size); + prv_arc_pack_read_action_req(&req, cmdBuf.data(), &size); result = sendAndRead(size, req.address); if (result != returnvalue::OK) { if (retries < CONFIG_MAX_DOWNLOAD_RETRIES) { @@ -752,7 +752,7 @@ ReturnValue_t StrComHandler::unlockAndEraseRegions(uint32_t from, uint32_t to) { for (uint32_t idx = from; idx < to; idx++) { unlockReq.region = idx; unlockReq.code = startracker::region_secrets::SECRETS[idx]; - arc_pack_unlock_action_req(&unlockReq, cmdBuf.data(), &size); + prv_arc_pack_unlock_action_req(&unlockReq, cmdBuf.data(), &size); result = sendAndRead(size, unlockReq.region); if (result != returnvalue::OK) { return result; @@ -764,7 +764,7 @@ ReturnValue_t StrComHandler::unlockAndEraseRegions(uint32_t from, uint32_t to) { return result; } eraseReq.region = idx; - arc_pack_erase_action_req(&eraseReq, cmdBuf.data(), &size); + prv_arc_pack_erase_action_req(&eraseReq, cmdBuf.data(), &size); result = sendAndRead(size, eraseReq.region); if (result != returnvalue::OK) { } diff --git a/mission/acs/str/ArcsecDatalinkLayer.cpp b/mission/acs/str/ArcsecDatalinkLayer.cpp index c1082fc7..3a645472 100644 --- a/mission/acs/str/ArcsecDatalinkLayer.cpp +++ b/mission/acs/str/ArcsecDatalinkLayer.cpp @@ -32,7 +32,7 @@ ReturnValue_t ArcsecDatalinkLayer::checkRingBufForFrame(const uint8_t** decodedF size_t encodedDataSize = 0; slip_error_t slipError = slip_decode_frame(decodedRxFrame, &rxFrameSize, rxAnalysisBuffer + startIdx, - idx - startIdx + 1, &encodedDataSize, ARC_DEF_SAGITTA_SLIP_ID); + idx - startIdx + 1, &encodedDataSize, ARC_DEF_SAGITTA_SLIP_ID, 0); decodeRingBuf.deleteData(idx + 1); switch (slipError) { case (SLIP_OK): { @@ -76,7 +76,7 @@ void ArcsecDatalinkLayer::reset() { decodeRingBuf.clear(); } void ArcsecDatalinkLayer::encodeFrame(const uint8_t* data, size_t length, const uint8_t** txFrame, size_t& size) { - slip_encode_frame(data, length, txEncoded, &size, ARC_DEF_SAGITTA_SLIP_ID); + slip_encode_frame(data, length, txEncoded,sizeof(txEncoded), &size, ARC_DEF_SAGITTA_SLIP_ID); if (txFrame != nullptr) { *txFrame = txEncoded; } diff --git a/mission/acs/str/StarTrackerHandler.cpp b/mission/acs/str/StarTrackerHandler.cpp index 002b5937..eabb2c9d 100644 --- a/mission/acs/str/StarTrackerHandler.cpp +++ b/mission/acs/str/StarTrackerHandler.cpp @@ -573,7 +573,7 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi Clock::getClock(&tv); setTimeRequest.unixTime = (static_cast(tv.tv_sec) * 1000 * 1000) + (static_cast(tv.tv_usec)); - arc_pack_settime_action_req(&setTimeRequest, commandBuffer, &rawPacketLen); + prv_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, @@ -1648,6 +1648,11 @@ ReturnValue_t StarTrackerHandler::initializeLocalDataPool(localpool::DataPool& l localDataPoolMap.emplace(startracker::PoolIds::CONTRAST_C, new PoolEntry(9)); localDataPoolMap.emplace(startracker::PoolIds::CONTRAST_D, new PoolEntry(9)); + localDataPoolMap.emplace(startracker::PoolIds::BLOB_STATS_NOISE, new PoolEntry(16)); + localDataPoolMap.emplace(startracker::PoolIds::BLOB_STATS_THOLD, new PoolEntry(16)); + localDataPoolMap.emplace(startracker::PoolIds::BLOB_STATS_LVALID, new PoolEntry(16)); + localDataPoolMap.emplace(startracker::PoolIds::BLOB_STATS_LVALID, new PoolEntry(16)); + poolManager.subscribeForDiagPeriodicPacket( subdp::DiagnosticsHkPeriodicParams(temperatureSet.getSid(), false, 10.0)); poolManager.subscribeForRegularPeriodicPacket( @@ -1924,6 +1929,10 @@ ReturnValue_t StarTrackerHandler::scanForTmReply(uint8_t replyId, DeviceCommandI *foundId = startracker::REQ_BLOB; break; } + case (startracker::ID::BLOB_STATS): { + *foundId = startracker::REQ_BLOB_STATS; + break; + } case (startracker::ID::BLOBS): { *foundId = startracker::REQ_BLOBS; break; @@ -2008,7 +2017,7 @@ ReturnValue_t StarTrackerHandler::executeFlashReadCommand(const uint8_t* command void StarTrackerHandler::prepareBootCommand(startracker::FirmwareTarget target) { uint32_t length = 0; struct BootActionRequest bootRequest = {static_cast(target)}; - arc_pack_boot_action_req(&bootRequest, commandBuffer, &length); + prv_arc_pack_boot_action_req(&bootRequest, commandBuffer, &length); rawPacket = commandBuffer; rawPacketLen = length; } @@ -2041,7 +2050,7 @@ ReturnValue_t StarTrackerHandler::prepareChecksumCommand(const uint8_t* commandD return result; } uint32_t rawCmdLength = 0; - arc_pack_checksum_action_req(&req, commandBuffer, &rawCmdLength); + prv_arc_pack_checksum_action_req(&req, commandBuffer, &rawCmdLength); rawPacket = commandBuffer; rawPacketLen = rawCmdLength; checksumCmd.rememberRegion = req.region; @@ -2060,7 +2069,7 @@ void StarTrackerHandler::prepareTimeRequest() { void StarTrackerHandler::preparePingRequest() { uint32_t length = 0; struct PingActionRequest pingRequest = {PING_ID}; - arc_pack_ping_action_req(&pingRequest, commandBuffer, &length); + prv_arc_pack_ping_action_req(&pingRequest, commandBuffer, &length); rawPacket = commandBuffer; rawPacketLen = length; } @@ -2089,7 +2098,7 @@ void StarTrackerHandler::preparePowerRequest() { void StarTrackerHandler::prepareSwitchToBootloaderCmd() { uint32_t length = 0; struct RebootActionRequest rebootReq {}; - arc_pack_reboot_action_req(&rebootReq, commandBuffer, &length); + prv_arc_pack_reboot_action_req(&rebootReq, commandBuffer, &length); rawPacket = commandBuffer; rawPacketLen = length; } @@ -2098,7 +2107,7 @@ 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); + prv_arc_pack_camera_action_req(&camReq, commandBuffer, &length); rawPacket = commandBuffer; rawPacketLen = length; } @@ -2166,8 +2175,7 @@ ReturnValue_t StarTrackerHandler::prepareRequestCentroidTm() { ReturnValue_t StarTrackerHandler::prepareRequestBlobStatsTm() { uint32_t length = 0; - // TODO: Wait for API update and call the API here. - // arc_tm_pack_centroid_req(commandBuffer, &length); + arc_tm_pack_blobstats_req(commandBuffer, &length); rawPacket = commandBuffer; rawPacketLen = length; return returnvalue::OK; @@ -2922,6 +2930,7 @@ ReturnValue_t StarTrackerHandler::checkCommand(ActionId_t actionId) { case startracker::REQ_MATCHED_CENTROIDS: case startracker::REQ_BLOB: case startracker::REQ_BLOBS: + case startracker::REQ_BLOB_STATS: case startracker::REQ_CENTROID: case startracker::REQ_CENTROIDS: case startracker::REQ_CONTRAST: { diff --git a/mission/acs/str/strHelpers.h b/mission/acs/str/strHelpers.h index 4ec6af5a..9d502d3b 100644 --- a/mission/acs/str/strHelpers.h +++ b/mission/acs/str/strHelpers.h @@ -500,6 +500,7 @@ static constexpr uint8_t CENTROID = 26; static constexpr uint8_t CENTROIDS = 37; static constexpr uint8_t AUTO_BLOB = 39; static constexpr uint8_t MATCHED_CENTROIDS = 40; +static constexpr uint8_t BLOB_STATS = 49; } // namespace ID namespace Program { diff --git a/thirdparty/sagittactl b/thirdparty/sagittactl index 20f32a2f..0c5fb464 160000 --- a/thirdparty/sagittactl +++ b/thirdparty/sagittactl @@ -1 +1 @@ -Subproject commit 20f32a2f291d00869c693066de02c0257dec7be4 +Subproject commit 0c5fb46405d122caf4d46beab7cb8ef19317a1ee