pub struct UlcpSyncRecord {Show 47 fields
pub capability_count: u32,
pub has_host_filtering: bool,
pub supports_offline_queue: bool,
pub supports_delegated_ack: bool,
pub supports_device_name: bool,
pub device_name: Option<String>,
pub supports_lora: bool,
pub supports_duty_cycle_limit: bool,
pub supports_battery: bool,
pub battery: Option<UlcpBatteryRecord>,
pub supports_repeater: bool,
pub supports_ident: bool,
pub supports_device_identity: bool,
pub supports_time: bool,
pub supports_gnss: bool,
pub supports_advert: bool,
pub supports_admin: bool,
pub supports_alert: bool,
pub supports_reboot: bool,
pub alert: Option<UlcpAlertState>,
pub phy_enabled: bool,
pub frequency_khz: u32,
pub transmit_power_dbm: i8,
pub bandwidth_hz: Option<u32>,
pub spreading_factor: Option<u8>,
pub coding_rate_denom: Option<u8>,
pub duty_cycle_now: Option<u16>,
pub duty_cycle_limit: Option<u16>,
pub saved: Option<SavedSnapshotRecord>,
pub queued_frames: Option<u16>,
pub dropped_frames: Option<u32>,
pub filter_count: Option<u32>,
pub host_channel_count: Option<u32>,
pub host_peer_count: Option<u32>,
pub auto_ack: Option<bool>,
pub repeater: Option<UlcpRepeaterSettingsRecord>,
pub dev_peer_keys: Option<Vec<Vec<u8>>>,
pub dev_admin_keys: Option<Vec<Vec<u8>>>,
pub dev_channel_ids: Option<Vec<Vec<u8>>>,
pub ident_role: Option<u8>,
pub ident_mobile: Option<bool>,
pub ident_position: Option<UlcpIdentPositionRecord>,
pub dev_discoverable: Option<bool>,
pub tz_offset_min: Option<i16>,
pub gnss: Option<UlcpGnssSettingsRecord>,
pub advert: Option<UlcpAdvertSettingsRecord>,
pub unreadable_properties: Vec<u32>,
}Expand description
Read-only, capability-gated device state gathered after host ownership has been resolved. Counts describe digest forms and contain no key material.
Fields§
§capability_count: u32§has_host_filtering: bool§supports_offline_queue: bool§supports_delegated_ack: bool§supports_device_name: bool§device_name: Option<String>PROP_DEV_NAME, when the device has one and reported it. Empty is
a device with no name rather than a device named “”.
supports_lora: bool§supports_duty_cycle_limit: bool§supports_battery: boolThe device measures its own power state (CAP_BATTERY). A device
without it never reports a battery, so callers have nothing to show.
battery: Option<UlcpBatteryRecord>PROP_BATTERY, when the device measures one and has reported it.
A reading rather than a setting, and absent for a reason that is
never a fault: on the local link a device announces this on its own
schedule, so a session that has only just attached has not heard one
yet. Deliberately not counted among unreadable_properties — there
is no setting here to be written over.
supports_repeater: boolThe device can forward for the mesh on its own (CAP_REPEATER).
supports_ident: boolThe device serves and configures its own advertised node identity
(CAP_IDENT).
supports_device_identity: boolThe device has an identity domain of its own (CAP_DEV_IDENTITY),
including the PROP_DEV_PEERS list.
supports_time: boolThe device keeps a wall clock (CAP_TIME). It says nothing about
where the time comes from, or whether the device currently knows
it — an unset clock is a device with CAP_TIME and no epoch.
supports_gnss: boolA GNSS receiver is fitted (CAP_GNSS), so the positioning
properties exist and the device can locate itself.
supports_advert: boolThe device announces itself on a schedule of its own
(CAP_ADVERT).
supports_admin: boolThe device answers Node Management Requests from the administrators
it lists (CAP_ADMIN). A device without it can only ever be
configured by whoever is holding it.
supports_alert: boolThe device can make itself conspicuous on request (CAP_ALERT).
supports_reboot: boolThe device can restart its hardware on request (CAP_REBOOT).
alert: Option<UlcpAlertState>PROP_ALERT: what the device is doing to make itself findable, when
it has said. Live state like battery, and absent on the same terms.
phy_enabled: bool§frequency_khz: u32§transmit_power_dbm: i8§bandwidth_hz: Option<u32>§spreading_factor: Option<u8>§coding_rate_denom: Option<u8>§duty_cycle_now: Option<u16>§duty_cycle_limit: Option<u16>§saved: Option<SavedSnapshotRecord>§queued_frames: Option<u16>§dropped_frames: Option<u32>§filter_count: Option<u32>§host_channel_count: Option<u32>§host_peer_count: Option<u32>§auto_ack: Option<bool>§repeater: Option<UlcpRepeaterSettingsRecord>Present when supports_repeater and the device reported the whole
policy.
dev_peer_keys: Option<Vec<Vec<u8>>>PROP_DEV_PEERS: the peer public keys stored on the device
identity, read back losslessly. Present when
supports_device_identity and the device reported the list.
dev_admin_keys: Option<Vec<Vec<u8>>>PROP_DEV_ADMINS: the node public keys allowed to manage this device
over the mesh, read back losslessly. Present when supports_admin
and the device reported the list; an empty list is a device that
nobody may manage remotely.
dev_channel_ids: Option<Vec<Vec<u8>>>PROP_DEV_CHANNEL_KEYS: the two-octet identifiers of the channels the
device identity has joined. Key material is never read back, so a
caller names these by deriving identifiers from the keys it holds; one
that matches nothing locally is a channel the device knows and this
phone does not.
ident_role: Option<u8>PROP_IDENT_ROLE. None covers “the device derives its role from
what it is actually doing”, “no CAP_IDENT”, and “the device would
not report it” — supports_ident and unreadable_properties
distinguish them.
ident_mobile: Option<bool>PROP_IDENT_MOBILE. Present when supports_ident and the device
reported it.
ident_position: Option<UlcpIdentPositionRecord>Where the device says it is. Present when supports_ident and the
device reported its position; a device that advertises none reports
an empty cell rather than nothing.
dev_discoverable: Option<bool>PROP_DEV_DISCOVERABLE: whether the device identity answers
Identity Requests. Present when supports_device_identity and the
device reported it.
tz_offset_min: Option<i16>PROP_TZ_OFFSET in minutes east of UTC. Present when
supports_time and the device reported it.
The zone is configuration and the epoch is not: where a device is meant to be is known even when what time it is is not, which is why this is here and the clock reading is on the session snapshot.
gnss: Option<UlcpGnssSettingsRecord>The positioning policy. Present when supports_gnss and the
device reported the whole of it.
advert: Option<UlcpAdvertSettingsRecord>The advertisement policy. Present when supports_advert and the
device reported the whole of it.
unreadable_properties: Vec<u32>Capability-gated properties the device advertised but would not report, in ascending order.
A device that refuses a property — old firmware behind a newer capability, a property it never implemented — is a device with an unknown setting, not one this phone cannot administer. Their values are absent above, they are left out of configuration writes, and nothing about them can be verified after a save.
Trait Implementations§
Source§impl Clone for UlcpSyncRecord
impl Clone for UlcpSyncRecord
Source§fn clone(&self) -> UlcpSyncRecord
fn clone(&self) -> UlcpSyncRecord
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<UT> ConvertError<UT> for UlcpSyncRecord
impl<UT> ConvertError<UT> for UlcpSyncRecord
fn try_convert_unexpected_callback_error( e: UnexpectedUniFFICallbackError, ) -> Result<Self>
Source§impl Debug for UlcpSyncRecord
impl Debug for UlcpSyncRecord
Source§impl<UT> FfiConverter<UT> for UlcpSyncRecord
impl<UT> FfiConverter<UT> for UlcpSyncRecord
Source§const TYPE_ID_META: MetadataBuffer
const TYPE_ID_META: MetadataBuffer
Source§type FfiType = RustBuffer
type FfiType = RustBuffer
Source§fn lower(v: Self) -> RustBuffer
fn lower(v: Self) -> RustBuffer
Source§fn try_lift(buf: RustBuffer) -> Result<Self>
fn try_lift(buf: RustBuffer) -> Result<Self>
Source§impl<UT> Lift<UT> for UlcpSyncRecord
impl<UT> Lift<UT> for UlcpSyncRecord
Source§impl<UT> LiftRef<UT> for UlcpSyncRecord
impl<UT> LiftRef<UT> for UlcpSyncRecord
type LiftType = UlcpSyncRecord
Source§impl<UT> LiftReturn<UT> for UlcpSyncRecord
impl<UT> LiftReturn<UT> for UlcpSyncRecord
Source§type ReturnType = <UlcpSyncRecord as Lift<UT>>::FfiType
type ReturnType = <UlcpSyncRecord as Lift<UT>>::FfiType
Source§fn try_lift_successful_return(v: Self::ReturnType) -> Result<Self>
fn try_lift_successful_return(v: Self::ReturnType) -> Result<Self>
Source§fn lift_foreign_return(
ffi_return: Self::ReturnType,
call_status: RustCallStatus,
) -> Self
fn lift_foreign_return( ffi_return: Self::ReturnType, call_status: RustCallStatus, ) -> Self
Source§fn lift_error(_buf: RustBuffer) -> Self
fn lift_error(_buf: RustBuffer) -> Self
Source§fn handle_callback_unexpected_error(e: UnexpectedUniFFICallbackError) -> Self
fn handle_callback_unexpected_error(e: UnexpectedUniFFICallbackError) -> Self
Source§impl<UT> Lower<UT> for UlcpSyncRecord
impl<UT> Lower<UT> for UlcpSyncRecord
type FfiType = <UlcpSyncRecord as FfiConverter<UT>>::FfiType
fn lower(obj: Self) -> Self::FfiType
fn write(obj: Self, buf: &mut Vec<u8>)
Source§fn lower_into_rust_buffer(obj: Self) -> RustBuffer
fn lower_into_rust_buffer(obj: Self) -> RustBuffer
Source§impl<UT> LowerError<UT> for UlcpSyncRecord
impl<UT> LowerError<UT> for UlcpSyncRecord
Source§fn lower_error(obj: Self) -> RustBuffer
fn lower_error(obj: Self) -> RustBuffer
Source§impl<UT> LowerReturn<UT> for UlcpSyncRecord
impl<UT> LowerReturn<UT> for UlcpSyncRecord
Source§type ReturnType = <UlcpSyncRecord as Lower<UT>>::FfiType
type ReturnType = <UlcpSyncRecord as Lower<UT>>::FfiType
Source§fn lower_return(v: Self) -> Result<Self::ReturnType, RustCallError>
fn lower_return(v: Self) -> Result<Self::ReturnType, RustCallError>
Source§fn handle_failed_lift(
error: LiftArgsError,
) -> Result<Self::ReturnType, RustCallError>
fn handle_failed_lift( error: LiftArgsError, ) -> Result<Self::ReturnType, RustCallError>
Source§impl PartialEq for UlcpSyncRecord
impl PartialEq for UlcpSyncRecord
Source§impl<UT> TypeId<UT> for UlcpSyncRecord
impl<UT> TypeId<UT> for UlcpSyncRecord
impl StructuralPartialEq for UlcpSyncRecord
Auto Trait Implementations§
impl Freeze for UlcpSyncRecord
impl RefUnwindSafe for UlcpSyncRecord
impl Send for UlcpSyncRecord
impl Sync for UlcpSyncRecord
impl Unpin for UlcpSyncRecord
impl UnwindSafe for UlcpSyncRecord
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)