--- /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