diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/ctsydispatchlayer/inc/cphonedispatcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/ctsydispatchlayer/inc/cphonedispatcher.h Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,293 @@ +// Copyright (c) 2008-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: +// + +/** + @file + @internalAll +*/ + +#ifndef __CPHONEDISPATCHER_H_ +#define __CPHONEDISPATCHER_H_ + +// INCLUDES +#include +#include +#include +#include + +#include + + +#include "requestqueueoneshot.h" +#include +#include "mdispatchercallback.h" +#include +#include + +// FORWARD DECLARATIONS +class CMmDataPackage; +class MmMessageManagerCallback; +class CMobilePhoneNetworkListV2; +class TDispatcherHolder; + +class MLtsyDispatchPhoneGetFdnStatus; +class MLtsyDispatchPhoneGetNetworkRegistrationStatus; +class MLtsyDispatchPhoneGetHomeNetwork; +class MLtsyDispatchPhoneBootNotifyModemStatusReady; +class MLtsyDispatchPhoneBootNotifySimStatusReady; +class MLtsyDispatchPhoneSimRefreshRegister; + +class MLtsyDispatchPhoneGetServiceProviderName; +class MLtsyDispatchPhoneGetPhoneId; +class MLtsyDispatchPhoneGetDetectedNetworks; +class MLtsyDispatchPhoneGetDetectedNetworksCancel; +class MLtsyDispatchPhoneSelectNetwork; +class MLtsyDispatchPhoneSelectNetworkCancel; +class MLtsyDispatchPhoneSetNetworkSelectionSetting; +class MBootSequenceCallbacks; +class MLtsyDispatchPhoneGetCurrentNetworkInfo; +class MLtsyDispatchPhoneGetNetworkMode; +class MLtsyDispatchPhoneGetNitzInfo; +class MLtsyDispatchPhoneGetSignalStrength; +class MLtsyDispatchPhoneGetBatteryInfo; +class MLtsyDispatchPhoneNspsWakeup; +class MLtsyDispatchPhoneSetSystemNetworkMode; +class MLtsyDispatchPhoneGetCurrentSystemNetworkModes; +class MLtsyDispatchPhoneResetNetServer; +class MLtsyDispatchPhoneSetAlwaysOnMode; +class MLtsyDispatchPhoneSetDriveMode; +class MLtsyDispatchPhoneGetHspaStatus; +class MLtsyDispatchPhoneSetHspaStatus; +class MLtsyDispatchPhoneGetNetworkProviderName; +class MLtsyDispatchPhoneGetOperatorName; +class MLtsyDispatchPhoneGetCellInfo; +class MLtsyDispatchPhoneRegisterCellInfoChangeNotification; +class MLtsyDispatchPhoneGetPhoneCellInfo; +class MLtsyDispatchPhoneGetUsimServiceSupport; +class MLtsyDispatchPhoneGetCurrentActiveUsimApplication; +class MLtsyDispatchPhoneTerminateAllCalls; +class MLtsyDispatchPhoneGetSystemNetworkBand; +class MLtsyDispatchPhoneSetSystemNetworkBand; + +const TUint KPhoneIdReqOriginPhoneFu = 0x1; +const TUint KPhoneIdReqOriginSatFu = 0x2; + + +// CLASS DECLARATION + +/** + * This class is responsible for packing and unpacking data belonging + * to Phone related requests to the Licensee LTSY. + */ +class CPhoneDispatcher : public CBase, public MDispatcherCallback + { +public: + + virtual ~CPhoneDispatcher(); + + static CPhoneDispatcher* NewL( + MLtsyDispatchFactoryV1& aLtsyFactory, + MmMessageManagerCallback& aMessageManagerCallback, + MmMessageManagerCallback& aSatMessageManagerCallback, + CRequestQueueOneShot& aRequestAsyncOneShot, + MBootSequenceCallbacks& aBootSequenceObserver); + + static CPhoneDispatcher* NewLC( + MLtsyDispatchFactoryV1& aLtsyFactory, + MmMessageManagerCallback& aMessageManagerCallback, + MmMessageManagerCallback& aSatMessageManagerCallback, + CRequestQueueOneShot& aRequestAsyncOneShot, + MBootSequenceCallbacks& aBootSequenceObserver); + + // Dispatcher functions for dispatching requests DOWN to the Licensee LTSY + + TInt DispatchGetFdnStatusL(); + TInt DispatchGetNetworkRegistrationStatusL(); + TInt DispatchGetHomeNetworkL(); + TInt DispatchBootNotifyModemStatusReadyL(); + TInt DispatchBootNotifySimStatusReadyL(); + TInt DispatchSimRefreshRegisterL(const CMmDataPackage* aDataPackage); + TInt DispatchGetServiceProviderNameL(); + TInt DispatchGetPhoneIdL(TUint aRequestOrigin); + TInt DispatchGetDetectedNetworksL(); + TInt DispatchGetDetectedNetworksCancelL(); + TInt DispatchSelectNetworkL(const CMmDataPackage* aDataPackage); + TInt DispatchSelectNetworkCancelL(); + TInt DispatchSetNetworkSelectionSettingL(const CMmDataPackage* aDataPackage); + TInt DispatchNspsWakeupL(); + TInt DispatchSetSystemNetworkModeL(const CMmDataPackage* aDataPackage); + TInt DispatchGetCurrentSystemNetworkModesL(); + TInt DispatchResetNetServerL(); + TInt DispatchSetAlwaysOnModeL(const CMmDataPackage* aDataPackage); + TInt DispatchSetDriveModeL(const CMmDataPackage* aDataPackage); + TInt DispatchGetHspaStatusL(); + TInt DispatchSetHspaStatusL(const CMmDataPackage* aDataPackage); + TInt DispatchGetNetworkProviderNameL(); + TInt DispatchGetOperatorNameL(); + TInt DispatchGetCellInfoL(); + TInt DispatchRegisterCellInfoChangeNotificationL(); + TInt DispatchGetPhoneCellInfoL(); + TInt DispatchGetUsimServiceSupportL(const CMmDataPackage* aDataPackage); + TInt DispatchGetCurrentActiveUsimApplicationL(); + TInt DispatchTerminateAllCallsL(const CMmDataPackage* aDataPackage); + TInt DispatchGetSystemNetworkBandL(); + TInt DispatchSetSystemNetworkBandL(const CMmDataPackage* aDataPackage); + + + // These getters are internal to CtsyDispatcher + TInt DispatchGetCurrentNetworkInfoL(); + TInt DispatchGetNetworkModeL(); + TInt DispatchGetNitzInfoL(); + TInt DispatchGetSignalStrengthL(); + TInt DispatchGetBatteryInfoL(); + + + // Complete functions for receiving completions UP from the Licensee LTSY + // via the CCtsyDispatcherCallback object. + + void CallbackBootNotifyModemStatusReady(TInt aError, TRfStateInfo aRfStatus); + void CallbackBootNotifySimStatusReady(TInt aError); + void CallbackSimRefreshRegister(TInt aError); + void CallbackGetFdnStatus(TInt aError, RMobilePhone::TMobilePhoneFdnStatus aFdnStatus); + void CallbackGetNetworkRegistrationStatus(TInt aError, RMobilePhone::TMobilePhoneRegistrationStatus aRegStatus); + void CallbackGetHomeNetwork(TInt aError,const RMobilePhone::TMobilePhoneNetworkInfoV5& aNetworkInfo); + void CallbackNotifyNetworkRegistrationStatusChange(TInt aError, RMobilePhone::TMobilePhoneRegistrationStatus aRegStatus); + + void CallbackNotifyNetworkModeChange(TInt aError, RMobilePhone::TMobilePhoneNetworkMode aNetworkMode); + void CallbackNotifyEgprsInfoChange(TInt aError, TBool aEdgeSupported); + void CallbackNotifySignalStrengthChange(TInt aError, TInt32 aSignalStrength, TInt8 aBar); + void CallbackNotifyNitzInfoChange(TInt aError, const RMobilePhone::TMobilePhoneNITZ& aNitzInfo); + void CallbackNotifyBatteryInfoChange(TInt aError, const RMobilePhone::TMobilePhoneBatteryInfoV1& aBatteryInfo); + void CallbackNotifyCurrentNetworkChange(TInt aError, const RMobilePhone::TMobilePhoneNetworkInfoV5& aNetworkInfo, const RMobilePhone::TMobilePhoneLocationAreaV1& aLocationArea); + void CallbackNotifyRfStatusChange(TInt aError, TRfStateInfo aRfStatus); + void CallbackGetServiceProviderName(TInt aError, const RMobilePhone::TMobilePhoneServiceProviderNameV2& aServiceProvider); + void CallbackGetPhoneId(TInt aError, const RMobilePhone::TMobilePhoneIdentityV1& aPhoneId); + void CallbackGetDetectedNetworks(TInt aError, const CMobilePhoneNetworkListV2& aPhoneNetworkList); + void CallbackGetDetectedNetworksCancel(TInt aError); + void CallbackSelectNetwork(TInt aError); + void CallbackSelectNetworkCancel(TInt aError); + void CallbackSetNetworkSelectionSetting(TInt aError, RMobilePhone::TMobilePhoneSelectionMethod aSelectionMethod); + void CallbackGetCurrentNetworkInfo(TInt aError, const RMobilePhone::TMobilePhoneNetworkInfoV5& aNetworkInfo, const RMobilePhone::TMobilePhoneLocationAreaV1& aLocationArea); + void CallbackGetNetworkMode(TInt aError, RMobilePhone::TMobilePhoneNetworkMode aNetworkMode); + void CallbackGetNitzInfo(TInt aError, const RMobilePhone::TMobilePhoneNITZ& aNitzInfo); + void CallbackGetSignalStrength(TInt aError, TInt32 aSignalStrength, TInt8 aBar); + void CallbackGetBatteryInfo(TInt aError, const RMobilePhone::TMobilePhoneBatteryInfoV1& aBatteryInfo); + void CallbackNotifyNetworkSelectionSettingChange(TInt aError, RMobilePhone::TMobilePhoneSelectionMethod aSelectionMethod); + void CallbackNotifyNspsStatusChange(TInt aError, TBool aEnabled); + void CallbackNspsWakeup(TInt aError); + void CallbackSetSystemNetworkMode(TInt aError); + void CallbackGetCurrentSystemNetworkModes(TInt aError, TUint32 aCurrentSystemNetworkModes); + void CallbackNotifyRauEvent(TInt aError, RMmCustomAPI::TRauEventStatus aRauEvent); + void CallbackNotifyNetworkConnectionFailure(TInt aError); + void CallbackNotifyCellInfoChanged(TInt aError); + void CallbackNotifyDtmfEvent(TInt aError, RMmCustomAPI::TDtmfEventType aType, + RMmCustomAPI::TDtmfEvent aEvent, TChar aTone); + void CallbackNotifyDtmfEvent(TInt aError, RMobilePhone::TMobilePhoneDTMFEvent aEventType); + void CallbackNotifyCellInfoChanged(TInt aError, const RMmCustomAPI::TMmCellInfo::TGSMCellInfo& aInfo); + void CallbackNotifyCellInfoChanged(TInt aError, const RMmCustomAPI::TMmCellInfo::TWCDMACellInfo& aInfo); + void CallbackResetNetServer(TInt aError); + void CallbackSetAlwaysOnMode(TInt aError); + void CallbackSetDriveMode(TInt aError); + void CallbackGetHspaStatus(TInt aError, RMmCustomAPI::THSxPAStatus aStatus); + void CallbackSetHspaStatus(TInt aError); + void CallbackNotifyHspaStatusChanged(TInt aError, RMmCustomAPI::THSxPAStatus aStatus); + void CallbackGetNetworkProviderName(TInt aError, const TDesC& aName); + void CallbackGetOperatorName(TInt aError, RMmCustomAPI::TOperatorNameType aType, const TDesC& aName); + void CallbackGetCellInfo(TInt aError); + void CallbackGetCellInfo(TInt aError,const RMmCustomAPI::TMmCellInfo::TGSMCellInfo &aInfo); + void CallbackGetCellInfo(TInt aError,const RMmCustomAPI::TMmCellInfo::TWCDMACellInfo &aInfo); + void CallbackRegisterCellInfoChangeNotification(TInt aError); + void CallbackGetPhoneCellInfo(TInt aError, const RMobilePhone::TMobilePhoneCellInfoV9& aCellInfo); + void CallbackGetUsimServiceSupport(TInt aError, TInt aApplicationNumber, TBool aSupported); + void CallbackGetCurrentActiveUsimApplication(TInt aError, const TDesC8& aAid); + void CallbackTerminateAllCalls(TInt aError); + void CallbackGetSystemNetworkBand(TInt aError, RMmCustomAPI::TBandSelection aBand, RMmCustomAPI::TNetworkModeCaps aMode); + void CallbackSetSystemNetworkBand(TInt aError); + + // From MDispatcherCallback + void CallbackSync(CRequestQueueOneShot::TIpcDataPackage& aIpcDataPackage); + + // Other public functions + void SetDispatcherHolder(TDispatcherHolder& aDispatcherHolder); + +private: + + CPhoneDispatcher(MLtsyDispatchFactoryV1& aLtsyFactory, + MmMessageManagerCallback& aMessageManagerCallback, + MmMessageManagerCallback& aSatMessageManagerCallback, + CRequestQueueOneShot& aRequestAsyncOneShot, + MBootSequenceCallbacks& aBootSequenceObserver); + + void ConstructL(); +private: // Not owned + + MLtsyDispatchFactoryV1& iLtsyFactoryV1; + MmMessageManagerCallback& iMessageManagerCallback; + MmMessageManagerCallback& iSatMessageManagerCallback; + CRequestQueueOneShot& iRequestAsyncOneShot; + MBootSequenceCallbacks& iBootSequenceObserver; + TDispatcherHolder* iDispatcherHolder; + + // Interfaces in the Licensee LTSY, not owned by this object + + MLtsyDispatchPhoneGetFdnStatus* iLtsyDispatchPhoneGetFdnStatus; + MLtsyDispatchPhoneGetNetworkRegistrationStatus* iLtsyDispatchPhoneGetNetworkRegistrationStatus; + MLtsyDispatchPhoneGetHomeNetwork* iLtsyDispatchPhoneGetHomeNetwork; + MLtsyDispatchPhoneBootNotifyModemStatusReady* iLtsyDispatchPhoneBootNotifyModemStatusReady; + MLtsyDispatchPhoneBootNotifySimStatusReady* iLtsyDispatchPhoneBootNotifySimStatusReady; + MLtsyDispatchPhoneSimRefreshRegister* iLtsyDispatchPhoneSimRefreshRegister; + + MLtsyDispatchPhoneGetServiceProviderName* iLtsyDispatchPhoneGetServiceProviderName; + MLtsyDispatchPhoneGetPhoneId* iLtsyDispatchPhoneGetPhoneId; + MLtsyDispatchPhoneGetDetectedNetworks* iLtsyDispatchPhoneGetDetectedNetworks; + MLtsyDispatchPhoneGetDetectedNetworksCancel* iLtsyDispatchPhoneGetDetectedNetworksCancel; + MLtsyDispatchPhoneSelectNetwork* iLtsyDispatchPhoneSelectNetwork; + MLtsyDispatchPhoneSelectNetworkCancel* iLtsyDispatchPhoneSelectNetworkCancel; + MLtsyDispatchPhoneSetNetworkSelectionSetting* iLtsyDispatchPhoneSetNetworkSelectionSetting; + MLtsyDispatchPhoneGetCurrentNetworkInfo* iLtsyDispatchPhoneGetCurrentNetworkInfo; + MLtsyDispatchPhoneGetNetworkMode* iLtsyDispatchPhoneGetNetworkMode; + MLtsyDispatchPhoneGetNitzInfo* iLtsyDispatchPhoneGetNitzInfo; + MLtsyDispatchPhoneGetSignalStrength* iLtsyDispatchPhoneGetSignalStrength; + MLtsyDispatchPhoneGetBatteryInfo* iLtsyDispatchPhoneGetBatteryInfo; + MLtsyDispatchPhoneNspsWakeup* iLtsyDispatchPhoneNspsWakeup; + MLtsyDispatchPhoneSetSystemNetworkMode* iLtsyDispatchPhoneSetSystemNetworkMode; + MLtsyDispatchPhoneGetCurrentSystemNetworkModes* iLtsyDispatchPhoneGetCurrentSystemNetworkModes; + MLtsyDispatchPhoneResetNetServer* iLtsyDispatchPhoneResetNetServer; + MLtsyDispatchPhoneSetAlwaysOnMode* iLtsyDispatchPhoneSetAlwaysOnMode; + MLtsyDispatchPhoneSetDriveMode* iLtsyDispatchPhoneSetDriveMode; + MLtsyDispatchPhoneGetHspaStatus* iLtsyDispatchPhoneGetHspaStatus; + MLtsyDispatchPhoneSetHspaStatus* iLtsyDispatchPhoneSetHspaStatus; + MLtsyDispatchPhoneGetNetworkProviderName* iLtsyDispatchPhoneGetNetworkProviderName; + MLtsyDispatchPhoneGetOperatorName* iLtsyDispatchPhoneGetOperatorName; + MLtsyDispatchPhoneGetCellInfo* iLtsyDispatchPhoneGetCellInfo; + MLtsyDispatchPhoneRegisterCellInfoChangeNotification* iLtsyDispatchPhoneRegisterCellInfoChangeNotification; + MLtsyDispatchPhoneGetPhoneCellInfo* iLtsyDispatchPhoneGetPhoneCellInfo; + MLtsyDispatchPhoneGetUsimServiceSupport* iLtsyDispatchPhoneGetUsimServiceSupport; + MLtsyDispatchPhoneGetCurrentActiveUsimApplication* iLtsyDispatchPhoneGetCurrentActiveUsimApplication; + MLtsyDispatchPhoneTerminateAllCalls* iLtsyDispatchPhoneTerminateAllCalls; + MLtsyDispatchPhoneGetSystemNetworkBand* iLtsyDispatchPhoneGetSystemNetworkBand; + MLtsyDispatchPhoneSetSystemNetworkBand* iLtsyDispatchPhoneSetSystemNetworkBand; + +private: + TUint iPhoneIdReqOrigin; //to prevent two requests being fired off if sat and phone both + //request id while the other is in progress. Also to only complete + //the appropriate request. + + RMmCustomAPI::TMmCellInfo *iCellInfo; // Since this object is very big we will create it once in the heap. + + }; // class CPhoneDispatcher + +#endif // __CPHONEDISPATCHER_H_ +