Esempio n. 1
0
/******************************************************************************
**  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));
        }
    }
}
Esempio n. 2
0
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() */