Я пытаюсь добавить некоторые характерные пользовательские описания в свою обычную службу BLE GATT, используя mbed API. До сих пор моя работа основывалась на структуре кода this. Однако я хотел бы добавить имена к этим характеристикам. Не так много информации о том, как это сделать. Однако ниже приведен код, который добавляет информацию к характеристике.Добавление характерного пользовательского описания для нескольких пользовательских служб C++ BLE GATT
Конструктор для GattCharacteristic() принимает в качестве необязательного аргумента массив GattAttribtues. Вы можете заполнить свое описание пользователя в GattAttribute и передать его вместе с характеристикой. У меня есть эта структура, работающая на одну характеристику, но я изо всех сил пытаюсь воспроизвести ее для 3 персонажей. Я не могу воспроизвести все это 3 раза, так как я запускаю его для множества вопросов о массивах и т. Д., Которые уже определены. Если я складываю описания в массив, он не будет принят GattArray?
uint16_t newServiceUUID = 0xA000;
uint16_t PercentageUUID = 0xA001;
uint16_t TimeUUID = 0xA002;
uint16_t UseProfileUUID = 0xA003;
const static char DEVICE_NAME[] = "Device"; // Device name
static const uint16_t uuid16_list[] = {0xFFF};
static uint8_t percentageValue[10] = {0};
GattAttribute nameDescr(BLE_UUID_DESCRIPTOR_CHAR_USER_DESC, (uint8_t *)"Percentage", strlen("Percentage"));
GattAttribute *descriptors[] = {&nameDescr};
WriteOnlyArrayGattCharacteristic<uint8_t,sizeof(percentageValue)>
percentageChar(PercentageUUID,
percentageValue,
GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_EXTENDED_PROPERTIES,
descriptors,
sizeof(descriptors)/sizeof(GattAttribute*));
GattCharacteristic *characteristics[] = {&percentageChar, &timeChar, &UseProfileChar};
GattService newService(newServiceUUID, characteristics, sizeof(characteristics)/sizeof(GattCharacteristic *));
EDIT
Работа с обсуждения ниже, теперь у меня есть:
#include <string>
class MyGattArray
{
public:
MyGattArray(const std::string& name) :
attr(BLE_UUID_DESCRIPTOR_CHAR_USER_DESC, (uint8_t *)name.c_str(), (name.size()+1))
{
descriptors[0] = &attr;
}
GattAttribute attr;
GattAttribute *descriptors[1];
};
и
static uint8_t percentageValue[10] = {0};
MyGattArray PercentageName("Percentage");
GattAttribute *descriptors[] = {&(PercentageName.attr)};
WriteOnlyArrayGattCharacteristic<uint8_t,sizeof(percentageValue)>
percentageChar(PercentageUUID,
percentageValue,
GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_EXTENDED_PROPERTIES,
descriptors,
sizeof(descriptors)/sizeof(GattAttribute*));
Это строит, но не дает характерное название.
Что вы имеете в виду 'не дает характерный в name' ли characterstic иметь дескриптор при подключении устройства? Если да, то каково его содержание? – jpo38
@ jpo38 Служба создана, но характеристика имеет только описание 0xA001 и ничего больше. –
Вы пытались отладить выполнение функции WriteOnlyArrayGattCharacteristic в обеих ситуациях? – jpo38