Skip to content

Commit aad3c4b

Browse files
committed
Update parameters passed to onDataSent, onUpdatesEnabled/Disabled, and onConfirmationReceived callbacks.
Deprecate single-callback-registering functions for event handling in lieu of the new EventHandler-based API. Introduce new GattServer::EventHandler callback functions to replace the deprecated versions.
1 parent f7ce777 commit aad3c4b

File tree

6 files changed

+203
-13
lines changed

6 files changed

+203
-13
lines changed

connectivity/FEATURE_BLE/include/ble/GattServer.h

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
#ifndef MBED_GATT_SERVER_H__
2121
#define MBED_GATT_SERVER_H__
2222

23+
#include "platform/mbed_toolchain.h"
24+
2325
#include "ble/common/CallChainOfFunctionPointersWithContext.h"
2426
#include "ble/common/blecommon.h"
2527

@@ -118,6 +120,84 @@ class GattServer {
118120
(void)connectionHandle;
119121
(void)attMtuSize;
120122
}
123+
124+
/**
125+
* Function invoked when the server has sent data to a client as
126+
* part of a notification/indication.
127+
*
128+
* @note params has a temporary scope and should be copied by the
129+
* application if needed later
130+
*/
131+
virtual void onDataSent(const GattDataSentCallbackParams &params) {
132+
(void)params;
133+
}
134+
135+
/**
136+
* Function invoked when a client writes an attribute
137+
*
138+
* @note params has a temporary scope and should be copied by the
139+
* application if needed later
140+
*/
141+
virtual void onDataWritten(const GattWriteCallbackParams &params) {
142+
(void)params;
143+
}
144+
145+
/**
146+
* Function invoked when a client reads an attribute
147+
*
148+
* @note This functionality may not be available on all underlying stacks.
149+
* Application code may work around that limitation by monitoring read
150+
* requests instead of read events.
151+
*
152+
* @note params has a temporary scope and should be copied by the
153+
* application if needed later
154+
*
155+
* @see GattCharacteristic::setReadAuthorizationCallback()
156+
* @see isOnDataReadAvailable().
157+
*/
158+
virtual void onDataRead(const GattReadCallbackParams &params) {
159+
(void)params;
160+
}
161+
162+
/**
163+
* Function invoked when the GattServer instance is about
164+
* to be shut down. This can result in a call to reset() or BLE::reset().
165+
*/
166+
virtual void onShutdown(const GattServer &server) {
167+
(void)server;
168+
}
169+
170+
/**
171+
* Function invoked when the client has subscribed to characteristic updates
172+
*
173+
* @note params has a temporary scope and should be copied by the
174+
* application if needed later
175+
*/
176+
virtual void onUpdatesEnabled(const GattUpdatesEnabledCallbackParams &params) {
177+
(void)params;
178+
}
179+
180+
/**
181+
* Function invoked when the client has unsubscribed to characteristic updates
182+
*
183+
* @note params has a temporary scope and should be copied by the
184+
* application if needed later
185+
*/
186+
virtual void onUpdatesDisabled(const GattUpdatesDisabledCallbackParams &params) {
187+
(void)params;
188+
}
189+
190+
/**
191+
* Function invoked when an ACK has been received for an
192+
* indication sent to the client.
193+
*
194+
* @note params has a temporary scope and should be copied by the
195+
* application if needed later
196+
*/
197+
virtual void onConfirmationReceived(const GattConfirmationReceivedCallbackParams &params) {
198+
(void)params;
199+
}
200+
121201
protected:
122202
/**
123203
* Prevent polymorphic deletion and avoid unnecessary virtual destructor
@@ -407,6 +487,8 @@ class GattServer {
407487
* @note It is possible to chain together multiple onDataSent callbacks
408488
* (potentially from different modules of an application).
409489
*/
490+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
491+
"been replaced by GattServer::setEventHandler. Use that function instead.")
410492
void onDataSent(const DataSentCallback_t &callback);
411493

412494
/**
@@ -419,6 +501,8 @@ class GattServer {
419501
* function.
420502
*/
421503
template <typename T>
504+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
505+
"been replaced by GattServer::setEventHandler. Use that function instead.")
422506
void onDataSent(T *objPtr, void (T::*memberPtr)(unsigned count))
423507
{
424508
onDataSent({objPtr, memberPtr});
@@ -429,6 +513,8 @@ class GattServer {
429513
*
430514
* @return A reference to the DATA_SENT event callback chain.
431515
*/
516+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
517+
"been replaced by GattServer::setEventHandler. Use that function instead.")
432518
DataSentCallbackChain_t &onDataSent();
433519

434520
/**
@@ -440,6 +526,8 @@ class GattServer {
440526
* @attention It is possible to set multiple event handlers. Registered
441527
* handlers may be removed with onDataWritten().detach(callback).
442528
*/
529+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
530+
"been replaced by GattServer::setEventHandler. Use that function instead.")
443531
void onDataWritten(const DataWrittenCallback_t &callback);
444532

445533
/**
@@ -452,6 +540,8 @@ class GattServer {
452540
* function.
453541
*/
454542
template <typename T>
543+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
544+
"been replaced by GattServer::setEventHandler. Use that function instead.")
455545
void onDataWritten(
456546
T *objPtr,
457547
void (T::*memberPtr)(const GattWriteCallbackParams *context)
@@ -471,6 +561,8 @@ class GattServer {
471561
* @note It is possible to unregister callbacks using
472562
* onDataWritten().detach(callback).
473563
*/
564+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
565+
"been replaced by GattServer::setEventHandler. Use that function instead.")
474566
DataWrittenCallbackChain_t &onDataWritten();
475567

476568
/**
@@ -491,6 +583,8 @@ class GattServer {
491583
* @attention It is possible to set multiple event handlers. Registered
492584
* handlers may be removed with onDataRead().detach(callback).
493585
*/
586+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
587+
"been replaced by GattServer::setEventHandler. Use that function instead.")
494588
ble_error_t onDataRead(const DataReadCallback_t &callback);
495589

496590
/**
@@ -502,6 +596,8 @@ class GattServer {
502596
* function.
503597
*/
504598
template <typename T>
599+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
600+
"been replaced by GattServer::setEventHandler. Use that function instead.")
505601
ble_error_t onDataRead(
506602
T *objPtr,
507603
void (T::*memberPtr)(const GattReadCallbackParams *context)
@@ -521,6 +617,8 @@ class GattServer {
521617
* @note It is possible to unregister callbacks using
522618
* onDataRead().detach(callback).
523619
*/
620+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
621+
"been replaced by GattServer::setEventHandler. Use that function instead.")
524622
DataReadCallbackChain_t &onDataRead();
525623

526624
/**
@@ -536,6 +634,8 @@ class GattServer {
536634
* @note It is possible to unregister a callback using
537635
* onShutdown().detach(callback)
538636
*/
637+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
638+
"been replaced by GattServer::setEventHandler. Use that function instead.")
539639
void onShutdown(const GattServerShutdownCallback_t &callback);
540640

541641
/**
@@ -550,6 +650,8 @@ class GattServer {
550650
* function.
551651
*/
552652
template <typename T>
653+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
654+
"been replaced by GattServer::setEventHandler. Use that function instead.")
553655
void onShutdown(T *objPtr, void (T::*memberPtr)(const GattServer *))
554656
{
555657
onShutdown({objPtr, memberPtr});
@@ -566,6 +668,8 @@ class GattServer {
566668
* @note It is possible to unregister callbacks using
567669
* onShutdown().detach(callback).
568670
*/
671+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
672+
"been replaced by GattServer::setEventHandler. Use that function instead.")
569673
GattServerShutdownCallbackChain_t& onShutdown();
570674

571675
/**
@@ -574,6 +678,8 @@ class GattServer {
574678
*
575679
* @param[in] callback Event handler being registered.
576680
*/
681+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
682+
"been replaced by GattServer::setEventHandler. Use that function instead.")
577683
void onUpdatesEnabled(EventCallback_t callback);
578684

579685
/**
@@ -582,6 +688,8 @@ class GattServer {
582688
*
583689
* @param[in] callback Event handler being registered.
584690
*/
691+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
692+
"been replaced by GattServer::setEventHandler. Use that function instead.")
585693
void onUpdatesDisabled(EventCallback_t callback);
586694

587695
/**
@@ -592,6 +700,8 @@ class GattServer {
592700
*
593701
* @param[in] callback Event handler being registered.
594702
*/
703+
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Individual callback-registering functions have"
704+
"been replaced by GattServer::setEventHandler. Use that function instead.")
595705
void onConfirmationReceived(EventCallback_t callback);
596706

597707
#if !defined(DOXYGEN_ONLY)

connectivity/FEATURE_BLE/include/ble/gatt/ChainableGattServerEventHandler.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,31 +42,31 @@ class ChainableGattServerEventHandler : public ble::GattServer::EventHandler,
4242
connectionHandle, attMtuSize);
4343
}
4444

45-
void onDataSent(const GattDataSentCallbackParams* params) override {
45+
void onDataSent(const GattDataSentCallbackParams &params) override {
4646
execute_on_all(&ble::GattServer::EventHandler::onDataSent, params);
4747
}
4848

49-
void onDataWritten(const GattWriteCallbackParams *params) override {
49+
void onDataWritten(const GattWriteCallbackParams &params) override {
5050
execute_on_all(&ble::GattServer::EventHandler::onDataWritten, params);
5151
}
5252

53-
void onDataRead(const GattReadCallbackParams *params) override {
53+
void onDataRead(const GattReadCallbackParams &params) override {
5454
execute_on_all(&ble::GattServer::EventHandler::onDataRead, params);
5555
}
5656

57-
void onShutdown(const GattServer *server) override {
57+
void onShutdown(const GattServer &server) override {
5858
execute_on_all(&ble::GattServer::EventHandler::onShutdown, server);
5959
}
6060

61-
void onUpdatesEnabled(const GattUpdatesEnabledCallbackParams* params) override {
61+
void onUpdatesEnabled(const GattUpdatesEnabledCallbackParams &params) override {
6262
execute_on_all(&ble::GattServer::EventHandler::onUpdatesEnabled, params);
6363
}
6464

65-
void onUpdatesDisabled(const GattUpdatesDisabledCallbackParams* params) override {
65+
void onUpdatesDisabled(const GattUpdatesDisabledCallbackParams &params) override {
6666
execute_on_all(&ble::GattServer::EventHandler::onUpdatesDisabled, params);
6767
}
6868

69-
void onConfirmationReceived(const GattConfirmationReceivedCallbackParams* params) override {
69+
void onConfirmationReceived(const GattConfirmationReceivedCallbackParams &params) override {
7070
execute_on_all(&ble::GattServer::EventHandler::onConfirmationReceived, params);
7171
}
7272

connectivity/FEATURE_BLE/include/ble/gatt/GattCallbackParamTypes.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,29 @@ struct GattHVXCallbackParams {
384384

385385
};
386386

387+
/**
388+
* Gatt Data Sent Attribute related events
389+
*
390+
* Used by `onDataSent`
391+
*/
392+
struct GattDataSentCallbackParams {
393+
394+
/**
395+
* The handle of the connection that triggered the event.
396+
*/
397+
ble::connection_handle_t connHandle;
398+
399+
/**
400+
* Attribute Handle to which the event applies
401+
*/
402+
GattAttribute::Handle_t attHandle;
403+
404+
};
405+
406+
using GattUpdatesEnabledCallbackParams = GattDataSentCallbackParams;
407+
using GattUpdatesDisabledCallbackParams = GattDataSentCallbackParams;
408+
using GattConfirmationReceivedCallbackParams = GattDataSentCallbackParams;
409+
387410
namespace ble {
388411

389412
/**

connectivity/FEATURE_BLE/source/GattServer.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,17 +139,17 @@ GattServer::GattServerShutdownCallbackChain_t& GattServer::onShutdown()
139139

140140
void GattServer::onUpdatesEnabled(EventCallback_t callback)
141141
{
142-
return impl->onUpdatesEnabled(callback);
142+
impl->onUpdatesEnabled(callback);
143143
}
144144

145145
void GattServer::onUpdatesDisabled(EventCallback_t callback)
146146
{
147-
return impl->onUpdatesDisabled(callback);
147+
impl->onUpdatesDisabled(callback);
148148
}
149149

150150
void GattServer::onConfirmationReceived(EventCallback_t callback)
151151
{
152-
return impl->onConfirmationReceived(callback);
152+
impl->onConfirmationReceived(callback);
153153
}
154154

155-
} // ble
155+
} // ble

0 commit comments

Comments
 (0)