Skip to main content

encode_manual_code

Function encode_manual_code 

Source
pub fn encode_manual_code(payload: &SetupPayload) -> String
Expand description

Encode a SetupPayload as a manual pairing code (Matter Core Spec §5.1.4).

Emits the 21-digit form if vendor_id and product_id are both Some, otherwise the 11-digit form. The final digit is always the Verhoeff check digit.

§Examples

use matter_commissioning::setup::{
    encode_manual_code, parse_manual_code,
    CommissioningFlow, Discriminator, DiscoveryCapabilities,
    Passcode, SetupPayload,
};
let payload = SetupPayload {
    version: 0,
    vendor_id: None,
    product_id: None,
    commissioning_flow: CommissioningFlow::Standard,
    discovery_capabilities: DiscoveryCapabilities::empty(),
    discriminator: Discriminator::new(0xF00).unwrap(),
    passcode: Passcode::new(20_202_021).unwrap(),
};
let code = encode_manual_code(&payload);
assert_eq!(code.len(), 11);
assert_eq!(parse_manual_code(&code).unwrap(), payload);