diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyserverplugins/common_tsy/commontsy/src/mmsms/cmmsmsgsmext.cpp --- a/telephonyserverplugins/common_tsy/commontsy/src/mmsms/cmmsmsgsmext.cpp Mon May 03 13:37:20 2010 +0300 +++ b/telephonyserverplugins/common_tsy/commontsy/src/mmsms/cmmsmsgsmext.cpp Thu May 06 15:10:38 2010 +0100 @@ -1,266 +1,266 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - - - -// INCLUDE FILES -#include // error values -#include -#include "cmmsmsgsmext.h" -#include -#include -#include "cmmphonetsy.h" -#include - -// ======== MEMBER FUNCTIONS ======== - -CMmSmsGsmExt::CMmSmsGsmExt() - { - } - -CMmSmsGsmExt* CMmSmsGsmExt::NewL() - { - CMmSmsGsmExt* aSmsGsmExt = new ( ELeave ) CMmSmsGsmExt(); - - return aSmsGsmExt; - } - -CMmSmsGsmExt::~CMmSmsGsmExt() - { - } - -// --------------------------------------------------------------------------- -// CMmSmsGsmExt::CompleteReceiveMessage -// This method takes reception of incoming unstored SMS -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TInt CMmSmsGsmExt::CompleteReceiveMessage( - TSmsMsg* aSmsMsg, - TAny* aReceiveMessageParamsPtr, - TDes8* aReceiveMessagePduPtr ) - { - RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg* msgAttPckg = - reinterpret_cast< RMobileSmsMessaging:: - TMobileSmsReceiveAttributesV1Pckg* > ( aReceiveMessageParamsPtr ); - RMobileSmsMessaging::TMobileSmsReceiveAttributesV1& msgAttributes = - ( *msgAttPckg )(); - - // This information is available - msgAttributes.iFlags = ( RMobileSmsMessaging::KSmsDataFormat | - RMobileSmsMessaging::KGsmServiceCentre | - RMobileSmsMessaging::KIncomingStatus ); - - // Message type - msgAttributes.iDataFormat = RMobileSmsMessaging::EFormatGsmTpdu; - - // Lets handle Service Centre address - msgAttributes.iGsmServiceCentre.iTypeOfNumber = aSmsMsg->iMobileScTON; - msgAttributes.iGsmServiceCentre.iNumberPlan = aSmsMsg->iMobileScNPI; - msgAttributes.iGsmServiceCentre.iTelNumber.Copy( - aSmsMsg->iServiceCentre ); - - // Copy SMS TPDU - aReceiveMessagePduPtr->Copy( aSmsMsg->iSmsMsg ); - - if ( KSimSmsNotPresent == aSmsMsg->iMessageStatus ) - { -TFLOGSTRING("TSY: CMmSmsGsmExt::CompleteReceiveMessage. Class 0, 1 or 3 message"); - - // SMS message that is routed directly to the TSY. This message is not - // acknowledge to the network. - msgAttributes.iStatus = - RMobileSmsMessaging::EMtMessageUnstoredClientAck; - // Reset store information - msgAttributes.iStore.SetLength( 0 ); - msgAttributes.iStoreIndex = 0; - } - else if ( aSmsMsg->iSmsClass2 && ( 0 != aSmsMsg->iLocation ) ) - { -TFLOGSTRING("TSY: CMmSmsGsmExt::CompleteReceiveMessage. Class 2 message stored in SIM"); - // Class 2 SMS message that is stored in SIM. This message is - // acknowledged to the network by SMS server. - msgAttributes.iStatus = RMobileSmsMessaging::EMtMessageUnknownStatus; - // Add storage information - msgAttributes.iFlags |= RMobileSmsMessaging::KStorageLocation; - msgAttributes.iStore = KETelIccSmsStore; - msgAttributes.iStoreIndex = aSmsMsg->iLocation; - } - else - { -TFLOGSTRING("TSY: CMmSmsGsmExt::CompleteReceiveMessage. Class 2 message not stored in SIM"); - // Class 2 SMS message that is not stored in SIM. This message is - // acknowledged to the network by SMS server. - msgAttributes.iStatus = - RMobileSmsMessaging::EMtMessageUnstoredPhoneAck; - - // Reset store information - msgAttributes.iStore.SetLength( 0 ); - msgAttributes.iStoreIndex = 0; - } - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CMmSmsGsmExt::MessageStoreInfo -// This method set attributes values to the store info -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TInt CMmSmsGsmExt::MessageStoreInfo( - TAny* aGetMessageStoreInfoPtr, - TInt aTotalEntries, - TInt aUsedEntries ) - { - RMobileSmsStore::TMobilePhoneStoreInfoV1Pckg* storeInfoPckg = - reinterpret_cast< RMobileSmsStore::TMobilePhoneStoreInfoV1Pckg* > - ( aGetMessageStoreInfoPtr ); - RMobileSmsStore::TMobilePhoneStoreInfoV1& storeInfo = - ( *storeInfoPckg )(); - - storeInfo.iName = KETelIccSmsStore; - storeInfo.iType = RMobilePhoneStore::EShortMessageStore; - storeInfo.iTotalEntries = aTotalEntries; - storeInfo.iUsedEntries = aUsedEntries; - storeInfo.iCaps = KSmsMessageStoreInfoCaps; - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CMmSmsGsmExt::StoreInfo -// This method set attributes values to the sms store info -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TInt CMmSmsGsmExt::StoreInfo( - TAny* aGetInfoInfoPtr, - TInt aTotalEntries, - TInt aUsedEntries ) - { - RMobileSmsStore::TMobilePhoneStoreInfoV1Pckg* storeInfoPckg = - reinterpret_cast< RMobileSmsStore::TMobilePhoneStoreInfoV1Pckg* > - ( aGetInfoInfoPtr ); - RMobileSmsStore::TMobilePhoneStoreInfoV1& storeInfo = - ( *storeInfoPckg )(); - - storeInfo.iName = KETelIccSmsStore; - storeInfo.iType = RMobilePhoneStore::EShortMessageStore; - storeInfo.iTotalEntries = aTotalEntries; - storeInfo.iUsedEntries = aUsedEntries; - storeInfo.iCaps = KSmsStoreInfoCaps; - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CMmSmsGsmExt::CompleteReadAllSmsPhase1L -// This method read the list, store its content and then return -// size of this buffer to client. This methos runs until TSY's -// internal SMS storage is empty -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TInt CMmSmsGsmExt::CompleteReadAllSmsPhase1L( - CArrayPtrFlat* aSmsListArray, - RMobilePhone::TClientId aReadAllId, - CArrayPtrFlat* aSmsReadAllArray, - TInt* aReadAllBufSizePtr ) - { -TFLOGSTRING("TSY: CMmSmsGsmExt::CompleteReadAllSmsPhase1L"); - // read the list, store its content and then return size of this - // buffer to client - CMobilePhoneGsmSmsList* list = CMobilePhoneGsmSmsList::NewL(); - CleanupStack::PushL( list ); - - RMobileSmsStore::TMobileGsmSmsEntryV1 entry; - - for ( TInt i = 0; i < aSmsListArray->Count(); i++ ) - { - TSmsMsg* smsMsg = aSmsListArray->At( i ); - - // Lets handle Service Centre address - entry.iServiceCentre.iTypeOfNumber = smsMsg->iMobileScTON; - entry.iServiceCentre.iNumberPlan = smsMsg->iMobileScNPI; - entry.iServiceCentre.iTelNumber.Copy( smsMsg->iServiceCentre ); - - // Lets copy location index - entry.iIndex = smsMsg->iLocation; - - // TMobileSmsFixedEntryV1 information - entry.iMsgData.Copy( smsMsg->iSmsMsg ); - - switch ( smsMsg->iMessageStatus ) - { - case KSimSmsMoNotSent: //0x07 - entry.iMsgStatus = RMobileSmsStore::EStoredMessageUnsent; - break; - case KSimSmsStatusReportReqNotReceived: //0x0D - case KSimSmsMoSent: //0x05 - entry.iMsgStatus = RMobileSmsStore::EStoredMessageSent; - break; - case KSimSmsMtRead: //0x01 - entry.iMsgStatus = RMobileSmsStore::EStoredMessageRead; - break; - case KSimSmsMtNotRead: //0x03 - entry.iMsgStatus = RMobileSmsStore::EStoredMessageUnread; - break; - case KSimSmsStatusReportReqReceivedNotStored: //0x15 - case KSimSmsStatusReportReqReceivedStored: //0x1D - entry.iMsgStatus = RMobileSmsStore::EStoredMessageDelivered; - break; - default: - entry.iMsgStatus = - RMobileSmsStore::EStoredMessageUnknownStatus; - break; - } - - list->AddEntryL( entry ); - - // Delete handled SMS message from TSY's internal store - delete smsMsg; // delete object - } - - // Store the streamed list and the client ID - CListReadAllAttempt* read = CListReadAllAttempt::NewL( &aReadAllId ); - CleanupStack::PushL( read ); - - read->iListBuf = list->StoreLC(); - CleanupStack::Pop(); // pop the CBufFlat allocated by StoreLC - - aSmsReadAllArray->AppendL( read ); - CleanupStack::Pop(); // pop the CListReadAllAttempt - - // return the CBufFlat’s size to client - *aReadAllBufSizePtr=( read->iListBuf )->Size(); - - CleanupStack::PopAndDestroy(list); - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CMmSmsGsmExt::GetSupportedEntry -// Return supported entry -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TInt CMmSmsGsmExt::GetSupportedEntry() - { - return RMobileSmsStore::KETelMobileGsmSmsEntryV1; - } - -// End of File +// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + + + +// INCLUDE FILES +#include // error values +#include +#include "cmmsmsgsmext.h" +#include +#include +#include "cmmphonetsy.h" +#include + +// ======== MEMBER FUNCTIONS ======== + +CMmSmsGsmExt::CMmSmsGsmExt() + { + } + +CMmSmsGsmExt* CMmSmsGsmExt::NewL() + { + CMmSmsGsmExt* aSmsGsmExt = new ( ELeave ) CMmSmsGsmExt(); + + return aSmsGsmExt; + } + +CMmSmsGsmExt::~CMmSmsGsmExt() + { + } + +// --------------------------------------------------------------------------- +// CMmSmsGsmExt::CompleteReceiveMessage +// This method takes reception of incoming unstored SMS +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +TInt CMmSmsGsmExt::CompleteReceiveMessage( + TSmsMsg* aSmsMsg, + TAny* aReceiveMessageParamsPtr, + TDes8* aReceiveMessagePduPtr ) + { + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg* msgAttPckg = + reinterpret_cast< RMobileSmsMessaging:: + TMobileSmsReceiveAttributesV1Pckg* > ( aReceiveMessageParamsPtr ); + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1& msgAttributes = + ( *msgAttPckg )(); + + // This information is available + msgAttributes.iFlags = ( RMobileSmsMessaging::KSmsDataFormat | + RMobileSmsMessaging::KGsmServiceCentre | + RMobileSmsMessaging::KIncomingStatus ); + + // Message type + msgAttributes.iDataFormat = RMobileSmsMessaging::EFormatGsmTpdu; + + // Lets handle Service Centre address + msgAttributes.iGsmServiceCentre.iTypeOfNumber = aSmsMsg->iMobileScTON; + msgAttributes.iGsmServiceCentre.iNumberPlan = aSmsMsg->iMobileScNPI; + msgAttributes.iGsmServiceCentre.iTelNumber.Copy( + aSmsMsg->iServiceCentre ); + + // Copy SMS TPDU + aReceiveMessagePduPtr->Copy( aSmsMsg->iSmsMsg ); + + if ( KSimSmsNotPresent == aSmsMsg->iMessageStatus ) + { +TFLOGSTRING("TSY: CMmSmsGsmExt::CompleteReceiveMessage. Class 0, 1 or 3 message"); + + // SMS message that is routed directly to the TSY. This message is not + // acknowledge to the network. + msgAttributes.iStatus = + RMobileSmsMessaging::EMtMessageUnstoredClientAck; + // Reset store information + msgAttributes.iStore.SetLength( 0 ); + msgAttributes.iStoreIndex = 0; + } + else if ( aSmsMsg->iSmsClass2 && ( 0 != aSmsMsg->iLocation ) ) + { +TFLOGSTRING("TSY: CMmSmsGsmExt::CompleteReceiveMessage. Class 2 message stored in SIM"); + // Class 2 SMS message that is stored in SIM. This message is + // acknowledged to the network by SMS server. + msgAttributes.iStatus = RMobileSmsMessaging::EMtMessageUnknownStatus; + // Add storage information + msgAttributes.iFlags |= RMobileSmsMessaging::KStorageLocation; + msgAttributes.iStore = KETelIccSmsStore; + msgAttributes.iStoreIndex = aSmsMsg->iLocation; + } + else + { +TFLOGSTRING("TSY: CMmSmsGsmExt::CompleteReceiveMessage. Class 2 message not stored in SIM"); + // Class 2 SMS message that is not stored in SIM. This message is + // acknowledged to the network by SMS server. + msgAttributes.iStatus = + RMobileSmsMessaging::EMtMessageUnstoredPhoneAck; + + // Reset store information + msgAttributes.iStore.SetLength( 0 ); + msgAttributes.iStoreIndex = 0; + } + + return KErrNone; + } + +// --------------------------------------------------------------------------- +// CMmSmsGsmExt::MessageStoreInfo +// This method set attributes values to the store info +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +TInt CMmSmsGsmExt::MessageStoreInfo( + TAny* aGetMessageStoreInfoPtr, + TInt aTotalEntries, + TInt aUsedEntries ) + { + RMobileSmsStore::TMobilePhoneStoreInfoV1Pckg* storeInfoPckg = + reinterpret_cast< RMobileSmsStore::TMobilePhoneStoreInfoV1Pckg* > + ( aGetMessageStoreInfoPtr ); + RMobileSmsStore::TMobilePhoneStoreInfoV1& storeInfo = + ( *storeInfoPckg )(); + + storeInfo.iName = KETelIccSmsStore; + storeInfo.iType = RMobilePhoneStore::EShortMessageStore; + storeInfo.iTotalEntries = aTotalEntries; + storeInfo.iUsedEntries = aUsedEntries; + storeInfo.iCaps = KSmsMessageStoreInfoCaps; + + return KErrNone; + } + +// --------------------------------------------------------------------------- +// CMmSmsGsmExt::StoreInfo +// This method set attributes values to the sms store info +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +TInt CMmSmsGsmExt::StoreInfo( + TAny* aGetInfoInfoPtr, + TInt aTotalEntries, + TInt aUsedEntries ) + { + RMobileSmsStore::TMobilePhoneStoreInfoV1Pckg* storeInfoPckg = + reinterpret_cast< RMobileSmsStore::TMobilePhoneStoreInfoV1Pckg* > + ( aGetInfoInfoPtr ); + RMobileSmsStore::TMobilePhoneStoreInfoV1& storeInfo = + ( *storeInfoPckg )(); + + storeInfo.iName = KETelIccSmsStore; + storeInfo.iType = RMobilePhoneStore::EShortMessageStore; + storeInfo.iTotalEntries = aTotalEntries; + storeInfo.iUsedEntries = aUsedEntries; + storeInfo.iCaps = KSmsStoreInfoCaps; + + return KErrNone; + } + +// --------------------------------------------------------------------------- +// CMmSmsGsmExt::CompleteReadAllSmsPhase1L +// This method read the list, store its content and then return +// size of this buffer to client. This methos runs until TSY's +// internal SMS storage is empty +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +TInt CMmSmsGsmExt::CompleteReadAllSmsPhase1L( + CArrayPtrFlat* aSmsListArray, + RMobilePhone::TClientId aReadAllId, + CArrayPtrFlat* aSmsReadAllArray, + TInt* aReadAllBufSizePtr ) + { +TFLOGSTRING("TSY: CMmSmsGsmExt::CompleteReadAllSmsPhase1L"); + // read the list, store its content and then return size of this + // buffer to client + CMobilePhoneGsmSmsList* list = CMobilePhoneGsmSmsList::NewL(); + CleanupStack::PushL( list ); + + RMobileSmsStore::TMobileGsmSmsEntryV1 entry; + + for ( TInt i = 0; i < aSmsListArray->Count(); i++ ) + { + TSmsMsg* smsMsg = aSmsListArray->At( i ); + + // Lets handle Service Centre address + entry.iServiceCentre.iTypeOfNumber = smsMsg->iMobileScTON; + entry.iServiceCentre.iNumberPlan = smsMsg->iMobileScNPI; + entry.iServiceCentre.iTelNumber.Copy( smsMsg->iServiceCentre ); + + // Lets copy location index + entry.iIndex = smsMsg->iLocation; + + // TMobileSmsFixedEntryV1 information + entry.iMsgData.Copy( smsMsg->iSmsMsg ); + + switch ( smsMsg->iMessageStatus ) + { + case KSimSmsMoNotSent: //0x07 + entry.iMsgStatus = RMobileSmsStore::EStoredMessageUnsent; + break; + case KSimSmsStatusReportReqNotReceived: //0x0D + case KSimSmsMoSent: //0x05 + entry.iMsgStatus = RMobileSmsStore::EStoredMessageSent; + break; + case KSimSmsMtRead: //0x01 + entry.iMsgStatus = RMobileSmsStore::EStoredMessageRead; + break; + case KSimSmsMtNotRead: //0x03 + entry.iMsgStatus = RMobileSmsStore::EStoredMessageUnread; + break; + case KSimSmsStatusReportReqReceivedNotStored: //0x15 + case KSimSmsStatusReportReqReceivedStored: //0x1D + entry.iMsgStatus = RMobileSmsStore::EStoredMessageDelivered; + break; + default: + entry.iMsgStatus = + RMobileSmsStore::EStoredMessageUnknownStatus; + break; + } + + list->AddEntryL( entry ); + + // Delete handled SMS message from TSY's internal store + delete smsMsg; // delete object + } + + // Store the streamed list and the client ID + CListReadAllAttempt* read = CListReadAllAttempt::NewL( &aReadAllId ); + CleanupStack::PushL( read ); + + read->iListBuf = list->StoreLC(); + CleanupStack::Pop(); // pop the CBufFlat allocated by StoreLC + + aSmsReadAllArray->AppendL( read ); + CleanupStack::Pop(); // pop the CListReadAllAttempt + + // return the CBufFlat’s size to client + *aReadAllBufSizePtr=( read->iListBuf )->Size(); + + CleanupStack::PopAndDestroy(list); + + return KErrNone; + } + +// --------------------------------------------------------------------------- +// CMmSmsGsmExt::GetSupportedEntry +// Return supported entry +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +TInt CMmSmsGsmExt::GetSupportedEntry() + { + return RMobileSmsStore::KETelMobileGsmSmsEntryV1; + } + +// End of File