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.
18 using System.Runtime.InteropServices;
22 [StructLayout(LayoutKind.Sequential)]
23 internal struct SmsIncomingMsgNotiStruct
25 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
27 internal int MsgLength;
28 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
29 internal string SzData;
30 internal SmsNetType Format;
33 [StructLayout(LayoutKind.Sequential)]
34 internal struct SmsIncomingCbMsgNotiStruct
36 internal SmsCbMsgType CbMsgType;
37 internal short Length;
38 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1253)]
39 internal string SzMsgData;
42 [StructLayout(LayoutKind.Sequential)]
43 internal struct SmsIncomingEtwsMsgNotiStruct
45 internal SmsEtwsMsgType EtwsMsgType;
46 internal short Length;
47 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1253)]
48 internal string SzMsgData;
51 [StructLayout(LayoutKind.Sequential)]
52 internal struct SmsDataPackageStruct
54 [MarshalAs(UnmanagedType.ByValTStr, SizeConst=20)]
57 [MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)]
58 internal string SzData;
59 internal SmsNetType Format;
62 [StructLayout(LayoutKind.Sequential)]
63 internal struct SmsDataStruct
66 internal SmsMessageStatus Status;
67 internal SmsDataPackageStruct Data;
70 [StructLayout(LayoutKind.Sequential)]
71 internal struct SmsCbConfigStruct
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;
81 [StructLayout(LayoutKind.Explicit)]
82 internal struct SmsCbMsgStruct
85 internal SmsCbMsg3gppStruct Net3gpp;
87 internal SmsCbMsg3gpp2Struct Net3gpp2;
90 [StructLayout(LayoutKind.Sequential)]
91 internal struct SmsCbMsg3gppStruct
93 internal ushort FromMsgId;
94 internal ushort ToMsgId;
95 internal byte Selected;
98 [StructLayout(LayoutKind.Sequential)]
99 internal struct SmsCbMsg3gpp2Struct
101 internal ushort CbCategory;
102 internal ushort CbLanguage;
103 internal byte Selected;
106 [StructLayout(LayoutKind.Sequential)]
107 internal struct SmsParamsStruct
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;
122 [StructLayout(LayoutKind.Sequential)]
123 internal struct SmsAddressStruct
125 internal uint DialNumLength;
126 internal SimTypeOfNumber Type;
127 internal SimNumberPlanIdentity Identity;
128 [MarshalAs(UnmanagedType.ByValTStr, SizeConst=21)]
129 internal string DiallingNumber;
132 internal static class SmsStructConversions
134 internal static SmsIncomingMessageNoti ConvertSmsIncomingStruct(SmsIncomingMsgNotiStruct msgStruct)
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;
144 internal static SmsIncomingCbMessageNoti ConvertSmsIncomingCbStruct(SmsIncomingCbMsgNotiStruct msgStruct)
146 SmsIncomingCbMessageNoti msgNoti = new SmsIncomingCbMessageNoti();
147 msgNoti.Len = msgStruct.Length;
148 msgNoti.CbType = msgStruct.CbMsgType;
149 msgNoti.Data = msgStruct.SzMsgData;
153 internal static SmsIncomingEtwsMessageNoti ConvertSmsIncomingEtwsStruct(SmsIncomingEtwsMsgNotiStruct msgStruct)
155 SmsIncomingEtwsMessageNoti msgNoti = new SmsIncomingEtwsMessageNoti();
156 msgNoti.Len = msgStruct.Length;
157 msgNoti.EtwsType = msgStruct.EtwsMsgType;
158 msgNoti.Data = msgStruct.SzMsgData;