static void set_pairable_complete(int sk, void *buf, size_t len) { struct mgmt_mode *rp = buf; struct controller_info *info; struct btd_adapter *adapter; uint16_t index; if (len < sizeof(*rp)) { error("Too small set pairable complete event"); return; } index = btohs(bt_get_unaligned(&rp->index)); DBG("hci%d pairable %u", index, rp->val); if (index > max_index) { error("Unexpected index %u in pairable complete", index); return; } info = &controllers[index]; info->pairable = rp->val ? TRUE : FALSE; adapter = manager_find_adapter(&info->bdaddr); if (!adapter) return; btd_adapter_pairable_changed(adapter, info->pairable); }
static void mgmt_pairable(int sk, uint16_t index, void *buf, size_t len) { struct mgmt_mode *ev = buf; struct controller_info *info; struct btd_adapter *adapter; if (len < sizeof(*ev)) { error("Too small pairable event"); return; } DBG("Controller %u pairable %u", index, ev->val); if (index > max_index) { error("Unexpected index %u in pairable event", index); return; } info = &controllers[index]; info->pairable = ev->val ? TRUE : FALSE; adapter = manager_find_adapter(&info->bdaddr); if (!adapter) return; btd_adapter_pairable_changed(adapter, info->pairable); }