changeset 9 | 8486d82aef45 |
parent 8 | 6295dc2169f3 |
8:6295dc2169f3 | 9:8486d82aef45 |
---|---|
1 /* |
1 /* |
2 * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). |
2 * Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). |
3 * All rights reserved. |
3 * All rights reserved. |
4 * This component and the accompanying materials are made available |
4 * This component and the accompanying materials are made available |
5 * under the terms of the License "Eclipse Public License v1.0" |
5 * under the terms of the License "Eclipse Public License v1.0" |
6 * which accompanies this distribution, and is available |
6 * which accompanies this distribution, and is available |
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
20 // EXTERNAL RESOURCES |
20 // EXTERNAL RESOURCES |
21 |
21 |
22 // Include Files |
22 // Include Files |
23 #include <ctsy/serviceapi/mmtsy_ipcdefs.h> |
23 #include <ctsy/serviceapi/mmtsy_ipcdefs.h> |
24 #include <ctsy/pluginapi/cmmdatapackage.h> |
24 #include <ctsy/pluginapi/cmmdatapackage.h> |
25 // Temporarily removed for Bridge camp! |
25 #include <ctsy/serviceapi/ctsysatmessagingbase.h> |
26 //#include <ctsy/serviceapi/ctsysatmessagingbase.h> |
|
27 #include <etelsat.h> // for sat mo sm control error values |
26 #include <etelsat.h> // for sat mo sm control error values |
28 #include <ctsy/serviceapi/gsmerror.h> // for sat mo sm control error values |
27 #include <ctsy/serviceapi/gsmerror.h> // for sat mo sm control error values |
29 #include <etelmmerr.h> |
28 #include <etelmmerr.h> |
30 #include <tisi.h> |
29 #include <tisi.h> |
31 #include <smsisi.h> |
30 #include <smsisi.h> |
37 #include "cmmstaticutility.h" |
36 #include "cmmstaticutility.h" |
38 #include "cmmmessagerouter.h" |
37 #include "cmmmessagerouter.h" |
39 #include "cmmphonemesshandler.h" |
38 #include "cmmphonemesshandler.h" |
40 #include "tsylogger.h" |
39 #include "tsylogger.h" |
41 #include "cmmphonetsender.h" |
40 #include "cmmphonetsender.h" |
41 |
|
42 #include "OstTraceDefinitions.h" |
42 #include "OstTraceDefinitions.h" |
43 #ifdef OST_TRACE_COMPILER_IN_USE |
43 #ifdef OST_TRACE_COMPILER_IN_USE |
44 #include "cmmsmsmesshandlerTraces.h" |
44 #include "cmmsmsmesshandlerTraces.h" |
45 #endif |
45 #endif |
46 |
46 |
92 const TUint8 KSmsParamsProtocolIdOffset( 25 ); |
92 const TUint8 KSmsParamsProtocolIdOffset( 25 ); |
93 const TUint8 KSmsParamsDcsOffset( 26 ); |
93 const TUint8 KSmsParamsDcsOffset( 26 ); |
94 const TUint8 KSmsParamsValidityPeriodOffset( 27 ); |
94 const TUint8 KSmsParamsValidityPeriodOffset( 27 ); |
95 const TUint8 KSizeOfAlphaTag( 62 ); |
95 const TUint8 KSizeOfAlphaTag( 62 ); |
96 |
96 |
97 const TUint8 KShift8( 8 ); |
|
98 const TUint16 KSmsResIdMoSmInitDisable( 0 ); // SMS_RES_ID_MO_SM_INIT_DISABLE |
|
99 |
|
97 // MODULE DATA STRUCTURES |
100 // MODULE DATA STRUCTURES |
98 |
101 |
99 // Local Data Structures |
102 // Local Data Structures |
100 // none |
103 // none |
101 |
104 |
116 // ----------------------------------------------------------------------------- |
119 // ----------------------------------------------------------------------------- |
117 // |
120 // |
118 CMmSmsMessHandler::CMmSmsMessHandler() |
121 CMmSmsMessHandler::CMmSmsMessHandler() |
119 { |
122 { |
120 TFLOGSTRING("TSY: CMmSmsMessHandler::CMmSmsMessHandler: constructor."); |
123 TFLOGSTRING("TSY: CMmSmsMessHandler::CMmSmsMessHandler: constructor."); |
121 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_CMMSMSMESSHANDLER, "CMmSmsMessHandler::CMmSmsMessHandler" ); |
124 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_CMMSMSMESSHANDLER_TD, "CMmSmsMessHandler::CMmSmsMessHandler" ); |
122 } |
125 } |
123 |
126 |
124 // ----------------------------------------------------------------------------- |
127 // ----------------------------------------------------------------------------- |
125 // CMmSmsMessHandler::CMmSmsMessHandler |
128 // CMmSmsMessHandler::CMmSmsMessHandler |
126 // C++ default destructor |
129 // C++ default destructor |
127 // ----------------------------------------------------------------------------- |
130 // ----------------------------------------------------------------------------- |
128 // |
131 // |
129 CMmSmsMessHandler::~CMmSmsMessHandler() |
132 CMmSmsMessHandler::~CMmSmsMessHandler() |
130 { |
133 { |
131 TFLOGSTRING("TSY: CMmSmsMessHandler::CMmSmsMessHandler: destructor."); |
134 TFLOGSTRING("TSY: CMmSmsMessHandler::CMmSmsMessHandler: destructor."); |
132 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_CMMSMSMESSHANDLER, "CMmSmsMessHandler::~CMmSmsMessHandler" ); |
135 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_CMMSMSMESSHANDLER_TD, "CMmSmsMessHandler::~CMmSmsMessHandler" ); |
133 // Delete arrays |
136 // Delete arrays |
134 if( iSmsListArray ) |
137 if( iSmsListArray ) |
135 { |
138 { |
136 iSmsListArray->ResetAndDestroy(); |
139 iSmsListArray->ResetAndDestroy(); |
137 delete iSmsListArray; |
140 delete iSmsListArray; |
155 CMmMessageRouter* aMessageRouter, // pointer to Message router |
158 CMmMessageRouter* aMessageRouter, // pointer to Message router |
156 CMmUiccMessHandler* aUiccMessHandler // pointer to UICC message handler |
159 CMmUiccMessHandler* aUiccMessHandler // pointer to UICC message handler |
157 ) |
160 ) |
158 { |
161 { |
159 TFLOGSTRING("TSY: CMmSmsMessHandler::NewL"); |
162 TFLOGSTRING("TSY: CMmSmsMessHandler::NewL"); |
160 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_NEWL, "CMmSmsMessHandler::NewL" ); |
163 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_NEWL_TD, "CMmSmsMessHandler::NewL" ); |
161 CMmSmsMessHandler* smsMessHandler = new ( ELeave ) CMmSmsMessHandler(); |
164 CMmSmsMessHandler* smsMessHandler = new ( ELeave ) CMmSmsMessHandler(); |
162 |
165 |
163 CleanupStack::PushL( smsMessHandler ); |
166 CleanupStack::PushL( smsMessHandler ); |
164 smsMessHandler->iPhoNetSender = aPhoNetSender; |
167 smsMessHandler->iPhoNetSender = aPhoNetSender; |
168 smsMessHandler->iPhonetReceiver = aPhoNetReceiver; |
|
165 smsMessHandler->iMessageRouter = aMessageRouter; |
169 smsMessHandler->iMessageRouter = aMessageRouter; |
166 smsMessHandler->iMmUiccMessHandler = aUiccMessHandler; |
170 smsMessHandler->iMmUiccMessHandler = aUiccMessHandler; |
167 smsMessHandler->ConstructL(); |
171 smsMessHandler->ConstructL(); |
168 aPhoNetReceiver->RegisterL( smsMessHandler, PN_SMS ); |
172 aPhoNetReceiver->RegisterL( smsMessHandler, PN_SMS ); |
169 CleanupStack::Pop( smsMessHandler ); |
173 CleanupStack::Pop( smsMessHandler ); |
177 // ----------------------------------------------------------------------------- |
181 // ----------------------------------------------------------------------------- |
178 // |
182 // |
179 void CMmSmsMessHandler::ConstructL() |
183 void CMmSmsMessHandler::ConstructL() |
180 { |
184 { |
181 TFLOGSTRING("TSY: CMmSmsMessHandler::ConstructL"); |
185 TFLOGSTRING("TSY: CMmSmsMessHandler::ConstructL"); |
182 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_CONSTRUCTL, "CMmSmsMessHandler::ConstructL" ); |
186 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_CONSTRUCTL_TD, "CMmSmsMessHandler::ConstructL" ); |
183 iSmsListArray = new ( ELeave ) CArrayPtrFlat<TSmsMsg>( 1 ); |
187 iSmsListArray = new ( ELeave ) CArrayPtrFlat<TSmsMsg>( 1 ); |
184 iSmspListArray = new ( ELeave ) CArrayPtrFlat<TSmsParameters>( 1 ); |
188 iSmspListArray = new ( ELeave ) CArrayPtrFlat<TSmsParameters>( 1 ); |
185 |
189 |
186 iReceivedClass2ToBeReSent = EFalse; |
190 iReceivedClass2ToBeReSent = EFalse; |
187 // default bearer setting is "CS preferred" |
191 // default bearer setting is "CS preferred" |
188 iMobileSmsBearer = RMobileSmsMessaging::ESmsBearerCircuitPreferred; |
192 iMobileSmsBearer = RMobileSmsMessaging::ESmsBearerCircuitPreferred; |
189 |
193 |
190 iMemoryCapacityExceeded = EFalse; |
|
191 |
|
192 // Reading of SMSP entries starts from record 1 |
194 // Reading of SMSP entries starts from record 1 |
193 iSmspRecordNumber = 1; |
195 iSmspRecordNumber = 1; |
194 } |
196 } |
195 |
197 |
196 // ----------------------------------------------------------------------------- |
198 // ----------------------------------------------------------------------------- |
202 { |
204 { |
203 TUint8 resource( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_RESOURCEID ) ); |
205 TUint8 resource( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_RESOURCEID ) ); |
204 TUint8 messageId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) ); |
206 TUint8 messageId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) ); |
205 |
207 |
206 TFLOGSTRING3("TSY: CMmSmsMessHandler::ReceiveMessageL - resource: %d, msgId: %d", resource, messageId); |
208 TFLOGSTRING3("TSY: CMmSmsMessHandler::ReceiveMessageL - resource: %d, msgId: %d", resource, messageId); |
207 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_RECEIVEMESSAGEL,"CMmSmsMessHandler::ReceiveMessageL;resource=%hhu;messageId=%hhu", resource, messageId ); |
209 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_RECEIVEMESSAGEL_TD,"CMmSmsMessHandler::ReceiveMessageL;resource=%hhu;messageId=%hhu", resource, messageId ); |
208 |
210 |
209 switch ( resource ) |
211 switch ( resource ) |
210 { |
212 { |
211 case PN_SMS: |
213 case PN_SMS: |
212 { |
214 { |
235 EMmTsySmsSendSatMessage ); |
237 EMmTsySmsSendSatMessage ); |
236 } |
238 } |
237 else |
239 else |
238 { |
240 { |
239 TFLOGSTRING2("TSY:CMmSmsMessHandler::ReceiveMessageL:Unexpected transId=%d in SMS_MESSAGE_SEND_RESP.",traId); |
241 TFLOGSTRING2("TSY:CMmSmsMessHandler::ReceiveMessageL:Unexpected transId=%d in SMS_MESSAGE_SEND_RESP.",traId); |
240 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_RECEIVEMESSAGEL, "CMmSmsMessHandler::ReceiveMessageL;traId=%hhu", traId ); |
242 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmSmsMessHandler::ReceiveMessageL;traId=%hhu", traId ); |
241 } |
243 } |
242 break; |
244 break; |
243 } |
245 } |
244 case SMS_RECEIVE_MESSAGE_RESP: |
246 case SMS_RECEIVE_MESSAGE_RESP: |
245 { |
247 { |
259 case SMS_SETTINGS_UPDATE_RESP : |
261 case SMS_SETTINGS_UPDATE_RESP : |
260 { |
262 { |
261 SmsSettingsUpdateResp( aIsiMessage ); |
263 SmsSettingsUpdateResp( aIsiMessage ); |
262 break; |
264 break; |
263 } |
265 } |
266 case SMS_RESOURCE_CONF_IND: |
|
267 { |
|
268 SmsResourceConfInd( aIsiMessage ); |
|
269 break; |
|
270 } |
|
264 default: |
271 default: |
265 { |
272 { |
266 TFLOGSTRING2("TSY: CMmSmsMessHandler::ReceiveMessageL - PN_SMS - unknown msgId: %d", messageId); |
273 TFLOGSTRING2("TSY: CMmSmsMessHandler::ReceiveMessageL - PN_SMS - unknown msgId: %d", messageId); |
267 OstTraceExt1( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_RECEIVEMESSAGEL, "CMmSmsMessHandler::ReceiveMessageL;messageId=%hhu", messageId ); |
274 OstTraceExt1( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmSmsMessHandler::ReceiveMessageL;messageId=%hhu", messageId ); |
268 // No handler methods for ISI-message found. |
275 // No handler methods for ISI-message found. |
269 break; |
276 break; |
270 } |
277 } |
271 } |
278 } |
272 break; |
279 break; |
273 } |
280 } |
274 default: |
281 default: |
275 { |
282 { |
276 TFLOGSTRING2("TSY: CMmSmsMessHandler::ReceiveMessageL - unknown resource: %d", resource); |
283 TFLOGSTRING2("TSY: CMmSmsMessHandler::ReceiveMessageL - unknown resource: %d", resource); |
277 OstTraceExt1( TRACE_NORMAL, DUP6_CMMSMSMESSHANDLER_RECEIVEMESSAGEL, "CMmSmsMessHandler::ReceiveMessageL;resource=%hhu", resource ); |
284 OstTraceExt1( TRACE_NORMAL, DUP6_CMMSMSMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmSmsMessHandler::ReceiveMessageL;resource=%hhu", resource ); |
278 // No handler methods for ISI-message found. |
285 // No handler methods for ISI-message found. |
279 break; |
286 break; |
280 } |
287 } |
281 } |
288 } |
282 } |
289 } |
292 TBool aSmsCheckDisableFdn ) // Add SMS_SB_CHECK_INFO with |
299 TBool aSmsCheckDisableFdn ) // Add SMS_SB_CHECK_INFO with |
293 // SMS_CHECK_DISABLE_FDN |
300 // SMS_CHECK_DISABLE_FDN |
294 |
301 |
295 { |
302 { |
296 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsMessageSendReq. Transaction ID: %d", aTransactionId); |
303 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsMessageSendReq. Transaction ID: %d", aTransactionId); |
297 OstTraceExt1( TRACE_NORMAL,DUP18_CMMSMSMESSHANDLER_SMSMESSAGESENDREQ,"CMmSmsMessHandler::SmsMessageSendReq;aTransactionId=%hhu", aTransactionId ); |
304 OstTraceExt1( TRACE_NORMAL,DUP18_CMMSMSMESSHANDLER_SMSMESSAGESENDREQ_TD,"CMmSmsMessHandler::SmsMessageSendReq;aTransactionId=%hhu", aTransactionId ); |
298 |
305 |
299 TInt ret( KErrNone ); |
306 TInt ret( KErrNone ); |
300 TUint8 subBlockId( 0 ); |
307 TUint8 subBlockId( 0 ); |
301 |
308 |
302 // Structure for all SMS parameters and user data |
309 // Structure for all SMS parameters and user data |
329 { |
336 { |
330 ret = CMmStaticUtility::EpocErrorCode( |
337 ret = CMmStaticUtility::EpocErrorCode( |
331 KErrArgument, |
338 KErrArgument, |
332 KErrGsmSMSTpduNotSupported ); |
339 KErrGsmSMSTpduNotSupported ); |
333 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsMessageSendReq. Error! SMS type not supported: %d", tpMti); |
340 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsMessageSendReq. Error! SMS type not supported: %d", tpMti); |
334 OstTraceExt1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_SMSMESSAGESENDREQ, "CMmSmsMessHandler::SmsMessageSendReq.Error! SMS type not supported;tpMti=%hhu", tpMti ); |
341 OstTraceExt1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_SMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::SmsMessageSendReq.Error! SMS type not supported;tpMti=%hhu", tpMti ); |
335 } |
342 } |
336 } |
343 } |
337 else |
344 else |
338 { |
345 { |
339 // TPDU too long |
346 // TPDU too long |
340 ret = CMmStaticUtility::EpocErrorCode( |
347 ret = CMmStaticUtility::EpocErrorCode( |
341 KErrArgument, |
348 KErrArgument, |
342 KErrGsmSMSTpduNotSupported ); |
349 KErrGsmSMSTpduNotSupported ); |
343 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsMessageSendReq. Error! TPDU too long: %d", sendData.iMsgData->Length()); |
350 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsMessageSendReq. Error! TPDU too long: %d", sendData.iMsgData->Length()); |
344 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSMESSAGESENDREQ, "CMmSmsMessHandler::SmsMessageSendReq.Error! TPDU too long;sendData.iMsgData->Length()=%d", sendData.iMsgData->Length() ); |
351 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::SmsMessageSendReq.Error! TPDU too long;sendData.iMsgData->Length()=%d", sendData.iMsgData->Length() ); |
345 } |
352 } |
346 |
353 |
347 // Check the format of TPDU and data buffer |
354 // Check the format of TPDU and data buffer |
348 if ( ! ( RMobileSmsMessaging::KSmsDataFormat & msgAttr->iFlags && |
355 if ( ! ( RMobileSmsMessaging::KSmsDataFormat & msgAttr->iFlags && |
349 RMobileSmsMessaging::EFormatGsmTpdu & msgAttr->iDataFormat ) ) |
356 RMobileSmsMessaging::EFormatGsmTpdu & msgAttr->iDataFormat ) ) |
350 { |
357 { |
351 ret = CMmStaticUtility::EpocErrorCode( |
358 ret = CMmStaticUtility::EpocErrorCode( |
352 KErrArgument, |
359 KErrArgument, |
353 KErrGsmSMSTpduNotSupported ); |
360 KErrGsmSMSTpduNotSupported ); |
354 TFLOGSTRING3("TSY: CMmSmsMessHandler::SmsMessageSendReq. Error! Invalid TPDU format (%d) or data buffer format (%d)", msgAttr->iFlags, msgAttr->iDataFormat ); |
361 TFLOGSTRING3("TSY: CMmSmsMessHandler::SmsMessageSendReq. Error! Invalid TPDU format (%d) or data buffer format (%d)", msgAttr->iFlags, msgAttr->iDataFormat ); |
355 OstTraceExt2( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_SMSMESSAGESENDREQ, "CMmSmsMessHandler::SmsMessageSendReq.Error!;msgAttr->iFlags=%d;msgAttr->iDataFormat=%hhu", msgAttr->iFlags, msgAttr->iDataFormat ); |
362 OstTraceExt2( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_SMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::SmsMessageSendReq.Error!;msgAttr->iFlags=%d;msgAttr->iDataFormat=%hhu", msgAttr->iFlags, msgAttr->iDataFormat ); |
356 } |
363 } |
357 |
364 |
358 #if (NCP_COMMON_S60_VERSION_SUPPORT>S60_VERSION_32) |
365 #if (NCP_COMMON_S60_VERSION_SUPPORT>S60_VERSION_32) |
359 // Check whether there is SMS sending ongoing. |
366 // Check whether there is SMS sending ongoing. |
360 if ( iSMSSendingOngoing ) |
367 if ( iSMSSendingOngoing ) |
361 { |
368 { |
362 ret = KErrServerBusy; |
369 ret = KErrServerBusy; |
363 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsMessageSendReq. SMS sending failed, server busy!" ); |
370 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsMessageSendReq. SMS sending failed, server busy!" ); |
364 OstTrace0( TRACE_NORMAL, DUP17_CMMSMSMESSHANDLER_SMSMESSAGESENDREQ, "CMmSmsMessHandler::SmsMessageSendReq. SMS sending failed, server busy!" ); |
371 OstTrace0( TRACE_NORMAL, DUP17_CMMSMSMESSHANDLER_SMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::SmsMessageSendReq. SMS sending failed, server busy!" ); |
365 } |
372 } |
366 #endif // NCP_COMMON_S60_VERSION_SUPPORT |
373 #endif // NCP_COMMON_S60_VERSION_SUPPORT |
367 |
374 |
368 if ( KErrNone == ret ) |
375 if ( KErrNone == ret ) |
369 { |
376 { |
419 // |- SMS_SB_ADDRESS (service center address, mandatory, max. 20 bytes) |
426 // |- SMS_SB_ADDRESS (service center address, mandatory, max. 20 bytes) |
420 // | |
427 // | |
421 // |- SMS_SB_USER_DATA (optional, max. 174 bytes) |
428 // |- SMS_SB_USER_DATA (optional, max. 174 bytes) |
422 |
429 |
423 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. Subblock ID: %d", aSubblockId); |
430 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. Subblock ID: %d", aSubblockId); |
424 OstTraceExt1( TRACE_NORMAL, DUP9_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ, "CMmSmsMessHandler::CreateSmsMessageSendReq;aSubblockId=%hhu", aSubblockId ); |
431 OstTraceExt1( TRACE_NORMAL, DUP9_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::CreateSmsMessageSendReq;aSubblockId=%hhu", aSubblockId ); |
425 |
432 |
426 TInt ret( KErrNone ); |
433 TInt ret( KErrNone ); |
427 TUint8 addressLength( 0 ); |
434 TUint8 addressLength( 0 ); |
428 ret = GetDestAddressLength( aMsgData, aSubblockId, addressLength ); |
435 ret = GetDestAddressLength( aMsgData, aSubblockId, addressLength ); |
429 |
436 |
432 { |
439 { |
433 TUint8 moreMsgToSend( 0 ); |
440 TUint8 moreMsgToSend( 0 ); |
434 TUint8 smsRoute( SMS_ROUTE_DEFAULT ); |
441 TUint8 smsRoute( SMS_ROUTE_DEFAULT ); |
435 TUint8 tpVpLength( 0 ); |
442 TUint8 tpVpLength( 0 ); |
436 TUint8 tpVpf( 0 ); |
443 TUint8 tpVpf( 0 ); |
437 TUint8 tpVpSubblockLength( SIZE_SMS_SB_VALIDITY_PERIOD ); |
|
438 TUint8 tpUdl( 0 ); |
444 TUint8 tpUdl( 0 ); |
439 TUint8 tpUserDataLengthIndex( KTpduSubmitIndexUserDataLengthIfNoTpVp ); |
445 TUint8 tpUserDataLengthIndex( KTpduSubmitIndexUserDataLengthIfNoTpVp ); |
440 TUint8 tpUserDataIndex( 0 ); |
446 TUint8 tpUserDataIndex( 0 ); |
441 TUint8 tpDaIndex( KTpduSubmitIndexDestinationAddressLength ); |
447 TUint8 tpDaIndex( KTpduSubmitIndexDestinationAddressLength ); |
442 TUint8 tpDcs( 0 ); |
448 TUint8 tpDcs( 0 ); |
443 TUint8 msgOffset( ISI_HEADER_SIZE + SIZE_SMS_MESSAGE_SEND_REQ ); |
449 TUint8 msgOffset( ISI_HEADER_SIZE + SIZE_SMS_MESSAGE_SEND_REQ ); |
444 TUint8 numOfSubblocks( 3 ); // 3 mandatory subblocks |
450 TUint8 numOfSubblocks( 3 ); // 3 mandatory subblocks |
445 TUint8 lengthOfAddressSb( 0 ); |
|
446 TUint8 lengthOfSMSUserDataSb( 0 ); |
|
447 TBool defaultAlphabet( EFalse ); // Data coding type, true if 7-bit |
451 TBool defaultAlphabet( EFalse ); // Data coding type, true if 7-bit |
448 |
452 |
449 // Check if more to send parameter is included |
453 // Check if more to send parameter is included |
450 if ( RMobileSmsMessaging::KMoreToSend & aMsgAttr->iFlags ) |
454 if ( RMobileSmsMessaging::KMoreToSend & aMsgAttr->iFlags ) |
451 { |
455 { |
491 0 ); |
495 0 ); |
492 |
496 |
493 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_MESSAGE_SEND_REQ created. Message offset: %d", msgOffset ); |
497 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_MESSAGE_SEND_REQ created. Message offset: %d", msgOffset ); |
494 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. More messages to be sent: %d", moreMsgToSend); |
498 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. More messages to be sent: %d", moreMsgToSend); |
495 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS route: %d", smsRoute); |
499 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS route: %d", smsRoute); |
496 OstTraceExt3( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ, "CMmSmsMessHandler::CreateSmsMessageSendReq;msgOffset=%hhu;moreMsgToSend=%hhu;smsRoute=%hhu", msgOffset, moreMsgToSend, smsRoute ); |
500 OstTraceExt3( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::CreateSmsMessageSendReq;msgOffset=%hhu;moreMsgToSend=%hhu;smsRoute=%hhu", msgOffset, moreMsgToSend, smsRoute ); |
497 |
501 |
498 // Create SMS_SB_SUBMIT subblock |
502 // Create SMS_SB_SUBMIT subblock |
499 if ( SMS_SB_SUBMIT == aSubblockId ) |
503 if ( SMS_SB_SUBMIT == aSubblockId ) |
500 { |
504 { |
501 BuildSmsSbSubmit( aMsgData, isiMsg, msgOffset, addressLength ); |
505 msgOffset += BuildSmsSbSubmit( aMsgData, isiMsg, addressLength, msgOffset ); |
502 msgOffset += SIZE_SMS_SB_SUBMIT; |
|
503 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_SUBMIT created. Message offset: %d", msgOffset ); |
506 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_SUBMIT created. Message offset: %d", msgOffset ); |
504 OstTraceExt1( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ, "CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_SUBMIT created.;msgOffset=%hhu", msgOffset ); |
507 OstTraceExt1( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_SUBMIT created.;msgOffset=%hhu", msgOffset ); |
505 // Set needed TPDU index values that depends on SMS type, VP existence |
508 // Set needed TPDU index values that depends on SMS type, VP existence |
506 // and destination address length. Those parameters are needed when |
509 // and destination address length. Those parameters are needed when |
507 // creating subblocks SMS_DESTINATION_ADDRESS, SMS_SB_VALIDITY_PERIOD |
510 // creating subblocks SMS_DESTINATION_ADDRESS, SMS_SB_VALIDITY_PERIOD |
508 // and SMS_SB_USER_DATA. |
511 // and SMS_SB_USER_DATA. |
509 // TP-VPF is LSB bits 3 and 4 from the first octect of TPDU |
512 // TP-VPF is LSB bits 3 and 4 from the first octect of TPDU |
520 } |
523 } |
521 // Absolute or enhanced format, subblock length is 12 |
524 // Absolute or enhanced format, subblock length is 12 |
522 else |
525 else |
523 { |
526 { |
524 tpVpLength = SMS_VPF_ABSOLUTE_OR_ENHANCED; |
527 tpVpLength = SMS_VPF_ABSOLUTE_OR_ENHANCED; |
525 tpVpSubblockLength = 12; |
|
526 tpUserDataLengthIndex = |
528 tpUserDataLengthIndex = |
527 KTpduSubmitIndexUserDataLengthVpfAbsoluteEnchanced; |
529 KTpduSubmitIndexUserDataLengthVpfAbsoluteEnchanced; |
528 } |
530 } |
529 } |
531 } |
530 // No else. If no TP-VP, User data length index was set to |
532 // No else. If no TP-VP, User data length index was set to |
531 // 'KTpduSubmitIndexUserDataLengthIfNoTpVp' by default |
533 // 'KTpduSubmitIndexUserDataLengthIfNoTpVp' by default |
532 } |
534 } |
533 else // Create SMS_SB_COMMAND subblock |
535 else // Create SMS_SB_COMMAND subblock |
534 { |
536 { |
535 BuildSmsSbCommand( aMsgData, isiMsg, msgOffset ); |
537 msgOffset += BuildSmsSbCommand( aMsgData, isiMsg, msgOffset ); |
536 msgOffset += SIZE_SMS_SB_COMMAND; |
|
537 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_COMMAND created. Message offset: %d", msgOffset ); |
538 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_COMMAND created. Message offset: %d", msgOffset ); |
538 OstTraceExt1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ, "CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_COMMAND created.;msgOffset=%hhu", msgOffset ); |
539 OstTraceExt1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_COMMAND created.;msgOffset=%hhu", msgOffset ); |
539 |
|
540 tpDaIndex = KTpduCommandIndexDestinationAddressLength; |
540 tpDaIndex = KTpduCommandIndexDestinationAddressLength; |
541 tpUserDataLengthIndex = KTpduCommandIndexUserDataLength; |
541 tpUserDataLengthIndex = KTpduCommandIndexUserDataLength; |
542 } |
542 } |
543 |
543 |
544 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. Validity period format: %d", tpVpf); |
544 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. Validity period format: %d", tpVpf); |
545 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. User data length index: %d", tpUserDataLengthIndex); |
545 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. User data length index: %d", tpUserDataLengthIndex); |
546 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ, "CMmSmsMessHandler::CreateSmsMessageSendReq;tpVpf=%hhu;tpUserDataLengthIndex=%hhu", tpVpf, tpUserDataLengthIndex ); |
546 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::CreateSmsMessageSendReq;tpVpf=%hhu;tpUserDataLengthIndex=%hhu", tpVpf, tpUserDataLengthIndex ); |
547 |
547 |
548 // Create SMS_SB_ADDRESS subblock for destination address |
548 // Create SMS_SB_ADDRESS subblock for destination address |
549 // TP-DA length = Length (1 byte) + TON/NPI (1 byte) + address data |
549 // TP-DA length = Length (1 byte) + TON/NPI (1 byte) + address data |
550 TPtrC8 addressData( aMsgData.Mid( tpDaIndex, ( addressLength + 2 ) ) ); |
550 TPtrC8 addressData( aMsgData.Mid( tpDaIndex, ( addressLength + 2 ) ) ); |
551 lengthOfAddressSb = BuildSmsSbAddress( |
551 msgOffset += BuildSmsSbAddress( |
552 addressData, |
552 addressData, |
553 isiMsg, |
553 isiMsg, |
554 SMS_DESTINATION_ADDRESS, |
554 SMS_DESTINATION_ADDRESS, |
555 msgOffset ); |
555 msgOffset ); |
556 msgOffset += lengthOfAddressSb; |
|
557 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_ADDRESS created for destination address. Message offset: %d", msgOffset ); |
556 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_ADDRESS created for destination address. Message offset: %d", msgOffset ); |
558 OstTraceExt1( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ, "CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_ADDRESS created for destination address.;msgOffset=%hhu", msgOffset ); |
557 OstTraceExt1( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_ADDRESS created for destination address.;msgOffset=%hhu", msgOffset ); |
559 |
558 |
560 // Create SMS_SB_ADDRESS subblock for service center address |
559 // Create SMS_SB_ADDRESS subblock for service center address |
561 TBuf8<SMS_ADDRESS_MAX_LEN> scAddr; |
560 TBuf8<SMS_ADDRESS_MAX_LEN> scAddr; |
562 BuildScAddress( aMsgAttr->iGsmServiceCentre, scAddr ); |
561 BuildScAddress( aMsgAttr->iGsmServiceCentre, scAddr ); |
563 lengthOfAddressSb = |
562 msgOffset += |
564 BuildSmsSbAddress( scAddr, isiMsg, SMS_SMSC_ADDRESS, msgOffset ); |
563 BuildSmsSbAddress( scAddr, isiMsg, SMS_SMSC_ADDRESS, msgOffset ); |
565 msgOffset += lengthOfAddressSb; |
|
566 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_ADDRESS created for SC address. Message offset: %d", msgOffset ); |
564 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_ADDRESS created for SC address. Message offset: %d", msgOffset ); |
567 OstTraceExt1( TRACE_NORMAL, DUP5_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ, "CMmSmsMessHandler::CreateSmsMessageSendReq.SMS_SB_ADDRESS created for SC address.;msgOffset=%hhu", msgOffset ); |
565 OstTraceExt1( TRACE_NORMAL, DUP5_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::CreateSmsMessageSendReq.SMS_SB_ADDRESS created for SC address.;msgOffset=%hhu", msgOffset ); |
568 |
566 |
569 // Create SMS_SB_VALIDITY_PERIOD subblock (optional, used only in |
567 // Create SMS_SB_VALIDITY_PERIOD subblock (optional, used only in |
570 // case of SMS_SB_SUBMIT) |
568 // case of SMS_SB_SUBMIT) |
571 if ( SMS_SB_SUBMIT == aSubblockId && tpVpf ) |
569 if ( SMS_SB_SUBMIT == aSubblockId && tpVpf ) |
572 { |
570 { |
573 TUint8 tpVpIndex( |
571 TUint8 tpVpIndex( |
574 KTpduSubmitIndexValidityperiod + addressLength ); |
572 KTpduSubmitIndexValidityperiod + addressLength ); |
575 BuildSmsSbValidityPeriod( |
573 msgOffset += BuildSmsSbValidityPeriod( |
576 aMsgData, |
574 aMsgData, |
577 isiMsg, |
575 isiMsg, |
578 tpVpIndex, |
576 tpVpIndex, |
579 tpVpLength, |
577 tpVpLength, |
580 msgOffset ); |
578 msgOffset ); |
581 // Udate message offset according to validity period length |
|
582 msgOffset += tpVpSubblockLength; |
|
583 numOfSubblocks++; |
579 numOfSubblocks++; |
584 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_VALIDITY_PERIOD created. Message offset: %d", msgOffset ); |
580 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_VALIDITY_PERIOD created. Message offset: %d", msgOffset ); |
585 OstTraceExt1( TRACE_NORMAL, DUP6_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ, "CMmSmsMessHandler::CreateSmsMessageSendReq.SMS_SB_VALIDITY_PERIOD created.;msgOffset=%hhu", msgOffset ); |
581 OstTraceExt1( TRACE_NORMAL, DUP6_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::CreateSmsMessageSendReq.SMS_SB_VALIDITY_PERIOD created.;msgOffset=%hhu", msgOffset ); |
586 } |
582 } |
587 |
583 |
588 // Create SMS_SB_USER_DATA subblock if user data exists |
584 // Create SMS_SB_USER_DATA subblock if user data exists |
589 // Destination address length must be added to get user data |
585 // Destination address length must be added to get user data |
590 // length index |
586 // length index |
591 tpUserDataLengthIndex += addressLength; |
587 tpUserDataLengthIndex += addressLength; |
592 tpUdl = aMsgData[tpUserDataLengthIndex]; |
588 tpUdl = aMsgData[tpUserDataLengthIndex]; |
593 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. User data length from TPDU: %d", tpUdl); |
589 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. User data length from TPDU: %d", tpUdl); |
594 OstTrace1( TRACE_NORMAL, DUP10_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ, "CMmSmsMessHandler::CreateSmsMessageSendReq;tpUdl=%d", tpUdl ); |
590 OstTrace1( TRACE_NORMAL, DUP10_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::CreateSmsMessageSendReq;tpUdl=%d", tpUdl ); |
595 |
591 |
596 if ( tpUdl ) |
592 if ( tpUdl ) |
597 { |
593 { |
598 // Actual user data is next index from TP-UDL position |
594 // Actual user data is next index from TP-UDL position |
599 tpUserDataIndex = tpUserDataLengthIndex + 1; |
595 tpUserDataIndex = tpUserDataLengthIndex + 1; |
600 if ( SMS_SB_SUBMIT == aSubblockId ) |
596 if ( SMS_SB_SUBMIT == aSubblockId ) |
601 { |
597 { |
602 tpDcs = aMsgData[ KTpduSubmitIndexDataCodingScheme + addressLength ]; |
598 tpDcs = aMsgData[ KTpduSubmitIndexDataCodingScheme + addressLength ]; |
603 defaultAlphabet = IsDataCodingScheme7Bit( tpDcs ); |
599 defaultAlphabet = IsDataCodingScheme7Bit( tpDcs ); |
604 } |
600 } |
605 lengthOfSMSUserDataSb = BuildSmsSbUserData( |
601 msgOffset += BuildSmsSbUserData( |
606 aMsgData, |
602 aMsgData, |
607 isiMsg, |
603 isiMsg, |
608 tpUdl, |
604 tpUdl, |
609 tpUserDataIndex, |
605 tpUserDataIndex, |
610 defaultAlphabet, |
606 defaultAlphabet, |
611 msgOffset ); |
607 msgOffset ); |
612 numOfSubblocks++; |
608 numOfSubblocks++; |
613 msgOffset += lengthOfSMSUserDataSb; |
|
614 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_USER_DATA created. Message offset: %d", msgOffset ); |
609 TFLOGSTRING2("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_USER_DATA created. Message offset: %d", msgOffset ); |
615 OstTraceExt1( TRACE_NORMAL, DUP7_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ, "CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_USER_DATA created.;msgOffset=%hhu", msgOffset ); |
610 OstTraceExt1( TRACE_NORMAL, DUP7_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_USER_DATA created.;msgOffset=%hhu", msgOffset ); |
616 } |
611 } |
617 |
612 |
618 // Create SMS_SB_CHECK_INFO subblock if user data exists |
613 // Create SMS_SB_CHECK_INFO subblock if user data exists |
619 // Destination address length must be added to get user data |
614 // Destination address length must be added to get user data |
620 // length index |
615 // length index |
621 if ( aSmsCheckDisableFdn ) |
616 if ( aSmsCheckDisableFdn ) |
622 { |
617 { |
623 BuildSmsCheckInfo( |
618 msgOffset += BuildSmsCheckInfo( |
624 isiMsg, |
619 isiMsg, |
625 msgOffset ); |
620 msgOffset ); |
626 numOfSubblocks++; |
621 numOfSubblocks++; |
627 TFLOGSTRING("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_CHECK_INFO created." ); |
622 TFLOGSTRING("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_CHECK_INFO created." ); |
628 OstTrace0( TRACE_NORMAL, DUP11_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ, "CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_CHECK_INFO created." ); |
623 OstTrace0( TRACE_NORMAL, DUP11_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_SB_CHECK_INFO created." ); |
629 } |
624 } |
630 |
625 |
631 |
626 |
632 #if (NCP_COMMON_S60_VERSION_SUPPORT>S60_VERSION_32) |
627 #if (NCP_COMMON_S60_VERSION_SUPPORT>S60_VERSION_32) |
633 iSMSSendingOngoing = ETrue; |
628 iSMSSendingOngoing = ETrue; |
638 ISI_HEADER_SIZE + SMS_MESSAGE_SEND_REQ_OFFSET_SUBBLOCKCOUNT, |
633 ISI_HEADER_SIZE + SMS_MESSAGE_SEND_REQ_OFFSET_SUBBLOCKCOUNT, |
639 numOfSubblocks ); |
634 numOfSubblocks ); |
640 ret = iPhoNetSender->Send( isiMsg.Complete() ); |
635 ret = iPhoNetSender->Send( isiMsg.Complete() ); |
641 |
636 |
642 TFLOGSTRING3("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_MESSAGE_SEND_REQ was sent. Number of subblocks in message: %d, ret = %d", numOfSubblocks, ret ); |
637 TFLOGSTRING3("TSY: CMmSmsMessHandler::CreateSmsMessageSendReq. SMS_MESSAGE_SEND_REQ was sent. Number of subblocks in message: %d, ret = %d", numOfSubblocks, ret ); |
643 OstTraceExt2( TRACE_NORMAL, DUP8_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ, "CMmSmsMessHandler::CreateSmsMessageSendReq.SMS_MESSAGE_SEND_REQ was sent.;numOfSubblocks=%hhu;ret=%d", numOfSubblocks, ret ); |
638 OstTraceExt2( TRACE_NORMAL, DUP8_CMMSMSMESSHANDLER_CREATESMSMESSAGESENDREQ_TD, "CMmSmsMessHandler::CreateSmsMessageSendReq.SMS_MESSAGE_SEND_REQ was sent.;numOfSubblocks=%hhu;ret=%d", numOfSubblocks, ret ); |
644 } // End of if destination address is OK |
639 } // End of if destination address is OK |
645 |
640 |
646 return ret; |
641 return ret; |
647 } |
642 } |
648 |
643 |
654 // ----------------------------------------------------------------------------- |
649 // ----------------------------------------------------------------------------- |
655 // |
650 // |
656 TInt CMmSmsMessHandler::SmsReceiveMessageReq( TUint8 aAction ) |
651 TInt CMmSmsMessHandler::SmsReceiveMessageReq( TUint8 aAction ) |
657 { |
652 { |
658 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceiveMessageReq. Action = %d",aAction ); |
653 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceiveMessageReq. Action = %d",aAction ); |
659 OstTraceExt1( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSRECEIVEMESSAGEREQ, "CMmSmsMessHandler::SmsReceiveMessageReq;aAction=%hhu", aAction ); |
654 OstTraceExt1( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSRECEIVEMESSAGEREQ_TD, "CMmSmsMessHandler::SmsReceiveMessageReq;aAction=%hhu", aAction ); |
660 |
655 |
661 TUint8 trId( 0 ); |
656 TUint8 trId( 0 ); |
662 if ( SMS_RECEPTION_STORAGE_STATUS_UPDATE == aAction ) |
657 if ( SMS_RECEPTION_STORAGE_STATUS_UPDATE == aAction ) |
663 { |
658 { |
664 trId = ESmsMessagingResumeSmsReception; |
659 trId = ESmsMessagingResumeSmsReception; |
701 // |- SMS_SB_USER_DATA (optional, included if PDU contains user data. |
696 // |- SMS_SB_USER_DATA (optional, included if PDU contains user data. |
702 // Max. 8 + SMS_GSM_DELIVER_ACK_UD_MAX_LEN |
697 // Max. 8 + SMS_GSM_DELIVER_ACK_UD_MAX_LEN |
703 // + padding = 168 bytes) |
698 // + padding = 168 bytes) |
704 |
699 |
705 TFLOGSTRING3("TSY: CMmSmsMessHandler::SmsReceivedMsgReportReq - traId: %d, RP cause value: %d", aTransactionId, aRpCause); |
700 TFLOGSTRING3("TSY: CMmSmsMessHandler::SmsReceivedMsgReportReq - traId: %d, RP cause value: %d", aTransactionId, aRpCause); |
706 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSRECEIVEDPPREPORTREQ, "CMmSmsMessHandler::SmsReceivedMsgReportReq;aTransactionId=%hhu;aRpCause=%d", aTransactionId, aRpCause ); |
701 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSRECEIVEDPPREPORTREQ_TD, "CMmSmsMessHandler::SmsReceivedMsgReportReq;aTransactionId=%hhu;aRpCause=%d", aTransactionId, aRpCause ); |
707 |
702 |
708 TInt ret( KErrNone ); |
703 TInt ret( KErrNone ); |
709 TUint8 numOfSubblocks( 0 ); // All subblocks are optional |
704 TUint8 numOfSubblocks( 0 ); // All subblocks are optional |
710 TUint8 tpFailureCause( 0 ); |
705 TUint8 tpFailureCause( 0 ); |
711 TUint8 causeType( 0 ); // SMS_CAUSE_TYPE_COMMON |
706 TUint8 causeType( 0 ); // SMS_CAUSE_TYPE_COMMON |
753 |
748 |
754 // If message data is available |
749 // If message data is available |
755 if ( NULL != aMsgData && 0 < aMsgData->Length() ) |
750 if ( NULL != aMsgData && 0 < aMsgData->Length() ) |
756 { |
751 { |
757 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceivedMsgReportReq. Message data availabe, length %d", aMsgData->Length()); |
752 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceivedMsgReportReq. Message data availabe, length %d", aMsgData->Length()); |
758 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSRECEIVEDMSGREPORTREQ, "CMmSmsMessHandler::SmsReceivedMsgReportReq;aMsgData->Length()=%d", aMsgData->Length() ); |
753 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSRECEIVEDMSGREPORTREQ_TD, "CMmSmsMessHandler::SmsReceivedMsgReportReq;aMsgData->Length()=%d", aMsgData->Length() ); |
759 |
754 |
760 TUint8 ind( 0 ); |
755 TUint8 ind( 0 ); |
761 |
756 |
762 // Message parameters = 1st byte of deliver report |
757 // Message parameters = 1st byte of deliver report |
763 messageParameters = ( *aMsgData )[ind++]; |
758 messageParameters = ( *aMsgData )[ind++]; |
803 |
798 |
804 // Too many TP-PI octets -> this PDU is corrupted. |
799 // Too many TP-PI octets -> this PDU is corrupted. |
805 if ( SMS_PARAM_INDICATOR_MAX_LEN < paramIndCount ) |
800 if ( SMS_PARAM_INDICATOR_MAX_LEN < paramIndCount ) |
806 { |
801 { |
807 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceivedMsgReportReq. Error! Too mamy TP-PI parameters: %d", paramIndCount ); |
802 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceivedMsgReportReq. Error! Too mamy TP-PI parameters: %d", paramIndCount ); |
808 OstTraceExt1( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_SMSRECEIVEDMSGREPORTREQ, "CMmSmsMessHandler::SmsReceivedMsgReportReq. Error!;paramIndCount=%hhu", paramIndCount ); |
803 OstTraceExt1( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_SMSRECEIVEDMSGREPORTREQ_TD, "CMmSmsMessHandler::SmsReceivedMsgReportReq. Error!;paramIndCount=%hhu", paramIndCount ); |
809 ret = KErrArgument; |
804 ret = KErrArgument; |
810 moreParamInd = EFalse; |
805 moreParamInd = EFalse; |
811 } |
806 } |
812 } |
807 } |
813 |
808 |
839 if ( KSmsParametersIndUserData & paramask ) |
834 if ( KSmsParametersIndUserData & paramask ) |
840 { |
835 { |
841 tpUdl = ( *aMsgData )[ind++]; |
836 tpUdl = ( *aMsgData )[ind++]; |
842 } |
837 } |
843 TFLOGSTRING4("TSY: CMmSmsMessHandler::SmsReceivedMsgReportReq. protocolInd: %d, dcs: %d, tpUdl: %d", protocolInd, dcs, tpUdl ); |
838 TFLOGSTRING4("TSY: CMmSmsMessHandler::SmsReceivedMsgReportReq. protocolInd: %d, dcs: %d, tpUdl: %d", protocolInd, dcs, tpUdl ); |
844 OstTraceExt3( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_SMSRECEIVEDMSGREPORTREQ, "CMmSmsMessHandler::SmsReceivedMsgReportReq;protocolInd=%hhu;dcs=%hhu;tpUdl=%hhu", protocolInd, dcs, tpUdl ); |
839 OstTraceExt3( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_SMSRECEIVEDMSGREPORTREQ_TD, "CMmSmsMessHandler::SmsReceivedMsgReportReq;protocolInd=%hhu;dcs=%hhu;tpUdl=%hhu", protocolInd, dcs, tpUdl ); |
845 |
840 |
846 // If user data exists, fill SMS_SB_USER_DATA and |
841 // If user data exists, fill SMS_SB_USER_DATA and |
847 // SMS_SB_PARAM_INDICATOR subblocks |
842 // SMS_SB_PARAM_INDICATOR subblocks |
848 if ( 0 < tpUdl ) |
843 if ( 0 < tpUdl ) |
849 { |
844 { |
882 } // end of if ( 0 == tpMti ) |
877 } // end of if ( 0 == tpMti ) |
883 else |
878 else |
884 // TP-MTI is other than SMS_GSM_DELIVER_REPORT, message is not sent |
879 // TP-MTI is other than SMS_GSM_DELIVER_REPORT, message is not sent |
885 { |
880 { |
886 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceivedMsgReportReq. Error! Invalid message type indicator: %d", tpMti); |
881 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceivedMsgReportReq. Error! Invalid message type indicator: %d", tpMti); |
887 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSRECEIVEDMSGREPORTREQ, "CMmSmsMessHandler::SmsReceivedMsgReportReq;tpMti=%hhu", tpMti ); |
882 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSRECEIVEDMSGREPORTREQ_TD, "CMmSmsMessHandler::SmsReceivedMsgReportReq;tpMti=%hhu", tpMti ); |
888 ret = KErrArgument; |
883 ret = KErrArgument; |
889 } |
884 } |
890 } // end of if ( NULL != aMsgData && 0 < aMsgData->Length() ) |
885 } // end of if ( NULL != aMsgData && 0 < aMsgData->Length() ) |
891 else |
886 else |
892 { |
887 { |
893 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsReceivedMsgReportReq. No message data availabe!"); |
888 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsReceivedMsgReportReq. No message data availabe!"); |
894 OstTrace0( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_SMSRECEIVEDMSGREPORTREQ, "CMmSmsMessHandler::SmsReceivedMsgReportReq. No message data available" ); |
889 OstTrace0( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_SMSRECEIVEDMSGREPORTREQ_TD, "CMmSmsMessHandler::SmsReceivedMsgReportReq. No message data available" ); |
895 // If memory capacity exceeded -> gsmTpfailureCause is 0 |
890 // If memory capacity exceeded -> gsmTpfailureCause is 0 |
896 if ( 0 != aRpCause && SMS_EXT_ERR_MEMORY_CAPACITY_EXC != smsCause ) |
891 if ( 0 != aRpCause && SMS_EXT_ERR_MEMORY_CAPACITY_EXC != smsCause ) |
897 { |
892 { |
898 // 0xAF is unspecified TP-command error |
893 // 0xAF is unspecified TP-command error |
899 tpFailureCause = 0xAF; |
894 tpFailureCause = 0xAF; |
955 // Maps RP cause value to SMS cause value. |
950 // Maps RP cause value to SMS cause value. |
956 // -------------------------------------------------------------------------- |
951 // -------------------------------------------------------------------------- |
957 TUint8 CMmSmsMessHandler::SmsMapCause ( TInt aRpCause ) |
952 TUint8 CMmSmsMessHandler::SmsMapCause ( TInt aRpCause ) |
958 { |
953 { |
959 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceivedPpReportReq - aRpCause: %d", aRpCause); |
954 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceivedPpReportReq - aRpCause: %d", aRpCause); |
960 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSMAPCAUSE, "CMmSmsMessHandler::SmsMapCause;aRpCause=%d", aRpCause ); |
955 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSMAPCAUSE_TD, "CMmSmsMessHandler::SmsMapCause;aRpCause=%d", aRpCause ); |
961 |
956 |
962 //initialization of the Sms Cause value is 0x00 (SMS_CAUSE_OK) |
957 //initialization of the Sms Cause value is 0x00 (SMS_CAUSE_OK) |
963 TUint8 retSmsCause( 0 ); |
958 TUint8 retSmsCause( 0 ); |
964 |
959 |
965 switch ( aRpCause ) |
960 switch ( aRpCause ) |
1015 } |
1010 } |
1016 |
1011 |
1017 default: |
1012 default: |
1018 { |
1013 { |
1019 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceivedPpReportReq - unknown RpCause: %d", aRpCause); |
1014 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceivedPpReportReq - unknown RpCause: %d", aRpCause); |
1020 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSMAPCAUSE, "CMmSmsMessHandler::SmsMapCause;unknown aRpCause=%d", aRpCause ); |
1015 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSMAPCAUSE_TD, "CMmSmsMessHandler::SmsMapCause;unknown aRpCause=%d", aRpCause ); |
1021 retSmsCause = SMS_EXT_ERR_PROTOCOL_ERROR; |
1016 retSmsCause = SMS_EXT_ERR_PROTOCOL_ERROR; |
1022 break; |
1017 break; |
1023 } |
1018 } |
1024 } |
1019 } |
1025 |
1020 |
1035 void CMmSmsMessHandler::SmsMessageSendResp( |
1030 void CMmSmsMessHandler::SmsMessageSendResp( |
1036 const TIsiReceiveC& aIsiMsg, |
1031 const TIsiReceiveC& aIsiMsg, |
1037 TInt aIpc ) |
1032 TInt aIpc ) |
1038 { |
1033 { |
1039 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsMessageSendResp - IPC: %d", aIpc); |
1034 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsMessageSendResp - IPC: %d", aIpc); |
1040 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSMESSAGESENDRESP, "CMmSmsMessHandler::SmsMessageSendResp;aIpc=%d", aIpc ); |
1035 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSMESSAGESENDRESP_TD, "CMmSmsMessHandler::SmsMessageSendResp;aIpc=%d", aIpc ); |
1041 |
1036 |
1042 TInt epocCause( KErrNone ); |
1037 TInt epocCause( KErrNone ); |
1043 TUint16 msgRef( 0 ); |
1038 TUint16 msgRef( 0 ); |
1044 TUint8 tpFailureCause( 0 ); |
1039 TUint8 tpFailureCause( 0 ); |
1045 |
1040 |
1056 if ( SMS_ERR_RC_REJECTED == smsServerCauseValue ) |
1051 if ( SMS_ERR_RC_REJECTED == smsServerCauseValue ) |
1057 { |
1052 { |
1058 if ( EMobileSmsMessagingSendMessage == aIpc ) |
1053 if ( EMobileSmsMessagingSendMessage == aIpc ) |
1059 { |
1054 { |
1060 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsMessageSendResp - server cause: SMS_ERR_RC_REJECTED"); |
1055 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsMessageSendResp - server cause: SMS_ERR_RC_REJECTED"); |
1061 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_SMSMESSAGESENDRESP, "CMmSmsMessHandler::SmsMessageSendResp, server cause: SMS_ERR_RC_REJECTED" ); |
1056 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_SMSMESSAGESENDRESP_TD, "CMmSmsMessHandler::SmsMessageSendResp, server cause: SMS_ERR_RC_REJECTED" ); |
1062 // This is an ETel MM-initiated SMS, barred by SAT. |
1057 // This is an ETel MM-initiated SMS, barred by SAT. |
1063 epocCause = CMmStaticUtility::EpocErrorCode( |
1058 epocCause = CMmStaticUtility::EpocErrorCode( |
1064 KErrAccessDenied, |
1059 KErrAccessDenied, |
1065 KErrSatControl ); |
1060 KErrSatControl ); |
1066 } |
1061 } |
1067 else if ( EMmTsySmsSendSatMessage == aIpc ) |
1062 else if ( EMmTsySmsSendSatMessage == aIpc ) |
1068 { |
1063 { |
1069 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsMessageSendResp - server cause: SMS_ERR_RC_REJECTED"); |
1064 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsMessageSendResp - server cause: SMS_ERR_RC_REJECTED"); |
1070 OstTrace0( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_SMSMESSAGESENDRESP, "CMmSmsMessHandler::SmsMessageSendResp, server cause: SMS_ERR_RC_REJECTED" ); |
1065 OstTrace0( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_SMSMESSAGESENDRESP_TD, "CMmSmsMessHandler::SmsMessageSendResp, server cause: SMS_ERR_RC_REJECTED" ); |
1071 // This is a SAT-initiated SMS, barred by SAT. |
1066 // This is a SAT-initiated SMS, barred by SAT. |
1072 epocCause = KErrSatMoSmControlBarred; |
1067 epocCause = KErrSatMoSmControlBarred; |
1073 } |
1068 } |
1074 } |
1069 } |
1075 else |
1070 else |
1088 smsServerCauseValue ); |
1083 smsServerCauseValue ); |
1089 } |
1084 } |
1090 else // Invalid cause type |
1085 else // Invalid cause type |
1091 { |
1086 { |
1092 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsMessageSendResp: Unknown cause type %d.", smsServerCauseType ); |
1087 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsMessageSendResp: Unknown cause type %d.", smsServerCauseType ); |
1093 OstTraceExt1( TRACE_NORMAL, DUP5_CMMSMSMESSHANDLER_SMSMESSAGESENDRESP, "CMmSmsMessHandler::SmsMessageSendResp;smsServerCauseType=%hhu", smsServerCauseType ); |
1088 OstTraceExt1( TRACE_NORMAL, DUP5_CMMSMSMESSHANDLER_SMSMESSAGESENDRESP_TD, "CMmSmsMessHandler::SmsMessageSendResp;smsServerCauseType=%hhu", smsServerCauseType ); |
1094 TF_ASSERT_NOT_REACHED(); |
1089 TF_ASSERT_NOT_REACHED(); |
1095 } |
1090 } |
1096 } |
1091 } |
1097 else // Sending was OK |
1092 else // Sending was OK |
1098 { |
1093 { |
1174 //complete the request |
1169 //complete the request |
1175 #if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32) |
1170 #if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32) |
1176 iMessageRouter->Complete( EMmTsySmsSendSatMessage, epocCause ); |
1171 iMessageRouter->Complete( EMmTsySmsSendSatMessage, epocCause ); |
1177 #else |
1172 #else |
1178 #ifdef __WINSCW__ |
1173 #ifdef __WINSCW__ |
1179 // for simatktsy testtool |
1174 // for simatktsy testtool |
1180 // Temporarily removed for Bridge camp! |
1175 if ( iMessageRouter->iSatMessaging ) |
1181 /*if ( iMessageRouter->iSatMessaging ) |
1176 { |
1182 { |
1177 iMessageRouter->iSatMessaging->CompleteSendSmsMessage ( epocCause ); |
1183 iMessageRouter->iSatMessaging->CompleteSendSmsMessage ( epocCause ); |
1178 } |
1184 } |
|
1185 // for nokiatsy testtool |
1179 // for nokiatsy testtool |
1186 */ |
1180 iMessageRouter->Complete ( EMmTsySmsSendSatMessage, epocCause ); |
1187 iMessageRouter->Complete ( EMmTsySmsSendSatMessage, epocCause ); |
|
1188 #else // __WINSCW__ |
1181 #else // __WINSCW__ |
1189 // Temporarily removed for Bridge camp! |
1182 iMessageRouter->iSatMessaging->CompleteSendSmsMessage ( epocCause ); |
1190 //iMessageRouter->iSatMessaging->CompleteSendSmsMessage ( epocCause ); |
|
1191 #endif // __WINSCW__ |
1183 #endif // __WINSCW__ |
1192 iSMSSendingOngoing = EFalse; |
1184 iSMSSendingOngoing = EFalse; |
1193 #endif //NCP_COMMON_S60_VERSION_SUPPORT |
1185 #endif //NCP_COMMON_S60_VERSION_SUPPORT |
1194 } |
1186 } |
1195 else |
1187 else |
1196 { |
1188 { |
1197 TFLOGSTRING2("TSY:CMmSmsMessHandler::SmsMessageSendResp:Unexpected IPC %d.",aIpc); |
1189 TFLOGSTRING2("TSY:CMmSmsMessHandler::SmsMessageSendResp:Unexpected IPC %d.",aIpc); |
1198 OstTrace1( TRACE_NORMAL, DUP6_CMMSMSMESSHANDLER_SMSMESSAGESENDRESP, "CMmSmsMessHandler::SmsMessageSendResp;aIpc=%d", aIpc ); |
1190 OstTrace1( TRACE_NORMAL, DUP6_CMMSMSMESSHANDLER_SMSMESSAGESENDRESP_TD, "CMmSmsMessHandler::SmsMessageSendResp;aIpc=%d", aIpc ); |
1199 } |
1191 } |
1200 } |
1192 } |
1201 |
1193 |
1202 // ----------------------------------------------------------------------------- |
1194 // ----------------------------------------------------------------------------- |
1203 // CMmSmsMessHandler::SmsReceiveMessageResp |
1195 // CMmSmsMessHandler::SmsReceiveMessageResp |
1206 // ----------------------------------------------------------------------------- |
1198 // ----------------------------------------------------------------------------- |
1207 // |
1199 // |
1208 void CMmSmsMessHandler::SmsReceiveMessageResp( const TIsiReceiveC& aIsiMsg ) |
1200 void CMmSmsMessHandler::SmsReceiveMessageResp( const TIsiReceiveC& aIsiMsg ) |
1209 { |
1201 { |
1210 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsReceiveMessageResp"); |
1202 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsReceiveMessageResp"); |
1211 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSPPROUTINGRESP, "CMmSmsMessHandler::SmsReceiveMessageResp" ); |
1203 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSPPROUTINGRESP_TD, "CMmSmsMessHandler::SmsReceiveMessageResp" ); |
1212 |
1204 |
1213 // Get transaction ID for completing with correct IPC |
1205 // Get transaction ID for completing with correct IPC |
1214 TUint8 trId( aIsiMsg.Get8bit( |
1206 TUint8 trId( aIsiMsg.Get8bit( |
1215 ISI_HEADER_SIZE + SMS_RECEIVE_MESSAGE_RESP_OFFSET_TRANSID ) ); |
1207 ISI_HEADER_SIZE + SMS_RECEIVE_MESSAGE_RESP_OFFSET_TRANSID ) ); |
1216 // Get reception status |
1208 // Get reception status |
1228 TInt epocError( CMmStaticUtility::CSCauseToEpocError( |
1220 TInt epocError( CMmStaticUtility::CSCauseToEpocError( |
1229 PN_SMS, |
1221 PN_SMS, |
1230 smsServerCauseType, |
1222 smsServerCauseType, |
1231 smsServerCauseValue ) ); |
1223 smsServerCauseValue ) ); |
1232 |
1224 |
1233 if ( KErrNone == epocError ) |
|
1234 { |
|
1235 // even if client deactivates reception, next time it is activated |
|
1236 // SMS server will ask network to resend all NACKed MT SMs |
|
1237 // only query status does not affect this flag, but this action |
|
1238 // is not used |
|
1239 iMemoryCapacityExceeded = EFalse; |
|
1240 } |
|
1241 |
|
1242 // Compete active reception status |
1225 // Compete active reception status |
1243 if ( SMS_RECEPTION_ACTIVE == receptionStatus ) |
1226 if ( SMS_RECEPTION_ACTIVE == receptionStatus ) |
1244 { |
1227 { |
1245 if ( 0 == trId ) // SMS receiving activated |
1228 if ( 0 == trId ) // SMS receiving activated |
1246 { |
1229 { |
1279 TBool CMmSmsMessHandler::IsSmsClass2( |
1262 TBool CMmSmsMessHandler::IsSmsClass2( |
1280 const TIsiReceiveC& aIsiMsg, //Isi Msg |
1263 const TIsiReceiveC& aIsiMsg, //Isi Msg |
1281 TUint8& aSmsClass2ReplaceTpPid ) // TP-PID to replace (set by this function) |
1264 TUint8& aSmsClass2ReplaceTpPid ) // TP-PID to replace (set by this function) |
1282 { |
1265 { |
1283 TFLOGSTRING("TSY: CMmSmsMessHandler::IsSmsClass2"); |
1266 TFLOGSTRING("TSY: CMmSmsMessHandler::IsSmsClass2"); |
1284 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_ISSMSCLASS2, "CMmSmsMessHandler::IsSmsClass2" ); |
1267 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_ISSMSCLASS2_TD, "CMmSmsMessHandler::IsSmsClass2" ); |
1285 TBool smsClass2( EFalse ); |
1268 TBool smsClass2( EFalse ); |
1286 TBool cphsCase( EFalse ); |
1269 TBool cphsCase( EFalse ); |
1287 |
1270 |
1288 // If received Class 2 SMS is a "replace type" message, contains |
1271 // If received Class 2 SMS is a "replace type" message, contains |
1289 // the TP-PID value, else value is zero. |
1272 // the TP-PID value, else value is zero. |
1337 // This is a CPHS message indicator. No further |
1320 // This is a CPHS message indicator. No further |
1338 // check of DCS and PID necessary. |
1321 // check of DCS and PID necessary. |
1339 cphsCase = ETrue; |
1322 cphsCase = ETrue; |
1340 smsClass2 = EFalse; |
1323 smsClass2 = EFalse; |
1341 TFLOGSTRING("TSY: CMmSmsMessHandler::IsSmsClass2: CPHS message"); |
1324 TFLOGSTRING("TSY: CMmSmsMessHandler::IsSmsClass2: CPHS message"); |
1342 OstTrace0( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_ISSMSCLASS2, "CMmSmsMessHandler::IsSmsClass2. CPHS message" ); |
1325 OstTrace0( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_ISSMSCLASS2_TD, "CMmSmsMessHandler::IsSmsClass2. CPHS message" ); |
1343 } |
1326 } |
1344 } |
1327 } |
1345 } |
1328 } |
1346 } |
1329 } |
1347 // End CPHS special case handling |
1330 // End CPHS special case handling |
1374 // chapter 9.2.3.9 "TP Protocol Identifier (TP PID)" |
1357 // chapter 9.2.3.9 "TP Protocol Identifier (TP PID)" |
1375 if ( ( 0x41 <= protocolId ) && ( 0x47 >= protocolId ) ) |
1358 if ( ( 0x41 <= protocolId ) && ( 0x47 >= protocolId ) ) |
1376 { |
1359 { |
1377 // Yes, this is a "replace type" message |
1360 // Yes, this is a "replace type" message |
1378 TFLOGSTRING2("TSY: CMmSmsMessHandler::IsSmsClass2: Replace type message, protocol ID: %d", protocolId ); |
1361 TFLOGSTRING2("TSY: CMmSmsMessHandler::IsSmsClass2: Replace type message, protocol ID: %d", protocolId ); |
1379 OstTraceExt1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_ISSMSCLASS2, "CMmSmsMessHandler::IsSmsClass2. Replace type message;protocolId=%hhu", protocolId ); |
1362 OstTraceExt1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_ISSMSCLASS2_TD, "CMmSmsMessHandler::IsSmsClass2. Replace type message;protocolId=%hhu", protocolId ); |
1380 aSmsClass2ReplaceTpPid = protocolId; |
1363 aSmsClass2ReplaceTpPid = protocolId; |
1381 } |
1364 } |
1382 |
1365 |
1383 // TP-DCS tells us the class of the SMS |
1366 // TP-DCS tells us the class of the SMS |
1384 TUint8 dataCodingScheme( sms[index++] ); |
1367 TUint8 dataCodingScheme( sms[index++] ); |
1414 if ( 0 != aSmsClass2ReplaceTpPid ) |
1397 if ( 0 != aSmsClass2ReplaceTpPid ) |
1415 { |
1398 { |
1416 if ( smsClass2 ) |
1399 if ( smsClass2 ) |
1417 { |
1400 { |
1418 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsClass: Received class 2 message has TP-PID 0x%x", aSmsClass2ReplaceTpPid); |
1401 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsClass: Received class 2 message has TP-PID 0x%x", aSmsClass2ReplaceTpPid); |
1419 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_ISSMSCLASS2, "CMmSmsMessHandler::IsSmsClass2;aSmsClass2ReplaceTpPid=%hhx", aSmsClass2ReplaceTpPid ); |
1402 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_ISSMSCLASS2_TD, "CMmSmsMessHandler::IsSmsClass2;aSmsClass2ReplaceTpPid=%hhx", aSmsClass2ReplaceTpPid ); |
1420 } |
1403 } |
1421 else |
1404 else |
1422 { |
1405 { |
1423 aSmsClass2ReplaceTpPid = 0; |
1406 aSmsClass2ReplaceTpPid = 0; |
1424 } |
1407 } |
1433 // ----------------------------------------------------------------------------- |
1416 // ----------------------------------------------------------------------------- |
1434 // |
1417 // |
1435 void CMmSmsMessHandler::SmsReceivedMsgInd( const TIsiReceiveC& aIsiMsg ) |
1418 void CMmSmsMessHandler::SmsReceivedMsgInd( const TIsiReceiveC& aIsiMsg ) |
1436 { |
1419 { |
1437 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsReceivedMsgInd"); |
1420 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsReceivedMsgInd"); |
1438 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSPPROUTINGNTF, "CMmSmsMessHandler::SmsReceivedMsgInd" ); |
1421 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSPPROUTINGNTF_TD, "CMmSmsMessHandler::SmsReceivedMsgInd" ); |
1439 |
1422 |
1440 if ( iMemoryCapacityExceeded ) |
1423 TInt ret( KErrNone ); |
1441 { |
1424 // Create a package |
1442 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsReceivedMsgInd no storage - internal NACK"); |
1425 CMmDataPackage package; |
1443 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSRECEIVEDMSGIND, "CMmSmsMessHandler::SmsReceivedMsgInd no storage - internal NACK" ); |
1426 |
1444 // error is ignored |
1427 TUint8 replaceTpPid( 0 ); // IsSmsClass2 also fills this |
1445 SmsReceivedMsgReportReq( |
1428 TBool receivedSmsClass2( IsSmsClass2( aIsiMsg, replaceTpPid ) ); |
1446 EInternalNack, |
1429 |
1447 NULL, |
1430 // SIM SMS cache: incoming class 2 SMS |
1448 KErrGsmSMSMemoryCapacityExceeded ); |
1431 if ( receivedSmsClass2 ) |
1449 } |
1432 { |
1433 ret = SmsClass2ReceivedMsgInd( aIsiMsg, replaceTpPid ); |
|
1434 } |
|
1435 // Received SMS is not a class 2 SMS (it is a normal SMS) |
|
1450 else |
1436 else |
1451 { |
1437 { |
1452 TInt ret( KErrNone ); |
1438 ret = SmsClass1ReceivedMsgInd( aIsiMsg ); |
1453 // Create a package |
1439 } |
1454 CMmDataPackage package; |
1440 // There was an error, complete to upper level |
1455 |
1441 if ( KErrNone != ret ) |
1456 TUint8 replaceTpPid( 0 ); // IsSmsClass2 also fills this |
1442 { |
1457 TBool receivedSmsClass2( IsSmsClass2( aIsiMsg, replaceTpPid ) ); |
|
1458 |
|
1459 // SIM SMS cache: incoming class 2 SMS |
|
1460 if ( receivedSmsClass2 ) |
|
1461 { |
|
1462 ret = SmsClass2ReceivedMsgInd( aIsiMsg, replaceTpPid ); |
|
1463 } |
|
1464 // Received SMS is not a class 2 SMS (it is a normal SMS) |
|
1465 else |
|
1466 { |
|
1467 ret = SmsClass1ReceivedMsgInd( aIsiMsg ); |
|
1468 } |
|
1469 // There was an error, complete to upper level |
|
1470 if ( KErrNone != ret ) |
|
1471 { |
|
1472 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceivedMsgInd;ret=%d", ret); |
1443 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsReceivedMsgInd;ret=%d", ret); |
1473 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSPPROUTINGNTF, "CMmSmsMessHandler::SmsReceivedMsgInd;ret=%d", ret ); |
1444 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSPPROUTINGNTF_TD, "CMmSmsMessHandler::SmsReceivedMsgInd;ret=%d", ret ); |
1474 TBool smsInd( ETrue ); |
1445 TBool smsInd( ETrue ); |
1475 TSmsMsg* nullSms = NULL; |
1446 TSmsMsg* nullSms = NULL; |
1476 |
1447 |
1477 package.PackData( &smsInd, &nullSms ); |
1448 package.PackData( &smsInd, &nullSms ); |
1478 |
1449 |
1479 // Complete request to client |
1450 // Complete request to client |
1480 iMessageRouter->Complete( |
1451 iMessageRouter->Complete( |
1481 EMobileSmsMessagingReceiveMessage, |
1452 EMobileSmsMessagingReceiveMessage, |
1482 &package, |
1453 &package, |
1483 ret ); |
1454 ret ); |
1484 } |
|
1485 } |
1455 } |
1486 } |
1456 } |
1487 |
1457 |
1488 // ----------------------------------------------------------------------------- |
1458 // ----------------------------------------------------------------------------- |
1489 // CMmSmsMessHandler::SmsReceivedMsgReportResp |
1459 // CMmSmsMessHandler::SmsReceivedMsgReportResp |
1497 + SMS_RECEIVED_MSG_REPORT_RESP_OFFSET_TRANSID ) ); |
1467 + SMS_RECEIVED_MSG_REPORT_RESP_OFFSET_TRANSID ) ); |
1498 TUint8 cause( aIsiMsg.Get8bit( ISI_HEADER_SIZE |
1468 TUint8 cause( aIsiMsg.Get8bit( ISI_HEADER_SIZE |
1499 + SMS_RECEIVED_MSG_REPORT_RESP_OFFSET_SMSCAUSE ) ); |
1469 + SMS_RECEIVED_MSG_REPORT_RESP_OFFSET_SMSCAUSE ) ); |
1500 |
1470 |
1501 TFLOGSTRING3("TSY: CMmSmsMessHandler::SmsReceivedPpReportResp - traId: %d, cause: %d", traId, cause); |
1471 TFLOGSTRING3("TSY: CMmSmsMessHandler::SmsReceivedPpReportResp - traId: %d, cause: %d", traId, cause); |
1502 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSRECEIVEDPPREPORTRESP, "CMmSmsMessHandler::SmsReceivedPpReportResp;traId=%hhu;cause=%hhu", traId, cause ); |
1472 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSRECEIVEDPPREPORTRESP_TD, "CMmSmsMessHandler::SmsReceivedPpReportResp;traId=%hhu;cause=%hhu", traId, cause ); |
1503 |
1473 |
1504 if ( iMemoryCapacityExceeded ) |
1474 // Response for SmsReceivedPpReportReq (Ack) |
1505 { |
1475 if ( ESmsMessagingAckSmsStored == traId ) |
1506 // ignore the response, this is response to self-NACK |
1476 { |
1507 // caused by client not having anymore storage space |
1477 iMessageRouter->Complete( |
1508 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsReceivedPpReportResp - self-NACK"); |
1478 EMobileSmsMessagingAckSmsStored, |
1509 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSRECEIVEDMSGREPORTRESP, "CMmSmsMessHandler::SmsReceivedPpReportResp - self-NACK" ); |
1479 CMmStaticUtility::CSCauseToEpocError( |
1480 PN_SMS, |
|
1481 SMS_CAUSE_TYPE_COMMON, |
|
1482 cause ) ); |
|
1483 } |
|
1484 // Response for SmsReceivedPpReportReq (Nack) |
|
1485 else if ( ESmsMessagingNackSmsStored == traId ) |
|
1486 { |
|
1487 iMessageRouter->Complete( |
|
1488 EMobileSmsMessagingNackSmsStored, |
|
1489 CMmStaticUtility::CSCauseToEpocError( |
|
1490 PN_SMS, |
|
1491 SMS_CAUSE_TYPE_COMMON, |
|
1492 cause ) ); |
|
1510 } |
1493 } |
1511 else |
1494 else |
1512 { |
1495 { |
1513 // Response for SmsReceivedPpReportReq (Ack) |
|
1514 if ( ESmsMessagingAckSmsStored == traId ) |
|
1515 { |
|
1516 iMessageRouter->Complete( |
|
1517 EMobileSmsMessagingAckSmsStored, |
|
1518 CMmStaticUtility::CSCauseToEpocError( |
|
1519 PN_SMS, |
|
1520 SMS_CAUSE_TYPE_COMMON, |
|
1521 cause ) ); |
|
1522 } |
|
1523 // Response for SmsReceivedPpReportReq (Nack) |
|
1524 else if ( ESmsMessagingNackSmsStored == traId || |
|
1525 ESmsMessagingNackSmsStoredCapacityExceeded == traId ) |
|
1526 { |
|
1527 iMessageRouter->Complete( |
|
1528 EMobileSmsMessagingNackSmsStored, |
|
1529 CMmStaticUtility::CSCauseToEpocError( |
|
1530 PN_SMS, |
|
1531 SMS_CAUSE_TYPE_COMMON, |
|
1532 cause ) ); |
|
1533 } |
|
1534 else |
|
1535 { |
|
1536 TFLOGSTRING2("TSY:CMmSmsMessHandler::SmsReceivedPpReportResp:Unexpected transaction ID %d.",traId); |
1496 TFLOGSTRING2("TSY:CMmSmsMessHandler::SmsReceivedPpReportResp:Unexpected transaction ID %d.",traId); |
1537 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSRECEIVEDPPREPORTRESP, "CMmSmsMessHandler::SmsReceivedPpReportResp;Unexpected transaction ID=%hhu", traId ); |
1497 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSRECEIVEDPPREPORTRESP_TD, "CMmSmsMessHandler::SmsReceivedPpReportResp;Unexpected transaction ID=%hhu", traId ); |
1538 } |
1498 } |
1539 |
1499 |
1540 if ( SMS_OK != cause ) |
1500 if ( SMS_OK != cause ) |
1541 { |
1501 { |
1542 //Acknowledging failed. |
1502 //Acknowledging failed. |
1543 iMemoryCapacityExceeded = EFalse; |
1503 iSmsSlotLocation = 0; |
1544 iSmsSlotLocation = 0; |
|
1545 } |
|
1546 else if ( ESmsMessagingNackSmsStoredCapacityExceeded == traId ) |
|
1547 { |
|
1548 // client succeeded NACKing MT SM |
|
1549 // it wont receive any further MT SM indications |
|
1550 iMemoryCapacityExceeded = ETrue; |
|
1551 } |
|
1552 } |
1504 } |
1553 } |
1505 } |
1554 |
1506 |
1555 // ----------------------------------------------------------------------------- |
1507 // ----------------------------------------------------------------------------- |
1556 // CMmSmsMessHandler::BuildScAddress |
1508 // CMmSmsMessHandler::BuildScAddress |
1560 void CMmSmsMessHandler::BuildScAddress( |
1512 void CMmSmsMessHandler::BuildScAddress( |
1561 RMobilePhone::TMobileAddress const & scPtr, //Pointer to Service center |
1513 RMobilePhone::TMobileAddress const & scPtr, //Pointer to Service center |
1562 TDes8 &aScAddress ) const //Service center address |
1514 TDes8 &aScAddress ) const //Service center address |
1563 { |
1515 { |
1564 TFLOGSTRING("TSY: CMmSmsMessHandler::BuildScAddress"); |
1516 TFLOGSTRING("TSY: CMmSmsMessHandler::BuildScAddress"); |
1565 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSCADDRESS, "CMmSmsMessHandler::BuildScAddress" ); |
1517 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSCADDRESS_TD, "CMmSmsMessHandler::BuildScAddress" ); |
1566 //get type of number from attributes |
1518 //get type of number from attributes |
1567 RMobilePhone::TMobileTON ton( scPtr.iTypeOfNumber ); |
1519 RMobilePhone::TMobileTON ton( scPtr.iTypeOfNumber ); |
1568 //map type of number from TMobileTON to TUint8 |
1520 //map type of number from TMobileTON to TUint8 |
1569 TUint8 typeOfNumber( CMmSmsGsmAddress::GsmMapTonToTUint8( ton ) ); |
1521 TUint8 typeOfNumber( CMmSmsGsmAddress::GsmMapTonToTUint8( ton ) ); |
1570 //get numbering plan identification from attributes |
1522 //get numbering plan identification from attributes |
1590 void CMmSmsMessHandler::BuildDeAddress( |
1542 void CMmSmsMessHandler::BuildDeAddress( |
1591 RMobilePhone::TMobileAddress const & scPtr, // Service centre pointer |
1543 RMobilePhone::TMobileAddress const & scPtr, // Service centre pointer |
1592 TDes8 &aDeAddress ) const // Destination address |
1544 TDes8 &aDeAddress ) const // Destination address |
1593 { |
1545 { |
1594 TFLOGSTRING("TSY: CMmSmsMessHandler::BuildDeAddress"); |
1546 TFLOGSTRING("TSY: CMmSmsMessHandler::BuildDeAddress"); |
1595 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDDEADDRESS, "CMmSmsMessHandler::BuildDeAddress" ); |
1547 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDDEADDRESS_TD, "CMmSmsMessHandler::BuildDeAddress" ); |
1596 //get type of number from attributes |
1548 //get type of number from attributes |
1597 RMobilePhone::TMobileTON ton( scPtr.iTypeOfNumber ); |
1549 RMobilePhone::TMobileTON ton( scPtr.iTypeOfNumber ); |
1598 |
1550 |
1599 //map type of number from TMobileTON to TUint8 |
1551 //map type of number from TMobileTON to TUint8 |
1600 TUint8 typeOfNumber( CMmSmsGsmAddress::GsmMapTonToTUint8( ton ) ); |
1552 TUint8 typeOfNumber( CMmSmsGsmAddress::GsmMapTonToTUint8( ton ) ); |
1623 // ----------------------------------------------------------------------------- |
1575 // ----------------------------------------------------------------------------- |
1624 // |
1576 // |
1625 TBool CMmSmsMessHandler::IsDataCodingScheme7Bit( TUint8 aDcs ) const |
1577 TBool CMmSmsMessHandler::IsDataCodingScheme7Bit( TUint8 aDcs ) const |
1626 { |
1578 { |
1627 TFLOGSTRING("TSY: CMmSmsMessHandler::IsDataCodingScheme7Bit"); |
1579 TFLOGSTRING("TSY: CMmSmsMessHandler::IsDataCodingScheme7Bit"); |
1628 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_ISDATACODINGSCHEME7BIT, "CMmSmsMessHandler::IsDataCodingScheme7Bit" ); |
1580 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_ISDATACODINGSCHEME7BIT_TD, "CMmSmsMessHandler::IsDataCodingScheme7Bit" ); |
1629 TUint8 codingGroup( static_cast<TUint8>( 0xf0 & aDcs ) ); // 11110000 |
1581 TUint8 codingGroup( static_cast<TUint8>( 0xf0 & aDcs ) ); // 11110000 |
1630 TUint8 lowerBits( static_cast<TUint8>( 0x0f & aDcs ) ); // 00001111 |
1582 TUint8 lowerBits( static_cast<TUint8>( 0x0f & aDcs ) ); // 00001111 |
1631 |
1583 |
1632 // See 3GPP TS 23.038 "Technical Specification Group Terminals; |
1584 // See 3GPP TS 23.038 "Technical Specification Group Terminals; |
1633 //Alphabets and language-specific information" |
1585 //Alphabets and language-specific information" |
1688 TUint8 aCharacterAmount, //Character amount (from ISI message) |
1640 TUint8 aCharacterAmount, //Character amount (from ISI message) |
1689 TUint8 aDataLength, //Data length in bytes (from ISI message) |
1641 TUint8 aDataLength, //Data length in bytes (from ISI message) |
1690 TPtrC8 const & aUserData ) const //User data |
1642 TPtrC8 const & aUserData ) const //User data |
1691 { |
1643 { |
1692 TFLOGSTRING3("TSY: CMmSmsMessHandler::CalculateNumberOfCharsInUserData - char amount (from ISI): %d, data length (from ISI): %d", aCharacterAmount, aDataLength); |
1644 TFLOGSTRING3("TSY: CMmSmsMessHandler::CalculateNumberOfCharsInUserData - char amount (from ISI): %d, data length (from ISI): %d", aCharacterAmount, aDataLength); |
1693 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_CALCULATENUMBEROFCHARSINUSERDATA, "CMmSmsMessHandler::CalculateNumberOfCharsInUserData;aCharacterAmount=%hhu;aDataLength=%hhu", aCharacterAmount, aDataLength ); |
1645 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_CALCULATENUMBEROFCHARSINUSERDATA_TD, "CMmSmsMessHandler::CalculateNumberOfCharsInUserData;aCharacterAmount=%hhu;aDataLength=%hhu", aCharacterAmount, aDataLength ); |
1694 |
1646 |
1695 TUint16 characterAmount; |
1647 TUint16 characterAmount; |
1696 |
1648 |
1697 // This calculation is only needed if the number of characters is |
1649 // This calculation is only needed if the number of characters is |
1698 // not provided in the aCharacterAmount parameter. Seems to be some |
1650 // not provided in the aCharacterAmount parameter. Seems to be some |
1727 TInt CMmSmsMessHandler::ExtFuncL( |
1679 TInt CMmSmsMessHandler::ExtFuncL( |
1728 TInt aIpc, // IPC number |
1680 TInt aIpc, // IPC number |
1729 const CMmDataPackage* aDataPackage ) // Data package |
1681 const CMmDataPackage* aDataPackage ) // Data package |
1730 { |
1682 { |
1731 TFLOGSTRING2("TSY: CMmSmsMessHandler::ExtFuncL: IPC: %d", aIpc); |
1683 TFLOGSTRING2("TSY: CMmSmsMessHandler::ExtFuncL: IPC: %d", aIpc); |
1732 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_EXTFUNCL, "CMmSmsMessHandler::ExtFuncL;aIpc=%d", aIpc ); |
1684 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_EXTFUNCL_TD, "CMmSmsMessHandler::ExtFuncL;aIpc=%d", aIpc ); |
1733 |
1685 |
1734 TInt ret( KErrNone ); |
1686 TInt ret( KErrNone ); |
1735 |
1687 |
1736 switch ( aIpc ) |
1688 switch ( aIpc ) |
1737 { |
1689 { |
1743 } |
1695 } |
1744 case EMmTsyActivateSmsRouting: |
1696 case EMmTsyActivateSmsRouting: |
1745 { |
1697 { |
1746 #if defined( INTERNAL_TESTING_SMS_WITH_EMULATOR ) && ( ! defined( __WINS__ ) ) |
1698 #if defined( INTERNAL_TESTING_SMS_WITH_EMULATOR ) && ( ! defined( __WINS__ ) ) |
1747 TFLOGSTRING("TSY: CMmSmsMessHandler::ExtFuncL: SMS routing deactivated with flag INTERNAL_TESTING_SMS_WITH_EMULATOR"); |
1699 TFLOGSTRING("TSY: CMmSmsMessHandler::ExtFuncL: SMS routing deactivated with flag INTERNAL_TESTING_SMS_WITH_EMULATOR"); |
1748 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_EXTFUNCL, "CMmSmsMessHandler::ExtFuncL, SMS routing deactivated with flag INTERNAL_TESTING_SMS_WITH_EMULATOR" ); |
1700 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_EXTFUNCL_TD, "CMmSmsMessHandler::ExtFuncL, SMS routing deactivated with flag INTERNAL_TESTING_SMS_WITH_EMULATOR" ); |
1749 #else |
1701 #else |
1750 ret = SmsReceiveMessageReq( SMS_RECEPTION_ACTIVATE ); |
1702 ret = SmsReceiveMessageReq( SMS_RECEPTION_ACTIVATE ); |
1751 #endif // defined( INTERNAL_TESTING_SMS_WITH_EMULATOR ) && ( ! defined( __WINS__ ) ) |
1703 #endif // defined( INTERNAL_TESTING_SMS_WITH_EMULATOR ) && ( ! defined( __WINS__ ) ) |
1752 break; |
1704 break; |
1753 } |
1705 } |
1809 reinterpret_cast<TBuf8<RMobileSmsMessaging::KGsmTpduSize> *> ( data ); |
1761 reinterpret_cast<TBuf8<RMobileSmsMessaging::KGsmTpduSize> *> ( data ); |
1810 |
1762 |
1811 if ( NULL == msgData ) |
1763 if ( NULL == msgData ) |
1812 { |
1764 { |
1813 TFLOGSTRING("TSY: CMmSmsMessHandler::ExtFuncL.Internal Ack handling started" ); |
1765 TFLOGSTRING("TSY: CMmSmsMessHandler::ExtFuncL.Internal Ack handling started" ); |
1814 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_EXTFUNCL, "CMmSmsMessHandler::ExtFuncL, Internal Ack handling started" ); |
1766 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_EXTFUNCL_TD, "CMmSmsMessHandler::ExtFuncL, Internal Ack handling started" ); |
1815 } |
1767 } |
1816 ret = SmsReceivedMsgReportReq( |
1768 ret = SmsReceivedMsgReportReq( |
1817 ESmsMessagingAckSmsStored, |
1769 ESmsMessagingAckSmsStored, |
1818 msgData, |
1770 msgData, |
1819 KErrNone ); |
1771 KErrNone ); |
1828 aDataPackage->UnPackData( msgData, rpCause ); |
1780 aDataPackage->UnPackData( msgData, rpCause ); |
1829 |
1781 |
1830 if ( NULL == msgData ) |
1782 if ( NULL == msgData ) |
1831 { |
1783 { |
1832 TFLOGSTRING("TSY: CMmSmsMessHandler::ExtFuncL.Internal Nack handling started" ); |
1784 TFLOGSTRING("TSY: CMmSmsMessHandler::ExtFuncL.Internal Nack handling started" ); |
1833 OstTrace0( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_EXTFUNCL, "CMmSmsMessHandler::ExtFuncL, Internal Nack handling started" ); |
1785 OstTrace0( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_EXTFUNCL_TD, "CMmSmsMessHandler::ExtFuncL, Internal Nack handling started" ); |
1834 } |
1786 } |
1835 |
1787 |
1836 // NACK due to lack of storage space causes NTSY to reject further |
|
1837 // MT SMs until client resumes SMS reception |
|
1838 TUint8 traId = KErrGsmSMSMemoryCapacityExceeded == rpCause ? |
|
1839 ESmsMessagingNackSmsStoredCapacityExceeded : ESmsMessagingNackSmsStored; |
|
1840 ret = SmsReceivedMsgReportReq( |
1788 ret = SmsReceivedMsgReportReq( |
1841 traId, |
1789 ESmsMessagingNackSmsStored, |
1842 msgData, |
1790 msgData, |
1843 rpCause ); |
1791 rpCause ); |
1844 break; |
1792 break; |
1845 } |
1793 } |
1846 case EMobilePhoneStoreDelete: |
1794 case EMobilePhoneStoreDelete: |
1883 break; |
1831 break; |
1884 } |
1832 } |
1885 case ECustomSetSimMessageStatusReadIPC: |
1833 case ECustomSetSimMessageStatusReadIPC: |
1886 { |
1834 { |
1887 TFLOGSTRING("TSY: CMmSmsMessHandler::ExtFuncL - ECustomSetSimMessageStatusReadIPC starts."); |
1835 TFLOGSTRING("TSY: CMmSmsMessHandler::ExtFuncL - ECustomSetSimMessageStatusReadIPC starts."); |
1888 OstTrace0( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_EXTFUNCL, "CMmSmsMessHandler::ExtFuncL, ECustomSetSimMessageStatusReadIPC starts" ); |
1836 OstTrace0( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_EXTFUNCL_TD, "CMmSmsMessHandler::ExtFuncL, ECustomSetSimMessageStatusReadIPC starts" ); |
1889 TTime scTime; |
1837 TTime scTime; |
1890 TInt timezoneDiff; |
1838 TInt timezoneDiff; |
1891 aDataPackage->UnPackData( scTime, timezoneDiff ); |
1839 aDataPackage->UnPackData( scTime, timezoneDiff ); |
1892 |
1840 |
1893 // start searching for a SIM message with this timestamp |
1841 // start searching for a SIM message with this timestamp |
1910 } |
1858 } |
1911 } |
1859 } |
1912 currentSlot++; |
1860 currentSlot++; |
1913 } |
1861 } |
1914 TFLOGSTRING("TSY: CMmSmsMessHandler::ExtFuncL - ECustomSetSimMessageStatusReadIPC done."); |
1862 TFLOGSTRING("TSY: CMmSmsMessHandler::ExtFuncL - ECustomSetSimMessageStatusReadIPC done."); |
1915 OstTrace0( TRACE_NORMAL, DUP5_CMMSMSMESSHANDLER_EXTFUNCL, "CMmSmsMessHandler::ExtFuncL, ECustomSetSimMessageStatusReadIPC done" ); |
1863 OstTrace0( TRACE_NORMAL, DUP5_CMMSMSMESSHANDLER_EXTFUNCL_TD, "CMmSmsMessHandler::ExtFuncL, ECustomSetSimMessageStatusReadIPC done" ); |
1916 ret = KErrNone; |
1864 ret = KErrNone; |
1917 break; |
1865 break; |
1918 } |
1866 } |
1919 case EMobileSmsMessagingSetMoSmsBearer: |
1867 case EMobileSmsMessagingSetMoSmsBearer: |
1920 { |
1868 { |
1924 break; |
1872 break; |
1925 } |
1873 } |
1926 default: |
1874 default: |
1927 { |
1875 { |
1928 TFLOGSTRING2("TSY: CMmSmsMessHandler::ExtFuncL - Unknown IPC: %d", aIpc); |
1876 TFLOGSTRING2("TSY: CMmSmsMessHandler::ExtFuncL - Unknown IPC: %d", aIpc); |
1929 OstTrace1( TRACE_NORMAL, DUP6_CMMSMSMESSHANDLER_EXTFUNCL, "CMmSmsMessHandler::ExtFuncL;Unknown aIpc=%d", aIpc ); |
1877 OstTrace1( TRACE_NORMAL, DUP6_CMMSMSMESSHANDLER_EXTFUNCL_TD, "CMmSmsMessHandler::ExtFuncL;Unknown aIpc=%d", aIpc ); |
1930 ret = KErrArgument; |
1878 ret = KErrArgument; |
1931 break; |
1879 break; |
1932 } |
1880 } |
1933 } |
1881 } |
1934 return ret; |
1882 return ret; |
1945 TUint8 aReceivedTpPid, //received TP-PID |
1893 TUint8 aReceivedTpPid, //received TP-PID |
1946 const TIsiReceiveC& aReceivedSmsIsiMsg, //received isi msg |
1894 const TIsiReceiveC& aReceivedSmsIsiMsg, //received isi msg |
1947 RMobileSmsStore::TMobileGsmSmsEntryV1* aSMSOnSIM ) //SMS stored on SIM |
1895 RMobileSmsStore::TMobileGsmSmsEntryV1* aSMSOnSIM ) //SMS stored on SIM |
1948 { |
1896 { |
1949 TFLOGSTRING2("TSY: CMmSmsMessHandler::CheckTpPidAndSenderAndServiceCenter, aReceivedTpPid = %d", aReceivedTpPid); |
1897 TFLOGSTRING2("TSY: CMmSmsMessHandler::CheckTpPidAndSenderAndServiceCenter, aReceivedTpPid = %d", aReceivedTpPid); |
1950 OstTraceExt1( TRACE_NORMAL, CMMSMSMESSHANDLER_CHECKTPPIDANDSENDERANDSERVICECENTER, "CMmSmsMessHandler::CheckTpPidAndSenderAndServiceCenter;aReceivedTpPid=%hhu", aReceivedTpPid ); |
1898 OstTraceExt1( TRACE_NORMAL, CMMSMSMESSHANDLER_CHECKTPPIDANDSENDERANDSERVICECENTER_TD, "CMmSmsMessHandler::CheckTpPidAndSenderAndServiceCenter;aReceivedTpPid=%hhu", aReceivedTpPid ); |
1951 |
1899 |
1952 TBool matchFound( EFalse ); |
1900 TBool matchFound( EFalse ); |
1953 |
1901 |
1954 // Get protocol id from stored SMS |
1902 // Get protocol id from stored SMS |
1955 |
1903 |
2012 } |
1960 } |
2013 } |
1961 } |
2014 else // could not extract data from received message |
1962 else // could not extract data from received message |
2015 { |
1963 { |
2016 TFLOGSTRING("TSY: CMmSmsMessHandler::CheckTpPidAndSenderAndServiceCenter: Could not extract data from received message"); |
1964 TFLOGSTRING("TSY: CMmSmsMessHandler::CheckTpPidAndSenderAndServiceCenter: Could not extract data from received message"); |
2017 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_CHECKTPPIDANDSENDERANDSERVICECENTER, "CMmSmsMessHandler::CheckTpPidAndSenderAndServiceCenter: Could not extract data from received message" ); |
1965 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_CHECKTPPIDANDSENDERANDSERVICECENTER_TD, "CMmSmsMessHandler::CheckTpPidAndSenderAndServiceCenter: Could not extract data from received message" ); |
2018 return EFalse; |
1966 return EFalse; |
2019 } |
1967 } |
2020 |
1968 |
2021 // 2. Get sender address from received message |
1969 // 2. Get sender address from received message |
2022 TUint smsUserDataOffset( 0 ); |
1970 TUint smsUserDataOffset( 0 ); |
2050 } |
1998 } |
2051 } |
1999 } |
2052 else // Could not extract data from received message |
2000 else // Could not extract data from received message |
2053 { |
2001 { |
2054 TFLOGSTRING("TSY: CMmSmsMessHandler::CheckTpPidAndSenderAndServiceCenter: Could not extract data from received message"); |
2002 TFLOGSTRING("TSY: CMmSmsMessHandler::CheckTpPidAndSenderAndServiceCenter: Could not extract data from received message"); |
2055 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_CHECKTPPIDANDSENDERANDSERVICECENTER, "CMmSmsMessHandler::CheckTpPidAndSenderAndServiceCenter - Could not extract data from received message" ); |
2003 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_CHECKTPPIDANDSENDERANDSERVICECENTER_TD, "CMmSmsMessHandler::CheckTpPidAndSenderAndServiceCenter - Could not extract data from received message" ); |
2056 return EFalse; |
2004 return EFalse; |
2057 } |
2005 } |
2058 |
2006 |
2059 // 3. Get sender number from stored message |
2007 // 3. Get sender number from stored message |
2060 |
2008 |
2089 // ----------------------------------------------------------------------------- |
2037 // ----------------------------------------------------------------------------- |
2090 // |
2038 // |
2091 TInt CMmSmsMessHandler::GetSmsStoreInfo( TInt aIpc ) |
2039 TInt CMmSmsMessHandler::GetSmsStoreInfo( TInt aIpc ) |
2092 { |
2040 { |
2093 TFLOGSTRING2("TSY: CMmSmsMessHandler::GetSmsStoreInfo - IPC: %d", aIpc); |
2041 TFLOGSTRING2("TSY: CMmSmsMessHandler::GetSmsStoreInfo - IPC: %d", aIpc); |
2094 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_GETSMSSTOREINFO, "CMmSmsMessHandler::GetSmsStoreInfo;aIpc=%d", aIpc ); |
2042 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_GETSMSSTOREINFO_TD, "CMmSmsMessHandler::GetSmsStoreInfo;aIpc=%d", aIpc ); |
2095 TInt ret( KErrNone ); |
2043 TInt ret( KErrNone ); |
2096 // SIM SMS cache: |
2044 // SIM SMS cache: |
2097 // -- EMobileSmsMessagingGetMessageStoreInfo/EMobilePhoneStoreGetInfo |
2045 // -- EMobileSmsMessagingGetMessageStoreInfo/EMobilePhoneStoreGetInfo |
2098 if ( KErrNone == iSmsCache.Status() ) |
2046 if ( KErrNone == iSmsCache.Status() ) |
2099 { |
2047 { |
2100 TFLOGSTRING("TSY: CMmSmsMessHandler::GetSmsStoreInfo -- completed immediatedly"); |
2048 TFLOGSTRING("TSY: CMmSmsMessHandler::GetSmsStoreInfo -- completed immediatedly"); |
2101 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_GETSMSSTOREINFO, "CMmSmsMessHandler::GetSmsStoreInfo, completed immediatedly" ); |
2049 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_GETSMSSTOREINFO_TD, "CMmSmsMessHandler::GetSmsStoreInfo, completed immediatedly" ); |
2102 TUint8 numOfLoc( TUint8( iSmsCache.TotalEntries() ) ); |
2050 TUint8 numOfLoc( TUint8( iSmsCache.TotalEntries() ) ); |
2103 TInt usedEntries( iSmsCache.UsedEntries() ); |
2051 TInt usedEntries( iSmsCache.UsedEntries() ); |
2104 CMmDataPackage data; |
2052 CMmDataPackage data; |
2105 data.PackData( &numOfLoc, &usedEntries ); |
2053 data.PackData( &numOfLoc, &usedEntries ); |
2106 iMessageRouter->Complete( aIpc, &data, KErrNone ); |
2054 iMessageRouter->Complete( aIpc, &data, KErrNone ); |
2107 } |
2055 } |
2108 // try to recover from out of memory condition |
2056 // try to recover from out of memory condition |
2109 else if ( KErrNoMemory == iSmsCache.Status() ) |
2057 else if ( KErrNoMemory == iSmsCache.Status() ) |
2110 { |
2058 { |
2111 TFLOGSTRING("TSY: CMmSmsMessHandler::GetSmsStoreInfo -- recovering from OOM"); |
2059 TFLOGSTRING("TSY: CMmSmsMessHandler::GetSmsStoreInfo -- recovering from OOM"); |
2112 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_GETSMSSTOREINFO, "CMmSmsMessHandler::GetSmsStoreInfo, recovering from OOM" ); |
2060 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_GETSMSSTOREINFO_TD, "CMmSmsMessHandler::GetSmsStoreInfo, recovering from OOM" ); |
2113 InitializeSmsCache(); |
2061 InitializeSmsCache(); |
2114 } |
2062 } |
2115 // cache is not ready, start waiting |
2063 // cache is not ready, start waiting |
2116 else if ( KErrNotReady == iSmsCache.Status() ) |
2064 else if ( KErrNotReady == iSmsCache.Status() ) |
2117 { |
2065 { |
2118 TFLOGSTRING("TSY: CMmSmsMessHandler::GetSmsStoreInfo -- waiting"); |
2066 TFLOGSTRING("TSY: CMmSmsMessHandler::GetSmsStoreInfo -- waiting"); |
2119 OstTrace0( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_GETSMSSTOREINFO, "CMmSmsMessHandler::GetSmsStoreInfo, waiting" ); |
2067 OstTrace0( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_GETSMSSTOREINFO_TD, "CMmSmsMessHandler::GetSmsStoreInfo, waiting" ); |
2120 } |
2068 } |
2121 // some other, error return error value |
2069 // some other, error return error value |
2122 else |
2070 else |
2123 { |
2071 { |
2124 TFLOGSTRING("TSY: CMmSmsMessHandler::GetSmsStoreInfo -- failed"); |
2072 TFLOGSTRING("TSY: CMmSmsMessHandler::GetSmsStoreInfo -- failed"); |
2125 OstTrace0( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_GETSMSSTOREINFO, "CMmSmsMessHandler::GetSmsStoreInfo, failed" ); |
2073 OstTrace0( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_GETSMSSTOREINFO_TD, "CMmSmsMessHandler::GetSmsStoreInfo, failed" ); |
2126 ret = iSmsCache.Status(); |
2074 ret = iSmsCache.Status(); |
2127 } |
2075 } |
2128 return ret; |
2076 return ret; |
2129 } |
2077 } |
2130 |
2078 |
2134 // ----------------------------------------------------------------------------- |
2082 // ----------------------------------------------------------------------------- |
2135 // |
2083 // |
2136 TInt CMmSmsMessHandler::DeleteSms( const CMmDataPackage* aDataPackage ) |
2084 TInt CMmSmsMessHandler::DeleteSms( const CMmDataPackage* aDataPackage ) |
2137 { |
2085 { |
2138 TFLOGSTRING("TSY: CMmSmsMessHandler::DeleteSms"); |
2086 TFLOGSTRING("TSY: CMmSmsMessHandler::DeleteSms"); |
2139 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_DELETESMS, "CMmSmsMessHandler::DeleteSms" ); |
2087 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_DELETESMS_TD, "CMmSmsMessHandler::DeleteSms" ); |
2140 // SIM SMS cache: -- EMobilePhoneStoreDelete |
2088 // SIM SMS cache: -- EMobilePhoneStoreDelete |
2141 TInt ret( KErrNone ); |
2089 TInt ret( KErrNone ); |
2142 |
2090 |
2143 // Symbian sms stack will try to delete received SMS2 from SIM if it can't |
2091 // Symbian sms stack will try to delete received SMS2 from SIM if it can't |
2144 // save it to filesystem, so deletion should be possible in out of memory |
2092 // save it to filesystem, so deletion should be possible in out of memory |
2187 } |
2135 } |
2188 } |
2136 } |
2189 else |
2137 else |
2190 { |
2138 { |
2191 TFLOGSTRING("TSY: CMmSmsMessHandler::DeleteSms, cache not ready/failed"); |
2139 TFLOGSTRING("TSY: CMmSmsMessHandler::DeleteSms, cache not ready/failed"); |
2192 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_DELETESMS, "CMmSmsMessHandler::DeleteSms, cache not ready/failed" ); |
2140 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_DELETESMS_TD, "CMmSmsMessHandler::DeleteSms, cache not ready/failed" ); |
2193 ret = iSmsCache.Status(); |
2141 ret = iSmsCache.Status(); |
2194 } |
2142 } |
2195 return ret; |
2143 return ret; |
2196 } |
2144 } |
2197 |
2145 |
2201 // ----------------------------------------------------------------------------- |
2149 // ----------------------------------------------------------------------------- |
2202 // |
2150 // |
2203 TInt CMmSmsMessHandler::DeleteAllSms() |
2151 TInt CMmSmsMessHandler::DeleteAllSms() |
2204 { |
2152 { |
2205 TFLOGSTRING("TSY: CMmSmsMessHandler::DeleteAllSms"); |
2153 TFLOGSTRING("TSY: CMmSmsMessHandler::DeleteAllSms"); |
2206 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_DELETEALLSMS, "CMmSmsMessHandler::DeleteAllSms" ); |
2154 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_DELETEALLSMS_TD, "CMmSmsMessHandler::DeleteAllSms" ); |
2207 TInt ret( KErrNone ); |
2155 TInt ret( KErrNone ); |
2208 // SIM SMS cache: -- EMobilePhoneStoreDeleteAll |
2156 // SIM SMS cache: -- EMobilePhoneStoreDeleteAll |
2209 if ( KErrNone == iSmsCache.Status() ) |
2157 if ( KErrNone == iSmsCache.Status() ) |
2210 { |
2158 { |
2211 if ( 0 < iSmsCache.TotalEntries() ) |
2159 if ( 0 < iSmsCache.TotalEntries() ) |
2254 } |
2202 } |
2255 } |
2203 } |
2256 else |
2204 else |
2257 { |
2205 { |
2258 TFLOGSTRING("TSY: CMmSmsMessHandler::DeleteAllSms, cache not ready/failed"); |
2206 TFLOGSTRING("TSY: CMmSmsMessHandler::DeleteAllSms, cache not ready/failed"); |
2259 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_DELETEALLSMS, "CMmSmsMessHandler::DeleteAllSms, cache not ready/failed" ); |
2207 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_DELETEALLSMS_TD, "CMmSmsMessHandler::DeleteAllSms, cache not ready/failed" ); |
2260 ret = iSmsCache.Status(); |
2208 ret = iSmsCache.Status(); |
2261 } |
2209 } |
2262 return ret; |
2210 return ret; |
2263 } |
2211 } |
2264 |
2212 |
2268 // ----------------------------------------------------------------------------- |
2216 // ----------------------------------------------------------------------------- |
2269 // |
2217 // |
2270 TInt CMmSmsMessHandler::ReadSms( const CMmDataPackage* aDataPackage ) |
2218 TInt CMmSmsMessHandler::ReadSms( const CMmDataPackage* aDataPackage ) |
2271 { |
2219 { |
2272 TFLOGSTRING("TSY: CMmSmsMessHandler::ReadSms"); |
2220 TFLOGSTRING("TSY: CMmSmsMessHandler::ReadSms"); |
2273 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_READSMS, "CMmSmsMessHandler::ReadSms" ); |
2221 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_READSMS_TD, "CMmSmsMessHandler::ReadSms" ); |
2274 |
2222 |
2275 TInt ret( KErrNone ); |
2223 TInt ret( KErrNone ); |
2276 |
2224 |
2277 TInt location( 0 ); |
2225 TInt location( 0 ); |
2278 //unpack data |
2226 //unpack data |
2311 } |
2259 } |
2312 } |
2260 } |
2313 else |
2261 else |
2314 { |
2262 { |
2315 TFLOGSTRING("TSY: CMmSmsMessHandler::ReadSms, cache not ready/failed"); |
2263 TFLOGSTRING("TSY: CMmSmsMessHandler::ReadSms, cache not ready/failed"); |
2316 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_READSMS, "CMmSmsMessHandler::ReadSms, cache not ready/failed" ); |
2264 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_READSMS_TD, "CMmSmsMessHandler::ReadSms, cache not ready/failed" ); |
2317 ret = iSmsCache.Status(); |
2265 ret = iSmsCache.Status(); |
2318 } |
2266 } |
2319 return ret; |
2267 return ret; |
2320 } |
2268 } |
2321 |
2269 |
2325 // ----------------------------------------------------------------------------- |
2273 // ----------------------------------------------------------------------------- |
2326 // |
2274 // |
2327 TInt CMmSmsMessHandler::ReadAllSmsL() |
2275 TInt CMmSmsMessHandler::ReadAllSmsL() |
2328 { |
2276 { |
2329 TFLOGSTRING("TSY: CMmSmsMessHandler::ReadAllSms"); |
2277 TFLOGSTRING("TSY: CMmSmsMessHandler::ReadAllSms"); |
2330 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_READALLSMSL, "CMmSmsMessHandler::ReadAllSmsL" ); |
2278 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_READALLSMSL_TD, "CMmSmsMessHandler::ReadAllSmsL" ); |
2331 TInt ret( KErrNone ); |
2279 TInt ret( KErrNone ); |
2332 |
2280 |
2333 // SIM SMS cache: -- EMobilePhoneStoreReadAllPhase1 |
2281 // SIM SMS cache: -- EMobilePhoneStoreReadAllPhase1 |
2334 if ( KErrNone == iSmsCache.Status() ) |
2282 if ( KErrNone == iSmsCache.Status() ) |
2335 { |
2283 { |
2381 iReceivedClass2ToBeReSent = EFalse; |
2329 iReceivedClass2ToBeReSent = EFalse; |
2382 } |
2330 } |
2383 else |
2331 else |
2384 { |
2332 { |
2385 TFLOGSTRING("TSY: CMmSmsMessHandler::ReadAllSms --- cache not ready/failed"); |
2333 TFLOGSTRING("TSY: CMmSmsMessHandler::ReadAllSms --- cache not ready/failed"); |
2386 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_READALLSMSL, "CMmSmsMessHandler::ReadAllSmsL, cache not ready/failed" ); |
2334 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_READALLSMSL_TD, "CMmSmsMessHandler::ReadAllSmsL, cache not ready/failed" ); |
2387 iSmsListArray->ResetAndDestroy(); |
2335 iSmsListArray->ResetAndDestroy(); |
2388 CMmDataPackage package; |
2336 CMmDataPackage package; |
2389 package.PackData( &iSmsListArray, &iReceivedClass2ToBeReSent ); |
2337 package.PackData( &iSmsListArray, &iReceivedClass2ToBeReSent ); |
2390 iMessageRouter->Complete( |
2338 iMessageRouter->Complete( |
2391 EMobilePhoneStoreReadAllPhase1, |
2339 EMobilePhoneStoreReadAllPhase1, |
2406 TInt aIndex) |
2354 TInt aIndex) |
2407 { |
2355 { |
2408 TInt ret( KErrNone ); |
2356 TInt ret( KErrNone ); |
2409 |
2357 |
2410 TFLOGSTRING("TSY: CMmSmsMessHandler::WriteSms"); |
2358 TFLOGSTRING("TSY: CMmSmsMessHandler::WriteSms"); |
2411 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_WRITESMS, "CMmSmsMessHandler::WriteSms" ); |
2359 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_WRITESMS_TD, "CMmSmsMessHandler::WriteSms" ); |
2412 |
2360 |
2413 // SIM SMS cache: -- EMobilePhoneStoreWrite |
2361 // SIM SMS cache: -- EMobilePhoneStoreWrite |
2414 //check if sms writing is ongoing or not |
2362 //check if sms writing is ongoing or not |
2415 if ( 0 != iSmsSlotLocation ) |
2363 if ( 0 != iSmsSlotLocation ) |
2416 { |
2364 { |
2458 // ----------------------------------------------------------------------------- |
2406 // ----------------------------------------------------------------------------- |
2459 // |
2407 // |
2460 void CMmSmsMessHandler::InitializeSmsCache() |
2408 void CMmSmsMessHandler::InitializeSmsCache() |
2461 { |
2409 { |
2462 // SIM SMS cache: initialize cache |
2410 // SIM SMS cache: initialize cache |
2411 if( KErrNotReady != iSmsCache.Status() ) |
|
2412 { |
|
2463 TFLOGSTRING("TSY: CMmSmsMessHandler::InitializeSmsCache -- SMS CACHEING START ---"); |
2413 TFLOGSTRING("TSY: CMmSmsMessHandler::InitializeSmsCache -- SMS CACHEING START ---"); |
2464 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_INITIALIZESMSCACHE, "CMmSmsMessHandler::InitializeSmsCache" ); |
2414 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_INITIALIZESMSCACHE_TD, "CMmSmsMessHandler::InitializeSmsCache" ); |
2465 iSmsCache.Reset(); |
2415 iSmsCache.Reset(); |
2466 GetNumOfEFSMSRecords (); // Read EF SMS count. |
2416 GetNumOfEFSMSRecords (); // Read EF SMS count. |
2417 } |
|
2467 } |
2418 } |
2468 |
2419 |
2469 // ----------------------------------------------------------------------------- |
2420 // ----------------------------------------------------------------------------- |
2470 // CMmSmsMessHandler::HandleError |
2421 // CMmSmsMessHandler::HandleError |
2471 // Handles CMmSmsMessHandler's errors comes via PhoNetReceiver RunError method. |
2422 // Handles CMmSmsMessHandler's errors comes via PhoNetReceiver RunError method. |
2475 const TIsiReceiveC& aIsiMsg, // Isi message |
2426 const TIsiReceiveC& aIsiMsg, // Isi message |
2476 TInt aError ) // Error code |
2427 TInt aError ) // Error code |
2477 |
2428 |
2478 { |
2429 { |
2479 TFLOGSTRING2( "TSY: CMmSmsMessHandler::HandleError - Error: %d", aError ); |
2430 TFLOGSTRING2( "TSY: CMmSmsMessHandler::HandleError - Error: %d", aError ); |
2480 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_HANDLEERROR, "CMmSmsMessHandler::HandleError;aError=%d", aError ); |
2431 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_HANDLEERROR_TD, "CMmSmsMessHandler::HandleError;aError=%d", aError ); |
2481 |
2432 |
2482 TUint8 resource( aIsiMsg.Get8bit( ISI_HEADER_OFFSET_RESOURCEID ) ); |
2433 TUint8 resource( aIsiMsg.Get8bit( ISI_HEADER_OFFSET_RESOURCEID ) ); |
2483 TUint8 messageId( aIsiMsg.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) ); |
2434 TUint8 messageId( aIsiMsg.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) ); |
2484 TUint8 transId( aIsiMsg.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); |
2435 TUint8 transId( aIsiMsg.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); |
2485 |
2436 |
2486 TFLOGSTRING4( "TSY: CMmSmsMessHandler::HandleError - resource: %d, msgId: %d, traId: %d", resource, messageId, transId ); |
2437 TFLOGSTRING4( "TSY: CMmSmsMessHandler::HandleError - resource: %d, msgId: %d, traId: %d", resource, messageId, transId ); |
2487 OstTraceExt3(TRACE_NORMAL,DUP1_CMMSMSMESSHANDLER_HANDLEERROR,"CMmSmsMessHandler::HandleError;resource=%hhu;messageId=%hhu;transId=%hhu", resource, messageId, transId ); |
2438 OstTraceExt3(TRACE_NORMAL,DUP1_CMMSMSMESSHANDLER_HANDLEERROR_TD,"CMmSmsMessHandler::HandleError;resource=%hhu;messageId=%hhu;transId=%hhu", resource, messageId, transId ); |
2488 |
2439 |
2489 switch ( resource ) |
2440 switch ( resource ) |
2490 { |
2441 { |
2491 default: |
2442 default: |
2492 { |
2443 { |
2493 TFLOGSTRING2( "TSY: CMmSmsMessHandler::HandleError - PN_SMS, unknown resource: %d", resource ); |
2444 TFLOGSTRING2( "TSY: CMmSmsMessHandler::HandleError - PN_SMS, unknown resource: %d", resource ); |
2494 OstTraceExt1( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_HANDLEERROR, "CMmSmsMessHandler::HandleError;resource=%hhu", resource ); |
2445 OstTraceExt1( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_HANDLEERROR_TD, "CMmSmsMessHandler::HandleError;resource=%hhu", resource ); |
2495 // Nothing to do here. |
2446 // Nothing to do here. |
2496 break; |
2447 break; |
2497 } |
2448 } |
2498 } |
2449 } |
2499 } |
2450 } |
2505 // |
2456 // |
2506 TInt CMmSmsMessHandler::SmsSettingsUpdateReq( |
2457 TInt CMmSmsMessHandler::SmsSettingsUpdateReq( |
2507 RMobileSmsMessaging::TMobileSmsBearer& aBearer ) |
2458 RMobileSmsMessaging::TMobileSmsBearer& aBearer ) |
2508 { |
2459 { |
2509 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsSettingsUpdateReq. aBearer: %d", aBearer); |
2460 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsSettingsUpdateReq. aBearer: %d", aBearer); |
2510 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSSETTINGSUPDATEREQ, "CMmSmsMessHandler::SmsSettingsUpdateReq;aBearer=%d", aBearer ); |
2461 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSSETTINGSUPDATEREQ_TD, "CMmSmsMessHandler::SmsSettingsUpdateReq;aBearer=%d", aBearer ); |
2511 |
2462 |
2512 TUint8 csRoutePriority( SMS_ROUTE_NOT_AVAILABLE ); |
2463 TUint8 csRoutePriority( SMS_ROUTE_NOT_AVAILABLE ); |
2513 TUint8 psRoutePriority( SMS_ROUTE_NOT_AVAILABLE ); |
2464 TUint8 psRoutePriority( SMS_ROUTE_NOT_AVAILABLE ); |
2514 |
2465 |
2515 // The bearer information must be used in two ways: |
2466 // The bearer information must be used in two ways: |
2543 break; |
2494 break; |
2544 } |
2495 } |
2545 default: |
2496 default: |
2546 { |
2497 { |
2547 TFLOGSTRING2("TSY:CMmSmsMessHandler::SmsSettingsUpdateReq:Invalid bearer = %d",iMobileSmsBearer); |
2498 TFLOGSTRING2("TSY:CMmSmsMessHandler::SmsSettingsUpdateReq:Invalid bearer = %d",iMobileSmsBearer); |
2548 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSSETTINGSUPDATEREQ, "CMmSmsMessHandler::SmsSettingsUpdateReq;iMobileSmsBearer=%d", iMobileSmsBearer ); |
2499 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSSETTINGSUPDATEREQ_TD, "CMmSmsMessHandler::SmsSettingsUpdateReq;iMobileSmsBearer=%d", iMobileSmsBearer ); |
2549 break; |
2500 break; |
2550 } |
2501 } |
2551 } |
2502 } |
2552 |
2503 |
2553 TFLOGSTRING3("TSY:CMmSmsMessHandler::SmsSettingsUpdateReq:CS priority = %d, PS priority = %d",csRoutePriority,psRoutePriority); |
2504 TFLOGSTRING3("TSY:CMmSmsMessHandler::SmsSettingsUpdateReq:CS priority = %d, PS priority = %d",csRoutePriority,psRoutePriority); |
2554 OstTraceExt2( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_SMSSETTINGSUPDATEREQ, "CMmSmsMessHandler::SmsSettingsUpdateReq;csRoutePriority=%hhd;psRoutePriority=%hhd", csRoutePriority, psRoutePriority ); |
2505 OstTraceExt2( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_SMSSETTINGSUPDATEREQ_TD, "CMmSmsMessHandler::SmsSettingsUpdateReq;csRoutePriority=%hhd;psRoutePriority=%hhd", csRoutePriority, psRoutePriority ); |
2555 |
2506 |
2556 // SMS_SB_ROUTE_INFO sub block (8 bytes) |
2507 // SMS_SB_ROUTE_INFO sub block (8 bytes) |
2557 TBuf8<SIZE_SMS_SB_ROUTE_INFO> smsRouteInfoBuf( 0 ); |
2508 TBuf8<SIZE_SMS_SB_ROUTE_INFO> smsRouteInfoBuf( 0 ); |
2558 TIsiSubBlock smsRouteInfoSb( |
2509 TIsiSubBlock smsRouteInfoSb( |
2559 smsRouteInfoBuf, |
2510 smsRouteInfoBuf, |
2594 { |
2545 { |
2595 TUint8 cause( aIsiMsg.Get8bit( |
2546 TUint8 cause( aIsiMsg.Get8bit( |
2596 ISI_HEADER_SIZE + SMS_SETTINGS_UPDATE_RESP_OFFSET_SMSCAUSE ) ); |
2547 ISI_HEADER_SIZE + SMS_SETTINGS_UPDATE_RESP_OFFSET_SMSCAUSE ) ); |
2597 |
2548 |
2598 TFLOGSTRING2("TSY:CMmSmsMessHandler::SmsSettingsUpdateResp: response status=%d.",cause); |
2549 TFLOGSTRING2("TSY:CMmSmsMessHandler::SmsSettingsUpdateResp: response status=%d.",cause); |
2599 OstTraceExt1( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSGSMSETTINGSUPDATERESP, "CMmSmsMessHandler::SmsSettingsUpdateResp;cause=%hhu", cause ); |
2550 OstTraceExt1( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSGSMSETTINGSUPDATERESP_TD, "CMmSmsMessHandler::SmsSettingsUpdateResp;cause=%hhu", cause ); |
2600 |
2551 |
2601 TInt err( CMmStaticUtility::CSCauseToEpocError( |
2552 TInt err( CMmStaticUtility::CSCauseToEpocError( |
2602 PN_SMS, |
2553 PN_SMS, |
2603 SMS_CAUSE_TYPE_COMMON, |
2554 SMS_CAUSE_TYPE_COMMON, |
2604 cause ) ); |
2555 cause ) ); |
2614 TInt CMmSmsMessHandler::SmsClass2ReceivedMsgInd( |
2565 TInt CMmSmsMessHandler::SmsClass2ReceivedMsgInd( |
2615 const TIsiReceiveC& aIsiMsg, |
2566 const TIsiReceiveC& aIsiMsg, |
2616 TUint8 aIsReplace ) |
2567 TUint8 aIsReplace ) |
2617 { |
2568 { |
2618 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsClass2ReceivedMsgInd"); |
2569 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsClass2ReceivedMsgInd"); |
2619 OstTrace0( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_SMSCLASS2PPROUTINGNTF, "CMmSmsMessHandler::SmsClass2ReceivedMsgInd" ); |
2570 OstTrace0( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_SMSCLASS2PPROUTINGNTF_TD, "CMmSmsMessHandler::SmsClass2ReceivedMsgInd" ); |
2620 TInt ret( KErrNone ); |
2571 TInt ret( KErrNone ); |
2621 |
2572 |
2622 TUint smsTpduOffset( 0 ); |
2573 TUint smsTpduOffset( 0 ); |
2623 if ( KErrNone == aIsiMsg.FindSubBlockOffsetById( |
2574 if ( KErrNone == aIsiMsg.FindSubBlockOffsetById( |
2624 ISI_HEADER_SIZE + SIZE_SMS_RECEIVED_MSG_IND, |
2575 ISI_HEADER_SIZE + SIZE_SMS_RECEIVED_MSG_IND, |
2634 |
2585 |
2635 // If this is a replace message, try find a SMS to replace |
2586 // If this is a replace message, try find a SMS to replace |
2636 if ( aIsReplace ) |
2587 if ( aIsReplace ) |
2637 { |
2588 { |
2638 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsClass2ReceivedMsgInd --- replace"); |
2589 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsClass2ReceivedMsgInd --- replace"); |
2639 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSCLASS2PPROUTINGNTF, "CMmSmsMessHandler::SmsClass2ReceivedMsgInd, replace" ); |
2590 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSCLASS2PPROUTINGNTF_TD, "CMmSmsMessHandler::SmsClass2ReceivedMsgInd, replace" ); |
2640 for ( TInt i( 0 ); i <= iSmsCache.TotalEntries(); i++ ) |
2591 for ( TInt i( 0 ); i <= iSmsCache.TotalEntries(); i++ ) |
2641 { |
2592 { |
2642 RMobileSmsStore::TMobileGsmSmsEntryV1* simIsiMsg = |
2593 RMobileSmsStore::TMobileGsmSmsEntryV1* simIsiMsg = |
2643 iSmsCache.GetEntry( i ); |
2594 iSmsCache.GetEntry( i ); |
2644 if ( simIsiMsg ) |
2595 if ( simIsiMsg ) |
2664 |
2615 |
2665 // Location found, start SMS writing |
2616 // Location found, start SMS writing |
2666 if ( 0 != location ) |
2617 if ( 0 != location ) |
2667 { |
2618 { |
2668 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsClass2ReceivedMsgInd -- incoming SMS2, writing to location %d", location); |
2619 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsClass2ReceivedMsgInd -- incoming SMS2, writing to location %d", location); |
2669 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSCLASS2PPROUTINGNTF, "CMmSmsMessHandler::SmsClass2ReceivedMsgInd;incoming SMS2, writing to location=%d", location ); |
2620 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSCLASS2PPROUTINGNTF_TD, "CMmSmsMessHandler::SmsClass2ReceivedMsgInd;incoming SMS2, writing to location=%d", location ); |
2670 // iSmsSlotLocation = TUint8(location); |
2621 // iSmsSlotLocation = TUint8(location); |
2671 // Write received class2 SMS to SIM Card |
2622 // Write received class2 SMS to SIM Card |
2672 // Get data from incoming message. |
2623 // Get data from incoming message. |
2673 RMobileSmsStore::TMobileGsmSmsEntryV1 incomingSMS; |
2624 RMobileSmsStore::TMobileGsmSmsEntryV1 incomingSMS; |
2674 |
2625 |
2736 |
2687 |
2737 // Cache not ready |
2688 // Cache not ready |
2738 else |
2689 else |
2739 { |
2690 { |
2740 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsClass2ReceivedMsgInd -- incoming SMS2, cache not ready/failed"); |
2691 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsClass2ReceivedMsgInd -- incoming SMS2, cache not ready/failed"); |
2741 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_SMSCLASS2PPROUTINGNTF, "CMmSmsMessHandler::SmsClass2ReceivedMsgInd, incoming SMS2, cache not ready/failed" ); |
2692 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_SMSCLASS2PPROUTINGNTF_TD, "CMmSmsMessHandler::SmsClass2ReceivedMsgInd, incoming SMS2, cache not ready/failed" ); |
2742 ret = KErrGsmSMSMemoryCapacityExceeded; |
2693 ret = KErrGsmSMSMemoryCapacityExceeded; |
2743 // Setting this true will cause it to be resent? |
2694 // Setting this true will cause it to be resent? |
2744 iReceivedClass2ToBeReSent = ETrue; |
2695 iReceivedClass2ToBeReSent = ETrue; |
2745 |
2696 |
2746 // If this is out of memory error, try to refill cache.. |
2697 // If this is out of memory error, try to refill cache.. |
2750 } |
2701 } |
2751 } |
2702 } |
2752 } |
2703 } |
2753 |
2704 |
2754 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsClass2ReceivedMsgInd ret=%d", ret); |
2705 TFLOGSTRING2("TSY: CMmSmsMessHandler::SmsClass2ReceivedMsgInd ret=%d", ret); |
2755 OstTrace1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_SMSCLASS2PPROUTINGNTF, "CMmSmsMessHandler::SmsClass2ReceivedMsgInd;ret=%d", ret ); |
2706 OstTrace1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_SMSCLASS2PPROUTINGNTF_TD, "CMmSmsMessHandler::SmsClass2ReceivedMsgInd;ret=%d", ret ); |
2756 return ret; |
2707 return ret; |
2757 } |
2708 } |
2758 |
2709 |
2759 // ----------------------------------------------------------------------------- |
2710 // ----------------------------------------------------------------------------- |
2760 // CMmSmsMessHandler::SmsClass1ReceivedMsgInd |
2711 // CMmSmsMessHandler::SmsClass1ReceivedMsgInd |
2763 // |
2714 // |
2764 TInt CMmSmsMessHandler::SmsClass1ReceivedMsgInd( |
2715 TInt CMmSmsMessHandler::SmsClass1ReceivedMsgInd( |
2765 const TIsiReceiveC& aIsiMsg) |
2716 const TIsiReceiveC& aIsiMsg) |
2766 { |
2717 { |
2767 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsClass1ReceivedMsgInd"); |
2718 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsClass1ReceivedMsgInd"); |
2768 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSCLASS1PPROUTINGNTF, "CMmSmsMessHandler::SmsClass1ReceivedMsgInd" ); |
2719 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSCLASS1PPROUTINGNTF_TD, "CMmSmsMessHandler::SmsClass1ReceivedMsgInd" ); |
2769 TInt ret( KErrNone ); |
2720 TInt ret( KErrNone ); |
2770 TBool validPduFormat( EFalse ); |
2721 TBool validPduFormat( EFalse ); |
2771 TSmsMsg smsMsgValue; |
2722 TSmsMsg smsMsgValue; |
2772 TSmsMsg* smsMsg = &smsMsgValue; |
2723 TSmsMsg* smsMsg = &smsMsgValue; |
2773 |
2724 |
2793 smsMsg->iMobileScNPI ); |
2744 smsMsg->iMobileScNPI ); |
2794 } |
2745 } |
2795 else |
2746 else |
2796 { |
2747 { |
2797 TFLOGSTRING("TSY:CMmSmsMessHandler::SmsClass1ReceivedMsgInd,SMS_SB_ADDRESS expected"); |
2748 TFLOGSTRING("TSY:CMmSmsMessHandler::SmsClass1ReceivedMsgInd,SMS_SB_ADDRESS expected"); |
2798 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSCLASS1PPROUTINGNTF, "CMmSmsMessHandler::SmsClass1ReceivedMsgInd,SMS_SB_ADDRESS expected" ); |
2749 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_SMSCLASS1PPROUTINGNTF_TD, "CMmSmsMessHandler::SmsClass1ReceivedMsgInd,SMS_SB_ADDRESS expected" ); |
2799 TF_ASSERT_NOT_REACHED(); |
2750 TF_ASSERT_NOT_REACHED(); |
2800 } |
2751 } |
2801 |
2752 |
2802 // Handle SMS_SB_TPDU subblock |
2753 // Handle SMS_SB_TPDU subblock |
2803 TUint smsTpduOffset( 0 ); |
2754 TUint smsTpduOffset( 0 ); |
2833 } |
2784 } |
2834 } |
2785 } |
2835 else |
2786 else |
2836 { |
2787 { |
2837 TFLOGSTRING("TSY:CMmSmsMessHandler::SmsClass1ReceivedMsgInd, SMS_SB_USER_DATA expected"); |
2788 TFLOGSTRING("TSY:CMmSmsMessHandler::SmsClass1ReceivedMsgInd, SMS_SB_USER_DATA expected"); |
2838 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_SMSCLASS1PPROUTINGNTF, "CMmSmsMessHandler::SmsClass1ReceivedMsgInd, SMS_SB_USER_DATA expected" ); |
2789 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_SMSCLASS1PPROUTINGNTF_TD, "CMmSmsMessHandler::SmsClass1ReceivedMsgInd, SMS_SB_USER_DATA expected" ); |
2839 TF_ASSERT_NOT_REACHED(); |
2790 TF_ASSERT_NOT_REACHED(); |
2840 } |
2791 } |
2841 |
2792 |
2842 if ( validPduFormat ) |
2793 if ( validPduFormat ) |
2843 { |
2794 { |
2866 // Caller is forced to complete |
2817 // Caller is forced to complete |
2867 ret = KErrGeneral; |
2818 ret = KErrGeneral; |
2868 } |
2819 } |
2869 } |
2820 } |
2870 TFLOGSTRING2("TSY:CMmSmsMessHandler::SmsClass1ReceivedMsgInd;ret=%d", ret); |
2821 TFLOGSTRING2("TSY:CMmSmsMessHandler::SmsClass1ReceivedMsgInd;ret=%d", ret); |
2871 OstTrace1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_SMSCLASS1PPROUTINGNTF, "CMmSmsMessHandler::SmsClass1ReceivedMsgInd;ret=%d", ret ); |
2822 OstTrace1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_SMSCLASS1PPROUTINGNTF_TD, "CMmSmsMessHandler::SmsClass1ReceivedMsgInd;ret=%d", ret ); |
2872 return ret; |
2823 return ret; |
2873 } |
2824 } |
2874 |
2825 |
2875 |
2826 |
2876 // ----------------------------------------------------------------------------- |
2827 // ----------------------------------------------------------------------------- |
2882 const TDesC8& aMsgData, |
2833 const TDesC8& aMsgData, |
2883 TUint8 subBlockId, |
2834 TUint8 subBlockId, |
2884 TUint8& aDestAddressLength ) const |
2835 TUint8& aDestAddressLength ) const |
2885 { |
2836 { |
2886 TFLOGSTRING("TSY:CMmSmsMessHandler::GetDestAddressLength"); |
2837 TFLOGSTRING("TSY:CMmSmsMessHandler::GetDestAddressLength"); |
2887 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_GETDESTADDRESSLENGTH, "CMmSmsMessHandler::GetDestAddressLength" ); |
2838 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_GETDESTADDRESSLENGTH_TD, "CMmSmsMessHandler::GetDestAddressLength" ); |
2888 |
2839 |
2889 TInt ret( KErrNone ); |
2840 TInt ret( KErrNone ); |
2890 |
2841 |
2891 if ( SMS_SB_SUBMIT == subBlockId ) |
2842 if ( SMS_SB_SUBMIT == subBlockId ) |
2892 { |
2843 { |
2908 } |
2859 } |
2909 else |
2860 else |
2910 { |
2861 { |
2911 ret = KErrArgument; |
2862 ret = KErrArgument; |
2912 TFLOGSTRING2("TSY:CMmSmsMessHandler::GetDestinationAddressLength: Error! Destination address too long: %d.",aDestAddressLength); |
2863 TFLOGSTRING2("TSY:CMmSmsMessHandler::GetDestinationAddressLength: Error! Destination address too long: %d.",aDestAddressLength); |
2913 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_GETDESTADDRESSLENGTH, "CMmSmsMessHandler::GetDestAddressLength;aDestAddressLength=%hhu", aDestAddressLength ); |
2864 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_GETDESTADDRESSLENGTH_TD, "CMmSmsMessHandler::GetDestAddressLength;aDestAddressLength=%hhu", aDestAddressLength ); |
2914 } |
2865 } |
2915 TFLOGSTRING2("TSY:CMmSmsMessHandler::GetDestinationAddressLength:Destination address length %d.",aDestAddressLength); |
2866 TFLOGSTRING2("TSY:CMmSmsMessHandler::GetDestinationAddressLength:Destination address length %d.",aDestAddressLength); |
2916 OstTraceExt1( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_GETDESTADDRESSLENGTH, "CMmSmsMessHandler::GetDestAddressLength;aDestAddressLength=%hhu", aDestAddressLength ); |
2867 OstTraceExt1( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_GETDESTADDRESSLENGTH_TD, "CMmSmsMessHandler::GetDestAddressLength;aDestAddressLength=%hhu", aDestAddressLength ); |
2917 return ret; |
2868 return ret; |
2918 } |
2869 } |
2919 |
2870 |
2920 |
2871 |
2921 // ----------------------------------------------------------------------------- |
2872 // ----------------------------------------------------------------------------- |
2873 // CMmSmsMessHandler::BuildSmsSbSubmit |
|
2922 // Creates SMS_SB_SUBMIT subblock and appends it to ISI message |
2874 // Creates SMS_SB_SUBMIT subblock and appends it to ISI message |
2923 // ----------------------------------------------------------------------------- |
2875 // ----------------------------------------------------------------------------- |
2924 // |
2876 // |
2925 void CMmSmsMessHandler::BuildSmsSbSubmit( |
2877 TUint16 CMmSmsMessHandler::BuildSmsSbSubmit( |
2926 const TDesC8& aMsgData, |
2878 const TDesC8& aMsgData, |
2927 TIsiSend& aIsiMsg, |
2879 TIsiSend& aIsiMsg, |
2928 TUint8 aMsgOffset, |
2880 TUint8 aDestAddressLength, |
2929 TUint8 aDestAddressLength ) const |
2881 TUint aMsgOffset ) const |
2930 { |
2882 { |
2931 TFLOGSTRING("TSY:CMmSmsMessHandler::BuildSmsSbSubmit"); |
2883 TFLOGSTRING("TSY:CMmSmsMessHandler::BuildSmsSbSubmit"); |
2932 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSMSSBSUBMIT, "CMmSmsMessHandler::BuildSmsSbSubmit" ); |
2884 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSMSSBSUBMIT_TD, "CMmSmsMessHandler::BuildSmsSbSubmit" ); |
2933 |
2885 |
2934 // Extract needed parameters from TPDU for for SMS_SB_SUBMIT |
2886 // Extract needed parameters from TPDU for for SMS_SB_SUBMIT |
2935 TUint8 messageParameters( aMsgData[ KTpduIndexMessageParameters ] ); |
2887 TUint8 messageParameters( aMsgData[ KTpduIndexMessageParameters ] ); |
2936 TUint8 messageReference( aMsgData[ KTpduIndexMessageReference ] ); |
2888 TUint8 messageReference( aMsgData[ KTpduIndexMessageReference ] ); |
2937 TUint8 protocolId( aMsgData[ KTpduSubmitIndexProtocolIdentifier + |
2889 TUint8 protocolId( aMsgData[ KTpduSubmitIndexProtocolIdentifier + |
2951 |
2903 |
2952 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbSubmit. Message parameters: %d", messageParameters ); |
2904 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbSubmit. Message parameters: %d", messageParameters ); |
2953 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbSubmit. Message reference: %d", messageReference ); |
2905 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbSubmit. Message reference: %d", messageReference ); |
2954 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbSubmit. Protocol ID: %d", protocolId ); |
2906 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbSubmit. Protocol ID: %d", protocolId ); |
2955 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbSubmit. Data coding scheme: %d", dataCodingScheme ); |
2907 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbSubmit. Data coding scheme: %d", dataCodingScheme ); |
2956 OstTraceExt4( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_BUILDSMSSBSUBMIT, "CMmSmsMessHandler::BuildSmsSbSubmit;messageParameters=%hhu;messageReference=%hhu;protocolId=%hhu;dataCodingScheme=%hhu", messageParameters, messageReference, protocolId, dataCodingScheme ); |
2908 OstTraceExt4( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_BUILDSMSSBSUBMIT_TD, "CMmSmsMessHandler::BuildSmsSbSubmit;messageParameters=%hhu;messageReference=%hhu;protocolId=%hhu;dataCodingScheme=%hhu", messageParameters, messageReference, protocolId, dataCodingScheme ); |
2957 } |
2909 |
2958 |
2910 return submitBuf.Length(); |
2959 |
2911 } |
2960 // ----------------------------------------------------------------------------- |
2912 |
2913 |
|
2914 // ----------------------------------------------------------------------------- |
|
2915 // CMmSmsMessHandler::BuildSmsSbCommand |
|
2961 // Creates SMS_SB_COMMAND subblock and appends it to ISI message |
2916 // Creates SMS_SB_COMMAND subblock and appends it to ISI message |
2962 // ----------------------------------------------------------------------------- |
2917 // ----------------------------------------------------------------------------- |
2963 void CMmSmsMessHandler::BuildSmsSbCommand( |
2918 TUint16 CMmSmsMessHandler::BuildSmsSbCommand( |
2964 const TDesC8& aMsgData, |
2919 const TDesC8& aMsgData, |
2965 TIsiSend& aIsiMsg, |
2920 TIsiSend& aIsiMsg, |
2966 TUint8 aMsgOffset ) const |
2921 TUint aMsgOffset ) const |
2967 { |
2922 { |
2968 TFLOGSTRING("TSY:CMmSmsMessHandler::BuildSmsSbCommand"); |
2923 TFLOGSTRING("TSY:CMmSmsMessHandler::BuildSmsSbCommand"); |
2969 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSMSSBCOMMAND, "CMmSmsMessHandler::BuildSmsSbCommand" ); |
2924 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSMSSBCOMMAND_TD, "CMmSmsMessHandler::BuildSmsSbCommand" ); |
2970 |
2925 |
2971 // Extract needed parameters from TPDU for SMS_SB_COMMAND |
2926 // Extract needed parameters from TPDU for SMS_SB_COMMAND |
2972 TUint8 messageParameters( aMsgData[ KTpduIndexMessageParameters ] ); |
2927 TUint8 messageParameters( aMsgData[ KTpduIndexMessageParameters ] ); |
2973 TUint8 messageReference( aMsgData[ KTpduIndexMessageReference ] ); |
2928 TUint8 messageReference( aMsgData[ KTpduIndexMessageReference ] ); |
2974 TUint8 protocolId( aMsgData[ KTpduCommandIndexProtocolIdentifier ] ); |
2929 TUint8 protocolId( aMsgData[ KTpduCommandIndexProtocolIdentifier ] ); |
2993 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbCommand. Message parameters: %d", messageParameters ); |
2948 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbCommand. Message parameters: %d", messageParameters ); |
2994 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbCommand. Message reference: %d", messageReference ); |
2949 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbCommand. Message reference: %d", messageReference ); |
2995 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbCommand. Protocol ID: %d", protocolId ); |
2950 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbCommand. Protocol ID: %d", protocolId ); |
2996 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbCommand. Command type: %d", commandType ); |
2951 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbCommand. Command type: %d", commandType ); |
2997 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbCommand. Message Number: %d", messageNumber ); |
2952 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbCommand. Message Number: %d", messageNumber ); |
2998 OstTraceExt5( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_BUILDSMSSBCOMMAND, "CMmSmsMessHandler::BuildSmsSbCommand;messageParameters=%hhu;messageReference=%hhu;protocolId=%hhu;commandType=%hhu;messageNumber=%hhu", messageParameters, messageReference, protocolId, commandType, messageNumber ); |
2953 OstTraceExt5( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_BUILDSMSSBCOMMAND_TD, "CMmSmsMessHandler::BuildSmsSbCommand;messageParameters=%hhu;messageReference=%hhu;protocolId=%hhu;commandType=%hhu;messageNumber=%hhu", messageParameters, messageReference, protocolId, commandType, messageNumber ); |
2999 } |
2954 |
3000 |
2955 return commandBuf.Length(); |
3001 |
2956 } |
3002 // ----------------------------------------------------------------------------- |
2957 |
2958 |
|
2959 // ----------------------------------------------------------------------------- |
|
2960 // CMmSmsMessHandler::BuildSmsSbAddress |
|
3003 // Creates SMS_SB_ADDRESS subblock and appends it to ISI message |
2961 // Creates SMS_SB_ADDRESS subblock and appends it to ISI message |
3004 // ----------------------------------------------------------------------------- |
2962 // ----------------------------------------------------------------------------- |
3005 TUint8 CMmSmsMessHandler::BuildSmsSbAddress( |
2963 TUint16 CMmSmsMessHandler::BuildSmsSbAddress( |
3006 const TDesC8& aAddress, |
2964 const TDesC8& aAddress, |
3007 TIsiSend& aIsiMsg, |
2965 TIsiSend& aIsiMsg, |
3008 TUint8 aAddressType, |
2966 TUint8 aAddressType, |
3009 TUint8 aMsgOffset ) const |
2967 TUint aMsgOffset ) const |
3010 { |
2968 { |
3011 TFLOGSTRING("TSY:CMmSmsMessHandler::BuildSmsSbAddress"); |
2969 TFLOGSTRING("TSY:CMmSmsMessHandler::BuildSmsSbAddress"); |
3012 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSMSSBADDRESS, "CMmSmsMessHandler::BuildSmsSbAddress" ); |
2970 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSMSSBADDRESS_TD, "CMmSmsMessHandler::BuildSmsSbAddress" ); |
3013 |
2971 |
3014 TUint8 addressLength( aAddress.Length() ); |
2972 TUint8 addressLength( aAddress.Length() ); |
3015 TUint8 subblockLength( 0 ); |
|
3016 // Create and fill SMS_SB_ADDRESS subblock |
2973 // Create and fill SMS_SB_ADDRESS subblock |
3017 TBuf8<SIZE_SMS_SB_ADDRESS + SMS_ADDRESS_MAX_LEN> addressBuf( 0 ); |
2974 TBuf8<SIZE_SMS_SB_ADDRESS + SMS_ADDRESS_MAX_LEN> addressBuf( 0 ); |
3018 TIsiSubBlock address( |
2975 TIsiSubBlock address( |
3019 addressBuf, |
2976 addressBuf, |
3020 SMS_SB_ADDRESS, |
2977 SMS_SB_ADDRESS, |
3023 addressBuf.Append( addressLength ); |
2980 addressBuf.Append( addressLength ); |
3024 addressBuf.Append( aAddress ); |
2981 addressBuf.Append( aAddress ); |
3025 |
2982 |
3026 aIsiMsg.CopyData( aMsgOffset, address.CompleteSubBlock() ); |
2983 aIsiMsg.CopyData( aMsgOffset, address.CompleteSubBlock() ); |
3027 |
2984 |
3028 // Subblock length is needed for return value |
|
3029 subblockLength = addressBuf.Length(); |
|
3030 |
|
3031 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbAddress. Address type: %d", aAddressType ); |
2985 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbAddress. Address type: %d", aAddressType ); |
3032 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbAddress. Address length: %d", addressLength ); |
2986 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbAddress. Address length: %d", addressLength ); |
3033 OstTraceExt2( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_BUILDSMSSBADDRESS, "CMmSmsMessHandler::BuildSmsSbAddress;aAddressType=%hhu;addressLength=%hhu", aAddressType, addressLength ); |
2987 OstTraceExt2( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_BUILDSMSSBADDRESS_TD, "CMmSmsMessHandler::BuildSmsSbAddress;aAddressType=%hhu;addressLength=%hhu", aAddressType, addressLength ); |
3034 #ifdef _DEBUG |
2988 #ifdef _DEBUG |
3035 for ( TInt i( 0 ); i < aAddress.Length(); i++ ) |
2989 for ( TInt i( 0 ); i < aAddress.Length(); i++ ) |
3036 { |
2990 { |
3037 TFLOGSTRING3( "TSY:CMmSmsMessHandler::BuildSmsSbAddress. Address data[%d]: 0x%x", i, aAddress[i] ); |
2991 TFLOGSTRING3( "TSY:CMmSmsMessHandler::BuildSmsSbAddress. Address data[%d]: 0x%x", i, aAddress[i] ); |
3038 OstTraceExt2( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_BUILDSMSSBADDRESS, "CMmSmsMessHandler::BuildSmsSbAddress;i=%hhu;aAddress[i]=%hhu", i, aAddress[i] ); |
2992 OstTraceExt2( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_BUILDSMSSBADDRESS_TD, "CMmSmsMessHandler::BuildSmsSbAddress;i=%hhu;aAddress[i]=%hhu", i, aAddress[i] ); |
3039 } |
2993 } |
3040 #endif // _DEBUG |
2994 #endif // _DEBUG |
3041 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbAddress. Length of subblock: %d", subblockLength ); |
2995 |
3042 OstTraceExt1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_BUILDSMSSBADDRESS, "CMmSmsMessHandler::BuildSmsSbAddress;subblockLength=%hhu", subblockLength ); |
2996 return addressBuf.Length(); |
3043 |
2997 } |
3044 return subblockLength; |
2998 |
3045 } |
2999 |
3046 |
3000 // ----------------------------------------------------------------------------- |
3047 |
3001 // CMmSmsMessHandler::BuildSmsSbUserData |
3048 // ----------------------------------------------------------------------------- |
|
3049 // Creates SMS_SB_USER_DATA subblock and appends it to ISI message |
3002 // Creates SMS_SB_USER_DATA subblock and appends it to ISI message |
3050 // ----------------------------------------------------------------------------- |
3003 // ----------------------------------------------------------------------------- |
3051 TUint8 CMmSmsMessHandler::BuildSmsSbUserData( |
3004 TUint16 CMmSmsMessHandler::BuildSmsSbUserData( |
3052 const TDesC8& aMsgData, |
3005 const TDesC8& aMsgData, |
3053 TIsiSend& aIsiMsg, |
3006 TIsiSend& aIsiMsg, |
3054 TUint8 aTpUdl, |
3007 TUint8 aTpUdl, |
3055 TUint8 aTpUserDataIndex, |
3008 TUint8 aTpUserDataIndex, |
3056 TBool aDefaultAlphabet, |
3009 TBool aDefaultAlphabet, |
3057 TUint8 aMsgOffset ) const |
3010 TUint aMsgOffset ) const |
3058 { |
3011 { |
3059 TFLOGSTRING("TSY:CMmSmsMessHandler::BuildSmsSbUserData"); |
3012 TFLOGSTRING("TSY:CMmSmsMessHandler::BuildSmsSbUserData"); |
3060 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSMSSBUSERDATA, "CMmSmsMessHandler::BuildSmsSbUserData" ); |
3013 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSMSSBUSERDATA_TD, "CMmSmsMessHandler::BuildSmsSbUserData" ); |
3061 |
3014 |
3062 TUint8 dataLengthInOctets( 0 ); |
3015 TUint8 dataLengthInOctets( 0 ); |
3063 TUint8 subblockLength( 0 ); |
|
3064 |
3016 |
3065 // If data is 7-bit, then TP-UDL is integer representation of |
3017 // If data is 7-bit, then TP-UDL is integer representation of |
3066 // the number of septets within the TP-UD field |
3018 // the number of septets within the TP-UD field |
3067 if ( aDefaultAlphabet ) |
3019 if ( aDefaultAlphabet ) |
3068 { |
3020 { |
3088 userDataBuf.Append( aTpUdl ); |
3040 userDataBuf.Append( aTpUdl ); |
3089 userDataBuf.Append( dataBytes ); |
3041 userDataBuf.Append( dataBytes ); |
3090 |
3042 |
3091 aIsiMsg.CopyData( aMsgOffset, userData.CompleteSubBlock() ); |
3043 aIsiMsg.CopyData( aMsgOffset, userData.CompleteSubBlock() ); |
3092 |
3044 |
3093 subblockLength = userDataBuf.Length(); |
|
3094 |
|
3095 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbUserData. User data length in octets: %d", dataLengthInOctets ); |
3045 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbUserData. User data length in octets: %d", dataLengthInOctets ); |
3096 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbUserData. User data character count: %d", aTpUdl ); |
3046 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbUserData. User data character count: %d", aTpUdl ); |
3097 OstTraceExt2( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_BUILDSMSSBUSERDATA, "CMmSmsMessHandler::BuildSmsSbUserData;dataLengthInOctets=%hhu;aTpUdl=%hhu", dataLengthInOctets, aTpUdl ); |
3047 OstTraceExt2( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_BUILDSMSSBUSERDATA_TD, "CMmSmsMessHandler::BuildSmsSbUserData;dataLengthInOctets=%hhu;aTpUdl=%hhu", dataLengthInOctets, aTpUdl ); |
3098 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbUserData. Length of subblock: %d", subblockLength ); |
3048 |
3099 OstTraceExt1( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_BUILDSMSSBUSERDATA, "CMmSmsMessHandler::BuildSmsSbUserData;subblockLength=%hhu", subblockLength ); |
3049 return userDataBuf.Length(); |
3100 |
3050 } |
3101 return subblockLength; |
3051 |
3102 } |
3052 |
3103 |
3053 // ----------------------------------------------------------------------------- |
3104 |
3054 // CMmSmsMessHandler::BuildSmsSbValidityPeriod |
3105 // ----------------------------------------------------------------------------- |
|
3106 // Creates SMS_SB_VALIDITY_PERIOD subblock and appends it to ISI message |
3055 // Creates SMS_SB_VALIDITY_PERIOD subblock and appends it to ISI message |
3107 // ----------------------------------------------------------------------------- |
3056 // ----------------------------------------------------------------------------- |
3108 void CMmSmsMessHandler::BuildSmsSbValidityPeriod( |
3057 TUint16 CMmSmsMessHandler::BuildSmsSbValidityPeriod( |
3109 const TDesC8& aMsgData, |
3058 const TDesC8& aMsgData, |
3110 TIsiSend& aIsiMsg, |
3059 TIsiSend& aIsiMsg, |
3111 TUint8 aTpVpIndex, |
3060 TUint8 aTpVpIndex, |
3112 TUint8 aTpVpLength, |
3061 TUint8 aTpVpLength, |
3113 TUint8 aMsgOffset ) const |
3062 TUint aMsgOffset ) const |
3114 { |
3063 { |
3115 TFLOGSTRING("TSY:CMmSmsMessHandler::BuildSmsSbValidityPeriod"); |
3064 TFLOGSTRING("TSY:CMmSmsMessHandler::BuildSmsSbValidityPeriod"); |
3116 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSMSSBVALIDITYPERIOD, "CMmSmsMessHandler::BuildSmsSbValidityPeriod" ); |
3065 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSMSSBVALIDITYPERIOD_TD, "CMmSmsMessHandler::BuildSmsSbValidityPeriod" ); |
3117 |
3066 |
3118 // Extract validity period data bytes |
3067 // Extract validity period data bytes |
3119 TPtrC8 tpVpData( aMsgData.Mid( aTpVpIndex, aTpVpLength ) ); |
3068 TPtrC8 tpVpData( aMsgData.Mid( aTpVpIndex, aTpVpLength ) ); |
3120 |
3069 |
3121 // Create and fill SMS_SB_VALIDITY_PERIOD subblock, max length is 12 |
3070 // Create and fill SMS_SB_VALIDITY_PERIOD subblock, max length is 12 |
3128 validityPeriodBuf.Append( tpVpData ); |
3077 validityPeriodBuf.Append( tpVpData ); |
3129 |
3078 |
3130 aIsiMsg.CopyData( aMsgOffset, validityPeriod.CompleteSubBlock() ); |
3079 aIsiMsg.CopyData( aMsgOffset, validityPeriod.CompleteSubBlock() ); |
3131 |
3080 |
3132 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbValidityPeriod. Validity period length: %d", aTpVpLength ); |
3081 TFLOGSTRING2( "TSY:CMmSmsMessHandler::BuildSmsSbValidityPeriod. Validity period length: %d", aTpVpLength ); |
3133 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_BUILDSMSSBVALIDITYPERIOD, "CMmSmsMessHandler::BuildSmsSbValidityPeriod;aTpVpLength=%hhu", aTpVpLength ); |
3082 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_BUILDSMSSBVALIDITYPERIOD_TD, "CMmSmsMessHandler::BuildSmsSbValidityPeriod;aTpVpLength=%hhu", aTpVpLength ); |
3134 |
3083 |
3135 #ifdef _DEBUG |
3084 #ifdef _DEBUG |
3136 for ( TInt i( 0 ); i < aTpVpLength; i++ ) |
3085 for ( TInt i( 0 ); i < aTpVpLength; i++ ) |
3137 { |
3086 { |
3138 TFLOGSTRING3( "Validity period, byte[%d], 0x%x", i, tpVpData[i] ); |
3087 TFLOGSTRING3( "Validity period, byte[%d], 0x%x", i, tpVpData[i] ); |
3139 OstTraceExt2( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_BUILDSMSSBVALIDITYPERIOD, "CMmSmsMessHandler::BuildSmsSbValidityPeriod;i=%hhu;tpVpData[i]=%hhu", i, tpVpData[i] ); |
3088 OstTraceExt2( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_BUILDSMSSBVALIDITYPERIOD_TD, "CMmSmsMessHandler::BuildSmsSbValidityPeriod;i=%hhu;tpVpData[i]=%hhu", i, tpVpData[i] ); |
3140 } |
3089 } |
3141 #endif // _DEBUG |
3090 #endif // _DEBUG |
3142 } |
3091 |
3143 |
3092 return validityPeriodBuf.Length(); |
3144 // ----------------------------------------------------------------------------- |
3093 } |
3094 |
|
3095 // ----------------------------------------------------------------------------- |
|
3096 // CMmSmsMessHandler::BuildSmsCheckInfo |
|
3145 // Creates SMS_SB_CHECK_INFO sub block with SMS_CHECK_DISABLE_FDN and appends it |
3097 // Creates SMS_SB_CHECK_INFO sub block with SMS_CHECK_DISABLE_FDN and appends it |
3146 // to ISI message. |
3098 // to ISI message. |
3147 // ----------------------------------------------------------------------------- |
3099 // ----------------------------------------------------------------------------- |
3148 void CMmSmsMessHandler::BuildSmsCheckInfo( |
3100 TUint16 CMmSmsMessHandler::BuildSmsCheckInfo( |
3149 TIsiSend& aIsiMsg, |
3101 TIsiSend& aIsiMsg, |
3150 TUint8 aMsgOffset ) const |
3102 TUint aMsgOffset ) const |
3151 { |
3103 { |
3152 TFLOGSTRING("TSY:CMmSmsMessHandler::BuildSmsCheckInfo"); |
3104 TFLOGSTRING("TSY:CMmSmsMessHandler::BuildSmsCheckInfo"); |
3153 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSMSCHECKINFO, "CMmSmsMessHandler::BuildSmsCheckInfo" ); |
3105 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_BUILDSMSCHECKINFO_TD, "CMmSmsMessHandler::BuildSmsCheckInfo" ); |
3154 |
3106 |
3155 // Create and fill SMS_SB_CHECK_INFO subblock. |
3107 // Create and fill SMS_SB_CHECK_INFO subblock. |
3156 TBuf8<SIZE_SMS_SB_CHECK_INFO> checkInfoBuf; |
3108 TBuf8<SIZE_SMS_SB_CHECK_INFO> checkInfoBuf; |
3157 TIsiSubBlock checkInfo( |
3109 TIsiSubBlock checkInfo( |
3158 checkInfoBuf, |
3110 checkInfoBuf, |
3163 checkInfoBuf.Append( KSmsPadding ); |
3115 checkInfoBuf.Append( KSmsPadding ); |
3164 checkInfoBuf.Append( KSmsPadding ); |
3116 checkInfoBuf.Append( KSmsPadding ); |
3165 |
3117 |
3166 aIsiMsg.CopyData( aMsgOffset, checkInfo.CompleteSubBlock() ); |
3118 aIsiMsg.CopyData( aMsgOffset, checkInfo.CompleteSubBlock() ); |
3167 |
3119 |
3120 return checkInfoBuf.Length(); |
|
3168 } |
3121 } |
3169 |
3122 |
3170 // ----------------------------------------------------------------------------- |
3123 // ----------------------------------------------------------------------------- |
3171 // CMmSmsMessHandler::ProcessUiccMsg |
3124 // CMmSmsMessHandler::ProcessUiccMsg |
3172 // Handles data received from UICC server |
3125 // Handles data received from UICC server |
3177 TInt aStatus, |
3130 TInt aStatus, |
3178 TUint8 /*aDetails*/, |
3131 TUint8 /*aDetails*/, |
3179 const TDesC8& aFileData ) |
3132 const TDesC8& aFileData ) |
3180 { |
3133 { |
3181 TFLOGSTRING3("TSY:CMmSmsMessHandler::ProcessUiccMsg, aTraId: %d, status: %d", aTraId, aStatus ); |
3134 TFLOGSTRING3("TSY:CMmSmsMessHandler::ProcessUiccMsg, aTraId: %d, status: %d", aTraId, aStatus ); |
3182 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_PROCESSUICCMSG, "CMmSmsMessHandler::ProcessUiccMsg;aTraId=%d", aTraId ); |
3135 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_PROCESSUICCMSG_TD, "CMmSmsMessHandler::ProcessUiccMsg;aTraId=%d", aTraId ); |
3183 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_PROCESSUICCMSG, "CMmSmsMessHandler::ProcessUiccMsg;aStatus=%d", aStatus ); |
3136 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_PROCESSUICCMSG_TD, "CMmSmsMessHandler::ProcessUiccMsg;aStatus=%d", aStatus ); |
3184 |
3137 |
3185 TInt ret( KErrNone ); |
3138 TInt ret( KErrNone ); |
3186 |
3139 |
3187 switch( aTraId ) |
3140 switch( aTraId ) |
3188 { |
3141 { |
3271 break; |
3224 break; |
3272 } |
3225 } |
3273 default: |
3226 default: |
3274 { |
3227 { |
3275 TFLOGSTRING("TSY:CMmSmsMessHandler::ProcessUiccMsg - unknown transaction ID" ); |
3228 TFLOGSTRING("TSY:CMmSmsMessHandler::ProcessUiccMsg - unknown transaction ID" ); |
3276 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_PROCESSUICCMSG, "CMmSmsMessHandler::ProcessUiccMsg - unknown transaction ID" ); |
3229 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_PROCESSUICCMSG_TD, "CMmSmsMessHandler::ProcessUiccMsg - unknown transaction ID" ); |
3277 |
3230 |
3278 break; |
3231 break; |
3279 } |
3232 } |
3280 } |
3233 } |
3281 return ret; |
3234 return ret; |
3289 TInt CMmSmsMessHandler::UiccReadSMSOrSMSRecordCountReq( |
3242 TInt CMmSmsMessHandler::UiccReadSMSOrSMSRecordCountReq( |
3290 const TUint8 aRecordId, |
3243 const TUint8 aRecordId, |
3291 const TUiccTrId aTrId ) |
3244 const TUiccTrId aTrId ) |
3292 { |
3245 { |
3293 TFLOGSTRING3("TSY: CMmSmsMessHandler::UiccReadSMSReq, aTraId: %d, aRecordId: %d", aTrId, aRecordId ); |
3246 TFLOGSTRING3("TSY: CMmSmsMessHandler::UiccReadSMSReq, aTraId: %d, aRecordId: %d", aTrId, aRecordId ); |
3294 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCREADSMSORSMSRECORDCOUNTREQ, "CMmSmsMessHandler::UiccReadSMSOrSMSRecordCountReq;aTrId=%hhu;aRecordId=%hhu", aTrId, aRecordId ); |
3247 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCREADSMSORSMSRECORDCOUNTREQ_TD, "CMmSmsMessHandler::UiccReadSMSOrSMSRecordCountReq;aTrId=%hhu;aRecordId=%hhu", aTrId, aRecordId ); |
3295 |
3248 |
3296 TUint8 serviceType( 0 ); |
3249 TUint8 serviceType( 0 ); |
3297 TInt ret( KErrNone ); |
3250 TInt ret( KErrNone ); |
3298 |
3251 |
3299 switch( aTrId ) |
3252 switch( aTrId ) |
3312 break; |
3265 break; |
3313 } |
3266 } |
3314 default: |
3267 default: |
3315 { |
3268 { |
3316 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccReadSMSReq - unknown transaction ID" ); |
3269 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccReadSMSReq - unknown transaction ID" ); |
3317 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_UICCREADSMSORSMSRECORDCOUNTREQ, "CMmSmsMessHandler::UiccReadSMSOrSMSRecordCountReq - unknown transaction ID" ); |
3270 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_UICCREADSMSORSMSRECORDCOUNTREQ_TD, "CMmSmsMessHandler::UiccReadSMSOrSMSRecordCountReq - unknown transaction ID" ); |
3318 ret = KErrUnknown; |
3271 ret = KErrUnknown; |
3319 break; |
3272 break; |
3320 } |
3273 } |
3321 } |
3274 } |
3322 |
3275 |
3353 void CMmSmsMessHandler::UiccReadSMSResp( |
3306 void CMmSmsMessHandler::UiccReadSMSResp( |
3354 TInt aStatus, |
3307 TInt aStatus, |
3355 const TDesC8& aFileData ) |
3308 const TDesC8& aFileData ) |
3356 { |
3309 { |
3357 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccReadSMSResp" ); |
3310 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccReadSMSResp" ); |
3358 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCREADSMSRESP, "CMmSmsMessHandler::UiccReadSMSResp" ); |
3311 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCREADSMSRESP_TD, "CMmSmsMessHandler::UiccReadSMSResp" ); |
3359 |
3312 |
3360 if ( KErrNone == aStatus ) |
3313 if ( UICC_STATUS_OK == aStatus ) |
3361 { |
3314 { |
3362 TFLOGSTRING2("TSY: CMmSmsMessHandler::SimStSmsHandleReadCacheEntriesL -- cacheing iRecordId=%d", iRecordId ); |
3315 TFLOGSTRING2("TSY: CMmSmsMessHandler::SimStSmsHandleReadCacheEntriesL -- cacheing iRecordId=%d", iRecordId ); |
3363 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_UICCREADSMSRESP, "CMmSmsMessHandler::UiccReadSMSResp;iRecordId=%hhu", iRecordId ); |
3316 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_UICCREADSMSRESP_TD, "CMmSmsMessHandler::UiccReadSMSResp;iRecordId=%hhu", iRecordId ); |
3364 |
3317 |
3365 if ( 0 != aFileData.Length() ) |
3318 if ( 0 != aFileData.Length() ) |
3366 { |
3319 { |
3367 // add to cache |
3320 // add to cache |
3368 RMobileSmsStore::TMobileGsmSmsEntryV1 smsData; |
3321 RMobileSmsStore::TMobileGsmSmsEntryV1 smsData; |
3418 } |
3371 } |
3419 } |
3372 } |
3420 else |
3373 else |
3421 { |
3374 { |
3422 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccReadSMSResp - abort caching"); |
3375 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccReadSMSResp - abort caching"); |
3423 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_UICCREADSMSRESP, "CMmSmsMessHandler::UiccReadSMSResp - abort caching" ); |
3376 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_UICCREADSMSRESP_TD, "CMmSmsMessHandler::UiccReadSMSResp - abort caching" ); |
3424 // else SIM suddenly removed ==> abort caching |
3377 // else SIM suddenly removed ==> abort caching |
3425 // or example SIM rejected (EFSA-6ZQ9K3). |
3378 // or example SIM rejected (EFSA-6ZQ9K3). |
3426 |
3379 |
3427 // SMS is on SIM, but we couldn't read it. Cache must be |
3380 // SMS is on SIM, but we couldn't read it. Cache must be |
3428 // invalidated |
3381 // invalidated |
3434 |
3387 |
3435 // either done or failed |
3388 // either done or failed |
3436 if ( KErrNotReady != iSmsCache.Status() ) |
3389 if ( KErrNotReady != iSmsCache.Status() ) |
3437 { |
3390 { |
3438 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccReadSMSResp - Success or Error value of SMS cache read = %d",iSmsCache.Status() ); |
3391 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccReadSMSResp - Success or Error value of SMS cache read = %d",iSmsCache.Status() ); |
3439 OstTrace1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_UICCREADSMSRESP, "CMmSmsMessHandler::UiccReadSMSResp;iSmsCache.Status()=%d", iSmsCache.Status() ); |
3392 OstTrace1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_UICCREADSMSRESP_TD, "CMmSmsMessHandler::UiccReadSMSResp;iSmsCache.Status()=%d", iSmsCache.Status() ); |
3440 |
3393 |
3441 TFLOGSTRING3("TSY: CMmSmsMessHandler::UiccReadSMSResp --- SMS CACHE READ DONE --- total=%d used=%d",iSmsCache.TotalEntries(), iSmsCache.UsedEntries() ); |
3394 TFLOGSTRING3("TSY: CMmSmsMessHandler::UiccReadSMSResp --- SMS CACHE READ DONE --- total=%d used=%d",iSmsCache.TotalEntries(), iSmsCache.UsedEntries() ); |
3442 OstTrace1( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_UICCREADSMSRESP, "CMmSmsMessHandler::UiccReadSMSResp;iSmsCache.TotalEntries()=%d", iSmsCache.TotalEntries() ); |
3395 OstTrace1( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_UICCREADSMSRESP_TD, "CMmSmsMessHandler::UiccReadSMSResp;iSmsCache.TotalEntries()=%d", iSmsCache.TotalEntries() ); |
3443 |
3396 |
3444 // there is a chance that EMobileSmsMessagingGetMessageStoreInfo |
3397 // there is a chance that EMobileSmsMessagingGetMessageStoreInfo |
3445 // request is already on if so, then complete it here... if there is |
3398 // request is already on if so, then complete it here... if there is |
3446 // no request on, then this is harmless.. |
3399 // no request on, then this is harmless.. |
3447 TUint8 numOfLoc( TUint8( iSmsCache.TotalEntries() ) ); |
3400 TUint8 numOfLoc( TUint8( iSmsCache.TotalEntries() ) ); |
3468 |
3421 |
3469 // if cache is up and a message was received while cacheing then resume |
3422 // if cache is up and a message was received while cacheing then resume |
3470 if ( KErrNone == iSmsCache.Status() && iReceivedClass2ToBeReSent ) |
3423 if ( KErrNone == iSmsCache.Status() && iReceivedClass2ToBeReSent ) |
3471 { |
3424 { |
3472 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccReadSMSResp -- resume SMS reception"); |
3425 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccReadSMSResp -- resume SMS reception"); |
3473 OstTrace0( TRACE_NORMAL, DUP5_CMMSMSMESSHANDLER_UICCREADSMSRESP, "CMmSmsMessHandler::UiccReadSMSResp -- resume SMS reception" ); |
3426 OstTrace0( TRACE_NORMAL, DUP5_CMMSMSMESSHANDLER_UICCREADSMSRESP_TD, "CMmSmsMessHandler::UiccReadSMSResp -- resume SMS reception" ); |
3474 SmsReceiveMessageReq( SMS_RECEPTION_STORAGE_STATUS_UPDATE ); |
3427 SmsReceiveMessageReq( SMS_RECEPTION_STORAGE_STATUS_UPDATE ); |
3475 iReceivedClass2ToBeReSent = EFalse; |
3428 iReceivedClass2ToBeReSent = EFalse; |
3476 } |
3429 } |
3477 } |
3430 } |
3478 } |
3431 } |
3485 void CMmSmsMessHandler::UiccReadSMSRespForComplete( |
3438 void CMmSmsMessHandler::UiccReadSMSRespForComplete( |
3486 TInt aStatus, |
3439 TInt aStatus, |
3487 const TDesC8& aFileData ) |
3440 const TDesC8& aFileData ) |
3488 { |
3441 { |
3489 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccReadSMSRespForComplete" ); |
3442 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccReadSMSRespForComplete" ); |
3490 //OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCREADSMSRESP, "CMmSmsMessHandler::UiccReadSMSResp;aStatus=%d;aFileData=%s", aStatus,aFileData ); |
3443 //OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCREADSMSRESP_TD, "CMmSmsMessHandler::UiccReadSMSResp;aStatus=%d;aFileData=%s", aStatus,aFileData ); |
3491 |
3444 |
3492 |
3445 |
3493 if ( KErrNone == aStatus ) |
3446 if ( UICC_STATUS_OK == aStatus ) |
3494 { |
3447 { |
3495 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccReadSMSRespForComplete -- cacheing iRecordId=%d", iRecordId ); |
3448 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccReadSMSRespForComplete -- cacheing iRecordId=%d", iRecordId ); |
3496 OstTraceExt1( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCREADSMSRESPFORCOMPLETE, "CMmSmsMessHandler::UiccReadSMSRespForComplete;iRecordId=%hhu", iRecordId ); |
3449 OstTraceExt1( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCREADSMSRESPFORCOMPLETE_TD, "CMmSmsMessHandler::UiccReadSMSRespForComplete;iRecordId=%hhu", iRecordId ); |
3497 |
3450 |
3498 if ( 0 != aFileData.Length() ) |
3451 if ( 0 != aFileData.Length() ) |
3499 { |
3452 { |
3500 // add to cache |
3453 // add to cache |
3501 RMobileSmsStore::TMobileGsmSmsEntryV1 smsData; |
3454 RMobileSmsStore::TMobileGsmSmsEntryV1 smsData; |
3642 const RMobileSmsStore::TMobileGsmSmsEntryV1& aEntry, |
3595 const RMobileSmsStore::TMobileGsmSmsEntryV1& aEntry, |
3643 const TUint8 aRecordId |
3596 const TUint8 aRecordId |
3644 ) |
3597 ) |
3645 { |
3598 { |
3646 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccWriteSMSReq aRecordId: %d", aRecordId ); |
3599 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccWriteSMSReq aRecordId: %d", aRecordId ); |
3647 OstTraceExt1( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCWRITESMSREQ, "CMmSmsMessHandler::UiccWriteSMSReq;aRecordId=%hhu", aRecordId ); |
3600 OstTraceExt1( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCWRITESMSREQ_TD, "CMmSmsMessHandler::UiccWriteSMSReq;aRecordId=%hhu", aRecordId ); |
3648 |
3601 |
3649 // Set parameters for UICC_APPL_CMD_REQ message |
3602 // Set parameters for UICC_APPL_CMD_REQ message |
3650 TUiccWriteLinearFixed params; |
3603 TUiccWriteLinearFixed params; |
3651 params.messHandlerPtr = static_cast<MUiccOperationBase*>( this ); |
3604 params.messHandlerPtr = static_cast<MUiccOperationBase*>( this ); |
3652 params.trId = ETrIdWriteSMS; |
3605 params.trId = ETrIdWriteSMS; |
3721 // ----------------------------------------------------------------------------- |
3674 // ----------------------------------------------------------------------------- |
3722 // |
3675 // |
3723 void CMmSmsMessHandler::UiccWriteSMSResp( TInt aStatus ) |
3676 void CMmSmsMessHandler::UiccWriteSMSResp( TInt aStatus ) |
3724 { |
3677 { |
3725 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccWriteSMSResp aStatus: %d", aStatus ); |
3678 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccWriteSMSResp aStatus: %d", aStatus ); |
3726 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCWRITESMSRESP, "CMmSmsMessHandler::UiccWriteSMSResp;aStatus=%d", aStatus ); |
3679 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCWRITESMSRESP_TD, "CMmSmsMessHandler::UiccWriteSMSResp;aStatus=%d", aStatus ); |
3727 |
3680 |
3728 // Create Package |
3681 // Create Package |
3729 CMmDataPackage package; |
3682 CMmDataPackage package; |
3730 |
3683 |
3731 if ( iSMSClass2Write ) |
3684 if ( iSMSClass2Write ) |
3732 { |
3685 { |
3733 if ( KErrNone == aStatus ) |
3686 if ( UICC_STATUS_OK == aStatus ) |
3734 { |
3687 { |
3735 // After writing class2 SMS to SIM card, it has |
3688 // After writing class2 SMS to SIM card, it has |
3736 // to be read in case SIM SW has changed the contents |
3689 // to be read in case SIM SW has changed the contents |
3737 TInt ret( UiccReadSMSOrSMSRecordCountReq( iSmsSlotLocation, ETrIdReadSMSForComplete ) ); |
3690 TInt ret( UiccReadSMSOrSMSRecordCountReq( iSmsSlotLocation, ETrIdReadSMSForComplete ) ); |
3738 if ( KErrNone != ret ) |
3691 if ( KErrNone != ret ) |
3778 } |
3731 } |
3779 } |
3732 } |
3780 } |
3733 } |
3781 else |
3734 else |
3782 { |
3735 { |
3783 if ( KErrNone == aStatus ) |
3736 if ( UICC_STATUS_OK == aStatus ) |
3784 { |
3737 { |
3785 // After writing class2 SMS to SIM card, it has |
3738 // After writing class2 SMS to SIM card, it has |
3786 // to be read in case SIM SW has changed the contents |
3739 // to be read in case SIM SW has changed the contents |
3787 TInt ret( UiccReadSMSOrSMSRecordCountReq( iSmsSlotLocation, ETrIdReadSMSForComplete ) ); |
3740 TInt ret( UiccReadSMSOrSMSRecordCountReq( iSmsSlotLocation, ETrIdReadSMSForComplete ) ); |
3788 if ( KErrNone != ret ) |
3741 if ( KErrNone != ret ) |
3817 // ----------------------------------------------------------------------------- |
3770 // ----------------------------------------------------------------------------- |
3818 // |
3771 // |
3819 void CMmSmsMessHandler::GetNumOfEFSMSRecords( void ) |
3772 void CMmSmsMessHandler::GetNumOfEFSMSRecords( void ) |
3820 { |
3773 { |
3821 TFLOGSTRING("TSY: CMmSmsMessHandler::GetNumOfEFSMSRecords" ); |
3774 TFLOGSTRING("TSY: CMmSmsMessHandler::GetNumOfEFSMSRecords" ); |
3822 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_GETNUMOFEFSMSRECORDS, "CMmSmsMessHandler::GetNumOfEFSMSRecords" ); |
3775 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_GETNUMOFEFSMSRECORDS_TD, "CMmSmsMessHandler::GetNumOfEFSMSRecords" ); |
3823 |
3776 |
3824 TUint8 recordID( 0 ); |
3777 TUint8 recordID( 0 ); |
3825 TUiccTrId trId( ETrIdReadSMSRecordCount ); |
3778 TUiccTrId trId( ETrIdReadSMSRecordCount ); |
3826 |
3779 |
3827 CMmSmsMessHandler::UiccReadSMSOrSMSRecordCountReq ( recordID, |
3780 CMmSmsMessHandler::UiccReadSMSOrSMSRecordCountReq ( recordID, |
3836 void CMmSmsMessHandler::GetNumOfEFSMSRecordsResp( |
3789 void CMmSmsMessHandler::GetNumOfEFSMSRecordsResp( |
3837 TInt aStatus, |
3790 TInt aStatus, |
3838 const TDesC8& aFileData ) |
3791 const TDesC8& aFileData ) |
3839 { |
3792 { |
3840 TFLOGSTRING("TSY: CMmSmsMessHandler::GetNumOfEFSMSRecordsResp" ); |
3793 TFLOGSTRING("TSY: CMmSmsMessHandler::GetNumOfEFSMSRecordsResp" ); |
3841 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_GETNUMOFEFSMSRECORDSRESP, "CMmSmsMessHandler::GetNumOfEFSMSRecordsResp;aStatus=%d;aFileData=%s", aStatus, aFileData ); |
3794 OstTraceExt2( TRACE_NORMAL, CMMSMSMESSHANDLER_GETNUMOFEFSMSRECORDSRESP_TD, "CMmSmsMessHandler::GetNumOfEFSMSRecordsResp;aStatus=%d;aFileData=%s", aStatus, aFileData ); |
3842 |
3795 |
3843 //Save number of SMS locations on SIM card |
3796 //Save number of SMS locations on SIM card |
3844 TInt smsNumOfLoc( 0 ); |
3797 TInt smsNumOfLoc( 0 ); |
3845 |
3798 |
3846 if ( KErrNone == aStatus ) |
3799 if ( UICC_STATUS_OK == aStatus ) |
3847 { |
3800 { |
3848 TFci fci( aFileData ); |
3801 TFci fci( aFileData ); |
3849 smsNumOfLoc = fci.GetNumberOfRecords(); |
3802 smsNumOfLoc = fci.GetNumberOfRecords(); |
3850 } |
3803 } |
3851 |
3804 |
3853 if ( smsNumOfLoc > 0 ) |
3806 if ( smsNumOfLoc > 0 ) |
3854 { |
3807 { |
3855 // got the total number or SIM SMS entries |
3808 // got the total number or SIM SMS entries |
3856 iSmsCache.SetTotalEntriesL( smsNumOfLoc ); |
3809 iSmsCache.SetTotalEntriesL( smsNumOfLoc ); |
3857 TFLOGSTRING2("TSY: CMmSmsMessHandler::SimStSmsGetNumOfLocRespL -- total number of locations on sim %d", iSmsCache.TotalEntries() ); |
3810 TFLOGSTRING2("TSY: CMmSmsMessHandler::SimStSmsGetNumOfLocRespL -- total number of locations on sim %d", iSmsCache.TotalEntries() ); |
3858 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_GETNUMOFEFSMSRECORDSRESP, "CMmSmsMessHandler::GetNumOfEFSMSRecordsResp;iSmsCache.TotalEntries()=%d", iSmsCache.TotalEntries() ); |
3811 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_GETNUMOFEFSMSRECORDSRESP_TD, "CMmSmsMessHandler::GetNumOfEFSMSRecordsResp;iSmsCache.TotalEntries()=%d", iSmsCache.TotalEntries() ); |
3859 |
3812 |
3860 // now start reading entries one by one starting from record 1 |
3813 // now start reading entries one by one starting from record 1 |
3861 UiccReadSMSOrSMSRecordCountReq( 1, ETrIdReadSMS ); |
3814 UiccReadSMSOrSMSRecordCountReq( 1, ETrIdReadSMS ); |
3862 } |
3815 } |
3863 else |
3816 else |
3886 // ----------------------------------------------------------------------------- |
3839 // ----------------------------------------------------------------------------- |
3887 // |
3840 // |
3888 void CMmSmsMessHandler::UiccDeleteSMSResp( TInt aStatus ) |
3841 void CMmSmsMessHandler::UiccDeleteSMSResp( TInt aStatus ) |
3889 { |
3842 { |
3890 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccDeleteSMSResp aStatus: %d", aStatus ); |
3843 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccDeleteSMSResp aStatus: %d", aStatus ); |
3891 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_UICCDELETESMSRESP, "CMmSmsMessHandler::UiccDeleteSMSResp;aStatus=%d", aStatus ); |
3844 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_UICCDELETESMSRESP_TD, "CMmSmsMessHandler::UiccDeleteSMSResp;aStatus=%d", aStatus ); |
3892 |
3845 |
3893 // Create Package |
3846 // Create Package |
3894 CMmDataPackage package; |
3847 CMmDataPackage package; |
3895 |
3848 |
3896 TInt error( CMmStaticUtility::UICCCSCauseToEpocError( aStatus ) ); |
3849 TInt error( CMmStaticUtility::UICCCSCauseToEpocError( aStatus ) ); |
3909 // ----------------------------------------------------------------------------- |
3862 // ----------------------------------------------------------------------------- |
3910 // |
3863 // |
3911 void CMmSmsMessHandler::UiccDeleteAllSMSResp( TInt aStatus ) |
3864 void CMmSmsMessHandler::UiccDeleteAllSMSResp( TInt aStatus ) |
3912 { |
3865 { |
3913 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccDeleteSMSResp aStatus: %d", aStatus ); |
3866 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccDeleteSMSResp aStatus: %d", aStatus ); |
3914 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCDELETEALLSMSRESP, "CMmSmsMessHandler::UiccDeleteAllSMSResp;aStatus=%d", aStatus ); |
3867 OstTrace1( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCDELETEALLSMSRESP_TD, "CMmSmsMessHandler::UiccDeleteAllSMSResp;aStatus=%d", aStatus ); |
3915 |
3868 |
3916 // Create Package |
3869 // Create Package |
3917 CMmDataPackage package; |
3870 CMmDataPackage package; |
3918 |
3871 |
3919 TInt error( CMmStaticUtility::UICCCSCauseToEpocError( aStatus ) ); |
3872 TInt error( CMmStaticUtility::UICCCSCauseToEpocError( aStatus ) ); |
3946 TBool CMmSmsMessHandler::CheckSCTimestamp( |
3899 TBool CMmSmsMessHandler::CheckSCTimestamp( |
3947 const RMobileSmsStore::TMobileGsmSmsEntryV1& aEntry, |
3900 const RMobileSmsStore::TMobileGsmSmsEntryV1& aEntry, |
3948 const TTime& aScTime ) |
3901 const TTime& aScTime ) |
3949 { |
3902 { |
3950 TFLOGSTRING("TSY: CMmSmsMessHandler::CheckSCTimestamp"); |
3903 TFLOGSTRING("TSY: CMmSmsMessHandler::CheckSCTimestamp"); |
3951 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp" ); |
3904 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp" ); |
3952 TBool matchFound( EFalse ); |
3905 TBool matchFound( EFalse ); |
3953 |
3906 |
3954 TInt offset( 1 ); // Message Reference position |
3907 TInt offset( 1 ); // Message Reference position |
3955 TInt messageReference( aEntry.iMsgData[offset] ); |
3908 TInt messageReference( aEntry.iMsgData[offset] ); |
3956 // Destination address length is integer representation |
3909 // Destination address length is integer representation |
3973 |
3926 |
3974 // Ignore this messsage if month or day are zero (should not happen) |
3927 // Ignore this messsage if month or day are zero (should not happen) |
3975 if ( ( 0 == scTimeStamp[1] ) || ( 0 == scTimeStamp[2] ) ) |
3928 if ( ( 0 == scTimeStamp[1] ) || ( 0 == scTimeStamp[2] ) ) |
3976 { |
3929 { |
3977 TFLOGSTRING("TSY:CMmSmsMessHandler::CheckSCTimestamp:Invalid timestamp found, ignored."); |
3930 TFLOGSTRING("TSY:CMmSmsMessHandler::CheckSCTimestamp:Invalid timestamp found, ignored."); |
3978 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp, Invalid timestamp found, ignored" ); |
3931 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp, Invalid timestamp found, ignored" ); |
3979 matchFound = ETrue; |
3932 matchFound = ETrue; |
3980 } |
3933 } |
3981 |
3934 |
3982 if ( !matchFound ) |
3935 if ( !matchFound ) |
3983 { |
3936 { |
4029 |
3982 |
4030 #ifdef _DEBUG |
3983 #ifdef _DEBUG |
4031 // debug print |
3984 // debug print |
4032 TDateTime dt = simStoredTime.DateTime(); |
3985 TDateTime dt = simStoredTime.DateTime(); |
4033 TFLOGSTRING("TSY:CMmSmsMessHandler::CheckSCTimestamp:Message stored on SIM:"); |
3986 TFLOGSTRING("TSY:CMmSmsMessHandler::CheckSCTimestamp:Message stored on SIM:"); |
4034 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp, Message stored on SIM:" ); |
3987 OstTrace0( TRACE_NORMAL, DUP2_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp, Message stored on SIM:" ); |
4035 TFLOGSTRING2(" year=%d",dt.Year()); |
3988 TFLOGSTRING2(" year=%d",dt.Year()); |
4036 OstTrace1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;Year=%d", dt.Year() ); |
3989 OstTrace1( TRACE_NORMAL, DUP3_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;Year=%d", dt.Year() ); |
4037 TFLOGSTRING2(" month=%d",dt.Month()+1); |
3990 TFLOGSTRING2(" month=%d",dt.Month()+1); |
4038 OstTrace1( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;Month=%d", ( dt.Month() + 1 ) ); |
3991 OstTrace1( TRACE_NORMAL, DUP4_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;Month=%d", ( dt.Month() + 1 ) ); |
4039 TFLOGSTRING2(" day=%d",dt.Day()+1); |
3992 TFLOGSTRING2(" day=%d",dt.Day()+1); |
4040 OstTrace1( TRACE_NORMAL, DUP5_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;Day=%d", ( dt.Day() + 1 ) ); |
3993 OstTrace1( TRACE_NORMAL, DUP5_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;Day=%d", ( dt.Day() + 1 ) ); |
4041 TFLOGSTRING2(" hour=%d",dt.Hour()); |
3994 TFLOGSTRING2(" hour=%d",dt.Hour()); |
4042 OstTrace1( TRACE_NORMAL, DUP6_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;Hour=%d", dt.Hour() ); |
3995 OstTrace1( TRACE_NORMAL, DUP6_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;Hour=%d", dt.Hour() ); |
4043 TFLOGSTRING2(" minute=%d",dt.Minute()); |
3996 TFLOGSTRING2(" minute=%d",dt.Minute()); |
4044 OstTrace1( TRACE_NORMAL, DUP7_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;Minute=%d", dt.Minute() ); |
3997 OstTrace1( TRACE_NORMAL, DUP7_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;Minute=%d", dt.Minute() ); |
4045 TFLOGSTRING2(" second=%d",dt.Second()); |
3998 TFLOGSTRING2(" second=%d",dt.Second()); |
4046 OstTrace1( TRACE_NORMAL, DUP8_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;Second=%d", dt.Second() ); |
3999 OstTrace1( TRACE_NORMAL, DUP8_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;Second=%d", dt.Second() ); |
4047 TFLOGSTRING2(" timezone difference=%d",simTimezoneDiff); |
4000 TFLOGSTRING2(" timezone difference=%d",simTimezoneDiff); |
4048 OstTraceExt1( TRACE_NORMAL, DUP9_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;simTimezoneDiff=%hhd", simTimezoneDiff ); |
4001 OstTraceExt1( TRACE_NORMAL, DUP9_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;simTimezoneDiff=%hhd", simTimezoneDiff ); |
4049 dt = aScTime.DateTime(); |
4002 dt = aScTime.DateTime(); |
4050 TFLOGSTRING("TSY:CMmSmsMessHandler::CheckSCTimestamp:Message opened on client side:"); |
4003 TFLOGSTRING("TSY:CMmSmsMessHandler::CheckSCTimestamp:Message opened on client side:"); |
4051 OstTrace0( TRACE_NORMAL, DUP10_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp, Message opened on client side:" ); |
4004 OstTrace0( TRACE_NORMAL, DUP10_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp, Message opened on client side:" ); |
4052 TFLOGSTRING2(" year=%d",dt.Year()); |
4005 TFLOGSTRING2(" year=%d",dt.Year()); |
4053 OstTrace1( TRACE_NORMAL, DUP11_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;Year=%d", ( dt.Year() + 1 ) ); |
4006 OstTrace1( TRACE_NORMAL, DUP11_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;Year=%d", ( dt.Year() + 1 ) ); |
4054 TFLOGSTRING2(" month=%d",dt.Month()+1); |
4007 TFLOGSTRING2(" month=%d",dt.Month()+1); |
4055 OstTrace1( TRACE_NORMAL, DUP12_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;Month=%d", ( dt.Month() + 1 ) ); |
4008 OstTrace1( TRACE_NORMAL, DUP12_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;Month=%d", ( dt.Month() + 1 ) ); |
4056 TFLOGSTRING2(" day=%d",dt.Day()+1); |
4009 TFLOGSTRING2(" day=%d",dt.Day()+1); |
4057 OstTrace1( TRACE_NORMAL, DUP13_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;Day=%d", ( dt.Day() + 1 ) ); |
4010 OstTrace1( TRACE_NORMAL, DUP13_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;Day=%d", ( dt.Day() + 1 ) ); |
4058 TFLOGSTRING2(" hour=%d",dt.Hour()); |
4011 TFLOGSTRING2(" hour=%d",dt.Hour()); |
4059 OstTrace1( TRACE_NORMAL, DUP14_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;Hour=%d", dt.Hour() ); |
4012 OstTrace1( TRACE_NORMAL, DUP14_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;Hour=%d", dt.Hour() ); |
4060 TFLOGSTRING2(" minute=%d",dt.Minute()); |
4013 TFLOGSTRING2(" minute=%d",dt.Minute()); |
4061 OstTrace1( TRACE_NORMAL, DUP15_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;Minute=%d", dt.Minute() ); |
4014 OstTrace1( TRACE_NORMAL, DUP15_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;Minute=%d", dt.Minute() ); |
4062 TFLOGSTRING2(" second=%d",dt.Second()); |
4015 TFLOGSTRING2(" second=%d",dt.Second()); |
4063 OstTrace1( TRACE_NORMAL, DUP16_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP, "CMmSmsMessHandler::CheckSCTimestamp;Second=%d", dt.Second() ); |
4016 OstTrace1( TRACE_NORMAL, DUP16_CMMSMSMESSHANDLER_CHECKSCTIMESTAMP_TD, "CMmSmsMessHandler::CheckSCTimestamp;Second=%d", dt.Second() ); |
4064 // debug print |
4017 // debug print |
4065 #endif // _DEBUG |
4018 #endif // _DEBUG |
4066 |
4019 |
4067 if ( simStoredTime == aScTime ) |
4020 if ( simStoredTime == aScTime ) |
4068 { |
4021 { |
4083 TInt CMmSmsMessHandler::UiccUpdateSMSStatus( |
4036 TInt CMmSmsMessHandler::UiccUpdateSMSStatus( |
4084 const TUint8 aRecordId |
4037 const TUint8 aRecordId |
4085 ) |
4038 ) |
4086 { |
4039 { |
4087 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccUpdateSMSStatusReq aRecordId: %d", aRecordId ); |
4040 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccUpdateSMSStatusReq aRecordId: %d", aRecordId ); |
4088 OstTraceExt1( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCUPDATESMSSTATUS, "CMmSmsMessHandler::UiccUpdateSMSStatus;aRecordId=%hhu", aRecordId ); |
4041 OstTraceExt1( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCUPDATESMSSTATUS_TD, "CMmSmsMessHandler::UiccUpdateSMSStatus;aRecordId=%hhu", aRecordId ); |
4089 |
4042 |
4090 // Read parameters from SIM |
4043 // Read parameters from SIM |
4091 // Set parameters for UICC_APPL_CMD_REQ message |
4044 // Set parameters for UICC_APPL_CMD_REQ message |
4092 iRecordId = aRecordId; |
4045 iRecordId = aRecordId; |
4093 TUiccReadLinearFixed params; |
4046 TUiccReadLinearFixed params; |
4118 void CMmSmsMessHandler::UiccUpdateSMSStatusReadSMSResp( |
4071 void CMmSmsMessHandler::UiccUpdateSMSStatusReadSMSResp( |
4119 TInt aStatus, |
4072 TInt aStatus, |
4120 const TDesC8& aFileData ) |
4073 const TDesC8& aFileData ) |
4121 { |
4074 { |
4122 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccReadSMSResp" ); |
4075 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccReadSMSResp" ); |
4123 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCUPDATESMSSTATUSREADSMSRESP, "CMmSmsMessHandler::UiccUpdateSMSStatusReadSMSResp" ); |
4076 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCUPDATESMSSTATUSREADSMSRESP_TD, "CMmSmsMessHandler::UiccUpdateSMSStatusReadSMSResp" ); |
4124 |
4077 |
4125 if ( KErrNone == aStatus ) |
4078 if ( UICC_STATUS_OK == aStatus ) |
4126 { |
4079 { |
4127 if ( 0 != aFileData.Length() ) |
4080 if ( 0 != aFileData.Length() ) |
4128 { |
4081 { |
4129 // Set parameters for UICC_APPL_CMD_REQ message |
4082 // Set parameters for UICC_APPL_CMD_REQ message |
4130 TUiccWriteLinearFixed params; |
4083 TUiccWriteLinearFixed params; |
4182 // ----------------------------------------------------------------------------- |
4135 // ----------------------------------------------------------------------------- |
4183 // |
4136 // |
4184 void CMmSmsMessHandler::UiccUpdateSMSStatusWriteSMSResp( TInt aStatus ) |
4137 void CMmSmsMessHandler::UiccUpdateSMSStatusWriteSMSResp( TInt aStatus ) |
4185 { |
4138 { |
4186 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccUpdateSMSStatusReadSMSResp aStatus: %d", aStatus ); |
4139 TFLOGSTRING2("TSY: CMmSmsMessHandler::UiccUpdateSMSStatusReadSMSResp aStatus: %d", aStatus ); |
4187 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_UICCUPDATESMSSTATUSREADSMSRESP, "CMmSmsMessHandler::UiccUpdateSMSStatusReadSMSResp;aStatus=%d", aStatus ); |
4140 OstTrace1( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_UICCUPDATESMSSTATUSREADSMSRESP_TD, "CMmSmsMessHandler::UiccUpdateSMSStatusReadSMSResp;aStatus=%d", aStatus ); |
4188 |
4141 |
4189 iMessageRouter->Complete( |
4142 iMessageRouter->Complete( |
4190 ECustomSetSimMessageStatusReadIPC, |
4143 ECustomSetSimMessageStatusReadIPC, |
4191 CMmStaticUtility::UICCCSCauseToEpocError( aStatus ) ); |
4144 CMmStaticUtility::UICCCSCauseToEpocError( aStatus ) ); |
4192 |
4145 |
4193 // Update the same flag also in TSY's cache. |
4146 // Update the same flag also in TSY's cache. |
4194 if ( KErrNone == aStatus ) |
4147 if ( UICC_STATUS_OK == aStatus ) |
4195 { |
4148 { |
4196 iSmsCache.SetStorageStatus( iRecordId, RMobileSmsStore::EStoredMessageRead ); |
4149 iSmsCache.SetStorageStatus( iRecordId, RMobileSmsStore::EStoredMessageRead ); |
4197 } |
4150 } |
4198 |
4151 |
4199 } |
4152 } |
4204 // ----------------------------------------------------------------------------- |
4157 // ----------------------------------------------------------------------------- |
4205 // |
4158 // |
4206 TInt CMmSmsMessHandler::UiccGetSmspEntryReq() |
4159 TInt CMmSmsMessHandler::UiccGetSmspEntryReq() |
4207 { |
4160 { |
4208 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccGetSmspEntryReq" ); |
4161 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccGetSmspEntryReq" ); |
4209 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCREADNUMOFSMSPENTRIES, "CMmSmsMessHandler::UiccGetSmspEntryReq" ); |
4162 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCREADNUMOFSMSPENTRIES_TD, "CMmSmsMessHandler::UiccGetSmspEntryReq" ); |
4210 |
4163 |
4211 // Set parameters for UICC_APPL_CMD_REQ message |
4164 // Set parameters for UICC_APPL_CMD_REQ message |
4212 TUiccReadLinearFixed params; |
4165 TUiccReadLinearFixed params; |
4213 params.messHandlerPtr = static_cast<MUiccOperationBase*>( this ); |
4166 params.messHandlerPtr = static_cast<MUiccOperationBase*>( this ); |
4214 params.trId = ETrIdGetSmspEntries; |
4167 params.trId = ETrIdGetSmspEntries; |
4234 // ----------------------------------------------------------------------------- |
4187 // ----------------------------------------------------------------------------- |
4235 // |
4188 // |
4236 TInt CMmSmsMessHandler::UiccStoreSmspEntry( const TDesC8& aFileData ) |
4189 TInt CMmSmsMessHandler::UiccStoreSmspEntry( const TDesC8& aFileData ) |
4237 { |
4190 { |
4238 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccStoreSmspEntry" ); |
4191 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccStoreSmspEntry" ); |
4239 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCSTORESMSPENTRY, "CMmSmsMessHandler::UiccStoreSmspEntry" ); |
4192 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_UICCSTORESMSPENTRY_TD, "CMmSmsMessHandler::UiccStoreSmspEntry" ); |
4240 |
4193 |
4241 TInt ret( KErrNone ); |
4194 TInt ret( KErrNone ); |
4242 TInt dataLength( aFileData.Length() ); |
4195 TInt dataLength( aFileData.Length() ); |
4243 TPtrC8 data( KNullDesC8 ); |
4196 TPtrC8 data( KNullDesC8 ); |
4244 TSmsParameters* smsParam = new ( ELeave ) TSmsParameters(); |
4197 TSmsParameters* smsParam = new ( ELeave ) TSmsParameters(); |
4364 // |
4317 // |
4365 TInt CMmSmsMessHandler::UiccSmsUpdateParameterReq( |
4318 TInt CMmSmsMessHandler::UiccSmsUpdateParameterReq( |
4366 const CMmDataPackage* aDataPackage ) |
4319 const CMmDataPackage* aDataPackage ) |
4367 { |
4320 { |
4368 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccSmsUpdateParameterReq"); |
4321 TFLOGSTRING("TSY: CMmSmsMessHandler::UiccSmsUpdateParameterReq"); |
4369 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_UICCSTORESMSPENTRY, "CMmSmsMessHandler::UiccStoreSmspEntry" ); |
4322 OstTrace0( TRACE_NORMAL, DUP1_CMMSMSMESSHANDLER_UICCSTORESMSPENTRY_TD, "CMmSmsMessHandler::UiccStoreSmspEntry" ); |
4370 |
4323 |
4371 RMobileSmsMessaging::TMobileSmspEntryV1* smsParameters; |
4324 RMobileSmsMessaging::TMobileSmspEntryV1* smsParameters; |
4372 // Unpack data |
4325 // Unpack data |
4373 aDataPackage->UnPackData( &smsParameters ); |
4326 aDataPackage->UnPackData( &smsParameters ); |
4374 |
4327 |
4468 params.fileData.Append( smspBuffer ); |
4421 params.fileData.Append( smspBuffer ); |
4469 |
4422 |
4470 return iMmUiccMessHandler->CreateUiccApplCmdReq( params ); |
4423 return iMmUiccMessHandler->CreateUiccApplCmdReq( params ); |
4471 } |
4424 } |
4472 |
4425 |
4426 |
|
4427 // ----------------------------------------------------------------------------- |
|
4428 // CMmSmsMessHandler::SmsResourceConfInd |
|
4429 // ----------------------------------------------------------------------------- |
|
4430 // |
|
4431 void CMmSmsMessHandler::SmsResourceConfInd( const TIsiReceiveC& aIsiMsg ) |
|
4432 { |
|
4433 TFLOGSTRING( "TSY: CMmSmsMessHandler::SmsResourceConfInd" ); |
|
4434 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSRESOURCECONFIND_TD, "CMmSmsMessHandler::SmsResourceConfInd" ); |
|
4435 |
|
4436 // To check The receive indication is for startup or reconfiguration |
|
4437 if ( SMS_RES_CONF_STARTUP == aIsiMsg.Get8bit( |
|
4438 ISI_HEADER_SIZE + SMS_RESOURCE_CONF_IND_OFFSET_CONFSTATUS ) ) |
|
4439 { |
|
4440 TUint sbStartOffset( 0 ); |
|
4441 // Check if resource control is requested for MO SM. |
|
4442 if ( KErrNone == aIsiMsg.FindSubBlockOffsetById( |
|
4443 ISI_HEADER_SIZE + SIZE_SMS_RESOURCE_CONF_IND, |
|
4444 SMS_SB_RESOURCE_CONF_REQUIRED, |
|
4445 EIsiSubBlockTypeId16Len16, |
|
4446 sbStartOffset ) ) |
|
4447 { |
|
4448 TUint16 resource( aIsiMsg.Get16bit( |
|
4449 sbStartOffset + SMS_SB_RESOURCE_CONF_REQUIRED_OFFSET_RESPP ) ); |
|
4450 // Check MO SMS control is supported by SIM service table |
|
4451 if ( SMS_RES_ID_CONF_MO_SM_INIT == resource && |
|
4452 NULL == iPhonetReceiver->SatMessHandler() ) |
|
4453 { |
|
4454 SmsResourceConfReq(); |
|
4455 } |
|
4456 } |
|
4457 } |
|
4458 } |
|
4459 |
|
4460 |
|
4461 // ----------------------------------------------------------------------------- |
|
4462 // CMmSmsMessHandler::SmsResourceConfReq |
|
4463 // ----------------------------------------------------------------------------- |
|
4464 // |
|
4465 void CMmSmsMessHandler::SmsResourceConfReq() |
|
4466 { |
|
4467 TFLOGSTRING("TSY: CMmSmsMessHandler::SmsResourceConfReq"); |
|
4468 OstTrace0( TRACE_NORMAL, CMMSMSMESSHANDLER_SMSRESOURCECONFREQ_TD, "CMmSmsMessHandler::SmsResourceConfReq" ); |
|
4469 |
|
4470 TBuf8<SIZE_SMS_SB_RESOURCE_CONF> data; |
|
4471 TIsiSubBlock ResourceConfReqSb( |
|
4472 data, |
|
4473 SMS_SB_RESOURCE_CONF, |
|
4474 EIsiSubBlockTypeId16Len16 ); |
|
4475 |
|
4476 // set SMS_RESOURCE_IDS to SMS_RES_ID_MO_SM_INIT_DISABLE |
|
4477 data.Append( KSmsResIdMoSmInitDisable >> KShift8 ); |
|
4478 data.Append( KSmsResIdMoSmInitDisable ); |
|
4479 |
|
4480 // set SMS_RESOURCE_IDS_MASK to SMS_RES_ID_MASK_MO_SM_INIT |
|
4481 data.Append( SMS_RES_ID_MASK_MO_SM_INIT >> KShift8 ); |
|
4482 data.Append( SMS_RES_ID_MASK_MO_SM_INIT ); |
|
4483 |
|
4484 // Create SMS_RESOURCE_CONF_REQ message |
|
4485 TIsiSend isiMsg( iPhoNetSender->SendBufferDes() ); |
|
4486 isiMsg.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_SMS ); |
|
4487 isiMsg.Set8bit( |
|
4488 ISI_HEADER_SIZE + SMS_RESOURCE_CONF_REQ_OFFSET_TRANSID, |
|
4489 0 ); |
|
4490 isiMsg.Set8bit( |
|
4491 ISI_HEADER_SIZE + SMS_RESOURCE_CONF_REQ_OFFSET_MESSAGEID, |
|
4492 SMS_RESOURCE_CONF_REQ ); |
|
4493 isiMsg.Set8bit( |
|
4494 ISI_HEADER_SIZE + SMS_RESOURCE_CONF_REQ_OFFSET_CONFOPERATION, |
|
4495 SMS_RES_CONF_SET ); |
|
4496 isiMsg.Set8bit( |
|
4497 ISI_HEADER_SIZE + SMS_RESOURCE_CONF_REQ_OFFSET_SUBBLOCKCOUNT, |
|
4498 1 ); |
|
4499 |
|
4500 isiMsg.CopyData( |
|
4501 ISI_HEADER_SIZE + SIZE_SMS_RESOURCE_CONF_REQ, |
|
4502 ResourceConfReqSb.CompleteSubBlock() ); |
|
4503 |
|
4504 iPhoNetSender->Send( isiMsg.Complete() ); |
|
4505 } |
|
4506 |
|
4473 // End of File |
4507 // End of File |