Code refactoring. Unify server callback register/unregister APIs 25/188225/2 accepted/tizen/unified/20180904.062843 submit/tizen/20180903.072508 submit/tizen/20180903.083016
authorhj kim <backto.kim@samsung.com>
Mon, 3 Sep 2018 07:00:31 +0000 (16:00 +0900)
committerhj kim <backto.kim@samsung.com>
Mon, 3 Sep 2018 07:09:45 +0000 (16:09 +0900)
Change-Id: Id3e11bdf1faf7bc4ef636cce0111f8efe72b4e15

include/media_controller_private.h
packaging/capi-media-controller.spec
src/media_controller_client.c
src/media_controller_server.c
test/client_test/media_controller_client_test.c
test/server_test/media_controller_server_test.c

index 8656e12..c47ab63 100755 (executable)
@@ -285,11 +285,24 @@ typedef enum {
        MC_CLIENT_EVENT_SHUFFLE_ABILITY = MC_SUBSCRIPTION_TYPE_SHUFFLE_ABILITY,
        MC_CLIENT_EVENT_REPEAT_ABILITY  = MC_SUBSCRIPTION_TYPE_REPEAT_ABILITY,
        MC_CLIENT_EVENT_CMD_REPLY,
-       MC_CLIENT_EVENT_CLIENT_CUSTOM,  //from client to server
-       MC_CLIENT_EVENT_SERVER_CUSTOM,  //from server to client
+       MC_CLIENT_EVENT_CLIENT_CUSTOM,  //from client to server. deprecated
+       MC_CLIENT_EVENT_SERVER_CUSTOM,  //receive event from server to client
        MC_CLIENT_EVENT_MAX,
 } mc_client_receive_event_e;
 
+typedef enum {
+       MC_SERVER_EVENT_PLAYBACK_STATE,         //deprecated. use action instead of it.
+       MC_SERVER_EVENT_PLAYBACK_ACTION,
+       MC_SERVER_EVENT_PLAYBACK_POSITION,
+       MC_SERVER_EVENT_SHUFFLE,
+       MC_SERVER_EVENT_REPEAT,
+       MC_SERVER_EVENT_PLAYLIST,
+       MC_SERVER_EVENT_CLIENT_CUSTOM,          //received event from client
+       MC_SERVER_EVENT_CLIENT_CUSTOM_OLD,      //received event from client, deprecated
+       MC_SERVER_EVENT_REPLY_CUSTOM,           //received event reply from client
+       MC_SERVER_EVENT_MAX,
+} mc_server_receive_event_e;
+
 typedef struct {
        char *server_name;
        void* db_handle;
@@ -307,15 +320,7 @@ typedef struct {
        media_controller_ability_s basic_ability;
 
        /* receiver */
-       media_controller_receiver_s playback_state_reciever;
-       media_controller_receiver_s playback_action_reciever;
-       media_controller_receiver_s playback_position_reciever;
-       media_controller_receiver_s shuffle_mode_reciever;
-       media_controller_receiver_s repeat_mode_reciever;
-       media_controller_receiver_s custom_cmd_reciever;
-       media_controller_receiver_s play_playlist_reciever;
-       media_controller_receiver_s custom_command_reciever;
-       media_controller_receiver_s event_reply_receiver;
+       media_controller_receiver_s updated_cb[MC_SERVER_EVENT_MAX];
 } media_controller_server_s;
 
 typedef struct {
@@ -359,6 +364,7 @@ typedef enum {
 
 /* formal callback to receive signal */
 typedef void(*mc_signal_received_cb)(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data);
+
 typedef struct {
        GDBusConnection                 *dbus_conn;
        char                                    *interface_name;
@@ -369,6 +375,11 @@ typedef struct {
        char                                    *key;
 } mc_ipc_listener_s;
 
+typedef struct {
+       const char *signal_name;
+       mc_signal_received_cb cb_func;
+} mc_cb_event_s;
+
 
 /* util */
 int mc_util_get_own_name(char **name);
index c14d71c..89d5e7a 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-media-controller
 Summary:    A media controller library in Tizen Native API
-Version:    0.1.67
+Version:    0.1.68
 Release:    1
 Group:      Multimedia/API
 License:    Apache-2.0
index dafbe57..04a4f1d 100755 (executable)
@@ -33,12 +33,7 @@ static void __client_repeat_ability_cb(const char *interface_name, const char *s
 static void __client_shuffle_ability_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data);
 
 
-typedef struct {
-       const char *signal_name;
-       mc_signal_received_cb cb_func;
-} mc_cb_event_s;
-
-mc_cb_event_s cb_event[MC_CLIENT_EVENT_MAX] = {
+static mc_cb_event_s cb_event[MC_CLIENT_EVENT_MAX] = {
        {MC_DBUS_SIGNAL_NAME_SERVER_STATE,              __client_server_cb},
        {MC_DBUS_SIGNAL_NAME_PLAY_BACK,                 __client_playback_cb},
        {MC_DBUS_SIGNAL_NAME_METADATA,                  __client_metadata_cb},
@@ -645,12 +640,20 @@ static int __mc_client_set_updated_cb(mc_client_h client, mc_client_receive_even
        mc_retvm_if(mc_client == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
        mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL");
        mc_retvm_if(((event < MC_CLIENT_EVENT_SERVER_STATE) || (event >= MC_CLIENT_EVENT_MAX)) , MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid event [%d]", event);
+
+       if ((event == MC_CLIENT_EVENT_CLIENT_CUSTOM) && (mc_client->updated_cb[event].callback != NULL)) {      //deprecated
+               mc_client->updated_cb[event].callback = callback;
+               mc_client->updated_cb[event].user_data = user_data;
+
+               return ret;
+       }
+
        mc_retvm_if(mc_client->updated_cb[event].callback != NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is already set [%d]", event);
 
        mc_client->updated_cb[event].callback = callback;
        mc_client->updated_cb[event].user_data = user_data;
 
-       if ((event == MC_CLIENT_EVENT_CMD_REPLY) || (event == MC_CLIENT_EVENT_SERVER_CUSTOM)) {
+       if ((event == MC_CLIENT_EVENT_CMD_REPLY) || (event == MC_CLIENT_EVENT_SERVER_CUSTOM) || (event == MC_CLIENT_EVENT_CLIENT_CUSTOM)) {
                interface_name = mc_util_get_interface_name(MC_CLIENT, mc_client->client_name);
                ret = mc_ipc_register_listener(&mc_client->listeners, mc_client->dconn, interface_name, cb_event[event].signal_name,
                                                cb_event[event].cb_func, (void *)&(mc_client->updated_cb[event]));
index 4b6b571..4f01d85 100755 (executable)
 
 #define MAX_PLAYLIST_LEN 100
 
+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);
+static void __server_repeat_mode_cmd_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data);
+static void __server_custom_command_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data);
+static void __server_play_playlist_cmd_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data);
+static void __server_custom_cmd_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data);
+static void __server_event_reply_received_cb(const char *interface_name, const char *signal_name, const char *message, const char *request_id, void *user_data);
+
+static mc_cb_event_s cb_event[MC_SERVER_EVENT_MAX] = {
+       {MC_DBUS_SIGNAL_NAME_PLAYBACK_STATE_CMD, __server_playback_state_command_cb},
+       {MC_DBUS_SIGNAL_NAME_PLAYBACK_ACTION, __server_playback_action_cb},
+       {MC_DBUS_SIGNAL_NAME_PLAYBACK_POS_CMD, __server_playback_position_cmd_cb},
+       {MC_DBUS_SIGNAL_NAME_SHUFFLE_CMD, __server_shuffle_mode_cmd_cb},
+       {MC_DBUS_SIGNAL_NAME_REPEAT_CMD, __server_repeat_mode_cmd_cb},
+       {MC_DBUS_SIGNAL_NAME_PLAYBACK_PLAYLIST, __server_play_playlist_cmd_cb},
+       {MC_DBUS_SIGNAL_NAME_CUSTOM_CMD, __server_custom_cmd_cb},
+       {MC_DBUS_SIGNAL_NAME_CUSTOM_COMMAND, __server_custom_command_cb},       //deprecated one
+       {MC_DBUS_SIGNAL_NAME_EVENT_REPLY, __server_event_reply_received_cb},
+};
+
 static int __mc_server_create(media_controller_server_s **mc_server)
 {
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
@@ -1048,230 +1070,145 @@ int mc_server_foreach_playlist(mc_server_h server, mc_playlist_cb callback, void
        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)
+static int __mc_server_set_updated_cb(mc_server_h server, mc_server_receive_event_e event, void *callback, void *user_data)
 {
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
        media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_warning("DEPRECATION WARNING: mc_server_set_playback_state_command_received_cb() is deprecated and will be removed from next release. Use mc_server_set_playback_action_cmd_received_cb() instead.");
+       char *interface_name = NULL;
 
        mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
        mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL");
+       mc_retvm_if(((event < MC_SERVER_EVENT_PLAYBACK_STATE) || (event >= MC_SERVER_EVENT_MAX)) , MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid event [%d]", event);
+
+       mc_server->updated_cb[event].callback = callback;
+       mc_server->updated_cb[event].user_data = user_data;
 
-       mc_server->playback_state_reciever.callback = callback;
-       mc_server->playback_state_reciever.user_data = user_data;
+       interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
 
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_register_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_PLAYBACK_STATE_CMD, __server_playback_state_command_cb, (void *)&(mc_server->playback_state_reciever));
+       ret = mc_ipc_register_listener(&mc_server->listeners, mc_server->dconn, interface_name,  cb_event[event].signal_name, cb_event[event].cb_func, (void *)&(mc_server->updated_cb[event]));
 
        MC_SAFE_FREE(interface_name);
 
        return ret;
 }
 
-int mc_server_unset_playback_state_command_received_cb(mc_server_h server)
+static int __mc_server_unset_updated_cb(mc_server_h server, mc_server_receive_event_e event)
 {
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
        media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_warning("DEPRECATION WARNING: mc_server_set_playback_state_command_received_cb() is deprecated and will be removed from next release. Use mc_server_unset_playback_action_cmd_received_cb() instead.");
+       char *interface_name = NULL;
 
        mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
+       mc_retvm_if(((event < MC_SERVER_EVENT_PLAYBACK_STATE) || (event >= MC_SERVER_EVENT_MAX)) , MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid event [%d]", event);
+
+       interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
 
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_unregister_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_PLAYBACK_STATE_CMD);
+       ret = mc_ipc_unregister_listener(&mc_server->listeners, mc_server->dconn, interface_name, cb_event[event].signal_name);
 
-       mc_server->playback_state_reciever.callback = NULL;
-       mc_server->playback_state_reciever.user_data = NULL;
+       mc_server->updated_cb[event].callback = NULL;
+       mc_server->updated_cb[event].user_data = NULL;
 
        MC_SAFE_FREE(interface_name);
 
        return ret;
 }
 
-int mc_server_set_playback_action_cmd_received_cb(mc_server_h server, mc_server_playback_action_cmd_received_cb callback, void *user_data)
+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 ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-       mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL");
+       mc_warning("DEPRECATION WARNING: mc_server_set_playback_state_command_received_cb() is deprecated and will be removed from next release. Use mc_server_set_playback_action_cmd_received_cb() instead.");
 
-       mc_server->playback_action_reciever.callback = callback;
-       mc_server->playback_action_reciever.user_data = user_data;
+       return __mc_server_set_updated_cb(server, MC_SERVER_EVENT_PLAYBACK_STATE, callback, user_data);
+}
 
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_register_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_PLAYBACK_ACTION, __server_playback_action_cb, (void *)&(mc_server->playback_action_reciever));
+int mc_server_unset_playback_state_command_received_cb(mc_server_h server)
+{
+       mc_warning("DEPRECATION WARNING: mc_server_set_playback_state_command_received_cb() is deprecated and will be removed from next release. Use mc_server_unset_playback_action_cmd_received_cb() instead.");
 
-       MC_SAFE_FREE(interface_name);
+       return __mc_server_unset_updated_cb(server, MC_SERVER_EVENT_PLAYBACK_STATE);
+}
 
-       return ret;
+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);
 }
 
 int mc_server_unset_playback_action_cmd_received_cb(mc_server_h server)
 {
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_unregister_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_PLAYBACK_ACTION);
-
-       mc_server->playback_action_reciever.callback = NULL;
-       mc_server->playback_action_reciever.user_data = NULL;
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
+       return __mc_server_unset_updated_cb(server, MC_SERVER_EVENT_PLAYBACK_ACTION);
 }
 
 int mc_server_set_playback_position_cmd_received_cb(mc_server_h server, mc_server_playback_position_cmd_received_cb callback, void *user_data)
 {
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-       mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL");
-
-       mc_server->playback_position_reciever.callback = callback;
-       mc_server->playback_position_reciever.user_data = user_data;
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_register_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_PLAYBACK_POS_CMD, __server_playback_position_cmd_cb, (void *)&(mc_server->playback_position_reciever));
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
+       return __mc_server_set_updated_cb(server, MC_SERVER_EVENT_PLAYBACK_POSITION, callback, user_data);
 }
 
 int mc_server_unset_playback_position_cmd_received_cb(mc_server_h server)
 {
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_unregister_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_PLAYBACK_POS_CMD);
-
-       mc_server->playback_position_reciever.callback = NULL;
-       mc_server->playback_position_reciever.user_data = NULL;
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
+       return __mc_server_unset_updated_cb(server, MC_SERVER_EVENT_PLAYBACK_POSITION);
 }
 
 int mc_server_set_shuffle_mode_cmd_received_cb(mc_server_h server, mc_server_shuffle_mode_cmd_received_cb callback, void *user_data)
 {
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-       mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL");
-
-       mc_server->shuffle_mode_reciever.callback = callback;
-       mc_server->shuffle_mode_reciever.user_data = user_data;
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_register_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_SHUFFLE_CMD, __server_shuffle_mode_cmd_cb, (void *)&(mc_server->shuffle_mode_reciever));
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
+       return __mc_server_set_updated_cb(server, MC_SERVER_EVENT_SHUFFLE, callback, user_data);
 }
 
 int mc_server_unset_shuffle_mode_cmd_received_cb(mc_server_h server)
 {
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_unregister_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_SHUFFLE_CMD);
-
-       mc_server->shuffle_mode_reciever.callback = NULL;
-       mc_server->shuffle_mode_reciever.user_data = NULL;
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
+       return __mc_server_unset_updated_cb(server, MC_SERVER_EVENT_SHUFFLE);
 }
 
 int mc_server_set_repeat_mode_cmd_received_cb(mc_server_h server, mc_server_repeat_mode_cmd_received_cb callback, void *user_data)
 {
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-       mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL");
-
-       mc_server->repeat_mode_reciever.callback = callback;
-       mc_server->repeat_mode_reciever.user_data = user_data;
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_register_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_REPEAT_CMD, __server_repeat_mode_cmd_cb, (void *)&(mc_server->repeat_mode_reciever));
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
+       return __mc_server_set_updated_cb(server, MC_SERVER_EVENT_REPEAT, callback, user_data);
 }
 
 int mc_server_unset_repeat_mode_cmd_received_cb(mc_server_h server)
 {
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_unregister_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_REPEAT_CMD);
-
-       mc_server->repeat_mode_reciever.callback = NULL;
-       mc_server->repeat_mode_reciever.user_data = NULL;
+       return __mc_server_unset_updated_cb(server, MC_SERVER_EVENT_REPEAT);
+}
 
-       MC_SAFE_FREE(interface_name);
+int mc_server_set_playlist_cmd_received_cb(mc_server_h server, mc_server_playlist_cmd_received_cb callback, void *user_data)
+{
+       return __mc_server_set_updated_cb(server, MC_SERVER_EVENT_PLAYLIST, callback, user_data);
+}
 
-       return ret;
+int mc_server_unset_playlist_cmd_received_cb(mc_server_h server)
+{
+       return __mc_server_unset_updated_cb(server, MC_SERVER_EVENT_PLAYLIST);
 }
 
 int mc_server_set_custom_command_received_cb(mc_server_h server, mc_server_custom_command_received_cb callback, void *user_data)
 {
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-       mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL");
+       mc_warning("DEPRECATION WARNING: mc_server_set_custom_command_received_cb() is deprecated and will be removed from next release. Use mc_server_set_custom_cmd_received_cb() instead.");
 
-       mc_server->custom_command_reciever.callback = callback;
-       mc_server->custom_command_reciever.user_data = user_data;
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_register_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_CUSTOM_COMMAND, __server_custom_command_cb, (void *)&(mc_server->custom_command_reciever));
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
+       return __mc_server_set_updated_cb(server, MC_SERVER_EVENT_CLIENT_CUSTOM_OLD, callback, user_data);
 }
 
 int mc_server_unset_custom_command_received_cb(mc_server_h server)
 {
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
+       mc_warning("DEPRECATION WARNING: mc_server_unset_custom_command_received_cb() is deprecated and will be removed from next release. Use mc_server_unset_custom_cmd_received_cb() instead.");
 
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
+       return __mc_server_unset_updated_cb(server, MC_SERVER_EVENT_CLIENT_CUSTOM_OLD);
+}
 
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_unregister_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_CUSTOM_COMMAND);
+int mc_server_set_custom_cmd_received_cb(mc_server_h server, mc_server_custom_cmd_received_cb callback, void *user_data)
+{
+       return __mc_server_set_updated_cb(server, MC_SERVER_EVENT_CLIENT_CUSTOM, callback, user_data);
+}
 
-       mc_server->custom_command_reciever.callback = NULL;
-       mc_server->custom_command_reciever.user_data = NULL;
+int mc_server_unset_custom_cmd_received_cb(mc_server_h server)
+{
+       return __mc_server_unset_updated_cb(server, MC_SERVER_EVENT_CLIENT_CUSTOM);
+}
 
-       MC_SAFE_FREE(interface_name);
+int mc_server_set_event_reply_received_cb(mc_server_h server, mc_server_event_reply_received_cb callback, void *user_data)
+{
+       return __mc_server_set_updated_cb(server, MC_SERVER_EVENT_REPLY_CUSTOM, callback, user_data);
+}
 
-       return ret;
+int mc_server_unset_event_reply_received_cb(mc_server_h server)
+{
+       return __mc_server_unset_updated_cb(server, MC_SERVER_EVENT_REPLY_CUSTOM);
 }
 
 int mc_server_send_command_reply(mc_server_h server, const char *client_name, int result_code, bundle *data)
@@ -1302,80 +1239,6 @@ int mc_server_send_command_reply(mc_server_h server, const char *client_name, in
        return ret;
 }
 
-int mc_server_set_playlist_cmd_received_cb(mc_server_h server, mc_server_playlist_cmd_received_cb callback, void *user_data)
-{
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-       mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL");
-
-       mc_server->play_playlist_reciever.callback = callback;
-       mc_server->play_playlist_reciever.user_data = user_data;
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_register_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_PLAYBACK_PLAYLIST, __server_play_playlist_cmd_cb, (void *)&(mc_server->play_playlist_reciever));
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
-}
-
-int mc_server_unset_playlist_cmd_received_cb(mc_server_h server)
-{
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_unregister_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_PLAYBACK_PLAYLIST);
-
-       mc_server->play_playlist_reciever.callback = NULL;
-       mc_server->play_playlist_reciever.user_data = NULL;
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
-}
-
-int mc_server_set_custom_cmd_received_cb(mc_server_h server, mc_server_custom_cmd_received_cb callback, void *user_data)
-{
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-       mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL");
-
-       mc_server->custom_cmd_reciever.callback = callback;
-       mc_server->custom_cmd_reciever.user_data = user_data;
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_register_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_CUSTOM_CMD, __server_custom_cmd_cb, (void *)&(mc_server->custom_cmd_reciever));
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
-}
-
-int mc_server_unset_custom_cmd_received_cb(mc_server_h server)
-{
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_unregister_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_CUSTOM_CMD);
-
-       mc_server->custom_cmd_reciever.callback = NULL;
-       mc_server->custom_cmd_reciever.user_data = NULL;
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
-}
-
 int mc_server_send_cmd_reply(mc_server_h server, const char *client_name, const char *request_id, int result_code, bundle *data)
 {
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
@@ -1443,45 +1306,6 @@ int mc_server_send_custom_event(mc_server_h server, const char *client_name, con
        return ret;
 }
 
-int mc_server_set_event_reply_received_cb(mc_server_h server, mc_server_event_reply_received_cb callback, void *user_data)
-{
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-       mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is NULL");
-       mc_retvm_if(mc_server->event_reply_receiver.callback != NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "callback is already set");
-
-       mc_server->event_reply_receiver.callback = callback;
-       mc_server->event_reply_receiver.user_data = user_data;
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_register_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_EVENT_REPLY,
-                                               __server_event_reply_received_cb, (void *)&(mc_server->event_reply_receiver));
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
-}
-
-int mc_server_unset_event_reply_received_cb(mc_server_h server)
-{
-       int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       media_controller_server_s *mc_server = (media_controller_server_s *)server;
-
-       mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL");
-
-       char *interface_name = mc_util_get_interface_name(MC_SERVER, mc_server->server_name);
-       ret = mc_ipc_unregister_listener(&mc_server->listeners, mc_server->dconn, interface_name, MC_DBUS_SIGNAL_NAME_EVENT_REPLY);
-
-       mc_server->event_reply_receiver.callback = NULL;
-       mc_server->event_reply_receiver.user_data = NULL;
-
-       MC_SAFE_FREE(interface_name);
-
-       return ret;
-}
-
 int mc_server_set_icon(mc_server_h server, const char *uri)
 {
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
index f886349..8b2768f 100755 (executable)
@@ -42,6 +42,7 @@ static char *g_server_name;
 static char *g_playlist_name;
 
 static mc_playback_states_e g_playback_state;
+static mc_playback_action_e g_playback_action;
 static unsigned long long g_playback_position;
 static mc_shuffle_mode_e g_shuffle_mode;
 static mc_repeat_mode_e g_repeat_mode;
@@ -564,7 +565,6 @@ static gboolean _send()
 {
        g_print("== send command to latest server \n");
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       mc_playback_action_e action = MC_PLAYBACK_ACTION_PLAY;
 
        if (g_playback_state == MC_PLAYBACK_STATE_PLAYING)
                g_playback_state = MC_PLAYBACK_STATE_STOPPED;
@@ -576,7 +576,12 @@ static gboolean _send()
                return FALSE;
        }
 
-       ret = mc_client_send_playback_action_cmd(g_mc_client, g_server_name, action, &g_request_id[TEST_REQ_PB_ACT_CMD]);
+       if (g_playback_action == MC_PLAYBACK_ACTION_PLAY)
+               g_playback_action = MC_PLAYBACK_ACTION_STOP;
+       else
+               g_playback_action = MC_PLAYBACK_ACTION_PLAY;
+
+       ret = mc_client_send_playback_action_cmd(g_mc_client, g_server_name, g_playback_action, &g_request_id[TEST_REQ_PB_ACT_CMD]);
        if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
                g_print("Fail to send playback action command [%d]", ret);
                return FALSE;
@@ -1034,6 +1039,7 @@ int main(int argc, char **argv)
        g_io_add_watch(stdin_channel, G_IO_IN, (GIOFunc)input, NULL);
 
        g_playback_state = MC_PLAYBACK_STATE_PLAYING;
+       g_playback_action = MC_PLAYBACK_ACTION_PLAY;
        g_playback_position = 1000;
        g_shuffle_mode = MC_SHUFFLE_MODE_OFF;
        g_repeat_mode = MC_REPEAT_MODE_OFF;
index 49db338..4dd19a4 100755 (executable)
@@ -86,7 +86,7 @@ int g_menu_send_event = 0;
 
 void __playback_state_command_received_cb(const char *client_name, mc_playback_states_e state, void *user_data)
 {
-       mc_debug("[%s] recieved playback state:[%d] from [%s]", client_name, state, client_name);
+       g_print("[Deprecated] srecieved playback state:[%d] from [%s]\n", state, client_name);
 }
 
 void __playback_action_received_cb(const char *client_name, const char *request_id, mc_playback_action_e action, void *user_data)