File tree Expand file tree Collapse file tree 4 files changed +41
-5
lines changed Expand file tree Collapse file tree 4 files changed +41
-5
lines changed Original file line number Diff line number Diff line change @@ -601,8 +601,27 @@ class GattClient {
601
601
_transaction_timeout_cb = cb;
602
602
}
603
603
604
+ /* *
605
+ * Sets the event handler that us called by the PAL porters to notify the stack of events
606
+ * which will in turn be passed onto the user application when appropriate.
607
+ *
608
+ * @param event_handler The new event handler interface implementation.
609
+ */
610
+ void set_event_handler (EventHandler* event_handler) {
611
+ _event_handler = event_handler;
612
+ }
613
+
614
+ /* *
615
+ * Get the currently registered event handler.
616
+ *
617
+ * @return Currently registered event handler. NULL if no event handler is present.
618
+ */
619
+ EventHandler* get_event_handler () {
620
+ return _event_handler;
621
+ }
622
+
604
623
protected:
605
- GattClient () { }
624
+ GattClient () : _event_handler( NULL ) { }
606
625
607
626
virtual ~GattClient () { }
608
627
@@ -640,6 +659,8 @@ class GattClient {
640
659
}
641
660
642
661
private:
662
+ EventHandler* _event_handler;
663
+
643
664
/* *
644
665
* Callback called when the client receive a message from the server.
645
666
*/
Original file line number Diff line number Diff line change @@ -107,6 +107,13 @@ class BLE : public ::BLEInstanceBase {
107
107
*/
108
108
virtual generic::GenericGattClient &getGattClient ();
109
109
110
+ /* *
111
+ * Get the PAL Gatt Client.
112
+ *
113
+ * @return PAL Gatt Client.
114
+ */
115
+ pal::AttClientToGattClientAdapter &BLE::getPalGattClient ();
116
+
110
117
/* *
111
118
* @see BLEInstanceBase::getSecurityManager
112
119
*/
Original file line number Diff line number Diff line change @@ -26,8 +26,10 @@ void CordioAttClient::att_client_handler(const attEvt_t* event)
26
26
{
27
27
if (event->hdr .status == ATT_SUCCESS && event->hdr .event == ATT_MTU_UPDATE_IND) {
28
28
ble::vendor::cordio::BLE& ble = ble::vendor::cordio::BLE::deviceInstance ();
29
- ble::pal::GattClient::EventHandler &handler = ble.getGattClient ();
30
- handler.on_att_mtu_change (event->hdr .param , event->mtu );
29
+ ble::pal::GattClient::EventHandler *handler = ble.getPalGattClient ().get_event_handler ();
30
+ if (handler) {
31
+ handler->on_att_mtu_change (event->hdr .param , event->mtu );
32
+ }
31
33
} else {
32
34
// all handlers are stored in a static array
33
35
static const event_handler_t handlers[] = {
Original file line number Diff line number Diff line change @@ -199,13 +199,19 @@ const GattServer& BLE::getGattServer() const
199
199
}
200
200
201
201
generic::GenericGattClient& BLE::getGattClient ()
202
+ {
203
+ static generic::GenericGattClient gatt_client (&getPalGattClient ());
204
+
205
+ return gatt_client;
206
+ }
207
+
208
+ pal::AttClientToGattClientAdapter& BLE::getPalGattClient ()
202
209
{
203
210
static pal::AttClientToGattClientAdapter pal_client (
204
211
pal::vendor::cordio::CordioAttClient::get_client ()
205
212
);
206
- static generic::GenericGattClient client (&pal_client);
207
213
208
- return client ;
214
+ return pal_client ;
209
215
}
210
216
211
217
SecurityManager& BLE::getSecurityManager ()
You can’t perform that action at this time.
0 commit comments