adding BLEDevice APIs for GATTServer callbacks
parent
0c91cc32bf
commit
ecac50aea0
|
@ -129,10 +129,18 @@ public:
|
|||
|
||||
ble_error_t disconnect(void);
|
||||
|
||||
/* APIs to set GAP callbacks. */
|
||||
void onTimeout(Gap::EventCallback_t timeoutCallback);
|
||||
void onConnection(Gap::EventCallback_t connectionCallback);
|
||||
void onDisconnection(Gap::EventCallback_t disconnectionCallback);
|
||||
|
||||
/* APIs to set GATT server callbacks */
|
||||
void onDataSent(GattServer::EventCallback_t callback);
|
||||
void onDataWritten(GattServer::EventCallback_t callback);
|
||||
void onUpdatesEnabled(GattServer::EventCallback_t callback);
|
||||
void onUpdatesDisabled(GattServer::EventCallback_t callback);
|
||||
void onConfirmationReceived(GattServer::EventCallback_t callback);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Internal helper to udpate the transport backend with advertising data
|
||||
|
@ -283,6 +291,46 @@ BLEDevice::setAdvertisingDataForTransport(void) {
|
|||
return transport->getGap().setAdvertisingData(advPayload, scanResponse);
|
||||
}
|
||||
|
||||
inline void
|
||||
BLEDevice::onTimeout(Gap::EventCallback_t timeoutCallback) {
|
||||
transport->getGap().setOnTimeout(timeoutCallback);
|
||||
}
|
||||
|
||||
inline void
|
||||
BLEDevice::onConnection(Gap::EventCallback_t connectionCallback) {
|
||||
transport->getGap().setOnConnection(connectionCallback);
|
||||
}
|
||||
|
||||
inline void
|
||||
BLEDevice::onDisconnection(Gap::EventCallback_t disconnectionCallback) {
|
||||
transport->getGap().setOnDisconnection(disconnectionCallback);
|
||||
}
|
||||
|
||||
inline void
|
||||
BLEDevice::onDataSent(GattServer::EventCallback_t callback) {
|
||||
transport->getGattServer().setOnDataSent(callback);
|
||||
}
|
||||
|
||||
inline void
|
||||
BLEDevice::onDataWritten(GattServer::EventCallback_t callback) {
|
||||
transport->getGattServer().setOnDataWritten(callback);
|
||||
}
|
||||
|
||||
inline void
|
||||
BLEDevice::onUpdatesEnabled(GattServer::EventCallback_t callback) {
|
||||
transport->getGattServer().setOnUpdatesEnabled(callback);
|
||||
}
|
||||
|
||||
inline void
|
||||
BLEDevice::onUpdatesDisabled(GattServer::EventCallback_t callback) {
|
||||
transport->getGattServer().setOnUpdatesDisabled(callback);
|
||||
}
|
||||
|
||||
inline void
|
||||
BLEDevice::onConfirmationReceived(GattServer::EventCallback_t callback) {
|
||||
transport->getGattServer().setOnConfirmationReceived(callback);
|
||||
}
|
||||
|
||||
/*
|
||||
* ALL OF THE FOLLOWING METHODS ARE DEPRECATED
|
||||
*/
|
||||
|
@ -304,20 +352,4 @@ BLEDevice::startAdvertising(const GapAdvertisingParams &_advParams) {
|
|||
return transport->getGap().startAdvertising(_advParams);
|
||||
}
|
||||
|
||||
inline void
|
||||
BLEDevice::onTimeout(Gap::EventCallback_t timeoutCallback) {
|
||||
transport->getGap().setOnTimeout(timeoutCallback);
|
||||
}
|
||||
|
||||
inline void
|
||||
BLEDevice::onConnection(Gap::EventCallback_t connectionCallback) {
|
||||
transport->getGap().setOnConnection(connectionCallback);
|
||||
}
|
||||
|
||||
inline void
|
||||
BLEDevice::onDisconnection(Gap::EventCallback_t disconnectionCallback) {
|
||||
transport->getGap().setOnDisconnection(disconnectionCallback);
|
||||
}
|
||||
|
||||
|
||||
#endif // ifndef __BLE_DEVICE_H__
|
||||
|
|
|
@ -31,9 +31,6 @@
|
|||
/**************************************************************************/
|
||||
class GattServer
|
||||
{
|
||||
private:
|
||||
GattServerEvents *m_pEventHandler;
|
||||
|
||||
public:
|
||||
/* These functions must be defined in the sub-class */
|
||||
virtual ble_error_t addService(GattService &) = 0;
|
||||
|
@ -49,36 +46,76 @@ public:
|
|||
// be sure to call sd_ble_gatts_hvx() twice with notify then indicate!
|
||||
// Strange use case, but valid and must be covered!
|
||||
|
||||
/* Event callback handlers */
|
||||
void setEventHandler(GattServerEvents *pEventHandler) {
|
||||
m_pEventHandler = pEventHandler;
|
||||
/* Event callback handlers. */
|
||||
typedef void (*EventCallback_t)(uint16_t attributeHandle);
|
||||
void setOnDataSent(EventCallback_t callback) {
|
||||
onDataSent = callback;
|
||||
}
|
||||
void setOnDataWritten(EventCallback_t callback) {
|
||||
onDataWritten = callback;
|
||||
}
|
||||
void setOnUpdatesEnabled(EventCallback_t callback) {
|
||||
onUpdatesEnabled = callback;
|
||||
}
|
||||
void setOnUpdatesDisabled(EventCallback_t callback) {
|
||||
onUpdatesDisabled = callback;
|
||||
}
|
||||
void setOnConfirmationReceived(EventCallback_t callback) {
|
||||
onConfirmationReceived = callback;
|
||||
}
|
||||
|
||||
void handleEvent(GattServerEvents::gattEvent_e type, uint16_t charHandle) {
|
||||
if (NULL == m_pEventHandler) {
|
||||
return;
|
||||
}
|
||||
switch (type) {
|
||||
case GattServerEvents::GATT_EVENT_DATA_SENT:
|
||||
m_pEventHandler->onDataSent(charHandle);
|
||||
if (onDataSent) {
|
||||
onDataSent(charHandle);
|
||||
}
|
||||
break;
|
||||
case GattServerEvents::GATT_EVENT_DATA_WRITTEN:
|
||||
m_pEventHandler->onDataWritten(charHandle);
|
||||
if (onDataWritten) {
|
||||
onDataWritten(charHandle);
|
||||
}
|
||||
break;
|
||||
case GattServerEvents::GATT_EVENT_UPDATES_ENABLED:
|
||||
m_pEventHandler->onUpdatesEnabled(charHandle);
|
||||
if (onUpdatesEnabled) {
|
||||
onUpdatesEnabled(charHandle);
|
||||
}
|
||||
break;
|
||||
case GattServerEvents::GATT_EVENT_UPDATES_DISABLED:
|
||||
m_pEventHandler->onUpdatesDisabled(charHandle);
|
||||
if (onUpdatesDisabled) {
|
||||
onUpdatesDisabled(charHandle);
|
||||
}
|
||||
break;
|
||||
case GattServerEvents::GATT_EVENT_CONFIRMATION_RECEIVED:
|
||||
m_pEventHandler->onConfirmationReceived(charHandle);
|
||||
if (onConfirmationReceived) {
|
||||
onConfirmationReceived(charHandle);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
GattServer() :
|
||||
serviceCount(0),
|
||||
characteristicCount(0),
|
||||
onDataSent(NULL),
|
||||
onDataWritten(NULL),
|
||||
onUpdatesEnabled(NULL),
|
||||
onUpdatesDisabled(NULL),
|
||||
onConfirmationReceived(NULL) {
|
||||
/* empty */
|
||||
}
|
||||
|
||||
protected:
|
||||
uint8_t serviceCount;
|
||||
uint8_t characteristicCount;
|
||||
|
||||
private:
|
||||
EventCallback_t onDataSent;
|
||||
EventCallback_t onDataWritten;
|
||||
EventCallback_t onUpdatesEnabled;
|
||||
EventCallback_t onUpdatesDisabled;
|
||||
EventCallback_t onConfirmationReceived;
|
||||
};
|
||||
|
||||
#endif // ifndef __GATT_SERVER_H__
|
||||
|
|
Loading…
Reference in New Issue