diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/simatktsy/inc/csatnotificationstsy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/simatktsy/inc/csatnotificationstsy.h Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,544 @@ +/* +* 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: +* Name : CSatNotificationsTsy.h +* Part of : Common SIM ATK TSY / commonsimatktsy +* Notifications-related functionality of Sat Tsy +* Version : 1.0 +* +*/ + + + + +#ifndef CSATNOTIFICATIONSTSY_H +#define CSATNOTIFICATIONSTSY_H + + +// INCLUDES +#include +#include +#include +#include "CSatTimer.h" // Timer class +#include "TSatUtility.h" +#include "TTlv.h" + +// CONSTANTS +const TUint8 KSmsHeaderIndicatorMask = 0x40; + +const TUint8 KPlusMarkCharacterCode = 0x2B; +const TUint8 KRefreshMasterFileHeader = 0x3F; +const TUint8 KRefresh1StLevelDedicatedFileHeader = 0x7F; +const TUint8 KRefresh2StLevelDedicatedFileHeader = 0x5F; + +const TUint8 KMask3 = 0x03; + +const TUint8 KMaskC0 = 0xC0; +const TUint8 KMaskF3 = 0xF3; +const TUint8 KMaskFB = 0xFB; +const TUint8 KTPDUFieldStart = 0x04; +const TUint8 KTonNpiBit8 = 0x80; + +const TUint8 KSmsVPFEnhanced = 0x08; +const TUint8 KSmsVPFRelative = 0x10; +const TUint8 KSmsVPFAbsolute = 0x18; +const TUint8 KSATSmsMTISubmitOrSubmitReport = 0x01; + +const TUint8 KNoCause = 0x00; + +const TUint8 KOnlyIfNotBusy = 0x00; +const TUint8 KOnlyIfNotBusyWithRedial = 0x01; +const TUint8 KHoldOtherCalls = 0x02; +const TUint8 KHoldOtherCallsWithRedial = 0x03; +const TUint8 KDisconnectOtherCalls = 0x04; +const TUint8 KDisconnectOtherCallsWithRedial = 0x05; + +const TUint8 KMTCall = 0x00; +const TUint8 KCallConnected = 0x01; +const TUint8 KCallDisconnected = 0x02; +const TUint8 KLocationStatus = 0x03; +const TUint8 KUserActivity = 0x04; +const TUint8 KIdleScreenAvailable = 0x05; +const TUint8 KCardReaderStatus = 0x06; +const TUint8 KLanguageSelection = 0x07; +const TUint8 KBrowserTermination = 0x08; +const TUint8 KDataAvailable = 0x09; +const TUint8 KChannelStatus = 0x0A; +const TUint8 KAccessTechnologyChange = 0x0B; +const TUint8 KDisplayParamsChanges = 0x0C; +const TUint8 KLocalConnection = 0x0D; + +const TUint8 KDefaultPollInterval = 0x00; +const TUint8 KMinPollInterval = 0x05; +const TUint8 KMaxLegacyPollInterval = 0x19; +const TUint8 KMaxPollInterval = 0xFF; + +const TUint8 KMinTimerValue = 0; +const TUint KMaxTimerValueInSeconds = 86400; +const TUint8 KDcsCbs7bitDefault = 0x0F; + +const TUint8 KLaunchBrowserCmdQualifierNotUsed = 0x01; +const TUint8 KLaunchBrowserCmdQualifierReserved = 0x04; +const TUint8 KCsdBearer = 0x01; +const TUint8 KGprsBearer = 0x03; + +const TUint8 KSpecificLanguage = 0x01; +const TUint8 KBipCsdBearer = 0x01; +const TUint8 KBipGprsBearer = 0x02; +const TUint8 KBipDefaultBearer = 0x03; +const TUint8 KBipLocalLinkBearer = 0x04; +const TUint8 KBipSendDataImmediately = 0x01; + +const TUint8 KMEIsInTheIdleState = 0x00; + +const TUint8 KMaxCommandDetailsLength = 5; + +// Maksimum value for get input string +const TUint8 KGetInputStringMaxSize = 0xEF; + +// MACROS + // None + +// DATA TYPES + // None + +// FUNCTION PROTOTYPES + // None + +// FORWARD DECLARATIONS +class CSatTsy; +class CSatTimer; +class CMmMessageManagerBase; +class CSatDataPackage; +class CSatTsyReqHandleStore; +class CSatNotifyDisplayText; +class CSatNotifyGetInkey; +class CSatNotifyGetInput; +class CSatNotifyPlayTone; +class CSatNotifySetUpMenu; +class CSatNotifySelectItem; +class CSatNotifySendSm; +class CSatNotifySendSs; +class CSatNotifySetUpEventList; +class CSatNotifySendUssd; +class CSatNotifySetUpIdleModeText; +class CSatNotifyLaunchBrowser; +class CSatNotifyPollInterval; +class CSatNotifyCallControlRequest; +class CSatNotifyTimerMgmt; +class CSatNotifyLanguageNotification; +class CSatNotifySendDtmf; +class CSatNotifyPollingOff; +class CSatNotifySetUpCall; +class CSatNotifySimSessionEnd; +class CSatNotifyLocalInfo; +class CSatNotifyRefresh; +class CSatNotifyOpenChannel; +class CSatNotifyGetChannelStatus; +class CSatNotifyMoSmControlRequest; +class CSatNotifyCloseChannel; +class CSatNotifySendData; +class CSatNotifyReceiveData; +class CSatNotifyMoreTime; + +// CLASS DECLARATION + // None + +// DESCRIPTION +/** +* Each SAT proactive command has its own class (inherited from +* MSatNotificationsBase), which holds the information +* relevant to the command in question. All proactive command classes are +* created when CSatNotificationsTsy object is created. This way each proactive +* command is handled by its own notify class. The proactive commands are +* encapsulated to individual classes in order to simplify the design and +* updating. +* +* CSatNotificationsTsy contains Sat proactive command handling functionality. +* +* @lib Commonsimatktsy +* @since 3.1 +*/ +NONSHARABLE_CLASS ( CSatNotificationsTsy ) : public CBase + { + public: // Enumerations + + enum TCachedSimAtkFiles + { + ECacheEFSST = 0x01, // EF-SST, (U)SIM Service table + ECacheEFCBMID = 0x02,// EF-CBMID, CB DataDownload message IDs + // Next 0x04, 0x08 etc.. + }; + + /** + * The data in this structure is updated each time a notification + * message is received from DOS. It provides the data needed for + * sending the terminal response. + * Additional info for NotifySetUpEventList, + * CSatNotifyLocalInfo::CompleteTerminalRespL() + * and CSatNotifyRefresh::CompleteTerminalRespDataL() + * ServiceType for CSatNotifyRefresh::CompleteNotifyL() + */ + struct TTerminalRespData + { + // Proactive command number + TUint8 iPCmdNumber; + // Command details tlv + TBuf8iCommandDetails; + // General result for NotifySetUpEventList + TUint8 iGeneralResult; + // Additional info + TBuf iAdditionalInfo; + }; + + + /* + * This structure contains the address data of the service center + * needed for MO-SMS Control envelope. + */ + struct TAddressData + { + TPtrC8 iRPDestinationAddr; // RP Destination Address + TPtrC8 iTPDestinationAddr; // TP Destination Address + }; + + /** + * The data in this structure is used for a response to the NAA for a + * MO SM Control notification request. The possible values of the + * result are defined in TSatUtility.h + */ + struct TMoSmCtrlData + { + TAddressData iAddressData; // RP and TP Destination addresses + RSat::TAlphaId* iAlphaId; // Pointer to the Alpha ID object + TBool iIsAlphaIdEmpty; // Declares id Alpha ID is empty + TUint8 iResult; // MO SM Ctrl Result, + }; + + + /* + * This structure contains local information. + * Used in event handling and by CSatNotifyLocalInfo + */ + struct TLocalInformation + { + TUint16 iLocationAreaCode; // Location area code + TUint16 iCellId; // Cell Id + TBuf8 iOperatorCode; // Operator code + }; + + /** + * This Structure provides Refresh specific information + * Used: CSatNotifyRefresh::RefreshAllowed() + */ + struct TRefreshInfo + { + TBuf8 iFileList; + TBuf8 iAid; + TUint16 iInternalCache; + }; + /** + * This Structure provides Ss and Ussd status + * Used: CSatNotifyLaunchBrowser::SetSsStatus() + */ + enum TSsStatus + { + ENotBusy, + ESsBusy, + EUssdBusy + }; + public: + + /** + * Two-phased constructor. + * @param aSatTsy: Pointer to Sat TSY + * @param aSatReqHandleStore: Pointer to request handle store + * @return created object + */ + static CSatNotificationsTsy* NewL( CSatTsy* aSatTsy, + CSatTsyReqHandleStore* aSatReqHandleStore ); + + /** + * C++ Destructor. + */ + ~CSatNotificationsTsy(); + + private: + + /** + * By default C++ constructor is private. + * @param aSatTsy: Pointer to Sat TSY + * @param aSatReqHandleStore: Pointer to request handle store + */ + CSatNotificationsTsy( CSatTsy* aSatTsy, + CSatTsyReqHandleStore* aSatReqHandleStore ); + + /** + * Class attributes are created in ConstructL. + */ + void ConstructL(); + + public: // New functions + + /** + * Handles extended client requests. + * @param aTsyReqHandle: Telephony service request handle + * @param aIpc: Request IPC number + * @param aPackage: Packed request parameters + * @return Result of the request + */ + TInt DoExtFuncL( + const TTsyReqHandle aTsyReqHandle, + const TInt aIpc, + const TDataPackage& aPackage ); + + /** + * Cancels request that's IPC number and request handle are given in + * parameters + * @param aIpc: Request IPC number + * @param aTsyReqHandle: TSY request handle + * @return Result of the request + */ + TInt CancelService( const TInt aIpc, + const TTsyReqHandle aTsyReqHandle ); + + /** + * Sets PollingOff/PollInterval response data, calls CreateTerminalRespL + * @param aDataPackage: Data + * @param aErrorCode: error code possible values KErrNone/KErrArgument + */ + void SetPollingResultL( CSatDataPackage* aDataPackage, + TInt aErrorCode ); + + /** + * Set Polling Interval, sending a request to DOS + * @param aValue: Polling interval in seconds + */ + void SetPollingIntervalL( TUint8 aValue ); + + /** + * Timer Expiration handler + * @param aTimerId: Timer identification + * @param aTimerValue: Timer value + * @return Success/Failure value + */ + TInt TimerExpirationL( TInt aTimerId, TUint32 aTimerValue ); + + /** + * Returns pointer to SatTimer + * @return Pointer to CSatTimer + */ + CSatTimer* GetSatTimer(); + + /** + * Returns pointer to CSatNotifySetUpCall + * @return Pointer to CSatNotifySetUpCall + */ + CSatNotifySetUpCall* SatNotifySetUpCall(); + + /** + * Sets proactive command on going status + * @param aDataPackage: Packed data + * @param aResult: result + */ + void SetProactiveCommandOnGoingStatus( CSatDataPackage* aDataPackage, + TInt aResult ); + + /** + * Completes the notification request received from client + * @param aDataPackage: Packed Bertlv data + * @param aResult: result + * @return KErrNone + */ + TInt CompletePCmdL( CSatDataPackage* aDataPackage, TInt aResult ); + + /* + * Returns iIsMoSmsCtrlActivated + * This is used by CSatTsy + * @return ETrue if MO-SMS Control is activated + */ + TBool IsMoSmControlActivated(); + + /** + * Set PollingOff value + * @param aPollingOff: Polling off value + */ + void SetPollingOffStatus( TBool aPollingOff ); + + /** + * Returns iPollingOff + * This is used by CSatNotifyPollingOff and CSatNotifyPollInterval + * @return ETrue if Polling is ON + */ + TBool PollingOffStatus( ); + + /** + * Add Location Information simple TLV to TTlv + * @param aTlv: Target for location information + */ + void AddLocationInformationToTlv( TTlv& aTlv ); + + /** + * Passes Alpha Id for notification completion method + * @param aAlphaId: Reference to the Alpha ID + * @param aResult: Result of the call control request + */ + void NotifyClientForAlphaId( RSat::TAlphaIdBuf& aAlphaId, + RSat::TControlResult aResult ); + + /** + * Returns pointer to the request handle store + */ + CSatTsyReqHandleStore* RequestHandleStore(); + + protected: + + /** + * Notifies DOS of being ready to receive indications, reguests + * the wanted msg from pending state if exists + * @param aPCmdMsgType: Notification msg type to be received. + * @return success/failure if msg was found + */ + TInt NotifySatReadyForNotification( TUint8 aPCmdMsgType ); + + private: + + /** + * Terminal response command handler from client application. + * @param aPCmd: Proactive command Id + * @param aRsp: Response structure + * @param aTsyReqHandle: Telephony service request handle + * @return KErrNone, KErrGeneral or KErrNotSupported + */ + TInt TerminalResponseL( RSat::TPCmd* aPCmd, TDes8* aRsp, + TTsyReqHandle aTsyReqHandle ); + + /** + * Completes terminal response + * @param TInt aErrorCode: error/success code + */ + void CompleteTerminalResponse( TInt aErrorCode ); + + /** + * Test if a command was performed successfully + * @param aGeneralResult: General result value + * @return ETrue if command performed successfully, else EFalse + */ + TBool CommandPerformedSuccessfully( TUint8 aGeneralResult ); + + /** + * Cell broadcast data download from client application + * @param aTsyReqHandle: Telephony service request handle + * @return KErrNone + */ + TInt NotifyCbDownload( TTsyReqHandle aTsyReqHandle ); + + /** + * Sms-Pp data download from client application + * @param aTsyReqHandle: Telephony service request handle + * @return KErrNone + */ + TInt NotifySmsPpDownload( TTsyReqHandle aTsyReqHandle ); + + protected: // Data + + // Pointer to Sat TSY + CSatTsy* iSatTsy; + // Timer class object + CSatTimer* iSatTimer; + + private: // Data + + // Proactive command class pointers + // created when this class is created, all classes + // need pointers to this class + CSatNotifyDisplayText* iNotifyDisplayText; + CSatNotifyGetInkey* iNotifyGetInkey; + CSatNotifyGetInput* iNotifyGetInput; + CSatNotifyPlayTone* iNotifyPlayTone; + CSatNotifySetUpMenu* iNotifySetUpMenu; + CSatNotifySelectItem* iNotifySelectItem; + CSatNotifySendSm* iNotifySendSm; + CSatNotifySendSs* iNotifySendSs; + CSatNotifySetUpEventList* iNotifySetUpEventList; + CSatNotifySendUssd* iNotifySendUssd; + CSatNotifySetUpIdleModeText* iNotifySetUpIdleModeText; + CSatNotifyLaunchBrowser* iNotifyLaunchBrowser; + CSatNotifyPollInterval* iNotifyPollInterval; + CSatNotifyCallControlRequest* iNotifyCallControlRequest; + CSatNotifySetUpCall* iNotifySetUpCall; + CSatNotifyRefresh* iNotifyRefresh; + CSatNotifySimSessionEnd* iNotifySimSessionEnd; + CSatNotifySendDtmf* iNotifySendDtmf; + CSatNotifyPollingOff* iNotifyPollingOff; + CSatNotifyLocalInfo* iNotifyLocalInfo; + CSatNotifyTimerMgmt* iNotifyTimerMgmt; + CSatNotifyLanguageNotification* iNotifyLanguageNotification; + CSatNotifyOpenChannel* iNotifyOpenChannel; + CSatNotifyMoSmControlRequest* iNotifyMoSmControlRequest; + CSatNotifyGetChannelStatus* iNotifyGetChannelStatus; + CSatNotifyCloseChannel* iNotifyCloseChannel; + CSatNotifySendData* iNotifySendData; + CSatNotifyReceiveData* iNotifyReceiveData; + CSatNotifyMoreTime* iNotifyMoreTime; + + // Terminal response data class + TTerminalRespData iTerminalRespData; + // Request handle store + CSatTsyReqHandleStore* iSatReqHandleStore; + // Message manager + CMmMessageManagerBase* iMessageManager; + // Flag is ETrue after Polling Off, EFalse after Polling Interval PCmd + TBool iPollingOff; + // Flag is set true if requested Poll Interval + // is longer than KMaxLegacyPollInterval + TBool iLongPollIntervalReq; + + private: // Friend classes + + // Notification classes + friend class CSatNotifyDisplayText; + friend class CSatNotifyGetInkey; + friend class CSatNotifyGetInput; + friend class CSatNotifyPlayTone; + friend class CSatNotifySetUpMenu; + friend class CSatNotifySelectItem; + friend class CSatNotifySendSm; + friend class CSatNotifySendSs; + friend class CSatNotifySetUpEventList; + friend class CSatNotifySendUssd; + friend class CSatNotifySetUpIdleModeText; + friend class CSatNotifyLaunchBrowser; + friend class CSatNotifyPollInterval; + friend class CSatNotifyCallControlRequest; + friend class CSatNotifySetUpCall; + friend class CSatNotifyRefresh; + friend class CSatNotifySimSessionEnd; + friend class CSatNotifySendDtmf; + friend class CSatNotifyPollingOff; + friend class CSatNotifyLocalInfo; + friend class CSatNotifyTimerMgmt; + friend class CSatNotifyLanguageNotification; + friend class CSatNotifyOpenChannel; + friend class CSatNotifyGetChannelStatus; + friend class CSatNotifyMoSmControlRequest; + friend class CSatNotifyCloseChannel; + friend class CSatNotifySendData; + friend class CSatNotifyReceiveData; + friend class CSatNotifyMoreTime; + }; + +#endif // CSATNOTIFICATIONSTSY_H + +// End of File