diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/multimodetsy/hayes/NOTIFY.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/multimodetsy/hayes/NOTIFY.H Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,364 @@ +// Copyright (c) 1997-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: +// Common Fax/Hayes definitions +// +// + +/** + @file + @internalAll +*/ + +#ifndef __NOTIFY_H__ +#define __NOTIFY_H__ + +#include "ATBASE.H" +/** +@internalComponent +*/ +enum TNotifications + { + EModemDetection, + EIncomingCall, + ELineHookChange, + ECallHookChange, + ELineStatusChange, + ENewCallAdded, + ECallStatusChange, + ECallDurationChange, + ECallCaps, + EReadOrWriteFax, + EEndOfFaxPage, // used for both Rx and Tx modes + ERegistrationStatus, + ECurrentNetwork, + EMobileCallStatusChange, + ECallMobileCaps, + EMobileLineStatusChange, + // GPRS + EPacketContextAdded, + EPacketStatusChange, + EPacketNtwkRegStatusChange, + // GPRS Context + EPacketContextConfigChange, + EPacketContextStatusChange, + // GPRS QoS + EPacketQoSProfileChange + }; +/** +@internalComponent +*/ +enum TEvent + { + ENoEvent, + ERingOccurred, + ERingStopped, + EPhoneDetected, + EPhoneNotDetected, + EBegunConnecting, + EConnected, + EBegunHangingUp, + EBecomeIdle, + ECallAdded, + ETimePeriodElapsed, + EDataPortLoaned, + EDataPortRecovered, + EFaxReadOrWriteCompleted, + EEndOfFaxPageCompleted, + EFaxProgressChanged, + EFaxSessionTerminated, + EAddressAddedToPhoneBookCompleted, + EAddressRemovedFromPhoneBookCompleted, + ERegistrationStatusChanged, + ECurrentNetworkChanged, + // GPRS + EPacketContextAddedChanged, + EPacketStatusChanged, + // GPRS Context + EPacketContextConfigChanged, + EPacketContextStatusChanged, + // GPRS QoS + EPacketQoSProfileChanged + }; +/** +@internalComponent +*/ +struct TLastEvent + { + TEvent iLastEvent; + CTelObject* iTelObject; + }; + +class CFaxSession; +class CNotifyBase; +class CNotifications : public CBase +/** +@internalComponent +*/ + { +public: + static CNotifications* NewL(); + CNotifications(); + void ConstructL(); + ~CNotifications(); + void RegisterNotification(TNotifications aWhichNotification, + TTsyReqHandle aTsyReqHandle, + CTelObject* aTelObject, + TAny* aParams = NULL); + void CheckNotification(CTelObject* aTelObject,TEvent aEvent); + void CheckNotification(CCallBase* aCallObject,TEvent aEvent); + void CheckNotification(CFaxSession* aETelFaxObject,TEvent aEvent, + TInt aError,TAny* aParams=NULL); + void CheckNotification(CTelObject* aTelObject, TNotifications aNotification); + TBool CheckForEIncomingSmsNotification(); + void RemoveNotification(TTsyReqHandle aTsyReqHandle); + void CompleteNotificationsWithError(TInt aError); + void RemoveClientFromLastEvents(CTelObject* aTelObject); + void RemoveEventFromLastEvents(TEvent aEvent); +protected: + TInt AddLastEvent(CTelObject* aTelObject,TEvent aLastEvent); + TInt FindLastEvent(CTelObject* aTelObject); + TInt GetLastEvent(CTelObject* aTelObject, TLastEvent& aLastEvent); + void RegisterNotificationL(CNotifyBase* aNotify); +protected: + CArrayPtrFlat* iNotifications; + CArrayFixFlat* iLastEvents; // each TelObject has a last event + TBool iAlreadyChecking; + }; + +class CCallMobileFax; +class CATBase; +class CNotifyBase : public CBase +/** +@internalComponent +*/ + { +protected: + CNotifyBase(TTsyReqHandle aReqHandle,CTelObject* aTelObject); +public: + ~CNotifyBase(); + virtual TBool CheckAndCompleteNotification(CTelObject* aTelObject,TEvent aEvent,TEvent aLastEvent); + virtual TBool CheckAndCompleteNotification(CCallBase* aCallObject,TEvent aEvent,TEvent aLastEvent); + virtual TBool CheckAndCompleteNotification(CFaxSession* aETelFaxObject,TEvent aEvent,TInt aError,TAny* aParams=NULL); + virtual TBool CheckAndCompleteNotification(CTelObject* aTelObject, TNotifications aNotification); +public: + TTsyReqHandle TsyReqHandle(); + CTelObject* TelObject(); +protected: + TTsyReqHandle iReqHandle; + CTelObject* iTelObject; +private: + CArrayFixFlat* iNotifications; + }; + +class CNotifyModemDetected : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyModemDetected* NewL(RPhone::TModemDetection* aDetection,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyModemDetected(RPhone::TModemDetection* aDetection,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyModemDetected(); + virtual TBool CheckAndCompleteNotification(CTelObject* aTelObject,TEvent aEvent,TEvent iLastEvent); + virtual TBool CheckAndCompleteNotification(CCallBase* aCallObject,TEvent aEvent,TEvent aLastEvent); +private: + RPhone::TModemDetection* iDetection; + }; + +class CNotifyIncomingCall : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyIncomingCall* NewL(TDes* aName,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyIncomingCall(TDes* aName,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyIncomingCall(); + virtual TBool CheckAndCompleteNotification(CTelObject* aTelObject,TEvent aEvent,TEvent iLastEvent); + virtual TBool CheckAndCompleteNotification(CCallBase* aCallBase,TEvent aEvent,TEvent aLastEvent); +private: + TDes* iName; + }; + +class CNotifyLineHookChange : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyLineHookChange* NewL(RCall::THookStatus* aHookStatus,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyLineHookChange(RCall::THookStatus* aHookStatus,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyLineHookChange(); + virtual TBool CheckAndCompleteNotification(CCallBase* aCallObject,TEvent aEvent,TEvent iLastEvent); +private: + RCall::THookStatus* iHookStatus; + }; + +class CNotifyCallHookChange : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyCallHookChange* NewL(RCall::THookStatus* aHookStatus,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyCallHookChange(RCall::THookStatus* aHookStatus,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyCallHookChange(); + virtual TBool CheckAndCompleteNotification(CTelObject* aTelObject,TEvent aEvent,TEvent iLastEvent); + virtual TBool CheckAndCompleteNotification(CCallBase* aCallObject,TEvent aEvent,TEvent iLastEvent); +private: + RCall::THookStatus* iHookStatus; + }; + +class CNotifyLineStatusChange : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyLineStatusChange* NewL(RCall::TStatus* aStatus,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyLineStatusChange(RCall::TStatus* aStatus,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyLineStatusChange(); + virtual TBool CheckAndCompleteNotification(CTelObject* aTelObject,TEvent aEvent,TEvent iLastEvent); + virtual TBool CheckAndCompleteNotification(CCallBase* aCallObject,TEvent aEvent,TEvent iLastEvent); +private: + RCall::TStatus* iStatus; + }; + +class CNotifyMobileLineStatusChange : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyMobileLineStatusChange* NewL(RMobileCall::TMobileCallStatus* aStatus,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyMobileLineStatusChange(RMobileCall::TMobileCallStatus* aStatus,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyMobileLineStatusChange(); + virtual TBool CheckAndCompleteNotification(CTelObject* aTelObject,TEvent aEvent,TEvent iLastEvent); + virtual TBool CheckAndCompleteNotification(CCallBase* aCallObject,TEvent aEvent,TEvent iLastEvent); +private: + RMobileCall::TMobileCallStatus* iStatus; + }; + +class CNotifyLineNewCallAdded : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyLineNewCallAdded* NewL(TDes* aName,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyLineNewCallAdded(TDes* aName,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyLineNewCallAdded(); + virtual TBool CheckAndCompleteNotification(CTelObject* aTelObject,TEvent aEvent,TEvent iLastEvent); +private: + TDes* iName; + }; + +class CNotifyCallStatusChange : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyCallStatusChange* NewL(RCall::TStatus* aStatus,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyCallStatusChange(RCall::TStatus* aStatus,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyCallStatusChange(); +// virtual TBool CheckAndCompleteNotification(CTelObject* /*aTelObject*/,TEvent aEvent,TEvent aLastEvent); + virtual TBool CheckAndCompleteNotification(CCallBase* aCallObject,TEvent aEvent,TEvent iLastEvent); +private: + RCall::TStatus* iStatus; + }; + +class CNotifyMobileCallStatusChange : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyMobileCallStatusChange* NewL(RMobileCall::TMobileCallStatus* aStatus,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyMobileCallStatusChange(RMobileCall::TMobileCallStatus* aStatus,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyMobileCallStatusChange(); + virtual TBool CheckAndCompleteNotification(CCallBase* aCallObject,TEvent aEvent,TEvent iLastEvent); +private: + RMobileCall::TMobileCallStatus* iStatus; + }; + +class CNotifyCallDurationChange : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyCallDurationChange* NewL(TTimeIntervalSeconds* aTime,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyCallDurationChange(TTimeIntervalSeconds* aTime,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyCallDurationChange(); + virtual TBool CheckAndCompleteNotification(CCallBase* aCallObject,TEvent aEvent,TEvent iLastEvent); +private: + TTimeIntervalSeconds* iTime; + }; + +class CNotifyCallCaps : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyCallCaps* NewL(RCall::TCaps* aCaps,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyCallCaps(RCall::TCaps* aCaps,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyCallCaps(); + virtual TBool CheckAndCompleteNotification(CTelObject* /*aTelObject*/,TEvent aEvent,TEvent aLastEvent); + virtual TBool CheckAndCompleteNotification(CCallBase* aCallObject,TEvent aEvent,TEvent iLastEvent); +private: + RCall::TCaps* iCaps; + }; + +class CNotifyMobileCallCaps : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyMobileCallCaps* NewL(TDes8* aCaps,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyMobileCallCaps(TDes8* aCaps,TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyMobileCallCaps(); + virtual TBool CheckAndCompleteNotification(CTelObject* /*aTelObject*/,TEvent aEvent,TEvent aLastEvent); + virtual TBool CheckAndCompleteNotification(CCallBase* aCallObject,TEvent aEvent,TEvent iLastEvent); +private: + RMobileCall::TMobileCallCapsV1Pckg* iCapsPckg; + }; + +class CNotifyFaxReadOrWrite : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyFaxReadOrWrite* NewL(TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyFaxReadOrWrite(TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyFaxReadOrWrite(); + virtual TBool CheckAndCompleteNotification(CFaxSession* aETelFaxObject,TEvent aEvent,TInt aError,TAny* aParams); + }; + +class CNotifyFaxEndOfPage : public CNotifyBase +/** +@internalComponent +*/ + { +public: + static CNotifyFaxEndOfPage* NewL(TTsyReqHandle aReqHandle,CTelObject* aTelObject); + CNotifyFaxEndOfPage(TTsyReqHandle aReqHandle,CTelObject* aTelObject); + ~CNotifyFaxEndOfPage(); + virtual TBool CheckAndCompleteNotification(CFaxSession* aETelFaxObject,TEvent aEvent,TInt aError,TAny* aParams); + }; + +#endif