Astro~/0.4
** Conformance
** Astro * Conformance
** /conformance/cop

COP-1

PICS proforma: what this package implements, clause by clause.

Conformance Statement for pkg/cop, CCSDS 232.1-B-2


A2.1 GENERAL INFORMATION

A2.1.1 Identification of PICS

FieldValue
Date of Statement (DD/MM/YYYY)25/08/2026
PICS Serial NumberASTRO-COP-PICS-002
System Conformance Statement Cross-ReferenceThis document

A2.1.2 Identification of Implementation Under Test (IUT)

FieldValue
Implementation Nameastro/pkg/cop
Implementation VersionSee go.mod / latest commit on main
Special ConfigurationNone
Other InformationGo library implementing CCSDS COP-1 reliable frame delivery. Three components: FOP-1 (ground-side state machine S1-S6 with directives, T1 timer, transmission limit, suspend/resume, BC/BD paths), FARM-1 (spacecraft-side frame acceptance with positive/negative windows, buffer-driven Wait state, BC control command decoding), and CLCW (status reporting via TM return link). Thread-safe implementations with mutex protection. The T1 timer is caller-driven (no wall clock): configure with SetT1Initial and advance with Tick.

A2.1.3 Identification of Supplier

FieldValue
SupplierRavi Suhag
Contact Point for QueriesGitHub, github.com/ravisuhag/astro
Implementation Name(s) and Version(s)astro/pkg/cop (Go package)
System Name(s)Astro

A2.1.4 Identification of Specification

FieldValue
SpecificationCCSDS 232.1-B-2 (Communications Operation Procedure-1, Blue Book, Issue 2, October 2019)
Have any exceptions been required?Yes [X] No [ ]

NOTE, The FOP-1 event/action behavior follows the state tables of the standard as closely as practical for a library API; simplifications are declared per item below and in the exceptions list.


A2.2 REQUIREMENTS LIST

Table A-1: FOP-1 State Machine (section 5.1)

ItemDescriptionReferenceStatusSupportNotes
COP-1S1, Active5.1, table 5-1MYes
COP-2S2, Retransmit without Wait5.1MYes
COP-3S3, Retransmit with Wait5.1MYes
COP-4S4, Initialising without BC Frame5.1MYes
COP-5S5, Initialising with BC Frame5.1MYes
COP-6S6, Initial5.1MYes
COP-7Suspend States SS 0-45.1.9MYes
COP-8Alert with Reason Codes5.1.10MYes

Table A-2: FOP-1 Directives (section 5.2)

ItemDescriptionReferenceStatusSupportNotes
COP-9Initiate AD Service (without CLCW check)5.2 (E23)MYes
COP-10Initiate AD Service with CLCW check5.2 (E24)MYes
COP-11Initiate AD Service with Unlock5.2 (E25)MYes
COP-12Initiate AD Service with Set V(R)5.2 (E27)MYes
COP-13Terminate AD Service5.2 (E29)MYes
COP-14Resume AD Service5.2 (E30-E33)MYes
COP-15Set V(S)5.2 (E35)MYes
COP-16Set FOP Sliding Window5.2 (E36)MYes
COP-17Set T1 Initial5.2 (E37)MYes
COP-18Set Transmission Limit5.2 (E38)MYes
COP-19Set Timeout Type5.2 (E39)MYes

Table A-3: FOP-1 Timer and Transmission Limit

ItemDescriptionReferenceStatusSupportNotes
COP-20T1 Timer5.2 (E16-E18)MYes
COP-21Transmission Limit / Transmission Count5.2MYes
COP-22Timer expiry actions5.2 (E16-E18)MYes

Table A-4: FOP-1 CLCW Processing (E1-E14)

ItemDescriptionReferenceStatusSupportNotes
COP-23Lockout detectionE14MYes
COP-24N(R) validity checkE13MYes
COP-25AcknowledgmentE1/E5MYes
COP-26Retransmit flag handlingE8-E12MYes
COP-27Wait flag handlingE2/E6/E10MYes

Table A-5: FOP-1 Transmit Paths

ItemDescriptionReferenceStatusSupportNotes
COP-28AD frame transmission5.1MYes
COP-29BC frame transmission5.1MYes
COP-30BD frame transmission5.1MYes

Table A-6: FARM-1 (section 6)

ItemDescriptionReferenceStatusSupportNotes
COP-31S1, Open6.1MYes
COP-32S2, Wait6.1 (E2/E10)MYes
COP-33S3, Lockout6.1 (E5)MYes
COP-34Positive/negative window6.1.5 (E1-E5)MYes
COP-35Type-BC identification232.0-B-4 4.1.2.3MYes
COP-36Unlock control command4.1.3.3 / E7MYes
COP-37Set V(R) control command4.1.3.3 / E8MYes
COP-38FARM-B counter6.1.7MYes
COP-39CLCW generation6.2MYes

Table A-7: CLCW Format (section 4.2)

ItemDescriptionReferenceStatusSupportNotes
COP-40CLCW field layout4.2MYes

A2.3 CONFORMANCE SUMMARY

Overall Statistics

CategoryTotal ItemsSupportedNot Supported
Mandatory (M)40400
Total40400

Declared Simplifications

The event/action tables of CCSDS 232.1-B-2 are followed as closely as practical for a library API. Known deviations:

AreaDeviation
T1 timerCaller-driven (Tick), not wall-clock; a T1 initial of 0 disables it. The standard assumes a real timer; the mission must supply the tick source.
S5 confirmationThe BC frame is confirmed by observing the CLCW (Lockout cleared, or Report Value matching the pinned V(R)) rather than by tracking the FARM-B counter delta.
Wait_QueueHigher-layer flow control is a bounded queue (TransmitFrame + window check) rather than the standard's one-FDU Wait_Queue with Accept/Reject signals.
S4 dirty CLCWsIn S4, CLCWs with Wait or Retransmit set are ignored (initialisation keeps waiting under T1) rather than raising an immediate alert.

Key Implementations

AreaItemsImplementation
FOP-1 statesCOP-1-8S1-S6, SS 0-4, alerts with reason codes, purge-on-alert.
FOP-1 directivesCOP-9-19All 11 directives with parameter validation.
Timer/limitCOP-20-22Caller-driven T1, transmission limit/count, TT0/TT1.
CLCW processingCOP-23-27Lockout, N(R) validity, ack, retransmit/wait flag handling.
Transmit pathsCOP-28-30AD sliding window, BC via initiate directives, BD expedited.
FARM-1COP-31-39Positive/negative windows, buffer-driven Wait, spec-compliant BC decoding, FARM-B on all Type-B frames.
CLCWCOP-40Bit-exact codec.

Wire test vectors

The octets backing this statement live in the vector corpus — 29 vectors. Each vector names the clause it comes from and carries the derivation that produced it.

File
cop/clcw.json19 vectors
cop/farm1.json6 vectors
cop/fop1.json4 vectors

These are data files, so any implementation can check itself against the same octets. See CONTRACT.md for how, and how this is verified for what rests on a published vector versus a reading of the clause.