C/C++ API Reference
Loading...
Searching...
No Matches
server2.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 <cstdint>
17
18#include "pw_async2/dispatcher.h"
19#include "pw_async2/once_sender.h"
20#include "pw_bluetooth/gatt/error.h"
21#include "pw_bluetooth/gatt/types.h"
22#include "pw_bluetooth/internal/raii_ptr.h"
23#include "pw_bluetooth/types.h"
24#include "pw_multibuf/multibuf.h"
25#include "pw_result/expected.h"
26#include "pw_span/span.h"
27
28namespace pw::bluetooth::gatt {
29
31
35 public:
36 virtual ~LocalServiceDelegate2() = default;
37
43 virtual void OnError(Error error) = 0;
44
65 virtual void CharacteristicConfiguration(PeerId peer_id,
66 Handle handle,
67 bool notify,
68 bool indicate) = 0;
69
80 ReadValue(PeerId peer_id, Handle handle, uint32_t offset) = 0;
81
95 PeerId peer_id,
96 Handle handle,
97 uint32_t offset,
98 multibuf::MultiBuf&& value) = 0;
99
107 virtual void MtuUpdate(PeerId peer_id, uint16_t mtu) = 0;
108};
109
114 public:
124 Handle handle;
127 };
128
132 using ValueChangedResult = pw::expected<void, Error>;
133
134 virtual ~LocalService2() = default;
135
160 ValueChangedParameters&& parameters) = 0;
161
190 ValueChangedParameters&& parameters) = 0;
191
192 private:
196 virtual void UnpublishService() = 0;
197
198 public:
201 using Ptr =
202 internal::RaiiPtr<LocalService2, &LocalService2::UnpublishService>;
203};
204
206class Server2 {
207 public:
209 kInternalError = 0,
210
212 kInvalidHandle = 1,
213
215 kInvalidUuid = 2,
216
219
222 };
223
227 ServiceHandle handle;
228
231
234 Uuid type;
235
238
242 };
243
246 pw::expected<LocalService2::Ptr, PublishServiceError>;
247
248 virtual ~Server2() = default;
249
262 const LocalServiceInfo& info, LocalServiceDelegate2& delegate) = 0;
263};
264
265} // namespace pw::bluetooth::gatt
Definition: once_sender.h:43
Definition: server2.h:113
Interface for a GATT server that serves many GATT services.
Definition: server2.h:206
Definition: multibuf_v1.h:248
Definition: span_impl.h:235
virtual async2::OnceReceiver< ValueChangedResult > NotifyValue(ValueChangedParameters &&parameters)=0
bool primary
Indicates whether this is a primary or secondary service.
Definition: server2.h:230
virtual async2::OnceReceiver< pw::expected< void, Error > > WriteValue(PeerId peer_id, Handle handle, uint32_t offset, multibuf::MultiBuf &&value)=0
pw::expected< void, Error > ValueChangedResult
Definition: server2.h:132
Handle handle
The handle of the characteristic value being signaled.
Definition: server2.h:124
ServiceHandle handle
A unique (within a Server) handle identifying this service.
Definition: server2.h:227
internal::RaiiPtr< LocalService2, &LocalService2::UnpublishService > Ptr
Definition: server2.h:202
PublishServiceError
Definition: server2.h:208
multibuf::MultiBuf value
The new value for the descriptor/characteristic.
Definition: server2.h:126
virtual async2::OnceReceiver< pw::expected< multibuf::MultiBuf, Error > > ReadValue(PeerId peer_id, Handle handle, uint32_t offset)=0
span< const Characteristic2 > characteristics
The characteristics of this service.
Definition: server2.h:237
virtual void MtuUpdate(PeerId peer_id, uint16_t mtu)=0
pw::expected< LocalService2::Ptr, PublishServiceError > PublishServiceResult
The Result passed by PublishService.
Definition: server2.h:246
virtual async2::OnceReceiver< PublishServiceResult > PublishService(const LocalServiceInfo &info, LocalServiceDelegate2 &delegate)=0
span< const ServiceHandle > includes
Definition: server2.h:241
virtual async2::OnceReceiver< ValueChangedResult > IndicateValue(ValueChangedParameters &&parameters)=0
virtual void CharacteristicConfiguration(PeerId peer_id, Handle handle, bool notify, bool indicate)=0
pw::span< const PeerId > peer_ids
Definition: server2.h:122
virtual void OnError(Error error)=0
@ kInvalidIncludes
Invalid service includes provided.
@ kInvalidCharacteristics
Invalid service characteristics provided.
@ kInvalidHandle
The service handle provided was not unique.
@ kInvalidUuid
Invalid service UUID provided.
Parameters for registering a local GATT service.
Definition: server2.h:225