diff --git a/android/gatt.c b/android/gatt.c
index d7ea745..e87237a 100644
--- a/android/gatt.c
+++ b/android/gatt.c
HAL_OP_GATT_CLIENT_EXECUTE_WRITE, HAL_STATUS_FAILED);
}
+static void send_register_for_notification_ev(int32_t id, int32_t registered,
+ int32_t status,
+ const struct hal_gatt_srvc_id *srvc,
+ const struct hal_gatt_gatt_id *ch)
+{
+ struct hal_ev_gatt_client_reg_for_notif ev;
+
+ ev.conn_id = id;
+ ev.status = status;
+ ev.registered = registered;
+ memcpy(&ev.srvc_id, srvc, sizeof(ev.srvc_id));
+ memcpy(&ev.char_id, ch, sizeof(ev.char_id));
+
+ ipc_send_notif(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_EV_GATT_CLIENT_REGISTER_FOR_NOTIF, sizeof(ev), &ev);
+}
+
static void handle_client_register_for_notification(const void *buf,
uint16_t len)
{
struct element_id match_id;
struct gatt_device *dev;
struct service *service;
+ int32_t conn_id = 0;
uint8_t status;
bdaddr_t addr;
goto failed;
}
+ conn_id = dev->conn_id;
+
hal_srvc_id_to_element_id(&cmd->srvc_id, &match_id);
service = queue_find(dev->services, match_srvc_by_element_id,
&match_id);
status = HAL_STATUS_SUCCESS;
failed:
- /* TODO: send callback with notification enabled/disabled */
+ send_register_for_notification_ev(conn_id, 1, status, &cmd->srvc_id,
+ &cmd->char_id);
ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
HAL_OP_GATT_CLIENT_REGISTER_FOR_NOTIFICATION,
status);