diff -r 6b1d113cdff3 -r 6638e7f4bd8f smsprotocols/smsstack/gsmu/inc/gsmumsgadditionalattributes.h --- a/smsprotocols/smsstack/gsmu/inc/gsmumsgadditionalattributes.h Mon May 03 13:37:20 2010 +0300 +++ b/smsprotocols/smsstack/gsmu/inc/gsmumsgadditionalattributes.h Thu May 06 15:10:38 2010 +0100 @@ -1,167 +1,167 @@ -// Copyright (c) 1999-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 CSmsMessageAdditionalAttributes. -// -// - -/** - @file -*/ - - -#ifndef __GSMUMSGADDITIONALATTRIBUTES_ -#define __GSMUMSGADDITIONALATTRIBUTES_ - -#include -#include -#include "Gsmuelem.h" -#include "gsmuieoperations.h" -#include "gsmunonieoperations.h" - -/** - * @internalComponent - * - * CSmsMessageAdditionalAttributes - * - * This class contains additional attributes that would normally be - * stored in CSmsMessage. - * - * The class contains a collections of control information elements. - * These elements will either be copied into the working PDU for encoding - * or have been copied from the working pdu for decoding. - */ -class CSmsMessageAdditionalAttributes : public CBase -{ -public: - typedef TSmsInformationElementCategories::TInformationElementCategory TCategory; - typedef CSmsInformationElement::TSmsInformationElementIdentifier TInformationElementId; - typedef CSmsInformationElement* CSmsInformationElementPtr; - -public: - static CSmsMessageAdditionalAttributes* NewL(); - - // client side accessors (intended to be used by CSmsMessage) - void AddControlInformationElementL(CSmsInformationElement* aIE); - TBool Find1stInstanceOfControlInformationElement(TInformationElementId aId, TUint& index) const; - TBool FindNextInstanceOfControlInformationElement(TInformationElementId aId, TUint aStartIndex, TUint& aIndex) const; - CSmsInformationElement& GetControlInformationElementL(TInformationElementId aId, TUint aIndex) const; - TBool RemoveControlInformationElement(TInformationElementId aId, TUint aIndex, CSmsInformationElementPtr& aIE); - - // stack side interface / encoding / decoding - void AddControlInformationElementL(TCategory aCategory, CSmsInformationElement* aIE); - CSmsInformationElement& GetControlInformationElementL(TCategory aCategory, TUint aIndex) const; - TBool RemoveNextControlInformationElement(TCategory aCategory, CSmsInformationElementPtr& aIE); - void DeleteControlInformationElement(TCategory aCategory, TUint8 index); - TUint NumberOfControlInformationElements(TCategory aCategory) const; - - CSmsIEOperation& GetIEOperationL(TInformationElementId aId) const; - CSmsNonIEOperation& GetNonIEOperationL(TSmsNonIEIdentifier aId) const; - void SetIEOperationL(CSmsIEOperation* aOperation); - void SetNonIEOperationL(CSmsNonIEOperation* aOperation); - - void InternalizeL(RReadStream& aStream, TInt aVersion); - void ExternalizeL(RWriteStream& aStream, TInt aVersion) const; - - void ResetAttributesL(); - - ~CSmsMessageAdditionalAttributes(); - - class CSmsStatusReportScheme - { - public: - virtual TSmsStatusReportScheme Id() = 0; - virtual ~CSmsStatusReportScheme() {}; - }; - - class CControlParametersScheme : public CSmsStatusReportScheme - { - public: - CControlParametersScheme(); - ~CControlParametersScheme(); - TSmsStatusReportScheme Id(); - public: - struct TSmsSMSCCtrlParameterStatus - { - /** Message reference. */ - TUint iSegmentSequenceNum; - /** Selective Status Report */ - TUint8 iSelectiveStatus; - }; - RArray iControlParametersStatusReport; - TUint8 iDefaultStatusReport; - TInt iNumOfPDUs; - }; - - class CTPSRRScheme : public CSmsStatusReportScheme - { - public: - CTPSRRScheme(); - ~CTPSRRScheme(); - TSmsStatusReportScheme Id(); - public: - struct TSmsTPSRRStatus - { - /** Message reference. */ - TUint iSegmentSequenceNum; - /** TP-SRR Bit. */ - TSmsFirstOctet::TSmsStatusReportRequest iTPSRRStatus; - }; - RArray iTPSRRStatusReport; - TSmsFirstOctet::TSmsStatusReportRequest iDefaultStatusReport; - TInt iNumOfPDUs; - }; - - class CDefaultScheme : public CSmsStatusReportScheme - { - public: - CDefaultScheme(); - ~CDefaultScheme(); - TSmsStatusReportScheme Id(); - }; - - CSmsStatusReportScheme& GetStatusReportScheme() const; - void SetStatusReportSchemeL(TSmsStatusReportScheme aId); - - RPointerArray& SmsPDUArray() { return iSmsPDUArray; }; - - TSmsEncoding Alternative7bitEncoding() const; - void SetAlternative7bitEncoding(TSmsEncoding aEncoding); - -private: - void ConstructL(); - CSmsMessageAdditionalAttributes(); - -private: - typedef CArrayPtrFlat CArrayOfPointersToControlInformationElements; - // comment, not intending to store all categories in additional attributes, some categories will be stored in the working PDU - // The following categories will be stored here: - // ECtrlMandatoryIn1stPDUOnly, e.g Reply Address - // ECtrlSingleInstanceOnly, e.g. Enhanced Voice Mail - // ECtrlMultipleInstancesAllowed, e.g. Hyperlink format - - CArrayOfPointersToControlInformationElements* iCollectionOfPointersToIEArrays[TSmsInformationElementCategories::ENumberOfCategories]; - - CSmsHyperLinkOperations* iHyperLinkOperations; - CSmsReplyAddressOperations* iReplyAddressOperations; - CSmsSpecialSMSMessageOperations* iSpecialSMSMessageOperations; - CSmsEnhancedVoiceMailOperations* iEnhancedVoiceMailOperations; - CSmsSMSCCtrlParameterOperations* iSMSCCtrlParameterOperations; - CSmsTPSRROperations* iTPSRROperations; - CSmsStatusReportScheme* iStatusReportScheme; - CIncompleteClass0MessageInfo* iIncompleteClass0MessageInfo; - RPointerArray iSmsPDUArray; - TSmsEncoding iAlternative7bitEncoding; -}; - -#endif // __GSMUMSGADDITIONALATTRIBUTES_ +// Copyright (c) 1999-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 CSmsMessageAdditionalAttributes. +// +// + +/** + @file +*/ + + +#ifndef __GSMUMSGADDITIONALATTRIBUTES_ +#define __GSMUMSGADDITIONALATTRIBUTES_ + +#include +#include +#include "Gsmuelem.h" +#include "gsmuieoperations.h" +#include "gsmunonieoperations.h" + +/** + * @internalComponent + * + * CSmsMessageAdditionalAttributes + * + * This class contains additional attributes that would normally be + * stored in CSmsMessage. + * + * The class contains a collections of control information elements. + * These elements will either be copied into the working PDU for encoding + * or have been copied from the working pdu for decoding. + */ +class CSmsMessageAdditionalAttributes : public CBase +{ +public: + typedef TSmsInformationElementCategories::TInformationElementCategory TCategory; + typedef CSmsInformationElement::TSmsInformationElementIdentifier TInformationElementId; + typedef CSmsInformationElement* CSmsInformationElementPtr; + +public: + static CSmsMessageAdditionalAttributes* NewL(); + + // client side accessors (intended to be used by CSmsMessage) + void AddControlInformationElementL(CSmsInformationElement* aIE); + TBool Find1stInstanceOfControlInformationElement(TInformationElementId aId, TUint& index) const; + TBool FindNextInstanceOfControlInformationElement(TInformationElementId aId, TUint aStartIndex, TUint& aIndex) const; + CSmsInformationElement& GetControlInformationElementL(TInformationElementId aId, TUint aIndex) const; + TBool RemoveControlInformationElement(TInformationElementId aId, TUint aIndex, CSmsInformationElementPtr& aIE); + + // stack side interface / encoding / decoding + void AddControlInformationElementL(TCategory aCategory, CSmsInformationElement* aIE); + CSmsInformationElement& GetControlInformationElementL(TCategory aCategory, TUint aIndex) const; + TBool RemoveNextControlInformationElement(TCategory aCategory, CSmsInformationElementPtr& aIE); + void DeleteControlInformationElement(TCategory aCategory, TUint8 index); + TUint NumberOfControlInformationElements(TCategory aCategory) const; + + CSmsIEOperation& GetIEOperationL(TInformationElementId aId) const; + CSmsNonIEOperation& GetNonIEOperationL(TSmsNonIEIdentifier aId) const; + void SetIEOperationL(CSmsIEOperation* aOperation); + void SetNonIEOperationL(CSmsNonIEOperation* aOperation); + + void InternalizeL(RReadStream& aStream, TInt aVersion); + void ExternalizeL(RWriteStream& aStream, TInt aVersion) const; + + void ResetAttributesL(); + + ~CSmsMessageAdditionalAttributes(); + + class CSmsStatusReportScheme + { + public: + virtual TSmsStatusReportScheme Id() = 0; + virtual ~CSmsStatusReportScheme() {}; + }; + + class CControlParametersScheme : public CSmsStatusReportScheme + { + public: + CControlParametersScheme(); + ~CControlParametersScheme(); + TSmsStatusReportScheme Id(); + public: + struct TSmsSMSCCtrlParameterStatus + { + /** Message reference. */ + TUint iSegmentSequenceNum; + /** Selective Status Report */ + TUint8 iSelectiveStatus; + }; + RArray iControlParametersStatusReport; + TUint8 iDefaultStatusReport; + TInt iNumOfPDUs; + }; + + class CTPSRRScheme : public CSmsStatusReportScheme + { + public: + CTPSRRScheme(); + ~CTPSRRScheme(); + TSmsStatusReportScheme Id(); + public: + struct TSmsTPSRRStatus + { + /** Message reference. */ + TUint iSegmentSequenceNum; + /** TP-SRR Bit. */ + TSmsFirstOctet::TSmsStatusReportRequest iTPSRRStatus; + }; + RArray iTPSRRStatusReport; + TSmsFirstOctet::TSmsStatusReportRequest iDefaultStatusReport; + TInt iNumOfPDUs; + }; + + class CDefaultScheme : public CSmsStatusReportScheme + { + public: + CDefaultScheme(); + ~CDefaultScheme(); + TSmsStatusReportScheme Id(); + }; + + CSmsStatusReportScheme& GetStatusReportScheme() const; + void SetStatusReportSchemeL(TSmsStatusReportScheme aId); + + RPointerArray& SmsPDUArray() { return iSmsPDUArray; }; + + TSmsEncoding Alternative7bitEncoding() const; + void SetAlternative7bitEncoding(TSmsEncoding aEncoding); + +private: + void ConstructL(); + CSmsMessageAdditionalAttributes(); + +private: + typedef CArrayPtrFlat CArrayOfPointersToControlInformationElements; + // comment, not intending to store all categories in additional attributes, some categories will be stored in the working PDU + // The following categories will be stored here: + // ECtrlMandatoryIn1stPDUOnly, e.g Reply Address + // ECtrlSingleInstanceOnly, e.g. Enhanced Voice Mail + // ECtrlMultipleInstancesAllowed, e.g. Hyperlink format + + CArrayOfPointersToControlInformationElements* iCollectionOfPointersToIEArrays[TSmsInformationElementCategories::ENumberOfCategories]; + + CSmsHyperLinkOperations* iHyperLinkOperations; + CSmsReplyAddressOperations* iReplyAddressOperations; + CSmsSpecialSMSMessageOperations* iSpecialSMSMessageOperations; + CSmsEnhancedVoiceMailOperations* iEnhancedVoiceMailOperations; + CSmsSMSCCtrlParameterOperations* iSMSCCtrlParameterOperations; + CSmsTPSRROperations* iTPSRROperations; + CSmsStatusReportScheme* iStatusReportScheme; + CIncompleteClass0MessageInfo* iIncompleteClass0MessageInfo; + RPointerArray iSmsPDUArray; + TSmsEncoding iAlternative7bitEncoding; +}; + +#endif // __GSMUMSGADDITIONALATTRIBUTES_