Nordic stack and drivers for the mbed BLE API
Dependents: idd_hw5_bleFanProto
Fork of nRF51822 by
Diff: nRF51GattServer.cpp
- Revision:
- 7:dd6465921aaa
- Parent:
- 6:bbb4357dc135
- Child:
- 8:2214f1df6a6a
diff -r bbb4357dc135 -r dd6465921aaa nRF51GattServer.cpp --- a/nRF51GattServer.cpp Wed May 28 12:55:18 2014 +0100 +++ b/nRF51GattServer.cpp Wed May 28 16:45:23 2014 +0100 @@ -22,6 +22,30 @@ #include "nRF51Gap.h" +/** + * The nRF transport has its own 3-byte representation of a UUID. If the user- + * specified UUID is 128-bits wide, then the UUID base needs to be added to the + * soft-device and converted to a 3-byte handle before being used further. This + * function is responsible for this translation of user-specified UUIDs into + * nRF's representation. + * + * @param[in] uuid + * user-specified UUID + * @return nRF + * 3-byte UUID (containing a type and 16-bit UUID) representation + * to be used with SVC calls. + */ +static ble_uuid_t +custom_convert_to_transport_uuid(const uint16_t uuid) +{ + ble_uuid_t transportUUID = { /* presently we only deal with 16-bit uuids. */ + .type = BLE_UUID_TYPE_BLE, + .uuid = uuid + }; + + return transportUUID; +} + /**************************************************************************/ /*! @brief Adds a new service to the GATT table on the peripheral @@ -67,6 +91,8 @@ for (uint8_t i = 0; i < service.characteristicCount; i++) { GattCharacteristic *p_char = service.characteristics[i]; + uuid = custom_convert_to_transport_uuid(p_char->uuid); + uuid.uuid = p_char->uuid; ASSERT ( ERROR_NONE == custom_add_in_characteristic(service.handle,