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_nameidentity.xpanididentity.panididentity.channel_indexcredential
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_statewill transition toState::OFFLINE, assuming it wasn’t in that state already.DeviceExtra::WatchIdentitywill emit an emptyIdentity, assuming it wasn’t already empty.
If the interface was not previously provisioned, calling this method does nothing.
Fields
responder: DeviceLeaveNetworkResponderSetActive
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: DeviceGetSupportedNetworkTypesResponderWatchDeviceState
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: DeviceWatchDeviceStateResponderImplementations§
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