Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Convergence / Interop / Interop.Internal.Conv.Manager.cs
1 // Copyright 2016 by Samsung Electronics, Inc.,
2 //
3 // This software is the confidential and proprietary information
4 // of Samsung Electronics, Inc. ("Confidential Information"). You
5 // shall not disclose such Confidential Information and shall use
6 // it only in accordance with the terms of the license agreement
7 // you entered into with Samsung.
8
9 using System;
10 using System.Runtime.InteropServices;
11 using Tizen;
12 using Tizen.Convergence;
13
14 internal static partial class Interop
15 {
16     internal static partial class Internal
17     {
18         public enum ConvDiscoveryResult
19         {
20             /// <summary>
21             /// Discovery Error
22             /// </summary>
23             Error = -1,
24             /// <summary>
25             /// Discovery Success
26             /// </summary>
27             Success = 0,
28             /// <summary>
29             /// Discovery finished
30             /// </summary>
31             Finished,
32             /// <summary>
33             /// Discovery lost
34             /// </summary>
35             Lost,
36         }
37
38         internal static partial class ConvManager
39         {
40             [DllImport(Libraries.Convergence, EntryPoint = "conv_create")]
41             internal static extern int ConvCreate(out ConvManagerHandle /* conv_h */ handle);
42
43             [DllImport(Libraries.Convergence, EntryPoint = "conv_destroy")]
44             internal static extern int ConvDestroy(IntPtr /* conv_h */ handle);
45
46             [DllImport(Libraries.Convergence, EntryPoint = "conv_discovery_start")]
47             internal static extern int ConvDiscoveryStart(ConvManagerHandle /* conv_h */ handle, int timeoutSeconds, ConvDiscoveryCallback callback, IntPtr /* void */ userData);
48
49             [DllImport(Libraries.Convergence, EntryPoint = "conv_discovery_stop")]
50             internal static extern int ConvDiscoveryStop(ConvManagerHandle /* conv_h */ handle);
51
52             [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
53             internal delegate void ConvDiscoveryCallback(IntPtr /* conv_device_h */ deviceHandle, ConvDiscoveryResult /* conv_discovery_result_e */ result, IntPtr /* void */ userData);
54         }
55
56         internal class ConvManagerHandle : TizenSafeHandle
57         {
58             public ConvManagerHandle() : base()
59             {
60
61             }
62
63             public ConvManagerHandle(IntPtr handle)
64                 : base(handle)
65             {
66             }
67
68             public override void Destroy()
69             {
70                 var err = ConvManager.ConvDestroy(this.handle);
71                 if (err != (int)ConvErrorCode.None)
72                 {
73                     Log.Error(ErrorFactory.LogTag, "Failed to destroy conv manager handle");
74                     throw ErrorFactory.GetException(err);
75                 }
76             }
77         }
78     }
79 }