Fixed AVRCP controller reply pending request
[platform/core/connectivity/bluetooth-frwk.git] / bt-service-adaptation / services / audio / avrcp / bt-service-avrcp-ctrl.c
index afc2517..7a43fad 100644 (file)
@@ -135,56 +135,56 @@ int _bt_avrcp_control_cmd(int type)
 
        connected = _bt_is_headset_type_connected(BT_AVRCP, connected_address);
 
-       if (connected) {
-               _bt_convert_addr_string_to_type(device_address.addr,
-                               connected_address);
-               switch (type) {
-               case RC_PASS_CMD_PLAY:
-                       status = avrcp_ct_play((bt_address_t*)&device_address);
-                       break;
-               case RC_PASS_CMD_PAUSE:
-                       status = avrcp_ct_pause((bt_address_t*)&device_address);
-                       break;
-               case RC_PASS_CMD_STOP:
-                       status = avrcp_ct_stop((bt_address_t*)&device_address);
-                       break;
-               case RC_PASS_CMD_NEXT:
-                       status = avrcp_ct_next_track((bt_address_t*)&device_address);
-                       break;
-               case RC_PASS_CMD_PREVIOUS:
-                       status = avrcp_ct_prev_track((bt_address_t*)&device_address);
-                       break;
-               case RC_PASS_CMD_PRESS_FAST_FORWARD:
-                       status = avrcp_ct_fforward((bt_address_t*)&device_address, PRESS_STATE);
-                       break;
-               case RC_PASS_CMD_RELEASE_FAST_FORWARD:
-                       status = avrcp_ct_fforward((bt_address_t*)&device_address, RELEASE_STATE);
-                       break;
-               case RC_PASS_CMD_PRESS_REWIND:
-                       status = avrcp_ct_rewind((bt_address_t*)&device_address, PRESS_STATE);
-                       break;
-               case RC_PASS_CMD_RELEASE_REWIND:
-                       status = avrcp_ct_rewind((bt_address_t*)&device_address, RELEASE_STATE);
-                       break;
-               case RC_PASS_CMD_VOLUME_UP:
-                       status = avrcp_ct_volume_up((bt_address_t*)&device_address);
-                       break;
-               case RC_PASS_CMD_VOLUME_DOWN:
-                       status = avrcp_ct_volume_down((bt_address_t*)&device_address);
-                       break;
-               default:
-                       break;
-               }
-
-               if (status != OAL_STATUS_SUCCESS) {
-                       BT_ERR("Send pass through command err: [%d]", status);
-                       result = BLUETOOTH_ERROR_INTERNAL;
-               }
-       } else {
+       if (!connected) {
                BT_ERR("Device is not connected:");
                return BLUETOOTH_ERROR_NOT_CONNECTED;
        }
 
+       _bt_convert_addr_string_to_type(device_address.addr,
+                       connected_address);
+       switch (type) {
+       case RC_PASS_CMD_PLAY:
+               status = avrcp_ct_play((bt_address_t*)&device_address);
+               break;
+       case RC_PASS_CMD_PAUSE:
+               status = avrcp_ct_pause((bt_address_t*)&device_address);
+               break;
+       case RC_PASS_CMD_STOP:
+               status = avrcp_ct_stop((bt_address_t*)&device_address);
+               break;
+       case RC_PASS_CMD_NEXT:
+               status = avrcp_ct_next_track((bt_address_t*)&device_address);
+               break;
+       case RC_PASS_CMD_PREVIOUS:
+               status = avrcp_ct_prev_track((bt_address_t*)&device_address);
+               break;
+       case RC_PASS_CMD_PRESS_FAST_FORWARD:
+               status = avrcp_ct_fforward((bt_address_t*)&device_address, PRESS_STATE);
+               break;
+       case RC_PASS_CMD_RELEASE_FAST_FORWARD:
+               status = avrcp_ct_fforward((bt_address_t*)&device_address, RELEASE_STATE);
+               break;
+       case RC_PASS_CMD_PRESS_REWIND:
+               status = avrcp_ct_rewind((bt_address_t*)&device_address, PRESS_STATE);
+               break;
+       case RC_PASS_CMD_RELEASE_REWIND:
+               status = avrcp_ct_rewind((bt_address_t*)&device_address, RELEASE_STATE);
+               break;
+       case RC_PASS_CMD_VOLUME_UP:
+               status = avrcp_ct_volume_up((bt_address_t*)&device_address);
+               break;
+       case RC_PASS_CMD_VOLUME_DOWN:
+               status = avrcp_ct_volume_down((bt_address_t*)&device_address);
+               break;
+       default:
+               break;
+       }
+
+       if (status != OAL_STATUS_SUCCESS) {
+               BT_ERR("Send pass through command err: [%d]", status);
+               result = BLUETOOTH_ERROR_INTERNAL;
+       }
+
        return result;
 }
 
@@ -201,54 +201,54 @@ int _bt_avrcp_control_cmd_to_dest(int type, bluetooth_device_address_t *device_a
        connected = _bt_is_headset_address_type_connected(BT_AVRCP,
                                                                (const char *)connected_address);
 
-       if (connected) {
-               switch (type) {
-               case RC_PASS_CMD_PLAY:
-                       status = avrcp_ct_play((bt_address_t*)device_address);
-                       break;
-               case RC_PASS_CMD_PAUSE:
-                       status = avrcp_ct_pause((bt_address_t*)device_address);
-                       break;
-               case RC_PASS_CMD_STOP:
-                       status = avrcp_ct_stop((bt_address_t*)device_address);
-                       break;
-               case RC_PASS_CMD_NEXT:
-                       status = avrcp_ct_next_track((bt_address_t*)device_address);
-                       break;
-               case RC_PASS_CMD_PREVIOUS:
-                       status = avrcp_ct_prev_track((bt_address_t*)device_address);
-                       break;
-               case RC_PASS_CMD_PRESS_FAST_FORWARD:
-                       status = avrcp_ct_fforward((bt_address_t*)device_address, PRESS_STATE);
-                       break;
-               case RC_PASS_CMD_RELEASE_FAST_FORWARD:
-                       status = avrcp_ct_fforward((bt_address_t*)device_address, RELEASE_STATE);
-                       break;
-               case RC_PASS_CMD_PRESS_REWIND:
-                       status = avrcp_ct_rewind((bt_address_t*)device_address, PRESS_STATE);
-                       break;
-               case RC_PASS_CMD_RELEASE_REWIND:
-                       status = avrcp_ct_rewind((bt_address_t*)device_address, RELEASE_STATE);
-                       break;
-               case RC_PASS_CMD_VOLUME_UP:
-                       status = avrcp_ct_volume_up((bt_address_t*)device_address);
-                       break;
-               case RC_PASS_CMD_VOLUME_DOWN:
-                       status = avrcp_ct_volume_down((bt_address_t*)device_address);
-                       break;
-               default:
-                       break;
-               }
-
-               if (status != OAL_STATUS_SUCCESS) {
-                       BT_ERR("Send pass through command err: [%d]", status);
-                       result = BLUETOOTH_ERROR_INTERNAL;
-               }
-       } else {
+       if (!connected) {
                BT_ERR("Device is not connected:");
                return BLUETOOTH_ERROR_NOT_CONNECTED;
        }
 
+       switch (type) {
+       case RC_PASS_CMD_PLAY:
+               status = avrcp_ct_play((bt_address_t*)device_address);
+               break;
+       case RC_PASS_CMD_PAUSE:
+               status = avrcp_ct_pause((bt_address_t*)device_address);
+               break;
+       case RC_PASS_CMD_STOP:
+               status = avrcp_ct_stop((bt_address_t*)device_address);
+               break;
+       case RC_PASS_CMD_NEXT:
+               status = avrcp_ct_next_track((bt_address_t*)device_address);
+               break;
+       case RC_PASS_CMD_PREVIOUS:
+               status = avrcp_ct_prev_track((bt_address_t*)device_address);
+               break;
+       case RC_PASS_CMD_PRESS_FAST_FORWARD:
+               status = avrcp_ct_fforward((bt_address_t*)device_address, PRESS_STATE);
+               break;
+       case RC_PASS_CMD_RELEASE_FAST_FORWARD:
+               status = avrcp_ct_fforward((bt_address_t*)device_address, RELEASE_STATE);
+               break;
+       case RC_PASS_CMD_PRESS_REWIND:
+               status = avrcp_ct_rewind((bt_address_t*)device_address, PRESS_STATE);
+               break;
+       case RC_PASS_CMD_RELEASE_REWIND:
+               status = avrcp_ct_rewind((bt_address_t*)device_address, RELEASE_STATE);
+               break;
+       case RC_PASS_CMD_VOLUME_UP:
+               status = avrcp_ct_volume_up((bt_address_t*)device_address);
+               break;
+       case RC_PASS_CMD_VOLUME_DOWN:
+               status = avrcp_ct_volume_down((bt_address_t*)device_address);
+               break;
+       default:
+               break;
+       }
+
+       if (status != OAL_STATUS_SUCCESS) {
+               BT_ERR("Send pass through command err: [%d]", status);
+               result = BLUETOOTH_ERROR_INTERNAL;
+       }
+
        return result;
 }
 
@@ -477,13 +477,13 @@ static void __bt_avrcp_ct_reply_pending_requests(void)
                case BT_AVRCP_GET_TRACK_INFO:
                case BT_AVRCP_CONTROL_GET_PROPERTY: {
                        _bt_service_method_return(req_info->context, out_param, result);
+                       _bt_free_info_from_invocation_list(req_info);
+                       g_array_free(out_param, TRUE);
                        break;
                }
                default:
                        break;
                }
-               _bt_free_info_from_invocation_list(req_info);
-               g_array_free(out_param, TRUE);
        }
        BT_INFO("-");
 }