#[non_exhaustive]pub enum CaError {
NoCaDescriptor {
program_number: u16,
},
Io(Error),
NotSent(String),
Serialize(Error),
PmtParse(Error),
Cat(Error),
NotManaged {
program_number: u16,
},
}Expand description
Errors from the managed CAS-layer API (Driver::add_service and friends,
#763).
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
NoCaDescriptor
The PMT carries no CA_descriptor (ISO/IEC 13818-1 §2.6.16, tag
0x09) at programme or elementary-stream level — there is nothing for
the CAM to descramble, so no ca_pmt is built or sent.
Io(Error)
Sending the built ca_pmt to the device failed.
NotSent(String)
The stack could not hand the ca_pmt to the CAM (no open
conditional-access session, connection not active, or a full outbound
queue); the managed service set is left unchanged.
Serialize(Error)
The ca_pmt projected from the caller’s PMT has no valid wire
encoding (a program_info_length/ES_info_length or version_number
out of its spec range — e.g. a source PMT whose descriptor loop is
corrupted past the section end) or its stored raw PMT no longer
re-parses. r10-W-20: Driver::add_service and the re-query timer
must reject such a PMT as an Err value rather than panic inside
the serialization.
PmtParse(Error)
The raw PMT bytes stored at add_service time no longer re-parse on
a re-query tick (corruption of the caller’s own state); the re-query
is reported as an error instead of panicking (r10-W-20). Shares the
dvb_si::error::Error payload of the Cat arm.
Cat(Error)
The CAT’s descriptor loop (ISO/IEC 13818-1 §2.4.4.7) carried a
truncated CA_descriptor (ISO/IEC 13818-1 §2.6.16) — Driver::set_cat
could not extract the CAID/EMM-PID map.
NotManaged
The programme is not in the slot’s managed CAS-layer service set, so
there is nothing to update (EN 50221 §8.4.3.4 Table 25,
ca_pmt_list_management = update). Returned by
Driver::update_service for an
unknown program_number.
Trait Implementations§
Source§impl Error for CaError
impl Error for CaError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()