我一直在使用bluez 4.101最近創建一個GATT服務器,你會想看看位於「proximity」目錄下的「linkloss.c」(至少在藍色4.101)。或者,在這裏我想: https://github.com/pauloborges/bluez/blob/master/profiles/proximity/linkloss.c
鏈路損耗的服務註冊與可寫的回調,如:
svc_added = gatt_service_add(adapter,
GATT_PRIM_SVC_UUID, &uuid,
/* Alert level characteristic */
GATT_OPT_CHR_UUID16, ALERT_LEVEL_CHR_UUID,
GATT_OPT_CHR_PROPS,
ATT_CHAR_PROPER_READ | ATT_CHAR_PROPER_WRITE,
GATT_OPT_CHR_VALUE_CB, ATTRIB_READ,
link_loss_alert_lvl_read, lladapter,
GATT_OPT_CHR_VALUE_CB, ATTRIB_WRITE,
link_loss_alert_lvl_write, lladapter,
GATT_OPT_CHR_VALUE_GET_HANDLE,
&lladapter->alert_lvl_value_handle,
GATT_OPT_INVALID);
凡回調結構是這樣的:
static uint8_t link_loss_alert_lvl_write(struct attribute *a, struct btd_device *device, gpointer user_data)
{
/*stuff*/
}
的「屬性」結構包含數據傳遞給可寫回調。