diff -r 000000000000 -r 3553901f7fa8 smsprotocols/smsstack/smsprot/Inc/smspenum.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/smsprotocols/smsstack/smsprot/Inc/smspenum.h Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,241 @@ +// Copyright (c) 2003-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 __SMSPENUM_H__ +#define __SMSPENUM_H__ + +#include +#include +#include "gsmuSmsSlot.h" +#include "smspcomm.h" +#include "smspproc.h" +#include "smsuset.h" + +#include +#include "smsuact.h" +#include "smspqueue.h" + +#include "es_ini.h" + +class CSmsSegmentationStore; +class CFacadeSmsReassemblyStore; +class CQueuedSmsMessage; + + +/** + * + * Class CSmsStoreRead for reading messages from the store. Messages can be read + * to the list all at once or one by one, depending on capabilities of the Tsy. + * @internalComponent + */ +class CSmsStoreRead : public CSmsuActiveBase + { +private: + enum + { + KDefaultEnumerateTimeoutSeconds=255000000 //<255 sec + }; +public: + static CSmsStoreRead* NewL(MSmsComm& aSmsComm, + const TSmsSettings& aSmsSettings, + RMobileSmsMessaging& aSmsMessaging, + CFacadeSmsReassemblyStore& aReassemblyStore, + CSmsSegmentationStore& aSegmentationStore, + TInt aPriority, + CSmsMonitorDiskSpace& aSmsMonitorDiskSpace); + ~CSmsStoreRead(); + + void Start(TRequestStatus& aStatus,TInt aStoreIndex); + + void CloseStore(); + +protected: + void DoCancel(); + void ReadConfigurableSmsSettingsL(); +private: + CSmsStoreRead(MSmsComm& aSmsComm, + const TSmsSettings& aSmsSettings, + RMobileSmsMessaging& aSmsMessaging, + CFacadeSmsReassemblyStore& aReassemblyStore, + CSmsSegmentationStore& aSegmentationStore, + TInt aPriority, + CSmsMonitorDiskSpace& aSmsMonitorDiskSpace); + + void ConstructL(); + void DoRunL(); + + void Complete(TInt aStatus); + + void ReadNextSlotL(); + void ProcessPduL(); + +private: + enum TSmsStoreReadState + { + ESmsStoreReadIdle, //< Idle + ESmsStoreReadGettingStoreInfo, //< Getting message store info + ESmsStoreReadReadingList, //< Reading message list at once + ESmsStoreReadReadingSlot, //< Reading message list one message at the time + ESmsStoreReadReadingSlotCancel //< Reading message list cancel + }; + +private: + TSmsStoreReadState iState; //< The current state of the state machine + MSmsComm& iSmsComm; + const TSmsSettings& iSmsSettings; + RMobileSmsMessaging& iSmsMessaging; + CFacadeSmsReassemblyStore& iReassemblyStore; + CSmsSegmentationStore& iSegmentationStore; + CSmsMonitorDiskSpace& iSmsMonitorDiskSpace; + RMobileSmsStore iSmsStorage; //< Phone side message store + + RMobileSmsStore::TMobilePhoneStoreInfoV1Pckg iStoreInfoPckg; + RMobilePhoneStore::TMobilePhoneStoreInfoV1 iStoreInfo; //< Capabilities of the current store + CRetrieveMobilePhoneSmsList* iRetrieveMobilePhoneSmsList; //< Pointer for getting SMS list from TSY + CMobilePhoneGsmSmsList* iMobilePhoneGsmSmsList; //< Pointer to a SMS list + RMobileSmsStore::TMobileGsmSmsEntryV1Pckg iEntryV1Pckg; + RMobileSmsStore::TMobileGsmSmsEntryV1 iSmsEntry; //< Data of a SMS entry + + TGsmSmsSlot iSlot; //< Data of a SMS entry including store name + + TInt iCurrentSlotIndex; //< Index to a slot, identifies the index of iSlot + TBool iConfigAutomaticDeletionForClass2; + TBool iConfigDiscardingType0Class2; + TBool iConfigDiscardingType0Class0; + }; + + +/** + * Class CSmsPhoneEnumeration for enumerating all stores. + * @internalComponent + */ +class CSmsPhoneEnumeration : public CSmsuActiveBase + { +public: + static CSmsPhoneEnumeration* NewL(MSmsComm& aSmsComm,const TSmsSettings& aSmsSettings, CFacadeSmsReassemblyStore& aReassemblyStore, CSmsSegmentationStore& aSegmentationStore,RMobilePhone& aGsmPhone, TInt aPriority, CSmsMonitorDiskSpace& aSmsMonitorDiskSpace); + ~CSmsPhoneEnumeration(); + + void Start(); + +protected: + + void DoRunL(); + void DoCancel(); + +private: + + CSmsPhoneEnumeration(MSmsComm& aSmsComm,const TSmsSettings& aSmsSettings, RMobilePhone& aGsmPhone, TInt aPriority); + void ConstructL(CFacadeSmsReassemblyStore& aReassemblyStore,CSmsSegmentationStore& aSegmentationStore,CSmsMonitorDiskSpace& aSmsMonitorDiskSpace); + + void Complete(TInt aStatus); + +private: + enum TSmsPhoneEnumerationState + { + ESmsPhoneEnumerationIdle, //< Idle + ESmsPhoneEnumerationInitializing, //< Initializing mobile phone + ESmsPhoneEnumerationReadingStores //< Reading all stores one at the time + }; + +private: + TSmsPhoneEnumerationState iState; //< The current state of the state machine + MSmsComm& iSmsComm; //< The reference to the observer + const TSmsSettings& iSmsSettings; //< Global SMS Protocol settings + RMobilePhone& iGsmPhone; //< Etel phone susession + RMobileSmsMessaging iSmsMessaging; //< ETEL phone subsession for messaging services + TInt iNumStores; //< Number of the phone side stores + TInt iCurrentStore; //< Index to a store + CSmsStoreRead* iSmsStoreRead; //< Pointer for reading store from the phone side + }; + + + + + +/** + * Class CSmsMessageWrite for writing messages to the store. + * @internalComponent + */ +class CSmsMessageWrite : public CSmsuActiveBase + { + friend class CSmspWriteQueue; + +private: + + static CSmsMessageWrite* NewL(MSmsComm& aSmsComm, const TSmsSettings& aSmsSettings, + RMobilePhone& aGsmPhone, + CSmsSegmentationStore& aSegmentationStore + ); + ~CSmsMessageWrite(); + + void Start(CSmsMessage* aSmsMessage, TRequestStatus& aStatus); + +private: + + void DoRunL(); + void DoCancel(); + +private: + CSmsMessageWrite(MSmsComm& aSmsComm, const TSmsSettings& aSmsSettings, + RMobilePhone& aGsmPhone, + CSmsSegmentationStore& aSegmentationStore + ); + + void ConstructL(); + void SegmentMessageL(); + void WriteNextSlot(); + void Complete(TInt aStatus); + +private: + enum TSmsMessageWriteState + { + ESmsMessageWriteIdle, //< Idle + ESmsMessageWriteInitializing, //< Initializing mobile phone + ESmsMessageWriteGettingStoreInfo, //< Getting message store info + ESmsMessageWriteWritingPDUs, //< Writing slot to the store + }; + +private: + + MSmsComm& iSmsComm; + TSmsMessageWriteState iState; //< The current state of the state machine + const TSmsSettings& iSmsSettings; //< Global SMS Protocol settings + RMobilePhone& iGsmPhone; //< Etel phone susession + RMobileSmsMessaging iSmsMessaging; //< ETEL phone subsession for messaging services + RMobileSmsStore iSmsStorage; //< Phone side message store + + RMobileSmsStore::TMobilePhoneStoreInfoV1Pckg iStoreInfoPckg; + RMobilePhoneStore::TMobilePhoneStoreInfoV1 iStoreInfo; //< Capabilities of the current store + + RMobileSmsStore::TMobileGsmSmsEntryV1Pckg iWriteEntryV1Pckg; + RMobileSmsStore::TMobileGsmSmsEntryV1 iEntryToWrite; //< Given entry for writing + + CSmsSegmentationStore& iSegmentationStore; //< Segmentation store, used to get next 8 or 16bit reference + CArrayFixFlat iSmsArray; //< Array for Pdus + CSmsMessage* iSmsMessage; //< The Message to write + TInt iNumStores; //< Number of the phone side stores + TInt iCurrentStore; //< Index to a store + TGsmSmsSlot iSlot; //< a slot + }; + + + +#endif // !defined __SMSPENUM_H__