-
Hello everyone, In my application, I would like to use software bus to send a large message(such as pixel data of an image), which is larger than the size that can be specified in CCSDS in theory(65536 bytes, if I understand correctly). The API, CFE_SB_InitMsg(), also seems to only create a message which is not larger than 65536 bytes. So, I can't send the message in one packet. I want to know if there are any ways to send a large message in one packet? If not, how can I send the large message in sequence by using sequence flag and sequence count in CCSDS? Thank you for your attention. |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 6 replies
-
I think part of the answer can be found in the FAQ in the April 2004 Draft Green Book version of the CCSDS Space Packet Protocol on page 25 (https://cwe.ccsds.org/sis/docs/Work Completed (Closed WGs)/Space Packet Protocol Working Group/Draft Documents/Space Packet Protocol (Draft Green Book, Issue 2).pdf). I did not check again if what it says is still valid, but let me summarize the answer here: In the case of sending large data buffer (image or memory data) that does not fit into a single space packet, these application data units must be transferred with a group of space packets. The source user application must segment the application data unit into smaller segments and ensure that each segment fits into a space packet. The Space Packet has fields called Sequence Flags in its header to identify the first and last segment in a group, and reconstruction of the original application data unit at the destination is possible using these flags. If the segment number of each segment is to be transferred with the segment itself, the secondary header of the packet can be used to send the segment number. |
Beta Was this translation helpful? Give feedback.
-
On most (all?) flight processors, sending large messages is a significant performance hit, which is why it is not directly supported. The common design pattern for two or more applications to access the same large data set is shared memory with pointers and maybe a semaphore as needed. To transfer large data sets over a network, file transfer is used. CFDP for Space system data links and FTP for IP networks. You could also use files as the application to application sharing mechanism. |
Beta Was this translation helpful? Give feedback.
On most (all?) flight processors, sending large messages is a significant performance hit, which is why it is not directly supported. The common design pattern for two or more applications to access the same large data set is shared memory with pointers and maybe a semaphore as needed. To transfer large data sets over a network, file transfer is used. CFDP for Space system data links and FTP for IP networks. You could also use files as the application to application sharing mechanism.