50 // ----------------------------------------------------------------------------- |
50 // ----------------------------------------------------------------------------- |
51 // |
51 // |
52 TInt TSsParser::Parse( const TDesC& aServiceString ) |
52 TInt TSsParser::Parse( const TDesC& aServiceString ) |
53 { |
53 { |
54 TFLOGSTRING2( "TSY: TSsParser::Parse, servicestring: %S", &aServiceString ); |
54 TFLOGSTRING2( "TSY: TSsParser::Parse, servicestring: %S", &aServiceString ); |
55 OstTraceExt1( TRACE_NORMAL, TSSPARSER_PARSE, "TSsParser::Parse;aServiceString=%S", aServiceString ); |
55 OstTraceExt1( TRACE_NORMAL, TSSPARSER_PARSE_TD, "TSsParser::Parse;aServiceString=%S", aServiceString ); |
56 |
56 |
57 TInt error( KErrNone ); |
57 TInt error( KErrNone ); |
58 |
58 |
59 // at first check that service string is not too long |
59 // at first check that service string is not too long |
60 if( MAX_LENGTH_OF_SERVICE_STRING < aServiceString.Length( ) || |
60 if( MAX_LENGTH_OF_SERVICE_STRING < aServiceString.Length( ) || |
61 0 >= aServiceString.Length( ) ) |
61 0 >= aServiceString.Length( ) ) |
62 { |
62 { |
63 TFLOGSTRING( "TSY: TSsParser::Parse, error: service string too long or does not exist!" ); |
63 TFLOGSTRING( "TSY: TSsParser::Parse, error: service string too long or does not exist!" ); |
64 OstTrace0( TRACE_NORMAL, DUP1_TSSPARSER_PARSE, "TSsParser::Parse, error: service string too long or does not exist!" ); |
64 OstTrace0( TRACE_NORMAL, DUP1_TSSPARSER_PARSE_TD, "TSsParser::Parse, error: service string too long or does not exist!" ); |
65 error = KErrArgument; |
65 error = KErrArgument; |
66 } |
66 } |
67 |
67 |
68 else |
68 else |
69 { |
69 { |
80 TPtrC tempBuffer; |
80 TPtrC tempBuffer; |
81 ExtractPart( tempBuffer ); |
81 ExtractPart( tempBuffer ); |
82 // convert service code to integer |
82 // convert service code to integer |
83 iServiceCode = GetInt( tempBuffer ); |
83 iServiceCode = GetInt( tempBuffer ); |
84 TFLOGSTRING2( "TSY: TSsParser::Parse, service code: %d", iServiceCode ); |
84 TFLOGSTRING2( "TSY: TSsParser::Parse, service code: %d", iServiceCode ); |
85 OstTraceExt1( TRACE_NORMAL, DUP2_TSSPARSER_PARSE, "TSsParser::Parse;iServiceCode=%hu", iServiceCode ); |
85 OstTraceExt1( TRACE_NORMAL, DUP2_TSSPARSER_PARSE_TD, "TSsParser::Parse;iServiceCode=%hu", iServiceCode ); |
86 |
86 |
87 if( SS_UNKNOWN_SERVICE == iServiceCode ) |
87 if( SS_UNKNOWN_SERVICE == iServiceCode ) |
88 { |
88 { |
89 error = KErrArgument; |
89 error = KErrArgument; |
90 TFLOGSTRING( "TSY: TSsParser::Parse, error: illegal sevice code!" ); |
90 TFLOGSTRING( "TSY: TSsParser::Parse, error: illegal sevice code!" ); |
91 OstTrace0( TRACE_NORMAL, DUP3_TSSPARSER_PARSE, "TSsParser::Parse, error: illegal sevice code!" ); |
91 OstTrace0( TRACE_NORMAL, DUP3_TSSPARSER_PARSE_TD, "TSsParser::Parse, error: illegal sevice code!" ); |
92 } |
92 } |
93 } |
93 } |
94 |
94 |
95 // service code was parsed successfully, extract supplementary infos a,b,c |
95 // service code was parsed successfully, extract supplementary infos a,b,c |
96 if( KErrNone == error ) |
96 if( KErrNone == error ) |
119 } |
119 } |
120 else |
120 else |
121 { |
121 { |
122 error = KErrArgument; |
122 error = KErrArgument; |
123 TFLOGSTRING( "TSY: TSsParser::Parse, error: illegal end mark!" ); |
123 TFLOGSTRING( "TSY: TSsParser::Parse, error: illegal end mark!" ); |
124 OstTrace0( TRACE_NORMAL, DUP4_TSSPARSER_PARSE, "TSsParser::Parse, error: illegal end mark!" ); |
124 OstTrace0( TRACE_NORMAL, DUP4_TSSPARSER_PARSE_TD, "TSsParser::Parse, error: illegal end mark!" ); |
125 break; |
125 break; |
126 } |
126 } |
127 } |
127 } |
128 iSupplementaryInfoA.Set( tempSiBuffer[0] ); |
128 iSupplementaryInfoA.Set( tempSiBuffer[0] ); |
129 iSupplementaryInfoB.Set( tempSiBuffer[1] ); |
129 iSupplementaryInfoB.Set( tempSiBuffer[1] ); |
130 iSupplementaryInfoC.Set( tempSiBuffer[2] ); |
130 iSupplementaryInfoC.Set( tempSiBuffer[2] ); |
131 } |
131 } |
132 |
132 |
133 TFLOGSTRING2( "TSY: TSsParser::Parse, SS code: %d", iSsOperation ); |
133 TFLOGSTRING2( "TSY: TSsParser::Parse, SS code: %d", iSsOperation ); |
134 OstTraceExt1( TRACE_NORMAL, DUP5_TSSPARSER_PARSE, "TSsParser::Parse;iSsOperation=%hhu", iSsOperation ); |
134 OstTraceExt1( TRACE_NORMAL, DUP5_TSSPARSER_PARSE_TD, "TSsParser::Parse;iSsOperation=%hhu", iSsOperation ); |
135 TFLOGSTRING2( "TSY: TSsParser::Parse, SS code: %d", iServiceCode ); |
135 TFLOGSTRING2( "TSY: TSsParser::Parse, SS code: %d", iServiceCode ); |
136 OstTraceExt1( TRACE_NORMAL, DUP6_TSSPARSER_PARSE, "TSsParser::Parse;iServiceCode=%hu", iServiceCode ); |
136 OstTraceExt1( TRACE_NORMAL, DUP6_TSSPARSER_PARSE_TD, "TSsParser::Parse;iServiceCode=%hu", iServiceCode ); |
137 TFLOGSTRING2( "TSY: TSsParser::Parse, SS info A: %S", &iSupplementaryInfoA ); |
137 TFLOGSTRING2( "TSY: TSsParser::Parse, SS info A: %S", &iSupplementaryInfoA ); |
138 OstTraceExt1( TRACE_NORMAL, DUP7_TSSPARSER_PARSE, "TSsParser::Parse;iSupplementaryInfoA=%S", iSupplementaryInfoA ); |
138 OstTraceExt1( TRACE_NORMAL, DUP7_TSSPARSER_PARSE_TD, "TSsParser::Parse;iSupplementaryInfoA=%S", iSupplementaryInfoA ); |
139 TFLOGSTRING2( "TSY: TSsParser::Parse, SS info B: %S", &iSupplementaryInfoB ); |
139 TFLOGSTRING2( "TSY: TSsParser::Parse, SS info B: %S", &iSupplementaryInfoB ); |
140 OstTraceExt1( TRACE_NORMAL, DUP8_TSSPARSER_PARSE, "TSsParser::Parse;iSupplementaryInfoB=%S", iSupplementaryInfoB ); |
140 OstTraceExt1( TRACE_NORMAL, DUP8_TSSPARSER_PARSE_TD, "TSsParser::Parse;iSupplementaryInfoB=%S", iSupplementaryInfoB ); |
141 TFLOGSTRING2( "TSY: TSsParser::Parse, SS info C: %S", &iSupplementaryInfoC ); |
141 TFLOGSTRING2( "TSY: TSsParser::Parse, SS info C: %S", &iSupplementaryInfoC ); |
142 OstTraceExt1( TRACE_NORMAL, DUP9_TSSPARSER_PARSE, "TSsParser::Parse;iSupplementaryInfoC=%S", iSupplementaryInfoC ); |
142 OstTraceExt1( TRACE_NORMAL, DUP9_TSSPARSER_PARSE_TD, "TSsParser::Parse;iSupplementaryInfoC=%S", iSupplementaryInfoC ); |
143 TFLOGSTRING2( "TSY: TSsParser::Parse, SS string left: %S", &iServiceString ); |
143 TFLOGSTRING2( "TSY: TSsParser::Parse, SS string left: %S", &iServiceString ); |
144 OstTraceExt1( TRACE_NORMAL, DUP10_TSSPARSER_PARSE, "TSsParser::Parse;iServiceString=%S", iServiceString ); |
144 OstTraceExt1( TRACE_NORMAL, DUP10_TSSPARSER_PARSE_TD, "TSsParser::Parse;iServiceString=%S", iServiceString ); |
145 |
145 |
146 return error; |
146 return error; |
147 } |
147 } |
148 |
148 |
149 |
149 |
201 // ----------------------------------------------------------------------------- |
201 // ----------------------------------------------------------------------------- |
202 // |
202 // |
203 TUint8 TSsParser::ExtractSsOperation( ) |
203 TUint8 TSsParser::ExtractSsOperation( ) |
204 { |
204 { |
205 TFLOGSTRING( "TSY: TSsParser::ExtractSsOperation" ); |
205 TFLOGSTRING( "TSY: TSsParser::ExtractSsOperation" ); |
206 OstTrace0( TRACE_NORMAL, TSSPARSER_EXTRACTSSOPERATION, "TSsParser::ExtractSsOperation" ); |
206 OstTrace0( TRACE_NORMAL, TSSPARSER_EXTRACTSSOPERATION_TD, "TSsParser::ExtractSsOperation" ); |
207 TInt error( KErrNone ); |
207 TInt error( KErrNone ); |
208 |
208 |
209 // SS operation is one or two first characters in the service string |
209 // SS operation is one or two first characters in the service string |
210 if( iServiceString.Left( 2 ) == KSsOperationErasure ) |
210 if( iServiceString.Left( 2 ) == KSsOperationErasure ) |
211 { |
211 { |
212 iSsOperation = SS_ERASURE; // unregister and deactivate |
212 iSsOperation = SS_ERASURE; // unregister and deactivate |
213 iServiceString.Set( iServiceString.Mid( 2 ) ); // extract remaining part |
213 iServiceString.Set( iServiceString.Mid( 2 ) ); // extract remaining part |
214 TFLOGSTRING2( "TSY: TSsParser::ExtractSsOperation, SS operation: erasure (%d)", iSsOperation ); |
214 TFLOGSTRING2( "TSY: TSsParser::ExtractSsOperation, SS operation: erasure (%d)", iSsOperation ); |
215 OstTraceExt1( TRACE_NORMAL, DUP1_TSSPARSER_EXTRACTSSOPERATION, "TSsParser::ExtractSsOperation;SS operation: erasure (%hhu)", iSsOperation ); |
215 OstTraceExt1( TRACE_NORMAL, DUP1_TSSPARSER_EXTRACTSSOPERATION_TD, "TSsParser::ExtractSsOperation;SS operation: erasure (%hhu)", iSsOperation ); |
216 } |
216 } |
217 else if( iServiceString.Left( 2 ) == KSsOperationInterrogation ) |
217 else if( iServiceString.Left( 2 ) == KSsOperationInterrogation ) |
218 { |
218 { |
219 iSsOperation = SS_INTERROGATION; // check status |
219 iSsOperation = SS_INTERROGATION; // check status |
220 iServiceString.Set( iServiceString.Mid ( 2 ) ); |
220 iServiceString.Set( iServiceString.Mid ( 2 ) ); |
221 TFLOGSTRING2( "TSY: TSsParser::ExtractSsOperation, SS operation: interrogation (%d)", iSsOperation ); |
221 TFLOGSTRING2( "TSY: TSsParser::ExtractSsOperation, SS operation: interrogation (%d)", iSsOperation ); |
222 OstTraceExt1( TRACE_NORMAL, DUP2_TSSPARSER_EXTRACTSSOPERATION, "TSsParser::ExtractSsOperation;SS operation: interrogation (%hhu)", iSsOperation ); |
222 OstTraceExt1( TRACE_NORMAL, DUP2_TSSPARSER_EXTRACTSSOPERATION_TD, "TSsParser::ExtractSsOperation;SS operation: interrogation (%hhu)", iSsOperation ); |
223 } |
223 } |
224 else if( iServiceString.Left( 2 ) == KSsOperationRegistration ) |
224 else if( iServiceString.Left( 2 ) == KSsOperationRegistration ) |
225 { |
225 { |
226 iSsOperation = SS_REGISTRATION; // register and activate |
226 iSsOperation = SS_REGISTRATION; // register and activate |
227 iServiceString.Set( iServiceString.Mid( 2 ) ); |
227 iServiceString.Set( iServiceString.Mid( 2 ) ); |
228 TFLOGSTRING2( "TSY: TSsParser::ExtractSsOperation, SS operation: registration (%d)", iSsOperation ); |
228 TFLOGSTRING2( "TSY: TSsParser::ExtractSsOperation, SS operation: registration (%d)", iSsOperation ); |
229 OstTraceExt1( TRACE_NORMAL, DUP3_TSSPARSER_EXTRACTSSOPERATION, "TSsParser::ExtractSsOperation;SS operation: registration (%hhu)", iSsOperation ); |
229 OstTraceExt1( TRACE_NORMAL, DUP3_TSSPARSER_EXTRACTSSOPERATION_TD, "TSsParser::ExtractSsOperation;SS operation: registration (%hhu)", iSsOperation ); |
230 } |
230 } |
231 else if( iServiceString.Left( 1 ) == KSsOperationActivation ) |
231 else if( iServiceString.Left( 1 ) == KSsOperationActivation ) |
232 { |
232 { |
233 iSsOperation = SS_ACTIVATION; // activate |
233 iSsOperation = SS_ACTIVATION; // activate |
234 iServiceString.Set( iServiceString.Mid( 1 ) ); |
234 iServiceString.Set( iServiceString.Mid( 1 ) ); |
235 TFLOGSTRING2( "TSY: TSsParser::ExtractSsOperation, SS operation: activation (%d)", iSsOperation ); |
235 TFLOGSTRING2( "TSY: TSsParser::ExtractSsOperation, SS operation: activation (%d)", iSsOperation ); |
236 OstTraceExt1( TRACE_NORMAL, DUP4_TSSPARSER_EXTRACTSSOPERATION, "TSsParser::ExtractSsOperation;SS operation: activation (%hhu)", iSsOperation ); |
236 OstTraceExt1( TRACE_NORMAL, DUP4_TSSPARSER_EXTRACTSSOPERATION_TD, "TSsParser::ExtractSsOperation;SS operation: activation (%hhu)", iSsOperation ); |
237 } |
237 } |
238 else if( iServiceString.Left( 1 ) == KSsOperationDeactivation ) |
238 else if( iServiceString.Left( 1 ) == KSsOperationDeactivation ) |
239 { |
239 { |
240 iSsOperation = SS_DEACTIVATION; // unregister |
240 iSsOperation = SS_DEACTIVATION; // unregister |
241 iServiceString.Set( iServiceString.Mid( 1 ) ); |
241 iServiceString.Set( iServiceString.Mid( 1 ) ); |
242 TFLOGSTRING2( "TSY: TSsParser::ExtractSsOperation, SS operation: deactivation (%d)", iSsOperation ); |
242 TFLOGSTRING2( "TSY: TSsParser::ExtractSsOperation, SS operation: deactivation (%d)", iSsOperation ); |
243 OstTraceExt1( TRACE_NORMAL, DUP5_TSSPARSER_EXTRACTSSOPERATION, "TSsParser::ExtractSsOperation;SS operation: deactivation (%hhu)", iSsOperation ); |
243 OstTraceExt1( TRACE_NORMAL, DUP5_TSSPARSER_EXTRACTSSOPERATION_TD, "TSsParser::ExtractSsOperation;SS operation: deactivation (%hhu)", iSsOperation ); |
244 } |
244 } |
245 else |
245 else |
246 { |
246 { |
247 iSsOperation = SS_OPERATION_UNDEFINED; |
247 iSsOperation = SS_OPERATION_UNDEFINED; |
248 TFLOGSTRING2( "TSY: TSsParser::ExtractSsOperation, SS operation: undefined (%d)", iSsOperation ); |
248 TFLOGSTRING2( "TSY: TSsParser::ExtractSsOperation, SS operation: undefined (%d)", iSsOperation ); |
249 OstTraceExt1( TRACE_NORMAL, DUP6_TSSPARSER_EXTRACTSSOPERATION, "TSsParser::ExtractSsOperation;SS operation: undefined (%hhu)", iSsOperation ); |
249 OstTraceExt1( TRACE_NORMAL, DUP6_TSSPARSER_EXTRACTSSOPERATION_TD, "TSsParser::ExtractSsOperation;SS operation: undefined (%hhu)", iSsOperation ); |
250 error = KErrArgument; |
250 error = KErrArgument; |
251 } |
251 } |
252 |
252 |
253 return error; |
253 return error; |
254 } |
254 } |
289 // ----------------------------------------------------------------------------- |
289 // ----------------------------------------------------------------------------- |
290 // |
290 // |
291 TCharacter TSsParser::ExtractSeparator( ) |
291 TCharacter TSsParser::ExtractSeparator( ) |
292 { |
292 { |
293 TFLOGSTRING( "TSY: TSsParser::ExtractSeparator" ); |
293 TFLOGSTRING( "TSY: TSsParser::ExtractSeparator" ); |
294 OstTrace0( TRACE_NORMAL, TSSPARSER_EXTRACTSEPARATOR, "TSsParser::ExtractSeparator" ); |
294 OstTrace0( TRACE_NORMAL, TSSPARSER_EXTRACTSEPARATOR_TD, "TSsParser::ExtractSeparator" ); |
295 TCharacter mark( ECharacterIllegal ); |
295 TCharacter mark( ECharacterIllegal ); |
296 // There should be at least the end mark '#' left in string |
296 // There should be at least the end mark '#' left in string |
297 if( iServiceString.Length() > 0 ) |
297 if( iServiceString.Length() > 0 ) |
298 { |
298 { |
299 if( '#' == iServiceString[0] ) |
299 if( '#' == iServiceString[0] ) |
300 { |
300 { |
301 TFLOGSTRING( "TSY: TSsParser::ExtractSeparator: end mark '#'" ); |
301 TFLOGSTRING( "TSY: TSsParser::ExtractSeparator: end mark '#'" ); |
302 OstTrace0( TRACE_NORMAL, DUP1_TSSPARSER_EXTRACTSEPARATOR, "TSsParser::ExtractSeparator, end mark '#'" ); |
302 OstTrace0( TRACE_NORMAL, DUP1_TSSPARSER_EXTRACTSEPARATOR_TD, "TSsParser::ExtractSeparator, end mark '#'" ); |
303 mark = ECharacterEndMark; |
303 mark = ECharacterEndMark; |
304 } |
304 } |
305 else if( '*' == iServiceString[0] ) |
305 else if( '*' == iServiceString[0] ) |
306 { |
306 { |
307 TFLOGSTRING( "TSY: TSsParser::ExtractSeparator: separator mark '*'" ); |
307 TFLOGSTRING( "TSY: TSsParser::ExtractSeparator: separator mark '*'" ); |
308 OstTrace0( TRACE_NORMAL, DUP2_TSSPARSER_EXTRACTSEPARATOR, "TSsParser::ExtractSeparator, separator mark '*'" ); |
308 OstTrace0( TRACE_NORMAL, DUP2_TSSPARSER_EXTRACTSEPARATOR_TD, "TSsParser::ExtractSeparator, separator mark '*'" ); |
309 mark = ECharacterSeparator; |
309 mark = ECharacterSeparator; |
310 } |
310 } |
311 // no else |
311 // no else |
312 iServiceString.Set( iServiceString.Mid( 1 ) ); |
312 iServiceString.Set( iServiceString.Mid( 1 ) ); |
313 } |
313 } |
314 else // end mark was missing |
314 else // end mark was missing |
315 { |
315 { |
316 TFLOGSTRING( "TSY: TSsParser::ExtractSeparator: illegal ss string, no end mark!" ); |
316 TFLOGSTRING( "TSY: TSsParser::ExtractSeparator: illegal ss string, no end mark!" ); |
317 OstTrace0( TRACE_NORMAL, DUP3_TSSPARSER_EXTRACTSEPARATOR, "TSsParser::ExtractSeparator, illegal ss string, no end mark!" ); |
317 OstTrace0( TRACE_NORMAL, DUP3_TSSPARSER_EXTRACTSEPARATOR_TD, "TSsParser::ExtractSeparator, illegal ss string, no end mark!" ); |
318 } |
318 } |
319 return mark; |
319 return mark; |
320 } |
320 } |
321 |
321 |
322 |
322 |