--- /dev/null
+bin/
+obj/
+.svace-dir
+CSCC.txt
+warnings.txt
+.gitattributes
+*~
+*.sln
+*.exe
+*.dll
+*.csproj.user
+*.lock.json
+Settings.StyleCop
+StyleCop.Cache
+.vs/
--- /dev/null
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
--- /dev/null
+// Copyright 2016 by Samsung Electronics, Inc.
+//
+// This software is the confidential and proprietary information
+// of Samsung Electronics, Inc. ("Confidential Information"). You
+// shall not disclose such Confidential Information and shall use
+// it only in accordance with the terms of the license agreement
+// you entered into with Samsung.
+
+using System;
+using System.Runtime.InteropServices;
+using Tizen.Telephony;
+using static Tizen.Telephony.CallHandle;
+
+/// <summary>
+/// Partial Interop Class
+/// </summary>
+internal static partial class Interop
+{
+ /// <summary>
+ /// Call Interop Class
+ /// </summary>
+ internal static partial class Call
+ {
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_call_get_preferred_voice_subscription")]
+ internal static extern Telephony.TelephonyError GetPreferredVoiceSubscription(IntPtr handle, out CallPreferredVoiceSubsubscription callSub);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_call_get_call_list")]
+ internal static extern Telephony.TelephonyError GetCallList(IntPtr handle, out uint count, out IntPtr callList);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_call_release_call_list")]
+ internal static extern Telephony.TelephonyError ReleaseCallList(uint count, IntPtr callList);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_call_get_handle_id")]
+ internal static extern Telephony.TelephonyError GetHandleId(IntPtr callHandle, out uint handleId);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_call_get_number")]
+ internal static extern Telephony.TelephonyError GetNumber(IntPtr callHandle, out string number);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_call_get_type")]
+ internal static extern Telephony.TelephonyError GetType(IntPtr callHandle, out CallType type);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_call_get_status")]
+ internal static extern Telephony.TelephonyError GetStatus(IntPtr callHandle, out CallStatus status);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_call_get_direction")]
+ internal static extern Telephony.TelephonyError GetDirection(IntPtr callHandle, out CallDirection direction);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_call_get_conference_status")]
+ internal static extern Telephony.TelephonyError GetConferenceStatus(IntPtr callHandle, out bool conferenceStatus);
+
+ internal sealed class SafeCallList : SafeHandle
+ {
+ public SafeCallList()
+ : base(IntPtr.Zero, true)
+ {
+ }
+
+ public SafeCallList(IntPtr handle, uint count)
+ : base(handle, true)
+ {
+ Count = count;
+ }
+
+ public override bool IsInvalid
+ {
+ get { return this.handle == IntPtr.Zero; }
+ }
+
+ protected override bool ReleaseHandle()
+ {
+ ReleaseCallList(Count, this.handle);
+ this.SetHandle(IntPtr.Zero);
+ return true;
+ }
+
+ internal uint Count;
+ }
+ }
+}
--- /dev/null
+/// Copyright 2016 by Samsung Electronics, Inc.
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+/// <summary>
+/// Partial Interop Class
+/// </summary>
+internal static partial class Interop
+{
+ /// <summary>
+ /// Libraries Interop Class
+ /// </summary>
+ internal static partial class Libraries
+ {
+ public const string Telephony = "libcapi-telephony.so.0";
+ }
+}
\ No newline at end of file
--- /dev/null
+// Copyright 2016 by Samsung Electronics, Inc.
+//
+// This software is the confidential and proprietary information
+// of Samsung Electronics, Inc. ("Confidential Information"). You
+// shall not disclose such Confidential Information and shall use
+// it only in accordance with the terms of the license agreement
+// you entered into with Samsung.
+
+using System;
+using System.Runtime.InteropServices;
+
+/// <summary>
+/// Partial Interop Class
+/// </summary>
+internal static partial class Interop
+{
+ /// <summary>
+ /// Modem Interop Class
+ /// </summary>
+ internal static partial class Modem
+ {
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_modem_get_imei")]
+ internal static extern Telephony.TelephonyError GetImei(IntPtr handle, out string imei);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_modem_get_power_status")]
+ internal static extern Telephony.TelephonyError GetPowerStatus(IntPtr handle, out Tizen.Telephony.Modem.PowerStatus status);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_modem_get_meid")]
+ internal static extern Telephony.TelephonyError GetMeid(IntPtr handle, out string meid);
+ }
+}
--- /dev/null
+// Copyright 2016 by Samsung Electronics, Inc.
+//
+// This software is the confidential and proprietary information
+// of Samsung Electronics, Inc. ("Confidential Information"). You
+// shall not disclose such Confidential Information and shall use
+// it only in accordance with the terms of the license agreement
+// you entered into with Samsung.
+
+using System;
+using System.Runtime.InteropServices;
+
+/// <summary>
+/// Partial Interop Class
+/// </summary>
+internal static partial class Interop
+{
+ /// <summary>
+ /// Network Interop Class
+ /// </summary>
+ internal static partial class Network
+ {
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_lac")]
+ internal static extern Telephony.TelephonyError GetLac(IntPtr handle, out int lac);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_cell_id")]
+ internal static extern Telephony.TelephonyError GetCellId(IntPtr handle, out int cellId);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_rssi")]
+ internal static extern Telephony.TelephonyError GetRssi(IntPtr handle, out Tizen.Telephony.Network.Rssi rssi);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_roaming_status")]
+ internal static extern Telephony.TelephonyError GetRoamingStatus(IntPtr handle, out bool status);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_mcc")]
+ internal static extern Telephony.TelephonyError GetMcc(IntPtr handle, out string mcc);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_mnc")]
+ internal static extern Telephony.TelephonyError GetMnc(IntPtr handle, out string mnc);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_network_name")]
+ internal static extern Telephony.TelephonyError GetNetworkName(IntPtr handle, out string networkName);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_type")]
+ internal static extern Telephony.TelephonyError GetType(IntPtr handle, out Tizen.Telephony.Network.Type networkType);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_ps_type")]
+ internal static extern Telephony.TelephonyError GetPsType(IntPtr handle, out Tizen.Telephony.Network.PsType psType);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_network_name_option")]
+ internal static extern Telephony.TelephonyError GetNetworkNameOption(IntPtr handle, out Tizen.Telephony.Network.NameOption networkNameOption);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_service_state")]
+ internal static extern Telephony.TelephonyError GetServiceState(IntPtr handle, out Tizen.Telephony.Network.ServiceState networkServiceState);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_default_data_subscription")]
+ internal static extern Telephony.TelephonyError GetDefaultDataSubscription(IntPtr handle, out Tizen.Telephony.Network.DefaultDataSubscription defaultSub);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_default_subscription")]
+ internal static extern Telephony.TelephonyError GetDefaultSubscription(IntPtr handle, out Tizen.Telephony.Network.DefaultSubscription defaultSub);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_selection_mode")]
+ internal static extern Telephony.TelephonyError GetSelectionMode(IntPtr handle, out Tizen.Telephony.Network.SelectionMode mode);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_tac")]
+ internal static extern Telephony.TelephonyError GetTac(IntPtr handle, out int tac);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_system_id")]
+ internal static extern Telephony.TelephonyError GetSystemId(IntPtr handle, out int sid);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_network_id")]
+ internal static extern Telephony.TelephonyError GetNetworkId(IntPtr handle, out int nid);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_base_station_id")]
+ internal static extern Telephony.TelephonyError GetBaseStationId(IntPtr handle, out int bsId);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_base_station_latitude")]
+ internal static extern Telephony.TelephonyError GetBaseStationLatitude(IntPtr handle, out int bsLatitude);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_network_get_base_station_longitude")]
+ internal static extern Telephony.TelephonyError GetBaseStationLongitude(IntPtr handle, out int bsLongitude);
+ }
+}
--- /dev/null
+// Copyright 2016 by Samsung Electronics, Inc.
+//
+// This software is the confidential and proprietary information
+// of Samsung Electronics, Inc. ("Confidential Information"). You
+// shall not disclose such Confidential Information and shall use
+// it only in accordance with the terms of the license agreement
+// you entered into with Samsung.
+
+using System;
+using System.Runtime.InteropServices;
+
+/// <summary>
+/// Partial Interop Class
+/// </summary>
+internal static partial class Interop
+{
+ /// <summary>
+ /// Sim Interop Class
+ /// </summary>
+ internal static partial class Sim
+ {
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_sim_get_icc_id")]
+ internal static extern Telephony.TelephonyError GetIccId(IntPtr handle, out string iccId);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_sim_get_operator")]
+ internal static extern Telephony.TelephonyError GetOperator(IntPtr handle, out string simOperator);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_sim_get_msin")]
+ internal static extern Telephony.TelephonyError GetMsin(IntPtr handle, out string msin);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_sim_get_spn")]
+ internal static extern Telephony.TelephonyError GetSpn(IntPtr handle, out string spn);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_sim_is_changed")]
+ internal static extern Telephony.TelephonyError IsChanged(IntPtr handle, out int isChanged);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_sim_get_state")]
+ internal static extern Telephony.TelephonyError GetState(IntPtr handle, out Tizen.Telephony.Sim.State simState);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_sim_get_application_list")]
+ internal static extern Telephony.TelephonyError GetApplicationList(IntPtr handle, out uint appList);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_sim_get_subscriber_number")]
+ internal static extern Telephony.TelephonyError GetSubscriberNumber(IntPtr handle, out string subscriberNumber);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_sim_get_subscriber_id")]
+ internal static extern Telephony.TelephonyError GetSubscriberId(IntPtr handle, out string subscriberId);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_sim_get_lock_state")]
+ internal static extern Telephony.TelephonyError GetLockState(IntPtr handle, out Tizen.Telephony.Sim.LockState lockState);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_sim_get_group_id1")]
+ internal static extern Telephony.TelephonyError GetGroupId1(IntPtr handle, out string gid1);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_sim_get_call_forwarding_indicator_state")]
+ internal static extern Telephony.TelephonyError GetCallForwardingIndicatorState(IntPtr handle, out bool state);
+ }
+}
--- /dev/null
+// Copyright 2016 by Samsung Electronics, Inc.
+//
+// This software is the confidential and proprietary information
+// of Samsung Electronics, Inc. ("Confidential Information"). You
+// shall not disclose such Confidential Information and shall use
+// it only in accordance with the terms of the license agreement
+// you entered into with Samsung.
+using System;
+using System.Runtime.InteropServices;
+using Tizen.Telephony;
+
+/// <summary>
+/// Partial Interop Class
+/// </summary>
+internal static partial class Interop
+{
+ /// <summary>
+ /// Telephony Interop Class
+ /// </summary>
+ internal static class Telephony
+ {
+ private const int TIZEN_ERROR_TELEPHONY = -0x02600000;
+ internal static string LogTag = "Tizen.Telephony";
+ internal enum TelephonyError
+ {
+ None = Tizen.Internals.Errors.ErrorCode.None,
+ OutOfMemory = Tizen.Internals.Errors.ErrorCode.OutOfMemory,
+ InvalidParameter = Tizen.Internals.Errors.ErrorCode.InvalidParameter,
+ PermissionDenied = Tizen.Internals.Errors.ErrorCode.PermissionDenied,
+ NotSupported = Tizen.Internals.Errors.ErrorCode.NotSupported,
+ OperationFailed = TIZEN_ERROR_TELEPHONY | 0x0001,
+ SIMNotAvailable = TIZEN_ERROR_TELEPHONY | 0x1001
+ };
+
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct HandleList
+ {
+ internal uint Count;
+ internal IntPtr HandleArrayPointer;
+ };
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_set_noti_cb")]
+ internal static extern TelephonyError TelephonySetNotiCb(IntPtr handle, Tizen.Telephony.ChangeNotificationEventArgs.Notification notiId, NotificationCallback cb, IntPtr userData);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_unset_noti_cb")]
+ internal static extern TelephonyError TelephonyUnsetNotiCb(IntPtr handle, Tizen.Telephony.ChangeNotificationEventArgs.Notification notiId);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_init")]
+ internal static extern TelephonyError TelephonyInit(out HandleList list);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_deinit")]
+ internal static extern TelephonyError TelephonyDeinit(ref HandleList list);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_get_state")]
+ internal static extern TelephonyError TelephonyGetState(out State state);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_set_state_changed_cb")]
+ internal static extern TelephonyError TelephonySetStateChangedCb(StateChangedCallback callback, IntPtr userData);
+
+ [DllImport(Libraries.Telephony, EntryPoint = "telephony_unset_state_changed_cb")]
+ internal static extern TelephonyError TelephonyUnsetStateChangedCb(StateChangedCallback callback);
+
+ [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
+ internal delegate void NotificationCallback(IntPtr handle, ChangeNotificationEventArgs.Notification notiId, IntPtr data, IntPtr userData);
+
+ [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
+ internal delegate void StateChangedCallback(State state, IntPtr userData);
+ }
+}
\ No newline at end of file
--- /dev/null
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Tizen.Telephony")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Tizen.Telephony")]
+[assembly: AssemblyCopyright("Copyright © 2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("14de7904-cb96-44a5-a43f-593718aaa46b")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{E87B20AE-B752-4E64-9517-4827AC42A33A}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Tizen.Telephony</RootNamespace>
+ <AssemblyName>Tizen.Telephony</AssemblyName>
+ <FileAlignment>512</FileAlignment>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\Net45\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\Net45\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup>
+ <SignAssembly>true</SignAssembly>
+ </PropertyGroup>
+ <PropertyGroup>
+ <AssemblyOriginatorKeyFile>Tizen.Telephony.snk</AssemblyOriginatorKeyFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Compile Include="Interop\Interop.Libraries.cs" />
+ <Compile Include="Interop\Interop.Telephony.cs" />
+ <Compile Include="Interop\Interop.Call.cs" />
+ <Compile Include="Interop\Interop.Network.cs" />
+ <Compile Include="Interop\Interop.Modem.cs" />
+ <Compile Include="Interop\Interop.Sim.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Tizen.Telephony\CallHandle.cs" />
+ <Compile Include="Tizen.Telephony\Call.cs" />
+ <Compile Include="Tizen.Telephony\ChangeNotificationEventArgs.cs" />
+ <Compile Include="Tizen.Telephony\ExceptionFactory.cs" />
+ <Compile Include="Tizen.Telephony\Modem.cs" />
+ <Compile Include="Tizen.Telephony\Network.cs" />
+ <Compile Include="Tizen.Telephony\Sim.cs" />
+ <Compile Include="Tizen.Telephony\SlotHandle.cs" />
+ <Compile Include="Tizen.Telephony\StateEventArgs.cs" />
+ <Compile Include="Tizen.Telephony\Telephony.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Tizen.Telephony.nuspec" />
+ <None Include="Tizen.Telephony.Net45.project.json" />
+ <None Include="Tizen.Telephony.snk" />
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath)\Tizen\Tizen.CSharp.GBS.targets" Condition="Exists('$(MSBuildExtensionsPath)\Tizen\Tizen.CSharp.GBS.targets')" />
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
\ No newline at end of file
--- /dev/null
+{
+ "dependencies": {
+ "Tizen": "1.0.0"
+ },
+ "frameworks": {
+ "net45": {}
+ },
+ "runtimes": {
+ "win": {}
+ }
+}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{14DE7904-CB96-44A5-A43F-593718AAA46B}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Tizen.Telephony</RootNamespace>
+ <AssemblyName>Tizen.Telephony</AssemblyName>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup>
+ <TargetFrameworkIdentifier>.NETStandard</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v1.6</TargetFrameworkVersion>
+ <NuGetTargetMoniker>.NETStandard,Version=v1.6</NuGetTargetMoniker>
+ <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
+ <NoStdLib>true</NoStdLib>
+ <NoWarn>$(NoWarn);1701;1702</NoWarn>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Prefer32Bit>false</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup>
+ <SignAssembly>true</SignAssembly>
+ </PropertyGroup>
+ <PropertyGroup>
+ <AssemblyOriginatorKeyFile>Tizen.Telephony.snk</AssemblyOriginatorKeyFile>
+ </PropertyGroup>
+ <ItemGroup>
+ <Compile Include="Interop\Interop.Libraries.cs" />
+ <Compile Include="Interop\Interop.Telephony.cs" />
+ <Compile Include="Interop\Interop.Call.cs" />
+ <Compile Include="Interop\Interop.Network.cs" />
+ <Compile Include="Interop\Interop.Modem.cs" />
+ <Compile Include="Interop\Interop.Sim.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Tizen.Telephony\CallHandle.cs" />
+ <Compile Include="Tizen.Telephony\Call.cs" />
+ <Compile Include="Tizen.Telephony\ChangeNotificationEventArgs.cs" />
+ <Compile Include="Tizen.Telephony\ExceptionFactory.cs" />
+ <Compile Include="Tizen.Telephony\Modem.cs" />
+ <Compile Include="Tizen.Telephony\Network.cs" />
+ <Compile Include="Tizen.Telephony\Sim.cs" />
+ <Compile Include="Tizen.Telephony\SlotHandle.cs" />
+ <Compile Include="Tizen.Telephony\StateEventArgs.cs" />
+ <Compile Include="Tizen.Telephony\Telephony.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Tizen.Telephony.nuspec" />
+ <None Include="Tizen.Telephony.project.json" />
+ <None Include="Tizen.Telephony.snk" />
+ </ItemGroup>
+ <Import Project="$(MSBuildExtensionsPath)\Tizen\Tizen.CSharp.GBS.targets" Condition="Exists('$(MSBuildExtensionsPath)\Tizen\Tizen.CSharp.GBS.targets')" />
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+ <PropertyGroup>
+ <!-- https://github.com/dotnet/corefxlab/tree/master/samples/NetCoreSample and
+ https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/target-dotnetcore-with-msbuild
+ -->
+ <!-- We don't use any of MSBuild's resolution logic for resolving the framework, so just set these two
+ properties to any folder that exists to skip the GetReferenceAssemblyPaths task (not target) and
+ to prevent it from outputting a warning (MSB3644).
+ -->
+ <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory)</_TargetFrameworkDirectories>
+ <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory)</_FullFrameworkReferenceAssemblyPaths>
+ <AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>
+<package>
+ <metadata>
+ <id>Tizen.Telephony</id>
+ <version>$version$</version>
+ <authors>Tizen Developers</authors>
+ <description>Telephony API for Tizen.Net</description>
+ <dependencies>
+ <dependency id="Tizen" version="1.0.0" />
+ </dependencies>
+ </metadata>
+</package>
--- /dev/null
+{
+ "dependencies": {
+ "NETStandard.Library": "1.6.0",
+ "Tizen": "1.0.0"
+ },
+ "frameworks": {
+ "netstandard1.6": {}
+ },
+ "runtimes": {
+ "win": {}
+ }
+}
--- /dev/null
+/// Copyright 2016 by Samsung Electronics, Inc.
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using static Interop.Telephony;
+
+namespace Tizen.Telephony
+{
+ /// <summary>
+ /// The Call API's allows you to get the voice and video call states.
+ /// It provides the List of CallHandle which can be used to get the information about call related actions.
+ /// </summary>
+ public class Call
+ {
+ /// <summary>
+ /// Public Constructor
+ /// </summary>
+ /// <param name="handle">
+ /// SlotHandle received in the Manager.Init API
+ /// </param>
+ public Call(SlotHandle handle)
+ {
+ _handle = handle._handle;
+ }
+
+ /// <summary>
+ /// Gets the current value for the preferred voice call subscription.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The currently set preferred voicecall subscription value.
+ /// </returns>
+ public CallPreferredVoiceSubsubscription PreferredVoiceSubscription
+ {
+ get
+ {
+ CallPreferredVoiceSubsubscription subs = CallPreferredVoiceSubsubscription.Unknown;
+ TelephonyError error = Interop.Call.GetPreferredVoiceSubscription(_handle, out subs);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetPreferredVoiceSubscription Failed with error " + error);
+ return CallPreferredVoiceSubsubscription.Unknown;
+ }
+
+ return subs;
+ }
+ }
+
+ /// <summary>
+ /// Gets the list of the current call.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// List of CallHandle for existing calls.
+ /// </returns>
+ public List<CallHandle> GetCallHandleList()
+ {
+ uint count;
+ _callList = new IntPtr();
+ _list.Clear();
+ TelephonyError error = Interop.Call.GetCallList(_handle, out count, out _callList);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetCallList Failed with error " + error);
+ return _list;
+ }
+
+ _callHandle.Clear();
+ IntPtr[] handleArray = new IntPtr[count];
+ Marshal.Copy(_callList, handleArray, 0, (int)count);
+ foreach (IntPtr handle in handleArray)
+ {
+ CallHandle info = new CallHandle(handle);
+ _list.Add(info);
+ }
+
+ _safeCallList = new Interop.Call.SafeCallList(_callList, count);
+ return _list;
+ }
+
+ internal IntPtr _handle;
+ private List<IntPtr> _callHandle = new List<IntPtr>();
+ private List<CallHandle> _list = new List<CallHandle>();
+ private IntPtr _callList;
+ private Interop.Call.SafeCallList _safeCallList;
+ }
+}
--- /dev/null
+/// Copyright 2016 by Samsung Electronics, Inc.
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using static Interop.Telephony;
+
+namespace Tizen.Telephony
+{
+ /// <summary>
+ /// This Class provides API's to get the information about calls.
+ /// </summary>
+ public class CallHandle
+ {
+ /// <summary>
+ /// Enumeration for the call status.
+ /// </summary>
+ public enum CallStatus
+ {
+ /// <summary>
+ /// Idle status
+ /// </summary>
+ Idle,
+ /// <summary>
+ /// Active status
+ /// </summary>
+ Active,
+ /// <summary>
+ /// Held status
+ /// </summary>
+ Held,
+ /// <summary>
+ /// Dialing status
+ /// </summary>
+ Dialing,
+ /// <summary>
+ /// Alerting status
+ /// </summary>
+ Alerting,
+ /// <summary>
+ /// Incoming status
+ /// </summary>
+ Incoming,
+ /// <summary>
+ /// Unavailable
+ /// </summary>
+ Unavailable
+ };
+
+ /// <summary>
+ /// Enumeration for the call type.
+ /// </summary>
+ public enum CallType
+ {
+ /// <summary>
+ /// Voice call
+ /// </summary>
+ Voice,
+ /// <summary>
+ /// Video call
+ /// </summary>
+ Video,
+ /// <summary>
+ /// Emergency call
+ /// </summary>
+ E911,
+ /// <summary>
+ /// Unavailable
+ /// </summary>
+ Unavailable
+ };
+
+ /// <summary>
+ /// Enumeration for the call direction.
+ /// </summary>
+ public enum CallDirection
+ {
+ /// <summary>
+ /// MO(Mobile Originated) call
+ /// </summary>
+ Mo,
+ /// <summary>
+ /// MT(Mobile Terminated) call
+ /// </summary>
+ Mt,
+ /// <summary>
+ /// Unavailable
+ /// </summary>
+ Unavailable
+ };
+
+ /// <summary>
+ /// Gets the call handle ID.
+ /// </summary>
+ /// <returns>
+ /// The id of the call handle
+ /// 0 if unable to complete the operation
+ /// </returns>
+ public uint HandleId
+ {
+ get
+ {
+ uint handleId;
+ TelephonyError error = Interop.Call.GetHandleId(_callHandle, out handleId);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetHandleId Failed with Error " + error);
+ return 0;
+ }
+
+ return handleId;
+ }
+ }
+
+ /// <summary>
+ /// Gets the call number.
+ /// </summary>
+ /// <returns>
+ /// The number of the call
+ /// empty string if unable to complete the operation
+ /// </returns>
+ public string Number
+ {
+ get
+ {
+ string number;
+ TelephonyError error = Interop.Call.GetNumber(_callHandle, out number);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetNumber Failed with Error " + error);
+ return "";
+ }
+
+ return number;
+ }
+ }
+
+ /// <summary>
+ /// Gets the call type.
+ /// </summary>
+ /// <returns>
+ /// The type of the call
+ /// </returns>
+ public CallType Type
+ {
+ get
+ {
+ CallType callType;
+ TelephonyError error = Interop.Call.GetType(_callHandle, out callType);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetType Failed with Error " + error);
+ return CallType.Unavailable;
+ }
+
+ return callType;
+ }
+ }
+
+ /// <summary>
+ /// Gets the call status.
+ /// </summary>
+ /// <returns>
+ /// The status of the call
+ /// </returns>
+ public CallStatus Status
+ {
+ get
+ {
+ CallStatus callStatus;
+ TelephonyError error = Interop.Call.GetStatus(_callHandle, out callStatus);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetStatus Failed with Error " + error);
+ return CallStatus.Unavailable;
+ }
+
+ return callStatus;
+ }
+ }
+
+ /// <summary>
+ /// Gets whether the call is MO(Mobile Originated) call or MT(Mobile Terminated).
+ /// </summary>
+ /// <returns>
+ /// The direction of the call
+ /// </returns>
+ /// <exception cref="InvalidOperationException">
+ /// This Exception can occur due to:
+ /// 1. Operation Not Supported
+ /// </exception>
+ public CallDirection Direction
+ {
+ get
+ {
+ CallDirection callDirection;
+ TelephonyError error = Interop.Call.GetDirection(_callHandle, out callDirection);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetDirection Failed with Error " + error);
+ return CallDirection.Unavailable;
+ }
+
+ return callDirection;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets whether the call is conference call or not.
+ /// </summary>
+ /// <returns>
+ /// The value whether the call is conference call or not. (true: Conference call, false: Single call)
+ /// </returns>
+ public bool ConferenceStatus
+ {
+ get
+ {
+ bool callConfStatus;
+ TelephonyError error = Interop.Call.GetConferenceStatus(_callHandle, out callConfStatus);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetConferenceStatus Failed with Error " + error);
+ return false;
+ }
+
+ return callConfStatus;
+ }
+
+ }
+
+ internal CallHandle(IntPtr handle)
+ {
+ _callHandle = handle;
+ }
+
+ private IntPtr _callHandle;
+ }
+}
--- /dev/null
+/// Copyright 2016 by Samsung Electronics, Inc.
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+namespace Tizen.Telephony
+{
+ /// <summary>
+ /// This Class contains the data related to the Notification event
+ /// </summary>
+ public class ChangeNotificationEventArgs : EventArgs
+ {
+ /// <summary>
+ /// Enumeration for Telephony notification.
+ /// </summary>
+ public enum Notification
+ {
+ /// <summary>
+ /// Notification to be invoked when the SIM card state changes.
+ /// SIM.State will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ SimStatus = 0x10,
+ /// <summary>
+ /// Notification to be invoked when the SIM call forwarding indicator state changes.
+ /// 'state(bool)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ SimCallForwardingIndicatorState,
+ /// <summary>
+ /// Notification to be invoked when the network service state changes.
+ /// Network.ServiceState will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ NetworkServiceState = 0x20,
+ /// <summary>
+ /// Notification to be invoked when the cell ID changes.
+ /// 'cell_id(int)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/location.coarse
+ /// </privilege>
+ NetworkCellid,
+ /// <summary>
+ /// Notification to be invoked when the roaming status changes.
+ /// 'roaming_status(bool)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ NetworkRoamingStatus,
+ /// <summary>
+ /// Notification to be invoked when the signal strength changes.
+ /// Network.Rssi will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ NetworkSignalstrengthLevel,
+ /// <summary>
+ /// Notification to be invoked when the network name changes.
+ /// 'network_name(string)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ NetworkNetworkName,
+ /// <summary>
+ /// Notification to be invoked when the ps type changes.
+ /// Network.PSType will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ NetworkPsType,
+ /// <summary>
+ /// Notification to be invoked when the default data subscription changes.
+ /// Network.DefaultDataSubscription will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ NetworkDefaultDataSubscription,
+ /// <summary>
+ /// Notification to be invoked when the default subscription changes.
+ /// Network.DefaultSubscription will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ NetworkDefaultSubscription,
+ /// <summary>
+ /// Notification to be invoked when the LAC (Location Area Code) changes.
+ /// 'lac(int)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/location.coarse
+ /// </privilege>
+ NetworkLac,
+ /// <summary>
+ /// Notification to be invoked when the TAC (Tracking Area Code) changes.
+ /// 'tac(int)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/location.coarse
+ /// </privilege>
+ NetworkTac,
+ /// <summary>
+ /// Notification to be invoked when the system ID changes.
+ /// 'sid(int)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/location.coarse
+ /// </privilege>
+ NetworkSystemId,
+ /// <summary>
+ /// Notification to be invoked when the network ID changes.
+ /// 'nid(int)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/location.coarse
+ /// </privilege>
+ NetworkId,
+ /// <summary>
+ /// Notification to be invoked when the base station ID changes.
+ /// 'id(int)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/location.coarse
+ /// </privilege>
+ NetworkBsId,
+ /// <summary>
+ /// Notification to be invoked when the base station latitude changes.
+ /// 'latitude(int)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/location.coarse
+ /// </privilege>
+ NetworkBsLatitude,
+ /// <summary>
+ /// Notification to be invoked when the base station longitude changes.
+ /// 'longitue(int)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/location.coarse
+ /// </privilege>
+ NetworkBsLongitude,
+ /// <summary>
+ /// Notification to be invoked when a voice call is in idle status.
+ /// 'handle id(uint)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ VoiceCallStatusIdle,
+ /// <summary>
+ /// Notification to be invoked when a voice call is in active status.
+ /// 'handle id(uint)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ VoiceCallStatusActive,
+ /// <summary>
+ /// Notification to be invoked when a voice call is in held status.
+ /// 'handle id(uint)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ VoiceCallStatusHeld,
+ /// <summary>
+ /// Notification to be invoked when a voice call is in dialing status.
+ /// 'handle id(uint)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ VoiceCallStatusDialing,
+ /// <summary>
+ /// Notification to be invoked when a voice call is in alertingstatus.
+ /// 'handle id(uint)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ VoiceCallStatusAlerting,
+ /// <summary>
+ /// Notification to be invoked when a voice call is in incoming status.
+ /// 'handle id(uint)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ VoiceCallStatusIncoming,
+ /// <summary>
+ /// Notification to be invoked when a video call is in idle status.
+ /// 'handle id(uint)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ VideoCallStatusIdle,
+ /// <summary>
+ /// Notification to be invoked when a video call is in active status.
+ /// 'handle id(uint)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ VideoCallStatusActive,
+ /// <summary>
+ /// Notification to be invoked when a video call is in dialing status.
+ /// 'handle id(uint)' will be delivered in notification data.
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ VideoCallStatusDialing,
+ /// <summary>
+ /// Notification to be invoked when a video call is in alerting status.
+ /// 'handle id(uint)' will be delivered in notification data
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ VideoCallStatusAlerting,
+ /// <summary>
+ /// Notification to be invoked when a video call is in incoming status.
+ /// 'handle id(uint)' will be delivered in notification data
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ VideoCallStatusIncoming,
+ /// <summary>
+ /// Notification to be invoked when the preferred voice subscription changes.
+ /// CallPreferredVoiceSubsubscription will be delivered in notification data
+ /// </summary>
+ /// <privilege>
+ /// http://tizen.org/privilege/telephony
+ /// </privilege>
+ CallPreferredVoiceSubscription
+ };
+
+ /// <summary>
+ /// Telephony notification type
+ /// </summary>
+ public Notification notificationType;
+
+ /// <summary>
+ /// Data as per the Notification type
+ /// </summary>
+ public object notificationData;
+
+ internal ChangeNotificationEventArgs(Notification noti, object data)
+ {
+ notificationType = noti;
+ notificationData = data;
+ }
+ }
+}
--- /dev/null
+/// Copyright 2016 by Samsung Electronics, Inc.
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+using System;
+
+namespace Tizen.Telephony
+{
+ internal static class ExceptionFactory
+ {
+ internal static Exception CreateException(Interop.Telephony.TelephonyError err)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "Error " + err);
+ Exception exp;
+ switch (err)
+ {
+ case Interop.Telephony.TelephonyError.InvalidParameter:
+ {
+ exp = new ArgumentException("Invalid Parameters Provided");
+ break;
+ }
+
+ case Interop.Telephony.TelephonyError.NotSupported:
+ {
+ exp = new InvalidOperationException("Not Supported");
+ break;
+ }
+
+ case Interop.Telephony.TelephonyError.OperationFailed:
+ {
+ exp = new InvalidOperationException("Operation Failed");
+ break;
+ }
+
+ case Interop.Telephony.TelephonyError.OutOfMemory:
+ {
+ exp = new InvalidOperationException("Out Of Memory");
+ break;
+ }
+
+ case Interop.Telephony.TelephonyError.PermissionDenied:
+ {
+ exp = new InvalidOperationException("Permission Denied");
+ break;
+ }
+
+ case Interop.Telephony.TelephonyError.SIMNotAvailable:
+ {
+ exp = new InvalidOperationException("SIM is Not Available");
+ break;
+ }
+
+ default:
+ {
+ exp = new Exception("");
+ break;
+ }
+
+ }
+
+ return exp;
+ }
+
+ }
+}
--- /dev/null
+/// Copyright 2016 by Samsung Electronics, Inc.
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using static Interop.Telephony;
+namespace Tizen.Telephony
+{
+ /// <summary>
+ /// This Class provides API's to obtain information from the modem.
+ /// </summary>
+ public class Modem
+ {
+ /// <summary>
+ /// Modem Class Constructor
+ /// </summary>
+ /// <param name="handle">
+ /// SlotHandle received in the Manager.Init API
+ /// </param>
+ public Modem(SlotHandle handle)
+ {
+ _handle = handle._handle;
+ }
+
+ /// <summary>
+ /// Enumeration for Modem Power Status.
+ /// </summary>
+ public enum PowerStatus
+ {
+ /// <summary>
+ /// Unknown
+ /// </summary>
+ Unknown = -1,
+ /// <summary>
+ /// Modem power ON
+ /// </summary>
+ On,
+ /// <summary>
+ /// Modem power OFF
+ /// </summary>
+ Off,
+ /// <summary>
+ /// Modem power RESET
+ /// </summary>
+ Reset,
+ /// <summary>
+ /// Modem power LOW
+ /// </summary>
+ Low
+ };
+
+ /// <summary>
+ /// Gets the IMEI (International Mobile Station Equipment Identity) of a mobile phone.
+ /// The IMEI number is used by a GSM network to identify valid devices and therefore can be used for stopping a stolen phone from accessing that network.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The International Mobile Station Equipment Identity
+ /// empty string if unable to complete the operation
+ /// </returns>
+ public string Imei
+ {
+ get
+ {
+ string imei;
+ TelephonyError error = Interop.Modem.GetImei(_handle, out imei);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetImei Failed with error " + error);
+ return "";
+ }
+
+ return imei;
+ }
+ }
+
+ /// <summary>
+ /// Gets the power status of the modem.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The Modem power status (0=on,1=off,2=reset,3=low)
+ /// </returns>
+ public PowerStatus CurrentPowerStatus
+ {
+ get
+ {
+ PowerStatus status;
+ TelephonyError error = Interop.Modem.GetPowerStatus(_handle, out status);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetImei Failed with error " + error);
+ return PowerStatus.Unknown;
+ }
+
+ return status;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets the MEID (Mobile Equipment Identifier) of a mobile phone. (for CDMA)
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The Mobile Equipment Identifier
+ /// empty string if unable to complete the operation
+ /// </returns>
+ public string Meid
+ {
+ get
+ {
+ string meid;
+ TelephonyError error = Interop.Modem.GetMeid(_handle, out meid);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetMeid Failed with error " + error);
+ return "";
+ }
+
+ return meid;
+ }
+
+ }
+
+ internal IntPtr _handle;
+ }
+}
--- /dev/null
+/// Copyright 2016 by Samsung Electronics, Inc.
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using static Interop.Telephony;
+namespace Tizen.Telephony
+{
+ /// <summary>
+ /// The Network class provides API's to obtain information about the current telephony service network.
+ /// </summary>
+ public class Network
+ {
+ /// <summary>
+ /// Enumeration for RSSI (Receive Signal Strength Indicator).
+ /// Rssi6 indicates the highest strength.
+ /// </summary>
+ public enum Rssi
+ {
+ /// <summary>
+ /// Strength 0
+ /// </summary>
+ Rssi0,
+ /// <summary>
+ /// Strength 1
+ /// </summary>
+ Rssi1,
+ /// <summary>
+ /// Strength 2
+ /// </summary>
+ Rssi2,
+ /// <summary>
+ /// Strength 3
+ /// </summary>
+ Rssi3,
+ /// <summary>
+ /// Strength 4
+ /// </summary>
+ Rssi4,
+ /// <summary>
+ /// Strength 5
+ /// </summary>
+ Rssi5,
+ /// <summary>
+ /// Strength 6
+ /// </summary>
+ Rssi6,
+ /// <summary>
+ /// Unavailable
+ /// </summary>
+ Unavailable
+ }
+
+ /// <summary>
+ /// Enumeration for Network Type.
+ /// </summary>
+ public enum Type
+ {
+ /// <summary>
+ /// Unknown
+ /// </summary>
+ Unknown,
+ /// <summary>
+ /// 2G GSM network type
+ /// </summary>
+ Gsm,
+ /// <summary>
+ /// 2.5G GPRS network type
+ /// </summary>
+ Gprs,
+ /// <summary>
+ /// 2.5G EDGE network type
+ /// </summary>
+ Edge,
+ /// <summary>
+ /// 3G UMTS network type
+ /// </summary>
+ Umts,
+ /// <summary>
+ /// HSDPA network type
+ /// </summary>
+ Hsdpa,
+ /// <summary>
+ /// LTE network type
+ /// </summary>
+ Lte,
+ /// <summary>
+ /// IS95A network type
+ /// </summary>
+ Is95a,
+ /// <summary>
+ /// IS95B network type
+ /// </summary>
+ Is95b,
+ /// <summary>
+ /// CDMA 1x network type
+ /// </summary>
+ Cdma1X,
+ /// <summary>
+ /// EVDO revision 0 network type
+ /// </summary>
+ EvdoRev0,
+ /// <summary>
+ /// EVDO revision A network type
+ /// </summary>
+ EvdoRevA,
+ /// <summary>
+ /// EVDO revision B network type
+ /// </summary>
+ EvdoRevB,
+ /// <summary>
+ /// EVDV network type
+ /// </summary>
+ Evdv,
+ /// <summary>
+ /// EHRPD network type
+ /// </summary>
+ Ehrpd
+ }
+
+ /// <summary>
+ /// Enumeration for PS Type.
+ /// </summary>
+ public enum PsType
+ {
+ /// <summary>
+ /// Unknown
+ /// </summary>
+ Unknown,
+ /// <summary>
+ /// HSDPA ps type
+ /// </summary>
+ Hsdpa,
+ /// <summary>
+ /// HSUPA ps type
+ /// </summary>
+ Hsupa,
+ /// <summary>
+ /// HSPA ps type
+ /// </summary>
+ Hspa,
+ /// <summary>
+ /// HSPAP ps type
+ /// </summary>
+ Hspap
+ }
+
+ /// <summary>
+ /// Enumeration for Network Service State.
+ /// </summary>
+ public enum ServiceState
+ {
+ /// <summary>
+ /// In service
+ /// </summary>
+ InService,
+ /// <summary>
+ /// Out of service
+ /// </summary>
+ OutOfService,
+ /// <summary>
+ /// Only emergency call is allowed
+ /// </summary>
+ EmergencyOnly,
+ /// <summary>
+ /// Unavailable
+ /// </summary>
+ Unavailable
+ }
+
+ /// <summary>
+ /// Enumeration for Network Name Priority.
+ /// </summary>
+ public enum NameOption
+ {
+ /// <summary>
+ /// Unknown
+ /// </summary>
+ Unknown,
+ /// <summary>
+ /// Network name displayed by SPN
+ /// </summary>
+ Spn,
+ /// <summary>
+ /// Network name displayed by Network
+ /// </summary>
+ Network,
+ /// <summary>
+ /// Network name displayed by SPN or Network
+ /// </summary>
+ Any
+ }
+
+ /// <summary>
+ /// Enumeration for the possible 'default' Data Subscriptions for Packet Switched(PS).
+ /// </summary>
+ public enum DefaultDataSubscription
+ {
+ /// <summary>
+ /// Unknown status
+ /// </summary>
+ Unknown = -1,
+ /// <summary>
+ /// SIM 1
+ /// </summary>
+ Sim1,
+ /// <summary>
+ /// SIM 2
+ /// </summary>
+ Sim2
+ }
+
+ /// <summary>
+ /// Enumeration defines possible 'default' Subscriptions for Circuit Switched(CS).
+ /// </summary>
+ public enum DefaultSubscription
+ {
+ /// <summary>
+ /// Unknown status
+ /// </summary>
+ Unknown = -1,
+ /// <summary>
+ /// SIM 1 network
+ /// </summary>
+ Sim1,
+ /// <summary>
+ /// SIM 2 network
+ /// </summary>
+ Sim2
+ }
+
+ /// <summary>
+ /// Enumeration for network selection mode.
+ /// </summary>
+ public enum SelectionMode
+ {
+ /// <summary>
+ /// Automatic mode
+ /// </summary>
+ Automatic,
+ /// <summary>
+ /// Manual mode
+ /// </summary>
+ Manual,
+ /// <summary>
+ /// Unavailable
+ /// </summary>
+ Unavailable
+ }
+
+ /// <summary>
+ /// Network Class Constructor
+ /// </summary>
+ /// <param name="handle">
+ /// SlotHandle received in the Manager.Init API
+ /// </param>
+ public Network(SlotHandle handle)
+ {
+ _handle = handle._handle;
+ }
+
+ /// <summary>
+ /// Gets the LAC (Location Area Code) of the current location.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/location.coarse
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in GSM / WCDMA network.
+ /// </remarks>
+ /// <returns>
+ /// The Location Area Code, -1 if unknown
+ /// </returns>
+ public int Lac
+ {
+ get
+ {
+ int lac;
+ TelephonyError error = Interop.Network.GetLac(_handle, out lac);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetLac Failed with error " + error);
+ return -1;
+ }
+
+ Log.Info(Interop.Telephony.LogTag, "Lac Value " + lac);
+ return lac;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets the cell ID of the current location.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/location.coarse
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in GSM / WCDMA / LTE network.
+ /// </remarks>
+ /// <returns>
+ /// The cell identification number, -1 if unknown
+ /// </returns>
+ public int CellId
+ {
+ get
+ {
+ int cellId;
+ TelephonyError error = Interop.Network.GetCellId(_handle, out cellId);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetCellId Failed with error " + error);
+ return -1;
+ }
+
+ Log.Info(Interop.Telephony.LogTag, "CellId Value " + cellId);
+ return cellId;
+ }
+ }
+
+ /// <summary>
+ /// Gets the RSSI (Received Signal Strength Indicator).
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The Received Signal Strength Indicator
+ /// Higher the received number, the stronger the signal strength.
+ /// </returns>
+ public Rssi CurrentRssi
+ {
+ get
+ {
+ Rssi currentRssi;
+ TelephonyError error = Interop.Network.GetRssi(_handle, out currentRssi);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetRssi Failed with error " + error);
+ return Rssi.Unavailable;
+ }
+
+ Log.Info(Interop.Telephony.LogTag, "CurrentRssi Value " + currentRssi);
+ return currentRssi;
+ }
+ }
+
+ /// <summary>
+ /// Gets the roaming state of the current registered network.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// true if roaming, otherwise false if not roaming
+ /// </returns>
+ public bool RoamingStatus
+ {
+ get
+ {
+ bool roamingStatus;
+ TelephonyError error = Interop.Network.GetRoamingStatus(_handle, out roamingStatus);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetRoamingStatus Failed with error " + error);
+ return false;
+ }
+
+ return roamingStatus;
+ }
+ }
+
+ /// <summary>
+ /// Gets the MCC (Mobile Country Code) of the current registered network.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in GSM / WCDMA / LTE network.
+ /// </remarks>
+ /// <returns>
+ /// The Mobile Country Code (three digits) Mobile Country Code (MCC) identifies the country where the cell is being used.
+ /// empty string if unknown.
+ /// </returns>
+ public string Mcc
+ {
+ get
+ {
+ string mcc;
+ TelephonyError error = Interop.Network.GetMcc(_handle, out mcc);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetMcc Failed with error " + error);
+ return "";
+ }
+
+ return mcc;
+ }
+ }
+
+ /// <summary>
+ /// Gets the MNC (Mobile Network Code) of the current registered network.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in GSM / WCDMA / LTE network.
+ /// </remarks>
+ /// <returns>
+ /// The Mobile Network Code (three digits) The Mobile Network Code (MNC) identifies the mobile phone operator and network provider.
+ /// empty string if unknown.
+ /// </returns>
+ public string Mnc
+ {
+ get
+ {
+ string mnc;
+ TelephonyError error = Interop.Network.GetMnc(_handle, out mnc);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetMnc Failed with error " + error);
+ return "";
+ }
+
+ return mnc;
+ }
+ }
+
+ /// <summary>
+ /// Gets the name of the current registered network.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in GSM / WCDMA / LTE network.
+ /// </remarks>
+ /// <returns>
+ /// The name of the current registered network
+ /// empty string if unknown.
+ /// </returns>
+ public string NetworkName
+ {
+ get
+ {
+ string networkName;
+ TelephonyError error = Interop.Network.GetNetworkName(_handle, out networkName);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetNetworkName Failed with error " + error);
+ return "";
+ }
+
+ return networkName;
+ }
+ }
+
+ /// <summary>
+ /// Gets the network service type of the current registered network.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in case network is in service.
+ /// </remarks>
+ /// <returns>
+ /// The network service type
+ /// </returns>
+ public Type NetworkType
+ {
+ get
+ {
+ Type networkType;
+ TelephonyError error = Interop.Network.GetType(_handle, out networkType);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetType Failed with error " + error);
+ return Type.Unknown;
+ }
+
+ return networkType;
+ }
+ }
+
+ /// <summary>
+ /// Gets the packet service type of the current registered network.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in HSDPA network.
+ /// </remarks>
+ /// <returns>
+ /// The type of packet service
+ /// </returns>
+ public PsType NetworkPsType
+ {
+ get
+ {
+ PsType networkPsType;
+ TelephonyError error = Interop.Network.GetPsType(_handle, out networkPsType);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetPsType Failed with error " + error);
+ return PsType.Unknown;
+ }
+
+ return networkPsType;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets the network name option of the current registered network.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The network name display option
+ /// </returns>
+ public NameOption NetworkNameOption
+ {
+ get
+ {
+ NameOption networkNameOption;
+ TelephonyError error = Interop.Network.GetNetworkNameOption(_handle, out networkNameOption);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetNetworkNameOption Failed with error " + error);
+ return NameOption.Unknown;
+ }
+
+ return networkNameOption;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets the current network state of the telephony service.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The current network state
+ /// </returns>
+ public ServiceState NetworkServiceState
+ {
+ get
+ {
+ ServiceState networkServiceState;
+ TelephonyError error = Interop.Network.GetServiceState(_handle, out networkServiceState);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetServiceState Failed with error " + error);
+ return ServiceState.Unavailable;
+ }
+
+ return networkServiceState;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets the current default subscription for data service (Packet Switched).
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returnns>
+ /// The current default data subscription
+ /// </returnns>
+ public DefaultDataSubscription NetworkDefaultDataSubscription
+ {
+ get
+ {
+ DefaultDataSubscription networkDefaultDataSubs;
+ TelephonyError error = Interop.Network.GetDefaultDataSubscription(_handle, out networkDefaultDataSubs);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetDefaultDataSubscription Failed with error " + error);
+ return DefaultDataSubscription.Unknown;
+ }
+
+ return networkDefaultDataSubs;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets the current default subscription for voice service (Circuit Switched).
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returnns>
+ /// The current default voice subscription
+ /// </returnns>
+ public DefaultSubscription NetworkDefaultSubscription
+ {
+ get
+ {
+ DefaultSubscription networkDefaultSubscription;
+ TelephonyError error = Interop.Network.GetDefaultSubscription(_handle, out networkDefaultSubscription);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetDefaultSubscription Failed with error " + error);
+ return DefaultSubscription.Unknown;
+ }
+
+ return networkDefaultSubscription;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets the network selection mode.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The network selection mode.
+ /// </returns>
+ public SelectionMode NetworkSelectionMode
+ {
+ get
+ {
+ SelectionMode networkSelectionMode;
+ TelephonyError error = Interop.Network.GetSelectionMode(_handle, out networkSelectionMode);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetSelectionMode Failed with error " + error);
+ return SelectionMode.Unavailable;
+ }
+
+ return networkSelectionMode;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets the TAC (Tracking Area Code) of the current location.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in LTE network.
+ /// </remarks>
+ /// <returns>
+ /// The Tracking Area Code
+ /// -1 if unknown
+ /// </returns>
+ public int Tac
+ {
+ get
+ {
+ int tac;
+ TelephonyError error = Interop.Network.GetTac(_handle, out tac);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetTac Failed with error " + error);
+ return -1;
+ }
+
+ return tac;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets the system ID of the current location.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in CDMA network.
+ /// </remarks>
+ /// <returns>
+ /// The system ID
+ /// -1 if unknown
+ /// </returns>
+ public int SystemId
+ {
+ get
+ {
+ int systemId;
+ TelephonyError error = Interop.Network.GetSystemId(_handle, out systemId);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetSystemId Failed with error " + error);
+ return -1;
+ }
+
+ return systemId;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets the network ID of the current location.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/location.coarse
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in CDMA network.
+ /// </remarks>
+ /// <returns>
+ /// The network ID
+ /// -1 if unknown
+ /// </returns>
+ public int NetworkId
+ {
+ get
+ {
+ int networkId;
+ TelephonyError error = Interop.Network.GetNetworkId(_handle, out networkId);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetNetworkId Failed with error " + error);
+ return -1;
+ }
+
+ return networkId;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets the base station ID of the current location.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/location.coarse
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in CDMA network.
+ /// </remarks>
+ /// <returns>
+ /// The base station ID
+ /// -1 if unknown
+ /// </returns>
+
+ public int BaseStationId
+ {
+ get
+ {
+ int baseStationId;
+ TelephonyError error = Interop.Network.GetBaseStationId(_handle, out baseStationId);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetBaseStationId Failed with error " + error);
+ return -1;
+ }
+
+ return baseStationId;
+ }
+
+ }
+
+ /// <summary>
+ /// Gets the base station latitude of the current location.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/location.coarse
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in CDMA network.
+ /// </remarks>
+ /// <returns>
+ /// The base station latitude
+ /// 0x7FFFFFFF if unknown
+ /// </returns>
+ public int BaseStationLatitude
+ {
+ get
+ {
+ int baseStationLatitude;
+ TelephonyError error = Interop.Network.GetBaseStationLatitude(_handle, out baseStationLatitude);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetBaseStationLatitude Failed with error " + error);
+ return 0x7FFFFFFF;
+ }
+
+ return baseStationLatitude;
+ }
+ }
+
+ /// <summary>
+ /// Gets the base station longitude of the current location.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/location.coarse
+ /// </priviledge>
+ /// <remarks>
+ /// This API can be used in CDMA network.
+ /// </remarks>
+ /// <returns>
+ /// The base station latitude
+ /// 0x7FFFFFFF if unknown
+ /// </returns>
+ public int BaseStationLongitude
+ {
+ get
+ {
+ int baseStationLongitude;
+ TelephonyError error = Interop.Network.GetBaseStationLongitude(_handle, out baseStationLongitude);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetBaseStationLongitude Failed with error " + error);
+ return 0x7FFFFFFF;
+ }
+
+ return baseStationLongitude;
+ }
+ }
+
+ internal IntPtr _handle;
+ }
+}
--- /dev/null
+/// Copyright 2016 by Samsung Electronics, Inc.
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using static Interop.Telephony;
+
+namespace Tizen.Telephony
+{
+ /// <summary>
+ /// This Class provides API's that allows you to extract information stored on a SIM card
+ /// </summary>
+ public class Sim
+ {
+ /// <summary>
+ /// Enumeration for the state of SIM card.
+ /// </summary>
+ public enum State
+ {
+ /// <summary>
+ /// SIM is not available on this device
+ /// </summary>
+ Unavailable,
+ /// <summary>
+ /// SIM is locked
+ /// </summary>
+ Locked,
+ /// <summary>
+ /// SIM is available on this device (SIM is not locked)
+ /// </summary>
+ Available,
+ /// <summary>
+ /// SIM is in transition between states
+ /// </summary>
+ Unknown
+ }
+
+ /// <summary>
+ /// Enumeration for the lock state of SIM card.
+ /// </summary>
+ public enum LockState
+ {
+ /// <summary>
+ /// SIM is not in lock
+ /// </summary>
+ Unknown,
+ /// <summary>
+ /// SIM is PIN(Personal Identification Number) locked
+ /// </summary>
+ PinRequired,
+ /// <summary>
+ /// SIM is PUK(Personal Unblocking Code) locked
+ /// </summary>
+ PukRequired,
+ /// <summary>
+ /// SIM is permanently blocked(All the attempts for PIN/PUK failed)
+ /// </summary>
+ PermLocked,
+ /// <summary>
+ /// SIM is NCK(Network Control Key) locked
+ /// </summary>
+ NckRequired
+ }
+
+ /// <summary>
+ /// Enumeration for the type of SIM card.
+ /// </summary>
+ public enum ApplicationType
+ {
+ /// <summary>
+ /// SIM(GSM) Application
+ /// </summary>
+ Sim = 0x01,
+ /// <summary>
+ /// USIM Application
+ /// </summary>
+ Usim = 0x02,
+ /// <summary>
+ /// CDMA Application
+ /// </summary>
+ Csim = 0x04,
+ /// <summary>
+ /// ISIM Application
+ /// </summary>
+ Isim = 0x08
+ }
+
+ /// <summary>
+ /// Sim Class Constructor
+ /// </summary>
+ /// <param name="handle">
+ /// SlotHandle received in the Manager.Init API
+ /// </param>
+ public Sim(SlotHandle handle)
+ {
+ _handle = handle._handle;
+ }
+
+ /// <summary>
+ /// Gets the Integrated Circuit Card IDentification (ICC-ID).
+ /// The Integrated Circuit Card Identification number internationally identifies SIM cards.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The Integrated Circuit Card Identification
+ /// empty string if unable to complete the operation
+ /// </returns>
+ /// <precondition>
+ /// The SIM state must be Available
+ /// </precondition>
+ public string IccId
+ {
+ get
+ {
+ string iccId;
+ TelephonyError error = Interop.Sim.GetIccId(_handle, out iccId);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetIccId Failed with error " + error);
+ return "";
+ }
+
+ return iccId;
+ }
+ }
+
+ /// <summary>
+ /// Gets the SIM Operator (MCC [3 digits] + MNC [2~3 digits]).
+ /// The Operator is embedded in the SIM card.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The SIM Operator
+ /// empty string if unable to complete the operation
+ /// </returns>
+ /// <precondition>
+ /// The SIM state must be Available
+ /// </precondition>
+ public string Operator
+ {
+ get
+ {
+ string simOperator;
+ TelephonyError error = Interop.Sim.GetOperator(_handle, out simOperator);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetOperator Failed with error " + error);
+ return "";
+ }
+
+ return simOperator;
+ }
+ }
+
+ /// <summary>
+ /// Gets the Mobile Subscription Identification Number (MSIN [9~10 digits]) of the SIM provider.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The Mobile Subscription Identification Number
+ /// empty string if unable to complete the operation
+ /// </returns>
+ /// <precondition>
+ /// The SIM state must be Available
+ /// </precondition>
+ public string Msin
+ {
+ get
+ {
+ string msin;
+ TelephonyError error = Interop.Sim.GetMsin(_handle, out msin);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetMsin Failed with error " + error);
+ return "";
+ }
+
+ return msin;
+ }
+ }
+
+ /// <summary>
+ /// Gets the Service Provider Name (SPN) of the SIM card.
+ /// Gets Service Provider Name embedded in the SIM card.If this value is not stored in SIM card, empty string will be returned.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The Service Provider Name
+ /// empty string if unable to complete the operation
+ /// </returns>
+ /// <precondition>
+ /// The SIM state must be Available
+ /// </precondition>
+ public string Spn
+ {
+ get
+ {
+ string spn;
+ TelephonyError error = Interop.Sim.GetSpn(_handle, out spn);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetSpn Failed with error " + error);
+ return "";
+ }
+
+ return spn;
+ }
+ }
+
+ /// <summary>
+ /// Checks whether the current SIM card is different from the previous SIM card.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// true if the current SIM card is different from the previous SIM card, otherwise false if the SIM card is not changed
+ /// </returns>
+ /// <precondition>
+ /// The SIM state must be Available
+ /// </precondition>
+ public bool IsChanged
+ {
+ get
+ {
+ int ischanged;
+ bool isChanged = false; ;
+ TelephonyError error = Interop.Sim.IsChanged(_handle, out ischanged);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "IsChanged Failed with error " + error);
+ return false;
+ }
+
+ if (ischanged > 0)
+ {
+ isChanged = true;
+ }
+
+ return isChanged;
+ }
+ }
+
+ /// <summary>
+ /// Gets the state of the SIM.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The current state of the SIM
+ /// </returns>
+ public State CurrentState
+ {
+ get
+ {
+ State currentState;
+ TelephonyError error = Interop.Sim.GetState(_handle, out currentState);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetState Failed with error " + error);
+ return State.Unavailable;
+ }
+
+ return currentState;
+ }
+ }
+
+ /// <summary>
+ /// Gets the list of application on UICC.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The masking value for below values are provided by the enum ApplicationType
+ /// 0 if unable to complete the operation
+ /// </returns>
+ /// <precondition>
+ /// The SIM state must be Available
+ /// </precondition>
+ public uint ApplicationList
+ {
+ get
+ {
+ uint appList;
+ TelephonyError error = Interop.Sim.GetApplicationList(_handle, out appList);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetApplicationList Failed with error " + error);
+ return 0;
+ }
+
+ return appList;
+ }
+ }
+
+ /// <summary>
+ /// Gets subscriber number embedded in the SIM card. This value contains MSISDN related to the subscriber.
+ /// If this value is not stored in SIM card, empty string will be returned.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The subscriber number in the SIM
+ /// empty string if unable to complete the operation
+ /// </returns>
+ /// <precondition>
+ /// The SIM state must be Available
+ /// </precondition>
+ public string SubscriberNumber
+ {
+ get
+ {
+ string subscriberNumber;
+ TelephonyError error = Interop.Sim.GetSubscriberNumber(_handle, out subscriberNumber);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetSubscriberNumber Failed with error " + error);
+ return "";
+ }
+
+ return subscriberNumber;
+ }
+ }
+
+ /// <summary>
+ /// Gets the Subscriber ID.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The subscriber ID
+ /// empty string if unable to complete the operation
+ /// </returns>
+ /// <precondition>
+ /// The SIM state must be Available
+ /// </precondition>
+ public string SubscriberId
+ {
+ get
+ {
+ string subscriberId;
+ TelephonyError error = Interop.Sim.GetSubscriberId(_handle, out subscriberId);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetSubscriberId Failed with error " + error);
+ return "";
+ }
+
+ return subscriberId;
+ }
+ }
+
+ /// <summary>
+ /// Gets the lock state of the SIM.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The current lock state of the SIM
+ /// </returns>
+ /// <precondition>
+ /// The SIM state must be Available
+ /// </precondition>
+ public LockState CurrentLockState
+ {
+ get
+ {
+ LockState currentLockState;
+ TelephonyError error = Interop.Sim.GetLockState(_handle, out currentLockState);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetLockState Failed with error " + error);
+ return LockState.Unknown;
+ }
+
+ return currentLockState;
+ }
+ }
+
+ /// <summary>
+ /// Gets the GID1 (Group Identifier Level 1).
+ /// Gets Group Identifier Level 1(GID1) embedded in the SIM card.If this value is not stored in SIM card, empty string will be returned.
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The GID1 (Group Identifier Level 1)
+ /// empty string if unable to complete the operation
+ /// </returns>
+ /// <precondition>
+ /// The SIM state must be Available
+ /// </precondition>
+ public string GroupId1
+ {
+ get
+ {
+ string groupId1;
+ TelephonyError error = Interop.Sim.GetGroupId1(_handle, out groupId1);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetGroupId1 Failed with error " + error);
+ return "";
+ }
+
+ return groupId1;
+ }
+ }
+
+ /// <summary>
+ /// Gets the call forwarding indicator state of the SIM.
+ /// If the state is true, incoming call will be forwarded to the selected number.state indicates the CFU(Call Forwarding Unconditional) indicator status - Voice. (3GPP TS 31.102 4.2.64 EF CFIS)
+ /// </summary>
+ /// <priviledge>
+ /// http://tizen.org/privilege/telephony
+ /// </priviledge>
+ /// <returns>
+ /// The value whether incoming call will be forwarded or not. (true: forwarded, false: not forwarded)
+ /// </returns>
+ /// <precondition>
+ /// The SIM state must be Available
+ /// </precondition>
+ public bool CallForwardingIndicatorState
+ {
+ get
+ {
+ bool callForwardingIndicatorState;
+ TelephonyError error = Interop.Sim.GetCallForwardingIndicatorState(_handle, out callForwardingIndicatorState);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetCallForwardingIndicatorState Failed with error " + error);
+ return false;
+ }
+
+ return callForwardingIndicatorState;
+ }
+ }
+
+ internal IntPtr _handle;
+ }
+}
--- /dev/null
+/// Copyright 2016 by Samsung Electronics, Inc.
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+
+namespace Tizen.Telephony
+{
+ public class SlotHandle
+ {
+ /// <summary>
+ /// Event Handler for Receiving the Telephony State Changes
+ /// this event will be triggered for the NotificationId's given in the SetNotificationId API
+ /// </summary>
+ public event EventHandler<ChangeNotificationEventArgs> ChangeNotification;
+
+ /// <summary>
+ /// The Notification Id's for which the ChangeNotification event will be triggered
+ /// </summary>
+ /// <param name="list">
+ /// The List of Notification Id's for which the ChangeNotification event will be triggered
+ /// </param>
+ /// <exception cref="InvalidOperationException">
+ /// This Exception can occur due to:
+ /// 1. Operation Not Supported
+ /// 2. Operation Failed
+ /// </exception>
+ public void SetNotificationId(List<ChangeNotificationEventArgs.Notification> list)
+ {
+ try
+ {
+ foreach (ChangeNotificationEventArgs.Notification n in list)
+ {
+ SetCallback(n);
+ }
+ }
+ catch (Exception e)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "SetNotificationId Failed with Error " + e.ToString());
+ throw e;
+ }
+ }
+
+ /// <summary>
+ /// The Notification Id's for which the ChangeNotification event will not be triggered
+ /// </summary>
+ /// <param name="list">
+ /// The List of Notification Id's for which the ChangeNotification event will be not be triggered
+ /// </param>
+ /// <exception cref="InvalidOperationException">
+ /// This Exception can occur due to:
+ /// 1. Operation Not Supported
+ /// 2. Operation Failed
+ /// </exception>
+ public void RemoveNotificationId(List<ChangeNotificationEventArgs.Notification> list)
+ {
+ foreach (ChangeNotificationEventArgs.Notification n in list)
+ {
+ Interop.Telephony.TelephonyError error = Interop.Telephony.TelephonyUnsetNotiCb(_handle, n);
+ if (error != Interop.Telephony.TelephonyError.None)
+ {
+ throw ExceptionFactory.CreateException(error);
+ }
+ }
+ }
+
+ internal SlotHandle(IntPtr handle)
+ {
+ _handle = handle;
+ }
+
+ internal IntPtr Handle
+ {
+ get
+ {
+ return _handle;
+ }
+ }
+
+ internal IntPtr _handle;
+ private void SetCallback(ChangeNotificationEventArgs.Notification n)
+ {
+ Interop.Telephony.NotificationCallback NotificationDelegate = (IntPtr handle, ChangeNotificationEventArgs.Notification notiId, IntPtr data, IntPtr userData) =>
+ {
+ SlotHandle simHandle = Manager.FindHandle(handle);
+ object notiData = null;
+ switch (notiId)
+ {
+ case ChangeNotificationEventArgs.Notification.SimStatus:
+ {
+ notiData = (Sim.State)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.SimCallForwardingIndicatorState:
+ {
+ notiData = ((Marshal.ReadInt32(data) == 0) ? false : true);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkServiceState:
+ {
+ notiData = (Network.ServiceState)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkCellid:
+ {
+ notiData = Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkRoamingStatus:
+ {
+ notiData = (Marshal.ReadInt32(data) == 0) ? false : true;
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkSignalstrengthLevel:
+ {
+ notiData = (Network.Rssi)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkNetworkName:
+ {
+ notiData = Marshal.PtrToStringAnsi(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkPsType:
+ {
+ notiData = (Network.PsType)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkDefaultDataSubscription:
+ {
+ notiData = (Network.DefaultDataSubscription)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkDefaultSubscription:
+ {
+ notiData = (Network.DefaultSubscription)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkLac:
+ {
+ notiData = Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkTac:
+ {
+ notiData = Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkSystemId:
+ {
+ notiData = Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkId:
+ {
+ notiData = Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkBsId:
+ {
+ notiData = Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkBsLatitude:
+ {
+ notiData = Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.NetworkBsLongitude:
+ {
+ notiData = Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.VoiceCallStatusIdle:
+ {
+ notiData = (uint)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.VoiceCallStatusActive:
+ {
+ notiData = (uint)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.VoiceCallStatusHeld:
+ {
+ notiData = (uint)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.VoiceCallStatusDialing:
+ {
+ notiData = (uint)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.VoiceCallStatusAlerting:
+ {
+ notiData = (uint)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.VoiceCallStatusIncoming:
+ {
+ notiData = (uint)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.VideoCallStatusIdle:
+ {
+ notiData = (uint)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.VideoCallStatusActive:
+ {
+ notiData = (uint)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.VideoCallStatusDialing:
+ {
+ notiData = (uint)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.VideoCallStatusAlerting:
+ {
+ notiData = (uint)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.VideoCallStatusIncoming:
+ {
+ notiData = (uint)Marshal.ReadInt32(data);
+ break;
+ }
+
+ case ChangeNotificationEventArgs.Notification.CallPreferredVoiceSubscription:
+ {
+ notiData = (CallPreferredVoiceSubsubscription)Marshal.ReadInt32(data);
+ break;
+ }
+
+ }
+
+ ChangeNotificationEventArgs args = new ChangeNotificationEventArgs(notiId, notiData);
+ ChangeNotification?.Invoke(simHandle, args);
+ };
+ _changeNotificationList.Add(NotificationDelegate);
+
+ Interop.Telephony.TelephonyError error = Interop.Telephony.TelephonySetNotiCb(_handle, n, NotificationDelegate, IntPtr.Zero);
+ if (error != Interop.Telephony.TelephonyError.None)
+ {
+ Exception e = ExceptionFactory.CreateException(error);
+ // Check if error is Invalid Parameter then hide the error
+ if (e is ArgumentException)
+ {
+ e = new InvalidOperationException("Internal Error Occured");
+ }
+
+ throw e;
+ }
+ }
+
+ private List<Interop.Telephony.NotificationCallback> _changeNotificationList = new List<Interop.Telephony.NotificationCallback>();
+ }
+}
--- /dev/null
+/// Copyright 2016 by Samsung Electronics, Inc.
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+namespace Tizen.Telephony
+{
+ /// <summary>
+ /// This class contain the data related to the State changed event
+ /// </summary>
+ public class StateEventArgs : EventArgs
+ {
+ /// <summary>
+ /// The Current State
+ /// </summary>
+ public State currentState;
+
+ internal StateEventArgs(State s)
+ {
+ currentState = s;
+ }
+ }
+}
--- /dev/null
+/// Copyright 2016 by Samsung Electronics, Inc.,
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using static Interop.Telephony;
+
+namespace Tizen.Telephony
+{
+ /// <summary>
+ /// Enumeration for the telephony state.
+ /// </summary>
+ public enum State
+ {
+ /// <summary>
+ /// Telephony state is not ready
+ /// </summary>
+ NotReady,
+ /// <summary>
+ /// Telephony state is ready
+ /// </summary>
+ Ready,
+ /// <summary>
+ /// Unavailable
+ /// </summary>
+ Unavailable
+ };
+
+ /// <summary>
+ /// Enumeration for the preferred voice call subscription.
+ /// </summary>
+ public enum CallPreferredVoiceSubsubscription
+ {
+ /// <summary>
+ /// Unknown status
+ /// </summary>
+ Unknown = -1,
+ /// <summary>
+ /// Current network
+ /// </summary>
+ CurrentNetwork = 0,
+ /// <summary>
+ /// ASK Always
+ /// </summary>
+ AskAlways,
+ /// <summary>
+ /// SIM 1
+ /// </summary>
+ Sim1,
+ /// <summary>
+ /// SIM 2
+ /// </summary>
+ Sim2
+ };
+
+ /// <summary>
+ /// This Class provides API's to Initialize and Deinitialize the framework
+ /// it also provides API's to get the SlotHandle's which can then be used to get other Network/Sim/Call/Modem Information.
+ /// </summary>
+ public static class Manager
+ {
+ /// <summary>
+ /// Event Handler to be invoked when the telephony state changes.
+ /// </summary>
+ public static event EventHandler<StateEventArgs> StateChanged
+ {
+ add
+ {
+ if (_stateChanged == null)
+ {
+ Interop.Telephony.TelephonyError error = Interop.Telephony.TelephonySetStateChangedCb(stateDelegate, IntPtr.Zero);
+ if (error != TelephonyError.None)
+ {
+ Log.Error(LogTag, "Add StateChanged Failed with Error: " + error);
+ }
+
+ else
+ {
+ _stateChanged += value;
+ }
+
+ }
+ }
+
+ remove
+ {
+ _stateChanged -= value;
+ if (_stateChanged == null)
+ {
+ Interop.Telephony.TelephonyError error = Interop.Telephony.TelephonyUnsetStateChangedCb(stateDelegate);
+ if (error != TelephonyError.None)
+ {
+ Log.Error(LogTag, "Remove StateChanged Failed with Error: " + error);
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// Acquires the Number of available handles to use the telephony API.
+ /// </summary>
+ /// <returns>
+ /// A List of Telephony handles.
+ /// You will get 2 SlotHandles in case of dual SIM device.
+ /// where,SlotHandle at Index '0' represents Primary SIM and Index '1' represents Secondary SIM.
+ /// </returns>
+ /// <exception cref="InvalidOperationException">
+ /// This Exception can will be generated in the following cases
+ /// 1. System is out of memory
+ /// 2. If the operation is not supported on device
+ /// 3. If the Operation Failed
+ /// </exception>
+ public static List<SlotHandle> Init()
+ {
+ //DeInitialize Previous Handles if present
+ if (_isInitialized)
+ {
+ Deinit();
+ }
+
+ TelephonyError err = Interop.Telephony.TelephonyInit(out _handleList);
+ if (err != TelephonyError.None)
+ {
+ Exception e = ExceptionFactory.CreateException(err);
+ // Check if error is Invalid Parameter then hide the error
+ if (e is ArgumentException)
+ {
+ e = new InvalidOperationException("Internal Error Occured");
+ }
+
+ throw e;
+ }
+
+ int offset = 0;
+ for (int i = 0; i < _handleList.Count; i++)
+ {
+ _telephonyHandle.Add(new SlotHandle(Marshal.ReadIntPtr(_handleList.HandleArrayPointer, offset)));
+ offset += Marshal.SizeOf(_handleList.HandleArrayPointer);
+ }
+
+ _isInitialized = true;
+ Tizen.Log.Info(Interop.Telephony.LogTag, "Returning the number of sims " + _handleList.Count);
+ return _telephonyHandle;
+ }
+
+ /// <summary>
+ /// Deinitializes the telephony handles.
+ /// </summary>
+ /// <exception cref="InvalidOperationException">
+ /// This Exception can be generated in the following cases
+ /// 1. If the operation is not supported on device
+ /// 2. If the Operation Failed
+ /// </exception>
+ public static void Deinit()
+ {
+ TelephonyError error = Interop.Telephony.TelephonyDeinit(ref _handleList);
+ if (error != TelephonyError.None)
+ {
+ Exception e = ExceptionFactory.CreateException(error);
+ // Check if error is Invalid Parameter then hide the error
+ if (e is ArgumentException)
+ {
+ e = new InvalidOperationException("Internal Error Occured");
+ }
+
+ throw e;
+ }
+
+ _isInitialized = false;
+ _telephonyHandle.Clear();
+ }
+
+ /// <summary>
+ /// Acquires the telephony state value.
+ /// </summary>
+ /// <returns>
+ /// The state value of telephony.
+ /// </returns>
+ public static State CurrentState
+ {
+ get
+ {
+ State state = State.NotReady;
+ TelephonyError error = Interop.Telephony.TelephonyGetState(out state);
+ if (error != TelephonyError.None)
+ {
+ Tizen.Log.Error(Interop.Telephony.LogTag, "GetState Failed with Error " + error);
+ return State.Unavailable;
+ }
+
+ return state;
+ }
+ }
+
+ internal static SlotHandle FindHandle(IntPtr handle)
+ {
+ SlotHandle temp = _telephonyHandle[0];
+ foreach (SlotHandle simHandle in _telephonyHandle)
+ {
+ if (simHandle._handle == handle)
+ {
+ temp = simHandle;
+ }
+ }
+
+ return temp;
+ }
+
+ internal static List<SlotHandle> _telephonyHandle = new List<SlotHandle>();
+
+ private static StateChangedCallback stateDelegate = delegate(State state, IntPtr userData)
+ {
+ StateEventArgs args = new StateEventArgs(state);
+ _stateChanged?.Invoke(null, args);
+ };
+ private static HandleList _handleList;
+ private static bool _isInitialized = false;
+ private static event EventHandler<StateEventArgs> _stateChanged;
+ }
+}
--- /dev/null
+<manifest>
+ <request>
+ <domain name="_"/>
+ </request>
+</manifest>
--- /dev/null
+%{!?dotnet_assembly_path: %define dotnet_assembly_path /opt/usr/share/dotnet.tizen/framework}
+%{!?dotnet_core_path: %define dotnet_core_path %{_datadir}/tizen.net/ref}
+
+%if 0%{?tizen_build_devel_mode}
+%define BUILDCONF Debug
+%else
+%define BUILDCONF Release
+%endif
+
+Name: csapi-telephony
+Summary: Tizen Telephony API for C#
+Version: 1.0.0
+Release: 1
+Group: Development/Libraries
+License: Apache-2.0
+URL: https://www.tizen.org
+Source0: %{name}-%{version}.tar.gz
+Source1: %{name}.manifest
+
+# Mono
+BuildRequires: mono-compiler
+BuildRequires: mono-devel
+
+# .NETCore
+%if 0%{?_with_corefx}
+AutoReqProv: no
+BuildRequires: corefx-managed-32b-ref
+%endif
+
+BuildRequires: dotnet-build-tools
+
+# C# API Requries
+BuildRequires: csapi-tizen-devel
+
+%description
+Tizen Telephony API for C#
+
+%prep
+%setup -q
+
+cp %{SOURCE1} .
+
+%define Assemblies Tizen.Telephony
+
+%build
+# Build for Net45
+for ASM in %{Assemblies}; do
+if [ -e $ASM/$ASM.Net45.csproj ]; then
+ xbuild $ASM/$ASM.Net45.csproj \
+ /p:Configuration=%{BUILDCONF} \
+ /p:DotnetAssemblyPath=%{dotnet_assembly_path}/devel/net45 \
+ /p:OutputPath=bin/net45
+fi
+
+# Build for Dotnet
+%if 0%{?_with_corefx}
+if [ -e $ASM/$ASM.csproj ]; then
+ xbuild $ASM/$ASM.csproj \
+ /p:Configuration=%{BUILDCONF} \
+ /p:DotnetAssemblyPath=%{dotnet_assembly_path}/devel/netstandard1.6 \
+ /p:CoreFxPath=%{dotnet_core_path} \
+ /p:OutputPath=bin/netstandard1.6
+fi
+%endif
+
+# Make NuGet package
+dotnet-gbs pack $ASM/$ASM.nuspec --PackageVersion=%{version} --PackageFiles=$ASM/bin
+
+done
+
+%install
+mkdir -p %{buildroot}%{dotnet_assembly_path}/devel
+for ASM in %{Assemblies}; do
+ cp -fr $ASM/bin/* %{buildroot}%{dotnet_assembly_path}/devel
+%if 0%{?_with_corefx}
+ install -p -m 644 $ASM/bin/netstandard1.6/$ASM.dll %{buildroot}%{dotnet_assembly_path}
+%else
+ install -p -m 644 $ASM/bin/net45/$ASM.dll %{buildroot}%{dotnet_assembly_path}
+%endif
+done
+
+mkdir -p %{buildroot}/nuget
+install -p -m 644 *.nupkg %{buildroot}/nuget
+
+%files
+%manifest %{name}.manifest
+%license LICENSE
+%attr(644,root,root) %{dotnet_assembly_path}/*.dll
+
+%package devel
+Summary: Development package for %{name}
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+AutoReqProv: no
+
+%description devel
+Development package for %{name}
+
+%files devel
+%{dotnet_assembly_path}/devel/*
+
+%package nuget
+Summary: NuGet package for %{name}
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description nuget
+NuGet package for %{name}
+
+%files nuget
+/nuget/*.nupkg