--- a/cbs/CbsServer/ServerInc/CCbsRecEtel.h Mon Aug 23 15:50:31 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,457 +0,0 @@
-/*
-* Copyright (c) 2003 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 CCbsRecEtel class
-*
-*/
-
-
-#ifndef CCBSRECETEL_H
-#define CCBSRECETEL_H
-
-
-// INCLUDES
-#include <cmcn.h>
-#include "MCbsEtelMessaging.h"
-
- /*****************************************************
- * Series 60 Customer / ETel
- * Series 60 ETel API
- *****************************************************/
-#include <rmmcustomapi.h> // SIM topics
-
-// CONSTANTS
- /*****************************************************
- * Series 60 Customer / TSY
- * Needs customer TSY implementation
- *****************************************************/
-
-// FORWARD DECLARATIONS
-class CCbsEtelFactory;
-class CCbsRecEtelMonitor;
-class CCbsRecCollector;
-class CCbsRecDecoder;
-class CCbsRecNetworkListener;
-class CCbsRecMessage;
-class CCbsReceiverHelper;
-class MCbsMcnSubscriptionsProvider;
-class CCbsSetFilterSettingHandler;
-class CCbsRecWcdmaMessage;
-class CCbsMessage;
-class CCbsMessageFactory;
-class CCbsLivecastHandler;
-
-
-// CLASS DECLARATION
-
-/**
-* CCbsRecEtel sets up the receiver subsystem for receiving CBS messages
-* from the ETEL server.
-*
-* This class creates instances of CCbsRecEtelMonitor to communicate with
-* ETel server, CCbsRecDecoder to decode message pages and
-* CCbsRecCollector to combine partial messages together. CCbsRecEtel
-* sends completed messages to the database via an interface
-* class CCbsReceiverHelper.
-*
-* An instance of CCbsRecNetworkListener is created to monitor network
-* state changes and report them to CCbsRecEtel instance.
-*
-* CCbsRecEtel is also responsible for controlling the CBMI list entries
-* in ME defining Message Identifiers and DCSes that are to be received.
-*
-* CCbsRecEtel instance does not store information on what topics and
-* languages to subscribe. Instead, on call to ApplyStateChangesL(),
-* subscriptions and other CB settings are retrieved from the database
-* and passed to EPOC Telephony server.
-*
-* Thus, after topic subscriptions, languages or reception status have
-* been modified, a call to ApplyStateChangesL() has to be made in order
-* to actually bring the changes into effect.
-*
-* ON SUBSCRIPTION OF TOPICS AND LANGUAGES
-*
-* Although EPOC Telephony server can be requested to relay messages of certain topics and
-* languages, there is a couple of things to note.
-*
-* 1. In order to detect topics broadcasted within the current region, all
-* CB messages have to be received. This is done by subscribing all topics
-* and languages.
-*
-* 2. Since MCN clients may subscribe any number of topics, topic filtering
-* has to be made to remove messages not requested by the UI client.
-*
-* 3. All languages have to be subscribed at all times. This is because
-* TSY limits the number of languages and a single language (e.g., English),
-* may be represented by multiple DCS values. In addition, CBS specification
-* tells that any message in unspecified language has to be received.
-* Thus the only possibility here is to ignore EPOC Telephony server provided facilities
-* to filter languages, and implement filtering in CbsServer.
-* This is done in CCbsReceiverHelper.
-*/
-class CCbsRecEtel : public CBase
- {
- public: // New functions
-
- /**
- * Creates an instance of the class.
- *
- * @return A new instance of CCbsRecEtel.
- */
- static CCbsRecEtel* NewL();
-
- /**
- * Destructor.
- */
- ~CCbsRecEtel();
-
- /**
- * Called by the network listener (instance of CCbsRecEtelMonitor)
- * to indicate that a new message has been received and must be
- * handled.
- *
- * The message page is decoded, cell information (if present) is
- * extracted and routed to MCN clients. Pages of multipaged messages
- * are then given to the collector. If the message is completed
- * (all pages collected) or the message is singlepaged, it is
- * given onwards to CCbsReceiverHelper.
- *
- * Note that a multipaged message page is routed to MCN clients
- * before it is assembled. This is acceptable because maximum
- * length of a MCN message is specified to be 20 characters.
- *
- * Ownership of aMessage transferred to CCbsRecEtel.
- *
- * @param aMessage A pointer to the message page received.
- */
- void HandleMessageReceivedL( CCbsMessage* aMessage );
-
- /**
- * Augments aMessage with current network information (i.e., PLMN, LAC
- * and Cell ID). Does nothing if the network listener iListener
- * is unavailable.
- *
- * @param aMessage Message page.
- */
- TInt AddNetworkInfo( CCbsMessage& aMessage ) const;
-
- /**
- * Sets the interface to which all accepted messages are given.
- *
- * @param aInterface A pointer to the receiver interface.
- */
- void SetInterface( CCbsReceiverHelper* aInterface );
-
- /**
- * Returns the current and maximum number of subscribed topics.
- *
- * Topic restrictions are imposed by the TSY in use.
- *
- * @param aTotal Total amount of subscribed topics.
- * @param aMax Maximum amount of subscribed topics.
- */
- void GetSubscriptionsLimitsL( TInt& aTotal, TInt& aMax );
-
- /**
- * MCN client sessions register to CCbsRecEtel using this function.
- *
- * When topic subscriptions are gathered during execution of
- * ApplyStateChangesL(), subscriptions of each registered subscription
- * provider are added to the CBMI list that determines which
- * topics are received.
- *
- * @param aProvider Topic subscription providing instance
- */
- void AddSubscriptionProviderL(
- MCbsMcnSubscriptionsProvider* aProvider );
-
- /**
- * Removes a topic subscription provider.
- *
- * @param aProvider Topic subscription providing instance
- */
- void RemoveSubscriptionProviderL(
- const MCbsMcnSubscriptionsProvider* aProvider );
-
- /**
- * Retrieves current subscriptions, languages and settings
- * from DB. This data is augmented by topic subscription
- * information retrieved from MCN client(s). Resulting
- * topic subscriptions, languages and settings will then
- * be requested from EPOC Telephony server.
- *
- */
- void ApplyStateChangesL();
-
- /**
- * Returns the current cell information.
- *
- * The information is retrieved from the last cell information
- * message received.
- *
- * Result codes:
- * KErrNone Operation successful, aCellInfo
- * contains a valid cell info message
- * KErrNotFound Cell information hasn't been received
- * yet - aCellInfo is invalid.
- *
- * @param aInfoMessage Current info message
- * @param aTopicNumber Number of the topic that
- * the msg belongs to
- * @return Result code
- */
- TInt GetCurrentMessage( TDes& aInfoMessage, TInt aTopicNumber );
-
- /**
- * Loads CB topics from SIM and adds them on the topic list.
- * A topic is not added on the list if the same topic
- * already exists on the list. This identification is done
- * by the number of the topic only.
- *
- * The name of an added topic will be taken from SIM.
- * If no name has been associated with the topic, the string
- * <qtn_cb_litext_sim_topic> will be given to the topic.
- *
- * Result codes:
- * KErrNotSupported TSY does not support SIM topics.
- *
- * @return Result code.
- */
- TInt LoadSimTopicsL();
-
- /**
- * Deletes a CB topic matching the given topic number from SIM.
- *
- * Leaves if the operation is unsuccessful.
- *
- * @param aNumber Number of topic to be deleted from SIM.
- * @param aDeleteAll Are we deleting all SIM topics, ETrue/EFalse
- */
- void DeleteSimTopicL( const TUint16 aNumber, const TBool aDeleteAll );
-
- /**
- * Deletes all topics from the SIM card.
- *
- * Leaves if the operation is unsuccessful.
- *
- */
- void DeleteAllSimTopicsL();
-
- /**
- * Passes the given CB message to each registered subscriptions
- * provider (a subscription provider is a MCN client wishing
- * CB message routing service).
- *
- * @param aMessage CB message
- */
- void RouteMessageL( const CCbsMessage& aMessage );
-
- /**
- * Returns the message collector reference.
- *
- * @return Collector reference
- */
- CCbsRecCollector& Collector();
-
- /**
- * Returns the receiver helper reference.
- *
- * @return Receiver helper reference
- */
- CCbsReceiverHelper& Interface() const;
-
- private:
-
- /**
- * Constructor.
- */
- CCbsRecEtel();
-
- /**
- * Finalizes the construction.
- */
- void ConstructL();
-
- /**
- * Establishes a connection with the EPOC Telephony server.
- *
- * Also opens the necessary EPOC Telephony server resources such as RMobilePhone and
- * RMobileBroadcastMessaging sessions.
- */
- void ConnectToEtelL();
-
- /**
- * Sets the given CB reception mode on ME.
- *
- * @param aSetting CB receive mode
- */
- void SetReceptionStatusL(
- RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter aSetting );
-
- /**
- * Returns the total number of topic subscriptions made by
- * MCN clients registered to the server.
- *
- * @return Number of subscriptions by
- * MCN clients.
- */
- TUint NumberOfMcnSubscriptions() const;
-
- /**
- * Copies cell information message body into an internal
- * cache. This way MCN clients can be provided the current
- * cell information message even without message routing service.
- *
- * The given message is assumed to be a valid cell information
- * message (CB message of topic 050).
- *
- * @param aMessage Cell information message
- */
- void ExtractCellInformation( const CCbsMessage& aMessage );
-
- /**
- * Copies cell information message body into an internal
- * cache. This way MCN clients can be provided the current
- * HomeZone message even without message routing service.
- *
- * The given message is assumed to be a valid HomeZone
- * message (CB message of topic 221).
- *
- * @param aMessage Cell information message
- */
- void ExtractHomeZoneInformation( const CCbsMessage& aMessage );
-
- /**
- * Checks if the time of the day is such that the user does
- * not want to receive any messages.
- *
- * @param aMessage CB message
- * @return ETrue if the message should
- * be recived, otherwise EFalse.
- */
- TBool CheckTimeL( const CCbsMessage* aMessage );
-
- private: // Data
-
- // Own: Collector, which is responsible for combining multipaged
- // messages.
- CCbsRecCollector* iCollector;
-
- // Own: responsible for converting 7-bit and 8-bit representations
- // into UCS-2.
- CCbsRecDecoder* iDecoder;
-
- // Current reception status. This is a cached version of
- // a variable stored in ME/SIM.
- RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter iReception;
-
- // Ref: interface to the server.
- CCbsReceiverHelper* iInterface;
-
- // Own: SMS messaging object for receiving CBS message pages
- // from the EPOC Telephony server.
- MCbsEtelMessaging* iMessaging;
-
- // Own: ETel monitor receives the message pages and forwards them to
- // CCbsRecEtel.
- CCbsRecEtelMonitor* iEtelMonitor;
-
- // Own: Filter setting handler processes asynchronous
- // Set Filter Setting command.
- CCbsSetFilterSettingHandler* iFilterSettingHandler;
-
- // EPOC Telephony server session.
- RTelServer iEtelServer;
-
- // Represents the GSM phone used for messaging and network information
- // retrieving.
-
- /*****************************************************
- * Series 60 Customer / ETel
- * Series 60 ETel API
- *****************************************************/
- RMobilePhone iGsmPhone;
-
- // Custom API is used for SIM Topic handling.
-
- /*****************************************************
- * Series 60 Customer / ETel
- * Series 60 ETel API
- *****************************************************/
- RMmCustomAPI iCustomPhone;
-
- // Own: active object which listens to changes in network state
- // and reports them to CCbsRecEtel instance.
- CCbsRecNetworkListener* iNetworkListener;
-
- // Own: set of MCN sessions that provide their topic subscriptions and
- // get cell information routing services
- CArrayFixFlat< MCbsMcnSubscriptionsProvider* >* iSubscriptionProviders;
-
- // ETrue if a cell information message has been received.
- TBool iCellInfoReceived;
-
- // Current reception status. This is a cached version of
- // a variable stored in ME.
- TBool iReceptionEnabled;
-
- // Current cell information message.
- TMcnMessage iCurrentCellInfoMessage;
-
- // Has the user set a time to limit the reception
- TBool iLimitedReception;
-
- // The current time
- TTime iNow;
- TDateTime iDateTimeNow;
-
- // Start and end times of limited reception
- TTime iStartTime;
- TTime iEndTime;
-
- // Cell info cache variables
- RMobilePhone::TMobilePhoneNetworkInfoV1 iCellInfoPLMN;
- TUint iCellInfoLAC;
- TUint iCellInfoCellId;
-
- // ETrue if HomeZone message has been received
- TBool iHomeZoneReceived;
-
- // HomeZone cache variables
- RMobilePhone::TMobilePhoneNetworkInfoV1 iHomeZonePLMN;
- TUint iHomeZoneLAC;
- TUint iHomeZoneCellId;
-
- // Current HomeZone message
- TMcnMessage iCurrentHomeZoneMessage;
-
- // Message factory
- CCbsMessageFactory* iFactory;
-
- // LC message handler
- CCbsLivecastHandler* iLivecastHandler;
-
- // Local variation bits, fetched from CenRep
- TInt iLVBits;
-
- // Indication of new SIM Topics
- TBool iNewSimTopicsAdded;
-
- __DECLARE_TEST;
- };
-
-#endif // CCBSRECETEL_H
-
-// End of File
-
-