C/C++ API Reference
Loading...
Searching...
No Matches
connection2.h
1// Copyright 2024 The Pigweed Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License"); you may not
4// use this file except in compliance with the License. You may obtain a copy of
5// the License at
6//
7// https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12// License for the specific language governing permissions and limitations under
13// the License.
14#pragma once
15
16#include "pw_async2/dispatcher.h"
17#include "pw_bluetooth/gatt/client2.h"
18#include "pw_bluetooth/internal/raii_ptr.h"
19#include "pw_bluetooth/low_energy/channel.h"
20#include "pw_bluetooth/types.h"
21
22namespace pw::bluetooth::low_energy {
23
25
32 public:
34 enum class ConnectionParameterUpdateError : uint8_t {
35 kFailure,
36 kInvalidParameters,
37 kRejected,
38 };
39
41 enum class DisconnectReason : uint8_t {
42 kFailure,
43 kRemoteUserTerminatedConnection,
46 };
47
57 uint16_t interval;
58
62 uint16_t latency;
63
71 };
72
84 uint16_t min_interval;
85
94 uint16_t max_interval;
95
99 uint16_t max_latency;
100
108 };
109
117 bool bondable_mode = true;
118
122 std::optional<Uuid> service_filter;
123
126 std::optional<RequestedConnectionParameters> parameters;
127
135 std::optional<uint16_t> att_mtu;
136 };
137
147 };
148
151 virtual ~Connection2() = default;
152
156 async2::Context& cx) = 0;
157
161 virtual gatt::Client2* GattClient() = 0;
162
166 virtual uint16_t AttMtu() = 0;
167
172
175
178 virtual async2::OnceReceiver<
179 pw::expected<void, ConnectionParameterUpdateError>>
181
187 ConnectL2capParameters parameters) = 0;
188
189 private:
193 virtual void Release() = 0;
194
195 public:
198 using Ptr = internal::RaiiPtr<Connection2, &Connection2::Release>;
199};
200
201} // namespace pw::bluetooth::low_energy
Definition: context.h:55
Definition: once_sender.h:43
Definition: poll.h:60
Represents a GATT client that interacts with services on a GATT server.
Definition: client2.h:286
Definition: connection2.h:31
virtual gatt::Client2 * GattClient()=0
std::optional< Uuid > service_filter
Definition: connection2.h:122
virtual ConnectionParameters Parameters()=0
Returns the current connection parameters.
uint16_t supervision_timeout
Definition: connection2.h:70
SecurityRequirements security_requirements
Definition: connection2.h:146
virtual async2::OnceReceiver< pw::Result< Channel::Ptr > > ConnectL2cap(ConnectL2capParameters parameters)=0
uint16_t max_receive_packet_size
Maximum supported packet size for receiving.
Definition: connection2.h:142
virtual async2::Poll< DisconnectReason > PendDisconnect(async2::Context &cx)=0
Psm psm
The identifier of the service to connect to.
Definition: connection2.h:140
internal::RaiiPtr< Connection2, &Connection2::Release > Ptr
Definition: connection2.h:198
virtual async2::OnceReceiver< pw::expected< void, ConnectionParameterUpdateError > > RequestParameterUpdate(RequestedConnectionParameters parameters)=0
virtual async2::Poll< uint16_t > PendAttMtuChange(async2::Context &cx)=0
std::optional< RequestedConnectionParameters > parameters
Definition: connection2.h:126
Psm
Definition: channel.h:29
DisconnectReason
Possible reasons a connection was disconnected.
Definition: connection2.h:41
ConnectionParameterUpdateError
Possible errors when updating the connection parameters.
Definition: connection2.h:34
std::optional< uint16_t > att_mtu
Definition: connection2.h:135
@ kConnectionTimeout
This usually indicates that the link supervision timeout expired.
Represents parameters that are set on a per-connection basis.
Definition: connection2.h:111
Actual connection parameters returned by the controller.
Definition: connection2.h:49
The authentication an encryption requirements for a channel.
Definition: channel.h:32