pub enum DeviceRequest {
ProvisionNetwork {
params: ProvisioningParams,
responder: DeviceProvisionNetworkResponder,
},
LeaveNetwork {
responder: DeviceLeaveNetworkResponder,
},
SetActive {
active: bool,
responder: DeviceSetActiveResponder,
},
GetSupportedNetworkTypes {
responder: DeviceGetSupportedNetworkTypesResponder,
},
WatchDeviceState {
responder: DeviceWatchDeviceStateResponder,
},
}
Expand description
LoWPAN Device Protocol.
This protocol provides clients with a way to control and monitor the device.
Note that aspects of the device that deal with PII must
be monitored and controlled via the [DeviceExtra
] protocol.
Variants§
ProvisionNetwork
Provision the interface for the network described by identity
and credential. This is similar to JoinNetwork
, except that
(assuming the identity and credential are valid) it will (assuming
all preconditions are met) always succeed, even if there are no
peers nearby.
The following fields of ProvisioningParams
MUST
be specified:
identity.raw_name
identity.xpanid
identity.panid
identity.channel_index
credential
If any of the required fields are unspecified, the
channel will be closed with the epitaph ZX_ERR_INVALID_ARGUMENT
.
Additionally, if the identity.net_type
field is present
and does not match a network type supported by this device,
the channel will also be closed with the epitaph ZX_ERR_NOT_SUPPORTED
.
This method returns once the device has been reconfigured successfully.
The resulting change in state can be monitored via WatchDeviceState()
.
Any error that prevents the operation from completing successfully
will result in the protocol being closed.
LeaveNetwork
Bring down the network interface and forget all non-volatile details about the current network.
Upon completion, all non-volatile and transient state about the current network is cleared and the interface will be offline.
Specifically, calling this method will cause the following observable effects:
DeviceState.connectivity_state
will transition toState::OFFLINE
, assuming it wasn’t in that state already.DeviceExtra::WatchIdentity
will emit an emptyIdentity
, assuming it wasn’t already empty.
If the interface was not previously provisioned, calling this method does nothing.
Fields
responder: DeviceLeaveNetworkResponder
SetActive
Activate (“bring-up”) or deactivate (“shut-down”) the network interface.
Note that simply setting this to true
does not mean that
the network interface will necessarily become online and usable,
see the connectivity_state
field of the DeviceState
table for
more information.
This method returns once the operation has completed successfully.
The resulting change in state can be monitored via WatchDeviceState()
.
Any error that prevents the operation from completing successfully
will result in the protocol being closed.
GetSupportedNetworkTypes
Returns the types of networks supported by this interface.
LoWPAN devices typically only support a single network type,
but some devices may support more than one. Up to MAX_NETWORK_TYPES
network types may be returned.
Fields
responder: DeviceGetSupportedNetworkTypesResponder
WatchDeviceState
Observes changes to the DeviceState
.
First call always returns a snapshot of the current state. Subsequent calls will block until the state has changed and returns the delta against the device’s internal state.
Changes are not queued. The returned value always represents the latest and most accurate state values, even if several changes had happened in-between calls.
Fields
responder: DeviceWatchDeviceStateResponder
Implementations§
Source§impl DeviceRequest
impl DeviceRequest
pub fn into_provision_network( self, ) -> Option<(ProvisioningParams, DeviceProvisionNetworkResponder)>
pub fn into_leave_network(self) -> Option<DeviceLeaveNetworkResponder>
pub fn into_set_active(self) -> Option<(bool, DeviceSetActiveResponder)>
pub fn into_get_supported_network_types( self, ) -> Option<DeviceGetSupportedNetworkTypesResponder>
pub fn into_watch_device_state(self) -> Option<DeviceWatchDeviceStateResponder>
Sourcepub fn method_name(&self) -> &'static str
pub fn method_name(&self) -> &'static str
Name of the method defined in FIDL