BT_DBG("+");
- retv_if(avrcp_control_path != NULL, avrcp_control_path);
+ if (avrcp_control_path != NULL)
+ return avrcp_control_path;
retv_if(!_bt_is_headset_type_connected(BT_AVRCP,
connected_address), NULL);
retv_if(name == NULL, BLUETOOTH_ERROR_INTERNAL);
- conn = _bt_get_system_conn();
+ BT_INFO("Command [%s]", name);
+
+ conn = _bt_gdbus_get_system_gconn();
retv_if(conn == NULL, BLUETOOTH_ERROR_INTERNAL);
control_path = __bt_get_control_device_path();
case PREVIOUS:
ret = __bt_media_send_control_msg("Previous");
break;
- case FAST_FORWARD:
- ret = __bt_media_send_control_msg("FastForward");
+ case PRESS_FAST_FORWARD:
+ ret = __bt_media_send_control_msg("PressFastForward");
+ break;
+ case RELEASE_FAST_FORWARD:
+ ret = __bt_media_send_control_msg("ReleaseFastForward");
+ break;
+ case PRESS_REWIND:
+ ret = __bt_media_send_control_msg("PressRewind");
+ break;
+ case RELEASE_REWIND:
+ ret = __bt_media_send_control_msg("ReleaseRewind");
break;
- case REWIND:
- ret = __bt_media_send_control_msg("Rewind");
+ case VOLUME_UP:
+ ret = __bt_media_send_control_msg("VolumeUp");
+ break;
+ case VOLUME_DOWN:
+ ret = __bt_media_send_control_msg("VolumeDown");
break;
default:
BT_DBG("Invalid Type\n");
retv_if(control_path == NULL, NULL);
BT_DBG("control_path = %s", control_path);
- conn = _bt_get_system_conn();
+ conn = _bt_gdbus_get_system_gconn();
retv_if(conn == NULL, NULL);
proxy = g_dbus_proxy_new_sync(conn,
int ret = BLUETOOTH_ERROR_NONE;
GError *err = NULL;
GVariant *reply = NULL;
+ GVariant *temp = NULL;
BT_CHECK_PARAMETER(value, return);
retv_if(proxy == NULL, BLUETOOTH_ERROR_NOT_CONNECTED);
reply = g_dbus_proxy_call_sync(proxy,
- "Get", g_variant_new("ss", BT_PLAYER_CONTROL_INTERFACE, __bt_media_type_to_str(type)),
+ "Get", g_variant_new("(ss)", BT_PLAYER_CONTROL_INTERFACE, __bt_media_type_to_str(type)),
G_DBUS_CALL_FLAGS_NONE, -1, NULL, &err);
g_object_unref(proxy);
case SHUFFLE:
case SCAN:
case STATUS:
- name =(char *)g_variant_get_string(reply, NULL);
- *value = __bt_media_attrval_to_val(type, name);
- BT_DBG("Type[%s] and Value[%s]", __bt_media_type_to_str(type), name);
+ name = (char *)g_variant_get_data(reply);
+ if (name)
+ *value = __bt_media_attrval_to_val(type, name);
+ BT_INFO("Type[%s] and Value[%s]", __bt_media_type_to_str(type), name);
break;
case POSITION:
- *value = g_variant_get_uint32(reply);
+ g_variant_get(reply, "(v)", &temp);
+ *value = g_variant_get_uint32(temp);
+ g_variant_unref(temp);
+ BT_INFO("Type[%s] and Value[%d]", __bt_media_type_to_str(type), *value);
break;
default:
- BT_DBG("Invalid Type\n");
+ BT_ERR("Invalid Type [%d]", type);
ret = BLUETOOTH_ERROR_INTERNAL;
}
}
switch (type) {
case EQUALIZER:
param = g_variant_new("s", equalizer_status[value].property);
- BT_DBG("equalizer_status %s", equalizer_status[value].property);
+ BT_INFO("equalizer_status %s", equalizer_status[value].property);
break;
case REPEAT:
param = g_variant_new("s", repeat_status[value].property);
- BT_DBG("repeat_status %s", repeat_status[value].property);
+ BT_INFO("repeat_status %s", repeat_status[value].property);
break;
case SHUFFLE:
param = g_variant_new("s", shuffle_settings[value].property);
- BT_DBG("shuffle_settings %s", shuffle_settings[value].property);
+ BT_INFO("shuffle_settings %s", shuffle_settings[value].property);
break;
case SCAN:
param = g_variant_new("s", scan_status[value].property);
- BT_DBG("scan_status %s", scan_status[value].property);
+ BT_INFO("scan_status %s", scan_status[value].property);
break;
default:
BT_ERR("Invalid property type: %d", type);
retv_if(proxy == NULL, BLUETOOTH_ERROR_NOT_CONNECTED);
reply = g_dbus_proxy_call_sync(proxy,
- "Set", g_variant_new("ssv", BT_PLAYER_CONTROL_INTERFACE, __bt_media_type_to_str(type), param),
+ "Set", g_variant_new("(ssv)", BT_PLAYER_CONTROL_INTERFACE, __bt_media_type_to_str(type), param),
G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
g_object_unref(proxy);
const char *key = NULL;
g_variant_iter_init(&iter, item);
- while (g_variant_iter_loop(&iter, "{sv}", &key, &value)){
- if (strcasecmp(key, "Title") == 0){
+ while (g_variant_iter_loop(&iter, "{sv}", &key, &value)) {
+ if (strcasecmp(key, "Title") == 0) {
value_string = (char *)g_variant_get_string(value, NULL);
BT_DBG("Value : %s ", value_string);
- metadata->title = value_string;
+ metadata->title = g_strdup(value_string);
} else if (strcasecmp(key, "Artist") == 0) {
- value_string =(char *)g_variant_get_string(value, NULL);
+ value_string = (char *)g_variant_get_string(value, NULL);
BT_DBG("Value : %s ", value_string);
- metadata->artist = value_string;
+ metadata->artist = g_strdup(value_string);
} else if (strcasecmp(key, "Album") == 0) {
- value_string =(char *)g_variant_get_string(value, NULL);
+ value_string = (char *)g_variant_get_string(value, NULL);
BT_DBG("Value : %s ", value_string);
- metadata->album = value_string;
+ metadata->album = g_strdup(value_string);
} else if (strcasecmp(key, "Genre") == 0) {
- value_string =(char *)g_variant_get_string(value, NULL);
+ value_string = (char *)g_variant_get_string(value, NULL);
BT_DBG("Value : %s ", value_string);
- metadata->genre = value_string;
+ metadata->genre = g_strdup(value_string);
} else if (strcasecmp(key, "Duration") == 0) {
value_uint = g_variant_get_uint32(value);
+ BT_DBG("Duration : %d", value_uint);
metadata->duration = value_uint;
} else if (strcasecmp(key, "NumberOfTracks") == 0) {
value_uint = g_variant_get_uint32(value);
retv_if(metadata == NULL, BLUETOOTH_ERROR_INTERNAL);
- conn = _bt_get_system_conn();
+ conn = _bt_gdbus_get_system_gconn();
retv_if(conn == NULL, BLUETOOTH_ERROR_INTERNAL);
control_path = __bt_get_control_device_path();
(strcasecmp(property, "Repeat") == 0) ||
(strcasecmp(property, "Shuffle") == 0) ||
(strcasecmp(property, "Scan") == 0) ||
- (strcasecmp(property, "Status") == 0)){
+ (strcasecmp(property, "Status") == 0)) {
const char *valstr;
- unsigned int type, val;
+ unsigned int type, val = 0;
valstr = g_variant_get_string(value, NULL);
BT_DBG("Value : %s ", valstr);
type = __bt_media_attr_to_type(property);
- val = __bt_media_attrval_to_val(type, valstr);
+ if (valstr)
+ val = __bt_media_attrval_to_val(type, valstr);
/* Send event to application */
param = g_variant_new("(u)", val);
memset(&metadata, 0x00, sizeof(media_metadata_attributes_t));
ret = __bt_avrcp_control_parse_properties(
- &metadata, reply);
- if (BLUETOOTH_ERROR_NONE != ret){
+ &metadata, value);
+ if (BLUETOOTH_ERROR_NONE != ret) {
/* Free key and value because of break unless free not required */
free((char *)property);
g_variant_unref(value);
+ g_free((char *)metadata.title);
+ g_free((char *)metadata.artist);
+ g_free((char *)metadata.album);
+ g_free((char *)metadata.genre);
break;
}