smsprotocols/smsstack/smsprot/Inc/smspenum.h
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /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 <e32base.h>
+#include <etelmm.h>
+#include "gsmuSmsSlot.h"
+#include "smspcomm.h"
+#include "smspproc.h"
+#include "smsuset.h"
+
+#include <mmretrieve.h>
+#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<TGsmSms> 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__