pub struct RemoteServiceProxy { /* private fields */ }
Implementations§
Source§impl RemoteServiceProxy
impl RemoteServiceProxy
Sourcepub fn new(channel: AsyncChannel) -> Self
pub fn new(channel: AsyncChannel) -> Self
Create a new Proxy for fuchsia.bluetooth.gatt/RemoteService.
Sourcepub fn take_event_stream(&self) -> RemoteServiceEventStream
pub fn take_event_stream(&self) -> RemoteServiceEventStream
Get a Stream of events from the remote end of the protocol.
§Panics
Panics if the event stream was already taken.
Sourcepub fn discover_characteristics(
&self,
) -> QueryResponseFut<(Status, Vec<Characteristic>), DefaultFuchsiaResourceDialect>
pub fn discover_characteristics( &self, ) -> QueryResponseFut<(Status, Vec<Characteristic>), DefaultFuchsiaResourceDialect>
Returns the characteristics and characteristic descriptors that belong to this service.
Sourcepub fn read_characteristic(
&self,
id: u64,
) -> QueryResponseFut<(Status, Vec<u8>), DefaultFuchsiaResourceDialect>
pub fn read_characteristic( &self, id: u64, ) -> QueryResponseFut<(Status, Vec<u8>), DefaultFuchsiaResourceDialect>
Reads the value of the characteristic with id
and returns it in the
reply. If status
indicates an error value
will be empty.
If the characteristic has a long value (i.e. larger than the current MTU) this method will return only the first (MTU - 1) bytes of the value. Use ReadLongCharacteristic() to read larger values or starting at a non-zero offset.
Sourcepub fn read_long_characteristic(
&self,
id: u64,
offset: u16,
max_bytes: u16,
) -> QueryResponseFut<(Status, Vec<u8>), DefaultFuchsiaResourceDialect>
pub fn read_long_characteristic( &self, id: u64, offset: u16, max_bytes: u16, ) -> QueryResponseFut<(Status, Vec<u8>), DefaultFuchsiaResourceDialect>
Reads the complete value of a characteristic with the given id
. This
procedure should be used if the characteristic is known to have a value
that can not be read in a single request.
Returns up to max_bytes
octets of the characteristic value starting at
the given offset
.
This may return an error if:
a. max_bytes
is 0;
b. The offset
is invalid;
c. The characteristic does not have a long value;
d. The server does not support the long read procedure.
Sourcepub fn write_characteristic(
&self,
id: u64,
value: &[u8],
) -> QueryResponseFut<Status, DefaultFuchsiaResourceDialect>
pub fn write_characteristic( &self, id: u64, value: &[u8], ) -> QueryResponseFut<Status, DefaultFuchsiaResourceDialect>
Writes value
to the characteristic with id
. This operation may return
an error if:
a. The size of value
exceeds the current MTU.
b. The characteristic referred to by id
does not have the ‘write’
property.
Sourcepub fn write_long_characteristic(
&self,
id: u64,
offset: u16,
value: &[u8],
write_options: &WriteOptions,
) -> QueryResponseFut<Status, DefaultFuchsiaResourceDialect>
pub fn write_long_characteristic( &self, id: u64, offset: u16, value: &[u8], write_options: &WriteOptions, ) -> QueryResponseFut<Status, DefaultFuchsiaResourceDialect>
Writes value
to the characteristic with id
, beginning at offset
using
the provided write_options
.
This procedure should be used if the value to be written is too long to
fit in a single request or needs to be written at an offset. This may
return an error if:
a. The offset
is invalid;
b. The server does not support the long write procedure.
Long Writes require multiple messages to the remote service and take longer to execute than Short Writes. It is not recommended to send a short write while a long write is in process to the same id and data range. The order of the responses from this function signify the order in which the remote service received them, not necessarily the order in which it is called.
Sourcepub fn write_characteristic_without_response(
&self,
id: u64,
value: &[u8],
) -> Result<(), Error>
pub fn write_characteristic_without_response( &self, id: u64, value: &[u8], ) -> Result<(), Error>
Writes value
to the characteristic with id
without soliciting an
acknowledgement from the peer. This method has no response and its delivery
cannot be confirmed.
Sourcepub fn read_descriptor(
&self,
id: u64,
) -> QueryResponseFut<(Status, Vec<u8>), DefaultFuchsiaResourceDialect>
pub fn read_descriptor( &self, id: u64, ) -> QueryResponseFut<(Status, Vec<u8>), DefaultFuchsiaResourceDialect>
Reads the value of the characteristic descriptor with id
and returns it
in the reply. If status
indicates an error, value
can be ignored.
If the descriptor has a long value (i.e. larger than the current MTU) this method will return only the first (MTU - 1) bytes of the value. Use ReadLongDescriptor() to read larger values or starting at a non-zero offset.
Sourcepub fn read_long_descriptor(
&self,
id: u64,
offset: u16,
max_bytes: u16,
) -> QueryResponseFut<(Status, Vec<u8>), DefaultFuchsiaResourceDialect>
pub fn read_long_descriptor( &self, id: u64, offset: u16, max_bytes: u16, ) -> QueryResponseFut<(Status, Vec<u8>), DefaultFuchsiaResourceDialect>
Reads the complete value of a characteristic descriptor with the given id
.
This procedure should be used if the descriptor is known to have a value
that can not be read in a single request.
Returns up to max_bytes
octets of the characteristic value starting at
the given offset
.
This may return an error if:
a. max_bytes
is 0;
b. The offset
is invalid;
c. The server does not support the long read procedure.
Sourcepub fn write_descriptor(
&self,
id: u64,
value: &[u8],
) -> QueryResponseFut<Status, DefaultFuchsiaResourceDialect>
pub fn write_descriptor( &self, id: u64, value: &[u8], ) -> QueryResponseFut<Status, DefaultFuchsiaResourceDialect>
Writes value
to the characteristic descriptor with id
. This operation
may return an error if:
a. The size of value
exceeds the current MTU.
b. id
refers to an internally reserved descriptor type (e.g. the Client
Characteristic Configuration descriptor).
Sourcepub fn write_long_descriptor(
&self,
id: u64,
offset: u16,
value: &[u8],
) -> QueryResponseFut<Status, DefaultFuchsiaResourceDialect>
pub fn write_long_descriptor( &self, id: u64, offset: u16, value: &[u8], ) -> QueryResponseFut<Status, DefaultFuchsiaResourceDialect>
Writes value
to the characteristic descriptor with id
, beginning at
offset
. This procedure should be used if the value to be written is too
long to fit in a single request or needs to be written at an offset. This
may return an error if:
a. The offset
is invalid;
b. The server does not support the long write procedure.
c. id
refers to an internally reserved descriptor type (e.g. the Client
Characteristic Configuration descriptor).
Long Writes require multiple messages to the remote service and take longer to execute than Short Writes. It is not recommended to send a short write while a long write is in process to the same id and data range. The order of the responses from this function signify the order in which the remote service received them, not necessarily the order in which it is called.
Sourcepub fn read_by_type(
&self,
uuid: &Uuid,
) -> QueryResponseFut<RemoteServiceReadByTypeResult, DefaultFuchsiaResourceDialect>
pub fn read_by_type( &self, uuid: &Uuid, ) -> QueryResponseFut<RemoteServiceReadByTypeResult, DefaultFuchsiaResourceDialect>
Reads characteristics and descriptors with the given uuid
. If no values are
read, results
will be empty. If reading a value results in a permission error,
the handle and error will be included in results
.
NOTE: Values in results
will be truncated to MAX_READ_BY_TYPE_VALUE_LENGTH
bytes. ReadCharacteristic
, ReadLongCharacteristic()
, ReadDescriptor
, or
ReadLongDescriptor()
should be used to read the complete values.
This method is useful for reading values before discovery has completed, thereby reducing latency.
Sourcepub fn notify_characteristic(
&self,
id: u64,
enable: bool,
) -> QueryResponseFut<Status, DefaultFuchsiaResourceDialect>
pub fn notify_characteristic( &self, id: u64, enable: bool, ) -> QueryResponseFut<Status, DefaultFuchsiaResourceDialect>
Subscribe or unsubscribe to notifications/indications from the characteristic with
the given id
. Notifications or indications will be enabled if enable
is
true or disabled if enable
is false and they have been enabled for this
client.
Either notifications or indications will be enabled depending on characteristic properties. Indications will be preferred if they are supported.
This operation fails if the characteristic does not have the “notify” or “indicate” property.
A write request will be issued to configure the characteristic for notifications/indications if it contains a Client Characteristic Configuration descriptor. This method fails if an error occurs while writing to the descriptor.
On success, the OnCharacteristicValueUpdated event will be sent whenever the peer sends a notification or indication. The local host will automically confirm indications.
Trait Implementations§
Source§impl Clone for RemoteServiceProxy
impl Clone for RemoteServiceProxy
Source§fn clone(&self) -> RemoteServiceProxy
fn clone(&self) -> RemoteServiceProxy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for RemoteServiceProxy
impl Debug for RemoteServiceProxy
Source§impl Proxy for RemoteServiceProxy
impl Proxy for RemoteServiceProxy
Source§type Protocol = RemoteServiceMarker
type Protocol = RemoteServiceMarker
Proxy
controls.Source§fn from_channel(inner: AsyncChannel) -> Self
fn from_channel(inner: AsyncChannel) -> Self
Source§fn into_channel(self) -> Result<AsyncChannel, Self>
fn into_channel(self) -> Result<AsyncChannel, Self>
Source§fn as_channel(&self) -> &AsyncChannel
fn as_channel(&self) -> &AsyncChannel
§fn into_client_end(self) -> Result<ClientEnd<Self::Protocol>, Self>
fn into_client_end(self) -> Result<ClientEnd<Self::Protocol>, Self>
Source§impl RemoteServiceProxyInterface for RemoteServiceProxy
impl RemoteServiceProxyInterface for RemoteServiceProxy
type DiscoverCharacteristicsResponseFut = QueryResponseFut<(Status, Vec<Characteristic>)>
type ReadCharacteristicResponseFut = QueryResponseFut<(Status, Vec<u8>)>
type ReadLongCharacteristicResponseFut = QueryResponseFut<(Status, Vec<u8>)>
type WriteCharacteristicResponseFut = QueryResponseFut<Status>
type WriteLongCharacteristicResponseFut = QueryResponseFut<Status>
type ReadDescriptorResponseFut = QueryResponseFut<(Status, Vec<u8>)>
type ReadLongDescriptorResponseFut = QueryResponseFut<(Status, Vec<u8>)>
type WriteDescriptorResponseFut = QueryResponseFut<Status>
type WriteLongDescriptorResponseFut = QueryResponseFut<Status>
type ReadByTypeResponseFut = QueryResponseFut<Result<Vec<ReadByTypeResult>, Error>>
type NotifyCharacteristicResponseFut = QueryResponseFut<Status>
fn discover_characteristics(&self) -> Self::DiscoverCharacteristicsResponseFut
fn read_characteristic(&self, id: u64) -> Self::ReadCharacteristicResponseFut
fn read_long_characteristic( &self, id: u64, offset: u16, max_bytes: u16, ) -> Self::ReadLongCharacteristicResponseFut
fn write_characteristic( &self, id: u64, value: &[u8], ) -> Self::WriteCharacteristicResponseFut
fn write_long_characteristic( &self, id: u64, offset: u16, value: &[u8], write_options: &WriteOptions, ) -> Self::WriteLongCharacteristicResponseFut
fn write_characteristic_without_response( &self, id: u64, value: &[u8], ) -> Result<(), Error>
fn read_descriptor(&self, id: u64) -> Self::ReadDescriptorResponseFut
fn read_long_descriptor( &self, id: u64, offset: u16, max_bytes: u16, ) -> Self::ReadLongDescriptorResponseFut
fn write_descriptor( &self, id: u64, value: &[u8], ) -> Self::WriteDescriptorResponseFut
fn write_long_descriptor( &self, id: u64, offset: u16, value: &[u8], ) -> Self::WriteLongDescriptorResponseFut
fn read_by_type(&self, uuid: &Uuid) -> Self::ReadByTypeResponseFut
fn notify_characteristic( &self, id: u64, enable: bool, ) -> Self::NotifyCharacteristicResponseFut
Auto Trait Implementations§
impl Freeze for RemoteServiceProxy
impl !RefUnwindSafe for RemoteServiceProxy
impl Send for RemoteServiceProxy
impl Sync for RemoteServiceProxy
impl Unpin for RemoteServiceProxy
impl !UnwindSafe for RemoteServiceProxy
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)