/****************************************************************************** ** Function: UTF_put_packet_header() ** ** Purpose: ** Display the CCSDS header of a packet. */ void UTF_put_packet_header (uint8 source, CCSDS_PriHdr_t *packet) { uint16 sid; CFE_TIME_SysTime_t TimeFromMsg; sid = CCSDS_RD_SID(*packet); if (CCSDS_SID_TYPE(sid) == CCSDS_CMD) { if (CCSDS_SID_SHDR(sid) == CCSDS_HAS_SEC_HDR) { UTF_put_text("%s CMD: APID:%04x SEQ:%d LEN:%d FC:%d ", (source == UTF_SOURCE_SEND) ? ">": "<", CCSDS_RD_APID(*packet), CCSDS_RD_SEQ(*packet), CCSDS_RD_LEN(*packet), CCSDS_RD_FC(((CCSDS_CmdPkt_t *)packet)->SecHdr)); } else { UTF_put_text("%s CMD: APID:%04x SEQ:%d LEN:%d ", (source == UTF_SOURCE_SEND) ? ">": "<", CCSDS_RD_APID(*packet), CCSDS_RD_SEQ(*packet), CCSDS_RD_LEN(*packet)); } } else { if (CCSDS_SID_SHDR(sid) == CCSDS_HAS_SEC_HDR) { TimeFromMsg = CFE_SB_GetMsgTime((CFE_SB_MsgPtr_t)packet); UTF_put_text("%s TLM: APID:%04x SEQ:%d LEN:%d TIME:%08x %08x ", (source == UTF_SOURCE_SEND) ? ">": "<", CCSDS_RD_APID(*packet), CCSDS_RD_SEQ(*packet), CCSDS_RD_LEN(*packet), TimeFromMsg.Seconds, TimeFromMsg.Subseconds); } else { UTF_put_text("%s TLM: APID:%04x SEQ:%d LEN:%d ", (source == UTF_SOURCE_SEND) ? ">": "<", CCSDS_RD_APID(*packet), CCSDS_RD_SEQ(*packet), CCSDS_RD_LEN(*packet)); } } }
void CCSDS_InitPkt (CCSDS_PriHdr_t *PktPtr, uint16 StreamId, uint16 Length, boolean Clear ) { uint16 SeqCount; /* Save the sequence count in case it must be preserved. */ SeqCount = CCSDS_RD_SEQ(*PktPtr); /* Zero the entire packet if needed. */ if (Clear) memset((void *)PktPtr, 0, Length); /* Clear the primary header. */ CCSDS_CLR_PRI_HDR(*PktPtr); /* Set the stream ID and length fields in the primary header. */ CCSDS_WR_SID(*PktPtr, StreamId); CCSDS_WR_LEN(*PktPtr, Length); /* Restore the sequence count if needed. */ if (!Clear) CCSDS_WR_SEQ(*PktPtr, SeqCount); } /* END CCSDS_InitPkt() */