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;
- default:
- break;
- }
+ if (!connected) {
+ BT_ERR("Device is not connected:");
+ return BLUETOOTH_ERROR_NOT_CONNECTED;
+ }
- if (status != OAL_STATUS_SUCCESS) {
- BT_ERR("Send pass through command err: [%d]", status);
- result = BLUETOOTH_ERROR_INTERNAL;
- }
- } else {
+ _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;
+}
+
+int _bt_avrcp_control_cmd_to_dest(int type, bluetooth_device_address_t *device_address)
+{
+ char connected_address[BT_ADDRESS_STRING_SIZE + 1];
+ gboolean connected;
+ oal_status_t status = OAL_STATUS_SUCCESS;
+ int result = BLUETOOTH_ERROR_NONE;
+ BT_INFO("+");
+
+ _bt_convert_addr_type_to_string(connected_address, device_address->addr);
+
+ connected = _bt_is_headset_address_type_connected(BT_AVRCP,
+ (const char *)connected_address);
+
+ 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;
}
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("-");
}
unsigned int total_track = 0;
unsigned int track_number = 0;
unsigned int playing_time = 0;
+ GVariant *title;
+ GVariant *artist;
+ GVariant *album;
+ GVariant *genre;
BT_INFO("+");
total_track = (unsigned int)(metadata->total_track);
track_number = (unsigned int)(metadata->track_number);
playing_time = (unsigned int)(metadata->playing_time);
+
+ title = g_variant_new_from_data((const GVariantType *)"ay",
+ metadata->title_info, MEDIA_ATTIRBUTE_STRING_LENGTH,
+ TRUE, NULL, NULL);
+ artist = g_variant_new_from_data((const GVariantType *)"ay",
+ metadata->artist_info, MEDIA_ATTIRBUTE_STRING_LENGTH,
+ TRUE, NULL, NULL);
+ album = g_variant_new_from_data((const GVariantType *)"ay",
+ metadata->album_info, MEDIA_ATTIRBUTE_STRING_LENGTH,
+ TRUE, NULL, NULL);
+ genre = g_variant_new_from_data((const GVariantType *)"ay",
+ metadata->genre_info, MEDIA_ATTIRBUTE_STRING_LENGTH,
+ TRUE, NULL, NULL);
+
/* Send AVRCP Target player track info changed event to application*/
- param = g_variant_new("(ssssuuu)",
- metadata->title_info,
- metadata->artist_info,
- metadata->album_info,
- metadata->genre_info,
- total_track,
- track_number,
- playing_time);
+ param = g_variant_new("(@ay@ay@ay@ayuuu)",
+ title, artist, album, genre,
+ total_track, track_number, playing_time);
BT_INFO("Total_track: %u, track_number: %u, playing_time: %u",
total_track, track_number, playing_time);