[Cion] Add new APIs for Advanced Companion Framework (#3472)
[platform/core/csapi/tizenfx.git] / src / Tizen.Applications.Cion / Interop / Interop.CionClient.cs
1 /*
2  * Copyright (c) 2021 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
21 using ErrorCode = Interop.Cion.ErrorCode;
22
23 internal static partial class Interop
24 {
25     internal static partial class CionClient
26     {
27         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
28         internal delegate void CionClientDiscoveredCb(string serviceName, IntPtr peerInfo, IntPtr userData);
29         
30         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
31         internal delegate void CionClientConnectionResultCb(string serviceName, IntPtr peerInfo, IntPtr result, IntPtr userData);
32
33         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
34         internal delegate void CionClientPayloadRecievedCb(string serviceName, IntPtr peerInfo, IntPtr payload, int status, IntPtr userData);
35
36         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
37         internal delegate void CionClientDisconnectedCb(string serviceName, IntPtr peerInfo, IntPtr userData);
38
39         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
40         internal delegate void CionClientPayloadAsyncResultCb(IntPtr result, IntPtr userData);        
41
42         [DllImport(Libraries.Cion, EntryPoint = "cion_client_create")]
43         internal static extern ErrorCode CionClientCreate(out ClientSafeHandle client, string serviceName, IntPtr security);
44
45         [DllImport(Libraries.Cion, EntryPoint = "cion_client_destory")]
46         internal static extern ErrorCode CionClientDestroy(IntPtr client);
47         
48         [DllImport(Libraries.Cion, EntryPoint = "cion_client_try_discovery")]
49         internal static extern ErrorCode CionClientTryDiscovery(ClientSafeHandle client, CionClientDiscoveredCb cb, IntPtr userData);
50         
51         [DllImport(Libraries.Cion, EntryPoint = "cion_client_stop_discovery")]
52         internal static extern ErrorCode CionClientStopDiscovery(ClientSafeHandle client);
53         
54         [DllImport(Libraries.Cion, EntryPoint = "cion_client_connect")]
55         internal static extern ErrorCode CionClientConnect(ClientSafeHandle client, PeerInfoSafeHandle peerInfo);
56
57         [DllImport(Libraries.Cion, EntryPoint = "cion_client_disconnect")]
58         internal static extern ErrorCode CionClientDisconnect(ClientSafeHandle client);
59
60         [DllImport(Libraries.Cion, EntryPoint = "cion_client_send_data")]
61         internal static extern ErrorCode CionClientSendData(ClientSafeHandle client, byte[] data, int dataSize, int timeout, out IntPtr returnData, out int returnDataSize);
62
63         [DllImport(Libraries.Cion, EntryPoint = "cion_client_send_payload_async")]
64         internal static extern ErrorCode CionClientSendPayloadAsync(ClientSafeHandle client, PayloadSafeHandle payload, CionClientPayloadAsyncResultCb cb, IntPtr userData);
65
66         [DllImport(Libraries.Cion, EntryPoint = "cion_client_add_connection_result_cb")]
67         internal static extern ErrorCode CionClientAddConnectionResultCb(ClientSafeHandle client, CionClientConnectionResultCb cb, IntPtr userData);
68
69         [DllImport(Libraries.Cion, EntryPoint = "cion_client_add_payload_recieved_cb")]
70         internal static extern ErrorCode CionClientAddPayloadReceivedCb(ClientSafeHandle client, CionClientPayloadRecievedCb cb, IntPtr userData);
71
72         [DllImport(Libraries.Cion, EntryPoint = "cion_client_add_disconnected_cb")]
73         internal static extern ErrorCode CionClientAddDisconnectedCb(ClientSafeHandle client, CionClientDisconnectedCb cb, IntPtr userData);
74     }
75 }