HAL_EV_ACL_STATE_CHANGED, sizeof(hal_ev), &hal_ev, -1);
}
+static void mgmt_device_disconnected_event(uint16_t index, uint16_t length,
+ const void *param, void *user_data)
+{
+ const struct mgmt_ev_device_disconnected *ev = param;
+ struct hal_ev_acl_state_changed hal_ev;
+
+ if (length < sizeof(*ev)) {
+ error("Too short device disconnected event (%u bytes)", length);
+ return;
+ }
+
+ hal_ev.status = HAL_STATUS_SUCCESS;
+ hal_ev.state = HAL_ACL_STATE_DISCONNECTED;
+ bdaddr2android(&ev->addr.bdaddr, hal_ev.bdaddr);
+
+ ipc_send(notification_io, HAL_SERVICE_ID_BLUETOOTH,
+ HAL_EV_ACL_STATE_CHANGED, sizeof(hal_ev), &hal_ev, -1);
+}
+
static void mgmt_connect_failed_event(uint16_t index, uint16_t length,
const void *param, void *user_data)
{
mgmt_register(adapter->mgmt, MGMT_EV_DEVICE_CONNECTED, adapter->index,
mgmt_device_connected_event, NULL, NULL);
+ mgmt_register(adapter->mgmt, MGMT_EV_DEVICE_DISCONNECTED,
+ adapter->index, mgmt_device_disconnected_event,
+ NULL, NULL);
+
mgmt_register(adapter->mgmt, MGMT_EV_CONNECT_FAILED, adapter->index,
mgmt_connect_failed_event, NULL, NULL);