// 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:
//
/**
@file
@publishedPartner
@released
*/
#ifndef __ET_TSY_H
#define __ET_TSY_H
//
// This header file makes it clearer to the TSY developer which functions are to be implemented
// in the TSY and which are not. However these classes are not to be derived from in the TSY
// but are inherited by base classes in the server. The TSY should derive from CPhoneBase,
// CLineBase, CCallBase, CFaxBase, CPhoneFactoryBase and for extensions CSubSessionExtBase.
//
#include <et_struc.h>
#include <etel.h>
/**
@publishedPartner
@released
*/
typedef TUint32 TTsyReqHandle;
/**
@publishedPartner
*/
const TUint KUidEtelServerModule = 0x100002A4;
const TUint KUidUnicodeEtelServerModule = 0x10003D3C;
const TInt KETelServerVersion = 1;
/**
@publishedPartner
@released
*/
const TUint KReqModeMultipleCompletionEnabled=0x00000001;
const TUint KReqModeFlowControlObeyed=0x00000002;
const TUint KReqModeRePostImmediately=0x00000004;
const TUint KReqModeMultipleCompletionWithInterestLevel=0x00000008;
const TUint KReqModeSessionBased=0x00000010;
const TUint KReqModeTransferToDefaultHandler=0x00000020;
class CTelObject;
class MTelObjectTSY
/**
@publishedPartner
*/
{
public:
typedef TUint TReqMode;
public:
//
// Exported functions to be called by the TSY
//
/**
@publishedPartner
@released
*/
IMPORT_C virtual void ReqCompleted(const TTsyReqHandle aTsyReqHandle,const TInt aError)=0;
/**
@publishedPartner
@released
*/
IMPORT_C virtual void FlowControlSuspend()=0;
/**
@publishedPartner
@released
*/
IMPORT_C virtual void FlowControlResume()=0;
/**
@publishedPartner
@released
*/
IMPORT_C virtual TInt UpCallOption(const TInt aOptionNumber, TAny* aData)=0;
/**
@publishedPartner
@released
*/
IMPORT_C virtual TInt ServerVersion() const=0;
//
// Pure virtuals that only need to be implemented if writing extensions, as there are
// implementations in the base classes in the server
//
/**
@publishedPartner
@released
*/
virtual TReqMode ReqModeL(const TInt aIpc)=0;
/**
@publishedPartner
@released
*/
virtual TInt NumberOfSlotsL(const TInt aIpc)=0;
/**
@publishedPartner
@released
*/
virtual TInt CancelService(const TInt aIpc,const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt DownCallOption(const TInt aOptionNumber, TAny* aData)=0;
/**
@publishedPartner
@released
*/
virtual TSecurityPolicy GetRequiredPlatSecCaps(const TInt aIpc)=0;
//
// Pure virtuals that must be implemented by the TSY
//
/**
@publishedPartner
@released
*/
virtual void Init()=0;
/**
@publishedPartner
@released
*/
virtual CTelObject* OpenNewObjectByNameL(const TDesC& aName)=0;
/**
@publishedPartner
@released
*/
virtual CTelObject* OpenNewObjectL(TDes& aName)=0;
/**
@publishedPartner
@released
*/
virtual TInt RegisterNotification(const TInt aIpc)=0;
/**
@publishedPartner
@released
*/
virtual TInt DeregisterNotification(const TInt aIpc)=0;
/**
@publishedPartner
@released
*/
virtual RHandleBase* GlobalKernelObjectHandle()=0;
};
class TDataPackage
/**
@publishedPartner
@released
*/
{
public:
typedef enum
{
EPackageUnknown,
EPackage1n2n,
EPackage1u2u,
EPackage1n2u,
EPackage1n,
EPackage1u
} TDataPackageType;
public:
TDataPackage();
TDataPackage(TDes8* aDes1, TDes8* aDes2);
TDataPackage(TDes16* aDes1, TDes16* aDes2);
TDataPackage(TDes8* aDes1, TDes16* aDes2);
public:
IMPORT_C TAny* Ptr1() const; // used when accessing a structure which was packaged up on the client
// side as a descriptor
IMPORT_C TAny* Ptr2() const; // functions will return NULL if the corresponding pointer is NULL
IMPORT_C TDes8* Des1n() const; // used when accessing a specific TDes8 descriptor
IMPORT_C TDes8* Des2n() const;
IMPORT_C TDes16* Des1u() const; // used when accessing a TDes16 descriptor (ie a TDes in
// UNICODE builds)
IMPORT_C TDes16* Des2u() const;
// return the package type by checking the private members
IMPORT_C TDataPackageType Type() const;
private:
TDes8* iDes1;
TDes8* iDes2;
TDes16* iDes1u;
TDes16* iDes2u;
};
class MSubSessionExtBaseTSY
/**
@publishedPartner
*/
{
public:
//
// Pure virtual to be implemented by the TSY
//
/**
@publishedPartner
@released
*/
virtual TInt ExtFunc(const TTsyReqHandle aTsyReqHandle,const TInt aIpc,const TDataPackage& aDataPackage)=0;
};
class MFaxBaseTSY
/**
@publishedPartner
*/
{
public:
//
// Pure virtuals to be implemented by the TSY
//
/**
@publishedPartner
@released
*/
virtual TInt Read(const TTsyReqHandle aTsyReqHandle,TDes8* aFaxPage)=0;
/**
@publishedPartner
@released
*/
virtual TInt Write(const TTsyReqHandle aTsyReqHandle,TDesC8* aFaxPage)=0;
/**
@publishedPartner
@released
*/
virtual TInt WaitForEndOfPage(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt TerminateFaxSession(const TTsyReqHandle aTsyReqHandle)=0;
};
class CCallBase;
class CFaxSharedFileHandles;
class MCallBaseTSY
/**
@publishedPartner
*/
{
public:
typedef enum
{
EOwnedUnowned,
EOwnedFalse,
EOwnedTrue,
EOwnedPriorityClient
} TCallOwnership;
public:
//
// Exported functions to be called by the TSY
//
/**
@publishedPartner
@released
*/
IMPORT_C virtual TCallOwnership CheckOwnership(const TTsyReqHandle aTsyReqHandle) const=0;
/**
@publishedPartner
@released
*/
IMPORT_C virtual TInt SetUnowned()=0;
/**
@publishedPartner
@released
*/
IMPORT_C virtual TInt SetOwnership(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
IMPORT_C virtual TBool CheckPriorityClient(const TTsyReqHandle aTsyReqHandle) const=0;
/**
@publishedPartner
@released
*/
IMPORT_C virtual CCallBase* ResolveSubSessionHandle(const TTsyReqHandle aTsyReqHandle,const TInt aSubSessionHandle)=0;
/**
@publishedPartner
@released
*/
IMPORT_C virtual void RelinquishOwnershipCompleted(const TInt aError)=0;
/**
@publishedPartner
@released
*/
IMPORT_C virtual void RecoverDataPortAndRelinquishOwnershipCompleted(const TInt aError)=0;
/**
@publishedPartner
@released
*/
IMPORT_C virtual RFax::TProgress* CreateFaxProgressChunk()=0;
/**
@publishedPartner
@released
*/
IMPORT_C virtual void DeleteFaxProgressChunk()=0;
//
// Exported functions that should be implemented by the TSY
//
/**
@publishedPartner
@released
*/
IMPORT_C virtual TInt SetFaxSharedHeaderFile(const TTsyReqHandle aTsyReqHandle, CFaxSharedFileHandles* aFaxSharedFileHandles)=0; // SetFaxSharedHeaderFile needn't be exported - however it remains so for BC reasons
//
// Pure virtuals to be implemented by the TSY
//
/**
@publishedPartner
@released
*/
virtual TInt GetInfo(const TTsyReqHandle aTsyReqHandle,RCall::TCallInfo* aCallInfo)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyCapsChange(const TTsyReqHandle aTsyReqHandle,RCall::TCaps* aCaps)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyCapsChangeCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyHookChange(const TTsyReqHandle aTsyReqHandle,RCall::THookStatus* aHookStatus)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyHookChangeCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyStatusChange(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aStatus)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyStatusChangeCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyDurationChange(const TTsyReqHandle aTsyReqHandle,TTimeIntervalSeconds* aStatus)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyDurationChangeCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt LoanDataPort(const TTsyReqHandle aTsyReqHandle,RCall::TCommPort*)=0;
/**
@publishedPartner
@released
*/
virtual TInt LoanDataPortCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt RecoverDataPort(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt RecoverDataPortAndRelinquishOwnership()=0;
/**
@publishedPartner
@released
*/
virtual TInt GetStatus(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aStatus)=0;
/**
@publishedPartner
@released
*/
virtual TInt GetCaps(const TTsyReqHandle aTsyReqHandle,RCall::TCaps* aCaps)=0;
/**
@publishedPartner
@released
*/
virtual TInt Dial(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams,TDesC* aTelNumber)=0;
/**
@publishedPartner
@released
*/
virtual TInt DialCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt Connect(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams)=0;
/**
@publishedPartner
@released
*/
virtual TInt ConnectCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt AnswerIncomingCall(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams)=0;
/**
@publishedPartner
@released
*/
virtual TInt AnswerIncomingCallCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt HangUp(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt HangUpCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt TransferOwnership(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt AcquireOwnership(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt AcquireOwnershipCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt RelinquishOwnership()=0;
/**
@publishedPartner
@released
*/
virtual TInt GetBearerServiceInfo(const TTsyReqHandle aTsyReqHandle,RCall::TBearerService* aService)=0;
/**
@publishedPartner
@released
*/
virtual TInt GetCallParams(const TTsyReqHandle aTsyReqHandle,TDes8* aParams)=0;
/**
@publishedPartner
@released
*/
virtual TInt GetCallDuration(const TTsyReqHandle aTsyReqHandle,TTimeIntervalSeconds* aTime)=0;
/**
@publishedPartner
@released
*/
virtual TInt GetFaxSettings(const TTsyReqHandle aTsyReqHandle,RCall::TFaxSessionSettings* aSettings)=0;
/**
@publishedPartner
@released
*/
virtual TInt SetFaxSettings(const TTsyReqHandle aTsyReqHandle,const RCall::TFaxSessionSettings* aSettings)=0;
};
struct TCallInfoIndex;
class MLineBaseTSY
/**
@publishedPartner
*/
{
public:
//
// Pure virtuals to be implemented by the TSY
//
/**
@publishedPartner
@released
*/
virtual TInt GetInfo(const TTsyReqHandle aTsyReqHandle,RLine::TLineInfo* aLineInfo)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyCapsChange(const TTsyReqHandle aTsyReqHandle,RLine::TCaps* aCaps)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyCapsChangeCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyIncomingCall(const TTsyReqHandle aTsyReqHandle, TName* aName)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyIncomingCallCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyHookChange(const TTsyReqHandle aTsyReqHandle,RCall::THookStatus* aHookStatus)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyHookChangeCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyStatusChange(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aLineStatus)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyStatusChangeCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyCallAdded(const TTsyReqHandle aTsyReqHandle,TName* aName)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyCallAddedCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt GetCaps(const TTsyReqHandle aTsyReqHandle,RLine::TCaps* aCaps)=0;
/**
@publishedPartner
@released
*/
virtual TInt GetStatus(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aStatus)=0;
/**
@publishedPartner
@released
*/
virtual TInt GetHookStatus(const TTsyReqHandle aTsyReqHandle,RCall::THookStatus* aHookStatus)=0;
/**
@publishedPartner
@released
*/
virtual TInt EnumerateCall(const TTsyReqHandle aTsyReqHandle,TInt* aCount)=0;
/**
@publishedPartner
@released
*/
virtual TInt GetCallInfo(const TTsyReqHandle aTsyReqHandle,TCallInfoIndex* aCallInfo)=0;
};
struct TLineInfoIndex;
class MPhoneBaseTSY
/**
@publishedPartner
*/
{
public:
//
// Pure virtuals to be implemented by the TSY
//
/**
@publishedPartner
@released
*/
virtual TInt GetInfo(const TTsyReqHandle aTsyReqHandle,RPhone::TPhoneInfo* aPhoneInfo)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyCapsChange(const TTsyReqHandle aTsyReqHandle,RPhone::TCaps* aCaps)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyCapsChangeCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt ControlledInitialisation(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt ControlledInitialisationCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyModemDetected(const TTsyReqHandle aTsyReqHandle,RPhone::TModemDetection* aDetection)=0;
/**
@publishedPartner
@released
*/
virtual TInt NotifyModemDetectedCancel(const TTsyReqHandle aTsyReqHandle)=0;
/**
@publishedPartner
@released
*/
virtual TInt GetCaps(const TTsyReqHandle aTsyReqHandle,RPhone::TCaps* aCap)=0;
/**
@publishedPartner
@released
*/
virtual TInt GetStatus(const TTsyReqHandle aTsyReqHandle,RPhone::TStatus* aStatus)=0;
/**
@publishedPartner
@released
*/
virtual TInt EnumerateLines(const TTsyReqHandle aTsyReqHandle,TInt* aCount)=0;
/**
@publishedPartner
@released
*/
virtual TInt GetLineInfo(const TTsyReqHandle aTsyReqHandle,TLineInfoIndex* aLineInfo)=0;
};
class CPhoneBase;
class MPhoneFactoryBaseTSY
/**
@publishedPartner
*/
{
public:
//
// Exported functions to be called by the TSY
//
/**
@publishedPartner
@released
*/
IMPORT_C virtual TBool QueryVersionSupported(TVersion const& aVersion) const=0;
//
// Pure virtuals to be implemented by the TSY
//
/**
@publishedPartner
@released
*/
virtual CPhoneBase* NewPhoneL(const TDesC& aName)=0;
/**
@publishedPartner
@released
*/
virtual TInt GetPhoneInfo(const TInt aIndex,RTelServer::TPhoneInfo& aInfo)=0;
/**
@publishedPartner
@released
*/
virtual TInt EnumeratePhones()=0;
/**
@publishedPartner
@released
*/
virtual TBool IsSupported(const TInt aMixin)=0;
};
#endif