2 * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 using System.Runtime.InteropServices;
19 using Tizen.Applications;
20 using Tizen.Multimedia.Remoting;
22 internal static partial class Interop
24 internal static partial class MediaControllerServer
26 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
27 internal delegate void PlaybackStateCommandReceivedCallback(string clientName,
28 MediaControllerNativePlaybackAction nativeAction, IntPtr userData);
30 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
31 internal delegate void PlaybackActionCommandReceivedCallback(string clientName,
32 string requestId, MediaControllerNativePlaybackAction nativeAction, IntPtr userData);
34 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
35 internal delegate void PlaybackPositionCommandReceivedCallback(string clientName,
36 string requestId, ulong playbackPosition, IntPtr userData);
38 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
39 internal delegate void PlaylistCommandReceivedCallback(string clientName,
40 string requestId, string playlistName, string index, MediaControllerNativePlaybackAction nativeAction,
41 ulong playbackPosition, IntPtr userData);
43 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
44 internal delegate void ShuffleModeCommandReceivedCallback(string clientName,
45 string requestId, MediaControllerNativeShuffleMode shuffleMode, IntPtr userData);
47 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
48 internal delegate void RepeatModeCommandReceivedCallback(string clientName,
49 string requestId, MediaControllerNativeRepeatMode repeatMode, IntPtr userData);
51 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
52 internal delegate void CustomCommandReceivedCallback(string clientName,
53 string requestId, string customCommand, IntPtr bundleHandle, IntPtr userData);
55 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
56 internal delegate bool PlaylistCallback(IntPtr handle, IntPtr userData);
58 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
59 internal delegate bool ActivatedClientCallback(string clientName, IntPtr userData);
61 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
62 internal delegate void CommandCompletedCallback(string clientName, string requestId, MediaControllerError result, IntPtr bundleHandle,
63 IntPtr userData = default(IntPtr));
65 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
66 internal delegate void SearchCommandReceivedCallback(string clientName, string requestId, IntPtr searchHandle,
67 IntPtr userData = default(IntPtr));
69 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
70 internal delegate bool SearchItemCallback(MediaControlContentType type, MediaControlSearchCategory category,
71 string keyword, IntPtr bundleHandle, IntPtr userData = default(IntPtr));
74 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_create")]
75 internal static extern MediaControllerError Create(out IntPtr handle);
77 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_destroy")]
78 internal static extern MediaControllerError Destroy(IntPtr handle);
80 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_state")]
81 internal static extern MediaControllerError SetPlaybackState(IntPtr handle,
82 MediaControllerNativePlaybackState state);
84 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_position")]
85 internal static extern MediaControllerError SetPlaybackPosition(IntPtr handle, ulong position);
87 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_playback_info")]
88 internal static extern MediaControllerError UpdatePlayback(IntPtr handle);
90 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_metadata")]
91 internal static extern MediaControllerError SetMetadata(IntPtr handle,
92 MediaControllerNativeAttribute attribute, string value);
94 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_metadata")]
95 internal static extern MediaControllerError UpdateMetadata(IntPtr handle);
97 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_shuffle_mode")]
98 internal static extern MediaControllerError UpdateShuffleMode(IntPtr handle,
99 MediaControllerNativeShuffleMode mode);
101 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_repeat_mode")]
102 internal static extern MediaControllerError UpdateRepeatMode(IntPtr handle, MediaControllerNativeRepeatMode mode);
104 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_state_command_received_cb")]
105 internal static extern MediaControllerError SetPlaybackStateCommandReceivedCb(IntPtr handle,
106 PlaybackStateCommandReceivedCallback callback, IntPtr userData = default(IntPtr));
108 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_playback_state_command_received_cb")]
109 internal static extern MediaControllerError UnsetPlaybackStateCmdRecvCb(IntPtr handle);
111 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_action_cmd_received_cb")]
112 internal static extern MediaControllerError SetPlaybackActionCommandReceivedCb(IntPtr handle,
113 PlaybackActionCommandReceivedCallback callback, IntPtr userData = default(IntPtr));
115 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_playback_action_cmd_received_cb")]
116 internal static extern MediaControllerError UnsetPlaybackActionCommandReceivedCb(IntPtr handle);
118 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_position_cmd_received_cb")]
119 internal static extern MediaControllerError SetPlaybackPosotionCommandReceivedCb(IntPtr handle,
120 PlaybackPositionCommandReceivedCallback callback, IntPtr userData = default(IntPtr));
122 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_playback_position_cmd_received_cb")]
123 internal static extern MediaControllerError UnsetPlaybackPositionCommandReceivedCb(IntPtr handle);
125 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playlist_cmd_received_cb")]
126 internal static extern MediaControllerError SetPlaylistCommandReceivedCb(IntPtr handle,
127 PlaylistCommandReceivedCallback callback, IntPtr userData = default(IntPtr));
129 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_playlist_cmd_received_cb")]
130 internal static extern MediaControllerError UnsetPlaylistCommandReceivedCb(IntPtr handle);
132 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_shuffle_mode_cmd_received_cb")]
133 internal static extern MediaControllerError SetShuffleModeCommandReceivedCb(IntPtr handle,
134 ShuffleModeCommandReceivedCallback callback, IntPtr userData = default(IntPtr));
136 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_shuffle_mode_cmd_received_cb")]
137 internal static extern MediaControllerError UnsetShuffleModeCommandReceivedCb(IntPtr handle);
139 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_repeat_mode_cmd_received_cb")]
140 internal static extern MediaControllerError SetRepeatModeCommandReceivedCb(IntPtr handle,
141 RepeatModeCommandReceivedCallback callback, IntPtr userData = default(IntPtr));
143 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_repeat_mode_cmd_received_cb")]
144 internal static extern MediaControllerError UnsetRepeatModeCommandReceivedCb(IntPtr handle);
146 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_custom_cmd_received_cb")]
147 internal static extern MediaControllerError SetCustomCommandReceivedCb(IntPtr handle,
148 CustomCommandReceivedCallback callback, IntPtr userData = default(IntPtr));
150 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_custom_cmd_received_cb")]
151 internal static extern MediaControllerError UnsetCustomCommandReceivedCb(IntPtr handle);
153 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_search_cmd_received_cb")]
154 internal static extern MediaControllerError SetSearchCommandReceivedCb(IntPtr handle,
155 SearchCommandReceivedCallback callback, IntPtr userData = default(IntPtr));
157 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_search_cmd_received_cb")]
158 internal static extern MediaControllerError UnsetSearchCommandReceivedCb(IntPtr handle);
160 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_send_cmd_reply")]
161 internal static extern MediaControllerError SendCommandReplyBundle(IntPtr handle,
162 string appId, string requestID, int result, SafeBundleHandle bundleHandle);
164 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_send_cmd_reply")]
165 internal static extern MediaControllerError SendCommandReply(IntPtr handle,
166 string appId, string requestID, int result, IntPtr bundleHandle);
168 [DllImport(Libraries.MediaController, EntryPoint = "mc_db_connect")]
169 internal static extern MediaControllerError ConnectDb(out IntPtr dbHandle);
171 [DllImport(Libraries.MediaController, EntryPoint = "mc_db_disconnect")]
172 internal static extern MediaControllerError DisconnectDb(IntPtr dbHandle);
174 [DllImport(Libraries.MediaController, EntryPoint = "mc_db_check_server_table_exist")]
175 internal static extern MediaControllerError CheckServerExist(IntPtr dbHandle, string appId, out bool value);
177 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_create_playlist")]
178 internal static extern MediaControllerError CreatePlaylist(IntPtr handle, string name, out IntPtr playlist);
180 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_delete_playlist")]
181 internal static extern MediaControllerError DeletePlaylist(IntPtr handle, IntPtr playlist);
183 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_foreach_playlist")]
184 internal static extern MediaControllerError ForeachPlaylist(IntPtr handle, PlaylistCallback callback, IntPtr userData);
186 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playlist_item_index")]
187 internal static extern MediaControllerError SetIndexOfCurrentPlayingMedia(IntPtr handle, string index);
189 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playlist_item_info")]
190 internal static extern MediaControllerError SetInfoOfCurrentPlayingMedia(IntPtr handle, string name, string index);
192 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_add_item_to_playlist")]
193 internal static extern MediaControllerError AddItemToPlaylist(IntPtr handle,
194 IntPtr playlist, string index, MediaControllerNativeAttribute attribute, string value);
196 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_playlist_done")]
197 internal static extern MediaControllerError SavePlaylist(IntPtr handle, IntPtr playlist);
199 // Playlist API. but this need to server handle so have to be here.
200 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_get_playlist")]
201 internal static extern MediaControllerError GetPlaylistHandle(IntPtr handle, string name, out IntPtr playbackHandle);
203 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_foreach_client")]
204 internal static extern MediaControllerError ForeachActivatedClient(IntPtr handle, ActivatedClientCallback callback,
205 IntPtr userData = default(IntPtr));
207 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_send_custom_event")]
208 internal static extern MediaControllerError SendCustomEvent(IntPtr handle, string appId, string customEvent,
209 IntPtr bundle, out string requestId);
211 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_send_custom_event")]
212 internal static extern MediaControllerError SendCustomEventBundle(IntPtr handle, string appId, string customEvent,
213 SafeBundleHandle bundle, out string requestId);
215 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_event_reply_received_cb")]
216 internal static extern MediaControllerError SetEventReceivedCb(IntPtr handle, CommandCompletedCallback callback,
217 IntPtr userData = default(IntPtr));
219 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_event_reply_received_cb")]
220 internal static extern MediaControllerError UnsetEventReceivedCb(IntPtr handle);
222 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_content_age_rating")]
223 internal static extern MediaControllerError SetAgeRating(IntPtr handle, int rating);
227 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_content_type")]
228 internal static extern MediaControllerError SetPlaybackContentType(IntPtr serverHandle,
229 MediaControlContentType type);
231 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_icon")]
232 internal static extern MediaControllerError SetIconPath(IntPtr serverHandle, string uri);
234 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_ability")]
235 internal static extern MediaControllerError SetPlaybackCapability(IntPtr serverHandle,
236 MediaControllerNativePlaybackAction action, MediaControlCapabilitySupport support);
238 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_playback_ability")]
239 internal static extern MediaControllerError SaveAndNotifyPlaybackCapabilityUpdated(IntPtr serverHandle);
241 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_shuffle_ability")]
242 internal static extern MediaControllerError SetShuffleModeCapability(IntPtr serverHandle,
243 MediaControlCapabilitySupport support);
245 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_repeat_ability")]
246 internal static extern MediaControllerError SetRepeatModeCapability(IntPtr serverHandle,
247 MediaControlCapabilitySupport support);
248 #endregion Capability
251 [DllImport(Libraries.MediaController, EntryPoint = "mc_search_foreach_condition")]
252 internal static extern MediaControllerError ForeachSearchCondition(IntPtr serverHandle,
253 SearchItemCallback callback, IntPtr userData = default(IntPtr));
255 [DllImport(Libraries.MediaController, EntryPoint = "mc_search_clone")]
256 internal static extern MediaControllerError CloneSearchHandle(IntPtr srcHandle, out IntPtr dstHandle);
258 [DllImport(Libraries.MediaController, EntryPoint = "mc_search_destroy")]
259 internal static extern MediaControllerError DestroySearchHandle(IntPtr searchHandle);