Add service added event handling logic
[platform/core/connectivity/bluetooth-frwk.git] / bt-oal / oal-hfp.c
index 6516245..2e786dc 100644 (file)
@@ -50,24 +50,24 @@ const bt_interface_t * _bt_get_stack_interface(void);
 static const bthf_interface_t *blued_hfp_interface = NULL;
 
 static bthf_callbacks_t blued_hf_cb = {
-       sizeof(blued_hf_cb),
-       cb_hfp_connection_state,
-       cb_hfp_audio_connection_state,
-       NULL, /* vr_cmd_cb */
-       NULL, /* answer_call_cmd_cb */
-       NULL, /* hangup_call_cmd_cb */
-       NULL, /* volume_cmd_cb */
-       NULL, /* dial_call_cmd_cb */
-       NULL, /* dtmf_cmd_cb */
-       NULL, /* nrec_cmd_cb */
-       NULL, /* wbs_cb */
-       NULL, /* chld_cmd_cb */
-       NULL, /* cnum_cmd_cb */
-       NULL, /* cind_cmd_cb */
-       NULL, /* cops_cmd_cb */
-       NULL, /* clcc_cmd_cb */
-       NULL, /* unknown_at_cmd_cb */
-       NULL  /* key_pressed_cmd_cb */
+       .size = sizeof(blued_hf_cb),
+       .connection_state_cb = cb_hfp_connection_state,
+       .audio_state_cb = cb_hfp_audio_connection_state,
+       .vr_cmd_cb = NULL,
+       .answer_call_cmd_cb = NULL,
+       .hangup_call_cmd_cb = NULL,
+       .volume_cmd_cb = NULL,
+       .dial_call_cmd_cb = NULL,
+       .dtmf_cmd_cb = NULL,
+       .nrec_cmd_cb = NULL,
+       .wbs_cb = NULL,
+       .chld_cmd_cb = NULL,
+       .cnum_cmd_cb = NULL,
+       .cind_cmd_cb = NULL,
+       .cops_cmd_cb = NULL,
+       .clcc_cmd_cb = NULL,
+       .unknown_at_cmd_cb = NULL,
+       .key_pressed_cmd_cb = NULL
 };
 
 oal_status_t hfp_enable(int max_hf_clients_supported)
@@ -212,16 +212,19 @@ static void cb_hfp_connection_state(bthf_connection_state_t state, bt_bdaddr_t *
        int event_type;
        bdstr_t bdstr;
        bt_address_t * event_data = NULL;
-       event_data = g_new0(bt_address_t, 1);
-       memcpy(event_data->addr, bd_addr->address, BT_ADDRESS_BYTES_NUM);
 
        if (bd_addr == NULL) {
                BT_ERR("Address is NULL");
-               if (event_data)
-                       g_free(event_data);
                return;
        }
 
+       event_data = g_new0(bt_address_t, 1);
+       if (event_data == NULL) {
+               BT_ERR("failed to allocate event_data");
+               return;
+       }
+       memcpy(event_data->addr, bd_addr->address, BT_ADDRESS_BYTES_NUM);
+
        BT_INFO("HFP Profile state = [%d],  BT Address = [%s]", state, bdt_bd2str((bt_address_t*)bd_addr, &bdstr));
        switch (state) {
        case BTHF_CONNECTION_STATE_DISCONNECTED: {
@@ -242,8 +245,7 @@ static void cb_hfp_connection_state(bthf_connection_state_t state, bt_bdaddr_t *
        }
        default: {
                BT_INFO("Invalid state");
-               if (event_data)
-                       g_free(event_data);
+               g_free(event_data);
                return;
        }
        }
@@ -255,15 +257,19 @@ static void cb_hfp_audio_connection_state(bthf_audio_state_t state, bt_bdaddr_t
        int event_type;
        bdstr_t bdstr;
        bt_address_t * event_data = NULL;
-       event_data = g_new0(bt_address_t, 1);
-       memcpy(event_data->addr, bd_addr->address, BT_ADDRESS_BYTES_NUM);
 
        if (bd_addr == NULL) {
                BT_ERR("Address is NULL");
-               if (event_data)
-                       g_free(event_data);
                return;
        }
+
+       event_data = g_new0(bt_address_t, 1);
+       if (event_data == NULL) {
+               BT_ERR("failed to allocate event_data");
+               return;
+       }
+       memcpy(event_data->addr, bd_addr->address, BT_ADDRESS_BYTES_NUM);
+
        BT_INFO("HFP Audio state = [%d],  BT Address = [%s]", state, bdt_bd2str((bt_address_t*)bd_addr, &bdstr));
 
        switch (state) {
@@ -289,8 +295,7 @@ static void cb_hfp_audio_connection_state(bthf_audio_state_t state, bt_bdaddr_t
        }
        default: {
                BT_INFO("Invalid state");
-               if (event_data)
-                       g_free(event_data);
+               g_free(event_data);
                return;
        }
        }