Expand description
Peat Discovery Module
This module implements BLE discovery for Peat mesh networks, including:
- Beacon format encoding/decoding
- Advertising for broadcasting presence
- Scanning for discovering peers
§Discovery Flow
-
Advertising: Nodes broadcast their presence using Peat beacons containing node ID, hierarchy level, capabilities, and battery status.
-
Scanning: Nodes scan for Peat beacons, filtering by hierarchy level and signal strength to find potential parents.
-
Parent Selection: The scanner tracks discovered devices and selects the best parent candidate based on hierarchy level and RSSI.
§Example
ⓘ
use peat_btle::discovery::{Advertiser, Scanner, ScanFilter};
use peat_btle::{NodeId, HierarchyLevel};
use peat_btle::config::DiscoveryConfig;
// Create advertiser
let config = DiscoveryConfig::default();
let mut advertiser = Advertiser::new(config.clone(), NodeId::new(0x12345678))
.with_name("PEAT-Node".to_string());
advertiser.set_hierarchy_level(HierarchyLevel::Squad);
advertiser.start();
// Create scanner
let mut scanner = Scanner::new(config);
scanner.set_filter(ScanFilter::potential_parents(HierarchyLevel::Platform));
scanner.start();Structs§
- Advertiser
- Peat Beacon Advertiser
- Advertising
Packet - Built advertising packet
- Beacon
Key - Beacon encryption key derived from mesh genesis
- Encrypted
Beacon - Encrypted beacon for privacy-preserving advertisements
- Parsed
Advertisement - Parsed advertising data from a discovered device
- Peat
Beacon - Peat Beacon data structure
- Scan
Filter - Filter criteria for scanning
- Scanner
- BLE Scanner for discovering Peat nodes
- Tracked
Device - Tracked device state
Enums§
- Advertiser
State - Advertiser state
- Advertising
Mode - Advertising mode
- Scanner
State - Scanner state machine
Constants§
- BEACON_
COMPACT_ SIZE - Compact beacon size (for legacy advertising)
- BEACON_
SIZE - Beacon size in bytes
- BEACON_
VERSION - Peat beacon protocol version
- ENCRYPTED_
BEACON_ SIZE - Size of encrypted beacon in bytes
- ENCRYPTED_
BEACON_ VERSION - Version byte for encrypted beacon format
- ENCRYPTED_
DEVICE_ NAME - Generic device name for encrypted beacons
Functions§
- mesh_
id_ to_ bytes - Convert mesh_id string to 4-byte identifier for beacon