Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Remoting / Interop / Interop.MediaController.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 using System;
18 using System.Runtime.InteropServices;
19 using Tizen.Applications;
20 using Tizen.Multimedia;
21 using Tizen.Multimedia.MediaController;
22
23 internal static partial class Interop
24 {
25     internal static partial class MediaControllerClient
26     {
27         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
28         internal delegate void ServerUpdatedCallback(IntPtr serverName, MediaControllerServerState serverState, IntPtr userData);
29
30         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
31         internal delegate void PlaybackUpdatedCallback(IntPtr serverName, IntPtr playback, IntPtr userData);
32
33         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
34         internal delegate void MetadataUpdatedCallback(IntPtr serverName, IntPtr metadata, IntPtr userData);
35
36         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
37         internal delegate void ShuffleModeUpdatedCallback(IntPtr serverName, MediaControllerShuffleMode shuffleMode, IntPtr userData);
38
39         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
40         internal delegate void RepeatModeUpdatedCallback(IntPtr serverName, MediaControllerRepeatMode repeatMode, IntPtr userData);
41
42         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
43         internal delegate void CommandReplyRecievedCallback(IntPtr serverName, int result, IntPtr bundle, IntPtr userData);
44
45         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
46         internal delegate bool SubscribedServerCallback(IntPtr serverName, IntPtr userData);
47
48         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
49         internal delegate bool ActivatedServerCallback(IntPtr serverName, IntPtr userData);
50
51         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_create")]
52         internal static extern MediaControllerError Create(out IntPtr handle);
53
54         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_destroy")]
55         internal static extern MediaControllerError Destroy(IntPtr handle);
56
57         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_server_update_cb")]
58         internal static extern MediaControllerError SetServerUpdatedCb(IntPtr handle, ServerUpdatedCallback callback, IntPtr userData);
59
60         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_server_update_cb")]
61         internal static extern MediaControllerError UnsetServerUpdatedCb(IntPtr handle);
62
63         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_playback_update_cb")]
64         internal static extern MediaControllerError SetPlaybackUpdatedCb(IntPtr handle, PlaybackUpdatedCallback callback, IntPtr userData);
65
66         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_playback_update_cb")]
67         internal static extern MediaControllerError UnsetPlaybackUpdatedCb(IntPtr handle);
68
69         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_metadata_update_cb")]
70         internal static extern MediaControllerError SetMetadataUpdatedCb(IntPtr handle, MetadataUpdatedCallback callback, IntPtr userData);
71
72         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_metadata_update_cb")]
73         internal static extern MediaControllerError UnsetMetadataUpdatedCb(IntPtr handle);
74
75         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_shuffle_mode_update_cb")]
76         internal static extern MediaControllerError SetShuffleModeUpdatedCb(IntPtr handle, ShuffleModeUpdatedCallback callback, IntPtr userData);
77
78         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_shuffle_mode_update_cb")]
79         internal static extern MediaControllerError UnsetShuffleModeUpdatedCb(IntPtr handle);
80
81         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_set_repeat_mode_update_cb")]
82         internal static extern MediaControllerError SetRepeatModeUpdatedCb(IntPtr handle, RepeatModeUpdatedCallback callback, IntPtr userData);
83
84         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unset_repeat_mode_update_cb")]
85         internal static extern MediaControllerError UnsetRepeatModeUpdatedCb(IntPtr handle);
86
87         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_subscribe")]
88         internal static extern MediaControllerError Subscribe(IntPtr handle, MediaControllerSubscriptionType subscriptionType, string serverName);
89
90         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_unsubscribe")]
91         internal static extern MediaControllerError Unsubscribe(IntPtr handle, MediaControllerSubscriptionType subscriptionType, string serverName);
92
93         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_playback_state")]
94         internal static extern MediaControllerError GetPlaybackState(IntPtr playback, out MediaControllerPlaybackState state);
95
96         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_playback_position")]
97         internal static extern MediaControllerError GetPlaybackPosition(IntPtr playback, out ulong position);
98
99         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_destroy_playback")]
100         internal static extern MediaControllerError DestroyPlayback(IntPtr playback);
101
102         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_metadata")]
103         private static extern MediaControllerError GetMetadata(IntPtr metadata, MediaControllerAttributes attribute, out IntPtr value);
104
105         internal static string GetMetadata(IntPtr handle, MediaControllerAttributes attr)
106         {
107             IntPtr valuePtr = IntPtr.Zero;
108
109             try
110             {
111                 var ret = GetMetadata(handle, attr, out valuePtr);
112                 MediaControllerValidator.ThrowIfError(ret, "Failed to get value for " + attr);
113                 return Marshal.PtrToStringAnsi(valuePtr);
114             }
115             finally
116             {
117                 LibcSupport.Free(valuePtr);
118             }
119         }
120
121         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_destroy_metadata")]
122         internal static extern MediaControllerError DestroyMetadata(IntPtr metadata);
123
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);
126
127         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_playback_info")]
128         internal static extern MediaControllerError GetServerPlayback(IntPtr handle, string serverName, out IntPtr playback);
129
130         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_metadata")]
131         internal static extern MediaControllerError GetServerMetadata(IntPtr handle, string serverName, out IntPtr metadata);
132
133         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_shuffle_mode")]
134         internal static extern MediaControllerError GetServerShuffleMode(IntPtr handle, string serverName, out MediaControllerShuffleMode mode);
135
136         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_get_server_repeat_mode")]
137         internal static extern MediaControllerError GetServerRepeatMode(IntPtr handle, string serverName, out MediaControllerRepeatMode mode);
138
139         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_send_playback_state_command")]
140         internal static extern MediaControllerError SendPlaybackStateCommand(IntPtr handle, string serverName, MediaControllerPlaybackState state);
141
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);
144
145         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_foreach_server_subscribed")]
146         internal static extern MediaControllerError ForeachSubscribedServer(IntPtr handle, MediaControllerSubscriptionType subscriptionType, SubscribedServerCallback callback, IntPtr userData);
147
148         [DllImport(Libraries.MediaController, EntryPoint = "mc_client_foreach_server")]
149         internal static extern MediaControllerError ForeachActivatedServer(IntPtr handle, ActivatedServerCallback callback, IntPtr userData);
150     }
151
152     internal static partial class MediaControllerServer
153     {
154         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
155         internal delegate void PlaybackStateCommandRecievedCallback(IntPtr clientName, MediaControllerPlaybackState state, IntPtr userData);
156
157         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
158         internal delegate void CustomCommandRecievedCallback(IntPtr clientName, IntPtr command, IntPtr bundle, IntPtr userData);
159
160         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_create")]
161         internal static extern MediaControllerError Create(out IntPtr handle);
162
163         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_destroy")]
164         internal static extern MediaControllerError Destroy(IntPtr handle);
165
166         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_state")]
167         internal static extern MediaControllerError SetPlaybackState(IntPtr handle, MediaControllerPlaybackState state);
168
169         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_playback_position")]
170         internal static extern MediaControllerError SetPlaybackPosition(IntPtr handle, ulong position);
171
172         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_playback_info")]
173         internal static extern MediaControllerError UpdatePlayback(IntPtr handle);
174
175         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_metadata")]
176         internal static extern MediaControllerError SetMetadata(IntPtr handle, MediaControllerAttributes attribute, string value);
177
178         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_metadata")]
179         internal static extern MediaControllerError UpdateMetadata(IntPtr handle);
180
181         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_shuffle_mode")]
182         internal static extern MediaControllerError UpdateShuffleMode(IntPtr handle, MediaControllerShuffleMode mode);
183
184         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_update_repeat_mode")]
185         internal static extern MediaControllerError UpdateRepeatMode(IntPtr handle, MediaControllerRepeatMode mode);
186
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);
189
190         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_playback_state_command_received_cb")]
191         internal static extern MediaControllerError UnsetPlaybackStateCmdRecvCb(IntPtr handle);
192
193         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_set_custom_command_received_cb")]
194         internal static extern MediaControllerError SetCustomCmdRecvCb(IntPtr handle, CustomCommandRecievedCallback callback, IntPtr userData);
195
196         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_unset_custom_command_received_cb")]
197         internal static extern MediaControllerError UnsetCustomCmdRecvCb(IntPtr handle);
198
199         [DllImport(Libraries.MediaController, EntryPoint = "mc_server_send_command_reply")]
200         internal static extern MediaControllerError SendCommandReply(IntPtr handle, string clientName, int result, SafeBundleHandle bundle);
201     }
202 }