minor white space diffs and fixes for typos.
This commit is contained in:
parent
149605fe95
commit
c7eb83db09
9 changed files with 98 additions and 108 deletions
|
@ -19,11 +19,11 @@
|
|||
|
||||
#include "BLEDevice.h"
|
||||
|
||||
/**
|
||||
/**
|
||||
* @class BatteryService
|
||||
* @breif BLE Battery Service. This service displays the battery level from 0%->100% represented as a 8bit number.<br>
|
||||
* @brief BLE Battery Service. This service displays the battery level from 0%->100% represented as a 8bit number.<br>
|
||||
* Service: https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.battery_service.xml <br>
|
||||
* Battery Level Char: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.battery_level.xml
|
||||
* Battery Level Char: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.battery_level.xml
|
||||
*/
|
||||
class BatteryService {
|
||||
public:
|
||||
|
@ -31,7 +31,7 @@ public:
|
|||
* @param[ref] _ble
|
||||
* BLEDevice object for the underlying controller.
|
||||
* @param[in] level
|
||||
* 8bit batterly level. Usually used to represent percentage of batterly charge remaining.
|
||||
* 8bit batterly level. Usually used to represent percentage of batterly charge remaining.
|
||||
*/
|
||||
BatteryService(BLEDevice &_ble, uint8_t level = 100) :
|
||||
ble(_ble),
|
||||
|
@ -52,10 +52,10 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* @breif Update the battery level with a new value. Valid values range from
|
||||
* @brief Update the battery level with a new value. Valid values range from
|
||||
* 0..100. Anything outside this range will be ignored.
|
||||
*
|
||||
* @param newLevel
|
||||
*
|
||||
* @param newLevel
|
||||
* update to battery level.
|
||||
*/
|
||||
void updateBatteryLevel(uint8_t newLevel) {
|
||||
|
@ -64,9 +64,9 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
BLEDevice &ble;
|
||||
uint8_t batteryLevel;
|
||||
GattCharacteristic batteryLevelCharacteristic;
|
||||
BLEDevice &ble;
|
||||
uint8_t batteryLevel;
|
||||
GattCharacteristic batteryLevelCharacteristic;
|
||||
};
|
||||
|
||||
#endif /* #ifndef __BLE_BATTERY_SERVICE_H__*/
|
||||
|
|
|
@ -16,23 +16,23 @@
|
|||
|
||||
#include "DFUService.h"
|
||||
|
||||
const uint8_t DFUServiceBaseUUID[] = {
|
||||
const uint8_t DFUServiceBaseUUID[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x12, 0x12, 0xEF, 0xDE,
|
||||
0x15, 0x23, 0x78, 0x5F, 0xEA, 0xBC, 0xD1, 0x23,
|
||||
};
|
||||
const uint16_t DFUServiceShortUUID = 0x1530;
|
||||
const uint16_t DFUServiceControlCharacteristicShortUUID = 0x1531;
|
||||
const uint16_t DFUServicePacketCharacteristicShortUUID = 0x1532;
|
||||
const uint16_t DFUServiceShortUUID = 0x1530;
|
||||
const uint16_t DFUServiceControlCharacteristicShortUUID = 0x1531;
|
||||
const uint16_t DFUServicePacketCharacteristicShortUUID = 0x1532;
|
||||
|
||||
const uint8_t DFUServiceUUID[] = {
|
||||
const uint8_t DFUServiceUUID[] = {
|
||||
0x00, 0x00, (uint8_t)(DFUServiceShortUUID >> 8), (uint8_t)(DFUServiceShortUUID & 0xFF), 0x12, 0x12, 0xEF, 0xDE,
|
||||
0x15, 0x23, 0x78, 0x5F, 0xEA, 0xBC, 0xD1, 0x23,
|
||||
};
|
||||
const uint8_t DFUServiceControlCharacteristicUUID[] = {
|
||||
const uint8_t DFUServiceControlCharacteristicUUID[] = {
|
||||
0x00, 0x00, (uint8_t)(DFUServiceControlCharacteristicShortUUID >> 8), (uint8_t)(DFUServiceControlCharacteristicShortUUID & 0xFF), 0x12, 0x12, 0xEF, 0xDE,
|
||||
0x15, 0x23, 0x78, 0x5F, 0xEA, 0xBC, 0xD1, 0x23,
|
||||
};
|
||||
const uint8_t DFUServicePacketCharacteristicUUID[] = {
|
||||
const uint8_t DFUServicePacketCharacteristicUUID[] = {
|
||||
0x00, 0x00, (uint8_t)(DFUServicePacketCharacteristicShortUUID >> 8), (uint8_t)(DFUServicePacketCharacteristicShortUUID & 0xFF), 0x12, 0x12, 0xEF, 0xDE,
|
||||
0x15, 0x23, 0x78, 0x5F, 0xEA, 0xBC, 0xD1, 0x23,
|
||||
};
|
||||
|
|
|
@ -32,12 +32,12 @@ extern const uint8_t DFUServicePacketCharacteristicUUID[];
|
|||
|
||||
/**
|
||||
* @class DFUService
|
||||
* @breif Device Firmware Update Service.
|
||||
* @brief Device Firmware Update Service.
|
||||
*/
|
||||
class DFUService {
|
||||
public:
|
||||
/**
|
||||
* @breif Signature for the handover callback. The application may provide such a
|
||||
* @brief Signature for the handover callback. The application may provide such a
|
||||
* callback when setting up the DFU service, in which case it will be
|
||||
* invoked before handing control over to the bootloader.
|
||||
*/
|
||||
|
@ -45,7 +45,7 @@ public:
|
|||
|
||||
public:
|
||||
/**
|
||||
* @breif Adds Device Firmware Update service to an existing ble object.
|
||||
* @brief Adds Device Firmware Update service to an existing ble object.
|
||||
*
|
||||
* @param[ref] _ble
|
||||
* BLEDevice object for the underlying controller.
|
||||
|
@ -75,26 +75,26 @@ public:
|
|||
|
||||
ble.addService(dfuService);
|
||||
handoverCallback = _handoverCallback;
|
||||
serviceAdded = true;
|
||||
serviceAdded = true;
|
||||
|
||||
ble.onDataWritten(this, &DFUService::onDataWritten);
|
||||
}
|
||||
|
||||
/**
|
||||
* @breif
|
||||
* @return
|
||||
* @brief
|
||||
* @return
|
||||
*/
|
||||
uint16_t getControlHandle(void) {
|
||||
return controlPoint.getValueAttribute().getHandle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @breif This callback allows the DFU service to receive the initial trigger to
|
||||
* @brief This callback allows the DFU service to receive the initial trigger to
|
||||
* handover control to the bootloader; but first the application is given a
|
||||
* chance to clean up.
|
||||
*
|
||||
* @param[in]
|
||||
*
|
||||
*
|
||||
*/
|
||||
virtual void onDataWritten(const GattCharacteristicWriteCBParams *params) {
|
||||
if (params->charHandle == controlPoint.getValueAttribute().getHandle()) {
|
||||
|
|
|
@ -21,14 +21,14 @@
|
|||
|
||||
/**
|
||||
* @class DeviceInformationService
|
||||
* @breif BLE Device Information Service <br>
|
||||
* @brief BLE Device Information Service <br>
|
||||
* Service: https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.device_information.xml <br>
|
||||
* Manufacturer Name String Char: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.manufacturer_name_string.xml
|
||||
* Manufacturer Name String Char: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.manufacturer_name_string.xml
|
||||
*/
|
||||
class DeviceInformationService {
|
||||
public:
|
||||
/**
|
||||
* @breif Device Information Service Constructor.
|
||||
* @brief Device Information Service Constructor.
|
||||
*
|
||||
* @param[ref] _ble
|
||||
* BLEDevice object for the underlying controller.
|
||||
|
@ -95,7 +95,7 @@ public:
|
|||
(softwareRevision != NULL) ? strlen(softwareRevision) : 0, /* minLength */
|
||||
(softwareRevision != NULL) ? strlen(softwareRevision) : 0, /* maxLength */
|
||||
GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ)
|
||||
{
|
||||
{
|
||||
static bool serviceAdded = false; /* We should only ever need to add the heart rate service once. */
|
||||
if (serviceAdded) {
|
||||
return;
|
||||
|
|
|
@ -19,19 +19,18 @@
|
|||
|
||||
#include "BLEDevice.h"
|
||||
|
||||
/**
|
||||
/**
|
||||
* @class HealthThermometerService
|
||||
* @breif BLE Health Thermometer Service. This service provides the location of the thermometer and the temperature. <br>
|
||||
* @brief BLE Health Thermometer Service. This service provides the location of the thermometer and the temperature. <br>
|
||||
* Service: https://developer.bluetooth.org/gatt/profiles/Pages/ProfileViewer.aspx?u=org.bluetooth.profile.health_thermometer.xml <br>
|
||||
* Temperature Measurement: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.temperature_measurement.xml <br>
|
||||
* Temperature Type: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.temperature_type.xml
|
||||
* Temperature Type: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.temperature_type.xml
|
||||
*/
|
||||
class HealthThermometerService {
|
||||
public:
|
||||
|
||||
/**
|
||||
* @enum Sensor Location
|
||||
* @breif Location of sensor on the body
|
||||
* @brief Location of sensor on the body
|
||||
*/
|
||||
enum {
|
||||
LOCATION_ARMPIT = 1, /*!< armpit */
|
||||
|
@ -46,9 +45,8 @@ public:
|
|||
};
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* @breif Add the Health Thermometer Service to an existing ble object, initialize with temperature and location.
|
||||
* @brief Add the Health Thermometer Service to an existing ble object, initialize with temperature and location.
|
||||
* @param[ref] _ble reference to the BLE device
|
||||
* @param[in] initialTemp initial value in celsius
|
||||
* @param[in] _location
|
||||
|
@ -69,11 +67,11 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* @breif Update the temperature being broadcast
|
||||
* @brief Update the temperature being broadcast
|
||||
*
|
||||
* @param[in] temperature
|
||||
* Floating point value of the temperature
|
||||
*
|
||||
*
|
||||
*/
|
||||
void updateTemperature(float temperature) {
|
||||
if (ble.getGapState().connected) {
|
||||
|
@ -93,8 +91,8 @@ private:
|
|||
static const unsigned TIMESTAMP_FLAG_POS = 1;
|
||||
static const unsigned TEMPERATURE_TYPE_FLAG_POS = 2;
|
||||
|
||||
static const uint8_t TEMPERATURE_UNITS_CELSIUS = 0;
|
||||
static const uint8_t TEMPERATURE_UNITS_FAHRENHEIT = 1;
|
||||
static const uint8_t TEMPERATURE_UNITS_CELSIUS = 0;
|
||||
static const uint8_t TEMPERATURE_UNITS_FAHRENHEIT = 1;
|
||||
|
||||
TemperatureValueBytes(float initialTemperature) : bytes() {
|
||||
/* assumption: temperature values are expressed in Celsius */
|
||||
|
@ -109,7 +107,7 @@ private:
|
|||
memcpy(&bytes[OFFSET_OF_VALUE], &temp_ieee11073, sizeof(float));
|
||||
}
|
||||
|
||||
uint8_t *getPointer(void) {
|
||||
uint8_t *getPointer(void) {
|
||||
return bytes;
|
||||
}
|
||||
|
||||
|
@ -117,7 +115,7 @@ private:
|
|||
return bytes;
|
||||
}
|
||||
|
||||
private:
|
||||
private:
|
||||
/**
|
||||
* @brief A very quick conversion between a float temperature and 11073-20601 FLOAT-Type.
|
||||
* @param temperature The temperature as a float.
|
||||
|
@ -130,8 +128,7 @@ private:
|
|||
return (((uint32_t)exponent) << 24) | mantissa;
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
private:
|
||||
/* First byte = 8-bit flags, Second field is a float holding the temperature value. */
|
||||
/* See --> https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.temperature_measurement.xml */
|
||||
uint8_t bytes[SIZEOF_VALUE_BYTES];
|
||||
|
|
|
@ -19,19 +19,18 @@
|
|||
|
||||
#include "BLEDevice.h"
|
||||
|
||||
/**
|
||||
/**
|
||||
* @class HeartRateService
|
||||
* @breif BLE Service for HeartRate. This BLE Service contains the location of the sensor, the heartrate in beats per minute. <br>
|
||||
* @brief BLE Service for HeartRate. This BLE Service contains the location of the sensor, the heartrate in beats per minute. <br>
|
||||
* Service: https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.heart_rate.xml <br>
|
||||
* HRM Char: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml <br>
|
||||
* Location: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.body_sensor_location.xml
|
||||
* Location: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.body_sensor_location.xml
|
||||
*/
|
||||
class HeartRateService {
|
||||
public:
|
||||
|
||||
/**
|
||||
* @enum SensorLocation
|
||||
* @breif Location of HeartRate sensor on body.
|
||||
* @brief Location of HeartRate sensor on body.
|
||||
*/
|
||||
enum {
|
||||
LOCATION_OTHER = 0, /*!< Other Location */
|
||||
|
@ -45,7 +44,7 @@ public:
|
|||
|
||||
public:
|
||||
/**
|
||||
* @breif Constructor with 8bit HRM Counter value.
|
||||
* @brief Constructor with 8bit HRM Counter value.
|
||||
*
|
||||
* @param[ref] _ble
|
||||
* Reference to the underlying BLEDevice.
|
||||
|
@ -68,7 +67,7 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* @breif Constructor with a 16-bit HRM Counter value.
|
||||
* @brief Constructor with a 16-bit HRM Counter value.
|
||||
*
|
||||
* @param[in] _ble
|
||||
* Reference to the underlying BLEDevice.
|
||||
|
@ -91,10 +90,10 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* @breif Set a new 8-bit value for heart rate.
|
||||
* @brief Set a new 8-bit value for heart rate.
|
||||
*
|
||||
* @param[in] hrmCounter
|
||||
* HeartRate in bpm.
|
||||
* HeartRate in bpm.
|
||||
*/
|
||||
void updateHeartRate(uint8_t hrmCounter) {
|
||||
valueBytes.updateHeartRate(hrmCounter);
|
||||
|
@ -105,7 +104,7 @@ public:
|
|||
* Set a new 16-bit value for heart rate.
|
||||
*
|
||||
* @param[in] hrmCounter
|
||||
* HeartRate in bpm.
|
||||
* HeartRate in bpm.
|
||||
*/
|
||||
void updateHeartRate(uint16_t hrmCounter) {
|
||||
valueBytes.updateHeartRate(hrmCounter);
|
||||
|
@ -115,7 +114,7 @@ public:
|
|||
/**
|
||||
* This callback allows the HeartRateService to receive updates to the
|
||||
* controlPoint Characteristic.
|
||||
*
|
||||
*
|
||||
*/
|
||||
virtual void onDataWritten(const GattCharacteristicWriteCBParams *params) {
|
||||
if (params->charHandle == controlPoint.getValueAttribute().getHandle()) {
|
||||
|
@ -162,17 +161,17 @@ private:
|
|||
}
|
||||
|
||||
void updateHeartRate(uint8_t hrmCounter) {
|
||||
valueBytes[FLAGS_BYTE_INDEX] &= ~VALUE_FORMAT_FLAG;
|
||||
valueBytes[FLAGS_BYTE_INDEX] &= ~VALUE_FORMAT_FLAG;
|
||||
valueBytes[FLAGS_BYTE_INDEX + 1] = hrmCounter;
|
||||
}
|
||||
|
||||
void updateHeartRate(uint16_t hrmCounter) {
|
||||
valueBytes[FLAGS_BYTE_INDEX] |= VALUE_FORMAT_FLAG;
|
||||
valueBytes[FLAGS_BYTE_INDEX] |= VALUE_FORMAT_FLAG;
|
||||
valueBytes[FLAGS_BYTE_INDEX + 1] = (uint8_t)(hrmCounter & 0xFF);
|
||||
valueBytes[FLAGS_BYTE_INDEX + 2] = (uint8_t)(hrmCounter >> 8);
|
||||
}
|
||||
|
||||
uint8_t *getPointer(void) {
|
||||
uint8_t *getPointer(void) {
|
||||
return valueBytes;
|
||||
}
|
||||
|
||||
|
@ -180,11 +179,11 @@ private:
|
|||
return valueBytes;
|
||||
}
|
||||
|
||||
unsigned getNumValueBytes(void) const {
|
||||
unsigned getNumValueBytes(void) const {
|
||||
return 1 + ((valueBytes[FLAGS_BYTE_INDEX] & VALUE_FORMAT_FLAG) ? sizeof(uint16_t) : sizeof(uint8_t));
|
||||
}
|
||||
|
||||
private:
|
||||
private:
|
||||
/* First byte = 8-bit values, no extra info, Second byte = uint8_t HRM value */
|
||||
/* See --> https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml */
|
||||
uint8_t valueBytes[MAX_VALUE_BYTES];
|
||||
|
|
|
@ -16,26 +16,26 @@
|
|||
|
||||
#include "UARTService.h"
|
||||
|
||||
const uint8_t UARTServiceBaseUUID[LENGTH_OF_LONG_UUID] = {
|
||||
const uint8_t UARTServiceBaseUUID[LENGTH_OF_LONG_UUID] = {
|
||||
0x6E, 0x40, 0x00, 0x00, 0xB5, 0xA3, 0xF3, 0x93,
|
||||
0xE0, 0xA9, 0xE5, 0x0E, 0x24, 0xDC, 0xCA, 0x9E,
|
||||
};
|
||||
const uint16_t UARTServiceShortUUID = 0x0001;
|
||||
const uint16_t UARTServiceTXCharacteristicShortUUID = 0x0002;
|
||||
const uint16_t UARTServiceRXCharacteristicShortUUID = 0x0003;
|
||||
const uint8_t UARTServiceUUID[LENGTH_OF_LONG_UUID] = {
|
||||
const uint8_t UARTServiceUUID[LENGTH_OF_LONG_UUID] = {
|
||||
0x6E, 0x40, (uint8_t)(UARTServiceShortUUID >> 8), (uint8_t)(UARTServiceShortUUID & 0xFF), 0xB5, 0xA3, 0xF3, 0x93,
|
||||
0xE0, 0xA9, 0xE5, 0x0E, 0x24, 0xDC, 0xCA, 0x9E,
|
||||
};
|
||||
const uint8_t UARTServiceUUID_reversed[LENGTH_OF_LONG_UUID] = {
|
||||
const uint8_t UARTServiceUUID_reversed[LENGTH_OF_LONG_UUID] = {
|
||||
0x9E, 0xCA, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0,
|
||||
0x93, 0xF3, 0xA3, 0xB5, (uint8_t)(UARTServiceShortUUID & 0xFF), (uint8_t)(UARTServiceShortUUID >> 8), 0x40, 0x6E
|
||||
};
|
||||
const uint8_t UARTServiceTXCharacteristicUUID[LENGTH_OF_LONG_UUID] = {
|
||||
const uint8_t UARTServiceTXCharacteristicUUID[LENGTH_OF_LONG_UUID] = {
|
||||
0x6E, 0x40, (uint8_t)(UARTServiceTXCharacteristicShortUUID >> 8), (uint8_t)(UARTServiceTXCharacteristicShortUUID & 0xFF), 0xB5, 0xA3, 0xF3, 0x93,
|
||||
0xE0, 0xA9, 0xE5, 0x0E, 0x24, 0xDC, 0xCA, 0x9E,
|
||||
};
|
||||
const uint8_t UARTServiceRXCharacteristicUUID[LENGTH_OF_LONG_UUID] = {
|
||||
const uint8_t UARTServiceRXCharacteristicUUID[LENGTH_OF_LONG_UUID] = {
|
||||
0x6E, 0x40, (uint8_t)(UARTServiceRXCharacteristicShortUUID >> 8), (uint8_t)(UARTServiceRXCharacteristicShortUUID & 0xFF), 0xB5, 0xA3, 0xF3, 0x93,
|
||||
0xE0, 0xA9, 0xE5, 0x0E, 0x24, 0xDC, 0xCA, 0x9E,
|
||||
};
|
||||
|
|
|
@ -23,20 +23,20 @@
|
|||
#include "UUID.h"
|
||||
#include "BLEDevice.h"
|
||||
|
||||
extern const uint8_t UARTServiceBaseUUID[LENGTH_OF_LONG_UUID];
|
||||
extern const uint8_t UARTServiceBaseUUID[LENGTH_OF_LONG_UUID];
|
||||
extern const uint16_t UARTServiceShortUUID;
|
||||
extern const uint16_t UARTServiceTXCharacteristicShortUUID;
|
||||
extern const uint16_t UARTServiceRXCharacteristicShortUUID;
|
||||
|
||||
extern const uint8_t UARTServiceUUID[LENGTH_OF_LONG_UUID];
|
||||
extern const uint8_t UARTServiceUUID_reversed[LENGTH_OF_LONG_UUID];
|
||||
extern const uint8_t UARTServiceUUID[LENGTH_OF_LONG_UUID];
|
||||
extern const uint8_t UARTServiceUUID_reversed[LENGTH_OF_LONG_UUID];
|
||||
|
||||
extern const uint8_t UARTServiceTXCharacteristicUUID[LENGTH_OF_LONG_UUID];
|
||||
extern const uint8_t UARTServiceRXCharacteristicUUID[LENGTH_OF_LONG_UUID];
|
||||
extern const uint8_t UARTServiceTXCharacteristicUUID[LENGTH_OF_LONG_UUID];
|
||||
extern const uint8_t UARTServiceRXCharacteristicUUID[LENGTH_OF_LONG_UUID];
|
||||
|
||||
/**
|
||||
* @class UARTService
|
||||
* @breif BLE Service to enable UART over BLE
|
||||
* @brief BLE Service to enable UART over BLE
|
||||
*/
|
||||
class UARTService {
|
||||
public:
|
||||
|
@ -82,8 +82,6 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* Override for Stream::write().
|
||||
*
|
||||
* We attempt to collect bytes before pushing them to the UART RX
|
||||
* characteristic--writing to the RX characteristic will then generate
|
||||
* notifications for the client. Updates made in quick succession to a
|
||||
|
@ -100,15 +98,15 @@ public:
|
|||
* @param length Amount of characters to be appended.
|
||||
* @return Amount of characters appended to the rxCharacteristic.
|
||||
*/
|
||||
ssize_t write(const void* _buffer, size_t length) {
|
||||
size_t origLength = length;
|
||||
const uint8_t *buffer = static_cast<const uint8_t *>(_buffer);
|
||||
ssize_t write(const void *_buffer, size_t length) {
|
||||
size_t origLength = length;
|
||||
const uint8_t *buffer = static_cast<const uint8_t *>(_buffer);
|
||||
|
||||
if (ble.getGapState().connected) {
|
||||
unsigned bufferIndex = 0;
|
||||
while (length) {
|
||||
unsigned bytesRemainingInSendBuffer = BLE_UART_SERVICE_MAX_DATA_LEN - sendBufferIndex;
|
||||
unsigned bytesToCopy = (length < bytesRemainingInSendBuffer) ? length : bytesRemainingInSendBuffer;
|
||||
unsigned bytesToCopy = (length < bytesRemainingInSendBuffer) ? length : bytesRemainingInSendBuffer;
|
||||
|
||||
/* copy bytes into sendBuffer */
|
||||
memcpy(&sendBuffer[sendBufferIndex], &buffer[bufferIndex], bytesToCopy);
|
||||
|
|
|
@ -34,17 +34,15 @@ static const uint8_t resetCharUUID[] = URI_BEACON_CONFIG_UUID_INI
|
|||
|
||||
/**
|
||||
* @class URIBeaconConfigService
|
||||
* @breif UriBeacon Configuration Service. Can be used to set URL, adjust power levels, and set flags.
|
||||
* @brief UriBeacon Configuration Service. Can be used to set URL, adjust power levels, and set flags.
|
||||
*/
|
||||
class URIBeaconConfigService {
|
||||
public:
|
||||
|
||||
/**
|
||||
* @enum TXPowerModes_t
|
||||
* @breif Transmission Power Modes for UriBeacon
|
||||
*/
|
||||
* @enum TXPowerModes_t
|
||||
* @brief Transmission Power Modes for UriBeacon
|
||||
*/
|
||||
enum TXPowerModes_t {
|
||||
|
||||
TX_POWER_MODE_LOWEST = 0, /*!< Lowest TX power mode */
|
||||
TX_POWER_MODE_LOW = 1, /*!< Low TX power mode */
|
||||
TX_POWER_MODE_MEDIUM = 2, /*!< Medium TX power mode */
|
||||
|
@ -125,7 +123,6 @@ public:
|
|||
* transactions.
|
||||
*/
|
||||
public:
|
||||
|
||||
/**
|
||||
* Update flags of the URIBeacon dynamically.
|
||||
*
|
||||
|
@ -149,8 +146,8 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* @breif Update the txPowerLevels table.
|
||||
*
|
||||
* @brief Update the txPowerLevels table.
|
||||
*
|
||||
* @param[in] powerLevelsIn
|
||||
* Array of power levels
|
||||
*/
|
||||
|
@ -161,7 +158,7 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* @breif Set the effective power mode from one of the values in the powerLevels tables.
|
||||
* @brief Set the effective power mode from one of the values in the powerLevels tables.
|
||||
*
|
||||
* @param[in] mode
|
||||
* Set the TX Power Mode.
|
||||
|
@ -180,7 +177,7 @@ public:
|
|||
* @param beaconPeriodIn
|
||||
* Beacon advertising period in milliseconds
|
||||
*/
|
||||
void setBeaconPeriod(uint16_t beaconPeriodIn) {
|
||||
void setBeaconPeriod(uint16_t beaconPeriodIn) {
|
||||
beaconPeriod = beaconPeriodIn;
|
||||
configureGAP();
|
||||
updateBeaconPeriodCharacteristic();
|
||||
|
@ -212,13 +209,13 @@ private:
|
|||
}
|
||||
|
||||
/*
|
||||
* Encode the URI Prefix to a single byte if possible.
|
||||
*/
|
||||
* Encode the URI Prefix to a single byte if possible.
|
||||
*/
|
||||
size_t encodeURISchemePrefix(const char *&urldata, size_t &sizeofURLData) {
|
||||
if (!sizeofURLData) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* These are the URI Prefixes that can be abbreviated.*/
|
||||
const char *prefixes[] = {
|
||||
"http://www.",
|
||||
|
@ -244,12 +241,11 @@ private:
|
|||
|
||||
return encodedBytes;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Encode the URI Suffix to a single byte if possible.
|
||||
*/
|
||||
* Encode the URI Suffix to a single byte if possible.
|
||||
*/
|
||||
size_t encodeURI(const char *urldata, size_t sizeofURLData) {
|
||||
|
||||
/* These are the URI suffixes that can be abbreviated. */
|
||||
const char *suffixes[] = {
|
||||
".com/",
|
||||
|
@ -303,8 +299,11 @@ private:
|
|||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
* This callback is invoked when a GATT client attempts to modify any of the
|
||||
* characteristics of this service. Attempts to do so must be rolled back if
|
||||
* the config service is locked; else they are also applied to the internal
|
||||
* state of this service object.
|
||||
*/
|
||||
void onDataWritten(const GattCharacteristicWriteCBParams *params) {
|
||||
uint16_t handle = params->charHandle;
|
||||
if (handle == uriDataChar.getValueHandle()) {
|
||||
|
@ -361,8 +360,8 @@ private:
|
|||
}
|
||||
|
||||
/*
|
||||
* Reset the default values.
|
||||
*/
|
||||
* Reset the default values.
|
||||
*/
|
||||
void resetDefaults(void) {
|
||||
lockedState = false;
|
||||
uriDataLength = 0;
|
||||
|
@ -376,8 +375,9 @@ private:
|
|||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
* Internal helper function used to update the GATT database following any
|
||||
* change to the internal state of the service object.
|
||||
*/
|
||||
void updateGATT(void) {
|
||||
updateLockedStateCharacteristic();
|
||||
updateURIDataCharacteristic();
|
||||
|
@ -408,16 +408,12 @@ private:
|
|||
}
|
||||
|
||||
void updateTxPowerLevelsCharacteristic(void) {
|
||||
ble.updateCharacteristicValue(txPowerLevelsChar.getValueHandle(), reinterpret_cast<uint8_t *>(powerLevels), NUM_POWER_MODES * sizeof(int8_t));
|
||||
ble.updateCharacteristicValue(txPowerLevelsChar.getValueHandle(), reinterpret_cast<uint8_t *>(powerLevels), NUM_POWER_MODES * sizeof(int8_t));
|
||||
}
|
||||
|
||||
/**
|
||||
* The following is a private debug function.
|
||||
*/
|
||||
private:
|
||||
|
||||
/**
|
||||
* For debugging only. Print Hex representation of ServiceDataPayload to terminal.
|
||||
* For debugging only. Print Hex representation of ServiceDataPayload to the console.
|
||||
*/
|
||||
void dumpEncodedSeviceData() const {
|
||||
printf("encoded: '");
|
||||
|
@ -457,4 +453,4 @@ private:
|
|||
GattCharacteristic resetChar;
|
||||
};
|
||||
|
||||
#endif /* #ifndef __BLE_URI_BEACON_CONFIG_SERVICE_H__*/
|
||||
#endif /* #ifndef __BLE_URI_BEACON_CONFIG_SERVICE_H__*/
|
||||
|
|
Loading…
Reference in a new issue