Add internal API for dotnet framework 34/195134/2 accepted/tizen/unified/20181211.141133 submit/tizen/20181211.053401
authorjiyong.min <jiyong.min@samsung.com>
Tue, 11 Dec 2018 05:10:33 +0000 (14:10 +0900)
committerjiyong.min <jiyong.min@samsung.com>
Tue, 11 Dec 2018 05:15:42 +0000 (14:15 +0900)
 - mc_client_send_playback_state_command
 - mc_server_set_playback_state_command_received_cb
 - mc_server_unset_playback_state_command_received_cb

Change-Id: I508f72027c0a754980af29e33c19afb833cb159b

include/media_controller_internal.h [changed mode: 0755->0644]
include/media_controller_private.h [changed mode: 0755->0644]
packaging/capi-media-controller.spec
src/media_controller_client.c [changed mode: 0755->0644]
src/media_controller_server.c [changed mode: 0755->0644]

old mode 100755 (executable)
new mode 100644 (file)
index 70d001e..b4d09b4
@@ -26,13 +26,20 @@ extern "C" {
 /**
  * @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 */
old mode 100755 (executable)
new mode 100644 (file)
index 354d876..e4d2e94
@@ -161,6 +161,7 @@ extern "C" {
 #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"
@@ -304,6 +305,7 @@ typedef enum {
        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;
 
index eee3471..738e0a8 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-media-controller
 Summary:    A media controller library in Tizen Native API
-Version:    0.1.78
+Version:    0.1.79
 Release:    1
 Group:      Multimedia/API
 License:    Apache-2.0
old mode 100755 (executable)
new mode 100644 (file)
index a26a371..85cce27
@@ -1061,6 +1061,26 @@ int mc_client_foreach_server(mc_client_h client, mc_activated_server_cb callback
        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;
old mode 100755 (executable)
new mode 100644 (file)
index 0c7124a..412788e
@@ -21,6 +21,7 @@
 #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);
@@ -40,6 +41,7 @@ static mc_cb_event_s cb_event[MC_SERVER_EVENT_MAX] = {
        {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)
@@ -140,6 +142,40 @@ static int __mc_server_destoy(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;
@@ -988,6 +1024,16 @@ static int __mc_server_unset_updated_cb(mc_server_h server, mc_server_receive_ev
        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);