--- /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 <e32std.h>
+#include <e32base.h>
+#include <e32def.h>
+#include <etelmm.h>
+
+#include <ctsy/ltsy/mltsydispatchfactory.h>
+
+
+#include "requestqueueoneshot.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "mdispatchercallback.h"
+#include <ctsy/serviceapi/cmmutility.h>
+#include <ctsy/rmmcustomapi.h>
+
+// 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_
+