smsprotocols/smsstack/gsmu/inc/gsmunonieoperations.h
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smsprotocols/smsstack/gsmu/inc/gsmunonieoperations.h	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,149 @@
+// 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:
+// This file defines the container class CSmsNonIEOperation and its specialisations.
+// The classes provide interfaces that allow the client to operate on a number
+// of features which are not associated with Information Elements.
+// 
+//
+
+/**
+ @file
+*/
+
+#ifndef __GSMUNONIEOPERATIONS_
+#define __GSMUNONIEOPERATIONS_
+
+
+#include <e32base.h>
+#include <gsmumsg.h>
+#include <gsmuelem.h>
+
+/**
+ *  SMS Stack clients use specialisations of this class to configure a SMS Message with parameters which are not
+ *  a type of Information Element.
+ *
+ *  Each parameter that uses this interface is supported by a class derived from CSmsNonIEOperation.
+ *  The derived class operates on the CSmsMessage, allowing the client to add, remove and access these parameters
+ *  inside the CSmsMessage.
+ *
+ *  The client gets access to an operations class using the following interface:
+ *
+ *  CSmsNonIEOperation& CSmsMessage::GetOperationsForNonIEL(TSmsNonIEIdentifier aId);
+ *
+ *  When the CSmsMessage is deleted, all its associated CSmsNonIEOperations classes are also deleted and references to
+ *  them become stale. Each instance of the CSmsNonIEOperation Class is an attribute of the CSmsMessage itself.
+ *
+ *  @publishedAll
+ *  @released
+ */
+class CSmsNonIEOperation : public CBase
+{
+public: 
+	static CSmsNonIEOperation* NewL(TSmsNonIEIdentifier aId, CSmsMessage& aMessage);
+	IMPORT_C TSmsNonIEIdentifier Id() const;
+	virtual ~CSmsNonIEOperation(){};
+protected:
+	virtual TBool MessageTypeSupported() const;
+	virtual void ValidateOperationL() const {};
+private: 
+    void ConstructL();   
+private:    
+    TSmsNonIEIdentifier iId;
+protected:
+    CSmsMessage& iMessage;
+    CSmsNonIEOperation(TSmsNonIEIdentifier aId, CSmsMessage& aMessage);
+    void operator=(const CSmsNonIEOperation&);
+    TBool operator==(const CSmsNonIEOperation&);    
+};
+
+class CSmsCtrlNonIEOperation : public CSmsNonIEOperation
+{
+protected:
+    CSmsCtrlNonIEOperation(TSmsNonIEIdentifier aId, CSmsMessage& aMessage);
+    ~CSmsCtrlNonIEOperation(){};
+    void operator=(const CSmsCtrlNonIEOperation&);
+    TBool operator==(const CSmsCtrlNonIEOperation&);
+};
+
+class CSmsTPSRROperations : public CSmsCtrlNonIEOperation
+	{
+public:
+	CSmsTPSRROperations(TSmsNonIEIdentifier aId, CSmsMessage& aMessage);
+    ~CSmsTPSRROperations() {};
+    IMPORT_C TInt GetStatusReport(TUint aSegmentSequenceNum) const;
+    IMPORT_C void SetLastSegmentStatusReportL(TBool aEnable);
+    IMPORT_C TInt SetSegmentStatusReportL(TUint aSegmentSequenceNum, TBool aEnable);
+    IMPORT_C void SetSchemeL();
+    IMPORT_C TSmsStatusReportScheme GetScheme() const;
+   	IMPORT_C void ResetSchemeL();
+   	IMPORT_C void SetDefaultL(TBool aEnable);
+protected:
+    void ValidateOperationL() const;
+    void operator=(const CSmsTPSRROperations&);
+    TBool operator==(const CSmsTPSRROperations&);
+	};
+
+/**
+ *  This class will store the incomplete class 0 message information.
+ *  
+ *  
+ *  The object of this class will be stored inside CSmsMessageAdditionalAttributes class.
+ *  This class will provide 2 exported functions which will allow the caller of this class 
+ *  to get/set incomplete class 0 message information.
+ *  @publishedAll
+ *  @released 
+ */
+class CIncompleteClass0MessageInfo : public CSmsNonIEOperation
+	{
+public:
+	CIncompleteClass0MessageInfo(TSmsNonIEIdentifier aId, CSmsMessage& aMessage);
+	IMPORT_C void GetIncompleteMessageInfoL(TInt& aStartPos, TInt& aEndPos, TBool& aIsLastIncompleteMessage);
+	IMPORT_C void SetIncompleteMessageInfoL(TInt aStartPos, TInt aEndPos, TBool aIsLastIncompleteMessage);
+	TInt Version();
+	void SetVersion(TInt aVersion);
+	void InternalizeL(RReadStream& aStream);
+	void ExternalizeL(RWriteStream& aStream) const;
+
+protected:
+	TBool MessageTypeSupported() const;
+	void ValidateOperationL() const;
+	void operator=(const CIncompleteClass0MessageInfo&);
+	TBool operator==(const CIncompleteClass0MessageInfo&);
+
+public:
+/**
+ *  Incomplete Class 0 Message versions
+ */
+	enum TSmsIncompleteClass0MessageVersion
+		{
+		/** The default value. */
+		ESmsIncompleteClass0MessageV0,
+		// for all other versions the corresponding enum values would be added i.e. ESmsIncompleteClass0MessageV1, etc.
+		EMaxSmsIncompleteClass0MessageV
+		};
+
+private:
+/**
+ *  iVersion is the version of CIncompleteClass0MessageInfo. This parameter will be
+ *  used to identify what iAdditionalInfo points to for that particular
+ *  version of CIncompleteClass0MessageInfo
+ */
+	TInt iVersion;
+
+	TInt iStartPos;
+	TInt iEndPos;
+	TBool iIsLastIncompleteMessage;
+	};
+
+#endif