|
1 /* |
|
2 * |
|
3 * Copyright (c) <2010> Comarch S.A. and/or its subsidiary(-ies). |
|
4 * All rights reserved. |
|
5 * This component and the accompanying materials are made available |
|
6 * under the terms of the License "Eclipse Public License v1.0" |
|
7 * which accompanies this distribution, and is available |
|
8 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
9 * |
|
10 * Original Contributors: |
|
11 * Comarch S.A. - original contribution. |
|
12 * |
|
13 * Contributors: |
|
14 * |
|
15 * Description: |
|
16 * |
|
17 */ |
|
18 |
|
19 #include <badesca.h> |
|
20 |
|
21 #include "hfpcommand.h" |
|
22 #include "debug.h" |
|
23 |
|
24 TATParam::TATParam( const TDesC8& aValue ) |
|
25 { |
|
26 if ( aValue.Length() <= KHsHFPMaxATParamSize ) |
|
27 { |
|
28 iValue.Copy( aValue ); |
|
29 } |
|
30 } |
|
31 |
|
32 const TDesC8& TATParam::Des() const |
|
33 { |
|
34 return iValue; |
|
35 } |
|
36 |
|
37 TInt TATParam::IntL() const |
|
38 { |
|
39 TRACE_FUNC_ENTRY |
|
40 TLex8 lex( iValue ); |
|
41 TInt res = KErrNotFound; |
|
42 User::LeaveIfError( lex.Val( res ) ); |
|
43 |
|
44 TRACE_FUNC_EXIT |
|
45 return res; |
|
46 |
|
47 } |
|
48 |
|
49 CHsHFPCommand* CHsHFPCommand::NewL() |
|
50 { |
|
51 CHsHFPCommand *self = CHsHFPCommand::NewLC(); |
|
52 CleanupStack::Pop( self ); |
|
53 |
|
54 return self; |
|
55 } |
|
56 |
|
57 CHsHFPCommand* CHsHFPCommand::NewLC() |
|
58 { |
|
59 |
|
60 CHsHFPCommand *self = new ( ELeave ) CHsHFPCommand(); |
|
61 CleanupStack::PushL( self ); |
|
62 self->ConstructL(); |
|
63 return self; |
|
64 } |
|
65 |
|
66 CHsHFPCommand::~CHsHFPCommand() |
|
67 { |
|
68 TRACE_FUNC_ENTRY |
|
69 iParams.Close(); |
|
70 iModeDes.Close(); |
|
71 iParamsDes.Close(); |
|
72 iTypeDes.Close(); |
|
73 TRACE_FUNC_EXIT |
|
74 } |
|
75 |
|
76 TInt CHsHFPCommand::SetType( const THsHFPCommandType aType ) |
|
77 { |
|
78 TRACE_FUNC_ENTRY |
|
79 iType = aType; |
|
80 |
|
81 switch ( iType ) |
|
82 { |
|
83 case EHFPCmdOK: |
|
84 iTypeDes.Copy( KHsHFPOKCommand ); |
|
85 break; |
|
86 case EHFPCmdERROR: |
|
87 iTypeDes.Copy( KHsHFPERRORCommand ); |
|
88 break; |
|
89 case EHFPCmdBRSF: |
|
90 iTypeDes.Copy( KHsHFPBRSFCommand ); |
|
91 break; |
|
92 case EHFPCmdCIND: |
|
93 iTypeDes.Copy( KHsHFPCINDCommand ); |
|
94 break; |
|
95 case EHFPCmdCMER: |
|
96 iTypeDes.Copy( KHsHFPCMERCommand ); |
|
97 break; |
|
98 case EHFPCmdCIEV: |
|
99 iTypeDes.Copy( KHsHFPCIEVCommand ); |
|
100 break; |
|
101 case EHFPCmdCHUP: |
|
102 iTypeDes.Copy( KHsHFPCHUPCommand ); |
|
103 break; |
|
104 case EHFPCmdCOPS: |
|
105 iTypeDes.Copy( KHsHFPCOPSCommand ); |
|
106 break; |
|
107 case EHFPCmdRING: |
|
108 iTypeDes.Copy( KHsHFPRINGCommand ); |
|
109 break; |
|
110 case EHFPCmdATA: |
|
111 iTypeDes.Copy( KHsHFPATACommandWithoutPrefix ); |
|
112 break; |
|
113 case EHFPCmdVGS: |
|
114 iTypeDes.Copy( KHsHFPVGSCommand ); |
|
115 break; |
|
116 case EHFPCmdVGM: |
|
117 iTypeDes.Copy( KHsHFPVGMCommand ); |
|
118 break; |
|
119 case EHFPCmdBLDN: |
|
120 iTypeDes.Copy( KHsHFPBLDNCommand ); |
|
121 break; |
|
122 case EHFPCmdATD: |
|
123 iTypeDes.Copy( KHsHFPATDCommandWithoutPrefix ); |
|
124 break; |
|
125 case EHFPCmdCLIP: |
|
126 iTypeDes.Copy( KHsHFPCLIPCommand ); |
|
127 break; |
|
128 default: |
|
129 TRACE_FUNC_EXIT |
|
130 return KErrArgument; |
|
131 } |
|
132 TRACE_FUNC_EXIT |
|
133 return KErrNone; |
|
134 } |
|
135 |
|
136 TInt CHsHFPCommand::SetMode( const THsHFPCommandMode aMode ) |
|
137 { |
|
138 TRACE_FUNC_ENTRY |
|
139 iMode = aMode; |
|
140 switch ( iMode ) |
|
141 { |
|
142 case ECmdModeRead: |
|
143 iModeDes.Copy( KHsHFPATReadModeDes ); |
|
144 break; |
|
145 case ECmdModeWrite: |
|
146 iModeDes.Copy( KHsHFPATWriteModeDes ); |
|
147 break; |
|
148 case ECmdModeTest: |
|
149 iModeDes.Copy( KHsHFPATTestModeDes ); |
|
150 break; |
|
151 case ECmdModeNormal: |
|
152 iModeDes.Copy( KNullDesC8 ); |
|
153 break; |
|
154 case ECmdModeOther: |
|
155 iModeDes.Copy( KNullDesC8 ); |
|
156 break; |
|
157 default: |
|
158 TRACE_FUNC_EXIT |
|
159 return KErrArgument; |
|
160 } |
|
161 TRACE_FUNC_EXIT |
|
162 return KErrNone; |
|
163 } |
|
164 |
|
165 TInt CHsHFPCommand::SetParams( const RATParamArray& aParams ) |
|
166 { |
|
167 TRACE_FUNC_ENTRY |
|
168 TInt res = KErrNone; |
|
169 |
|
170 if ( aParams.Count() > 0 ) |
|
171 { |
|
172 iParams.Reset(); |
|
173 iParams = aParams; |
|
174 iParamsDes.Zero(); |
|
175 |
|
176 for ( TInt i = 0; i < iParams.Count() - 1; i++ ) |
|
177 { |
|
178 iParamsDes.Append( iParams[i].Des() ); |
|
179 iParamsDes.Append( KHsHFPParamsSeparator ); |
|
180 } |
|
181 |
|
182 iParamsDes.Append( iParams[iParams.Count() - 1].Des() ); |
|
183 } |
|
184 TRACE_FUNC_EXIT |
|
185 return res; |
|
186 } |
|
187 |
|
188 void CHsHFPCommand::SetSource( const TBool aFromAG ) |
|
189 { |
|
190 iFromAG = aFromAG; |
|
191 } |
|
192 |
|
193 void CHsHFPCommand::ToDes8( TDes8& aBuf ) const |
|
194 { |
|
195 TRACE_FUNC_ENTRY |
|
196 if ( iMode == ECmdModeNormal ) |
|
197 { |
|
198 aBuf.Copy( KHsHFPCommandPrefix ); |
|
199 aBuf.Append( iTypeDes ); |
|
200 aBuf.Append( KHsHFPCommandSuffix ); |
|
201 } |
|
202 |
|
203 else if ( iType != EHFPCmdUnknown ) |
|
204 { |
|
205 aBuf.Copy( KHsHFPCommandPrefix ); |
|
206 aBuf.Append( iTypeDes ); |
|
207 aBuf.Append( iModeDes ); |
|
208 aBuf.Append( iParamsDes ); |
|
209 aBuf.Append( KHsHFPCommandSuffix ); |
|
210 } |
|
211 else |
|
212 { |
|
213 aBuf.Zero(); |
|
214 } |
|
215 |
|
216 TRACE_INFO((_L8("Command to des: %S"),&aBuf)); |
|
217 TRACE_FUNC_EXIT |
|
218 } |
|
219 |
|
220 THsHFPCommandType CHsHFPCommand::Type() const |
|
221 { |
|
222 return iType; |
|
223 } |
|
224 |
|
225 THsHFPCommandMode CHsHFPCommand::Mode() const |
|
226 { |
|
227 return iMode; |
|
228 } |
|
229 |
|
230 TBool CHsHFPCommand::FromAG() const |
|
231 { |
|
232 return iFromAG; |
|
233 } |
|
234 |
|
235 const RATParamArray& CHsHFPCommand::Params() const |
|
236 { |
|
237 return iParams; |
|
238 } |
|
239 |
|
240 void CHsHFPCommand::CopyL( const CHsHFPCommand& aCmdFrom, CHsHFPCommand& aCmdTo ) |
|
241 { |
|
242 TRACE_STATIC_FUNC_ENTRY |
|
243 aCmdTo.iMode = aCmdFrom.iMode; |
|
244 aCmdTo.iType = aCmdFrom.iType; |
|
245 |
|
246 aCmdTo.iParams.Reset(); |
|
247 for ( TInt i = 0; i < aCmdFrom.iParams.Count(); i++ ) |
|
248 { |
|
249 aCmdTo.iParams.AppendL( aCmdFrom.iParams[i] ); |
|
250 } |
|
251 |
|
252 aCmdTo.iFromAG = aCmdFrom.iFromAG; |
|
253 |
|
254 aCmdTo.iModeDes.Copy( aCmdFrom.iModeDes ); |
|
255 aCmdTo.iTypeDes.Copy( aCmdFrom.iTypeDes ); |
|
256 aCmdTo.iParamsDes.Copy( aCmdFrom.iParamsDes ); |
|
257 TRACE_FUNC_EXIT |
|
258 } |
|
259 |
|
260 CHsHFPCommand::CHsHFPCommand() : |
|
261 iType( EHFPCmdUnknown ), iParams( KParamArrayGranularity ) |
|
262 { |
|
263 |
|
264 } |
|
265 |
|
266 void CHsHFPCommand::ConstructL() |
|
267 { |
|
268 TRACE_FUNC_ENTRY |
|
269 iModeDes.CreateL( KModeDesMaxLength ); |
|
270 iTypeDes.CreateL( KTypeDesMaxLength ); |
|
271 iParamsDes.CreateL( KParamsDesMaxLength ); |
|
272 TRACE_FUNC_EXIT |
|
273 } |