Skip to main content

encode_qr

Function encode_qr 

Source
pub fn encode_qr(payload: &SetupPayload) -> Result<String>
Expand description

Encode a SetupPayload as a Matter QR string (Matter Core Spec §5.1.3.1).

The returned string always begins with MT: followed by Matter Base38.

§Errors

Returns Error::QrRequiresVidPid if either VID or PID is None. Returns Error::CustomFlowUnsupported for CommissioningFlow::Custom.

§Examples

use matter_commissioning::setup::{
    encode_qr, parse_qr,
    CommissioningFlow, Discriminator, DiscoveryCapabilities,
    Passcode, SetupPayload,
};
let payload = SetupPayload {
    version: 0,
    vendor_id: Some(0xFFF1),
    product_id: Some(0x8000),
    commissioning_flow: CommissioningFlow::Standard,
    discovery_capabilities: DiscoveryCapabilities::ON_NETWORK,
    discriminator: Discriminator::new(0xF00).unwrap(),
    passcode: Passcode::new(20_202_021).unwrap(),
};
let qr = encode_qr(&payload).unwrap();
assert!(qr.starts_with("MT:"));
assert_eq!(parse_qr(&qr).unwrap(), payload);