17 |
17 |
18 #include "atcommandparser.h" |
18 #include "atcommandparser.h" |
19 #include <hash.h> |
19 #include <hash.h> |
20 |
20 |
21 #include "debug.h" |
21 #include "debug.h" |
22 |
22 #include "atmisccmdpluginconsts.h" |
23 |
|
24 // Max buffer length for an MD5 digest |
|
25 const TInt KSCPMaxHashLength( 32 ); |
|
26 |
|
27 |
23 |
28 TAtCommandParser::TAtCommandParser() |
24 TAtCommandParser::TAtCommandParser() |
29 : iCmdType(EUnknown), iCmdHandlerType(ECmdHandlerTypeUndefined) |
25 : iCmdType(EUnknown), iCmdHandlerType(ECmdHandlerTypeUndefined) |
30 { |
26 { |
|
27 TRACE_FUNC_ENTRY |
|
28 TRACE_FUNC_EXIT |
31 } |
29 } |
32 |
30 |
33 TAtCommandParser::TAtCommandParser(const TDesC8& aCmd) |
31 TAtCommandParser::TAtCommandParser(const TDesC8& aCmd) |
34 : iCmdType(EUnknown), iCmdHandlerType(ECmdHandlerTypeUndefined) |
32 : iCmdType(EUnknown), iCmdHandlerType(ECmdHandlerTypeUndefined) |
35 { |
33 { |
|
34 TRACE_FUNC_ENTRY |
36 ParseAtCommand(aCmd); |
35 ParseAtCommand(aCmd); |
37 } |
36 TRACE_FUNC_EXIT |
38 |
37 } |
39 |
38 |
40 void TAtCommandParser::ParseAtCommand(const TDesC8& aCmd) |
39 void TAtCommandParser::ParseAtCommand(const TDesC8& aCmd) |
41 { |
40 { |
42 TRACE_FUNC_ENTRY |
41 TRACE_FUNC_ENTRY |
43 iCmd.Assign(aCmd); |
42 iCmd.Assign(aCmd); |
57 _LIT8(KAtClck, "AT+CLCK"); |
56 _LIT8(KAtClck, "AT+CLCK"); |
58 _LIT8(KAtCpwd, "AT+CPWD"); |
57 _LIT8(KAtCpwd, "AT+CPWD"); |
59 _LIT8(KAtCpin, "AT+CPIN"); |
58 _LIT8(KAtCpin, "AT+CPIN"); |
60 _LIT8(KAtCusd, "AT+CUSD"); |
59 _LIT8(KAtCusd, "AT+CUSD"); |
61 _LIT8(KAtCnum, "AT+CNUM"); |
60 _LIT8(KAtCnum, "AT+CNUM"); |
|
61 _LIT8(KAtCmee, "AT+CMEE"); |
62 |
62 |
63 Trace(KDebugPrintS, "token: ", &token); |
63 Trace(KDebugPrintS, "token: ", &token); |
64 // Determine the AT command type |
64 // Determine the AT command type |
65 if(!token.Compare(KAtCfun)) |
65 if(!token.CompareF(KAtCfun)) |
66 { |
66 { |
67 iCmdType = ECmdAtCfun; |
67 iCmdType = ECmdAtCfun; |
68 } |
68 } |
69 else if(!token.Compare(KAtCbc)) |
69 else if(!token.CompareF(KAtCbc)) |
70 { |
70 { |
71 iCmdType = ECmdAtCbc; |
71 iCmdType = ECmdAtCbc; |
72 } |
72 } |
73 else if(!token.Compare(KAtClck)) |
73 else if(!token.CompareF(KAtClck)) |
74 { |
74 { |
75 iCmdType = ECmdAtClck; |
75 iCmdType = ECmdAtClck; |
76 } |
76 } |
77 else if(!token.Compare(KAtCpwd)) |
77 else if(!token.CompareF(KAtCpwd)) |
78 { |
78 { |
79 iCmdType = ECmdAtCpwd; |
79 iCmdType = ECmdAtCpwd; |
80 } |
80 } |
81 else if(!token.Compare(KAtCpin)) |
81 else if(!token.CompareF(KAtCpin)) |
82 { |
82 { |
83 iCmdType = ECmdAtCpin; |
83 iCmdType = ECmdAtCpin; |
84 } |
84 } |
85 else if(!token.Compare(KAtCusd)) |
85 else if(!token.CompareF(KAtCusd)) |
86 { |
86 { |
87 iCmdType = ECmdAtCusd; |
87 iCmdType = ECmdAtCusd; |
88 } |
88 } |
89 else if(!token.Compare(KAtCnum)) |
89 else if(!token.CompareF(KAtCnum)) |
90 { |
90 { |
91 iCmdType = ECmdAtCnum; |
91 iCmdType = ECmdAtCnum; |
|
92 } |
|
93 else if(!token.Compare(KAtCmee)) |
|
94 { |
|
95 iCmdType = ECmdAtCmee; |
92 } |
96 } |
93 else |
97 else |
94 { |
98 { |
95 iCmdType = EUnknown; |
99 iCmdType = EUnknown; |
96 TRACE_FUNC_EXIT |
100 TRACE_FUNC_EXIT |
164 } |
172 } |
165 TRACE_FUNC_EXIT |
173 TRACE_FUNC_EXIT |
166 return retVal; |
174 return retVal; |
167 } |
175 } |
168 |
176 |
169 TPtrC8 TAtCommandParser::NextTextParam(TInt& aError) |
177 TInt TAtCommandParser::NextTextParam(TPtrC8& aParam) |
170 { |
178 { |
|
179 TRACE_FUNC_ENTRY |
|
180 TInt ret = KErrNone; |
171 TPtrC8 param = NextParam(); |
181 TPtrC8 param = NextParam(); |
172 |
182 |
173 if (param.Compare(KNullDesC8) == 0) |
183 if (param.Length() == 0) |
174 { |
184 { |
175 aError = KErrNotFound; |
185 aParam.Set(NULL,0); |
176 return param; |
186 ret = KErrNotFound; |
177 } |
187 } |
178 |
188 else if(param.Length() < 2 || param[0] != '"' |
179 if(param.Length()<2 |
|
180 || param[0] != '"' |
|
181 || param[param.Length()-1] != '"') |
189 || param[param.Length()-1] != '"') |
182 { |
190 { |
183 aError = KErrArgument; |
191 aParam.Set(NULL,0); |
184 return param.Left(0); |
192 ret = KErrArgument; |
185 } |
193 } |
186 aError = KErrNone; |
194 else |
187 return param.Mid(1, param.Length() - 2); |
195 { |
|
196 aParam.Set(param.Mid(1, param.Length() - 2)); |
|
197 } |
|
198 TRACE_FUNC_EXIT |
|
199 return ret; |
188 } |
200 } |
189 |
201 |
190 TInt TAtCommandParser::NextIntParam(TInt& aValue) |
202 TInt TAtCommandParser::NextIntParam(TInt& aValue) |
191 { |
203 { |
192 TRACE_FUNC_ENTRY |
204 TRACE_FUNC_ENTRY |
193 TInt retVal =KErrNone; |
205 TInt retVal =KErrNone; |
194 TPtrC8 param = NextParam(); |
206 TPtrC8 param = NextParam(); |
195 if (param.Compare(KNullDesC8) == 0) |
207 if (param.Length() == 0) |
196 { |
208 { |
197 retVal = KErrNotFound; |
209 retVal = KErrNotFound; |
198 } |
210 } |
199 else |
211 else |
200 { |
212 { |