Implementation of CFDP
CFDP (CCSDS File Delivery Protocol) will be required for both SOURCE and EIVE. It would make sense to implement it in a generic way so both missions can use it.
Some inititial analysis was performed
- It would make most sense to implement CFDP on top of SPP (Space Packet Protocol) already used by PUS and use a dedicated APID
Next steps (OBSW):
- Implement dummy
CfdpDistributor
infsfw/tcdistribution
, which registers itself to the CCSDS distributor with an APID specified by the user in the constructor. This class simply forwards packets to the CFDP handler. The object ID to the CFDP handler should be set here as well. (maybe new CfdpHandlerIF would be good as well?). Unless there is more than one CFDP handler, which I can not really imagine on small satellites, no internal map should be necessary and only one receiver is cached. - Implement dummy CfdpHandler in
fsfw/filesystem
, might possibly implementCfdpHandlerIF
. This is empty at first and simply prints that a packet has been received
Next steps (Client / Python)
- Implement basic CFDP stack in Python . CFDP will build on the Space Packet Protocol and the SPP is already implemented in Python. However, the current stack implementation assumed that SPPs will always be PUS packets, so refactoring might be necessary here.
- Send an empty CFDP packet to OBSW, verify printout
- I'd prefer a generic CFDP module which is part of
tmtccmd
but detached so it could be extracted into a separate library with the PUS stack. Peeking is possible: https://gitlab.com/librecube/prototypes/python-cfdp
Documents: