Bluetooth配列に情報を入力するために、C++アプリケーションに取り組んでいます。これは mbed プラットフォームの BLE_API に基づいていますが、関連する必要はないと思います。関数にリファクタリングしようとしている次のコードがあります。
GattAttribute nameDescr1(BLE_UUID_DESCRIPTOR_CHAR_USER_DESC, (uint8_t *)"Percentage", strlen("Percentage"));
GattAttribute *pdescriptors[] = { &nameDescr1 };
PercentageFill(PercentageUUID, valueBytes.getPointer(),
valueBytes.getNumValueBytes(), HeartRateValueBytes::MAX_VALUE_BYTES,
GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_EXTENDED_PROPERTIES,
pdescriptors,
sizeof(pdescriptors) / sizeof(GattAttribute*)),
私はこれまでのところこれを持っています:
GattAttribute produceName (char title[]) {
GattAttribute nameDescr(BLE_UUID_DESCRIPTOR_CHAR_USER_DESC, (uint8_t *)title, strlen(title));
GattAttribute *descriptors[] = { &nameDescr };
return descriptors;
}
ただし、予想通り、エラーが発生します。
エラー: "GattAttribute *[1]" から "GattAttribute" に変換するための適切なコンストラクターが存在しません
これがスローされている理由はわかりますが、「PercentageFill」コンストラクターで必要な形式であるため、配列全体を返す方法がわかりません。
ありがとう。
アップデート:
完全なコンテキストを提供するために、ここに私が設定している他のCharacteristcisがあります(それぞれ異なる名前が付いています):
NewService(BLE &_ble, uint8_t percentageFill, uint8_t replacementDue) :
ble(_ble),
valueBytes(percentageFill),
PercentageFill(PercentageUUID, valueBytes.getPointer(),
valueBytes.getNumValueBytes(), HeartRateValueBytes::MAX_VALUE_BYTES,
GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_EXTENDED_PROPERTIES,
pdescriptors,
sizeof(pdescriptors) / sizeof(GattAttribute*)),
Time( TimeUUID,
&replacementDue,
GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_EXTENDED_PROPERTIES,
tdescriptors,
sizeof(tdescriptors) / sizeof(GattAttribute*)),
UseProfile( UseProfileUUID,
&controlPointValue,
GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_EXTENDED_PROPERTIES,
Udescriptors,
sizeof(Udescriptors) / sizeof(GattAttribute*)),) {
setupService();
}