From c829bff4e7f7046890c30aff6e55e1c26ca4eb63 Mon Sep 17 00:00:00 2001 From: Szymon Janc Date: Mon, 22 Sep 2014 16:30:12 +0200 Subject: [PATCH] android/gatt: Use configuration data for device information profile --- android/gatt.c | 115 +++++++++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 52 deletions(-) diff --git a/android/gatt.c b/android/gatt.c index 83d199f8e..32db2afbe 100644 --- a/android/gatt.c +++ b/android/gatt.c @@ -6380,23 +6380,6 @@ static void register_gap_service(void) error("gatt: Failed to register GAP SDP record"); } -/* TODO: Get those data from device possible via androig/bluetooth.c */ -static struct device_info { - const char *manufacturer_name; - const char *model_number; - const char *serial_number; - const char *firmware_rev; - const char *hardware_rev; - const char *software_rev; -} device_info = { - .manufacturer_name = "BlueZ for Android", - .model_number = "model no", - .serial_number = "serial no", - .firmware_rev = "firmware rev", - .hardware_rev = "hardware rev", - .software_rev = "software rev", -}; - static void device_info_read_cb(uint16_t handle, uint16_t offset, uint8_t att_opcode, bdaddr_t *bdaddr, void *user_data) @@ -6434,6 +6417,7 @@ static void register_device_info_service(void) { bt_uuid_t uuid; uint16_t srvc_handle, end_handle; + const char *data; DBG(""); @@ -6442,41 +6426,68 @@ static void register_device_info_service(void) srvc_handle = gatt_db_add_service(gatt_db, &uuid, true, 15); /* User data are not const hence (void *) cast is used */ - bt_uuid16_create(&uuid, GATT_CHARAC_MODEL_NUMBER_STRING); - gatt_db_add_characteristic(gatt_db, srvc_handle, &uuid, GATT_PERM_READ, - GATT_CHR_PROP_READ, - device_info_read_cb, NULL, - (void *) device_info.model_number); - - bt_uuid16_create(&uuid, GATT_CHARAC_SERIAL_NUMBER_STRING); - gatt_db_add_characteristic(gatt_db, srvc_handle, &uuid, GATT_PERM_READ, - GATT_CHR_PROP_READ, - device_info_read_cb, NULL, - (void *) device_info.serial_number); - - bt_uuid16_create(&uuid, GATT_CHARAC_FIRMWARE_REVISION_STRING); - gatt_db_add_characteristic(gatt_db, srvc_handle, &uuid, GATT_PERM_READ, - GATT_CHR_PROP_READ, - device_info_read_cb, NULL, - (void *) device_info.firmware_rev); - - bt_uuid16_create(&uuid, GATT_CHARAC_HARDWARE_REVISION_STRING); - gatt_db_add_characteristic(gatt_db, srvc_handle, &uuid, GATT_PERM_READ, - GATT_CHR_PROP_READ, - device_info_read_cb, NULL, - (void *) device_info.hardware_rev); - - bt_uuid16_create(&uuid, GATT_CHARAC_SOFTWARE_REVISION_STRING); - gatt_db_add_characteristic(gatt_db, srvc_handle, &uuid, GATT_PERM_READ, - GATT_CHR_PROP_READ, - device_info_read_cb, NULL, - (void *) device_info.software_rev); - - bt_uuid16_create(&uuid, GATT_CHARAC_MANUFACTURER_NAME_STRING); - gatt_db_add_characteristic(gatt_db, srvc_handle, &uuid, GATT_PERM_READ, - GATT_CHR_PROP_READ, - device_info_read_cb, NULL, - (void *) device_info.manufacturer_name); + data = bt_config_get_name(); + if (data) { + bt_uuid16_create(&uuid, GATT_CHARAC_MODEL_NUMBER_STRING); + gatt_db_add_characteristic(gatt_db, srvc_handle, &uuid, + GATT_PERM_READ, + GATT_CHR_PROP_READ, + device_info_read_cb, NULL, + (void *) data); + } + + /* TODO */ + if (data) { + bt_uuid16_create(&uuid, GATT_CHARAC_SERIAL_NUMBER_STRING); + gatt_db_add_characteristic(gatt_db, srvc_handle, &uuid, + GATT_PERM_READ, + GATT_CHR_PROP_READ, + device_info_read_cb, NULL, + (void *) data); + } + + /* TODO */ + data = NULL; + if (data) { + bt_uuid16_create(&uuid, GATT_CHARAC_FIRMWARE_REVISION_STRING); + gatt_db_add_characteristic(gatt_db, srvc_handle, &uuid, + GATT_PERM_READ, + GATT_CHR_PROP_READ, + device_info_read_cb, NULL, + (void *) data); + } + + /* TODO */ + data = NULL; + if (data) { + bt_uuid16_create(&uuid, GATT_CHARAC_HARDWARE_REVISION_STRING); + gatt_db_add_characteristic(gatt_db, srvc_handle, &uuid, + GATT_PERM_READ, + GATT_CHR_PROP_READ, + device_info_read_cb, NULL, + (void *) data); + } + + /* TODO */ + data = NULL; + if (data) { + bt_uuid16_create(&uuid, GATT_CHARAC_SOFTWARE_REVISION_STRING); + gatt_db_add_characteristic(gatt_db, srvc_handle, &uuid, + GATT_PERM_READ, + GATT_CHR_PROP_READ, + device_info_read_cb, NULL, + (void *) data); + } + + data = bt_config_get_vendor(); + if (data) { + bt_uuid16_create(&uuid, GATT_CHARAC_MANUFACTURER_NAME_STRING); + gatt_db_add_characteristic(gatt_db, srvc_handle, &uuid, + GATT_PERM_READ, + GATT_CHR_PROP_READ, + device_info_read_cb, NULL, + (void *) data); + } gatt_db_service_set_active(gatt_db, srvc_handle, true); -- 2.47.3