[ACR-1235][Add] Add to send custom action and to receive reply 65/180765/13
authorJiyong Min <jiyong.min@samsung.com>
Mon, 4 Jun 2018 05:16:21 +0000 (14:16 +0900)
committerJiyong Min <jiyong.min@samsung.com>
Thu, 7 Jun 2018 08:26:02 +0000 (17:26 +0900)
Change-Id: I8c2fc695ef2e6b76467ac0f6e3266c069f953ffb

include/media_controller_client.h
include/media_controller_server.h
include/media_controller_type.h

index 83be7558e35bf517cf92b22cd90a634f57d3989e..ea61312df5223bba7d209e0e94d0f1a899c271e1 100755 (executable)
@@ -133,10 +133,11 @@ typedef void (*mc_repeat_mode_changed_cb)(const char *server_name, mc_repeat_mod
 typedef bool (*mc_activated_server_cb)(const char *server_name, void *user_data);
 
 /**
+ * @deprecated Deprecated since 4.0. Use mc_cmd_reply_received_cb() instead.
  * @brief Called when receiving the command processing result from the server.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
- * @remarks The callback is called in the dbus event loop. @a data should be released using @c bundle_free().
+ * @remarks The callback is called in the dbus event loop. @a data should be released using bundle_free().
  *
  * @param[in] server_name    The app_id of the media controller server which sent the reply, It can be used only in the callback. To use outside, make a copy.
  * @param[in] result_code    The result code of custom command
@@ -147,7 +148,26 @@ typedef bool (*mc_activated_server_cb)(const char *server_name, void *user_data)
  *
  * @see mc_client_send_custom_command()
  */
-typedef void (*mc_command_reply_received_cb)(const char *server_name, int result_code, bundle *data, void *user_data);
+typedef void (*mc_command_reply_received_cb)(const char *server_name, int result_code, bundle *data, void *user_data) TIZEN_DEPRECATED_API;
+
+/**
+ * @brief Called when the result of the command from the server is received.
+ * @since_tizen 4.0
+ *
+ * @remarks The callback is called in the dbus event loop. @a data should be released using bundle_free().
+ *
+ * @param[in] server_name    The app_id of the media controller server which sent the reply, It can be used only in the callback. To use outside, make a copy.
+ * @param[in] request_id     The id of the command request
+ * @param[in] result_code    The result code of the action
+ * @param[in] data The extra data
+ * @param[in] user_data        The user data passed from the mc_client_send_custom_command() function
+ *
+ * @pre mc_client_send_custom_cmd()
+ * @pre mc_client_set_cmd_reply_cb()
+ *
+ * @see mc_client_send_custom_cmd()
+ */
+typedef void (*mc_cmd_reply_received_cb)(const char *server_name, const char *request_id, int result_code, bundle *data, void *user_data);
 
 /**
  * @brief Called when requesting the list of subscribed servers.
@@ -175,7 +195,7 @@ typedef bool (*mc_subscribed_server_cb)(const char *server_name, void *user_data
  * @privlevel public
  * @privilege %http://tizen.org/privilege/mediacontroller.client
  *
- * @remarks The @a client should be released using @c mc_client_destroy(). And you can create only one client handle for each process.
+ * @remarks The @a client should be released using @c mc_client_destroy(). You can create only one client handle for each process.
  *
  * @param[out] client The handle to the media controller client
  * @return @c 0 on success,
@@ -393,6 +413,49 @@ int mc_client_set_repeat_mode_update_cb(mc_client_h client, mc_repeat_mode_chang
  */
 int mc_client_unset_repeat_mode_update_cb(mc_client_h client);
 
+/**
+ * @brief Sets the callback for receiving the result of the command from the media controller server.
+ * @details The media controller client which calls this function will receives the result of the command from all media controller servers.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.client
+ *
+ * @param[in] client         The handle to the media controller client
+ * @param[in] callback      The callback to be invoked when the reply is received
+ * @param[in] user_data   The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller client handle by calling mc_client_create().
+ * @see mc_client_create()
+ * @see mc_client_unset_cmd_reply_received_cb()
+ * @see mc_client_destroy()
+ */
+int mc_client_set_cmd_reply_received_cb(mc_client_h client, mc_cmd_reply_received_cb callback, void *user_data);
+
+/**
+ * @brief Unsets the callback for receiving common reply of the media controller server.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.client
+ *
+ * @param[in] client         The handle to the media controller client
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller client handle by calling mc_client_create().
+ * @see mc_client_create()
+ * @see mc_client_set_cmd_reply_received_cb()
+ * @see mc_client_destroy()
+ */
+int mc_client_unset_cmd_reply_received_cb(mc_client_h client);
+
 /**
  * @brief Subscribes media controller server for monitoring status.
  * @details If media controller client subscribe media controller server, \n
@@ -688,6 +751,7 @@ int mc_client_get_server_repeat_mode(mc_client_h client, const char *server_name
 int mc_client_foreach_server(mc_client_h client, mc_activated_server_cb callback, void *user_data);
 
 /**
+ * @deprecated Deprecated since 4.0. Use mc_client_send_playback_action_cmd() instead.
  * @brief Sends the playback state command to server.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
@@ -706,7 +770,111 @@ int mc_client_foreach_server(mc_client_h client, mc_activated_server_cb callback
  * @see mc_client_create()
  * @see mc_client_get_server_playback_info()
  */
-int mc_client_send_playback_state_command(mc_client_h client, const char *server_name, mc_playback_states_e state);
+int mc_client_send_playback_state_command(mc_client_h client, const char *server_name, mc_playback_states_e state) TIZEN_DEPRECATED_API;
+
+/**
+ * @brief Sends the playback action command to server.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.client
+ *
+ * @remarks The @a request_id should be released using free().\n
+ *          If the @a request_id is null, the server will not send the reply of the command.
+ *
+ * @param[in] client    The handle to the media controller client
+ * @param[in] server_name    The app_id of the media controller server
+ * @param[in] action   The playback action command to send to the media controller server
+ * @param[out] request_id   The id of the command request, it will be passed to the mc_cmd_reply_received_cb() function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller client handle by calling mc_client_create().
+ * @see mc_client_create()
+ * @see mc_client_get_server_playback_info()
+ * @see mc_client_set_cmd_reply_received_cb()
+ */
+int mc_client_send_playback_action_cmd(mc_client_h client, const char *server_name, mc_playback_action_e action, char **request_id);
+
+/**
+ * @brief Sends the playback position command to server.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.client
+ *
+ * @remarks The @a request_id should be released using free().\n
+ *          If the @a request_id is null, the server will not send the reply of the command.
+ *
+ * @param[in] client    The handle to the media controller client
+ * @param[in] server_name    The app_id of the media controller server
+ * @param[in] position   The position of the playback in milliseconds to send to media controller server.
+ * @param[out] request_id   The id of the command request, it will be passed to the mc_cmd_reply_received_cb() function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller client handle by calling mc_client_create().
+ * @see mc_client_create()
+ * @see mc_client_get_server_playback_info()
+ * @see mc_client_set_cmd_reply_received_cb()
+ */
+int mc_client_send_playback_position_cmd(mc_client_h client, const char *server_name, unsigned long long position, char **request_id);
+
+/**
+ * @brief Sends the shuffle mode command to server.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.client
+ *
+ * @remarks The @a request_id should be released using free().\n
+ *          If the @a request_id is null, the server will not send the reply of the command.
+ *
+ * @param[in] client    The handle to the media controller client
+ * @param[in] server_name    The app_id of the media controller server
+ * @param[in] shuffle_mode   The shuffle mode to send to media controller server
+ * @param[out] request_id   The id of the command request, it will be passed to the mc_cmd_reply_received_cb() function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller client handle by calling mc_client_create().
+ * @see mc_client_create()
+ * @see mc_client_get_server_playback_info()
+ * @see mc_client_set_cmd_reply_received_cb()
+ */
+int mc_client_send_shuffle_mode_cmd(mc_client_h client, const char *server_name, mc_shuffle_mode_e shuffle_mode, char **request_id);
+
+/**
+ * @brief Sends the repeat mode command to server.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.client
+ *
+ * @remarks The @a request_id should be released using free().\n
+ *          If the @a request_id is null, the server will not send the reply of the command.
+ *
+ * @param[in] client    The handle to the media controller client
+ * @param[in] server_name    The app_id of the media controller server
+ * @param[in] repeat_mode   The repeat mode to send to media controller server
+ * @param[out] request_id   The id of the command request, it will be passed to the mc_cmd_reply_received_cb() function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller client handle by calling mc_client_create().
+ * @see mc_client_create()
+ * @see mc_client_get_server_playback_info()
+ * @see mc_client_set_cmd_reply_received_cb()
+ */
+int mc_client_send_repeat_mode_cmd(mc_client_h client, const char *server_name, mc_repeat_mode_e repeat_mode, char **request_id);
 
 /**
  * @brief Sends the custom command to server.
@@ -730,7 +898,63 @@ int mc_client_send_playback_state_command(mc_client_h client, const char *server
  * @pre Create a media controller client handle by calling mc_client_create().
  * @see mc_client_create()
  */
-int mc_client_send_custom_command(mc_client_h client, const char *server_name, const char *command, bundle *data, mc_command_reply_received_cb callback, void *user_data);
+int mc_client_send_custom_command(mc_client_h client, const char *server_name, const char *command, bundle *data, mc_command_reply_received_cb callback, void *user_data) TIZEN_DEPRECATED_API;
+
+/**
+ * @brief Sends the playlist command to server.
+ * @details The media controller client can send "index" of the playlist to the media controller server with playback action and position.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.client
+ *
+ * @remarks The @a request_id should be released using free().\n
+ *          If the @a request_id is null, the server will not send the reply of the command.
+ *
+ * @param[in] client    The handle to the media controller client
+ * @param[in] server_name    The app_id of the media controller server
+ * @param[in] playlist_name    The playlist name of the server
+ * @param[in] index    The index of the media in playlist to send to the media controller server
+ * @param[in] action    The playback action command to send to the media controller server
+ * @param[in] position    The position of the playback in milliseconds to send to media controller server
+ * @param[out] request_id   The id of the command request, it will be passed to the mc_cmd_reply_received_cb() function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller client handle by calling mc_client_create().
+ * @see mc_client_create()
+ * @see mc_client_set_cmd_reply_received_cb()
+ */
+int mc_client_send_playlist_cmd(mc_client_h client, const char *server_name, const char *playlist_name, const char *index, mc_playback_action_e action, unsigned long long position, char **request_id);
+
+/**
+ * @brief Sends the custom command to server.
+ * @details If the server sends the result of the command, the media controller client will get the result of the custom command by mc_cmd_reply_received_cb() callback.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.client
+ *
+ * @remarks The @a request_id should be released using free().\n
+ *          If the @a request_id is null, the server will not send the reply of the command.
+ *
+ * @param[in] client    The handle to the media controller client
+ * @param[in] server_name    The app_id of the media controller server
+ * @param[in] command      The command to be sent
+ * @param[in] data      The extra data
+ * @param[out] request_id   The id of the command request, it will be passed to the mc_cmd_reply_received_cb() function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller client handle by calling mc_client_create().
+ * @see mc_client_create()
+ * @see mc_client_set_cmd_reply_received_cb()
+ */
+int mc_client_send_custom_cmd(mc_client_h client, const char *server_name, const char *command, bundle *data, char **request_id);
 
 /**
  * @brief Destroys client.
index f4766ab2933a320e4130d8091ca3619da429a247..680b87947df9901188204d3e26d694b097edca64 100755 (executable)
@@ -35,14 +35,13 @@ extern "C" {
  */
 
 /**
- * @brief Called when the Server received playback state command from the client.
+ * @deprecated Deprecated since 4.0. Use mc_server_playback_action_cmd_received_cb() instead.
+ * @brief Called when the server receives the playback state from the client.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
- * @details This callback is called when server received playback state recommand from client.
- *
  * @remarks The callback is called in the dbus event loop.
  *
- * @param[in] client_name    The app_id of the media controller client, it can be used only in the callback. To use outside, make a copy.
+ * @param[in] client_name    The app_id of the media controller client. It can be used only in the callback. To use outside, make a copy.
  * @param[in] state    The received playback state
  * @param[in] user_data        The user data passed from the mc_server_set_playback_state_command_received_cb() function
  *
@@ -53,16 +52,93 @@ extern "C" {
 typedef void (*mc_server_playback_state_command_received_cb)(const char* client_name, mc_playback_states_e state, void *user_data);
 
 /**
- * @brief Called when the Server received custom command from the client.
- * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
+ * @brief Called when the server receives the playback action command from the client.
+ * @since_tizen 4.0
+ *
+ * @remarks The callback is called in the dbus event loop.\n
+ *          If @a request_id is not null, the server should send the reply to the client with the @a request_id.
+ *
+ * @param[in] client_name    The app_id of the media controller client. It can be used only in the callback. To use outside, make a copy.
+ * @param[in] request_id    The request_id of the media controller client.
+ * @param[in] action    The received playback action
+ * @param[in] user_data        The user data passed from the mc_server_set_playback_action_cmd_received_cb() function
+ *
+ * @pre mc_server_set_playback_action_cmd_received_cb()
+ *
+ * @see mc_server_set_playback_action_cmd_received_cb()
+ * @see mc_server_send_cmd_reply()
+ */
+typedef void (*mc_server_playback_action_cmd_received_cb)(const char* client_name, const char *request_id, mc_playback_action_e action, void *user_data);
+
+/**
+ * @brief Called when the server receives the playback position from the client.
+ * @since_tizen 4.0
+ *
+ * @remarks The callback is called in the dbus event loop.\n
+ *          If @a request_id is not null, the server should send the reply to the client with the @a request_id.
+ *
+ * @param[in] client_name    The app_id of the media controller client. It can be used only in the callback. To use outside, make a copy.
+ * @param[in] request_id    The request_id of the media controller client.
+ * @param[in] position    The received playback position (milliseconds)
+ * @param[in] user_data        The user data passed from the mc_server_set_playback_position_cmd_received_cb() function
+ *
+ * @pre mc_server_set_playback_position_cmd_received_cb()
+ *
+ * @see mc_server_set_playback_position_cmd_received_cb()
+ * @see mc_server_send_cmd_reply()
+ */
+typedef void (*mc_server_playback_position_cmd_received_cb)(const char* client_name, const char *request_id, unsigned long long position, void *user_data);
+
+/**
+ * @brief Called when the server receives the shuffle mode from the client.
+ * @since_tizen 4.0
+ *
+ * @remarks The callback is called in the dbus event loop.\n
+ *          If @a request_id is not null, the server should send the reply to the client with the @a request_id.
  *
- * @details This callback is called when server received custom recommand from client.
+ * @param[in] client_name    The app_id of the media controller client. It can be used only in the callback. To use outside, make a copy.
+ * @param[in] request_id    The request_id of the media controller client.
+ * @param[in] shuffle_mode    The received shuffle_mode
+ * @param[in] user_data        The user data passed from the mc_server_set_shuffle_mode_cmd_received_cb() function
+ *
+ * @pre mc_server_set_shuffle_mode_cmd_received_cb()
+ *
+ * @see mc_server_set_shuffle_mode_cmd_received_cb()
+ * @see mc_server_send_cmd_reply()
+ */
+typedef void (*mc_server_shuffle_mode_cmd_received_cb)(const char* client_name, const char *request_id, mc_shuffle_mode_e shuffle_mode, void *user_data);
+
+/**
+ * @brief Called when the server receives the repeat mode from the client.
+ * @since_tizen 4.0
+ *
+ * @remarks The callback is called in the dbus event loop.\n
+ *          If @a request_id is not null, the server should send the reply to the client with the @a request_id.
+ *
+ * @param[in] client_name    The app_id of the media controller client. It can be used only in the callback. To use outside, make a copy.
+ * @param[in] request_id    The request_id of the media controller client.
+ * @param[in] repeat_mode    The received repeat mode
+ * @param[in] user_data        The user data passed from the mc_server_set_repeat_mode_cmd_received_cb() function
+ *
+ * @pre mc_server_set_repeat_mode_cmd_received_cb()
+ *
+ * @see mc_server_set_repeat_mode_cmd_received_cb()
+ * @see mc_server_send_cmd_reply()
+ */
+typedef void (*mc_server_repeat_mode_cmd_received_cb)(const char* client_name, const char *request_id, mc_repeat_mode_e repeat_mode, void *user_data);
+
+/**
+ * @deprecated Deprecated since 4.0. Use mc_server_custom_cmd_received_cb() instead.
+ * @brief Called when the Server receives custom command from the client.
+ * @details This callback is called when server receives custom command from client.
  *                If there is reply for command, call mc_server_send_command_reply() function.
+ * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
- * @remarks The callback is called in the dbus event loop.
+ * @remarks The callback is called in the dbus event loop. @a data should be released using bundle_free().\n
+ *          If @a request_id is not null, the server should send the reply to the client with the @a request_id.
  *
- * @param[in] client_name    The app_id of the media controller client, it can be used only in the callback. To use outside, make a copy.
- * @param[in] command    The received command
+ * @param[in] client_name    The app_id of the media controller client. It can be used only in the callback. To use outside, make a copy.
+ * @param[in] command    The received command. It can be used only in the callback. To use outside, make a copy.
  * @param[in] data    The extra data
  * @param[in] user_data        The user data passed from the mc_server_set_custom_command_received_cb() function
  *
@@ -70,7 +146,52 @@ typedef void (*mc_server_playback_state_command_received_cb)(const char* client_
  *
  * @see mc_server_set_custom_command_received_cb()
  */
-typedef void (*mc_server_custom_command_received_cb)(const char* client_name, const char *command, bundle *data, void *user_data);
+typedef void (*mc_server_custom_command_received_cb)(const char* client_name, const char *command, bundle *data, void *user_data) TIZEN_DEPRECATED_API;
+
+/**
+ * @brief Called when the Server receives playlist command from the client.
+ * @since_tizen 4.0
+ *
+ * @remarks The callback is called in the dbus event loop. \n
+ *          If @a request_id is not null, the server should send the reply to the client with the @a request_id.
+ *
+ * @param[in] client_name    The app_id of the media controller client. It can be used only in the callback. To use outside, make a copy.
+ * @param[in] request_id    The request_id of the media controller client.
+ * @param[in] playlist_name    The name of the server playlist. It can be used only in the callback. To use outside, make a copy.
+ * @param[in] index    The index of the media in playlist. It can be used only in the callback. To use outside, make a copy.
+ * @param[in] action    The received playback action
+ * @param[in] position    The received playback position (milliseconds)
+ * @param[in] user_data    The user data passed from the mc_server_set_playlist_cmd_received_cb() function
+ *
+ * @pre mc_server_set_playlist_cmd_received_cb()
+ *
+ * @see mc_server_set_playlist_cmd_received_cb()
+ * @see mc_server_send_cmd_reply()
+ */
+typedef void (*mc_server_playlist_cmd_received_cb)(const char* client_name, const char *request_id, const char *playlist_name, const char *index, mc_playback_action_e action, unsigned long long position, void *user_data);
+
+/**
+ * @brief Called when the Server receives custom command from the client.
+ * @details This callback is called when server receives custom command from client.
+ *                If you want to reply to the command, call mc_server_send_cmd_reply() function.
+ * @since_tizen 4.0
+ *
+ * @remarks The callback is called in the dbus event loop. @a data should be released using bundle_free().\n
+ *          If @a request_id is not null, the server should send the reply to the client with the @a request_id.
+ *
+ * @param[in] client_name    The app_id of the media controller client. It can be used only in the callback. To use outside, make a copy.
+ * @param[in] request_id     The id of the command request
+ * @param[in] command    The received command. It can be used only in the callback. To use outside, make a copy.
+ * @param[in] data    The extra data
+ * @param[in] user_data        The user data passed from the mc_server_set_custom_cmd_received_cb() function
+ *
+ * @pre mc_server_set_custom_cmd_received_cb()
+ *
+ * @see mc_server_set_custom_cmd_received_cb()
+ * @see mc_server_unset_custom_cmd_received_cb()
+ * @see mc_server_send_cmd_reply()
+ */
+typedef void (*mc_server_custom_cmd_received_cb)(const char* client_name, const char *request_id, const char *command, bundle *data, void *user_data);
 
 /**
  * @brief Creates a media controller server.
@@ -79,7 +200,7 @@ typedef void (*mc_server_custom_command_received_cb)(const char* client_name, co
  * @privlevel public
  * @privilege %http://tizen.org/privilege/mediacontroller.server
  *
- * @remarks The @a server should be released using mc_server_destroy(). And you can create only one server handle for each process.
+ * @remarks The @a server should be released using mc_server_destroy(). You can create only one server handle for each process.
  *
  * @param[out] server The handle to media controller server
  * @return @c 0 on success,
@@ -239,6 +360,7 @@ int mc_server_update_shuffle_mode(mc_server_h server, mc_shuffle_mode_e mode);
 int mc_server_update_repeat_mode(mc_server_h server, mc_repeat_mode_e mode);
 
 /**
+ * @deprecated Deprecated since 4.0. Use mc_server_set_playback_action_cmd_received_cb() instead.
  * @brief Sets the callback for receiving playback state command from client.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
@@ -257,9 +379,10 @@ int mc_server_update_repeat_mode(mc_server_h server, mc_repeat_mode_e mode);
  * @see mc_server_create()
  * @see mc_server_destroy()
  */
-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_set_playback_state_command_received_cb(mc_server_h server, mc_server_playback_state_command_received_cb callback, void *user_data) TIZEN_DEPRECATED_API;
 
 /**
+ * @deprecated Deprecated since 4.0. Use mc_server_unset_playback_action_cmd_received_cb() instead.
  * @brief Unsets the callback for receiving playback state command from client.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
@@ -276,9 +399,170 @@ int mc_server_set_playback_state_command_received_cb(mc_server_h server, mc_serv
  * @see mc_server_create()
  * @see mc_server_destroy()
  */
-int mc_server_unset_playback_state_command_received_cb(mc_server_h server);
+int mc_server_unset_playback_state_command_received_cb(mc_server_h server) TIZEN_DEPRECATED_API;
+
+/**
+ * @brief Sets the callback for receiving playback action command from client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @param[in] server    The handle to media controller server
+ * @param[in] callback      The callback to be invoked when media controller server receives playback action from client.
+ * @param[in] user_data   The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_destroy()
+ */
+int mc_server_set_playback_action_cmd_received_cb(mc_server_h server, mc_server_playback_action_cmd_received_cb callback, void *user_data);
+
+/**
+ * @brief Unsets the callback for receiving playback action command from client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @param[in] server    The handle to media controller server
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_destroy()
+ */
+int mc_server_unset_playback_action_cmd_received_cb(mc_server_h server);
+
+/**
+ * @brief Sets the callback for receiving playback position command from client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @param[in] server    The handle to media controller server
+ * @param[in] callback      The callback to be invoked when media controller server receives position command from client.
+ * @param[in] user_data   The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_destroy()
+ */
+int mc_server_set_playback_position_cmd_received_cb(mc_server_h server, mc_server_playback_position_cmd_received_cb callback, void *user_data);
 
 /**
+ * @brief Unsets the callback for receiving playback position command from client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @param[in] server    The handle to media controller server
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_destroy()
+ */
+int mc_server_unset_playback_position_cmd_received_cb(mc_server_h server);
+
+/**
+ * @brief Sets the callback for receiving shuffle mode command from client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @param[in] server    The handle to media controller server
+ * @param[in] callback      The callback to be invoked when media controller server receives shuffle mode from client.
+ * @param[in] user_data   The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_destroy()
+ */
+int mc_server_set_shuffle_mode_cmd_received_cb(mc_server_h server, mc_server_shuffle_mode_cmd_received_cb callback, void *user_data);
+
+/**
+ * @brief Unsets the callback for receiving shuffle mode command from client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @param[in] server    The handle to media controller server
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_destroy()
+ */
+int mc_server_unset_shuffle_mode_cmd_received_cb(mc_server_h server);
+
+/**
+ * @brief Sets the callback for receiving repeat mode command from client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @param[in] server    The handle to media controller server
+ * @param[in] callback      The callback to be invoked when media controller server receives repeat mode from client.
+ * @param[in] user_data   The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_destroy()
+ */
+int mc_server_set_repeat_mode_cmd_received_cb(mc_server_h server, mc_server_repeat_mode_cmd_received_cb callback, void *user_data);
+
+/**
+ * @brief Unsets the callback for receiving repeat mode command from client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @param[in] server    The handle to media controller server
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_destroy()
+ */
+int mc_server_unset_repeat_mode_cmd_received_cb(mc_server_h server);
+
+/**
+ * @deprecated Deprecated since 4.0. Use mc_server_set_custom_cmd_received_cb() instead.
  * @brief Sets the callback for receiving custom command from client.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
@@ -297,9 +581,10 @@ int mc_server_unset_playback_state_command_received_cb(mc_server_h server);
  * @see mc_server_create()
  * @see mc_server_destroy()
  */
-int mc_server_set_custom_command_received_cb(mc_server_h server, mc_server_custom_command_received_cb callback, void *user_data);
+int mc_server_set_custom_command_received_cb(mc_server_h server, mc_server_custom_command_received_cb callback, void *user_data) TIZEN_DEPRECATED_API;
 
 /**
+ * @deprecated Deprecated since 4.0. Use mc_server_unset_custom_cmd_received_cb() instead.
  * @brief Unsets the callback for receiving custom command from client.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
@@ -316,9 +601,10 @@ int mc_server_set_custom_command_received_cb(mc_server_h server, mc_server_custo
  * @see mc_server_create()
  * @see mc_server_destroy()
  */
-int mc_server_unset_custom_command_received_cb(mc_server_h server);
+int mc_server_unset_custom_command_received_cb(mc_server_h server) TIZEN_DEPRECATED_API;
 
 /**
+ * @deprecated Deprecated since 4.0. Use mc_server_send_cmd_reply() instead.
  * @brief Sends a reply for the requested command to the client.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
@@ -341,7 +627,119 @@ int mc_server_unset_custom_command_received_cb(mc_server_h server);
  * @see mc_server_create()
  * @see mc_server_destroy()
  */
-int mc_server_send_command_reply(mc_server_h server, const char *client_name, int result_code, bundle *data);
+int mc_server_send_command_reply(mc_server_h server, const char *client_name, int result_code, bundle *data) TIZEN_DEPRECATED_API;
+
+/**
+ * @brief Sets the callback for receiving playlist command from client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @param[in] server    The handle to media controller server
+ * @param[in] callback      The callback to be invoked when media controller server receives playlist command from client.
+ * @param[in] user_data   The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_destroy()
+ */
+int mc_server_set_playlist_cmd_received_cb(mc_server_h server, mc_server_playlist_cmd_received_cb callback, void *user_data);
+
+/**
+ * @brief Unsets the callback for receiving playlist command from client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @param[in] server    The handle to media controller server
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_destroy()
+ */
+int mc_server_unset_playlist_cmd_received_cb(mc_server_h server);
+
+/**
+ * @brief Sets the callback for receiving custom command from client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @param[in] server    The handle to media controller server
+ * @param[in] callback      The callback to be invoked when media controller server receives custom command from client.
+ * @param[in] user_data   The user data to be passed to the callback function
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_destroy()
+ */
+int mc_server_set_custom_cmd_received_cb(mc_server_h server, mc_server_custom_cmd_received_cb callback, void *user_data);
+
+/**
+ * @brief Unsets the callback for receiving custom command from client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @param[in] server    The handle to media controller server
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_destroy()
+ */
+int mc_server_unset_custom_cmd_received_cb(mc_server_h server);
+
+/**
+ * @brief Replys the result of the requested command to the client.
+ * @since_tizen 4.0
+ *
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/mediacontroller.server
+ *
+ * @remarks When the server receives a command, this function can be called by mc_server_playback_action_cmd_received_cb(), mc_server_playback_position_cmd_received_cb(), mc_server_shuffle_mode_cmd_received_cb(), mc_server_repeat_mode_cmd_received_cb(), mc_server_playlist_cmd_received_cb() and mc_server_custom_cmd_received_cb().\n
+ *          If @a request_id is null, this function will return #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER.
+ *
+ * @param[in] server    The handle to media controller server
+ * @param[in] client_name    The app_id of the media controller client
+ * @param[in] request_id    The id of the command request, received in the mc_server_custom_cmd_received_cb() function.
+ * @param[in] result_code    The result code of custom command
+ * @param[in] data                The extra data
+ * @return @c 0 on success,
+ *         otherwise a negative error value
+ * @retval #MEDIA_CONTROLLER_ERROR_NONE Successful
+ * @retval #MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #MEDIA_CONTROLLER_ERROR_PERMISSION_DENIED Permission denied
+ * @pre Create a media controller server handle by calling mc_server_create().
+ * @see mc_server_create()
+ * @see mc_server_playback_action_cmd_received_cb()
+ * @see mc_server_playback_position_cmd_received_cb()
+ * @see mc_server_shuffle_mode_cmd_received_cb()
+ * @see mc_server_repeat_mode_cmd_received_cb()
+ * @see mc_server_playlist_cmd_received_cb()
+ * @see mc_server_custom_cmd_received_cb()
+ * @see mc_server_destroy()
+ */
+int mc_server_send_cmd_reply(mc_server_h server, const char *client_name, const char *request_id, int result_code, bundle *data);
 
 /**
  * @brief Destroys media controller server.
index 454c4ff6fc8bd97513aeeae812be70a8fea86313..86af42d918e55f8f00f2fc363edcb01d084d7f70 100755 (executable)
@@ -106,15 +106,34 @@ typedef enum {
  */
 typedef enum {
        MC_PLAYBACK_STATE_NONE = 0,                             /**< None */
-       MC_PLAYBACK_STATE_PLAYING,                              /**< Play */
-       MC_PLAYBACK_STATE_PAUSED,                               /**< Pause */
-       MC_PLAYBACK_STATE_STOPPED,                              /**< Stop */
-       MC_PLAYBACK_STATE_NEXT_FILE,                    /**< Next file */
-       MC_PLAYBACK_STATE_PREV_FILE,                    /**< Previous file */
-       MC_PLAYBACK_STATE_FAST_FORWARD,         /**< Fast forward */
-       MC_PLAYBACK_STATE_REWIND,                               /**< Rewind */
+       MC_PLAYBACK_STATE_PLAYING,                              /**< Playing */
+       MC_PLAYBACK_STATE_PAUSED,                               /**< Paused */
+       MC_PLAYBACK_STATE_STOPPED,                              /**< Stopped */
+       MC_PLAYBACK_STATE_NEXT_FILE,                            /**< Next file (Deprecated since 4.0)*/
+       MC_PLAYBACK_STATE_PREV_FILE,                            /**< Previous file (Deprecated since 4.0)*/
+       MC_PLAYBACK_STATE_FAST_FORWARD,                 /**< Fast forward (Deprecated since 4.0)*/
+       MC_PLAYBACK_STATE_REWIND,                               /**< Rewind (Deprecated since 4.0)*/
+       MC_PLAYBACK_STATE_MOVING_TO_NEXT,               /**< Moving to the next item (Since 4.0)*/
+       MC_PLAYBACK_STATE_MOVING_TO_PREVIOUS,   /**< Moving to the previous item (Since 4.0)*/
+       MC_PLAYBACK_STATE_FAST_FORWARDING,              /**< Fast forwarding (Since 4.0)*/
+       MC_PLAYBACK_STATE_REWINDING,                            /**< Rewinding (Since 4.0)*/
 } mc_playback_states_e;
 
+/**
+ * @brief Enumeration for the media playback action.
+ * @since_tizen 4.0
+ */
+typedef enum {
+       MC_PLAYBACK_ACTION_PLAY,                                /**< Play */
+       MC_PLAYBACK_ACTION_PAUSE,                       /**< Pause */
+       MC_PLAYBACK_ACTION_STOP,                                /**< Stop */
+       MC_PLAYBACK_ACTION_NEXT,                                /**< Next item */
+       MC_PLAYBACK_ACTION_PREV,                                /**< Previous item */
+       MC_PLAYBACK_ACTION_FAST_FORWARD,        /**< Fast forward */
+       MC_PLAYBACK_ACTION_REWIND,                      /**< Rewind */
+       MC_PLAYBACK_ACTION_TOGGLE_PLAY_PAUSE,           /**< Play/Pause toggle */
+} mc_playback_action_e;
+
 /**
  * @brief Enumeration for the shuffle mode.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
@@ -129,8 +148,9 @@ typedef enum {
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  */
 typedef enum {
-       MC_REPEAT_MODE_ON = 0,                                  /**< Repeat mode on */
+       MC_REPEAT_MODE_ON = 0,                          /**< Repeat mode on for all media*/
        MC_REPEAT_MODE_OFF,                                     /**< Repeat mode off */
+       MC_REPEAT_MODE_ONE_MEDIA,                       /**< Repeat mode on for one media (Since 4.0)*/
 } mc_repeat_mode_e;
 
 /**