SessionConfig

Struct SessionConfig 

Source
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 str

PROP_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 str

Factory/post-reset value of PROP_DEV_NAME.

§mtu: u16

PROP_PHY_MTU; must not exceed MAX_MTU.

§sync_word: u16

The only sync word this firmware can use; PROP_PHY_LORA_SW sets must match it (v0 limitation).

§min_tx_power_dbm: i8

Lowest transmit power the radio supports, in dBm.

§max_tx_power_dbm: i8

Highest transmit power the radio supports, in dBm.

§freq_khz_min: u32

Tunable frequency range in kHz, inclusive.

§freq_khz_max: u32§defaults: RadioSettings

Post-reset radio settings. enabled is forced off on reset per the spec regardless of what this carries.

§default_duty_limit: u16

Post-reset PROP_PHY_DUTY_LIMIT.

§duty: &'static DutyLedger

The 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: bool

Whether 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: bool

Whether 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: bool

Whether 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: bool

Whether 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: bool

Whether 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

Source§

fn clone(&self) -> SessionConfig

Returns a duplicate of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SessionConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Copy for SessionConfig

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.