unit Common; interface const Over = 120 (* frame data length *); ConFaTime = 4*120/128 (* conversion of 1 step to time increment if sync from Siob and 120s per one rotation *); mMneOff = $10 (* data mnemo index offset for MON *); mErrIx = 100 (* relative index of MON ErrData mnemo *); mHdrIx = $04 (* index for MON header record *); vMneOff = $A0 (* data mnemo index offset for VDP *); vErrIx = 32 (* relative index of VDP ErrData mnemo *); vHdrIx = $03 (* index for VDP header record *); TriEx1 = 4 (* 4x triplet exposition in steps for npr1 *); TriEx2 = 16 (* 4x triplet exposition in steps for npr2 *); RedSam = 10 (* reduced number of samples in VDP regimes 1 *); type tlm_tim = array [1..3] of byte (* telemetry time *); tlm_data = array [7..127] of byte (* frame data after the header *); tlm_data0 = array [7..119] of byte; TeleFrame = record Sts : byte (* status *); FrFa : byte (* frame phase *); Rt : byte (* rotation *); FrTime : tlm_tim (* frame time *); Off : byte (* offset to the first block header *); case byte of 0: (Data : tlm_data); 1: (sData : tlm_data0; sHdr0 : word; sHdr1 : word; sDfn : word; sTim : word); 2: (mData : tlm_data0; mHdr0 : word; mHdr1 : word; mDfn : byte; mTim : word; mCks : byte); end; DataLine = record Len : byte (* length of the following record *); RecTime : tlm_tim (* reception time *); MneIx : byte (* mnemo index *); Sts : byte (* data status *); Fa : byte (* data phase *); Rt : byte (* data rotation *); FrTime : tlm_tim (* data frame time *); FiNo : byte (* first data item number *); Data : tlm_data end; HeaderLine = record Len : byte (* length of the following record *); RecTime : tlm_tim (* reception time *); MneIx : byte (* HdrIx *); Sts : byte (* frame status *); Fa : byte (* frame phase *); Rt : byte (* frame rotation *); FrTime : tlm_tim (* frame time *); Source : byte (* frame source *); Count : word (* frame number *); end; const UnRt = $FF (* undefined rotation *); UnTime : tlm_tim = ($FF,$FF,$FF) (* undefined frame time *); implementation begin end.