pub enum LocalServiceRequest {
CharacteristicConfiguration {
peer_id: PeerId,
handle: Handle,
notify: bool,
indicate: bool,
responder: LocalServiceCharacteristicConfigurationResponder,
},
ReadValue {
peer_id: PeerId,
handle: Handle,
offset: i32,
responder: LocalServiceReadValueResponder,
},
WriteValue {
payload: LocalServiceWriteValueRequest,
responder: LocalServiceWriteValueResponder,
},
PeerUpdate {
payload: LocalServicePeerUpdateRequest,
responder: LocalServicePeerUpdateResponder,
},
ValueChangedCredit {
additional_credit: u8,
control_handle: LocalServiceControlHandle,
},
}
Expand description
Interface for serving a local GATT service. Closing the server_end of this protocol causes the GATT service to be removed from the local GATT database. Similarly, closure of the client_end of this protocol means the Bluetooth stack has removed this service from its GATT database.
Variants§
CharacteristicConfiguration
This notifies the current configuration of a particular characteristic/descriptor for a particular peer. It will be called when the peer GATT client changes the configuration.
The Bluetooth stack maintains the state of each peer’s configuration across reconnections. As such, this method will also be called when a peer connects for each characteristic with the initial, persisted state of the newly-connected peer’s configuration. However, clients should not rely on this state being persisted indefinitely by the Bluetooth stack.
- request
peer_id
The PeerId of the GATT client associated with this particular CCC. - request
handle
The handle of the characteristic associated with thenotify
andindicate
parameters. - request
notify
True if the client has enabled notifications, false otherwise. - request
indicate
True if the client has enabled indications, false otherwise.
- response empty Returns nothing to acknowledge the characteristic configuration.
Fields
peer_id: PeerId
ReadValue
Called when a peer requests to read the value of a characteristic or descriptor. It is guaranteed that the peer satisfies the permssions associated with this attribute.
- request
peer_id
The PeerId of the GATT client making the read request. - request
handle
The handle of the requested descriptor/characteristic. - request
offset
The offset at which to start reading the requested value.
- response
value
The value of the characteristic.
- error See
gatt2.Error
documentation for possible errors.
WriteValue
Called when a peer issues a request to write the value of a characteristic or descriptor. It is guaranteed that the peer satisfies the permissions associated with this attribute.
- request
peer_id
The PeerId of the GATT client making the write request. Always present. - request
handle
The handle of the requested descriptor/characteristic. Always present. - request
offset
The offset at which to start writing the value. If the offset is 0, any existing value should be overwritten by the new value. Otherwise, the existing value from offset:(offset + len(value)) should be changed tovalue
. Always present. - request
value
The new value for the descriptor/characteristic. Always present, but may be the empty string.
- response The implementation must send an empty response once the value has been updated as confirmation.
- error See
gatt2.Error
documentation for possible errors.
PeerUpdate
Called to provide GATT information specific to a peer. PeerUpdate will not be called unless the prior invocation received a response. As such, the implementation can simply ignore the first invocation if they are not interested in any PeerUpdate fields.
A PeerUpdate will be made before propagating any other interaction from the peer to the LocalService (Write/ReadValue, CharacteristicConfiguration) on a best-effort basis, as long as all preceding PeerUpdates were acknowledged.
Not currently sent. Comment on https://fxbug.dev/42178509 to request support
- request
peer_id
The PeerId the update pertains to. Always present. - request
mtu
The maximum number of bytes that fit in a notification/indication to this peer. Any bytes past this limit are silently truncated. Most clients need not concern themselves with this unless they are using notifications/indications for high throughput. Optional.
- response An empty response to acknowledge that the update was received.
ValueChangedCredit
Add credit for sending indications/notifications. Implementors are defined to start out with
INITIAL_VALUE_CHANGED_CREDITS credits before this method is called. Implementors must keep
track of the available credit they have. The implementor can send exactly one OnNotifyValue
or OnIndicateValue event for each credit. Note that ValueChangedCredit
will only be called
if at least one indication/notification has been sent since the prior call.
Implementations§
Source§impl LocalServiceRequest
impl LocalServiceRequest
pub fn into_characteristic_configuration( self, ) -> Option<(PeerId, Handle, bool, bool, LocalServiceCharacteristicConfigurationResponder)>
pub fn into_read_value( self, ) -> Option<(PeerId, Handle, i32, LocalServiceReadValueResponder)>
pub fn into_write_value( self, ) -> Option<(LocalServiceWriteValueRequest, LocalServiceWriteValueResponder)>
pub fn into_peer_update( self, ) -> Option<(LocalServicePeerUpdateRequest, LocalServicePeerUpdateResponder)>
pub fn into_value_changed_credit( self, ) -> Option<(u8, LocalServiceControlHandle)>
Sourcepub fn method_name(&self) -> &'static str
pub fn method_name(&self) -> &'static str
Name of the method defined in FIDL