2014-04-09 86 views
3

當添加使用一個的BlueZ GATT服務(使用「gatt_service_add()」)可以指定ATTRIB_READ,ATTRIB_WRITE等各種回調方法有關於「讀」已給出的特性的一個例子:bluez中的GATT服務的回調方法如何?

static uint8_t battery_state_read(struct attribute *a, struct btd_device *device, gpointer user_data); 

其他功能的方法如何(例如:寫入)?

回答

2

我一直在使用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*/ 
} 

的「屬性」結構包含數據傳遞給可寫回調。

相關問題