Skip to main content

Module discovery

Module discovery 

Source
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

  1. Advertising: Nodes broadcast their presence using Peat beacons containing node ID, hierarchy level, capabilities, and battery status.

  2. Scanning: Nodes scan for Peat beacons, filtering by hierarchy level and signal strength to find potential parents.

  3. 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
AdvertisingPacket
Built advertising packet
BeaconKey
Beacon encryption key derived from mesh genesis
EncryptedBeacon
Encrypted beacon for privacy-preserving advertisements
ParsedAdvertisement
Parsed advertising data from a discovered device
PeatBeacon
Peat Beacon data structure
ScanFilter
Filter criteria for scanning
Scanner
BLE Scanner for discovering Peat nodes
TrackedDevice
Tracked device state

Enums§

AdvertiserState
Advertiser state
AdvertisingMode
Advertising mode
ScannerState
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