1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). |
1 // Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). |
2 // All rights reserved. |
2 // All rights reserved. |
3 // This component and the accompanying materials are made available |
3 // This component and the accompanying materials are made available |
4 // under the terms of "Eclipse Public License v1.0" |
4 // under the terms of "Eclipse Public License v1.0" |
5 // which accompanies this distribution, and is available |
5 // which accompanies this distribution, and is available |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
16 // DataDownload-related functionality of Sat Tsy |
16 // DataDownload-related functionality of Sat Tsy |
17 // Version : 1.0 |
17 // Version : 1.0 |
18 // |
18 // |
19 |
19 |
20 |
20 |
|
21 |
|
22 |
|
23 #include "OstTraceDefinitions.h" |
|
24 #ifdef OST_TRACE_COMPILER_IN_USE |
|
25 #include "csatdatadownloadtsyTraces.h" |
|
26 #endif |
21 |
27 |
22 #include <satcs.h> // Etel SAT IPC definitions |
28 #include <satcs.h> // Etel SAT IPC definitions |
23 #include <etelmm.h> // Etel MM Definitions |
29 #include <etelmm.h> // Etel MM Definitions |
24 #include "CSatDataPackage.h" // Parameter packing |
30 #include "CSatDataPackage.h" // Parameter packing |
25 #include "CSatDataDownloadTsy.h" // Class header |
31 #include "CSatDataDownloadTsy.h" // Class header |
26 #include "CSatTsy.h" // Sat Tsy class |
32 #include "CSatTsy.h" // Sat Tsy class |
27 #include "TSatUtility.h" // Utilities |
33 #include "TSatUtility.h" // Utilities |
28 #include "cmmmessagemanagerbase.h" // Message manager class for forwarding req. |
34 #include "cmmmessagemanagerbase.h" // Message manager class for forwarding req. |
29 #include "TfLogger.h" // For TFLOGSTRING |
|
30 #include "CBerTlv.h" // Ber Tlv |
35 #include "CBerTlv.h" // Ber Tlv |
31 #include "TTlv.h" // TTlv class |
36 #include "TTlv.h" // TTlv class |
32 #include "MSatTsy_IPCDefs.h" // Sat Tsy internal request types |
37 #include "MSatTsy_IPCDefs.h" // Sat Tsy internal request types |
33 |
38 |
34 // ----------------------------------------------------------------------------- |
39 // ----------------------------------------------------------------------------- |
39 CSatDataDownloadTsy* CSatDataDownloadTsy::NewL |
44 CSatDataDownloadTsy* CSatDataDownloadTsy::NewL |
40 ( |
45 ( |
41 CSatTsy* aSatTsy |
46 CSatTsy* aSatTsy |
42 ) |
47 ) |
43 { |
48 { |
44 TFLOGSTRING( "CSAT: CSatDataDownloadTsy::NewL" ); |
49 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_NEWL_1, "CSAT: CSatDataDownloadTsy::NewL" ); |
45 CSatDataDownloadTsy* const satDataDownloadTsy = |
50 CSatDataDownloadTsy* const satDataDownloadTsy = |
46 new ( ELeave ) CSatDataDownloadTsy(); |
51 new ( ELeave ) CSatDataDownloadTsy(); |
47 CleanupStack::PushL( satDataDownloadTsy ); |
52 CleanupStack::PushL( satDataDownloadTsy ); |
48 satDataDownloadTsy->iSatTsy = aSatTsy; |
53 satDataDownloadTsy->iSatTsy = aSatTsy; |
49 satDataDownloadTsy->ConstructL(); |
54 satDataDownloadTsy->ConstructL(); |
50 CleanupStack::Pop( satDataDownloadTsy ); |
55 CleanupStack::Pop( satDataDownloadTsy ); |
51 TFLOGSTRING( "CSAT: CSatDataDownloadTsy::NewL, end of method" ); |
56 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_NEWL_2, "CSAT: CSatDataDownloadTsy::NewL, end of method" ); |
52 return satDataDownloadTsy; |
57 return satDataDownloadTsy; |
53 } |
58 } |
54 |
59 |
55 // ----------------------------------------------------------------------------- |
60 // ----------------------------------------------------------------------------- |
56 // CSatDataDownloadTsy::~CSatDataDownloadTsy |
61 // CSatDataDownloadTsy::~CSatDataDownloadTsy |
60 CSatDataDownloadTsy::~CSatDataDownloadTsy |
65 CSatDataDownloadTsy::~CSatDataDownloadTsy |
61 ( |
66 ( |
62 void |
67 void |
63 ) |
68 ) |
64 { |
69 { |
65 TFLOGSTRING( "CSAT: CSatDataDownloadTsy::~CSatDataDownloadTsy" ); |
70 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_DTOR_1, "CSAT: CSatDataDownloadTsy::~CSatDataDownloadTsy" ); |
66 // Unregister |
71 // Unregister |
67 iSatTsy->MessageManager()->RegisterTsyObject( |
72 iSatTsy->MessageManager()->RegisterTsyObject( |
68 CMmMessageManagerBase::ESatDataDownloadTsyObjType, NULL ); |
73 CMmMessageManagerBase::ESatDataDownloadTsyObjType, NULL ); |
69 } |
74 } |
70 |
75 |
89 void CSatDataDownloadTsy::ConstructL |
94 void CSatDataDownloadTsy::ConstructL |
90 ( |
95 ( |
91 void |
96 void |
92 ) |
97 ) |
93 { |
98 { |
94 TFLOGSTRING( "CSAT: CSatDataDownloadTsy::ConstructL" ); |
99 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_CONSTRUCTL_1, "CSAT: CSatDataDownloadTsy::ConstructL" ); |
95 // Register |
100 // Register |
96 iSatTsy->MessageManager()->RegisterTsyObject( |
101 iSatTsy->MessageManager()->RegisterTsyObject( |
97 CMmMessageManagerBase::ESatDataDownloadTsyObjType, this ); |
102 CMmMessageManagerBase::ESatDataDownloadTsyObjType, this ); |
98 // Initialize as not supported |
103 // Initialize as not supported |
99 iIsSmsPpDdlSupported = EFalse; |
104 iIsSmsPpDdlSupported = EFalse; |
108 void CSatDataDownloadTsy::CompleteCellBroadcastDdlL |
113 void CSatDataDownloadTsy::CompleteCellBroadcastDdlL |
109 ( |
114 ( |
110 const CSatDataPackage* aDataPackage |
115 const CSatDataPackage* aDataPackage |
111 ) |
116 ) |
112 { |
117 { |
113 TFLOGSTRING( "CSAT:CSatDataDownloadTsy::CompleteCellBroadcastDdlL" ); |
118 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_COMPLETECELLBROADCASTDDLL_1, "CSAT:CSatDataDownloadTsy::CompleteCellBroadcastDdlL" ); |
114 |
119 |
115 TBuf8<KCbsMsgMaxLength> aPdu; |
120 TBuf8<KCbsMsgMaxLength> aPdu; |
116 aDataPackage->UnPackData( aPdu ); |
121 aDataPackage->UnPackData( aPdu ); |
117 TTlv envelope; |
122 TTlv envelope; |
118 // Tag |
123 // Tag |
150 void CSatDataDownloadTsy::CompleteSmsPpDdlL |
155 void CSatDataDownloadTsy::CompleteSmsPpDdlL |
151 ( |
156 ( |
152 const CSatDataPackage* aDataPackage |
157 const CSatDataPackage* aDataPackage |
153 ) |
158 ) |
154 { |
159 { |
155 TFLOGSTRING( "CSAT:CSatDataDownloadTsy::CompleteSmsPpDdlL" ); |
160 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_COMPLETESMSPPDDLL_1, "CSAT:CSatDataDownloadTsy::CompleteSmsPpDdlL" ); |
156 TBuf8<KAddrMaxLength> smsScAddress; |
161 TBuf8<KAddrMaxLength> smsScAddress; |
157 TBuf8<RMobileSmsMessaging::KGsmTpduSize> smsTpdu; |
162 TBuf8<RMobileSmsMessaging::KGsmTpduSize> smsTpdu; |
158 |
163 |
159 // Unpack data |
164 // Unpack data |
160 aDataPackage->UnPackData( smsScAddress, smsTpdu ); |
165 aDataPackage->UnPackData( smsScAddress, smsTpdu ); |
170 // Check if the SMS should be saved to EFsms (see method descr.) |
175 // Check if the SMS should be saved to EFsms (see method descr.) |
171 if ( KErrNone == ParseSmsTpdu( smsTpdu ) && |
176 if ( KErrNone == ParseSmsTpdu( smsTpdu ) && |
172 KSmsTpduProtcolIdUSimDdl == iSmsTpdu.iProtocolId && |
177 KSmsTpduProtcolIdUSimDdl == iSmsTpdu.iProtocolId && |
173 ( !( iSmsTpdu.iDcs & 0x01 ) ) && ( iSmsTpdu.iDcs & 0x02 ) ) |
178 ( !( iSmsTpdu.iDcs & 0x01 ) ) && ( iSmsTpdu.iDcs & 0x02 ) ) |
174 { |
179 { |
175 TFLOGSTRING( "CSAT:CSatDataDownloadTsy::CompleteSmsPpDdlL,\ |
180 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_COMPLETESMSPPDDLL_2, "CSAT:CSatDataDownloadTsy::CompleteSmsPpDdlL, SMS PP DDL is not supported, Store SMS to EFsms" ); |
176 SMS PP DDL is not supported, Store SMS to EFsms" ); |
|
177 CreateEntryForSavingSmsL( smsScAddress, smsTpdu ); |
181 CreateEntryForSavingSmsL( smsScAddress, smsTpdu ); |
178 } |
182 } |
179 } |
183 } |
180 } |
184 } |
181 |
185 |
189 ( |
193 ( |
190 const TDesC8& aSmsScAddress, |
194 const TDesC8& aSmsScAddress, |
191 const TDesC8& aSmsTpdu |
195 const TDesC8& aSmsTpdu |
192 ) |
196 ) |
193 { |
197 { |
194 TFLOGSTRING2( "CSAT:CSatDataDownloadTsy::CreateEntryForSavingSms\ |
198 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_CREATEENTRYFORSAVINGSMSL_1, "CSAT:CSatDataDownloadTsy::CreateEntryForSavingSms SC Addr. length: %d", aSmsScAddress.Length() ); |
195 SC Addr. length: %d", aSmsScAddress.Length() ); |
|
196 TInt offset = 0; |
199 TInt offset = 0; |
197 |
200 |
198 // Check that the SC address length contains the length in |
201 // Check that the SC address length contains the length in |
199 // addition to the address. |
202 // addition to the address. |
200 if ( ( aSmsScAddress[offset] + 1 ) == aSmsScAddress.Length() ) |
203 if ( ( aSmsScAddress[offset] + 1 ) == aSmsScAddress.Length() ) |
226 } |
229 } |
227 |
230 |
228 // Copy the Service Centre address and TPDU data |
231 // Copy the Service Centre address and TPDU data |
229 smsEntry.iServiceCentre.iTelNumber.Copy( scAddress16 ); |
232 smsEntry.iServiceCentre.iTelNumber.Copy( scAddress16 ); |
230 |
233 |
231 TFLOGSTRING2("CSAT:CSatDataDownloadTsy::CreateEntryForSavingSms,\ |
234 OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_CREATEENTRYFORSAVINGSMSL_2, "CSAT:CSatDataDownloadTsy::CreateEntryForSavingSms, iTelNumber: %S", smsEntry.iServiceCentre.iTelNumber ); |
232 iTelNumber: %S", &smsEntry.iServiceCentre.iTelNumber ); |
|
233 |
235 |
234 smsEntry.iMsgData.Copy( aSmsTpdu ); |
236 smsEntry.iMsgData.Copy( aSmsTpdu ); |
235 |
237 |
236 // We set the index to point -1, since it means we use the 1st free |
238 // We set the index to point -1, since it means we use the 1st free |
237 // slot. See Etel MM API Specification, 8.1.4 Write Entry. |
239 // slot. See Etel MM API Specification, 8.1.4 Write Entry. |
258 void CSatDataDownloadTsy::CreateSmsDeliverReportL |
260 void CSatDataDownloadTsy::CreateSmsDeliverReportL |
259 ( |
261 ( |
260 TInt aResult |
262 TInt aResult |
261 ) |
263 ) |
262 { |
264 { |
263 TFLOGSTRING("CSAT: CSatDataDownloadTsy::CreateSmsDeliverReportL"); |
265 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_CREATESMSDELIVERREPORTL_1, "CSAT: CSatDataDownloadTsy::CreateSmsDeliverReportL"); |
264 TBuf8<KTpduMaxSize> reportData; |
266 TBuf8<KTpduMaxSize> reportData; |
265 |
267 |
266 // Get User Data length |
268 // Get User Data length |
267 TUint8 userDataLength = iSmsTpdu.iUserData.Length(); |
269 TUint8 userDataLength = iSmsTpdu.iUserData.Length(); |
268 |
270 |
269 // Check that SMS TPDU data exists by checking the last mandatory item |
271 // Check that SMS TPDU data exists by checking the last mandatory item |
270 if ( KSmsTpduByteUnknownOrReserved != iSmsTpdu.iDcs ) |
272 if ( KSmsTpduByteUnknownOrReserved != iSmsTpdu.iDcs ) |
271 { |
273 { |
272 TFLOGSTRING("CSAT: CSatDataDownloadTsy::CreateSmsDeliverReportL,\ |
274 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_CREATESMSDELIVERREPORTL_2, "CSAT: CSatDataDownloadTsy::CreateSmsDeliverReportL, SMS TPDU OK"); |
273 SMS TPDU OK"); |
|
274 reportData.Zero(); |
275 reportData.Zero(); |
275 reportData.Append( iSmsTpdu.iParameters ); // 1st byte -> parameters |
276 reportData.Append( iSmsTpdu.iParameters ); // 1st byte -> parameters |
276 reportData.Append( KAllOptParamsPresent ); // TP-Parameter-Indicator |
277 reportData.Append( KAllOptParamsPresent ); // TP-Parameter-Indicator |
277 reportData.Append( iSmsTpdu.iProtocolId ); // TP-Protocol-Identifier |
278 reportData.Append( iSmsTpdu.iProtocolId ); // TP-Protocol-Identifier |
278 reportData.Append( iSmsTpdu.iDcs ); // TP-Data-Coding-Scheme |
279 reportData.Append( iSmsTpdu.iDcs ); // TP-Data-Coding-Scheme |
287 // If saving went OK it means that RP-ACK must to be sent and data is |
288 // If saving went OK it means that RP-ACK must to be sent and data is |
288 // ready, otherwise RP-ERROR must to be sent, which means that TP Failure |
289 // ready, otherwise RP-ERROR must to be sent, which means that TP Failure |
289 // Cause must be inserted after the parameters |
290 // Cause must be inserted after the parameters |
290 if ( KErrNone != aResult ) |
291 if ( KErrNone != aResult ) |
291 { |
292 { |
292 TFLOGSTRING("CSAT: CSatDataDownloadTsy::CreateSmsDeliverReportL,\ |
293 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_CREATESMSDELIVERREPORTL_3, "CSAT: CSatDataDownloadTsy::CreateSmsDeliverReportL, Add TP Failure Cause: KDataDownloadError"); |
293 Add TP Failure Cause: KDataDownloadError"); |
|
294 TBuf8<1> failureCause; |
294 TBuf8<1> failureCause; |
295 failureCause.Zero(); |
295 failureCause.Zero(); |
296 failureCause.Append( KDataDownloadError ); |
296 failureCause.Append( KDataDownloadError ); |
297 reportData.Insert( 1, failureCause ); |
297 reportData.Insert( 1, failureCause ); |
298 } |
298 } |
317 ( |
317 ( |
318 const TDesC8& aSmsScAddress, |
318 const TDesC8& aSmsScAddress, |
319 const TDesC8& aSmsTpdu |
319 const TDesC8& aSmsTpdu |
320 ) |
320 ) |
321 { |
321 { |
322 TFLOGSTRING( "CSAT:CSatDataDownloadTsy::CreateSmsPpDdlEnvelopeL" ); |
322 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_CREATESMSPPDDLENVELOPEL_1, "CSAT:CSatDataDownloadTsy::CreateSmsPpDdlEnvelopeL" ); |
323 // Check that the data exists |
323 // Check that the data exists |
324 if ( aSmsScAddress.Length() && aSmsTpdu.Length() ) |
324 if ( aSmsScAddress.Length() && aSmsTpdu.Length() ) |
325 { |
325 { |
326 TFLOGSTRING( "CSAT:CSatDataDownloadTsy::CreateSmsPpDdlEnvelopeL,\ |
326 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_CREATESMSPPDDLENVELOPEL_2, "CSAT:CSatDataDownloadTsy::CreateSmsPpDdlEnvelopeL, Data Ok" ); |
327 Data Ok" ); |
|
328 TTlv envelope; |
327 TTlv envelope; |
329 |
328 |
330 envelope.Begin( KBerTlvSmsPpDownloadTag ); |
329 envelope.Begin( KBerTlvSmsPpDownloadTag ); |
331 envelope.AddTag( KTlvDeviceIdentityTag ); |
330 envelope.AddTag( KTlvDeviceIdentityTag ); |
332 envelope.AddByte( KNetwork ); |
331 envelope.AddByte( KNetwork ); |
355 void CSatDataDownloadTsy::CompleteReadCbmidsL |
354 void CSatDataDownloadTsy::CompleteReadCbmidsL |
356 ( |
355 ( |
357 void |
356 void |
358 ) |
357 ) |
359 { |
358 { |
360 TFLOGSTRING( "CSAT: CSatDataDownloadTsy::CompleteReadCbmids" ); |
359 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_COMPLETEREADCBMIDSL_1, "CSAT: CSatDataDownloadTsy::CompleteReadCbmids" ); |
361 // Convert constants and append to simFilePath |
360 // Convert constants and append to simFilePath |
362 TBuf8<KMaxFilePath> simFilePath; |
361 TBuf8<KMaxFilePath> simFilePath; |
363 // Append data |
362 // Append data |
364 simFilePath.Append( TUint8( KMasterFileCbmids >> 8 ) ); |
363 simFilePath.Append( TUint8( KMasterFileCbmids >> 8 ) ); |
365 //lint -e{778} Constant expression evaluates to 0 in operation |
364 //lint -e{778} Constant expression evaluates to 0 in operation |
388 ( |
387 ( |
389 const CSatDataPackage* aDataPackage |
388 const CSatDataPackage* aDataPackage |
390 ) |
389 ) |
391 { |
390 { |
392 aDataPackage->UnPackData( iIsSmsPpDdlSupported ); |
391 aDataPackage->UnPackData( iIsSmsPpDdlSupported ); |
393 TFLOGSTRING2("CSAT: CSatNotifyMoSmControlRequest::SetActivationStatus, %d", |
392 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_SETSMSPPDDLSTATUS_1, "CSAT: CSatNotifyMoSmControlRequest::SetActivationStatus, %d",iIsSmsPpDdlSupported ); |
394 iIsSmsPpDdlSupported ); |
|
395 } |
393 } |
396 |
394 |
397 // ----------------------------------------------------------------------------- |
395 // ----------------------------------------------------------------------------- |
398 // CSatDataDownloadTsy::ParseSmsTpdu |
396 // CSatDataDownloadTsy::ParseSmsTpdu |
399 // Interprets the given TPDU data and sets the results to internal data member |
397 // Interprets the given TPDU data and sets the results to internal data member |
402 TInt CSatDataDownloadTsy::ParseSmsTpdu |
400 TInt CSatDataDownloadTsy::ParseSmsTpdu |
403 ( |
401 ( |
404 const TDesC8& aSmsTpdu |
402 const TDesC8& aSmsTpdu |
405 ) |
403 ) |
406 { |
404 { |
407 TFLOGSTRING("CSAT: CSatDataDownloadTsy::ParseSmsTpdu"); |
405 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_PARSESMSTPDU_1, "CSAT: CSatDataDownloadTsy::ParseSmsTpdu"); |
408 TInt ret( KErrCorrupt ); |
406 TInt ret( KErrCorrupt ); |
409 |
407 |
410 // Initialize values |
408 // Initialize values |
411 iSmsTpdu.iParameters = KSmsTpduByteUnknownOrReserved; |
409 iSmsTpdu.iParameters = KSmsTpduByteUnknownOrReserved; |
412 iSmsTpdu.iProtocolId = KSmsTpduByteUnknownOrReserved; |
410 iSmsTpdu.iProtocolId = KSmsTpduByteUnknownOrReserved; |
437 TUint8 offset = KSmsTpduAddrOffset + 2 + addrLengthInBytes; |
435 TUint8 offset = KSmsTpduAddrOffset + 2 + addrLengthInBytes; |
438 |
436 |
439 // Just to be on the safe side, check that the offset is not too big |
437 // Just to be on the safe side, check that the offset is not too big |
440 if ( aSmsTpdu.Length() > ( offset + 1 + KSmsTpduSctsLength ) ) |
438 if ( aSmsTpdu.Length() > ( offset + 1 + KSmsTpduSctsLength ) ) |
441 { |
439 { |
442 TFLOGSTRING( "CSAT:CSatDataDownloadTsy::ParseSmsTpdu,\ |
440 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_PARSESMSTPDU_2, "CSAT:CSatDataDownloadTsy::ParseSmsTpdu, SmsTpdu length Ok" ); |
443 SmsTpdu length Ok" ); |
|
444 // Set protocol id and data coding shceme |
441 // Set protocol id and data coding shceme |
445 iSmsTpdu.iProtocolId = aSmsTpdu[offset]; |
442 iSmsTpdu.iProtocolId = aSmsTpdu[offset]; |
446 iSmsTpdu.iDcs = aSmsTpdu[++offset] ; |
443 iSmsTpdu.iDcs = aSmsTpdu[++offset] ; |
447 |
444 |
448 // Update offset to point the TP-UDL (skip TP-SCTS, not needed) |
445 // Update offset to point the TP-UDL (skip TP-SCTS, not needed) |
451 |
448 |
452 // If user data exists, add it to the end of buffer |
449 // If user data exists, add it to the end of buffer |
453 if ( tpduUserDataLength ) |
450 if ( tpduUserDataLength ) |
454 { |
451 { |
455 iSmsTpdu.iUserData.Copy( aSmsTpdu.Mid( ++offset ) ); |
452 iSmsTpdu.iUserData.Copy( aSmsTpdu.Mid( ++offset ) ); |
456 TFLOGSTRING2( "CSAT:CSatDataDownloadTsy::ParseSmsTpdu,\ |
453 OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSATDATADOWNLOADTSY_PARSESMSTPDU_3, "CSAT:CSatDataDownloadTsy::ParseSmsTpdu, iUserData length: %d", iSmsTpdu.iUserData.Length() ); |
457 iUserData length: %d", iSmsTpdu.iUserData.Length() ); |
|
458 } |
454 } |
459 |
455 |
460 ret = KErrNone; |
456 ret = KErrNone; |
461 } |
457 } |
462 } // TPDU reaches the minimum length |
458 } // TPDU reaches the minimum length |