Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Tapi / Tizen.Tapi / SsStructs.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.Collections.Generic;
18 using System.Runtime.InteropServices;
19 using System.Text;
20
21 namespace Tizen.Tapi
22 {
23     [StructLayout(LayoutKind.Sequential)]
24     internal struct SsBarringInfoStruct
25     {
26         internal SsClass Class;
27         internal SsBarringMode Mode;
28         internal SsBarringType Type;
29         [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
30         internal string Password;
31     }
32
33     [StructLayout(LayoutKind.Sequential)]
34     internal struct SsBarringRecordStruct
35     {
36         internal SsClass Class;
37         internal SsStatus Status;
38         internal SsBarringType Type;
39     }
40
41     [StructLayout(LayoutKind.Sequential)]
42     internal struct SsBarringResponseStruct
43     {
44         internal int RecordNum;
45         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.LPStruct)]
46         internal SsBarringRecordStruct[] Record;
47     }
48
49     [StructLayout(LayoutKind.Sequential)]
50     internal struct SsUssdMsgInfoStruct
51     {
52         internal SsUssdType Type;
53         internal byte Dcs;
54         internal int Length;
55         [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 208)]
56         internal string UssdString;
57     }
58
59     [StructLayout(LayoutKind.Sequential)]
60     internal struct SsUssdResponseStruct
61     {
62         internal SsUssdType Type;
63         internal SsUssdStatus Status;
64         internal byte Dcs;
65         internal int Length;
66         [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 208)]
67         internal string UssdString;
68     }
69
70     [StructLayout(LayoutKind.Sequential)]
71     internal struct SsReleaseCompleteMsgStruct
72     {
73         internal byte MsgLength;
74         [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
75         internal string Message;
76     }
77
78     [StructLayout(LayoutKind.Sequential)]
79     internal struct SsWaitingInfoStruct
80     {
81         internal SsClass Class;
82         internal SsCallWaitingMode Mode;
83     }
84
85     [StructLayout(LayoutKind.Sequential)]
86     internal struct SsWaitingRecordStruct
87     {
88         internal SsClass Class;
89         internal SsStatus Status;
90     }
91
92     [StructLayout(LayoutKind.Sequential)]
93     internal struct SsWaitingResponseStruct
94     {
95         internal int RecordNum;
96         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.LPStruct)]
97         internal SsWaitingRecordStruct[] Record;
98     }
99
100     [StructLayout(LayoutKind.Sequential)]
101     internal struct SsForwardInfoStruct
102     {
103         internal SsClass Class;
104         internal SsForwardMode Mode;
105         internal SsForwardCondition Condition;
106         internal SsNoReplyTime NoReplyTimer;
107         internal SsForwardTypeOfNumber Ton;
108         internal SsForwardNumberingPlanIdentity Npi;
109         [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 82)]
110         internal string PhoneNumber;
111     }
112
113     [StructLayout(LayoutKind.Sequential)]
114     internal struct SsForwardRecordStruct
115     {
116         internal SsClass Class;
117         internal SsStatus Status;
118         internal SsForwardCondition Condition;
119         internal int IsForwardingNumPresent;
120         internal SsNoReplyTime NoReplyTime;
121         internal SsForwardTypeOfNumber Ton;
122         internal SsForwardNumberingPlanIdentity Npi;
123         [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 83)]
124         internal string ForwardingNum;
125     }
126
127     [StructLayout(LayoutKind.Sequential)]
128     internal struct SsForwardResponseStruct
129     {
130         internal int RecordNum;
131         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.LPStruct)]
132         internal SsForwardRecordStruct[] Record;
133     }
134
135     [StructLayout(LayoutKind.Sequential)]
136     internal struct SsInfoStruct
137     {
138         internal SsCause Cause;
139         internal SsInfoType Type;
140     }
141
142     [StructLayout(LayoutKind.Sequential)]
143     internal struct SsCliResponseStruct
144     {
145         internal SsLineIdentificationType Type;
146         internal SsCliStatus Status;
147     }
148
149     internal static class SsStructConversions
150     {
151         internal static SsForwardRecord ConvertSsForwardRecordStruct(SsForwardRecordStruct recordStruct)
152         {
153             SsForwardRecord record = new SsForwardRecord();
154             record.SsClass = recordStruct.Class;
155             record.SsStatus = recordStruct.Status;
156             record.Condition = recordStruct.Condition;
157             if (recordStruct.IsForwardingNumPresent == 1)
158             {
159                 record.IsNumPresent = true;
160             }
161
162             else if (recordStruct.IsForwardingNumPresent == 0)
163             {
164                 record.IsNumPresent = false;
165             }
166
167             record.NoReply = recordStruct.NoReplyTime;
168             record.Type = recordStruct.Ton;
169             record.NumIdPlan = recordStruct.Npi;
170             record.ForwardNum = recordStruct.ForwardingNum;
171             return record;
172         }
173
174         internal static SsUssdMsgInfo ConvertSsMsgStruct(SsUssdMsgInfoStruct msgStruct)
175         {
176             SsUssdMsgInfo info = new SsUssdMsgInfo();
177             info.Length = msgStruct.Length;
178             info.Dcs = msgStruct.Dcs;
179             info.UssdString = msgStruct.UssdString;
180             info.Type = msgStruct.Type;
181             return info;
182         }
183
184         internal static SsReleaseCompleteMsgInfo ConvertReleaseMsgStruct(SsReleaseCompleteMsgStruct msgStruct)
185         {
186             SsReleaseCompleteMsgInfo info = new SsReleaseCompleteMsgInfo();
187             info.Length = msgStruct.MsgLength;
188             info.Msg = Encoding.ASCII.GetBytes(msgStruct.Message);
189             return info;
190         }
191
192         internal static SsForwardResponse ConvertForwardRspStruct(SsForwardResponseStruct responseStruct)
193         {
194             SsForwardResponse info = new SsForwardResponse();
195             List<SsForwardRecord> recordList = new List<SsForwardRecord>();
196             foreach (SsForwardRecordStruct item in responseStruct.Record)
197             {
198                 recordList.Add(ConvertSsForwardRecordStruct(item));
199             }
200
201             info.RecordNum = responseStruct.RecordNum;
202             info.RecordList = recordList;
203             return info;
204         }
205
206         internal static SsBarringResponse ConvertBarringRspStruct(SsBarringResponseStruct responseStruct)
207         {
208             SsBarringResponse info = new SsBarringResponse();
209             List<SsBarringRecord> barringList = new List<SsBarringRecord>();
210             foreach (SsBarringRecordStruct item in responseStruct.Record)
211             {
212                 SsBarringRecord record = new SsBarringRecord();
213                 record.SsClass = item.Class;
214                 record.SsStatus = item.Status;
215                 record.SsType = item.Type;
216                 barringList.Add(record);
217             }
218
219             info.RecordNum = responseStruct.RecordNum;
220             info.RecordList = barringList;
221             return info;
222         }
223
224         internal static SsWaitingResponse ConvertWaitingRspStruct(SsWaitingResponseStruct responseStruct)
225         {
226             SsWaitingResponse info = new SsWaitingResponse();
227             List<SsWaitingRecord> waitingList = new List<SsWaitingRecord>();
228             foreach (SsWaitingRecordStruct item in responseStruct.Record)
229             {
230                 SsWaitingRecord record = new SsWaitingRecord();
231                 record.SsClass = item.Class;
232                 record.SsStatus = item.Status;
233                 waitingList.Add(record);
234             }
235
236             info.RecordNum = responseStruct.RecordNum;
237             info.RecordList = waitingList;
238             return info;
239         }
240
241         internal static SsInfo ConvertInfoStruct(SsInfoStruct infoStruct)
242         {
243             SsInfo info = new SsInfo();
244             info.Cse = infoStruct.Cause;
245             info.Type = infoStruct.Type;
246             return info;
247         }
248
249         internal static SsCliResponse ConvertSsCliResponseStruct(SsCliResponseStruct responseStruct)
250         {
251             SsCliResponse response = new SsCliResponse();
252             response.LineType = responseStruct.Type;
253             response.CliStatus = responseStruct.Status;
254             return response;
255         }
256
257         internal static SsUssdResponse ConvertSsUssdResponseStruct(SsUssdResponseStruct responseStruct)
258         {
259             SsUssdResponse response = new SsUssdResponse();
260             response.UssdType = responseStruct.Type;
261             response.UssdStatus = responseStruct.Status;
262             response.DcsInfo = responseStruct.Dcs;
263             response.UssdLength = responseStruct.Length;
264             response.UssdInfo = responseStruct.UssdString;
265             return response;
266         }
267     }
268
269     internal static class SsClassConversions
270     {
271         internal static SsBarringInfoStruct ConvertSsBarringInfo(SsBarringInfo info)
272         {
273             SsBarringInfoStruct barringStruct = new SsBarringInfoStruct();
274             barringStruct.Class = info.Class;
275             barringStruct.Mode = info.Mode;
276             barringStruct.Type = info.Type;
277             barringStruct.Password = info.Password;
278             return barringStruct;
279         }
280
281         internal static SsForwardInfoStruct ConvertSsForwardInfo(SsForwardInfo info)
282         {
283             SsForwardInfoStruct forwardStruct = new SsForwardInfoStruct();
284             forwardStruct.Class = info.Class;
285             forwardStruct.Mode = info.Mode;
286             forwardStruct.Condition = info.Condition;
287             forwardStruct.NoReplyTimer = info.NoReplyTimer;
288             forwardStruct.Ton = info.Ton;
289             forwardStruct.Npi = info.Npi;
290             forwardStruct.PhoneNumber = info.PhoneNumber;
291             return forwardStruct;
292         }
293
294         internal static SsWaitingInfoStruct ConvertSsWaitingInfo(SsWaitingInfo info)
295         {
296             SsWaitingInfoStruct waitingStruct = new SsWaitingInfoStruct();
297             waitingStruct.Class = info.Class;
298             waitingStruct.Mode = info.Mode;
299             return waitingStruct;
300         }
301
302         internal static SsUssdMsgInfoStruct ConvertSsUssdMsgInfo(SsUssdMsgInfo info)
303         {
304             SsUssdMsgInfoStruct msgStruct = new SsUssdMsgInfoStruct();
305             msgStruct.Type = info.Type;
306             msgStruct.Dcs = info.Dcs;
307             msgStruct.Length = info.Length;
308             msgStruct.UssdString = info.UssdString;
309             return msgStruct;
310         }
311     }
312 }