<strong>CCSDS</strong> HISTORICAL DOCUMENTRECOMMENDATION FOR ADVANCED ORBITING SYSTEMS2.3.2 PacketDestruction ProcessThis process accepts packets from the RoutePacket process on the [int] gate. It generatesindications according to the Service parameter, checking for violations of the SequenceCount inthe OctetString service and generating Data Loss Flags as required.The process is passed five parameters:terminatingPathServiceTypePathSequenceCountFirstdataLossFlagdetermines which gate the process will generateprimitives on.the PathID (i.e., SAP) to generate primitives on.only used for the OctetString service; this gives thevalue of the next expected sequence count and isused in the generation of Data Loss Flags.only used for the OctetString service; if this is set toTrue, then the process will accept the sequence countin the next packet regardless of the value ofSequenceCount.only used for the OctetString service; if this is set toTrue, then the process will generate Data Loss Flags.The PacketDestruction process corresponds to the Packet Extraction function described in theAOS Blue Book.<strong>CCSDS</strong> 705.2-B-1 Page 2-15 May 1994<strong>CCSDS</strong> HISTORICAL DOCUMENT
<strong>CCSDS</strong> HISTORICAL DOCUMENTRECOMMENDATION FOR ADVANCED ORBITING SYSTEMSprocess PacketDestruction [pkt,oct,int](terminatingPathServiceType : Service,Path: Pathid,SequenceCount: PacketSequenceCount,First: Bool,dataLossFlag : Bool) : noexit :=let SAP : PathId = Path in(int ! Path ? Packet : <strong>CCSDS</strong>Packet;([terminatingPathServiceType Eq UserFormatted] ->(pkt ! SAP! QualifierPart(Path)! Packet;PacketDestruction [pkt,oct,int](terminatingPathServiceType,Path, SequenceCount,First, dataLossFlag))[][terminatingPathServiceType Eq OctetString] ->([(GetPacketSequenceCount(GetPrimaryHeader(Packet)) Ne SequenceCount)and Not(First) and (dataLossFlag Eq True)] ->(oct ! SAP! Path! SHFToSH(GetSHF(GetPrimaryHeader(Packet)))! GetUserData(Packet)! OSDULost ;PacketDestruction [pkt,oct,int](terminatingPathServiceType, Path,Next(GetPacketSequenceCount(GetPrimaryHeader(Packet))),False, dataLossFlag))[][((GetPacketSequenceCount(GetPrimaryHeader(Packet))Eq SequenceCount) Or (First)) And (dataLossFlag Eq True)] ->(oct ! SAP! Path! SHFToSH(GetSHF(GetPrimaryHeader(Packet)))! GetUserData(Packet)! OSDUNotLost ;PacketDestruction [pkt,oct,int](terminatingPathServiceType, Path,Next(GetPacketSequenceCount(GetPrimaryHeader(Packet))),False, dataLossFlag))[][dataLossFlag Eq False] ->(oct ! SAP! Path! SHFToSH(GetSHF(GetPrimaryHeader(Packet)))! GetUserData(Packet) ;PacketDestruction [pkt,oct,int](terminatingPathServiceType, Path,SequenceCount, False, dataLossFlag)))))endproc PacketDestruction<strong>CCSDS</strong> 705.2-B-1 Page 2-16 May 1994<strong>CCSDS</strong> HISTORICAL DOCUMENT