cbs/CbsServer/ServerInc/CCbsMessage.h
changeset 46 2fa1fa551b0b
parent 42 35488577e233
child 48 78df25012fda
--- a/cbs/CbsServer/ServerInc/CCbsMessage.h	Mon Aug 23 15:50:31 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,603 +0,0 @@
-/*
-* Copyright (c) 2004 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 contains the header file of the CCbsMessage class.
-*
-*/
-
-
-
-#ifndef CCBSMESSAGE_H
-#define CCBSMESSAGE_H
-
-//  INCLUDES
-#include <etelmm.h>
-#include "CbsReceiverTypes.h"
-#include "CbsCommon.h"
-#include <cbsmcncommon.h>
-
-//  CONSTANTS  
-// If this constant is set to iPLMN.iMCC, iPLMN does not contain network info
-_LIT( KRecMessageNoNetworkInfo, "-1"  );
-
-/// Defines association element (ISO639-code, language)
-struct TCbsIso639ToLangMapElement
-    {
-    const TLitC< 3 > iCode;
-    const TCbsDbLanguage iLang;
-
-    TCbsIso639ToLangMapElement::TCbsIso639ToLangMapElement( 
-        const TLitC< 3 > aCode, 
-        TCbsDbLanguage aLang )
-        :iCode( aCode ), 
-        iLang( aLang ) { }
-    };
-
-// ISO639 codes defining recognized languages
-_LIT( KIso639Danish, "DA" );
-_LIT( KIso639German, "DE" );
-_LIT( KIso639Greek, "EL" );
-_LIT( KIso639English, "EN" );
-_LIT( KIso639Spanish, "ES" );
-_LIT( KIso639Finnish, "FI" );
-_LIT( KIso639French, "FR" );
-_LIT( KIso639Italian, "IT" );
-_LIT( KIso639Dutch, "NL" );
-_LIT( KIso639Norwegian, "NO" );
-_LIT( KIso639Portuguese, "PT" );
-_LIT( KIso639Swedish, "SV" );
-_LIT( KIso639Turkish, "TR" );
-_LIT( KIso639Hungarian, "HU" );
-_LIT( KIso639Polish, "PL" );
-_LIT( KIso639Czech, "CS" );
-_LIT( KIso639Hebrew, "HE" );
-_LIT( KIso639Arabic, "AR" );
-_LIT( KIso639Russian, "RU" );
-_LIT( KIso639Icelandic, "IS" );
-// Amount of languages that are mapped to ISO639 codes.
-const TInt KNumberOfLanguageMappings = 20;
-
-// CB message header size in bytes.
-const TInt KHeaderLength = 6;
-
-// Offset in CB message to index header in characters. 
-const TInt KIndexHeaderPosition = 0;
-
-// Index header length in characters (e.g., "EI1<cr><lf>")
-const TInt KIndexHeaderLength = 5;              // including trailing <cr><lf>
-
-// Offset to language indication, if applicable
-const TInt KLanguageIndicationPosition = 0;
-
-// Fixed length of language indication preceding message body
-const TInt KLanguageIndicationLength = 3;
-
-// Fixed length of language indication without trailing CR.
-const TInt KLanguageIndicationLengthWithoutCR = 2;
-
-// Geographical scope of CB message: cell wide / immediate display
-const TInt KGeographicalScopeCellImmediate = 0x00;
-
-// Geographical scope of CB message: operator wide / normal display
-const TInt KGeographicalScopePLMNNormal = 0x01;
-
-// Geographical scope of CB message: location area wide / normal display
-const TInt KGeographicalScopeLACNormal = 0x02;
-
-// Geographical scope of CB message: cell wide / normal display
-const TInt KGeographicalScopeCellNormal = 0x03;
-
-// Message code of an index message.
-const TUint16 KIndexMessageCode = 0x02AA; // 1010101010b
-
-const TUint8 KPageParameterSingle = 0x11;   // this page: 1, total pages: 1
-
-// ETSI DCS specification
-const TUint8 DCS_MASK_GENERAL_DATA_CODING_INDICATION = 0xcc;
-const TUint8 DCS_MASK_MESSAGE_HANDLING = 0xf4;
-const TUint8 DCS_MASK_LANGUAGE_INDICATION_PRECEDES = 0xff;
-const TUint8 DCS_GDCI_8BIT = 0x44;
-const TUint8 DCS_GDCI_UCS2 = 0x48;
-const TUint8 DCS_DCMH_8BIT = 0xf4;
-const TUint8 DCS_MPLI_UCS2 = 0x11;
-const TUint16 KMessageCodeMask = 0x3FF0;
-const TUint8 DCS_MASK_UDH = 0x9c;
-const TUint8 DCS_UDH_8BIT = 0x94;
-
-const TUint8 DCS_MASK_CLASS0 = 0xd3;
-const TUint8 DCS_CLASS0 = 0x50;
-
-// Message identifier value indicating that the message contains 
-// a base station identity.
-const TUint16 KCbsBaseStationId = 50;       
-
-// Information on Data Coding Scheme values.
-// Refer to ETSI GSM 03.38 for details.
-enum 
-    {
-    // Bits 4-7 0000: Language specified with bits 0-3, default alphabet.
-    ECbsRecLanguageGerman = 0,
-    ECbsRecLanguageEnglish = 1,
-    ECbsRecLanguageItalian = 2,
-    ECbsRecLanguageFrench = 3,
-    ECbsRecLanguageSpanish = 4,
-    ECbsRecLanguageDutch = 5,
-    ECbsRecLanguageSwedish = 6,
-    ECbsRecLanguageDanish = 7,
-    ECbsRecLanguagePortuguese = 8,
-    ECbsRecLanguageFinnish = 9,
-    ECbsRecLanguageNorwegian = 10,
-    ECbsRecLanguageGreek = 11,
-    ECbsRecLanguageTurkish = 12,
-    ECbsRecLanguageHungarian = 13,
-    ECbsRecLanguagePolish = 14,
-    ECbsRecLanguageUnspecified = 15,
-    // Bits 4-7 0001: Message preceded by language indication, 
-    // default or UCS2 alphabet.
-    ECbsRecDCSDefaultMsgPrecededByLanguage = 16,
-    ECbsRecDCSUCS2MsgPrecededByLanguage = 17,
-    // Bits 4-7 0010: Czech language, reservations for European languages
-    // using the default alphabet.
-    ECbsRecLanguageCzech = 32,
-    ECbsRecLanguageHebrew = 33,
-    ECbsRecLanguageArabic = 34,
-    ECbsRecLanguageRussian = 35,
-    ECbsRecLanguageIcelandic = 36,
-    // Bits 4-7 0011: Reserved for European languages using the default
-    // alphabet, with unspecified handling at the MS.
-    // Max value of language enum, this MUST remain as last
-    ECbsRecLanguageMax = 100
-    };
-
-// Message types, GSM, WCDMA, Livecast
-enum TCbsMessageType
-    {
-    ECbsMessageGsm,
-    ECbsMessageWcdma,
-    ECbsMessageLivecast,
-    ECbsMessageTypeUnspecified
-    };
-
-
-//  CLASS DECLARATION 
-
-/**
-*   CCbsMessage is the base class for GSM anf WCDMA message classes.
-*   
-*/
-class CCbsMessage : public CBase
-    {
-    public:
-
-        /**
-        *   Virtual destructor
-        */
-        virtual ~CCbsMessage();
-
-    public:
-        /**
-        *   Returns the type of the message (only in WCDMA)
-        *
-        *   @return                     Type of this message
-        */
-        virtual TInt MessageType() const = 0;        
-
-        /**
-        *   Returns ETrue, if this message is a child subindex message.
-        *
-        *   Child subindex messages have message code 1010101010b and
-        *   message identifier other than 0.
-        *
-        *   @return                     ETrue, if the message is child subindex
-        */
-        virtual TBool IsChildSubindex() const;    
-		
-        /**
-        *   Returns ETrue, if this message is a livecast message.
-        *
-        *
-        *   @return                     ETrue, if the message is livecast message
-        */
-
-		TBool IsLivecastMessage() const;
-
-        /**
-        *   Returns the message code of the message.
-        *
-        *   @return                     Message Code.
-        */
-        TCbsRecMessageCode MessageCode() const;
-
-        /**
-        *   Returns the update number of the message.
-        *
-        *   @return                     Update Number.
-        */
-        TCbsRecUpdateNumber UpdateNumber() const;
-
-        /**
-        *   Returns the alphabet set of this message.
-        *
-        *   Possible values are:
-        *
-        *   ECbsRecAlphabetDefault      7-bit GSM encoding
-        *   ECbsRecAlphabet8bit         8-bit data, unknown encoding
-        *   ECbsRecAlphabetUCS2         16-bit, UCS-2 encoding
-        *   ECbsRecAlphabetUnspecified  Unknown encoding
-        *
-        *   @return                     Alphabet
-        */
-        TCbsRecAlphabet Alphabet() const;
-
-        /**
-        *   Appends another message's content to this message's content.
-        *
-        *   @param aMsg                 Message that is appended 
-        *                               to this msg.
-        */
-        void AppendContent( const TDesC& aMsg );
-
-        /**
-        *   Appends another 8-bit message's content to this message's content.
-        *
-        *   @param aMsg                 Message that is appended 
-        *                               to this msg.
-        */
-        void AppendContent8( const TDesC8& aMsg );
-
-        /**
-        *   Returns identifier of the cell in which the phone was when this
-        *   message was received.
-        *
-        *   @return                     Cell identifier
-        */
-        TUint CellId() const;
-
-        /**
-        *   Returns a pointer descriptor to the Unicode contents of the 
-        *   message.
-        *
-        *   Panics if 16-bit presentation is not prepared.
-        *
-        *   @return                     Pointer descriptor to the contents of 
-        *                               the message.
-        */
-        const TDesC& Contents() const;
-
-        /**
-        *   Returns a pointer descriptor to 8-bit descriptor representation
-        *   of the message body. Panics if 8-bit representation
-        *   is not prepared.
-        *
-        *   @return                     Pointer descriptor to the 8-bit 
-        *                               representation of this message's body.
-        */
-        const TDesC8& Contents8() const;
-
-        /**
-        *   Returns the Data Coding Scheme of this message page.
-        *
-        *   Refer to GSM specification 03.38 for details on DCS.
-        *
-        *   @return                     Data Coding Scheme.
-        */
-        TCbsRecDCS DCS() const;
-
-        /**
-        *   Returns the geographical scope of the message.
-        *
-        *   @return                     Geographical scope.
-        */
-        TCbsRecGeographicalScope GeographicalScope() const;
-
-        /**
-        *   On return, aNetworkId contains identity of the network
-        *   in which the phone was when this message was received.
-        *
-        *   @param aNetworkInfo           Returns: Operator information
-        */
-        void GetPLMN( RMobilePhone::TMobilePhoneNetworkInfoV1& aNetworkInfo ) const;
-
-        /**
-        *   Returns ETrue, if this message is a Class 0 message according
-        *   to ETSI GSM specification 03.38.
-        */
-        TBool IsClass0() const;
-
-        /**
-        *   Returns ETrue, if the message is compressed.
-        *
-        *   @return                     ETrue, if the message is compressed.
-        */
-        TBool IsCompressed() const;
-
-        /**
-        *   Returns boolean value indicating if this is the index message.
-        *
-        *   Index messages have message code 1010101010b.
-        *
-        *   Refer to GSM specifications to for details.
-        *
-        *   @return                     Boolean value indicating if this is 
-        *                               an index message.
-        */
-        TBool IsIndexMessage() const;
-
-        /**
-        *   Returns the key of the message (serial number).
-        *    
-        *   Refer to GSM specifications for details.
-        *
-        *   @return                     Key of the message.
-        */
-        TCbsDbMessageKey Key() const;
-
-        /**
-        *   Returns the LAC (Location Area Code) of the area where the phone
-        *   was when this message was received.
-        *
-        *   @return                     Location area code
-        */
-        TUint LAC() const;
-
-        /**
-        *   Returns the language in which the message is written.
-        *
-        *   Function will panic, if the language has not been resolved
-        *   with ResolveLanguage().
-        *
-        *   @return                     The language of the message.
-        */
-        TCbsDbLanguage Language() const;
-
-        /**
-        *   Determines and returns the language of this message
-        *   based on first two characters of message content.
-        *   Assumes that the message content contains language
-        *   indication and that the content has been decoded
-        *   into UCS-2 representation.
-        *
-        *   @returns                    Language of the message
-        */
-        TCbsDbLanguage LanguagePrecedingMessage() const;
-
-        /**
-        *   Determines and returns the language of this message
-        *   based on DCS value. Assumes that the same DCS value
-        *   indicates, that the language can be determined in this
-        *   way (and not from message content).
-        *
-        *   @returns                    Language of the message
-        */
-        TCbsDbLanguage LanguageWithDefaultAlphabet() const;
-        
-        /**
-        *   Returns the 16-bit representation of the message
-        *   contents.
-        *
-        *   @returns                    Message contents
-        */
-        HBufC* Message() const;
-        
-        /**
-        *   Returns the 8-bit representation of the message
-        *   contents.
-        *
-        *   @returns                    Message contents
-        */
-        HBufC8* Message8() const;
-
-        /**
-        *   Returns the message class of the message.
-        *
-        *   @return                     Message Class.
-        */
-		TInt MessageClass() const;
-
-        /**
-        *   Returns ECbsRecLanguageIndicationBody, if message's content is 
-        *   preceded by language indication (see GSM 03.38).
-        *
-        *   Return values:
-        *   ECbsRecLanguageIndicationHeader Language indicated by the message
-        *                                   header DCS value
-        *   ECbsRecLanguageIndicationBody   Language indicated by 
-        *                                   a two-character prefix in message
-        *                                   body.
-        *
-        *   @return                         Indication location.
-        */
-        TCbsRecLanguageIndication MessagePrecededByLanguageIndication() const;
-
-        /**
-        *   Returns the network mode (GSM/WCDMA) of this message page.
-        *        
-        *   @return                         Network in which this message was 
-        *                                   received (GSM/WCDMA).
-        */
-        TCbsNetworkMode NetworkMode() const;
-
-        /**
-        *   Returns the page parameter of this message page.
-        *
-        *   Total and this page -fields can be accessed with 
-        *   methods TotalPages() and ThisPage().
-        *
-        *   @return                     Page Parameter.
-        */
-        TCbsRecPageParameter PageParameter() const;
-
-        /**
-        *   Frees the memory allocated for 8-bit representation of message
-        *   content.
-        */
-        void ReleaseEightBitRepresentation();
-
-        /**
-        *   Removes any index header prefix from the message body.
-        *
-        *   This method assumes that the index header is contained in the
-        *   first line of message body. This line, including trailing <cr><lf>
-        *   is removed.
-        *
-        *   Index header prefix is assumed to contain "EIn<cr><lf>", where n
-        *   specifies the version number this index message claims to 
-        *   follow and <cr><lf> is a carriage return + line feed.
-        *
-        *   It is also assumed that any language indication prefix has
-        *   already been removed prior to this operation.
-        *
-        *   Message must be in UCS-2 representation.
-        *
-        *   Leave reasons:
-        *   KErrUnderflow   Message is too short to contain index header.
-        */
-        void RemoveIndexHeaderL();
-
-        /**
-        *   Removes language indication field from the message body.
-        *
-        *   Presence of an indication is verified with the DCS value 
-        *   according to ETSI specifications. Message is assumed to
-        *   contain valid indication, i.e., three bytes preceding the message
-        *   body specifying the language code. 
-        *    
-        *   The correctness of this operation is not checked. If the
-        *   indication is invalid, the message body is likely to either have
-        *   a couple of characters too many or few.
-        *
-        *   Message is assumed to be decoded into UCS-2.
-        *
-        *   Leave reasons:
-        *   KErrUnderflow  Message is too short to contain language indication.
-        */
-        void RemoveLanguageIndicationFromBodyL();
-
-        /**
-        *   Returns ETrue, if this message requires to be displayed 
-        *   immediately.
-        *
-        *   The CB message has to be displayed immediately
-        *   if either it is flagged as a Class 0 message (see GSM 03.38)
-        *   or has a geographical scope of the type "Immediate" 
-        *   (see GSM 03.41).
-        *
-        *   This function always returns EFalse for Base station ID messages 
-        *   (message identifier = 50). 
-        *
-        *   @return                     Immediate display indication.
-        */
-        TBool RequiresImmediateDisplay() const;
-
-        /**
-        *   Increases the space allocated for message content.
-        *
-        *   @param aLength              New number of characters in msg 
-        *                               content.
-        */
-        void ReserveContentSizeL( TInt aLength );
-
-        /**
-        *   Increases the space allocated for 8-bit message content.
-        *
-        *   @param aLength              New number of characters in msg 
-        *                               content.
-        */
-        void ReserveContentSize8L( TInt aLength );
-
-        /**
-        *   Determines language of this message so that calls to Language()
-        *   will return the correct value.
-        *
-        *   Language information may be determined from Data Coding Scheme
-        *   of message header or from the first characters in message body.
-        *   For the latter to succeed, the message has to be decoded into 
-        *   UCS-2.
-        */
-        void ResolveLanguage();
-
-        /**
-        *   Sets the network information of this message.
-        *
-        *   @param aNetworkInfo         Network information
-        *   @param aArea                Area information
-        */
-        void SetNetworkInfo(
-            const RMobilePhone::TMobilePhoneNetworkInfoV1& aNetworkInfo,
-            const RMobilePhone::TMobilePhoneLocationAreaV1& aArea );
-
-        /**
-        *   Returns the page number of this page in the message page sequence,
-        *
-        *   @return                     Page number of this page.
-        */
-        virtual TUint ThisPage() const = 0;
-
-        /**
-        *   Returns the topic number to which the message belongs. 
-        *   (Message Identifier)
-        *
-        *   @return                     The number of the topic
-        */
-        TCbsDbTopicNumber TopicNumber() const;
-
-        /**
-        *   Returns the total number of pages in this page's message.
-        *
-        *   @return                     Total number of pages in this message
-        */
-        virtual TUint TotalPages() const = 0;
-        
-    protected:
-        CCbsMessage();      
-
-    protected:
-        // Data Coding Scheme (language, encoding, compression)
-        TCbsRecDCS iDCS;
-
-        // Own: contents of the message page in 16-bit representation
-        HBufC* iMessage;
-
-        // Own: contents of the message page in 8-bit representation
-        HBufC8* iMessage8;
-
-        // Serial Number (GS, Message Code, Update Number)
-        TUint16 iSerialNumber;
-
-        // Message Identifier (Topic number)
-        TUint16 iMessageIdentifier;
-
-        // Page Parameter (this page, total pages)
-        TCbsRecPageParameter iPageParameter;
-
-        // Total number of pages
-        TInt iTotalNumberOfPages;
-
-        // Location area information
-        RMobilePhone::TMobilePhoneLocationAreaV1 iLocationArea;
-
-        // Network information
-        RMobilePhone::TMobilePhoneNetworkInfoV1 iNetworkInfo;
-
-        // Language of this message
-        TCbsDbLanguage iLanguage;
-
-        // Network in which current message was received
-        TCbsNetworkMode iNetworkMode;
-        };
-
-#endif      //  CCBSMESSAGE_H
-            
-// End of File
-
-