Skip to main content

Module ci_plus

Module ci_plus 

Source
Expand description

CI Plus extensions (ETSI TS 103 205) — the resource-scoped APDU layer.

Like the TS 101 699 extensions (crate::ci_ext), the CI Plus resources defined by TS 103 205 have their own apdu_tag namespace that collides with EN 50221 and TS 101 699 — e.g. the Multi-stream resource’s tags live in 0x9F92xx, Content Control’s in 0x9F90xx, and the extended CA Support ca_pmt/ca_pmt_reply reuse EN 50221’s 0x9F8032/0x9F8033 verbatim. The same tag bytes therefore denote different objects depending on which resource’s session they arrive on, so they cannot join the global crate::AnyApdu. This module provides a resource-scoped dispatch (CiPlusApdu): parsing keys on the resource_identifier() first (classify), then the leading apdu_tag selects the object within that resource.

Spec: ETSI TS 103 205 V1.4.1 — resource IDs in docs/ts_103_205/resource-ids.md; per-resource layouts cited in their own module docs.

§Resources implemented this pass

  • Multi-stream (0x00900041, multistream) — CICAM_multistream_capability / PID_select_req / PID_select_reply.
  • Content Control multi-stream (0x008C1041, content_control) — the printed-syntax extended APDUs cc_PIN_reply / cc_PIN_event, plus the SAC protocol datatype model.
  • Multi-stream Host Control (0x00200081, base v3 0x00200043, multistream_host_control) — the tune APDUs tune_triplet_req / tune_lcn_req / tune_ip_req / tuner_status_req / tuner_status_reply. Both resource ids route to the same CiPlusResource::MultistreamHostControl kind, carrying the multistream_host_control::HostControlMode that selects the tune_ip_req reserved-bit budget. tune_broadcast_req / tune_reply / ask_release(_reply) are deferred to CI Plus V1.3 and not encoded.
  • Sample decryption (0x00920041, sample_decryption) — sd_info_req / sd_info_reply / sd_start(_reply) / sd_update(_reply), with opaque DRM metadata / UUID payloads.
  • CICAM Player (0x00930041, cicam_player) — the full 16-APDU set 9FA0009FA00F (CICAM_player_verify_reqCICAM_player_update_reply).
  • Auxiliary File System / file retrieval (0x00910041, file_retrieval) — FileSystemOffer / FileSystemAck, plus FileRequest / FileAcknowledge whose bodies defer to CI Plus V1.3 (carried opaquely; tags only established).

§Not dispatched here

  • CA Support multi-stream (ca_support) — TS 103 205 does not print a resource_id for the resource_type = 2 variant (it defers to CI Plus V1.3), so its extended ca_pmt/ca_pmt_reply are standalone typed structs, directly constructible/parseable but not wired into CiPlusApdu.
  • Low-Speed Comms v4 extensions (low_speed_comms_v4) — TS 103 205 §10 prints no LSC v4 resource_id (the LSC resource_id + base comms_* APDUs defer to CI Plus V1.3), so the v4 comms_info / comms_IP_config APDUs and the hybrid/multicast descriptors are standalone typed structs (tag-dispatch helper), not wired into CiPlusApdu.
  • URI v3 (uri) — the uri_message is a SAC datatype (datatype_id 25), not an APDU/resource, so uri::UriMessage is a standalone typed struct used from the Content Control SAC layer.
  • CI Plus descriptors (descriptors) — Sample-Mode TLV descriptors, not APDUs, so they are standalone too.

Modules§

ca_support
Conditional Access Support — CI Plus multi-stream ca_pmt / ca_pmt_reply — ETSI TS 103 205 V1.4.1 §6.4.4, Tables 14/16 (PDF pp. 38-40). See docs/ts_103_205/ca-support.md.
cicam_player
CICAM Player resource objects — ETSI TS 103 205 V1.4.1 §8.8, Tables 48-71 (PDF pp. 86-96). See docs/ts_103_205/cicam-player.md.
content_control
Content Control resource — multi-stream extensions — ETSI TS 103 205 V1.4.1 §6.4.3, Tables 6-13 (PDF pp. 34-38). See docs/ts_103_205/content-control.md.
descriptors
CI Plus Sample-Mode descriptors (IV / key-identifier) — ETSI TS 103 205 V1.4.1 §7.5.5.4, Tables 45-47 (PDF pp. 79-80). See docs/ts_103_205/ci-plus-descriptors.md.
file_retrieval
Auxiliary File System resource (CICAM file retrieval) — ETSI TS 103 205 V1.4.1 §9, Tables 72-75 (PDF pp. 96-99). See docs/ts_103_205/file-retrieval.md.
low_speed_comms_v4
Low Speed Communication resource version 4 extensions — ETSI TS 103 205 V1.4.1 §10, Tables 76-89 (PDF pp. 100-110). See docs/ts_103_205/low-speed-comms-v4.md.
multistream
Multi-stream resource objects — ETSI TS 103 205 V1.4.1 §6.4.2, Tables 2-5 (PDF pp. 31-33). See docs/ts_103_205/multi-stream-resource.md.
multistream_host_control
Multi-stream Host Control resource objects — ETSI TS 103 205 V1.4.1 §6.4.5, Tables 17-22 (PDF pp. 40-44); base DVB Host Control v3 tune APDUs §13.2, Tables 97-102 (PDF pp. 126-130). See docs/ts_103_205/multi-stream-host-control.md.
sample_decryption
Sample decryption resource objects — ETSI TS 103 205 V1.4.1 §7.4, Tables 30-39 (PDF pp. 52-60). See docs/ts_103_205/sample-decryption.md.
uri
Usage Rules Information (URI) version 3 — ETSI TS 103 205 V1.4.1 §11, Tables 90-92 (PDF pp. 110-112). See docs/ts_103_205/usage-rules-v3.md.

Enums§

CiPlusApdu
A parsed CI Plus APDU, scoped to the resource it arrived on.
CiPlusResource
The CI Plus resource a ResourceId denotes, for the resources dispatched by CiPlusApdu. Returns None for any other resource (including the deferred-resource_id CA Support multi-stream type).

Constants§

CICAM_PLAYER
CICAM Player resource — Class 147, Type 1, Version 1 (0x00930041). §8.8, Table 71.
CONTENT_CONTROL
Content Control multi-stream resource — Class 140, Type 65, Version 1 (0x008C1041). §6.4.3.1 Table 6.
FILE_RETRIEVAL
Auxiliary File System resource (CICAM file retrieval) — Class 145, Type 1, Version 1 (0x00910041). §9, Table 75.
HOST_CONTROL_V3
Base DVB Host Control v3 resource — Class 32, Type 1, Version 3 (0x00200043). §13. The multi-stream tune APDUs derive from this; both ids route to CiPlusResource::MultistreamHostControl, distinguished only by the tune_ip_req reserved-bit budget (multistream_host_control::HostControlMode).
MULTISTREAM
Multi-stream resource — Class 144, Type 1, Version 1 (0x00900041). §6.4.2.1 Table 2.
MULTISTREAM_HOST_CONTROL
Multi-stream Host Control resource — Class 32, Type 2, Version 1 (0x00200081). §6.4.5, Table 17. Based on DVB Host Control v3.
SAMPLE_DECRYPTION
Sample decryption resource — Class 146, Type 1, Version 1 (0x00920041). §7.4, Table 30.

Functions§

classify
Map a ResourceId to the CI Plus resource it denotes, or None for any resource not dispatched by CiPlusApdu.