From 7fc136fbcfeab092114b1857baf59a6fc0eeb7e4 Mon Sep 17 00:00:00 2001 From: Reg Marr Date: Wed, 13 Nov 2024 00:50:39 -0500 Subject: [PATCH] Initial TC Loopback test --- Dockerfile | 2 +- FlightComputer/CCSDSTester/CCSDSTester.cpp | 19 +++++++++++++++++++ FlightComputer/CCSDSTester/CCSDSTester.fpp | 3 +-- FlightComputer/Top/topology.fpp | 17 +++-------------- fprime | 2 +- 5 files changed, 25 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index 27fd999..06de07f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -# Upgrade to Ubuntu 22.04 as recommended +# Upgrade to Ubuntu 24.04 as recommended FROM ubuntu:22.04 AS fprime_deps # Set non-interactive installation mode for apt packages diff --git a/FlightComputer/CCSDSTester/CCSDSTester.cpp b/FlightComputer/CCSDSTester/CCSDSTester.cpp index eba33a9..c191af7 100644 --- a/FlightComputer/CCSDSTester/CCSDSTester.cpp +++ b/FlightComputer/CCSDSTester/CCSDSTester.cpp @@ -11,7 +11,12 @@ #include "FpConfig.h" #include "FpConfig.hpp" #include "Fw/Com/ComBuffer.hpp" +#include "Fw/Com/ComPacket.hpp" #include "Fw/Logger/Logger.hpp" +#include "Fw/Types/Serializable.hpp" +#include "Svc/FrameAccumulator/FrameDetector.hpp" +#include "Svc/FrameAccumulator/FrameDetector/CCSDSFrameDetector.hpp" +#include "Utils/Types/CircularBuffer.hpp" namespace FlightComputer { @@ -116,6 +121,7 @@ void CCSDSTester::PING_cmdHandler(const FwOpcodeType opCode, const U32 cmdSeq) { U32 dfltMessage = 0x9944fead; com.resetSer(); + com.serialize(Fw::ComPacket::ComPacketType::FW_PACKET_COMMAND); com.serialize(dfltMessage); this->PktSend_out(0, com, 0); @@ -150,6 +156,19 @@ Drv::SendStatus CCSDSTester::drvSend_handler(FwIndexType, Fw::Buffer & buffer) { } Fw::Logger::log("\n"); + Types::CircularBuffer circBoi(buffer.getData(), buffer.getSize()); + Fw::SerializeStatus stat = circBoi.serialize(buffer.getData(), buffer.getSize()); + Fw::Logger::log("circBoi %d alloc %d cap %d\n",stat, circBoi.get_allocated_size(), circBoi.get_capacity()); + + Svc::FrameDetector::Status status = Svc::FrameDetector::Status::FRAME_DETECTED; + Svc::FrameDetectors::CCSDSFrameDetector ccsdsFrameDetector; + + FwSizeType size_out = 0; + status = ccsdsFrameDetector.detect(circBoi, size_out); + Fw::Logger::log("Status %d out %d\n", status, size_out); + + drvRcv_out(0, buffer, Drv::RecvStatus::RECV_OK); + return Drv::SendStatus::SEND_OK; } diff --git a/FlightComputer/CCSDSTester/CCSDSTester.fpp b/FlightComputer/CCSDSTester/CCSDSTester.fpp index 7d39366..27c10ef 100644 --- a/FlightComputer/CCSDSTester/CCSDSTester.fpp +++ b/FlightComputer/CCSDSTester/CCSDSTester.fpp @@ -63,13 +63,12 @@ module FlightComputer { @ Port for receiving the status signal async input port comStatusIn: Fw.SuccessCondition - # DrvMockPorts @ Port invoked when the driver is ready to send/receive data output port drvReady: Drv.ByteStreamReady @ Port invoked when driver has received data - output port drvRecv: Drv.ByteStreamRecv + output port drvRcv: Drv.ByteStreamRecv @ Port invoked to send data out the driver guarded input port drvSend: Drv.ByteStreamSend diff --git a/FlightComputer/Top/topology.fpp b/FlightComputer/Top/topology.fpp index e1497c3..b9b383b 100644 --- a/FlightComputer/Top/topology.fpp +++ b/FlightComputer/Top/topology.fpp @@ -112,8 +112,7 @@ module FlightComputer { # Rate group 2 (1/2Hz) rateGroupDriverComp.CycleOut[Ports_RateGroups.rateGroup2] -> rateGroup2Comp.CycleIn rateGroup2Comp.RateGroupMemberOut[0] -> cmdSeq.schedIn - rateGroup2Comp.RateGroupMemberOut[1] -> flightSequencer.run - rateGroup2Comp.RateGroupMemberOut[2] -> $health.Run + rateGroup2Comp.RateGroupMemberOut[1] -> $health.Run # Rate group 3 (1/4Hz) rateGroupDriverComp.CycleOut[Ports_RateGroups.rateGroup3] -> rateGroup3Comp.CycleIn @@ -148,23 +147,15 @@ module FlightComputer { connections ccsds { - # ccsdsTcpLink.allocate -> commsBufferManager.bufferGetCallee - # ccsdsTcpLink.$recv -> fprimeFrameAccumulator.dataIn - # tcFramer.framedOut -> ccsdsTcpLink.$send - # ccsdsNode.allocate -> commsBufferManager.bufferGetCallee - # ccsdsNode.$recv -> ccsdsFrameAccumulator.dataIn - ccsdsNode.bufferSendOut -> tcFramer.bufferIn ccsdsNode.PktSend -> tcFramer.comIn tcFramer.framedAllocate -> commsBufferManager.bufferGetCallee - # tcFramer.bufferDeallocate -> ccsdsNode.bufferReturn tcFramer.framedOut -> ccsdsLink.comDataIn ccsdsLink.comStatus -> ccsdsNode.comStatusIn ccsdsNode.drvReady -> ccsdsLink.drvConnected - # ccsdsNode.drvRecv -> ccsdsLink.drvDataIn - # ccsdsLink.drvDataOut -> ccsdsNode.drvSend - ccsdsLink.drvDataOut -> ccsdsLink.drvDataIn + ccsdsLink.drvDataOut -> ccsdsNode.drvSend + ccsdsNode.drvRcv -> ccsdsLink.drvDataIn ccsdsLink.comDataOut -> ccsdsFrameAccumulator.dataIn @@ -178,8 +169,6 @@ module FlightComputer { ccsdsUplinkRouter.bufferDeallocate -> commsBufferManager.bufferSendIn ccsdsNode.seqCmdStatus -> ccsdsUplinkRouter.cmdResponseIn - - # ccsdsNode.bufferSendOut -> commsBufferManager.bufferSendIn } } diff --git a/fprime b/fprime index a57a8d5..3b9a1a6 160000 --- a/fprime +++ b/fprime @@ -1 +1 @@ -Subproject commit a57a8d53c69485f83251cfdcd8a61a33a88544fe +Subproject commit 3b9a1a6508d44cb8948fc80e8fc0b4425e395d1b