2 * Copyright (c) 2016 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;
21 using Tizen.Multimedia.MediaController;
23 internal static partial class Interop
25 internal static partial class MediaControllerClient
27 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
28 internal delegate void ServerUpdatedCallback(IntPtr serverName, MediaControllerServerState serverState, IntPtr userData);
30 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
31 internal delegate void PlaybackUpdatedCallback(IntPtr serverName, IntPtr playback, IntPtr userData);
33 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
34 internal delegate void MetadataUpdatedCallback(IntPtr serverName, IntPtr metadata, IntPtr userData);
36 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
37 internal delegate void ShuffleModeUpdatedCallback(IntPtr serverName, MediaControllerShuffleMode shuffleMode, IntPtr userData);
39 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
40 internal delegate void RepeatModeUpdatedCallback(IntPtr serverName, MediaControllerRepeatMode repeatMode, IntPtr userData);
42 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
43 internal delegate void CommandReplyRecievedCallback(IntPtr serverName, int result, IntPtr bundle, IntPtr userData);
45 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
46 internal delegate bool SubscribedServerCallback(IntPtr serverName, IntPtr userData);
48 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
49 internal delegate bool ActivatedServerCallback(IntPtr serverName, IntPtr userData);
51 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_create")]
52 internal static extern MediaControllerError Create(out IntPtr handle);
54 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_destroy")]
55 internal static extern MediaControllerError Destroy(IntPtr handle);
57 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_server_update_cb")]
58 internal static extern MediaControllerError SetServerUpdatedCb(IntPtr handle, ServerUpdatedCallback callback, IntPtr userData);
60 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_server_update_cb")]
61 internal static extern MediaControllerError UnsetServerUpdatedCb(IntPtr handle);
63 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_playback_update_cb")]
64 internal static extern MediaControllerError SetPlaybackUpdatedCb(IntPtr handle, PlaybackUpdatedCallback callback, IntPtr userData);
66 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_playback_update_cb")]
67 internal static extern MediaControllerError UnsetPlaybackUpdatedCb(IntPtr handle);
69 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_metadata_update_cb")]
70 internal static extern MediaControllerError SetMetadataUpdatedCb(IntPtr handle, MetadataUpdatedCallback callback, IntPtr userData);
72 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_metadata_update_cb")]
73 internal static extern MediaControllerError UnsetMetadataUpdatedCb(IntPtr handle);
75 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_shuffle_mode_update_cb")]
76 internal static extern MediaControllerError SetShuffleModeUpdatedCb(IntPtr handle, ShuffleModeUpdatedCallback callback, IntPtr userData);
78 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_shuffle_mode_update_cb")]
79 internal static extern MediaControllerError UnsetShuffleModeUpdatedCb(IntPtr handle);
81 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_repeat_mode_update_cb")]
82 internal static extern MediaControllerError SetRepeatModeUpdatedCb(IntPtr handle, RepeatModeUpdatedCallback callback, IntPtr userData);
84 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_repeat_mode_update_cb")]
85 internal static extern MediaControllerError UnsetRepeatModeUpdatedCb(IntPtr handle);
87 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_subscribe")]
88 internal static extern MediaControllerError Subscribe(IntPtr handle, MediaControllerSubscriptionType subscriptionType, string serverName);
90 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unsubscribe")]
91 internal static extern MediaControllerError Unsubscribe(IntPtr handle, MediaControllerSubscriptionType subscriptionType, string serverName);
93 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_playback_state")]
94 internal static extern MediaControllerError GetPlaybackState(IntPtr playback, out MediaControllerPlaybackState state);
96 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_playback_position")]
97 internal static extern MediaControllerError GetPlaybackPosition(IntPtr playback, out ulong position);
99 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_destroy_playback")]
100 internal static extern MediaControllerError DestroyPlayback(IntPtr playback);
102 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_metadata")]
103 private static extern MediaControllerError GetMetadata(IntPtr metadata, MediaControllerAttributes attribute, out IntPtr value);
105 internal static string GetMetadata(IntPtr handle, MediaControllerAttributes attr)
107 IntPtr valuePtr = IntPtr.Zero;
111 var ret = GetMetadata(handle, attr, out valuePtr);
112 MediaControllerValidator.ThrowIfError(ret, "Failed to get value for " + attr);
113 return Marshal.PtrToStringAnsi(valuePtr);
117 LibcSupport.Free(valuePtr);
121 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_destroy_metadata")]
122 internal static extern MediaControllerError DestroyMetadata(IntPtr metadata);
124 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_latest_server_info")]
125 internal static extern MediaControllerError GetLatestServer(IntPtr handle, out IntPtr serverName, out MediaControllerServerState serverState);
127 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_playback_info")]
128 internal static extern MediaControllerError GetServerPlayback(IntPtr handle, string serverName, out IntPtr playback);
130 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_metadata")]
131 internal static extern MediaControllerError GetServerMetadata(IntPtr handle, string serverName, out IntPtr metadata);
133 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_shuffle_mode")]
134 internal static extern MediaControllerError GetServerShuffleMode(IntPtr handle, string serverName, out MediaControllerShuffleMode mode);
136 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_repeat_mode")]
137 internal static extern MediaControllerError GetServerRepeatMode(IntPtr handle, string serverName, out MediaControllerRepeatMode mode);
139 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_send_playback_state_command")]
140 internal static extern MediaControllerError SendPlaybackStateCommand(IntPtr handle, string serverName, MediaControllerPlaybackState state);
142 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_send_custom_command")]
143 internal static extern MediaControllerError SendCustomCommand(IntPtr handle, string serverName, string command, SafeBundleHandle bundle, CommandReplyRecievedCallback callback, IntPtr userData);
145 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_foreach_server_subscribed")]
146 internal static extern MediaControllerError ForeachSubscribedServer(IntPtr handle, MediaControllerSubscriptionType subscriptionType, SubscribedServerCallback callback, IntPtr userData);
148 [DllImport(Libraries.MediaController, EntryPoint = "mc_client_foreach_server")]
149 internal static extern MediaControllerError ForeachActivatedServer(IntPtr handle, ActivatedServerCallback callback, IntPtr userData);
152 internal static partial class MediaControllerServer
154 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
155 internal delegate void PlaybackStateCommandRecievedCallback(IntPtr clientName, MediaControllerPlaybackState state, IntPtr userData);
157 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
158 internal delegate void CustomCommandRecievedCallback(IntPtr clientName, IntPtr command, IntPtr bundle, IntPtr userData);
160 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_create")]
161 internal static extern MediaControllerError Create(out IntPtr handle);
163 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_destroy")]
164 internal static extern MediaControllerError Destroy(IntPtr handle);
166 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_state")]
167 internal static extern MediaControllerError SetPlaybackState(IntPtr handle, MediaControllerPlaybackState state);
169 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_position")]
170 internal static extern MediaControllerError SetPlaybackPosition(IntPtr handle, ulong position);
172 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_playback_info")]
173 internal static extern MediaControllerError UpdatePlayback(IntPtr handle);
175 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_metadata")]
176 internal static extern MediaControllerError SetMetadata(IntPtr handle, MediaControllerAttributes attribute, string value);
178 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_metadata")]
179 internal static extern MediaControllerError UpdateMetadata(IntPtr handle);
181 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_shuffle_mode")]
182 internal static extern MediaControllerError UpdateShuffleMode(IntPtr handle, MediaControllerShuffleMode mode);
184 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_repeat_mode")]
185 internal static extern MediaControllerError UpdateRepeatMode(IntPtr handle, MediaControllerRepeatMode mode);
187 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_state_command_received_cb")]
188 internal static extern MediaControllerError SetPlaybackStateCmdRecvCb(IntPtr handle, PlaybackStateCommandRecievedCallback callback, IntPtr userData);
190 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_playback_state_command_received_cb")]
191 internal static extern MediaControllerError UnsetPlaybackStateCmdRecvCb(IntPtr handle);
193 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_custom_command_received_cb")]
194 internal static extern MediaControllerError SetCustomCmdRecvCb(IntPtr handle, CustomCommandRecievedCallback callback, IntPtr userData);
196 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_custom_command_received_cb")]
197 internal static extern MediaControllerError UnsetCustomCmdRecvCb(IntPtr handle);
199 [DllImport(Libraries.MediaController, EntryPoint = "mc_server_send_command_reply")]
200 internal static extern MediaControllerError SendCommandReply(IntPtr handle, string clientName, int result, SafeBundleHandle bundle);