Release 0.4.1
============= This is a minor release. Enhancements ~~~~~~~~~~~~ * Introduce API GattServer::areUpdatesEnabled() to determine notification status for a characteristic. This is a follow up from https://github.com/mbedmicro/BLE_API/pull/41. @jeremybrodt did a lovely job submitting that pull request, but there had been too many changes in the neighbouring code recently to merge his work directly. I didn't take the trouble of preserving his submission in the history; my apologies--credit for this API goes entirely to him. * Replace DiscoveredCharacteristic::setupOnDataRead() with GattClient::onDataRead(). * Move GATT_MTU_SIZE_DEFAULT into blecommon.h as BLE_GATT_MTU_SIZE_DEFAULT. * Replace uses of the deprecated updateCharacteristicValue() with ble.gattServer().write(). * Change access levels to protected for various members of the standard services. * Update LinkLossService with a recent change to the definition of GattWriteCallbackParams. Involved renaming member charHandle to handle. Bugfixes ~~~~~~~~ * None.
This commit is contained in:
commit
42f99e1b7c
13 changed files with 127 additions and 75 deletions
|
@ -135,14 +135,6 @@ public:
|
|||
*/
|
||||
ble_error_t write(uint16_t length, const uint8_t *value) const;
|
||||
|
||||
static void setupOnDataRead(GattClient::ReadCallback_t callback) {
|
||||
onDataReadCallback = callback;
|
||||
}
|
||||
|
||||
static void setupOnDataWrite(GattClient::WriteCallback_t callback) {
|
||||
onDataWriteCallback = callback;
|
||||
}
|
||||
|
||||
void setupLongUUID(UUID::LongUUIDBytes_t longUUID) {
|
||||
uuid.setupLong(longUUID);
|
||||
}
|
||||
|
@ -182,10 +174,6 @@ protected:
|
|||
GattAttribute::Handle_t valueHandle;
|
||||
|
||||
Gap::Handle_t connHandle;
|
||||
|
||||
public:
|
||||
static GattClient::ReadCallback_t onDataReadCallback;
|
||||
static GattClient::WriteCallback_t onDataWriteCallback;
|
||||
};
|
||||
|
||||
#endif /*__DISCOVERED_CHARACTERISTIC_H__*/
|
||||
|
|
32
ble/Gap.h
32
ble/Gap.h
|
@ -154,7 +154,7 @@ public:
|
|||
* @return BLE_ERROR_NONE on success.
|
||||
*/
|
||||
virtual ble_error_t setAddress(AddressType_t type, const Address_t address) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -163,7 +163,7 @@ public:
|
|||
* @return BLE_ERROR_NONE on success.
|
||||
*/
|
||||
virtual ble_error_t getAddress(AddressType_t *typeP, Address_t address) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -188,7 +188,7 @@ public:
|
|||
}
|
||||
|
||||
virtual ble_error_t stopAdvertising(void) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -197,7 +197,7 @@ public:
|
|||
* @retval BLE_ERROR_NONE if successfully stopped scanning procedure.
|
||||
*/
|
||||
virtual ble_error_t stopScan() {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -219,7 +219,7 @@ public:
|
|||
Gap::AddressType_t peerAddrType,
|
||||
const ConnectionParams_t *connectionParams,
|
||||
const GapScanningParams *scanParams) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -231,7 +231,7 @@ public:
|
|||
* The reason for disconnection to be sent back to the peer.
|
||||
*/
|
||||
virtual ble_error_t disconnect(Handle_t connectionHandle, DisconnectionReason_t reason) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -248,7 +248,7 @@ public:
|
|||
* altertive which takes a connection handle. It will be dropped in the future.
|
||||
*/
|
||||
virtual ble_error_t disconnect(DisconnectionReason_t reason) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -264,7 +264,7 @@ public:
|
|||
* the given structure pointed to by params.
|
||||
*/
|
||||
virtual ble_error_t getPreferredConnectionParams(ConnectionParams_t *params) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -276,7 +276,7 @@ public:
|
|||
* The structure containing the desired parameters.
|
||||
*/
|
||||
virtual ble_error_t setPreferredConnectionParams(const ConnectionParams_t *params) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -290,7 +290,7 @@ public:
|
|||
* the parameters in the PPCP characteristic of the GAP service will be used instead.
|
||||
*/
|
||||
virtual ble_error_t updateConnectionParams(Handle_t handle, const ConnectionParams_t *params) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -299,7 +299,7 @@ public:
|
|||
* The new value for the device-name. This is a UTF-8 encoded, <b>NULL-terminated</b> string.
|
||||
*/
|
||||
virtual ble_error_t setDeviceName(const uint8_t *deviceName) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -321,7 +321,7 @@ public:
|
|||
* use this information to retry with a suitable buffer size.
|
||||
*/
|
||||
virtual ble_error_t getDeviceName(uint8_t *deviceName, unsigned *lengthP) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -330,7 +330,7 @@ public:
|
|||
* The new value for the device-appearance.
|
||||
*/
|
||||
virtual ble_error_t setAppearance(GapAdvertisingData::Appearance appearance) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -339,7 +339,7 @@ public:
|
|||
* The new value for the device-appearance.
|
||||
*/
|
||||
virtual ble_error_t getAppearance(GapAdvertisingData::Appearance *appearanceP) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -347,7 +347,7 @@ public:
|
|||
* @param[in] txPower Radio transmit power in dBm.
|
||||
*/
|
||||
virtual ble_error_t setTxPower(int8_t txPower) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -365,7 +365,7 @@ public:
|
|||
protected:
|
||||
/* Override the following in the underlying adaptation layer to provide the functionality of scanning. */
|
||||
virtual ble_error_t startRadioScan(const GapScanningParams &scanningParams) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -28,8 +28,8 @@ public:
|
|||
typedef void (*ReadCallback_t)(const GattReadCallbackParams *params);
|
||||
|
||||
enum WriteOp_t {
|
||||
GATT_OP_WRITE_REQ = 0x01, /**< Write Request. */
|
||||
GATT_OP_WRITE_CMD = 0x02, /**< Write Command. */
|
||||
GATT_OP_WRITE_REQ = 0x01, /**< Write Request. */
|
||||
GATT_OP_WRITE_CMD = 0x02, /**< Write Command. */
|
||||
};
|
||||
|
||||
typedef void (*WriteCallback_t)(const GattWriteCallbackParams *params);
|
||||
|
@ -39,12 +39,11 @@ public:
|
|||
*/
|
||||
public:
|
||||
/**
|
||||
* Launch service discovery. Once launched, service discovery will remain
|
||||
* active with callbacks being issued back into the application for matching
|
||||
* services/characteristics. isServiceDiscoveryActive() can be used to
|
||||
* determine status; and a termination callback (if setup) will be invoked
|
||||
* at the end. Service discovery can be terminated prematurely if needed
|
||||
* using terminateServiceDiscovery().
|
||||
* Launch service discovery. Once launched, application callbacks will be
|
||||
* invoked for matching services/characteristics. isServiceDiscoveryActive()
|
||||
* can be used to determine status; and a termination callback (if setup)
|
||||
* will be invoked at the end. Service discovery can be terminated prematurely
|
||||
* if needed using terminateServiceDiscovery().
|
||||
*
|
||||
* @param connectionHandle
|
||||
* Handle for the connection with the peer.
|
||||
|
@ -98,7 +97,7 @@ public:
|
|||
ServiceDiscovery::CharacteristicCallback_t cc = NULL,
|
||||
const UUID &matchingServiceUUID = UUID::ShortUUIDBytes_t(BLE_UUID_UNKNOWN),
|
||||
const UUID &matchingCharacteristicUUIDIn = UUID::ShortUUIDBytes_t(BLE_UUID_UNKNOWN)) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -130,7 +129,7 @@ public:
|
|||
virtual ble_error_t discoverServices(Gap::Handle_t connectionHandle,
|
||||
ServiceDiscovery::ServiceCallback_t callback,
|
||||
const UUID &matchingServiceUUID = UUID::ShortUUIDBytes_t(BLE_UUID_UNKNOWN)) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -161,7 +160,7 @@ public:
|
|||
ServiceDiscovery::ServiceCallback_t callback,
|
||||
GattAttribute::Handle_t startHandle,
|
||||
GattAttribute::Handle_t endHandle) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -181,7 +180,7 @@ public:
|
|||
|
||||
/* Initiate a Gatt Client read procedure by attribute-handle. */
|
||||
virtual ble_error_t read(Gap::Handle_t connHandle, GattAttribute::Handle_t attributeHandle, uint16_t offset) const {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -205,7 +204,24 @@ public:
|
|||
GattAttribute::Handle_t attributeHandle,
|
||||
size_t length,
|
||||
const uint8_t *value) const {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/* Event callback handlers. */
|
||||
public:
|
||||
/**
|
||||
* Setup a callback for read response events.
|
||||
*/
|
||||
void onDataRead(ReadCallback_t callback) {
|
||||
onDataReadCallback = callback;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup a callback for write response events.
|
||||
* @Note: write commands (issued using writeWoResponse) don't generate a response.
|
||||
*/
|
||||
void onDataWrite(WriteCallback_t callback) {
|
||||
onDataWriteCallback = callback;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -220,6 +236,24 @@ protected:
|
|||
/* empty */
|
||||
}
|
||||
|
||||
/* Entry points for the underlying stack to report events back to the user. */
|
||||
public:
|
||||
void processReadResponse(const GattReadCallbackParams *params) {
|
||||
if (onDataReadCallback) {
|
||||
onDataReadCallback(params);
|
||||
}
|
||||
}
|
||||
|
||||
void processWriteResponse(const GattWriteCallbackParams *params) {
|
||||
if (onDataWriteCallback) {
|
||||
onDataWriteCallback(params);
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
ReadCallback_t onDataReadCallback;
|
||||
WriteCallback_t onDataWriteCallback;
|
||||
|
||||
private:
|
||||
/* disallow copy and assignment */
|
||||
GattClient(const GattClient &);
|
||||
|
|
|
@ -53,7 +53,7 @@ public:
|
|||
* characteristics contained within.
|
||||
*/
|
||||
virtual ble_error_t addService(GattService &) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -72,7 +72,7 @@ public:
|
|||
* @return BLE_ERROR_NONE if a value was read successfully into the buffer.
|
||||
*/
|
||||
virtual ble_error_t read(GattAttribute::Handle_t attributeHandle, uint8_t buffer[], uint16_t *lengthP) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -97,7 +97,7 @@ public:
|
|||
* attribtues (such as the CCCDs).
|
||||
*/
|
||||
virtual ble_error_t read(Gap::Handle_t connectionHandle, GattAttribute::Handle_t attributeHandle, uint8_t *buffer, uint16_t *lengthP) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -119,7 +119,7 @@ public:
|
|||
* @return BLE_ERROR_NONE if we have successfully set the value of the attribute.
|
||||
*/
|
||||
virtual ble_error_t write(GattAttribute::Handle_t, const uint8_t *, uint16_t, bool localOnly = false) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -145,7 +145,38 @@ public:
|
|||
* @return BLE_ERROR_NONE if we have successfully set the value of the attribute.
|
||||
*/
|
||||
virtual ble_error_t write(Gap::Handle_t connectionHandle, GattAttribute::Handle_t, const uint8_t *, uint16_t, bool localOnly = false) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* default implementation; override this API if this capability is supported. */
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the updates-enabled status (notification/indication) for the current connection from a characteristic's CCCD.
|
||||
*
|
||||
* @param characteristic
|
||||
* The characteristic
|
||||
* @param[out] enabledP
|
||||
* Upon return, *enabledP is true if updates are enabled, else false.
|
||||
*
|
||||
* @return BLE_ERROR_NONE if the connection and handle are found. false otherwise.
|
||||
*/
|
||||
virtual ble_error_t areUpdatesEnabled(const GattCharacteristic &characteristic, bool *enabledP) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the connection-specific updates-enabled status (notification/indication) from a characteristic's CCCD.
|
||||
*
|
||||
* @param connectionHandle
|
||||
* The connection handle
|
||||
* @param[out] enabledP
|
||||
* Upon return, *enabledP is true if updates are enabled, else false.
|
||||
*
|
||||
* @param characteristic
|
||||
* The characteristic
|
||||
*
|
||||
* @return BLE_ERROR_NONE if the connection and handle are found. false otherwise.
|
||||
*/
|
||||
virtual ble_error_t areUpdatesEnabled(Gap::Handle_t connectionHandle, const GattCharacteristic &characteristic, bool *enabledP) {
|
||||
return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -267,21 +298,21 @@ protected:
|
|||
}
|
||||
}
|
||||
|
||||
void handleEvent(GattServerEvents::gattEvent_e type, GattAttribute::Handle_t charHandle) {
|
||||
void handleEvent(GattServerEvents::gattEvent_e type, GattAttribute::Handle_t attributeHandle) {
|
||||
switch (type) {
|
||||
case GattServerEvents::GATT_EVENT_UPDATES_ENABLED:
|
||||
if (updatesEnabledCallback) {
|
||||
updatesEnabledCallback(charHandle);
|
||||
updatesEnabledCallback(attributeHandle);
|
||||
}
|
||||
break;
|
||||
case GattServerEvents::GATT_EVENT_UPDATES_DISABLED:
|
||||
if (updatesDisabledCallback) {
|
||||
updatesDisabledCallback(charHandle);
|
||||
updatesDisabledCallback(attributeHandle);
|
||||
}
|
||||
break;
|
||||
case GattServerEvents::GATT_EVENT_CONFIRMATION_RECEIVED:
|
||||
if (confirmationReceivedCallback) {
|
||||
confirmationReceivedCallback(charHandle);
|
||||
confirmationReceivedCallback(attributeHandle);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -126,6 +126,9 @@ enum ble_error_t {
|
|||
BLE_ERROR_UNSPECIFIED = 9, /**< Unknown error. */
|
||||
};
|
||||
|
||||
/** @brief Default MTU size. */
|
||||
static const unsigned BLE_GATT_MTU_SIZE_DEFAULT = 23;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -53,7 +53,7 @@ public:
|
|||
*/
|
||||
void updateBatteryLevel(uint8_t newLevel) {
|
||||
batteryLevel = newLevel;
|
||||
ble.updateCharacteristicValue(batteryLevelCharacteristic.getValueAttribute().getHandle(), &batteryLevel, 1);
|
||||
ble.gattServer().write(batteryLevelCharacteristic.getValueHandle(), &batteryLevel, 1);
|
||||
}
|
||||
|
||||
protected:
|
||||
|
|
|
@ -73,7 +73,7 @@ public:
|
|||
void updateTemperature(float temperature) {
|
||||
if (ble.getGapState().connected) {
|
||||
valueBytes.updateTemperature(temperature);
|
||||
ble.updateCharacteristicValue(tempMeasurement.getValueAttribute().getHandle(), valueBytes.getPointer(), sizeof(TemperatureValueBytes));
|
||||
ble.gattServer().write(tempMeasurement.getValueHandle(), valueBytes.getPointer(), sizeof(TemperatureValueBytes));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -83,7 +83,7 @@ public:
|
|||
* new location value.
|
||||
*/
|
||||
void updateLocation(SensorLocation_t loc) {
|
||||
ble.updateCharacteristicValue(tempLocation.getValueHandle(), reinterpret_cast<uint8_t *>(&loc), sizeof(uint8_t));
|
||||
ble.gattServer().write(tempLocation.getValueHandle(), reinterpret_cast<uint8_t *>(&loc), sizeof(uint8_t));
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -140,7 +140,7 @@ private:
|
|||
uint8_t bytes[SIZEOF_VALUE_BYTES];
|
||||
};
|
||||
|
||||
private:
|
||||
protected:
|
||||
BLE &ble;
|
||||
TemperatureValueBytes valueBytes;
|
||||
ReadOnlyGattCharacteristic<TemperatureValueBytes> tempMeasurement;
|
||||
|
|
|
@ -93,7 +93,7 @@ public:
|
|||
*/
|
||||
void updateHeartRate(uint8_t hrmCounter) {
|
||||
valueBytes.updateHeartRate(hrmCounter);
|
||||
ble.updateCharacteristicValue(hrmRate.getValueAttribute().getHandle(), valueBytes.getPointer(), valueBytes.getNumValueBytes());
|
||||
ble.gattServer().write(hrmRate.getValueHandle(), valueBytes.getPointer(), valueBytes.getNumValueBytes());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -104,7 +104,7 @@ public:
|
|||
*/
|
||||
void updateHeartRate(uint16_t hrmCounter) {
|
||||
valueBytes.updateHeartRate(hrmCounter);
|
||||
ble.updateCharacteristicValue(hrmRate.getValueAttribute().getHandle(), valueBytes.getPointer(), valueBytes.getNumValueBytes());
|
||||
ble.gattServer().write(hrmRate.getValueHandle(), valueBytes.getPointer(), valueBytes.getNumValueBytes());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -73,7 +73,7 @@ public:
|
|||
alertLevel = newLevel;
|
||||
}
|
||||
|
||||
private:
|
||||
protected:
|
||||
/**
|
||||
* This callback allows receiving updates to the AlertLevel Characteristic.
|
||||
*
|
||||
|
@ -81,7 +81,7 @@ private:
|
|||
* Information about the characterisitc being updated.
|
||||
*/
|
||||
virtual void onDataWritten(const GattWriteCallbackParams *params) {
|
||||
if (params->charHandle == alertLevelChar.getValueHandle()) {
|
||||
if (params->handle == alertLevelChar.getValueHandle()) {
|
||||
alertLevel = *reinterpret_cast<const AlertLevel_t *>(params->data);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,8 +41,7 @@ extern const uint8_t UARTServiceRXCharacteristicUUID[UUID::LENGTH_OF_LONG_UUID]
|
|||
class UARTService {
|
||||
public:
|
||||
/**< Maximum length of data (in bytes) that can be transmitted by the UART service module to the peer. */
|
||||
static const unsigned GATT_MTU_SIZE_DEFAULT = 23;
|
||||
static const unsigned BLE_UART_SERVICE_MAX_DATA_LEN = (GATT_MTU_SIZE_DEFAULT - 3);
|
||||
static const unsigned BLE_UART_SERVICE_MAX_DATA_LEN = (BLE_GATT_MTU_SIZE_DEFAULT - 3);
|
||||
|
||||
public:
|
||||
|
||||
|
@ -118,7 +117,7 @@ public:
|
|||
if ((sendBufferIndex == BLE_UART_SERVICE_MAX_DATA_LEN) ||
|
||||
// (sendBuffer[sendBufferIndex - 1] == '\r') ||
|
||||
(sendBuffer[sendBufferIndex - 1] == '\n')) {
|
||||
ble.updateCharacteristicValue(getRXCharacteristicHandle(), static_cast<const uint8_t *>(sendBuffer), sendBufferIndex);
|
||||
ble.gattServer().write(getRXCharacteristicHandle(), static_cast<const uint8_t *>(sendBuffer), sendBufferIndex);
|
||||
sendBufferIndex = 0;
|
||||
}
|
||||
}
|
||||
|
@ -160,7 +159,7 @@ public:
|
|||
return receiveBuffer[receiveBufferIndex++];
|
||||
}
|
||||
|
||||
private:
|
||||
protected:
|
||||
/**
|
||||
* This callback allows the UART service to receive updates to the
|
||||
* txCharacteristic. The application should forward the call to this
|
||||
|
@ -178,7 +177,7 @@ private:
|
|||
}
|
||||
}
|
||||
|
||||
private:
|
||||
protected:
|
||||
BLE &ble;
|
||||
|
||||
uint8_t receiveBuffer[BLE_UART_SERVICE_MAX_DATA_LEN]; /**< The local buffer into which we receive
|
||||
|
|
|
@ -267,7 +267,7 @@ class URIBeaconConfigService {
|
|||
paramsUpdated = true;
|
||||
}
|
||||
if (paramsUpdated) {
|
||||
ble.updateCharacteristicValue(beaconPeriodChar.getValueHandle(), reinterpret_cast<uint8_t *>(¶ms.beaconPeriod), sizeof(uint16_t));
|
||||
ble.gattServer().write(beaconPeriodChar.getValueHandle(), reinterpret_cast<uint8_t *>(¶ms.beaconPeriod), sizeof(uint16_t));
|
||||
}
|
||||
}
|
||||
} else if (handle == resetChar.getValueHandle()) {
|
||||
|
@ -295,17 +295,17 @@ class URIBeaconConfigService {
|
|||
* change to the internal state of the service object.
|
||||
*/
|
||||
void updateCharacteristicValues(void) {
|
||||
ble.updateCharacteristicValue(lockedStateChar.getValueHandle(), &lockedState, 1);
|
||||
ble.updateCharacteristicValue(uriDataChar.getValueHandle(), params.uriData, params.uriDataLength);
|
||||
ble.updateCharacteristicValue(flagsChar.getValueHandle(), ¶ms.flags, 1);
|
||||
ble.updateCharacteristicValue(beaconPeriodChar.getValueHandle(),
|
||||
ble.gattServer().write(lockedStateChar.getValueHandle(), &lockedState, 1);
|
||||
ble.gattServer().write(uriDataChar.getValueHandle(), params.uriData, params.uriDataLength);
|
||||
ble.gattServer().write(flagsChar.getValueHandle(), ¶ms.flags, 1);
|
||||
ble.gattServer().write(beaconPeriodChar.getValueHandle(),
|
||||
reinterpret_cast<uint8_t *>(¶ms.beaconPeriod), sizeof(uint16_t));
|
||||
ble.updateCharacteristicValue(txPowerModeChar.getValueHandle(), ¶ms.txPowerMode, 1);
|
||||
ble.updateCharacteristicValue(advPowerLevelsChar.getValueHandle(),
|
||||
ble.gattServer().write(txPowerModeChar.getValueHandle(), ¶ms.txPowerMode, 1);
|
||||
ble.gattServer().write(advPowerLevelsChar.getValueHandle(),
|
||||
reinterpret_cast<uint8_t *>(params.advPowerLevels), sizeof(PowerLevels_t));
|
||||
}
|
||||
|
||||
private:
|
||||
protected:
|
||||
void lockAuthorizationCallback(GattWriteAuthCallbackParams *authParams) {
|
||||
if (lockedState) {
|
||||
authParams->authorizationReply = AUTH_CALLBACK_REPLY_ATTERR_INSUF_AUTHORIZATION;
|
||||
|
|
|
@ -66,7 +66,7 @@ public:
|
|||
ble.setAdvertisingType(GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED);
|
||||
}
|
||||
|
||||
private:
|
||||
protected:
|
||||
BLE &ble;
|
||||
Payload data;
|
||||
};
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
#include "ble/DiscoveredCharacteristic.h"
|
||||
#include "ble/GattClient.h"
|
||||
|
||||
GattClient::ReadCallback_t DiscoveredCharacteristic::onDataReadCallback;
|
||||
GattClient::WriteCallback_t DiscoveredCharacteristic::onDataWriteCallback;
|
||||
|
||||
ble_error_t
|
||||
DiscoveredCharacteristic::read(uint16_t offset) const
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue