pub enum ProfileRequest {
Advertise {
payload: ProfileAdvertiseRequest,
responder: ProfileAdvertiseResponder,
},
Search {
payload: ProfileSearchRequest,
control_handle: ProfileControlHandle,
},
Connect {
peer_id: PeerId,
connection: ConnectParameters,
responder: ProfileConnectResponder,
},
ConnectSco {
payload: ProfileConnectScoRequest,
control_handle: ProfileControlHandle,
},
_UnknownMethod {
ordinal: u64,
control_handle: ProfileControlHandle,
method_type: MethodType,
},
}
Expand description
Service provides Bluetooth BR/EDR profiles a way to register a service definition, making a profile discoverable by peers. Registered services can receive L2CAP connections made to the advertised records, and can open new connections on peers.
Variants§
Advertise
Register a set of services.
These services will be discoverable via Service Discovery Protocol server.
All services advertising the same channel must be added at once - if services are already
registered on any channel advertised, registration will fail, the receiver will be closed
with ZX_ERR_ALREADY_BOUND and an error will be returned.
The ConnectionReceiver will get calls for connections to the channels included in the
protocol_descriptor
or alternative_protocol_descriptors
in the services advertised.
The receiver will be closed if there are any errors advertising.
The ConnectionReceiver::OnRevoke
event can be used to synchronize revoking the
advertisement, if necessary. Closing the ConnectionReceiver
protocol will also stop
advertising these services.
If the advertisement cannot be made for any reason, an error of INVALID_ARGUMENTS
will be returned and the receiver will be closed with a suitable epitaph.
Returns the set of services that are registered via the Service Discovery Protocol
server. The returned services may differ from the input services
if any L2CAP protocol
descriptors request PSM_DYNAMIC
. In this case, the Profile
server shall assign a valid
PSM and include this value in the returned services.
Search
Register a search for services on newly connected peers. The SearchResults protocol will be
used to report results for this search.
Only one of service_uuid
or full_uuid
must be present. Any service result with a service
matching the specified UUID will be returned with the additional attributes in attr_ids
.
If both service_uuid
and full_uuid
are present, then ZX_ERR_INVALID_ARGS
will be
returned.
If attr_ids
is empty or omitted, all attributes will be requested. The additional
attribute BLUETOOTH_PROTOCOL_DESCRIPTOR_LIST is always requested. See the Bluetooth
Spec v5.2, Vol 3, Part B, Section 5) and relevant profile specification documents.
Connect
Connect an L2CAP or RFCOMM channel to the connected peer identified by peer_id
using the
desired connection
parameters listed. Dynamic PSMs can be specified in connection
.
Returns the channel connected once established, or an error code if the channel could not be connected.
ConnectSco
Attempt to establish a synchronous connection to peer_id
configured
using params
.
If initiator
is true, a connection request will be sent. Only 1
parameter may be specified.
If initiator
is false, the host will attempt to accept the next
connection request using the parameters given in order. The parameters
will be tried in order until either a connection is successful, all
parameters have been rejected (ScoErrorCode.PARAMETERS_REJECTED
), or
the procedure is canceled.
The result of the connection attempt and the parameters used for the
connection will be returned with connection
. Dropping connection
will
cancel the request.
_UnknownMethod
An interaction was received which does not match any known method.
Fields
This variant is marked as non-exhaustive
control_handle: ProfileControlHandle
method_type: MethodType
Implementations§
Source§impl ProfileRequest
impl ProfileRequest
pub fn into_advertise( self, ) -> Option<(ProfileAdvertiseRequest, ProfileAdvertiseResponder)>
pub fn into_search(self) -> Option<(ProfileSearchRequest, ProfileControlHandle)>
pub fn into_connect( self, ) -> Option<(PeerId, ConnectParameters, ProfileConnectResponder)>
pub fn into_connect_sco( self, ) -> Option<(ProfileConnectScoRequest, ProfileControlHandle)>
Sourcepub fn method_name(&self) -> &'static str
pub fn method_name(&self) -> &'static str
Name of the method defined in FIDL