<p>Mission name; value: three characters matching the following regular expression [S][1-3][A-B]</p> ACTIVE IDLE ACTIVE IDLE UNDEFINED S1_SAR S1_GPSR S2_MSI S2_GPSR S2_STR S2_CSW S3_OLCI S3_SLSTR S3_DORIS S3_NAVATT S3_MWR S3_SRAL S3_GPSR TEST OPER IDLE_TM_PACKET HOUSEKEEPING NON-REAL_TIME_HKTM Transfer Frame Primary Header / Virtual Channel Data Unit Header OCL self.mcidTfVersionNumber.intValue = 1 OCL self.mcidSpacecraftId.intValue = self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.spacecraftId OCL let rtStpsConfig : XsveRtStps = self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps in rtStpsConfig.vcdusConfig.vcduConfig.vcid->exists(x | x = self.virtualChannelId) or self.virtualChannelId = rtStpsConfig.idleVcid OCL self.signFieldReplayFlag.intValue = 0 OCL self.signFieldRsvdSpare.intValue = 0 OCL self.virtualChannelId.value.intValue >= 0 and self.virtualChannelId.value.intValue <= 63 OCL self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.rsCorrectHeader implies self.rsCrcHasErrors = false OCL self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.rsCorrectHeader and self.rsCrcHasErrors = true implies self.rsCrcErrorsCorrectable = true OCL self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.vcdusConfig.vcduConfig.vcid->exists(x | x = self.virtualChannelId) or self.virtualChannelId = self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleVcid <p>Master&nbsp;Channel&nbsp;ID&nbsp;-&nbsp;Transfer&nbsp;Frame&nbsp;Version&nbsp;Number</p><p>2&nbsp;bits</p> <p>Master&nbsp;Channel&nbsp;ID&nbsp;-&nbsp;Spacecraft&nbsp;ID</p><p>8&nbsp;bits</p> <p>6&nbsp;bits</p> <p>3&nbsp;bytes</p> <p>Signaling&nbsp;Field&nbsp;-&nbsp;Replay&nbsp;Flag</p><p>1&nbsp;bit</p> <p>Signaling&nbsp;Field&nbsp;-&nbsp;Rsvd&nbsp;Fd</p><p>7&nbsp;bits</p> <p>2&nbsp;bytes</p> <p>return&nbsp;2&nbsp;byte&nbsp;array</p> OCL self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.rsCorrectHeader OCL self.virtualChannelId.value.intValue Frame / Virtual Channel Data Unit OCL self.vcduHeader.virtualChannelId = self.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleVcid implies self.mpduHeader.oclIsTypeOf(MpduIdleHeader) and self.mpduHeader.oclAsType(MpduIdleHeader).value.byte->at(1).intValue = 7 and self.mpduHeader.oclAsType(MpduIdleHeader).value.byte->at(2).intValue = -2 and self.mpduPacketZone.oclIsTypeOf(MpduIdlePacketZone) and self.mpduPacketZone.oclAsType(MpduIdlePacketZone).value.byte->at(1).intValue = -1 and self.mpduPacketZone.oclAsType(MpduIdlePacketZone).value.byte->at(2).intValue = -3 and self.mpduPacketZone.oclAsType(MpduIdlePacketZone).value.byte->at(3).intValue = 89 and self.mpduPacketZone.oclAsType(MpduIdlePacketZone).value.byte->at(4).intValue = 123 OCL (self.vcduHeader.virtualChannelId = self.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleVcid and self.mpduHeader.oclIsTypeOf(MpduIdleHeader) and self.mpduPacketZone.oclIsTypeOf(MpduIdlePacketZone)) or (self.vcduHeader.virtualChannelId <> self.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleVcid and self.mpduHeader.oclIsTypeOf(MpduActiveHeader) and self.mpduPacketZone.oclIsTypeOf(MpduActivePacketZone)) OCL if self.vcduHeader.virtualChannelId = self.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleVcid then VirtualChannelType::IDLE else VirtualChannelType::ACTIVE endif OCL if self.cadu.channelData.caduHeaderIncludesMpdu then if self.getVirtualChannelType() = VirtualChannelType::IDLE then self.vcduHeader.vcduHeaderAsString.concat(self.mpduHeader.oclAsType(MpduIdleHeader).mpduIdleHeaderAsString) else self.vcduHeader.vcduHeaderAsString.concat(self.mpduHeader.oclAsType(MpduActiveHeader).mpduActiveHeaderAsString) endif else self.vcduHeader.vcduHeaderAsString endif TM GPSR Data Field Header <p>1&nbsp;bit</p> <p>3&nbsp;bits</p> <p>4&nbsp;bits</p> <p>8&nbsp;bits</p> <p>8&nbsp;bits</p> <p>Destination&nbsp;ID</p><p>8&nbsp;bits</p> <p>8&nbsp;bits</p> <p>4&nbsp;bytes</p> <p>8&nbsp;bits</p> <p>2&nbsp;bytes</p> Sync Marker <p>We&nbsp;expect&nbsp;that&nbsp;the&nbsp;4&nbsp;byte&nbsp;Sync&nbsp;field&nbsp;should&nbsp;be&nbsp;equal&nbsp;to&nbsp;0x1ACFFC1D</p><p>0x1A&nbsp;=&nbsp;26&nbsp;</p><p>0xCF&nbsp;=&nbsp;207</p><p>0xFC&nbsp;=&nbsp;252</p><p>0x1D&nbsp;=&nbsp;29</p> OCL self.value.byte->at(1).intValue = 26 and self.value.byte->at(2).intValue = -49 and self.value.byte->at(3).intValue = -4 and self.value.byte->at(4).intValue = 29 <p>4&nbsp;bytes</p> SAR Data Field Header <p>32&nbsp;bits</p> <p>16&nbsp;bits</p> <p>56  bytes</p> Reed Solomon check symbols OCL self.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.rsCorrectFrame = true implies self.rsActualCheckSymbols.byte = self.rsCalculatedCheckSymbols.byte 128 bytes return a byte array of 128 bytes Packet Secondary Header / Data Field Header OCL self.activePacketDataField.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.validApidsConfig.ispInfo->exists(x : IspInfo | self.activePacketDataField.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.missionName->exists(y: MissionName | y = x.missionName ) ) OCL self.activePacketDataField.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.validApidsConfig.ispInfo->exists(x : IspInfo | ( self.activePacketDataField.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.missionName->exists(y: MissionName | y = x.missionName) ) and ( ( (x.missionName = MissionName::Sentinel1 or x.missionName = MissionName::Sentinel2) and x.apidValue->exists(y : Apid | y.apidPid = self.activePacketDataField.isp.packetPrimaryHeader.apidPid and y.apidPcat = self.activePacketDataField.isp.packetPrimaryHeader.apidPcat ) ) or ( x.missionName = MissionName::Sentinel3 and x.pidValue->exists(pid : ApidPid | pid = self.activePacketDataField.isp.packetPrimaryHeader.apidPid) and x.pcatValue->exists(pcat : ApidPcat | pcat = self.activePacketDataField.isp.packetPrimaryHeader.apidPcat) ) ) and ( ( (x.packetType = IspPacketTypes::S1_SAR) and self.oclIsTypeOf(SarS1DataFieldHeader) ) or ( (x.packetType = IspPacketTypes::S1_GPSR) and self.oclIsTypeOf(TmGpsrS1DataFieldHeader) ) or ( (x.packetType = IspPacketTypes::S2_CSW) and self.oclIsTypeOf(TmCswS2DataFieldHeader) ) or ( (x.packetType = IspPacketTypes::S2_GPSR) and self.oclIsTypeOf(TmGpsrS2DataFieldHeader) ) or ( (x.packetType = IspPacketTypes::S2_MSI) and self.oclIsTypeOf(MsiS2DataFieldHeader) ) or ( (x.packetType = IspPacketTypes::S2_STR) and self.oclIsTypeOf(TmStrS2DataFieldHeader) ) or ( (x.packetType = IspPacketTypes::S3_OLCI) and self.oclIsTypeOf(OlciS3DataFieldHeader) ) or ( (x.packetType = IspPacketTypes::S3_DORIS) and self.oclIsTypeOf(DorisS3DateFieldHeader) ) or ( (x.packetType = IspPacketTypes::S3_MWR) and self.oclIsTypeOf(MwrS3DataFieldHeader) ) or ( (x.packetType = IspPacketTypes::S3_GPSR) and self.oclIsTypeOf(TmGpsrS3DataFieldHeader) ) or ( (x.packetType = IspPacketTypes::S3_SLSTR) and self.oclIsTypeOf(SlstrS3DataFieldHeader) ) or ( (x.packetType = IspPacketTypes::S3_NAVATT) and self.oclIsTypeOf(TmNavattS3DataFieldHeader) ) or ( (x.packetType = IspPacketTypes::S3_SRAL) and self.oclIsTypeOf(SralS3DataFieldHeader) ) ) ) OCL self.activePacketDataField.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.validApidsConfig.ispInfo->exists(x : IspInfo | ((x.packetType = IspPacketTypes::S1_SAR) and self.oclIsTypeOf(SarS1DataFieldHeader)) or ((x.packetType = IspPacketTypes::S1_GPSR) and self.oclIsTypeOf(TmGpsrS1DataFieldHeader)) or ((x.packetType = IspPacketTypes::S2_CSW) and self.oclIsTypeOf(TmCswS2DataFieldHeader)) or ((x.packetType = IspPacketTypes::S2_GPSR) and self.oclIsTypeOf(TmGpsrS2DataFieldHeader)) or ((x.packetType = IspPacketTypes::S2_MSI) and self.oclIsTypeOf(MsiS2DataFieldHeader)) or ((x.packetType = IspPacketTypes::S2_STR) and self.oclIsTypeOf(TmStrS2DataFieldHeader)) or ((x.packetType = IspPacketTypes::S3_OLCI) and self.oclIsTypeOf(OlciS3DataFieldHeader)) or ((x.packetType = IspPacketTypes::S3_DORIS) and self.oclIsTypeOf(DorisS3DateFieldHeader)) or ((x.packetType = IspPacketTypes::S3_MWR) and self.oclIsTypeOf(MwrS3DataFieldHeader)) or ((x.packetType = IspPacketTypes::S3_GPSR) and self.oclIsTypeOf(TmGpsrS3DataFieldHeader)) or ((x.packetType = IspPacketTypes::S3_SLSTR) and self.oclIsTypeOf(SlstrS3DataFieldHeader)) or ((x.packetType = IspPacketTypes::S3_NAVATT) and self.oclIsTypeOf(TmNavattS3DataFieldHeader)) or ((x.packetType = IspPacketTypes::S3_SRAL) and self.oclIsTypeOf(SralS3DataFieldHeader)) ) Packet Primary Header OCL let rtstpsConfig : XsveRtStps = self.isp.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps in rtstpsConfig.vcdusConfig.vcduConfig->select(y | y.vcid = self.isp.mpduActivePacketZone->first().vcdu.vcduHeader.virtualChannelId).ispsConfig.ispConfig.apid->exists(x | x.apidPid = self.apidPid and x.apidPcat = self.apidPcat) or self.apidPid = rtstpsConfig.idleApid.apidPid and self.apidPcat = rtstpsConfig.idleApid.apidPcat OCL self.versionNumber.intValue = 0 OCL self.type.intValue = 0 OCL let transmissionData : TransmissionData = self.isp.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData in self.apidPid <> transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPid or self.apidPcat <> transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPcat implies self.shf.intValue = 1 OCL self.sequenceFlags.intValue = 3 OCL self.isp.isTypeOfPacket(IspPacketTypes::S1_SAR) implies (self.dataLength.intValue + 6 +1).mod(4) = 0 OCL let transmissionData : TransmissionData = self.isp.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData in self.apidPid = transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPid and self.apidPcat = transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPcat implies self.shf.intValue = 0 OCL let transmissionData : TransmissionData = self.isp.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData, ispInfoSet : Set(IspInfo) = transmissionData.configuration.validApidsConfig.ispInfo in self.apidPid = transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPid and self.apidPcat = transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPcat or if transmissionData.configuration.rtStpsConfig.xsveRtStps.missionName = 'S3A' then (ispInfoSet.apidValue.apidPid->exists(x : ApidPid | x = self.apidPid) and ispInfoSet.apidValue.apidPcat->exists(x : ApidPcat | x = self.apidPcat)) else ispInfoSet.apidValue->exists(x : Apid | x.apidPid = self.apidPid and x.apidPcat = self.apidPcat) endif <p>3&nbsp;bits</p> <p>1&nbsp;bit</p> <p>Secondary&nbsp;Header&nbsp;Flag</p><p>1&nbsp;bit</p> <p>7&nbsp;bits</p> <p>2&nbsp;bits</p> <p>14&nbsp;bits</p> <p>2&nbsp;bytes</p> Packet Error Control (CRC) OCL let rtstpsConfig : XsveRtStps = self.activePacketDataField.isp.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps in rtstpsConfig.checkCrc and (rtstpsConfig.missionName <> 'S1A' or (self.activePacketDataField.isp.packetPrimaryHeader.apidPid.value.intValue*16 + self.activePacketDataField.isp.packetPrimaryHeader.apidPcat.value.intValue) <> 1052) implies self.actualValue.byte = self.calculatedValue.byte <p>2  bytes</p> Packet Data Field Multiplexing Protocol Data Unit (M_PDU) Packet Zone MPDU Idle Header <p>2&nbsp;bytes</p> Multiplexing Protocol Data Unit (M_PDU) Header OCL self.rsvdSpare.intValue = 0 OCL self.firstHeaderPointer.intValue = 2047 or self.firstHeaderPointer.intValue < 1902 <p>5&nbsp;bits</p> <p>11&nbsp;bits</p> Instrument Source Packet OCL let config : Configuration = self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration, counterWrapValue : Set(ApidSuffixAndMaxCounter) = config.maxCounterPerApidSuffixConfig.apidSuffixAndMaxCounter->select(x : ApidSuffixAndMaxCounter | x.apidSuffix = self.packetPrimaryHeader.apidPcat) in config.rtStpsConfig.xsveRtStps.missionName = 'S2A' and self.packetDataField.oclIsTypeOf(IdlePacketDataField) = false implies counterWrapValue->size() = 1 and self.packetPrimaryHeader.sequenceCount.intValue <= counterWrapValue->asOrderedSet()->first().maxSscCounterValue OCL let transmissionData : TransmissionData = self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData, rtStpsConfig : XsveRtStps = transmissionData.configuration.rtStpsConfig.xsveRtStps in self.packetPrimaryHeader->notEmpty() and self.packetPrimaryHeader.apidPid = rtStpsConfig.idleApid.apidPid and self.packetPrimaryHeader.apidPcat = rtStpsConfig.idleApid.apidPcat and self.packetDataField.oclIsTypeOf(IdlePacketDataField) and self.packetPrimaryHeader.versionNumber.intValue = 0 and self.packetPrimaryHeader.type.intValue = 0 and self.packetPrimaryHeader.shf.intValue = 0 and self.packetPrimaryHeader.sequenceFlags.intValue = 3 and self.packetPrimaryHeader.sequenceCount.intValue = 0 and self.packetDataField.oclAsType(IdlePacketDataField).idleDataArray.byte->at(1).intValue = 85 and self.packetDataField.oclAsType(IdlePacketDataField).idleDataArray.byte->at(2).intValue = 85 and self.packetDataField.oclAsType(IdlePacketDataField).idleDataArray.byte->at(3).intValue = 85 and self.packetDataField.oclAsType(IdlePacketDataField).idleDataArray.byte->at(4).intValue = 85 OCL let ispSequenceCount : Integer = self.packetPrimaryHeader.sequenceCount.intValue, prevIsp : Isp = self.prevOnChannelOfSameApid, prevSequenceCount : Integer = prevIsp.packetPrimaryHeader.sequenceCount.intValue, config : Configuration = self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration, apidCountWrapList : Set(ApidSuffixAndMaxCounter) = config.maxCounterPerApidSuffixConfig.apidSuffixAndMaxCounter, maxSscCounterValue : Integer = apidCountWrapList->select(i : ApidSuffixAndMaxCounter | i.apidSuffix = prevIsp.packetPrimaryHeader.apidPcat)->asOrderedSet()->first().maxSscCounterValue in not self.prevOnChannelOfSameApid->isEmpty() and (self.packetPrimaryHeader.apidPid <> config.rtStpsConfig.xsveRtStps.idleApid.apidPid or self.packetPrimaryHeader.apidPcat <>config.rtStpsConfig.xsveRtStps.idleApid.apidPcat) implies if config.rtStpsConfig.xsveRtStps.missionName = 'S2A' then if prevSequenceCount < maxSscCounterValue then ispSequenceCount = prevSequenceCount + 1 else prevSequenceCount = maxSscCounterValue and ispSequenceCount = 0 endif else if prevSequenceCount < 16383 then ispSequenceCount = prevSequenceCount + 1 else prevSequenceCount = 16383 and ispSequenceCount = 0 endif endif OCL let prevIsp : Isp = self.prevOnChannelOfSameApid in prevIsp.packetDataField.oclIsTypeOf(ActivePacketDataField) = true and self.packetDataField.oclIsTypeOf(ActivePacketDataField) = true and prevIsp.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclIsTypeOf(SarS1DataFieldHeader) = true and self.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclIsTypeOf(SarS1DataFieldHeader) = true implies prevIsp.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclAsType(SarS1DataFieldHeader).tcCoarseTime.intValue < self.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclAsType(SarS1DataFieldHeader).tcCoarseTime.intValue or ( prevIsp.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclAsType(SarS1DataFieldHeader).tcCoarseTime.intValue = self.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclAsType(SarS1DataFieldHeader).tcCoarseTime.intValue and prevIsp.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclAsType(SarS1DataFieldHeader).tcFineTime.intValue <= self.packetDataField.oclAsType(ActivePacketDataField).packetSecondaryHeader.oclAsType(SarS1DataFieldHeader).tcFineTime.intValue ) OCL if self.lastPacket = false then self.isPacketComplete() = true else true endif OCL (self.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid->exists(x : Apid | x.apidPid = self.packetPrimaryHeader.apidPid and x.apidPcat = self.packetPrimaryHeader.apidPcat) and self.packetDataField.oclIsTypeOf(IdlePacketDataField)) or (self.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid->exists(x : Apid | x.apidPid <> self.packetPrimaryHeader.apidPid or x.apidPcat <> self.packetPrimaryHeader.apidPcat) and self.packetDataField.oclIsTypeOf(ActivePacketDataField)) OCL let transmissionData : TransmissionData = self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData, rtStpsConfig : XsveRtStps = transmissionData.configuration.rtStpsConfig.xsveRtStps in if self.packetPrimaryHeader->notEmpty() and (self.completedLoading = true) then if (self.packetPrimaryHeader.apidPid = rtStpsConfig.idleApid.apidPid) and (self.packetPrimaryHeader.apidPcat = rtStpsConfig.idleApid.apidPcat) then PacketType::IDLE else PacketType::ACTIVE endif else PacketType::UNDEFINED endif OCL self.mpduActivePacketZone->indexOf(packetZone) OCL self.loadedFromStart and ((self.firstSpanLength >= 6) or self.completedLoading) OCL self.packetPrimaryHeader->size() > 0 and (self.packetDataField.oclIsTypeOf(IdlePacketDataField) or self.packetDataField.oclIsTypeOf(ActivePacketDataField)) OCL self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.validApidsConfig.ispInfo->exists(x : IspInfo | x.packetType = packetType and x.missionName = self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.missionName and x.apidValue->exists(y : Apid | y.apidPid = self.packetPrimaryHeader.apidPid and y.apidPcat = self.packetPrimaryHeader.apidPcat) ) OCL self.firstSpanStartIndex OCL if self.packetPrimaryHeader->size() > 0 then self.packetPrimaryHeader.dataLength.intValue else -1 endif OCL if self.packetPrimaryHeader->size() >0 then self.packetPrimaryHeader.apidPid.value.intValue * 16 + self.packetPrimaryHeader.apidPcat.value.intValue else -1 endif OCL self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPid.value.intValue*16 + self.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPcat.value.intValue OCL self.mpduActivePacketZone->first().vcdu.cadu.index X-Band System Validation Equipment (XSVE) System Input File OCL self.channelData->size() > 0 <p>1902&nbsp;&nbsp;bytes</p> <p>variable&nbsp;length&nbsp;byte&nbsp;array</p> <p>Channel&nbsp;Access&nbsp;Data&nbsp;Unit</p><p>2044&nbsp;bytes</p> OCL let caduFrameCount : Integer = self.vcdu.vcduHeader.virtualChannelFrameCount.intValue, prevCaduFrameCount : Integer = self.prevOnChannel.vcdu.vcduHeader.virtualChannelFrameCount.intValue in not self.prevOnChannel->isEmpty() implies if prevCaduFrameCount < 16777215 then caduFrameCount = prevCaduFrameCount + 1 else prevCaduFrameCount = 16777215 and caduFrameCount = 0 endif OCL self.channelData.hasExtendedCadu OCL self.index OCL self.isp->forAll(x : Isp | self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.vcdusConfig.vcduConfig->select(y | y.vcid = self.vcdu.vcduHeader.virtualChannelId).ispsConfig.ispConfig.apid->exists(z | z.apidPid = x.packetPrimaryHeader.apidPid and z.apidPcat = x.packetPrimaryHeader.apidPcat) or (x.packetPrimaryHeader.apidPid = self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPid and x.packetPrimaryHeader.apidPcat = self.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.idleApid.apidPcat) ) OCL self.isp->select(i : Isp | i.mpduActivePacketZone->at(1) = self) OCL self.isp OCL self.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps->exists(x: XsveRtStps | x.missionName = MissionName::Sentinel1) and (self.packetSecondaryHeader.oclIsTypeOf(SarS1DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(TmGpsrS1DataFieldHeader)) or self.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps->exists(x: XsveRtStps | x.missionName = MissionName::Sentinel2) and (self.packetSecondaryHeader.oclIsTypeOf(MsiS2DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(TmGpsrS2DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(TmStrS2DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(TmCswS2DataFieldHeader)) or self.isp.mpduActivePacketZone.vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps->exists(x: XsveRtStps | x.missionName = MissionName::Sentinel3) and (self.packetSecondaryHeader.oclIsTypeOf(OlciS3DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(DorisS3DateFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(MwrS3DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(TmGpsrS3DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(SlstrS3DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(TmNavattS3DataFieldHeader) or self.packetSecondaryHeader.oclIsTypeOf(SralS3DataFieldHeader) ) OCL if self.isp.mpduActivePacketZone->first().vcdu.cadu.channelData.transmissionData.configuration.rtStpsConfig.xsveRtStps.extendedCadu then true else false endif --SarS1DataFieldHeader --TmGpsrS1DataFieldHeader -- MsiS2DataFieldHeader --TmGpsrS2DataFiefldHeader --TmStrS2DataFieldHeader --TmCswS2DataFieldHeader OCL let setOfEnums : Set(IspPacketTypes) = IspPacketTypes.allInstances() in if self.isp.packetPrimaryHeader->notEmpty() then if setOfEnums->select(i : IspPacketTypes | self.isp.isTypeOfPacket(i))->asOrderedSet()->notEmpty() then setOfEnums->select(i : IspPacketTypes | self.isp.isTypeOfPacket(i))->asOrderedSet()->first() else IspPacketTypes::UNDEFINED endif else IspPacketTypes::UNDEFINED endif <p>For&nbsp;each&nbsp;physical&nbsp;channel&nbsp;of&nbsp;the&nbsp;satellite.</p> OCL self.cadu->size() > 0 S1 S2 S3 <p>Last&nbsp;4&nbsp;bits&nbsp;of&nbsp;apid.</p> <p>First&nbsp;7&nbsp;bits&nbsp;of&nbsp;apid.</p> OCL self.value.intValue.div(16) OCL self.value.intValue.mod(16) OCL 7 OCL 4