diff -r 6b1d113cdff3 -r 6638e7f4bd8f smsprotocols/smsstack/smsprot/Inc/smspread.h --- a/smsprotocols/smsstack/smsprot/Inc/smspread.h Mon May 03 13:37:20 2010 +0300 +++ b/smsprotocols/smsstack/smsprot/Inc/smspread.h Thu May 06 15:10:38 2010 +0100 @@ -1,219 +1,219 @@ -// Copyright (c) 1997-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: -// - -/** - @file - @internalAll -*/ - - -#ifndef __SMSPREAD_H__ -#define __SMSPREAD_H__ - -#include -#include "smspcomm.h" -#include -#include "smsuact.h" -#include -#include "smspproc.h" -#include "smspenum.h" // for TGsmSmsSlot definition - - -class CFacadeSmsReassemblyStore; -class CSmsSegmentationStore; -class RFs; -class CSmsEventLogger; -class CSmspReceiveMode; -class CSmsEventLogger; -class TLogSmsPduData; -class TSmsSettings; -class CSmsPduReadTimer; - - -/** - * Logs a CSmsMessage - * @internalComponent - */ -class CSmsPDUReadLogger : public CSmsuActiveBase - { - public: - - static CSmsPDUReadLogger* NewL(RFs& aFs, TInt aPriority); - ~CSmsPDUReadLogger(); - void ChangeOrAddLogEvent(CSmsMessage& aSmsMessage, const TLogSmsPduData& aSmsPDUData, const TTime* aTime, TRequestStatus& aStatus); - - private: - - CSmsPDUReadLogger(TInt aPriority); - void ConstructL(RFs& aFs); - - void AddLogEvent(); - void GetLogEvent(); - void ChangeLogEvent(); - void DoRunL(); - void DoCancel(); - void Complete(TInt aStatus); - - private: - - enum TSmsPDUReadLoggerState - { - ESmsPDUReadLoggerIdle, //< Idle - ESmsPDUReadLoggerGet, //< Getting Log Event - ESmsPDUReadLoggerChange,//< Changing Log Event - ESmsPDUReadLoggerAdd //< Adding Log Event - } iState; - - CSmsEventLogger* iLogger; //< Used for Logging the CSmsMessage - CSmsMessage* iSmsMessage; //< The Message to Log. Pointer not "owned" by this class - TTime iTime; - const TTime* iTimePtr; - const TLogSmsPduData* iSmsPDUData; //< Data to add to the Log Event. Pointer not "owned" by this class - }; - - -/** - * Class CSmsStoreRead for setting TSY receive mode and receiving new incoming - * message from the phone side - * @internalComponent - */ -class CSmsPDURead : public CSmsuActiveBase - { -friend class CSmsPduReadTimer; -public: - static CSmsPDURead* NewL(MSmsComm& aSmsComm, - const TSmsSettings& aSmsSettings, - RMobileSmsMessaging& aSmsMessaging, - CFacadeSmsReassemblyStore& aReassemblyStore, - CSmsSegmentationStore& aSegmentationStore, - const RMobileSmsMessaging::TMobileSmsCapsV1& aMobileSmsCaps, - TInt aPriority, - CSmspReceiveMode& aSmspReceiveMode, - CSmsMonitorDiskSpace& aSmsMonitorDiskSpace); - ~CSmsPDURead(); - - void Start(); - void ResumeSmsReception(); - - const CSmsMessage* CurrentMessage() {return (iPduProcessor ? iPduProcessor->SmsMessage() : NULL);} - -protected: - void DoRunL(); - void DoCancel(); - -private: - enum TRpErrorCodeIndex - { - // Only error conditions which can be configured to be negatively acknowledged - // are enumerated. - // MemoryCapacityExceeded is not enumerated, as this condition will always be - // negatively acknowledged. - EInvalidShortMsgTransferReferenceValue = 0, - ESemanticallyIncorrectMessage = 1, - EInvalidMandatoryInformaton = 2, - EMessageTypeNonExistent = 3, - EMessageNotCompatibleWithShortMessageProtocolState = 4, - EInformationElementNonExistentOrNotImplemented = 5, - EProtocolErrorUnspecified = 6, - EUndefinedIndex = 7 - }; - -private: - CSmsPDURead(MSmsComm& aSmsComm, - const TSmsSettings& aSmsSettings, - RMobileSmsMessaging& aSmsMessaging, - CFacadeSmsReassemblyStore& aReassemblyStore, - CSmsSegmentationStore& aSegmentationStore, - const RMobileSmsMessaging::TMobileSmsCapsV1& aMobileSmsCaps, - TInt aPriority, - CSmspReceiveMode& aSmspReceiveMode, - CSmsMonitorDiskSpace& aSmsMonitorDiskSpace); - - void ConstructL(); - void Receive(); - void ProcessPDUL(); - void AddLogEvent(); - void DoEncodeDeliverReportL(); - void SendDeliverReport(); - TBool IsSupported() const; - void Complete(TInt aError); - - void SetErrorCodeStatus(enum TRpErrorCodeIndex aIndex, TBool aValue); - TBool GetErrorCodeStatus(enum TRpErrorCodeIndex aIndex); - - void ReadConfigurableSmsSettingsL(); - TBool MapRpErrorToIndex(TInt aRpErrorCode, TRpErrorCodeIndex& aIndex); - - void MakeStateTransitionBasedOnErrorCode(); - - -private: - enum TSmsPDUReadState - { - ESmsPDUReadIdle, //< Idle - ESmsPDUReadSetReceiveMode, //< Setting receive mode - ESmsPDUReadResumeReception, //< Resuming reception of SMSs - ESmsPDUReadWaitingForPDU, //< Waiting new incoming message - ESmsPDUReadProcessingPDU, //< Performing various async procesing - - ESmsPDUReadForwardingPDUToClient, - ESmsPDUReadNotForwardingPDUToClient, - - ESmsPDUReadSystemOutOfMemorySendNegativeAck, - ESmsPDUReadAcceptValidPduSendPositiveAck, - ESmsPDUReadAbsorbInvalidPduSendPositiveAck, - ESmsPDUReadInvalidPDUSendNegativeAck, - - ESmsPDUReadLogging, - ESmsPDUWaitTimerAfterOOM, - ESmsPDUWaitingForDiskMonitor, - ESmsPDUReadAbsorbValidPduSendPositiveAck - }; - -private: - TSmsPDUReadState iState; //< The current state of the state machine - - RMobileSmsMessaging& iSmsMessaging; - RMobileSmsMessaging::TMobileSmsGsmTpdu iMsgData; //< Pdu buffer - RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 iMsgReceiveAttributes; //< Class for received message attributes - RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg iMsgReceiveAttributesPckg; //< Package for iMsgReceiveAttributes - - TGsmSmsSlot iSlot; // Current iSlot entry - - CSmsPDUProcessor* iPduProcessor; - - MSmsComm& iSmsComm; - const TSmsSettings& iSmsSettings; - CFacadeSmsReassemblyStore& iReassemblyStore; - CSmsSegmentationStore& iSegmentationStore; - const RMobileSmsMessaging::TMobileSmsCapsV1& iMobileSmsCaps; - TGsmSms iDeliverReport; - - CSmsPDUReadLogger* iLogger; - - CSmspReceiveMode& iReceiveMode; // a reference to owner class's instance - RTimer iOOMTimer; - CSmsMonitorDiskSpace& iSmsMonitorDiskSpace; // a reference to the iSmsMonitorDiskSpace object - - TUint8 iRpErrorCodesSupported; - TBool iConfigAutomaticDeletionForClass2; - TBool iConfigDiscardingType0Class2; - TBool iConfigDiscardingType0Class0; - - TBool iSmsReceptionSupended; - TBool iDelayedResumeSmsReceptionRequired; - }; - -#endif // !defined __SMSPREAD_H__ +// Copyright (c) 1997-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: +// + +/** + @file + @internalAll +*/ + + +#ifndef __SMSPREAD_H__ +#define __SMSPREAD_H__ + +#include +#include "smspcomm.h" +#include +#include "smsuact.h" +#include +#include "smspproc.h" +#include "smspenum.h" // for TGsmSmsSlot definition + + +class CFacadeSmsReassemblyStore; +class CSmsSegmentationStore; +class RFs; +class CSmsEventLogger; +class CSmspReceiveMode; +class CSmsEventLogger; +class TLogSmsPduData; +class TSmsSettings; +class CSmsPduReadTimer; + + +/** + * Logs a CSmsMessage + * @internalComponent + */ +class CSmsPDUReadLogger : public CSmsuActiveBase + { + public: + + static CSmsPDUReadLogger* NewL(RFs& aFs, TInt aPriority); + ~CSmsPDUReadLogger(); + void ChangeOrAddLogEvent(CSmsMessage& aSmsMessage, const TLogSmsPduData& aSmsPDUData, const TTime* aTime, TRequestStatus& aStatus); + + private: + + CSmsPDUReadLogger(TInt aPriority); + void ConstructL(RFs& aFs); + + void AddLogEvent(); + void GetLogEvent(); + void ChangeLogEvent(); + void DoRunL(); + void DoCancel(); + void Complete(TInt aStatus); + + private: + + enum TSmsPDUReadLoggerState + { + ESmsPDUReadLoggerIdle, //< Idle + ESmsPDUReadLoggerGet, //< Getting Log Event + ESmsPDUReadLoggerChange,//< Changing Log Event + ESmsPDUReadLoggerAdd //< Adding Log Event + } iState; + + CSmsEventLogger* iLogger; //< Used for Logging the CSmsMessage + CSmsMessage* iSmsMessage; //< The Message to Log. Pointer not "owned" by this class + TTime iTime; + const TTime* iTimePtr; + const TLogSmsPduData* iSmsPDUData; //< Data to add to the Log Event. Pointer not "owned" by this class + }; + + +/** + * Class CSmsStoreRead for setting TSY receive mode and receiving new incoming + * message from the phone side + * @internalComponent + */ +class CSmsPDURead : public CSmsuActiveBase + { +friend class CSmsPduReadTimer; +public: + static CSmsPDURead* NewL(MSmsComm& aSmsComm, + const TSmsSettings& aSmsSettings, + RMobileSmsMessaging& aSmsMessaging, + CFacadeSmsReassemblyStore& aReassemblyStore, + CSmsSegmentationStore& aSegmentationStore, + const RMobileSmsMessaging::TMobileSmsCapsV1& aMobileSmsCaps, + TInt aPriority, + CSmspReceiveMode& aSmspReceiveMode, + CSmsMonitorDiskSpace& aSmsMonitorDiskSpace); + ~CSmsPDURead(); + + void Start(); + void ResumeSmsReception(); + + const CSmsMessage* CurrentMessage() {return (iPduProcessor ? iPduProcessor->SmsMessage() : NULL);} + +protected: + void DoRunL(); + void DoCancel(); + +private: + enum TRpErrorCodeIndex + { + // Only error conditions which can be configured to be negatively acknowledged + // are enumerated. + // MemoryCapacityExceeded is not enumerated, as this condition will always be + // negatively acknowledged. + EInvalidShortMsgTransferReferenceValue = 0, + ESemanticallyIncorrectMessage = 1, + EInvalidMandatoryInformaton = 2, + EMessageTypeNonExistent = 3, + EMessageNotCompatibleWithShortMessageProtocolState = 4, + EInformationElementNonExistentOrNotImplemented = 5, + EProtocolErrorUnspecified = 6, + EUndefinedIndex = 7 + }; + +private: + CSmsPDURead(MSmsComm& aSmsComm, + const TSmsSettings& aSmsSettings, + RMobileSmsMessaging& aSmsMessaging, + CFacadeSmsReassemblyStore& aReassemblyStore, + CSmsSegmentationStore& aSegmentationStore, + const RMobileSmsMessaging::TMobileSmsCapsV1& aMobileSmsCaps, + TInt aPriority, + CSmspReceiveMode& aSmspReceiveMode, + CSmsMonitorDiskSpace& aSmsMonitorDiskSpace); + + void ConstructL(); + void Receive(); + void ProcessPDUL(); + void AddLogEvent(); + void DoEncodeDeliverReportL(); + void SendDeliverReport(); + TBool IsSupported() const; + void Complete(TInt aError); + + void SetErrorCodeStatus(enum TRpErrorCodeIndex aIndex, TBool aValue); + TBool GetErrorCodeStatus(enum TRpErrorCodeIndex aIndex); + + void ReadConfigurableSmsSettingsL(); + TBool MapRpErrorToIndex(TInt aRpErrorCode, TRpErrorCodeIndex& aIndex); + + void MakeStateTransitionBasedOnErrorCode(); + + +private: + enum TSmsPDUReadState + { + ESmsPDUReadIdle, //< Idle + ESmsPDUReadSetReceiveMode, //< Setting receive mode + ESmsPDUReadResumeReception, //< Resuming reception of SMSs + ESmsPDUReadWaitingForPDU, //< Waiting new incoming message + ESmsPDUReadProcessingPDU, //< Performing various async procesing + + ESmsPDUReadForwardingPDUToClient, + ESmsPDUReadNotForwardingPDUToClient, + + ESmsPDUReadSystemOutOfMemorySendNegativeAck, + ESmsPDUReadAcceptValidPduSendPositiveAck, + ESmsPDUReadAbsorbInvalidPduSendPositiveAck, + ESmsPDUReadInvalidPDUSendNegativeAck, + + ESmsPDUReadLogging, + ESmsPDUWaitTimerAfterOOM, + ESmsPDUWaitingForDiskMonitor, + ESmsPDUReadAbsorbValidPduSendPositiveAck + }; + +private: + TSmsPDUReadState iState; //< The current state of the state machine + + RMobileSmsMessaging& iSmsMessaging; + RMobileSmsMessaging::TMobileSmsGsmTpdu iMsgData; //< Pdu buffer + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 iMsgReceiveAttributes; //< Class for received message attributes + RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg iMsgReceiveAttributesPckg; //< Package for iMsgReceiveAttributes + + TGsmSmsSlot iSlot; // Current iSlot entry + + CSmsPDUProcessor* iPduProcessor; + + MSmsComm& iSmsComm; + const TSmsSettings& iSmsSettings; + CFacadeSmsReassemblyStore& iReassemblyStore; + CSmsSegmentationStore& iSegmentationStore; + const RMobileSmsMessaging::TMobileSmsCapsV1& iMobileSmsCaps; + TGsmSms iDeliverReport; + + CSmsPDUReadLogger* iLogger; + + CSmspReceiveMode& iReceiveMode; // a reference to owner class's instance + RTimer iOOMTimer; + CSmsMonitorDiskSpace& iSmsMonitorDiskSpace; // a reference to the iSmsMonitorDiskSpace object + + TUint8 iRpErrorCodesSupported; + TBool iConfigAutomaticDeletionForClass2; + TBool iConfigDiscardingType0Class2; + TBool iConfigDiscardingType0Class0; + + TBool iSmsReceptionSupended; + TBool iDelayedResumeSmsReceptionRequired; + }; + +#endif // !defined __SMSPREAD_H__