Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Tapi / Tizen.Tapi / SmsStructs.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 using System;
18 using System.Runtime.InteropServices;
19
20 namespace Tizen.Tapi
21 {
22     [StructLayout(LayoutKind.Sequential)]
23     internal struct SmsIncomingMsgNotiStruct
24     {
25         [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
26         internal string Sca;
27         internal int MsgLength;
28         [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
29         internal string SzData;
30         internal SmsNetType Format;
31     }
32
33     [StructLayout(LayoutKind.Sequential)]
34     internal struct SmsIncomingCbMsgNotiStruct
35     {
36         internal SmsCbMsgType CbMsgType;
37         internal short Length;
38         [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1253)]
39         internal string SzMsgData;
40     }
41
42     [StructLayout(LayoutKind.Sequential)]
43     internal struct SmsIncomingEtwsMsgNotiStruct
44     {
45         internal SmsEtwsMsgType EtwsMsgType;
46         internal short Length;
47         [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1253)]
48         internal string SzMsgData;
49     }
50
51     [StructLayout(LayoutKind.Sequential)]
52     internal struct SmsDataPackageStruct
53     {
54         [MarshalAs(UnmanagedType.ByValTStr, SizeConst=20)]
55         internal string Sca;
56         internal int Length;
57         [MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)]
58         internal string SzData;
59         internal SmsNetType Format;
60     }
61
62     [StructLayout(LayoutKind.Sequential)]
63     internal struct SmsDataStruct
64     {
65         internal int Index;
66         internal SmsMessageStatus Status;
67         internal SmsDataPackageStruct Data;
68     }
69
70     [StructLayout(LayoutKind.Sequential)]
71     internal struct SmsCbConfigStruct
72     {
73         internal int Net3gppType;
74         internal int CbEnabled;
75         internal byte MsgIdMaxCount;
76         internal int MsgIdRangeCount;
77         [MarshalAs(UnmanagedType.ByValArray, SizeConst=50, ArraySubType = UnmanagedType.LPStruct)]
78         internal SmsCbMsgStruct[] MsgIds;
79     }
80
81     [StructLayout(LayoutKind.Explicit)]
82     internal struct SmsCbMsgStruct
83     {
84         [FieldOffset(0)]
85         internal SmsCbMsg3gppStruct Net3gpp;
86         [FieldOffset(0)]
87         internal SmsCbMsg3gpp2Struct Net3gpp2;
88     }
89
90     [StructLayout(LayoutKind.Sequential)]
91     internal struct SmsCbMsg3gppStruct
92     {
93         internal ushort FromMsgId;
94         internal ushort ToMsgId;
95         internal byte Selected;
96     }
97
98     [StructLayout(LayoutKind.Sequential)]
99     internal struct SmsCbMsg3gpp2Struct
100     {
101         internal ushort CbCategory;
102         internal ushort CbLanguage;
103         internal byte Selected;
104     }
105
106     [StructLayout(LayoutKind.Sequential)]
107     internal struct SmsParamsStruct
108     {
109         internal byte RecordIndex;
110         internal byte RecordLength;
111         internal ulong AlphaIdLength;
112         [MarshalAs(UnmanagedType.ByValTStr, SizeConst=129)]
113         internal string AlphaId;
114         internal byte ParamIndicator;
115         internal SmsAddressStruct DestinationAddress;
116         internal SmsAddressStruct ServiceCenterAddress;
117         internal ushort TpProtocolId;
118         internal ushort TpDataCodingScheme;
119         internal ushort TpValidityPeriod;
120     }
121
122     [StructLayout(LayoutKind.Sequential)]
123     internal struct SmsAddressStruct
124     {
125         internal uint DialNumLength;
126         internal SimTypeOfNumber Type;
127         internal SimNumberPlanIdentity Identity;
128         [MarshalAs(UnmanagedType.ByValTStr, SizeConst=21)]
129         internal string DiallingNumber;
130     }
131
132     internal static class SmsStructConversions
133     {
134         internal static SmsIncomingMessageNoti ConvertSmsIncomingStruct(SmsIncomingMsgNotiStruct msgStruct)
135         {
136             SmsIncomingMessageNoti msgNoti = new SmsIncomingMessageNoti();
137             msgNoti.ScaVal = msgStruct.Sca;
138             msgNoti.MsgLength = msgStruct.MsgLength;
139             msgNoti.FormatType = msgStruct.Format;
140             msgNoti.Data = msgStruct.SzData;
141             return msgNoti;
142         }
143
144         internal static SmsIncomingCbMessageNoti ConvertSmsIncomingCbStruct(SmsIncomingCbMsgNotiStruct msgStruct)
145         {
146             SmsIncomingCbMessageNoti msgNoti = new SmsIncomingCbMessageNoti();
147             msgNoti.Len = msgStruct.Length;
148             msgNoti.CbType = msgStruct.CbMsgType;
149             msgNoti.Data = msgStruct.SzMsgData;
150             return msgNoti;
151         }
152
153         internal static SmsIncomingEtwsMessageNoti ConvertSmsIncomingEtwsStruct(SmsIncomingEtwsMsgNotiStruct msgStruct)
154         {
155             SmsIncomingEtwsMessageNoti msgNoti = new SmsIncomingEtwsMessageNoti();
156             msgNoti.Len = msgStruct.Length;
157             msgNoti.EtwsType = msgStruct.EtwsMsgType;
158             msgNoti.Data = msgStruct.SzMsgData;
159             return msgNoti;
160         }
161     }
162 }