diff --git a/attrib/gatt-service.c b/attrib/gatt-service.c
index 327569f..73230f2 100644
--- a/attrib/gatt-service.c
+++ b/attrib/gatt-service.c
atval[0] = info->props;
att_put_u16(h + 1, &atval[1]);
att_put_u16(info->uuid.value.u16, &atval[3]);
- attrib_db_add(h++, &bt_uuid, ATT_NONE, ATT_NOT_PERMITTED, atval,
+ /* FIXME: Provide the adapter in next function */
+ attrib_db_add(NULL, h++, &bt_uuid, ATT_NONE, ATT_NOT_PERMITTED, atval,
sizeof(atval));
/* characteristic value */
- a = attrib_db_add(h++, &info->uuid, read_reqs, write_reqs, NULL, 0);
+ /* FIXME: Provide the adapter in next function */
+ a = attrib_db_add(NULL, h++, &info->uuid, read_reqs, write_reqs, NULL,
+ 0);
for (l = info->callbacks; l != NULL; l = l->next) {
struct attrib_cb *cb = l->data;
bt_uuid16_create(&bt_uuid, GATT_CLIENT_CHARAC_CFG_UUID);
cfg_val[0] = 0x00;
cfg_val[1] = 0x00;
- a = attrib_db_add(h++, &bt_uuid, ATT_NONE, ATT_AUTHENTICATION,
- cfg_val, sizeof(cfg_val));
+ /* FIXME: Provide the adapter in next function */
+ a = attrib_db_add(NULL, h++, &bt_uuid, ATT_NONE,
+ ATT_AUTHENTICATION, cfg_val, sizeof(cfg_val));
if (info->ccc_handle != NULL)
*info->ccc_handle = a->handle;
h = start_handle;
bt_uuid16_create(&bt_uuid, uuid);
att_put_u16(svc_uuid, &atval[0]);
- attrib_db_add(h++, &bt_uuid, ATT_NONE, ATT_NOT_PERMITTED, atval,
+ /* FIXME: Provide the adapter in next function */
+ attrib_db_add(NULL, h++, &bt_uuid, ATT_NONE, ATT_NOT_PERMITTED, atval,
sizeof(atval));
for (l = chrs; l != NULL; l = l->next) {
diff --git a/plugins/gatt-example.c b/plugins/gatt-example.c
index 4aa5a8b..f3f2b3a 100644
--- a/plugins/gatt-example.c
+++ b/plugins/gatt-example.c
/* Thermometer: primary service definition */
bt_uuid16_create(&uuid, GATT_PRIM_SVC_UUID);
att_put_u16(THERM_HUMIDITY_SVC_UUID, &atval[0]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 2);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 2);
bt_uuid16_create(&uuid, GATT_INCLUDE_UUID);
att_put_u16(manuf1[0], &atval[0]);
att_put_u16(manuf1[1], &atval[2]);
att_put_u16(MANUFACTURER_SVC_UUID, &atval[4]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval,
- 6);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE,
+ ATT_NOT_PERMITTED, atval, 6);
}
/* Thermometer: Include */
att_put_u16(manuf2[0], &atval[0]);
att_put_u16(manuf2[1], &atval[2]);
att_put_u16(VENDOR_SPECIFIC_SVC_UUID, &atval[4]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval,
- 6);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE,
+ ATT_NOT_PERMITTED, atval, 6);
}
/* Thermometer: temperature characteristic */
atval[0] = ATT_CHAR_PROPER_READ;
att_put_u16(h + 1, &atval[1]);
att_put_u16(TEMPERATURE_UUID, &atval[3]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 5);
/* Thermometer: temperature characteristic value */
bt_uuid16_create(&uuid, TEMPERATURE_UUID);
atval[0] = 0x8A;
atval[1] = 0x02;
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 2);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 2);
/* Thermometer: temperature characteristic format */
bt_uuid16_create(&uuid, GATT_CHARAC_FMT_UUID);
att_put_u16(FMT_CELSIUS_UUID, &atval[2]);
atval[4] = 0x01;
att_put_u16(FMT_OUTSIDE_UUID, &atval[5]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 7);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 7);
/* Thermometer: characteristic user description */
bt_uuid16_create(&uuid, GATT_CHARAC_USER_DESC_UUID);
len = strlen(desc_out_temp);
strncpy((char *) atval, desc_out_temp, len);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, len);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, len);
/* Thermometer: relative humidity characteristic */
bt_uuid16_create(&uuid, GATT_CHARAC_UUID);
atval[0] = ATT_CHAR_PROPER_READ;
att_put_u16(h + 1, &atval[1]);
att_put_u16(RELATIVE_HUMIDITY_UUID, &atval[3]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 5);
/* Thermometer: relative humidity value */
bt_uuid16_create(&uuid, RELATIVE_HUMIDITY_UUID);
atval[0] = 0x27;
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 1);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 1);
/* Thermometer: relative humidity characteristic format */
bt_uuid16_create(&uuid, GATT_CHARAC_FMT_UUID);
att_put_u16(FMT_PERCENT_UUID, &atval[2]);
att_put_u16(BLUETOOTH_SIG_UUID, &atval[4]);
att_put_u16(FMT_OUTSIDE_UUID, &atval[6]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 8);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 8);
/* Thermometer: characteristic user description */
bt_uuid16_create(&uuid, GATT_CHARAC_USER_DESC_UUID);
len = strlen(desc_out_hum);
strncpy((char *) atval, desc_out_hum, len);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, len);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, len);
g_assert(h - start_handle == svc_size);
/* Secondary Service: Manufacturer Service */
bt_uuid16_create(&uuid, GATT_SND_SVC_UUID);
att_put_u16(MANUFACTURER_SVC_UUID, &atval[0]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 2);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 2);
/* Manufacturer name characteristic definition */
bt_uuid16_create(&uuid, GATT_CHARAC_UUID);
atval[0] = ATT_CHAR_PROPER_READ;
att_put_u16(h + 1, &atval[1]);
att_put_u16(MANUFACTURER_NAME_UUID, &atval[3]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 5);
/* Manufacturer name characteristic value */
bt_uuid16_create(&uuid, MANUFACTURER_NAME_UUID);
len = strlen(manufacturer_name1);
strncpy((char *) atval, manufacturer_name1, len);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, len);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, len);
/* Manufacturer serial number characteristic */
bt_uuid16_create(&uuid, GATT_CHARAC_UUID);
atval[0] = ATT_CHAR_PROPER_READ;
att_put_u16(h + 1, &atval[1]);
att_put_u16(MANUFACTURER_SERIAL_UUID, &atval[3]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 5);
/* Manufacturer serial number characteristic value */
bt_uuid16_create(&uuid, MANUFACTURER_SERIAL_UUID);
len = strlen(serial1);
strncpy((char *) atval, serial1, len);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, len);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, len);
g_assert(h - start_handle == svc_size);
/* Secondary Service: Manufacturer Service */
bt_uuid16_create(&uuid, GATT_SND_SVC_UUID);
att_put_u16(MANUFACTURER_SVC_UUID, &atval[0]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 2);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 2);
/* Manufacturer name characteristic definition */
bt_uuid16_create(&uuid, GATT_CHARAC_UUID);
atval[0] = ATT_CHAR_PROPER_READ;
att_put_u16(h + 1, &atval[1]);
att_put_u16(MANUFACTURER_NAME_UUID, &atval[3]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 5);
/* Manufacturer name attribute */
bt_uuid16_create(&uuid, MANUFACTURER_NAME_UUID);
len = strlen(manufacturer_name2);
strncpy((char *) atval, manufacturer_name2, len);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, len);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, len);
/* Characteristic: serial number */
bt_uuid16_create(&uuid, GATT_CHARAC_UUID);
atval[0] = ATT_CHAR_PROPER_READ;
att_put_u16(h + 1, &atval[1]);
att_put_u16(MANUFACTURER_SERIAL_UUID, &atval[3]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 5);
/* Serial number characteristic value */
bt_uuid16_create(&uuid, MANUFACTURER_SERIAL_UUID);
len = strlen(serial2);
strncpy((char *) atval, serial2, len);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, len);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, len);
g_assert(h - start_handle == svc_size);
/* Secondary Service: Vendor Specific Service */
bt_uuid16_create(&uuid, GATT_SND_SVC_UUID);
att_put_u16(VENDOR_SPECIFIC_SVC_UUID, &atval[0]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 2);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 2);
/* Vendor Specific Type characteristic definition */
bt_uuid16_create(&uuid, GATT_CHARAC_UUID);
atval[0] = ATT_CHAR_PROPER_READ;
att_put_u16(h + 1, &atval[1]);
att_put_u16(VENDOR_SPECIFIC_TYPE_UUID, &atval[3]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 5);
/* Vendor Specific Type characteristic value */
bt_uuid16_create(&uuid, VENDOR_SPECIFIC_TYPE_UUID);
atval[3] = 0x64;
atval[4] = 0x6F;
atval[5] = 0x72;
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 6);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 6);
g_assert(h - start_handle == svc_size);
/* Weight service: primary service definition */
bt_uuid16_create(&uuid, GATT_PRIM_SVC_UUID);
memcpy(atval, &prim_weight_uuid_btorder, 16);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 16);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 16);
if (vendor[0] && vendor[1]) {
/* Weight: include */
att_put_u16(vendor[0], &atval[0]);
att_put_u16(vendor[1], &atval[2]);
att_put_u16(MANUFACTURER_SVC_UUID, &atval[4]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval,
- 6);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE,
+ ATT_NOT_PERMITTED, atval, 6);
}
/* Weight: characteristic */
atval[0] = ATT_CHAR_PROPER_READ;
att_put_u16(h + 1, &atval[1]);
memcpy(&atval[3], &char_weight_uuid_btorder, 16);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 19);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 19);
/* Weight: characteristic value */
bt_uuid128_create(&uuid, char_weight_uuid);
atval[1] = 0x55;
atval[2] = 0x00;
atval[3] = 0x00;
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 4);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 4);
/* Weight: characteristic format */
bt_uuid16_create(&uuid, GATT_CHARAC_FMT_UUID);
att_put_u16(FMT_KILOGRAM_UUID, &atval[2]);
att_put_u16(BLUETOOTH_SIG_UUID, &atval[4]);
att_put_u16(FMT_HANGING_UUID, &atval[6]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 8);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, 8);
/* Weight: characteristic user description */
bt_uuid16_create(&uuid, GATT_CHARAC_USER_DESC_UUID);
len = strlen(desc_weight);
strncpy((char *) atval, desc_weight, len);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, len);
+ attrib_db_add(adapter->adapter, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED,
+ atval, len);
g_assert(h - start_handle == svc_size);
diff --git a/proximity/reporter.c b/proximity/reporter.c
index 050b1c7..d8cc58f 100644
--- a/proximity/reporter.c
+++ b/proximity/reporter.c
/* Primary service definition */
bt_uuid16_create(&uuid, GATT_PRIM_SVC_UUID);
att_put_u16(LINK_LOSS_SVC_UUID, &atval[0]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 2);
+ /* FIXME: Provide the adapter in next function */
+ attrib_db_add(NULL, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 2);
/* Alert level characteristic */
bt_uuid16_create(&uuid, GATT_CHARAC_UUID);
atval[0] = ATT_CHAR_PROPER_READ | ATT_CHAR_PROPER_WRITE;
att_put_u16(h + 1, &atval[1]);
att_put_u16(ALERT_LEVEL_CHR_UUID, &atval[3]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
+ /* FIXME: Provide the adapter in next function */
+ attrib_db_add(NULL, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
/* Alert level value */
bt_uuid16_create(&uuid, ALERT_LEVEL_CHR_UUID);
att_put_u8(NO_ALERT, &atval[0]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NONE, atval, 1);
+ /* FIXME: Provide the adapter in next function */
+ attrib_db_add(NULL, h++, &uuid, ATT_NONE, ATT_NONE, atval, 1);
g_assert(h - start_handle == svc_size);
}
/* Primary service definition */
bt_uuid16_create(&uuid, GATT_PRIM_SVC_UUID);
att_put_u16(TX_POWER_SVC_UUID, &atval[0]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 2);
+ /* FIXME: Provide the adapter in next function */
+ attrib_db_add(NULL, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 2);
/* Power level characteristic */
bt_uuid16_create(&uuid, GATT_CHARAC_UUID);
atval[0] = ATT_CHAR_PROPER_READ | ATT_CHAR_PROPER_NOTIFY;
att_put_u16(h + 1, &atval[1]);
att_put_u16(POWER_LEVEL_CHR_UUID, &atval[3]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
+ /* FIXME: Provide the adapter in next function */
+ attrib_db_add(NULL, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
/* Power level value */
bt_uuid16_create(&uuid, POWER_LEVEL_CHR_UUID);
att_put_u8(0x00, &atval[0]);
tx_power_handle = h;
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 1);
+ /* FIXME: Provide the adapter in next function */
+ attrib_db_add(NULL, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 1);
/* Client characteristic configuration */
bt_uuid16_create(&uuid, GATT_CLIENT_CHARAC_CFG_UUID);
atval[0] = 0x00;
atval[1] = 0x00;
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NONE, atval, 2);
+ /* FIXME: Provide the adapter in next function */
+ attrib_db_add(NULL, h++, &uuid, ATT_NONE, ATT_NONE, atval, 2);
g_assert(h - start_handle == svc_size);
}
/* Primary service definition */
bt_uuid16_create(&uuid, GATT_PRIM_SVC_UUID);
att_put_u16(IMMEDIATE_ALERT_SVC_UUID, &atval[0]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 2);
+ /* FIXME: Provide the adapter in next function */
+ attrib_db_add(NULL, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 2);
/* Alert level characteristic */
bt_uuid16_create(&uuid, GATT_CHARAC_UUID);
atval[0] = ATT_CHAR_PROPER_READ | ATT_CHAR_PROPER_WRITE;
att_put_u16(h + 1, &atval[1]);
att_put_u16(ALERT_LEVEL_CHR_UUID, &atval[3]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
+ /* FIXME: Provide the adapter in next function */
+ attrib_db_add(NULL, h++, &uuid, ATT_NONE, ATT_NOT_PERMITTED, atval, 5);
/* Alert level value */
bt_uuid16_create(&uuid, ALERT_LEVEL_CHR_UUID);
att_put_u8(NO_ALERT, &atval[0]);
- attrib_db_add(h++, &uuid, ATT_NONE, ATT_NONE, atval, 1);
+ /* FIXME: Provide the adapter in next function */
+ attrib_db_add(NULL, h++, &uuid, ATT_NONE, ATT_NONE, atval, 1);
g_assert(h - start_handle == svc_size);
}
diff --git a/src/attrib-server.c b/src/attrib-server.c
index ccb7b34..0ddcf49 100644
--- a/src/attrib-server.c
+++ b/src/attrib-server.c
return 0;
}
-struct attribute *attrib_db_add(uint16_t handle, bt_uuid_t *uuid, int read_reqs,
- int write_reqs, const uint8_t *value, int len)
+struct attribute *attrib_db_add(struct btd_adapter *adapter, uint16_t handle,
+ bt_uuid_t *uuid, int read_reqs, int write_reqs,
+ const uint8_t *value, int len)
{
- struct gatt_server *server;
-
- DBG("Deprecated function!");
+ GSList *l;
- server = get_default_gatt_server();
- if (server == NULL)
+ l = g_slist_find_custom(servers, adapter, adapter_cmp);
+ if (l == NULL)
return NULL;
- return attrib_db_add_new(server, handle, uuid, read_reqs, write_reqs,
+ return attrib_db_add_new(l->data, handle, uuid, read_reqs, write_reqs,
value, len);
}
diff --git a/src/attrib-server.h b/src/attrib-server.h
index 8bf9c07..ac1c388 100644
--- a/src/attrib-server.h
+++ b/src/attrib-server.h
*/
uint16_t attrib_db_find_avail(struct btd_adapter *adapter, uint16_t nitems);
-struct attribute *attrib_db_add(uint16_t handle, bt_uuid_t *uuid, int read_reqs,
- int write_reqs, const uint8_t *value, int len);
+struct attribute *attrib_db_add(struct btd_adapter *adapter, uint16_t handle,
+ bt_uuid_t *uuid, int read_reqs, int write_reqs,
+ const uint8_t *value, int len);
int attrib_db_update(uint16_t handle, bt_uuid_t *uuid, const uint8_t *value,
int len, struct attribute **attr);
int attrib_db_del(uint16_t handle);