[NUI] Sync dalihub and Samsung TizenFX (#338)
[platform/core/csapi/tizenfx.git] / src / Tizen.Network.WiFi / Interop / Interop.WiFi.cs
1 /*
2  * Copyright (c) 2018 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.Network.WiFi;
20 using Tizen.Network.Connection;
21
22 internal static partial class Interop
23 {
24     internal static partial class WiFi
25     {
26         //Callback for async method
27         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
28         internal delegate void VoidCallback(int result, IntPtr userData);
29         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
30         internal delegate bool HandleCallback(IntPtr handle, IntPtr userData);
31
32         //Callback for event
33         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
34         internal delegate void DeviceStateChangedCallback(int deviceState, IntPtr userData);
35         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
36         internal delegate void ConnectionStateChangedCallback(int connectionState, IntPtr ap, IntPtr userData);
37         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
38         internal delegate void RssiLevelChangedCallback(int level, IntPtr userData);
39
40         //capi-network-wifi-1.0.65-19.23.armv7l
41         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_initialize_cs")]
42         internal static extern int Initialize(int tid, out SafeWiFiManagerHandle wifi);
43         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_deinitialize_cs")]
44         internal static extern int Deinitialize(int tid, IntPtr wifi);
45
46         ////Wi-Fi Manager
47         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_activate")]
48         internal static extern int Activate(SafeWiFiManagerHandle wifi, VoidCallback callback, IntPtr userData);
49         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_activate_with_wifi_picker_tested")]
50         internal static extern int ActivateWithWiFiPickerTested(SafeWiFiManagerHandle wifi, VoidCallback callback, IntPtr userData);
51         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_deactivate")]
52         internal static extern int Deactivate(SafeWiFiManagerHandle wifi, VoidCallback callback, IntPtr userData);
53         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_is_activated")]
54         internal static extern int IsActive(SafeWiFiManagerHandle wifi, out bool activated);
55         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_get_mac_address")]
56         internal static extern int GetMacAddress(SafeWiFiManagerHandle wifi, out string macAddress);
57         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_get_network_interface_name")]
58         internal static extern int GetNetworkInterfaceName(SafeWiFiManagerHandle wifi, out string interfaceName);
59         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_scan")]
60         internal static extern int Scan(SafeWiFiManagerHandle wifi, VoidCallback callback, IntPtr userData);
61         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_scan_specific_ap")]
62         internal static extern int ScanSpecificAP(SafeWiFiManagerHandle wifi, string essid, VoidCallback callback, IntPtr userData);
63         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_bssid_scan")]
64         internal static extern int BssidScan(SafeWiFiManagerHandle wifi, VoidCallback callback, IntPtr userData);
65         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_get_connected_ap")]
66         internal static extern int GetConnectedAP(SafeWiFiManagerHandle wifi, out IntPtr ap);
67         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_foreach_found_ap")]
68         internal static extern int GetForeachFoundAPs(SafeWiFiManagerHandle wifi, HandleCallback callback, IntPtr userData);
69         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_foreach_found_specific_ap")]
70         internal static extern int GetForeachFoundSpecificAPs(SafeWiFiManagerHandle wifi, HandleCallback callback, IntPtr userData);
71         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_foreach_found_bssid_ap")]
72         internal static extern int GetForeachFoundBssids(SafeWiFiManagerHandle wifi, HandleCallback callback, IntPtr userData);
73         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_connect")]
74         internal static extern int Connect(SafeWiFiManagerHandle wifi, IntPtr ap, VoidCallback callback, IntPtr userData);
75         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_disconnect")]
76         internal static extern int Disconnect(SafeWiFiManagerHandle wifi, IntPtr ap, VoidCallback callback, IntPtr userData);
77         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_connect_by_wps_pbc")]
78         internal static extern int ConnectByWpsPbc(SafeWiFiManagerHandle wifi, IntPtr ap, VoidCallback callback, IntPtr userData);
79         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_connect_by_wps_pin")]
80         internal static extern int ConnectByWpsPin(SafeWiFiManagerHandle wifi, IntPtr ap, string pin, VoidCallback callback, IntPtr userData);
81         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_connect_by_wps_pbc_without_ssid")]
82         internal static extern int ConnectByWpsPbcWithoutSsid(SafeWiFiManagerHandle wifi, VoidCallback callback, IntPtr userData);
83         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_connect_by_wps_pin_without_ssid")]
84         internal static extern int ConnectByWpsPinWithoutSsid(SafeWiFiManagerHandle wifi, string pin, VoidCallback callback, IntPtr userData);
85         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_cancel_wps")]
86         internal static extern int CancelWps(SafeWiFiManagerHandle wifi);
87         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_forget_ap")]
88         internal static extern int RemoveAP(SafeWiFiManagerHandle wifi, IntPtr ap);
89         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_forget_ap_async")]
90         internal static extern int ForgetAP(SafeWiFiManagerHandle wifi, IntPtr ap, VoidCallback callback, IntPtr userData);
91         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_update_ap")]
92         internal static extern int UpdateAP(SafeWiFiManagerHandle wifi, IntPtr ap);
93
94         //Wi-Fi Monitor
95         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_get_connection_state")]
96         internal static extern int GetConnectionState(SafeWiFiManagerHandle wifi, out int connectionState);
97         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_set_device_state_changed_cb")]
98         internal static extern int SetDeviceStateChangedCallback(SafeWiFiManagerHandle wifi, DeviceStateChangedCallback callback, IntPtr userData);
99         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_unset_device_state_changed_cb")]
100         internal static extern int UnsetDeviceStateChangedCallback(SafeWiFiManagerHandle wifi);
101         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_set_background_scan_cb")]
102         internal static extern int SetBackgroundScanCallback(SafeWiFiManagerHandle wifi, VoidCallback callback, IntPtr userData);
103         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_unset_background_scan_cb")]
104         internal static extern int UnsetBackgroundScanCallback(SafeWiFiManagerHandle wifi);
105         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_set_connection_state_changed_cb")]
106         internal static extern int SetConnectionStateChangedCallback(SafeWiFiManagerHandle wifi, ConnectionStateChangedCallback callback, IntPtr userData);
107         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_unset_connection_state_changed_cb")]
108         internal static extern int UnsetConnectionStateChangedCallback(SafeWiFiManagerHandle wifi);
109         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_set_rssi_level_changed_cb")]
110         internal static extern int SetRssiLevelchangedCallback(SafeWiFiManagerHandle wifi, RssiLevelChangedCallback callback, IntPtr userData);
111         [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_unset_rssi_level_changed_cb")]
112         internal static extern int UnsetRssiLevelchangedCallback(SafeWiFiManagerHandle wifi);
113
114         internal static class AP
115         {
116             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
117             internal delegate bool FoundBssidCallback(string bssid, int rssi, int freq, IntPtr userData);
118
119             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_create")]
120             internal static extern int Create(SafeWiFiManagerHandle wifi, string essid, out IntPtr ap);
121             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_hidden_create")]
122             internal static extern int CreateHiddenAP(SafeWiFiManagerHandle wifi, string essid, out IntPtr ap);
123             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_destroy")]
124             internal static extern int Destroy(IntPtr ap);
125             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_clone")]
126             internal static extern int Clone(out IntPtr cloned, IntPtr original);
127             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_refresh")]
128             internal static extern int Refresh(IntPtr ap);
129
130             ////Network Information
131             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_essid")]
132             internal static extern int GetEssid(SafeWiFiAPHandle ap, out IntPtr essid);
133             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_raw_ssid")]
134             internal static extern int GetRawSsid(SafeWiFiAPHandle ap, out IntPtr raw_ssid, out int length);
135             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_bssid")]
136             internal static extern int GetBssid(SafeWiFiAPHandle ap, out IntPtr bssid);
137             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_foreach_found_bssid")]
138             internal static extern int GetBssids(SafeWiFiAPHandle ap, FoundBssidCallback callback, IntPtr userData);
139             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_rssi")]
140             internal static extern int GetRssi(SafeWiFiAPHandle ap, out int rssi);
141             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_rssi_level")]
142             internal static extern int GetRssiLevel(SafeWiFiAPHandle ap, out int rssi_level);
143             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_frequency")]
144             internal static extern int GetFrequency(SafeWiFiAPHandle ap, out int frequency);
145             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_max_speed")]
146             internal static extern int GetMaxSpeed(SafeWiFiAPHandle ap, out int maxSpeed);
147             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_is_favorite")]
148             internal static extern int IsFavorite(SafeWiFiAPHandle ap, out bool isFavorite);
149             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_is_passpoint")]
150             internal static extern int IsPasspoint(SafeWiFiAPHandle ap, out bool isPasspoint);
151             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_connection_state")]
152             internal static extern int GetConnectionState(SafeWiFiAPHandle ap, out int connectionState);
153             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_ip_config_type")]
154             internal static extern int GetIPConfigType(SafeWiFiAPHandle ap, int addressFamily, out int ipConfigType);
155             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_ip_config_type")]
156             internal static extern int SetIPConfigType(SafeWiFiAPHandle ap, int addressFamily, int ipConfigType);
157             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_ip_address")]
158             internal static extern int GetIPAddress(SafeWiFiAPHandle ap, int addressFamily, out IntPtr ipAddress);
159             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_foreach_ipv6_address")]
160             internal static extern int GetAllIPv6Addresses(SafeWiFiAPHandle ap, HandleCallback callback, IntPtr userData);
161             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_countrycode")]
162             internal static extern int GetCountryCode(SafeWiFiAPHandle ap, out IntPtr code);
163             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_ip_address")]
164             internal static extern int SetIPAddress(SafeWiFiAPHandle ap, int addressFamily, string ipAddress);
165             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_subnet_mask")]
166             internal static extern int GetSubnetMask(SafeWiFiAPHandle ap, int addressFamily, out IntPtr subnetMask);
167             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_subnet_mask")]
168             internal static extern int SetSubnetMask(SafeWiFiAPHandle ap, int addressFamily, string subnetMask);
169             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_gateway_address")]
170             internal static extern int GetGatewayAddress(SafeWiFiAPHandle ap, int addressFamily, out IntPtr gatewayAddress);
171             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_gateway_address")]
172             internal static extern int SetGatewayAddress(SafeWiFiAPHandle ap, int addressFamily, string gatewayAddress);
173             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_dhcp_server_address")]
174             internal static extern int GetDhcpServerAddress(SafeWiFiAPHandle ap, AddressFamily addressFamily, out string dhcpServer);
175             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_proxy_address")]
176             internal static extern int GetProxyAddress(SafeWiFiAPHandle ap, int addressFamily, out IntPtr proxyAddress);
177             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_proxy_address")]
178             internal static extern int SetProxyAddress(SafeWiFiAPHandle ap, int addressFamily, string proxyAddress);
179             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_proxy_type")]
180             internal static extern int GetProxyType(SafeWiFiAPHandle ap, out int proxyType);
181             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_proxy_type")]
182             internal static extern int SetProxyType(SafeWiFiAPHandle ap, int proxyType);
183             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_dns_address")]
184             internal static extern int GetDnsAddress(SafeWiFiAPHandle ap, int order, int addressFamily, out IntPtr dnsAddress);
185             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_dns_address")]
186             internal static extern int SetDnsAddress(SafeWiFiAPHandle ap, int order, int addressFamily, string dnsAddress);
187             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_prefix_length")]
188             internal static extern int GetPrefixLength(SafeWiFiAPHandle ap, int addressFamily, out int length);
189             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_prefix_length")]
190             internal static extern int SetPrefixLength(SafeWiFiAPHandle ap, int addressFamily, int length);
191             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_dns_config_type")]
192             internal static extern int GetDnsConfigType(SafeWiFiAPHandle ap, int addressFamily, out int type);
193             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_dns_config_type")]
194             internal static extern int SetDnsConfigType(SafeWiFiAPHandle ap, int addressFamily, int type);
195
196             ////Security Information
197             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_security_type")]
198             internal static extern int GetSecurityType(SafeWiFiAPHandle ap, out int securityType);
199             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_security_type")]
200             internal static extern int SetSecurityType(SafeWiFiAPHandle ap, int securityType);
201             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_encryption_type")]
202             internal static extern int GetEncryptionType(SafeWiFiAPHandle ap, out int encryptionType);
203             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_encryption_type")]
204             internal static extern int SetEncryptionType(SafeWiFiAPHandle ap, int encryptionType);
205             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_is_passphrase_required")]
206             internal static extern int IsPassphraseRequired(SafeWiFiAPHandle ap, out bool required);
207             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_passphrase")]
208             internal static extern int SetPassphrase(SafeWiFiAPHandle ap, string passphrase);
209             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_is_wps_supported")]
210             internal static extern int IsWpsSupported(SafeWiFiAPHandle ap, out bool supported);
211
212             ////EAP
213             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_eap_passphrase")]
214             internal static extern int SetEapPassphrase(SafeWiFiAPHandle ap, string userName, string password);
215             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_eap_passphrase")]
216             internal static extern int GetEapPassphrase(SafeWiFiAPHandle ap, out IntPtr userName, out bool isPasswordSet);
217             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_eap_ca_cert_file")]
218             internal static extern int GetEapCaCertFile(SafeWiFiAPHandle ap, out IntPtr file);
219             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_eap_ca_cert_file")]
220             internal static extern int SetEapCaCertFile(SafeWiFiAPHandle ap, string file);
221             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_eap_client_cert_file")]
222             internal static extern int GetEapClientCertFile(SafeWiFiAPHandle ap, out IntPtr file);
223             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_eap_client_cert_file")]
224             internal static extern int SetEapClientCertFile(SafeWiFiAPHandle ap, string file);
225             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_eap_private_key_file")]
226             internal static extern int GetEapPrivateKeyFile(SafeWiFiAPHandle ap, out IntPtr file);
227             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_eap_private_key_info")]
228             internal static extern int SetEapPrivateKeyFile(SafeWiFiAPHandle ap, string file, string password);
229             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_eap_type")]
230             internal static extern int GetEapType(SafeWiFiAPHandle ap, out int eapType);
231             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_eap_type")]
232             internal static extern int SetEapType(SafeWiFiAPHandle ap, int eapType);
233             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_get_eap_auth_type")]
234             internal static extern int GetEapAuthType(SafeWiFiAPHandle ap, out int file);
235             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_ap_set_eap_auth_type")]
236             internal static extern int SetEapAuthType(SafeWiFiAPHandle ap, int file);
237         }
238
239         internal static class Config
240         {
241             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_create")]
242             internal static extern int Create(SafeWiFiManagerHandle wifi, string name, string passPhrase, int securityType, out IntPtr config);
243             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_clone")]
244             internal static extern int Clone(IntPtr origin, out IntPtr cloned);
245             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_destroy")]
246             internal static extern int Destroy(IntPtr config);
247             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_save")]
248             internal static extern int SaveConfiguration(SafeWiFiManagerHandle wifi, IntPtr config);
249             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_foreach_configuration")]
250             internal static extern int GetForeachConfiguration(SafeWiFiManagerHandle wifi, HandleCallback callback, IntPtr userData);
251             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_get_name")]
252             internal static extern int GetName(IntPtr config, out IntPtr name);
253             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_get_security_type")]
254             internal static extern int GetSecurityType(IntPtr config, out int securityType);
255             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_set_proxy_address")]
256             internal static extern int SetProxyAddress(IntPtr config, int addressFamily, string proxyAddress);
257             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_get_proxy_address")]
258             internal static extern int GetProxyAddress(IntPtr config, out int addressFamily, out IntPtr proxyAddress);
259             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_set_hidden_ap_property")]
260             internal static extern int SetHiddenAPProperty(IntPtr config, bool isHidden);
261             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_get_hidden_ap_property")]
262             internal static extern int GetHiddenAPProperty(IntPtr config, out bool isHidden);
263             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_get_eap_anonymous_identity")]
264             internal static extern int GetEapAnonymousIdentity(SafeWiFiConfigHandle config, out IntPtr anonymousIdentify);
265             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_set_eap_anonymous_identity")]
266             internal static extern int SetEapAnonymousIdentity(SafeWiFiConfigHandle config, string anonymousIdentify);
267             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_get_eap_ca_cert_file")]
268             internal static extern int GetEapCaCertFile(SafeWiFiConfigHandle config, out IntPtr caCert);
269             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_set_eap_ca_cert_file")]
270             internal static extern int SetEapCaCertFile(SafeWiFiConfigHandle config, string caCert);
271             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_get_eap_client_cert_file")]
272             internal static extern int GetEapClientCertFile(SafeWiFiConfigHandle config, out IntPtr clientCert);
273             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_set_eap_client_cert_file")]
274             internal static extern int SetEapClientCertFile(SafeWiFiConfigHandle config, string privateKey, string clientCert);
275             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_get_eap_identity")]
276             internal static extern int GetEapIdentity(SafeWiFiConfigHandle config, out IntPtr identify);
277             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_set_eap_identity")]
278             internal static extern int SetEapIdentity(SafeWiFiConfigHandle config, string identify);
279             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_get_eap_type")]
280             internal static extern int GetEapType(SafeWiFiConfigHandle config, out int eapType);
281             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_set_eap_type")]
282             internal static extern int SetEapType(SafeWiFiConfigHandle config, int eapType);
283             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_get_eap_auth_type")]
284             internal static extern int GetEapAuthType(SafeWiFiConfigHandle config, out int eapAuthType);
285             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_set_eap_auth_type")]
286             internal static extern int SetEapAuthType(SafeWiFiConfigHandle config, int eapAuthType);
287             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_get_eap_subject_match")]
288             internal static extern int GetEapSubjectMatch(SafeWiFiConfigHandle config, out IntPtr subjectMatch);
289             [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_config_set_eap_subject_match")]
290             internal static extern int SetEapSubjectMatch(SafeWiFiConfigHandle config, string subjectMatch);
291         }
292
293         internal sealed class SafeWiFiAPHandle : SafeHandle
294         {
295             public SafeWiFiAPHandle() : base(IntPtr.Zero, true)
296             {
297             }
298
299             public SafeWiFiAPHandle(IntPtr handle) : base(handle, true)
300             {
301             }
302
303             public override bool IsInvalid
304             {
305                 get
306                 {
307                     return this.handle == IntPtr.Zero;
308                 }
309             }
310
311             protected override bool ReleaseHandle()
312             {
313                 this.SetHandle(IntPtr.Zero);
314                 return true;
315             }
316         }
317
318         internal sealed class SafeWiFiConfigHandle : SafeHandle
319         {
320             public SafeWiFiConfigHandle() : base(IntPtr.Zero, true)
321             {
322             }
323
324             public SafeWiFiConfigHandle(IntPtr handle) : base(handle, true)
325             {
326             }
327
328             public override bool IsInvalid
329             {
330                 get
331                 {
332                     return this.handle == IntPtr.Zero;
333                 }
334             }
335
336             protected override bool ReleaseHandle()
337             {
338                 WiFi.Config.Destroy(this.handle);
339                 this.SetHandle(IntPtr.Zero);
340                 return true;
341             }
342         }
343
344     }
345
346     internal static partial class Libc
347     {
348         [DllImport(Libraries.Libc, EntryPoint = "free")]
349         public static extern void Free(IntPtr userData);
350     }
351 }