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.Runtime.InteropServices;
18 using System.Collections.Generic;
24 [StructLayout(LayoutKind.Sequential)]
25 internal struct SatMenuSelectionInfoStruct
29 [StructLayout(LayoutKind.Sequential)]
30 internal struct SatEventDownloadInfoStruct
34 [StructLayout(LayoutKind.Sequential)]
35 internal struct SatUiUserConfirmInfoStruct
39 [StructLayout(LayoutKind.Sequential)]
40 internal struct SatMainMenuInfoStruct
42 internal int CommandId;
43 internal int IsMainMenuPresent;
44 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
45 internal string Title;
46 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.LPStruct)]
47 internal SatMenuInfoStruct[] MenuItem;
48 internal ushort NumOfMenuItems;
49 internal int IsMainMenuHelpInfo;
50 internal int IsUpdatedMainMenu;
51 internal SatIconIdentifierStruct IconId;
52 internal SatIconIdentifierListStruct IconIdList;
55 [StructLayout(LayoutKind.Sequential)]
56 internal struct SatMenuInfoStruct
58 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 261)]
63 [StructLayout(LayoutKind.Sequential)]
64 internal struct SatIconIdentifierStruct
66 internal int IsPresent;
67 internal SatIconQualifierType IconQualifier;
68 internal byte IconIdentifier;
69 internal SatIconInfoStruct IconInfo;
72 [StructLayout(LayoutKind.Sequential)]
73 internal struct SatIconInfoStruct
77 internal SatImageCodingScheme Ics;
78 internal ushort IconDataLength;
79 internal ushort ClutDataLength;
80 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
81 internal string IconFile;
82 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
83 internal string ClutFile;
86 [StructLayout(LayoutKind.Sequential)]
87 internal struct SatIconIdentifierListStruct
89 internal int IsPresent;
90 internal SatIconQualifierType IconListQualifier;
91 internal byte IconCount;
92 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
93 internal string IconIdentifierList;
94 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 50, ArraySubType = UnmanagedType.LPStruct)]
95 internal SatIconInfoStruct[] IconInfoList;
98 [StructLayout(LayoutKind.Sequential)]
99 internal struct SatDisplayTextStruct
101 internal int CommandId;
102 internal SatTextInfoStruct Text;
103 internal uint Duration;
104 internal int IsPriorityHigh;
105 internal int IsUserResponseRequired;
106 internal int IsImmediateResponse;
107 internal SatIconIdentifierStruct IconId;
110 [StructLayout(LayoutKind.Sequential)]
111 internal struct SatTextInfoStruct
113 internal ushort Length;
114 internal IntPtr DataString;
117 [StructLayout(LayoutKind.Sequential)]
118 internal struct SatSelectItemStruct
120 internal int commandId;
121 internal int IsHelpInfoAvailable;
122 internal SatTextInfoStruct Text;
123 internal char DefaultItemIndex;
124 internal char MenuItemCount;
125 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40, ArraySubType = UnmanagedType.LPStruct)]
126 internal SatMenuItemInfoStruct[] MenuItems;
127 internal SatIconIdentifierStruct IconId;
128 internal SatIconIdentifierListStruct IconIdList;
131 [StructLayout(LayoutKind.Sequential)]
132 internal struct SatMenuItemInfoStruct
134 internal byte ItemId;
135 internal byte TextLength;
136 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
137 internal string Text;
140 [StructLayout(LayoutKind.Sequential)]
141 internal struct SatGetInKeyStruct
143 internal int CommandId;
144 internal SatInKeyType KeyType;
145 internal SatInputAlphabetType InputType;
146 internal int IsNumeric;
147 internal int IsHelpInfoAvailable;
148 internal SatTextInfoStruct Text;
149 internal uint Duration;
150 internal SatIconIdentifierStruct IconId;
153 [StructLayout(LayoutKind.Sequential)]
154 internal struct SatGetInputStruct
156 internal int CommandId;
157 internal SatInputAlphabetType Type;
158 internal int IsNumeric;
159 internal int IsHelpInfoAvailable;
160 internal int IsEchoInput;
161 internal SatTextInfoStruct Text;
162 internal SatResponseLengthStruct RespLength;
163 internal SatTextInfoStruct DefaultText;
164 internal SatIconIdentifierStruct IconId;
167 [StructLayout(LayoutKind.Sequential)]
168 internal struct SatResponseLengthStruct
174 [StructLayout(LayoutKind.Sequential)]
175 internal struct SatRefreshStruct
177 internal int CommandId;
178 internal SatRefreshAppType AppType;
179 internal SatCmdQualiRefresh RefreshMode;
180 internal byte FileCount;
181 [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.U4, SizeConst = 20)]
182 internal SimFileId[] fileId;
185 [StructLayout(LayoutKind.Sequential)]
186 internal struct SatSendSmsStruct
188 internal int CommandId;
189 internal int IsPackingRequired;
190 internal SatAddressStruct Address;
191 internal SatSmsTpduStruct SmsTpdu;
194 [StructLayout(LayoutKind.Sequential)]
195 internal struct SatAddressStruct
197 internal SimTypeOfNumber Ton;
198 internal SimNumberPlanIdentity Npi;
199 internal byte DiallingNumLength;
200 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
201 internal string DiallingNumber;
204 [StructLayout(LayoutKind.Sequential)]
205 internal struct SatSmsTpduStruct
207 internal SatSmsTpduType TpduType;
208 internal byte DataLength;
209 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 175)]
210 internal string Data;
213 [StructLayout(LayoutKind.Sequential)]
214 internal struct SatEventListDataStruct
216 internal int IsEventDownloadActive;
217 internal int IsMtCallEvent;
218 internal int IsCallConnected;
219 internal int IsCallDisconnected;
220 internal int IsLocationStatus;
221 internal int IsUserActivity;
222 internal int IsIdleScreenAvailable;
223 internal int IsCardReaderStatus;
224 internal int IsLanguageSelection;
225 internal int IsBrowserTermination;
226 internal int IsDataAvailable;
227 internal int IsChannelStatus;
230 [StructLayout(LayoutKind.Sequential)]
231 internal struct SatSendDtmfDataStruct
233 internal int CommandId;
234 internal int IsHiddenMode;
235 internal SatTextInfoStruct DtmfString;
238 [StructLayout(LayoutKind.Sequential)]
239 internal struct SatCallCtrlIndCallSsDataStruct
241 internal SatTextInfoStruct Address;
242 internal SatTextInfoStruct SubAddress;
243 internal SatBcRepeatIndicatorType BcRepeatIndicator;
244 internal SatTextInfoStruct Ccp1;
245 internal SatTextInfoStruct Ccp2;
248 [StructLayout(LayoutKind.Sequential)]
249 internal struct SatCallCtrlIndUssdDataStruct
251 internal SatTextInfoStruct UssdString;
254 [StructLayout(LayoutKind.Explicit)]
255 internal struct SatCallCtrlIndStruct
258 internal SatCallCtrlIndCallSsDataStruct CallCtrlCnfCallData;
260 internal SatCallCtrlIndCallSsDataStruct CallCtrlCnfSsData;
262 internal SatCallCtrlIndUssdDataStruct CallCtrlCnfUssdData;
265 [StructLayout(LayoutKind.Sequential)]
266 internal struct SatCallCtrlIndDataStruct
268 internal SatCallType CallCtrlCnfType;
269 internal SatCallCtrlResultType CallCtrlResult;
270 internal SatTextInfoStruct DisplayData;
271 internal int IsUserInfoDispEnabled;
272 internal SatCallCtrlIndStruct CallCtrlIndData;
275 [StructLayout(LayoutKind.Sequential)]
276 internal struct SatTextTypeInfoStruct
278 internal int IsDigitOnly;
279 internal SatDataCodingSchemeStruct Dcs;
280 internal ushort StringLength;
281 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 501)]
282 internal string TextString;
285 [StructLayout(LayoutKind.Sequential)]
286 internal struct SatDataCodingSchemeStruct
288 internal int IsCompressedFormat;
289 internal SatAlphabetFormat AlphabetFormat;
290 internal SatMsgClassType MsgClass;
291 internal byte RawDcs;
294 [StructLayout(LayoutKind.Sequential)]
295 internal struct SatMoSmsCtrlDataStruct
297 internal SatCallCtrlResultType Result;
298 internal int IsUserInfoDisplayEnabled;
299 internal SatTextTypeInfoStruct DisplayData;
300 internal SatTextTypeInfoStruct RpDestAddr;
301 internal SatTextTypeInfoStruct TpDestAddr;
304 [StructLayout(LayoutKind.Sequential)]
305 internal struct SatSetupCallDataStruct
307 internal int CommandId;
308 internal SatCmdQualiSetupCall CallType;
309 internal SatTextInfoStruct DisplayText;
310 internal SatTextInfoStruct CallNumber;
311 internal uint Duration;
312 internal SatIconIdentifierStruct IconId;
315 [StructLayout(LayoutKind.Sequential)]
316 internal struct SatSendSsDataStruct
318 internal int CommandId;
319 internal SimTypeOfNumber Ton;
320 internal SimNumberPlanIdentity Npi;
321 internal byte StringLength;
322 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 161)]
323 internal string SsString;
326 [StructLayout(LayoutKind.Sequential)]
327 internal struct SatSetupUssdDataStruct
329 internal int CommandId;
330 internal byte RawDcs;
331 internal byte UssdStringLength;
332 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 266)]
333 internal string UssdString;
336 [StructLayout(LayoutKind.Sequential)]
337 internal struct SatResultDataStruct
341 internal static class SatStructConversions
343 internal static SatTextInfo ConvertSatTextInfoStruct(SatTextInfoStruct textStruct)
345 SatTextInfo textInfo = new SatTextInfo();
346 textInfo.Length = textStruct.Length;
347 byte[] data = new byte[textStruct.Length];
348 Marshal.Copy(textStruct.DataString, data, 0, textInfo.Length);
349 textInfo.Data = data;
353 internal static SatIconInfo ConvertSatIconInfoStruct(SatIconInfoStruct iconStruct)
355 SatIconInfo iconInfo = new SatIconInfo();
356 iconInfo.IconWidth = iconStruct.Width;
357 iconInfo.IconHeight = iconStruct.Height;
358 iconInfo.Scheme = iconStruct.Ics;
359 iconInfo.IconLength = iconStruct.IconDataLength;
360 iconInfo.ClutLength = iconStruct.ClutDataLength;
361 iconInfo.IcnFile = iconStruct.IconFile;
362 iconInfo.CltFile = iconStruct.ClutFile;
366 internal static SatIconIdInfo ConvertSatIconIdentifierStruct(SatIconIdentifierStruct idStruct)
368 SatIconIdInfo iconId = new SatIconIdInfo();
369 if (idStruct.IsPresent == 1)
371 iconId.IsPresent = true;
374 else if (idStruct.IsPresent == 0)
376 iconId.IsPresent = false;
379 iconId.Qualifier = idStruct.IconQualifier;
380 iconId.Id = idStruct.IconIdentifier;
381 iconId.Info = ConvertSatIconInfoStruct(idStruct.IconInfo);
385 internal static SatIconIdListInfo ConvertSatIconIdListStruct(SatIconIdentifierListStruct listStruct)
387 SatIconIdListInfo iconIdList = new SatIconIdListInfo();
388 if (listStruct.IsPresent == 1)
390 iconIdList.IsPresent = true;
393 else if (listStruct.IsPresent == 0)
395 iconIdList.IsPresent = false;
398 iconIdList.Qualifier = listStruct.IconListQualifier;
399 iconIdList.Count = listStruct.IconCount;
400 iconIdList.IconList = Encoding.ASCII.GetBytes(listStruct.IconIdentifierList);
401 List<SatIconInfo> iconInfoList = new List<SatIconInfo>();
402 foreach (SatIconInfoStruct info in listStruct.IconInfoList)
404 iconInfoList.Add(ConvertSatIconInfoStruct(info));
407 iconIdList.Info = iconInfoList;
411 internal static SatMainMenuInfo ConvertSatMainMenuInfoStruct(SatMainMenuInfoStruct infoStruct)
413 SatMainMenuInfo mainMenuInfo = new SatMainMenuInfo();
414 mainMenuInfo.Id = infoStruct.CommandId;
415 if (infoStruct.IsMainMenuPresent == 1)
417 mainMenuInfo.IsPresent = true;
420 else if (infoStruct.IsMainMenuPresent == 0)
422 mainMenuInfo.IsPresent = false;
425 mainMenuInfo.Title = infoStruct.Title;
426 List<SatMenuInfo> menuInfoList = new List<SatMenuInfo>();
427 foreach (SatMenuInfoStruct menu in infoStruct.MenuItem)
429 SatMenuInfo menuInfo = new SatMenuInfo();
430 menuInfo.Item = menu.Item;
431 menuInfo.Id = menu.ItemId;
432 menuInfoList.Add(menuInfo);
435 mainMenuInfo.Items = menuInfoList;
436 mainMenuInfo.Num = infoStruct.NumOfMenuItems;
437 if (infoStruct.IsMainMenuHelpInfo == 1)
439 mainMenuInfo.IsHelpInfo = true;
442 else if (infoStruct.IsMainMenuHelpInfo == 0)
444 mainMenuInfo.IsHelpInfo = false;
447 if (infoStruct.IsUpdatedMainMenu == 1)
449 mainMenuInfo.IsUpdated = true;
452 else if (infoStruct.IsUpdatedMainMenu == 0)
454 mainMenuInfo.IsUpdated = false;
457 mainMenuInfo.IcnId = ConvertSatIconIdentifierStruct(infoStruct.IconId);
458 mainMenuInfo.IdList = ConvertSatIconIdListStruct(infoStruct.IconIdList);
462 internal static SatDisplayTextData ConvertSatDisplayTextStruct(SatDisplayTextStruct textStruct)
464 SatDisplayTextData textData = new SatDisplayTextData();
465 textData.Id = textStruct.CommandId;
466 textData.Text = ConvertSatTextInfoStruct(textStruct.Text);
467 textData.Drtn = textStruct.Duration;
468 if (textStruct.IsPriorityHigh == 1)
470 textData.IsPrtyHigh = true;
473 else if (textStruct.IsPriorityHigh == 0)
475 textData.IsPrtyHigh = false;
478 if (textStruct.IsUserResponseRequired == 1)
480 textData.IsRespRequired = true;
483 else if (textStruct.IsUserResponseRequired == 0)
485 textData.IsRespRequired = false;
488 if (textStruct.IsImmediateResponse == 1)
490 textData.IsImmediateResp = true;
493 else if (textStruct.IsImmediateResponse == 0)
495 textData.IsImmediateResp = false;
498 textData.IcnId = ConvertSatIconIdentifierStruct(textStruct.IconId);
502 internal static SatSelectItemData ConvertSatSelectItemStruct(SatSelectItemStruct itemStruct)
504 SatSelectItemData itemData = new SatSelectItemData();
505 itemData.Id = itemStruct.commandId;
506 if (itemStruct.IsHelpInfoAvailable == 1)
508 itemData.IsHelpAvailable = true;
511 else if (itemStruct.IsHelpInfoAvailable == 0)
513 itemData.IsHelpAvailable = false;
516 itemData.Text = ConvertSatTextInfoStruct(itemStruct.Text);
517 itemData.DefaultIndex = itemStruct.DefaultItemIndex;
518 itemData.ItemCount = itemStruct.MenuItemCount;
520 List<SatMenuItemInfo> items = new List<SatMenuItemInfo>();
521 foreach(SatMenuItemInfoStruct infoStruct in itemStruct.MenuItems)
523 SatMenuItemInfo menuItem = new SatMenuItemInfo();
524 menuItem.Id = infoStruct.ItemId;
525 menuItem.Length = infoStruct.TextLength;
526 menuItem.Txt = Encoding.ASCII.GetBytes(infoStruct.Text);
530 itemData.Items = items;
531 itemData.IcnId = ConvertSatIconIdentifierStruct(itemStruct.IconId);
532 itemData.IdList = ConvertSatIconIdListStruct(itemStruct.IconIdList);
536 internal static SatGetInKeyData ConvertSatGetInKeyStruct(SatGetInKeyStruct inKeyStruct)
538 SatGetInKeyData inKeyData = new SatGetInKeyData();
539 inKeyData.Id = inKeyStruct.CommandId;
540 inKeyData.Type = inKeyStruct.KeyType;
541 inKeyData.AlphabetType = inKeyStruct.InputType;
542 if (inKeyStruct.IsNumeric == 1)
544 inKeyData.IsNumericFlag = true;
547 else if (inKeyStruct.IsNumeric == 0)
549 inKeyData.IsNumericFlag = false;
552 if (inKeyStruct.IsHelpInfoAvailable == 1)
554 inKeyData.IsHelpAvailable = true;
557 else if (inKeyStruct.IsHelpInfoAvailable == 0)
559 inKeyData.IsHelpAvailable = false;
562 inKeyData.Text = ConvertSatTextInfoStruct(inKeyStruct.Text);
563 inKeyData.Duratn = inKeyStruct.Duration;
564 inKeyData.IcnId = ConvertSatIconIdentifierStruct(inKeyStruct.IconId);
568 internal static SatGetInputData ConvertSatGetInputStruct(SatGetInputStruct inputStruct)
570 SatGetInputData inputData = new SatGetInputData();
571 inputData.Id = inputStruct.CommandId;
572 inputData.Type = inputStruct.Type;
573 if (inputStruct.IsNumeric == 1)
575 inputData.IsNumericFlag = true;
578 else if (inputStruct.IsNumeric == 0)
580 inputData.IsNumericFlag = false;
583 if (inputStruct.IsHelpInfoAvailable == 1)
585 inputData.IsHelpAvailable = true;
588 else if (inputStruct.IsHelpInfoAvailable == 0)
590 inputData.IsHelpAvailable = false;
593 if (inputStruct.IsEchoInput == 1)
595 inputData.IsEcho = true;
598 else if (inputStruct.IsEchoInput == 0)
600 inputData.IsEcho = false;
603 inputData.Text = ConvertSatTextInfoStruct(inputStruct.Text);
605 SatResponseLengthInfo responseLength = new SatResponseLengthInfo();
606 responseLength.Min = inputStruct.RespLength.Min;
607 responseLength.Max = inputStruct.RespLength.Max;
609 inputData.RespLength = responseLength;
610 inputData.Default = ConvertSatTextInfoStruct(inputStruct.DefaultText);
611 inputData.IcnId = ConvertSatIconIdentifierStruct(inputStruct.IconId);
615 internal static SatRefreshData ConvertSatRefreshStruct(SatRefreshStruct refreshStruct)
617 SatRefreshData refreshData = new SatRefreshData();
618 refreshData.Id = refreshStruct.CommandId;
619 refreshData.Type = refreshStruct.AppType;
620 refreshData.Mode = refreshStruct.RefreshMode;
621 refreshData.Count = refreshStruct.FileCount;
622 List<SimFileId> fileId = new List<SimFileId>();
623 foreach(SimFileId id in refreshStruct.fileId)
627 refreshData.IdList = fileId;
631 internal static SatAddressData ConvertSatAddressStruct(SatAddressStruct addressStruct)
633 SatAddressData addressData = new SatAddressData();
634 addressData.Type = addressStruct.Ton;
635 addressData.NumId = addressStruct.Npi;
636 addressData.NumLen = addressStruct.DiallingNumLength;
637 addressData.Number = addressStruct.DiallingNumber;
641 internal static SatSmsTpduInfo ConvertSatSmsTpduStruct(SatSmsTpduStruct tpduStruct)
643 SatSmsTpduInfo tpduInfo = new SatSmsTpduInfo();
644 tpduInfo.Type = tpduStruct.TpduType;
645 tpduInfo.Length = tpduStruct.DataLength;
646 tpduInfo.Data = Encoding.ASCII.GetBytes(tpduStruct.Data);
650 internal static SatSendSmsData ConvertSatSendSmsStruct(SatSendSmsStruct smsStruct)
652 SatSendSmsData smsData = new SatSendSmsData();
653 smsData.Id = smsStruct.CommandId;
654 if (smsStruct.IsPackingRequired == 1)
656 smsData.IsPackRequired = true;
659 else if (smsStruct.IsPackingRequired == 0)
661 smsData.IsPackRequired = false;
664 smsData.Addr = ConvertSatAddressStruct(smsStruct.Address);
665 smsData.Info = ConvertSatSmsTpduStruct(smsStruct.SmsTpdu);
669 internal static SatEventListData ConvertSatEventListStruct(SatEventListDataStruct listStruct)
671 SatEventListData listData = new SatEventListData();
672 if (listStruct.IsEventDownloadActive == 1)
674 listData.IsDownloadActive = true;
677 else if (listStruct.IsEventDownloadActive == 0)
679 listData.IsDownloadActive = false;
682 if (listStruct.IsMtCallEvent == 1)
684 listData.IsCallEvent = true;
687 else if (listStruct.IsMtCallEvent == 0)
689 listData.IsCallEvent = false;
692 if (listStruct.IsCallConnected == 1)
694 listData.IsConnected = true;
697 else if (listStruct.IsCallConnected == 0)
699 listData.IsConnected = false;
702 if (listStruct.IsCallDisconnected == 1)
704 listData.IsDisconnected = true;
707 else if (listStruct.IsCallDisconnected == 0)
709 listData.IsDisconnected = false;
712 if (listStruct.IsLocationStatus == 1)
714 listData.IsStatus = true;
717 else if (listStruct.IsLocationStatus == 0)
719 listData.IsStatus = false;
722 if (listStruct.IsUserActivity == 1)
724 listData.IsUsrActivity = true;
727 else if (listStruct.IsUserActivity == 0)
729 listData.IsUsrActivity = false;
732 if (listStruct.IsIdleScreenAvailable == 1)
734 listData.IsIdleScreen = true;
737 else if (listStruct.IsIdleScreenAvailable == 0)
739 listData.IsIdleScreen = false;
742 if (listStruct.IsCardReaderStatus == 1)
744 listData.IsReaderStatus = true;
747 else if (listStruct.IsCardReaderStatus == 0)
749 listData.IsReaderStatus = false;
752 if (listStruct.IsLanguageSelection == 1)
754 listData.IsLanguageSelect = true;
757 else if (listStruct.IsLanguageSelection == 0)
759 listData.IsLanguageSelect = false;
762 if (listStruct.IsBrowserTermination == 1)
764 listData.IsBrowserTerminate = true;
767 else if (listStruct.IsBrowserTermination == 0)
769 listData.IsBrowserTerminate = false;
772 if (listStruct.IsDataAvailable == 1)
774 listData.IsDataPresent = true;
777 else if (listStruct.IsDataAvailable == 0)
779 listData.IsDataPresent = false;
782 if (listStruct.IsChannelStatus == 1)
784 listData.IsCnlStatus = true;
787 else if (listStruct.IsChannelStatus == 0)
789 listData.IsCnlStatus = false;
795 internal static SatSendDtmfData ConvertSatSendDtmfStruct(SatSendDtmfDataStruct dtmfStruct)
797 SatSendDtmfData dtmfData = new SatSendDtmfData();
798 dtmfData.Id = dtmfStruct.CommandId;
799 if (dtmfStruct.IsHiddenMode == 1)
801 dtmfData.IsHidden = true;
804 else if (dtmfStruct.IsHiddenMode == 0)
806 dtmfData.IsHidden = false;
809 dtmfData.Dtmf = ConvertSatTextInfoStruct(dtmfStruct.DtmfString);
813 internal static SatCallCtrlData ConvertSatCallCtrlIndCallSsDataStruct(SatCallCtrlIndCallSsDataStruct dataStruct)
815 SatCallCtrlData data = new SatCallCtrlData();
816 data.Addr = ConvertSatTextInfoStruct(dataStruct.Address);
817 data.SubAddr = ConvertSatTextInfoStruct(dataStruct.SubAddress);
818 data.RepeatIndicator = dataStruct.BcRepeatIndicator;
819 data.Ccparam1 = ConvertSatTextInfoStruct(dataStruct.Ccp1);
820 data.Ccparam2 = ConvertSatTextInfoStruct(dataStruct.Ccp2);
824 internal static SatCallCtrlConfirmData ConvertSatCallCtrlIndDataStruct(SatCallCtrlIndDataStruct dataStruct)
826 SatCallCtrlConfirmData data = new SatCallCtrlConfirmData();
827 data.Type = dataStruct.CallCtrlCnfType;
828 data.Result = dataStruct.CallCtrlResult;
829 data.Data = ConvertSatTextInfoStruct(dataStruct.DisplayData);
830 if (dataStruct.IsUserInfoDispEnabled == 1)
832 data.IsUserInfoEnabled = true;
835 else if (dataStruct.IsUserInfoDispEnabled == 0)
837 data.IsUserInfoEnabled = false;
840 if (dataStruct.CallCtrlCnfType == SatCallType.MoVoice)
842 data.CallData = ConvertSatCallCtrlIndCallSsDataStruct(dataStruct.CallCtrlIndData.CallCtrlCnfCallData);
845 else if (dataStruct.CallCtrlCnfType == SatCallType.Ss)
847 data.SsData = ConvertSatCallCtrlIndCallSsDataStruct(dataStruct.CallCtrlIndData.CallCtrlCnfSsData);
850 else if (dataStruct.CallCtrlCnfType == SatCallType.Ussd)
852 data.Ussd = ConvertSatTextInfoStruct(dataStruct.CallCtrlIndData.CallCtrlCnfUssdData.UssdString);
858 internal static SatDataCodingScheme ConvertSatDataCodingSchemeStruct(SatDataCodingSchemeStruct dataStruct)
860 SatDataCodingScheme codingScheme = new SatDataCodingScheme();
861 if (dataStruct.IsCompressedFormat == 1)
863 codingScheme.IsCompressed = true;
866 else if (dataStruct.IsCompressedFormat == 0)
868 codingScheme.IsCompressed = false;
871 codingScheme.Alphabet = dataStruct.AlphabetFormat;
872 codingScheme.Msg = dataStruct.MsgClass;
873 codingScheme.Dcs = dataStruct.RawDcs;
877 internal static SatTextTypeInfo ConvertSatTextTypeInfoStruct(SatTextTypeInfoStruct infoStruct)
879 SatTextTypeInfo info = new SatTextTypeInfo();
880 if (infoStruct.IsDigitOnly == 1)
885 else if (infoStruct.IsDigitOnly == 0)
887 info.IsDigit = false;
890 info.CodingScheme = ConvertSatDataCodingSchemeStruct(infoStruct.Dcs);
891 info.StringLen = infoStruct.StringLength;
892 info.Text = infoStruct.TextString;
896 internal static SatMoSmsCtrlData ConvertSatMoSmsCtrlDataStruct(SatMoSmsCtrlDataStruct dataStruct)
898 SatMoSmsCtrlData data = new SatMoSmsCtrlData();
899 data.Result = dataStruct.Result;
900 if (dataStruct.IsUserInfoDisplayEnabled == 1)
902 data.IsUserInfo = true;
905 else if (dataStruct.IsUserInfoDisplayEnabled == 0)
907 data.IsUserInfo = false;
910 data.Data = ConvertSatTextTypeInfoStruct(dataStruct.DisplayData);
911 data.RpAddr = ConvertSatTextTypeInfoStruct(dataStruct.RpDestAddr);
912 data.TpAddr = ConvertSatTextTypeInfoStruct(dataStruct.TpDestAddr);
916 internal static SatSetupCallData ConvertSatSetupCallDataStruct(SatSetupCallDataStruct dataStruct)
918 SatSetupCallData callData = new SatSetupCallData();
919 callData.Id = dataStruct.CommandId;
920 callData.Type = dataStruct.CallType;
921 callData.Text = ConvertSatTextInfoStruct(dataStruct.DisplayText);
922 callData.Number = ConvertSatTextInfoStruct(dataStruct.CallNumber);
923 callData.Duratn = dataStruct.Duration;
924 callData.IcnId = ConvertSatIconIdentifierStruct(dataStruct.IconId);
928 internal static SatSendSsData ConvertSatSendSsDataStruct(SatSendSsDataStruct dataStruct)
930 SatSendSsData ssData = new SatSendSsData();
931 ssData.Id = dataStruct.CommandId;
932 ssData.NumType = dataStruct.Ton;
933 ssData.Identity = dataStruct.Npi;
934 ssData.StringLen = dataStruct.StringLength;
935 ssData.Ss = dataStruct.SsString;
939 internal static SatSetupUssdData ConvertSatSetupUssdDataStruct(SatSetupUssdDataStruct ussdStruct)
941 SatSetupUssdData ussdData = new SatSetupUssdData();
942 ussdData.Id = ussdStruct.CommandId;
943 ussdData.Dcs = ussdStruct.RawDcs;
944 ussdData.StringLen = ussdStruct.UssdStringLength;
945 ussdData.Ussd = ussdStruct.UssdString;