Class DownlinkTransferFrame

  • Direct Known Subclasses:
    AosTransferFrame, TmTransferFrame, UslpTransferFrame

    public abstract class DownlinkTransferFrame
    extends Object
    Transfer frame is an interface covering the three CCSDS transfer frames types:
    • TM (CCSDS 132.0-B-2)
    • AOS (CCSDS 732.0-B-3)
    • UNIFIED ( 732.1-B-1)

    All three of them have the following structure:

    • Primary Header
    • Insert Zone/Secondary Header
    • Data Field
    • Operational Control Field (OCF)
    • Error Control Field

    Note that for USLP, the data field has also a header.

    In the dataStart, and dataLength properties below, only the real data (i.e. excluding the data field header) is considered.

    The idea is that the VcDownlinkHandler that deals with the data, has to have all the information on how to interpret the data part.

    For the purpose of packet extraction each frame has defined three offsets:
    dataStart <= firstSduStart < dataEnd

    firstSduStart refers to the first SDU that starts in this frame.

    The data in between dataStart and firstSduStart is part of a previous packet and will be used only if there is no discontinuity in the frame sequence count.

    • Field Detail

      • spacecraftId

        protected final int spacecraftId
      • virtualChannelId

        protected final int virtualChannelId
      • data

        protected final byte[] data
    • Constructor Detail

      • DownlinkTransferFrame

        public DownlinkTransferFrame​(byte[] data,
                                     int spacecraftId,
                                     int virtualChannelId)
    • Method Detail

      • getSpacecraftId

        public int getSpacecraftId()
        Returns:
        master channel id
      • getVirtualChannelId

        public int getVirtualChannelId()
        Returns:
        virtual channel id
      • lostFramesCount

        public int lostFramesCount​(long prevFrameSeq)
        Returns the number of frames lost from the previous sequence to this one. If no frame has been lost (i.e. if prevFrameSeq and getFrameSeq() are in order) then return 0. -1 means that a number of lost frames could not be determined - if there is some indication that the stream has been reset
        Parameters:
        prevFrameSeq -
        Returns:
      • setVcFrameSeq

        public void setVcFrameSeq​(long seq)
        Set the virtual channel frame count
        Parameters:
        seq -
      • getVcFrameSeq

        public long getVcFrameSeq()
        Returns:
        virtual channel frame count
      • getData

        public byte[] getData()
      • getDataStart

        public int getDataStart()
        Where in the byte array returned by getData() starts the data.
        Returns:
      • getFirstHeaderPointer

        public int getFirstHeaderPointer()
        Where in the byte array returned by getData() starts the first packet (assuming this is a frame containing packets). Returns -1 if there is no packet starting in this frame.
        Returns:
        the offset of the first packet that starts in this frame or -1 if no packet starts in this frame
      • getDataEnd

        public int getDataEnd()
        The offset in the buffer where the data ends.
        Returns:
        data end
      • setOcf

        public void setOcf​(int ocf)
      • getOcf

        public int getOcf()
        Get the 4 bytes operational control field. This has a meaningful value only if the hasOcf() returns true.
        Returns:
        the Operational Control Field.
      • hasOcf

        public boolean hasOcf()
        Returns:
        true if this frame has an Operation Control Field set.
      • getEarthRceptionTime

        public Instant getEarthRceptionTime()
        Returns:
        the earth reception time of the frame
      • setEearthRceptionTime

        public void setEearthRceptionTime​(Instant ertime)