2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 using System.Collections.Generic;
18 using System.Runtime.InteropServices;
23 [StructLayout(LayoutKind.Sequential)]
24 internal struct SsBarringInfoStruct
26 internal SsClass Class;
27 internal SsBarringMode Mode;
28 internal SsBarringType Type;
29 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
30 internal string Password;
33 [StructLayout(LayoutKind.Sequential)]
34 internal struct SsBarringRecordStruct
36 internal SsClass Class;
37 internal SsStatus Status;
38 internal SsBarringType Type;
41 [StructLayout(LayoutKind.Sequential)]
42 internal struct SsBarringResponseStruct
44 internal int RecordNum;
45 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.LPStruct)]
46 internal SsBarringRecordStruct[] Record;
49 [StructLayout(LayoutKind.Sequential)]
50 internal struct SsUssdMsgInfoStruct
52 internal SsUssdType Type;
55 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 208)]
56 internal string UssdString;
59 [StructLayout(LayoutKind.Sequential)]
60 internal struct SsUssdResponseStruct
62 internal SsUssdType Type;
63 internal SsUssdStatus Status;
66 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 208)]
67 internal string UssdString;
70 [StructLayout(LayoutKind.Sequential)]
71 internal struct SsReleaseCompleteMsgStruct
73 internal byte MsgLength;
74 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
75 internal string Message;
78 [StructLayout(LayoutKind.Sequential)]
79 internal struct SsWaitingInfoStruct
81 internal SsClass Class;
82 internal SsCallWaitingMode Mode;
85 [StructLayout(LayoutKind.Sequential)]
86 internal struct SsWaitingRecordStruct
88 internal SsClass Class;
89 internal SsStatus Status;
92 [StructLayout(LayoutKind.Sequential)]
93 internal struct SsWaitingResponseStruct
95 internal int RecordNum;
96 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.LPStruct)]
97 internal SsWaitingRecordStruct[] Record;
100 [StructLayout(LayoutKind.Sequential)]
101 internal struct SsForwardInfoStruct
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;
113 [StructLayout(LayoutKind.Sequential)]
114 internal struct SsForwardRecordStruct
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;
127 [StructLayout(LayoutKind.Sequential)]
128 internal struct SsForwardResponseStruct
130 internal int RecordNum;
131 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = UnmanagedType.LPStruct)]
132 internal SsForwardRecordStruct[] Record;
135 [StructLayout(LayoutKind.Sequential)]
136 internal struct SsInfoStruct
138 internal SsCause Cause;
139 internal SsInfoType Type;
142 [StructLayout(LayoutKind.Sequential)]
143 internal struct SsCliResponseStruct
145 internal SsLineIdentificationType Type;
146 internal SsCliStatus Status;
149 internal static class SsStructConversions
151 internal static SsForwardRecord ConvertSsForwardRecordStruct(SsForwardRecordStruct recordStruct)
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)
159 record.IsNumPresent = true;
162 else if (recordStruct.IsForwardingNumPresent == 0)
164 record.IsNumPresent = false;
167 record.NoReply = recordStruct.NoReplyTime;
168 record.Type = recordStruct.Ton;
169 record.NumIdPlan = recordStruct.Npi;
170 record.ForwardNum = recordStruct.ForwardingNum;
174 internal static SsUssdMsgInfo ConvertSsMsgStruct(SsUssdMsgInfoStruct msgStruct)
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;
184 internal static SsReleaseCompleteMsgInfo ConvertReleaseMsgStruct(SsReleaseCompleteMsgStruct msgStruct)
186 SsReleaseCompleteMsgInfo info = new SsReleaseCompleteMsgInfo();
187 info.Length = msgStruct.MsgLength;
188 info.Msg = Encoding.ASCII.GetBytes(msgStruct.Message);
192 internal static SsForwardResponse ConvertForwardRspStruct(SsForwardResponseStruct responseStruct)
194 SsForwardResponse info = new SsForwardResponse();
195 List<SsForwardRecord> recordList = new List<SsForwardRecord>();
196 foreach (SsForwardRecordStruct item in responseStruct.Record)
198 recordList.Add(ConvertSsForwardRecordStruct(item));
201 info.RecordNum = responseStruct.RecordNum;
202 info.RecordList = recordList;
206 internal static SsBarringResponse ConvertBarringRspStruct(SsBarringResponseStruct responseStruct)
208 SsBarringResponse info = new SsBarringResponse();
209 List<SsBarringRecord> barringList = new List<SsBarringRecord>();
210 foreach (SsBarringRecordStruct item in responseStruct.Record)
212 SsBarringRecord record = new SsBarringRecord();
213 record.SsClass = item.Class;
214 record.SsStatus = item.Status;
215 record.SsType = item.Type;
216 barringList.Add(record);
219 info.RecordNum = responseStruct.RecordNum;
220 info.RecordList = barringList;
224 internal static SsWaitingResponse ConvertWaitingRspStruct(SsWaitingResponseStruct responseStruct)
226 SsWaitingResponse info = new SsWaitingResponse();
227 List<SsWaitingRecord> waitingList = new List<SsWaitingRecord>();
228 foreach (SsWaitingRecordStruct item in responseStruct.Record)
230 SsWaitingRecord record = new SsWaitingRecord();
231 record.SsClass = item.Class;
232 record.SsStatus = item.Status;
233 waitingList.Add(record);
236 info.RecordNum = responseStruct.RecordNum;
237 info.RecordList = waitingList;
241 internal static SsInfo ConvertInfoStruct(SsInfoStruct infoStruct)
243 SsInfo info = new SsInfo();
244 info.Cse = infoStruct.Cause;
245 info.Type = infoStruct.Type;
249 internal static SsCliResponse ConvertSsCliResponseStruct(SsCliResponseStruct responseStruct)
251 SsCliResponse response = new SsCliResponse();
252 response.LineType = responseStruct.Type;
253 response.CliStatus = responseStruct.Status;
257 internal static SsUssdResponse ConvertSsUssdResponseStruct(SsUssdResponseStruct responseStruct)
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;
269 internal static class SsClassConversions
271 internal static SsBarringInfoStruct ConvertSsBarringInfo(SsBarringInfo info)
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;
281 internal static SsForwardInfoStruct ConvertSsForwardInfo(SsForwardInfo info)
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;
294 internal static SsWaitingInfoStruct ConvertSsWaitingInfo(SsWaitingInfo info)
296 SsWaitingInfoStruct waitingStruct = new SsWaitingInfoStruct();
297 waitingStruct.Class = info.Class;
298 waitingStruct.Mode = info.Mode;
299 return waitingStruct;
302 internal static SsUssdMsgInfoStruct ConvertSsUssdMsgInfo(SsUssdMsgInfo info)
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;