/**
* @internal
* @file media_controller_internal.h
- * @brief This file contains the media controller internal API and functions related with handling media control. \n
*/
/*To Support C#*/
-typedef void (*mc_server_playback_state_command_received_cb)(const char* client_name, mc_playback_states_e state, void *user_data);
-
int mc_playlist_create(const char *playlist_name, mc_playlist_h *playlist);
int mc_playlist_update_item(mc_playlist_h playlist, const char *index, mc_meta_e attribute, const char *value);
int mc_server_get_playlist(mc_server_h server, const char *playlist_name, mc_playlist_h *playlist);
-int mc_client_send_playback_state_command(mc_client_h client, const char *server_name, mc_playback_states_e state);
-int mc_server_set_playback_state_command_received_cb(mc_server_h server, mc_server_playback_state_command_received_cb callback, void *user_data);
-int mc_server_unset_playback_state_command_received_cb(mc_server_h server);
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
#define MC_DBUS_SIGNAL_NAME_METADATA "metadata"
#define MC_DBUS_SIGNAL_NAME_PLAYBACK_SHUFFLE "shuffle"
#define MC_DBUS_SIGNAL_NAME_PLAYBACK_REPEAT "repeat"
-#define MC_DBUS_SIGNAL_NAME_PLAYBACK_STATE_CMD "pb_state_cmd"
#define MC_DBUS_SIGNAL_NAME_PLAYBACK_ACTION "pb_action_cmd"
#define MC_DBUS_SIGNAL_NAME_PLAYBACK_POS_CMD "pb_position_cmd"
#define MC_DBUS_SIGNAL_NAME_SHUFFLE_CMD "shuffle_cmd"
MC_SERVER_EVENT_CLIENT_CUSTOM, //received event from client
MC_SERVER_EVENT_REPLY_CUSTOM, //received event reply from client
MC_SERVER_EVENT_SEARCH,
- MC_SERVER_EVENT_PLAYBACK_STATE, //deprecated. use action instead of it.
MC_SERVER_EVENT_MAX,
} mc_server_receive_event_e;
return ret;
}
-int mc_client_send_playback_state_command(mc_client_h client, const char *server_name, mc_playback_states_e state)
-{
- int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *message = NULL;
- media_controller_client_s *mc_client = (media_controller_client_s *)client;
-
- mc_retvm_if(mc_client == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
- mc_retvm_if(!MC_STRING_VALID(server_name), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid server_name");
- mc_retvm_if(((state < MC_PLAYBACK_STATE_PLAYING) || (state > MC_PLAYBACK_STATE_REWINDING)), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "state is invalid");
-
- message = g_strdup_printf("%s%s%d", mc_client->client_name, MC_STRING_DELIMITER, state);
- mc_retvm_if(message == NULL, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "fail making message [%d]", ret);
-
- ret = __mc_client_send_command(client, server_name, MC_COMMAND_PLAYBACKSTATE, NULL, MC_DBUS_SIGNAL_NAME_PLAYBACK_STATE_CMD, message, NULL);
-
- MC_SAFE_G_FREE(message);
-
- return ret;
-}
-
int mc_client_send_playback_action_cmd(mc_client_h client, const char *server_name, mc_playback_action_e action, char **request_id)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
#define MAX_PLAYLIST_LEN 100
#define MAX_INPUT_STR_LEN 4096
-static void __server_playback_state_command_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data);
static void __server_playback_action_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data);
static void __server_playback_position_cmd_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data);
static void __server_shuffle_mode_cmd_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data);
{MC_DBUS_SIGNAL_NAME_CUSTOM_CMD, __server_custom_cmd_cb},
{MC_DBUS_SIGNAL_NAME_EVENT_REPLY, __server_event_reply_received_cb},
{MC_DBUS_SIGNAL_NAME_SEARCH_CMD, __server_search_cmd_cb},
- {MC_DBUS_SIGNAL_NAME_PLAYBACK_STATE_CMD, __server_playback_state_command_cb},
};
static int __mc_server_create(media_controller_server_s **mc_server)
return ret;
}
-static void __server_playback_state_command_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data)
-{
- gchar **params = NULL;
- media_controller_receiver_s *receiver = (media_controller_receiver_s *)user_data;
- int value = 0;
-
- mc_retm_if(receiver == NULL, "reciever is NULL");
- mc_retm_if(message == NULL, "message is NULL");
-
- mc_server_playback_state_command_received_cb callback = receiver->callback;
- mc_retm_if(receiver->callback == NULL, "playback_state_command_received_cb is NULL");
-
- mc_debug("__server_playback_state_command_cb(%s, %s, %s, %s, %p)", interface_name, signal_name, message, request_id, user_data);
-
- params = g_strsplit(message, MC_STRING_DELIMITER, 0);
- mc_retm_if(params == NULL, "invalid playback state command");
-
- if (mc_util_get_command_available(MC_PRIV_TYPE_SERVER, params[0], MC_COMMAND_PLAYBACKSTATE, NULL) != MEDIA_CONTROLLER_ERROR_NONE) {
- mc_error("Error permission denied");
- g_strfreev(params);
- return;
- }
-
- if (mc_safe_strtoi(params[1], &value) != MEDIA_CONTROLLER_ERROR_NONE) {
- mc_error("Error get recieved value");
- g_strfreev(params);
- return;
- }
-
- callback(params[0], (mc_playback_states_e)value, receiver->user_data);
-
- g_strfreev(params);
-}
-
static void __server_playback_action_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data)
{
gchar **params = NULL;
return ret;
}
-int mc_server_set_playback_state_command_received_cb(mc_server_h server, mc_server_playback_state_command_received_cb callback, void *user_data)
-{
- return __mc_server_set_updated_cb(server, MC_SERVER_EVENT_PLAYBACK_STATE, callback, user_data);
-}
-
-int mc_server_unset_playback_state_command_received_cb(mc_server_h server)
-{
- return __mc_server_unset_updated_cb(server, MC_SERVER_EVENT_PLAYBACK_STATE);
-}
-
int mc_server_set_playback_action_cmd_received_cb(mc_server_h server, mc_server_playback_action_cmd_received_cb callback, void *user_data)
{
return __mc_server_set_updated_cb(server, MC_SERVER_EVENT_PLAYBACK_ACTION, callback, user_data);