pub struct SessionConfig {Show 22 fields
pub dev_version: &'static str,
pub dev_model: Option<&'static str>,
pub default_device_name: &'static str,
pub mtu: u16,
pub sync_word: u16,
pub min_tx_power_dbm: i8,
pub max_tx_power_dbm: i8,
pub freq_khz_min: u32,
pub freq_khz_max: u32,
pub defaults: RadioSettings,
pub default_duty_limit: u16,
pub duty: &'static DutyLedger,
pub battery: Option<BatteryFields>,
pub alert: Option<AlertConfig>,
pub time: Option<TimeConfig>,
pub gnss: Option<GnssConfig>,
pub illuminance: bool,
pub ble: bool,
pub ble_pairing: bool,
pub reboot: bool,
pub stats: Option<&'static StatsLedger>,
pub mac_node: bool,
}Expand description
Fixed properties of the device this session runs on.
Fields§
§dev_version: &'static strPROP_DEV_VERSION string (without NUL terminator).
dev_model: Option<&'static str>PROP_DEV_MODEL string (without NUL terminator), naming the
hardware this firmware runs on. None on a device with no fixed
model — a simulator, or a board brought up before it has a name —
and the property is then absent rather than empty.
default_device_name: &'static strFactory/post-reset value of PROP_DEV_NAME.
mtu: u16PROP_PHY_MTU; must not exceed MAX_MTU.
sync_word: u16The only sync word this firmware can use; PROP_PHY_LORA_SW
sets must match it (v0 limitation).
min_tx_power_dbm: i8Lowest transmit power the radio supports, in dBm.
max_tx_power_dbm: i8Highest transmit power the radio supports, in dBm.
freq_khz_min: u32Tunable frequency range in kHz, inclusive.
freq_khz_max: u32§defaults: RadioSettingsPost-reset radio settings. enabled is forced off on reset per
the spec regardless of what this carries.
default_duty_limit: u16Post-reset PROP_PHY_DUTY_LIMIT.
duty: &'static DutyLedgerThe shared duty ledger. The session owns the limit’s lifecycle
and records its own transmissions here, but the ledger is
consulted by every radio client on the device (the device node’s
TX path draws from the same budget), so PROP_PHY_DUTY_NOW
reports the combined figure and PROP_PHY_DUTY_LIMIT bounds the
combined airtime.
battery: Option<BatteryFields>None: not battery powered; CAP_BATTERY is absent and
PROP_BATTERY is unknown. Some: the capability is advertised
and the fields say which measurements the platform reports.
alert: Option<AlertConfig>None: the board has no way to make itself conspicuous;
CAP_ALERT is absent and PROP_ALERT is unknown. Some: the
capability is advertised and the config carries the deadline.
time: Option<TimeConfig>None: the board keeps no wall clock; CAP_TIME is absent and
PROP_TIME / PROP_TZ_OFFSET are unknown.
gnss: Option<GnssConfig>None: no GNSS receiver; CAP_GNSS is absent and the positioning
properties are unknown. Meaningful only alongside
time — see GnssConfig.
illuminance: boolWhether an ambient light sensor is fitted. When set,
CAP_ILLUMINANCE is advertised and PROP_ILLUMINANCE samples on
every read; otherwise the property is unknown.
ble: boolWhether the device has a Bluetooth transport it can make
unreachable on demand. When set, CAP_BLE is advertised and
PROP_BLE_ENABLED and PROP_BLE_LINK exist; otherwise both
properties are unknown.
ble_pairing: boolWhether the platform manages its own Bluetooth bonds. When set,
PROP_BLE_BOND_COUNT and PROP_BLE_PAIRING exist and
CMD_BLE_CLEAR_BONDS reaches its effect; otherwise the command
answers STATUS_UNIMPLEMENTED and both properties are unknown.
Meaningful only alongside ble.
Deliberately not a capability of its own. CAP_BLE is the only
Bluetooth capability there is, and a host that wants to know
whether this device manages its bonds asks for the count and reads
the refusal — a question it has to be able to answer anyway, since
any property may be refused by firmware older than the host.
reboot: boolWhether the platform can restart the hardware on command. When
set, CAP_REBOOT is advertised and CMD_REBOOT reaches
Effect::Reboot; otherwise the command answers
STATUS_UNIMPLEMENTED. Every firmware sets this; a session that
is a process rather than a board must not.
stats: Option<&'static StatsLedger>The shared traffic ledger. None: the device keeps no counters;
CAP_STATS is absent and the PROP_STAT_* properties are
unknown. Some: the capability is advertised and the counters
are read and cleared through it.
Shared for the same reason the duty ledger is — the session is
one of several radio clients and none of them sees the whole
picture — and read straight out of encode_prop rather than
fetched through an effect, because a host asks for all of these
at once and nine deferred round trips to answer one screen would
be absurd.
The four counters the MAC feeds
([Counter::needs_node]) additionally require
mac_node.
mac_node: boolWhether a mesh node runs behind this session — a MAC of the
device’s own that can repeat and that a backhauled host can sit
point-to-point behind. Every firmware sets this; a simulated
device with no node behind it must not, or it would advertise
CAP_MAC_BACKHAUL while Effect::ApplyBackhaul connects the
host to nothing. When unset, CAP_REPEATER and
CAP_MAC_BACKHAUL are absent and the repeater and backhaul
properties are unknown.
Trait Implementations§
Source§impl Clone for SessionConfig
impl Clone for SessionConfig
Source§fn clone(&self) -> SessionConfig
fn clone(&self) -> SessionConfig
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SessionConfig
impl Debug for SessionConfig
impl Copy for SessionConfig
Auto Trait Implementations§
impl Freeze for SessionConfig
impl !RefUnwindSafe for SessionConfig
impl Send for SessionConfig
impl Sync for SessionConfig
impl Unpin for SessionConfig
impl !UnwindSafe for SessionConfig
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)