ble nano hid over gatt
Dependencies: BLE_API mbed-dev nRF51822
Diff: DeviceInformationService.h
- Revision:
- 55:f01a31103685
- Parent:
- 0:be89b5fdea09
- Child:
- 56:e1d90e2c7402
--- a/DeviceInformationService.h Tue Aug 30 13:18:00 2016 +0000 +++ b/DeviceInformationService.h Tue Aug 30 14:05:56 2016 +0000 @@ -19,6 +19,17 @@ #include "ble/BLE.h" +// https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.pnp_id.xml +#pragma pack(push, 1) +typedef struct { + uint8_t vendorID_source; + uint16_t vendorID; + uint16_t productID; + uint16_t productVersion; +} PnPID_t; +#pragma pack(pop) + + /** * @class DeviceInformationService * @brief BLE Device Information Service @@ -52,7 +63,8 @@ const char *serialNumber = NULL, const char *hardwareRevision = NULL, const char *firmwareRevision = NULL, - const char *softwareRevision = NULL) : + const char *softwareRevision = NULL, + const PnPID_t *pnpID = NULL) : ble(_ble), manufacturersNameStringCharacteristic(GattCharacteristic::UUID_MANUFACTURER_NAME_STRING_CHAR, (uint8_t *)manufacturersName, @@ -83,7 +95,8 @@ (uint8_t *)softwareRevision, (softwareRevision != NULL) ? strlen(softwareRevision) : 0, /* Min length */ (softwareRevision != NULL) ? strlen(softwareRevision) : 0, /* Max length */ - GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ) + GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ), + pnpIDCharacteristic(GattCharacteristic::UUID_PNP_ID_CHAR, const_cast<PnPID_t*>(pnpID)) { static bool serviceAdded = false; /* We only add the information service once. */ if (serviceAdded) { @@ -91,19 +104,15 @@ } // required for OS X bonding - SecurityManager::SecurityMode_t securityMode = SecurityManager::SECURITY_MODE_ENCRYPTION_NO_MITM; - manufacturersNameStringCharacteristic.requireSecurity(securityMode); - modelNumberStringCharacteristic.requireSecurity(securityMode); - serialNumberStringCharacteristic.requireSecurity(securityMode); - hardwareRevisionStringCharacteristic.requireSecurity(securityMode); - firmwareRevisionStringCharacteristic.requireSecurity(securityMode); + pnpIDCharacteristic.requireSecurity(SecurityManager::SECURITY_MODE_ENCRYPTION_NO_MITM); GattCharacteristic *charTable[] = {&manufacturersNameStringCharacteristic, &modelNumberStringCharacteristic, &serialNumberStringCharacteristic, &hardwareRevisionStringCharacteristic, &firmwareRevisionStringCharacteristic, - &softwareRevisionStringCharacteristic}; + &softwareRevisionStringCharacteristic, + &pnpIDCharacteristic}; GattService deviceInformationService(GattService::UUID_DEVICE_INFORMATION_SERVICE, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); @@ -141,6 +150,7 @@ * BLE characterising to allow BLE peers access to the software revision string. */ GattCharacteristic softwareRevisionStringCharacteristic; + ReadOnlyGattCharacteristic<PnPID_t> pnpIDCharacteristic; }; #endif /* #ifndef __BLE_DEVICE_INFORMATION_SERVICE_H__*/ \ No newline at end of file