};
static void avrcp_register_notification(struct avrcp *session, uint8_t event);
+static GList *player_list_settings(struct avrcp_player *player);
#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
-static GList *player_list_settings(struct avrcp_player *player);
void avrcp_stop_position_timer(void);
unsigned int pos_timer_id = 0;
#endif
return -EINVAL;
}
+static uint16_t player_settings_changed(struct avrcp_player *player,
+ struct avrcp_header *pdu)
+{
+ GList *settings = player_list_settings(player);
+ int size = 2;
+
+ for (; settings; settings = settings->next) {
+ const char *key = settings->data;
+ int attr;
+ int val;
+
+ attr = attr_to_val(key);
+ if (attr < 0)
+ continue;
+
+ val = player_get_setting(player, attr);
+ if (val < 0)
+ continue;
+
+ pdu->params[size++] = attr;
+ pdu->params[size++] = val;
+ }
+
+ g_list_free(settings);
+
+ pdu->params[1] = (size - 2) >> 1;
+ return size;
+}
+
void avrcp_player_event(struct avrcp_player *player, uint8_t id,
const void *data)
{
uint8_t code;
uint16_t size;
GSList *l;
- int attr;
- int val;
#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
uint32_t *position_val = NULL;
- GList *settings;
#endif
if (player->sessions == NULL)
size = 1;
break;
case AVRCP_EVENT_SETTINGS_CHANGED:
- size = 2;
#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
- settings = player_list_settings(player);
- pdu->params[1] = g_list_length(settings);
- for (; settings; settings = settings->next) {
- const char *key = settings->data;
-
- attr = attr_to_val(key);
- if (attr < 0)
- continue;
-
- val = player_get_setting(player, attr);
- if (val < 0)
- continue;
-
- pdu->params[size++] = attr;
- pdu->params[size++] = val;
- }
+ size = player_settings_changed(player, pdu);
#else
- pdu->params[1] = 1;
-
- attr = attr_to_val(data);
- if (attr < 0)
- return;
-
- val = player_get_setting(player, attr);
- if (val < 0)
- return;
-
- pdu->params[size++] = attr;
- pdu->params[size++] = val;
+ size = player_settings_changed(player, pdu);
#endif /* __TIZEN__PATCH__ */
break;
#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
uint32_t playback_position;
uint8_t play_status;
#endif
- GList *settings;
/*
* 1 byte for EventID, 4 bytes for Playback interval but the latest
len = 1;
break;
case AVRCP_EVENT_SETTINGS_CHANGED:
- len = 1;
- settings = player_list_settings(player);
-
- pdu->params[len++] = g_list_length(settings);
- for (; settings; settings = settings->next) {
- const char *key = settings->data;
- int attr;
- int val;
-
- attr = attr_to_val(key);
- if (attr < 0)
- continue;
-
- val = player_get_setting(player, attr);
- if (val < 0)
- continue;
-
- pdu->params[len++] = attr;
- pdu->params[len++] = val;
- }
-
- g_list_free(settings);
-
+ len = player_settings_changed(player, pdu);
break;
case AVRCP_EVENT_ADDRESSED_PLAYER_CHANGED:
len = 5;