static void disconnect_complete(int sk, uint16_t index, void *buf, size_t len) { struct mgmt_rp_disconnect *rp = buf; struct controller_info *info; char addr[18]; if (len < sizeof(*rp)) { error("Too small disconnect complete event"); return; } ba2str(&rp->bdaddr, addr); DBG("hci%d %s disconnected", index, addr); if (index > max_index) { error("Unexpected index %u in disconnect complete", index); return; } info = &controllers[index]; btd_event_disconn_complete(&info->bdaddr, &rp->bdaddr); btd_event_bonding_complete(&info->bdaddr, &rp->bdaddr, HCI_CONNECTION_TERMINATED); }
static void disconnect_complete(int sk, void *buf, size_t len) { struct mgmt_rp_disconnect *rp = buf; struct controller_info *info; uint16_t index; char addr[18]; if (len < sizeof(*rp)) { error("Too small disconnect complete event"); return; } index = btohs(bt_get_unaligned(&rp->index)); ba2str(&rp->bdaddr, addr); DBG("hci%d %s disconnected", index, addr); if (index > max_index) { error("Unexpected index %u in disconnect complete", index); return; } info = &controllers[index]; btd_event_disconn_complete(&info->bdaddr, &rp->bdaddr); }
static void mgmt_device_disconnected(int sk, uint16_t index, void *buf, size_t len) { struct mgmt_ev_device_disconnected *ev = buf; struct controller_info *info; char addr[18]; if (len < sizeof(*ev)) { error("Too small device_disconnected event"); return; } ba2str(&ev->bdaddr, addr); DBG("hci%u device %s disconnected", index, addr); if (index > max_index) { error("Unexpected index %u in device_disconnected event", index); return; } info = &controllers[index]; btd_event_disconn_complete(&info->bdaddr, &ev->bdaddr); }