--- a/telephonyserver/etelmultimode/DTsy/mmtsyline.cpp Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserver/etelmultimode/DTsy/mmtsyline.cpp Thu May 06 15:10:38 2010 +0100
@@ -1,276 +1,276 @@
-// 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:
-//
-
-#include "mmtsy.h"
-#include "testdef.h"
-#include "ETELMM.H"
-#include <et_clsvr.h>
-#include "Dmmlog.h"
-
-
-//
-// CLineDMmTsy
-//
-CLineDMmTsy* CLineDMmTsy::NewL(CPhoneDMmTsy *aPhone,CPhoneFactoryDummyBase* aFac)
- {
-
- CLineDMmTsy* line=new(ELeave) CLineDMmTsy(aPhone,aFac);
- CleanupStack::PushL(line);
- line->ConstructL();
- CleanupStack::Pop();
- return line;
- }
-
-CLineDMmTsy::CLineDMmTsy(CPhoneDMmTsy *aPhone, CPhoneFactoryDummyBase* aFac)
- :CLineDummyBase(aFac), iPhone(aPhone)
- {}
-
-void CLineDMmTsy::ConstructL()
- {
- CLineDummyBase::ConstructL();
- LOGTEXT(_L8("CLineDMmTsy created"));
- }
-
-
-CLineDMmTsy::~CLineDMmTsy()
- {
- LOGTEXT(_L8("CLineDMmTsy destroyed"));
- }
-
-
-CTelObject* CLineDMmTsy::OpenNewObjectByNameL(const TDesC& aName)
- {
- // An existing call opened by a client - client provides name of call to open
- if((aName.Compare(DMMTSY_CALL_NAME1)==KErrNone) ||
- (aName.Compare(DMMTSY_CALL_NAME2)==KErrNone) ||
- (aName.Compare(DMMTSY_CALL_NAME3)==KErrNone))
-
- return REINTERPRET_CAST(CTelObject*,CCallDMmTsy::NewL(iPhone,FacPtr()));
-
- return NULL;
- }
-
-CTelObject* CLineDMmTsy::OpenNewObjectL(TDes& aNewName)
- {
- // A new call opened by a client will have its name allocated by the TSY
- aNewName.Append(_L("Call"));
- aNewName.AppendNum(++iCallObjectCount);
-
- return CCallDMmTsy::NewL(iPhone,FacPtr());
- }
-
-
-CTelObject::TReqMode CLineDMmTsy::ReqModeL(const TInt aIpc)
- {
- // ReqModeL is called from the server's CTelObject::ReqAnalyserL
- // in order to check the type of request it has
-
- // The following are example request types for this dummy TSY
- // All TSYs do not have to have these request types but they have been given
- // "sensible" values in this test code
-
- CTelObject::TReqMode ret=0;
- switch (aIpc)
- {
-//
-// Non-flow control requests
-//
- case EMobileLineGetMobileLineStatus:
- break;
-//
-// Notification Requests
-//
- case EMobileLineNotifyMobileLineStatusChange:
- ret=KReqModeMultipleCompletionEnabled | KReqModeRePostImmediately;
- break;
-//
-// Cancel Requests
-//
- case EMobileLineNotifyMobileLineStatusChangeCancel:
- User::Leave(KErrNotSupported);
- break;
-
- default:
- ret=CLineBase::ReqModeL(aIpc);
- break;
- }
- return ret;
- }
-
-
-TInt CLineDMmTsy::RegisterNotification(const TInt aIpc)
- {
- // RegisterNotification is called when the server recognises that this notification
- // is being posted for the first time on this sub-session object.
-
- // It enables the TSY to "turn on" any regular notification messages that it may
- // receive from the phone
-
- switch (aIpc)
- {
- case EMobileLineNotifyMobileLineStatusChange:
- LOGTEXT(_L8("CLineDMmTsy: RegisterNotification - Line Status Change "));
- return KErrNone;
- default:
- // Unknown or invalid sms IPC
- return KErrNotSupported;
- }
- }
-
-TInt CLineDMmTsy::DeregisterNotification(const TInt aIpc)
- {
- // DeregisterNotification is called when the server recognises that this notification
- // will not be posted again because the last client to have a handle on this sub-session
- // object has just closed the handle.
-
- // It enables the TSY to "turn off" any regular notification messages that it may
- // receive from the phone
-
- switch (aIpc)
- {
- case EMobileLineNotifyMobileLineStatusChange:
- LOGTEXT(_L8("CLineDMmTsy: DeregisterNotification - Line Status Change"));
- return KErrNone;
- default:
- // Unknown or invalid sms IPC
- return KErrNotSupported;
- }
- }
-
-TInt CLineDMmTsy::NumberOfSlotsL(const TInt aIpc)
- {
- // NumberOfSlotsL is called by the server when it is registering a new notification
- // It enables the TSY to tell the server how many buffer slots to allocate for
- // "repost immediately" notifications that may trigger before clients collect them
-
- TInt numberOfSlots=1;
- switch (aIpc)
- {
- case EMobileLineNotifyMobileLineStatusChange:
- LOGTEXT(_L8("CLineDMmTsy: Registered with 5 slots"));
- numberOfSlots=5;
- break;
- default:
- // Unknown or invalid Phone IPC
- User::Leave(KErrNotSupported);
- break;
- }
- return numberOfSlots;
- }
-
-TInt CLineDMmTsy::ExtFunc(const TTsyReqHandle aTsyReqHandle,const TInt aIpc,
- const TDataPackage& aPackage)
- {
- // ExtFunc is called by the server when it has a "extended", i.e. non-core ETel request
- // for the TSY to process
- // A request handle, request type and request data are passed to the TSY
-
- TAny* dataPtr=aPackage.Ptr1();
-
- // The request data has to extracted from TDataPackage and the TAny* pointers have to
- // be "cast" to the expected request data type
-
- switch (aIpc)
- {
-//
-// Non-flow control requests
-//
- case EMobileLineGetMobileLineStatus:
- return GetMobileLineStatus(aTsyReqHandle,
- REINTERPRET_CAST(RMobileCall::TMobileCallStatus*, dataPtr));
-
-//
-// Notification Requests
-//
- case EMobileLineNotifyMobileLineStatusChange:
- return NotifyMobileLineStatusChange(aTsyReqHandle,
- REINTERPRET_CAST(RMobileCall::TMobileCallStatus*, dataPtr));
-
-//
-// Cancel Requests
-//
- case EMobileLineNotifyMobileLineStatusChangeCancel:
- return NotifyMobileLineStatusChangeCancel(aTsyReqHandle);
-
- default:
- return KErrNotSupported;
- }
- }
-
-TInt CLineDMmTsy::CancelService(const TInt aIpc,const TTsyReqHandle aTsyReqHandle)
- {
- // CancelService is called by the server when it is "cleaning-up" any still outstanding
- // asynchronous requests before closing a client's sub-session.
- // This will happen if a client closes its R-class handle without cancelling outstanding
- // asynchronous requests.
-
- switch (aIpc)
- {
-//
-// Cancel Requests
-//
- case EMobileLineNotifyMobileLineStatusChange:
- return NotifyMobileLineStatusChangeCancel(aTsyReqHandle);
- default:
- return CLineBase::CancelService(aIpc,aTsyReqHandle);
- }
- }
-
-TInt CLineDMmTsy::GetCaps(const TTsyReqHandle aTsyReqHandle,RLine::TCaps* aCaps)
- {
- //set the aux voice bit
- aCaps->iFlags |= DMMTSY_MOBILE_LINE_AUX_VOICE;
-
- ReqCompleted(aTsyReqHandle,KErrNone);
- return KErrNone;
- }
-
-
-/***********************************************************************************/
-//
-// The following methods are called from ExtFunc and/or CancelService.
-// Each of these will process a TSY request or cancel a TSY request
-// Here, example values are returned or checked within this dummy TSY in order to ensure
-// that the integrity of the data passed to/from client is maintained
-//
-/***********************************************************************************/
-
-TInt CLineDMmTsy::GetMobileLineStatus(const TTsyReqHandle aTsyReqHandle,RMobileCall::TMobileCallStatus* aStatus)
- {
- LOGTEXT(_L8("CLineDMmTsy::GetMobileLineStatus called"));
- *aStatus=DMMTSY_CALL_STATUS1;
- ReqCompleted(aTsyReqHandle,KErrNone);
- return KErrNone;
- }
-
-TInt CLineDMmTsy::NotifyMobileLineStatusChange(const TTsyReqHandle aTsyReqHandle, RMobileCall::TMobileCallStatus* aStatus)
- {
- if (!iNotifyMobileLineStatusChange++)
- {
- LOGTEXT(_L8("CLineDMmTsy::NotifyMobileLineStatusChange called"));
- *aStatus=DMMTSY_CALL_STATUS2;
- iPhone->AddDelayedReq(aTsyReqHandle,this);
- }
- return KErrNone;
- }
-
-TInt CLineDMmTsy::NotifyMobileLineStatusChangeCancel(const TTsyReqHandle aTsyReqHandle)
- {
- LOGTEXT(_L8("CLineDMmTsy::NotifyMobileLineStatusChangeCancel called"));
- iPhone->RemoveDelayedReq(aTsyReqHandle);
- ReqCompleted(aTsyReqHandle,KErrCancel);
- return KErrNone;
- }
-
+// 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:
+//
+
+#include "mmtsy.h"
+#include "testdef.h"
+#include "ETELMM.H"
+#include <et_clsvr.h>
+#include "Dmmlog.h"
+
+
+//
+// CLineDMmTsy
+//
+CLineDMmTsy* CLineDMmTsy::NewL(CPhoneDMmTsy *aPhone,CPhoneFactoryDummyBase* aFac)
+ {
+
+ CLineDMmTsy* line=new(ELeave) CLineDMmTsy(aPhone,aFac);
+ CleanupStack::PushL(line);
+ line->ConstructL();
+ CleanupStack::Pop();
+ return line;
+ }
+
+CLineDMmTsy::CLineDMmTsy(CPhoneDMmTsy *aPhone, CPhoneFactoryDummyBase* aFac)
+ :CLineDummyBase(aFac), iPhone(aPhone)
+ {}
+
+void CLineDMmTsy::ConstructL()
+ {
+ CLineDummyBase::ConstructL();
+ LOGTEXT(_L8("CLineDMmTsy created"));
+ }
+
+
+CLineDMmTsy::~CLineDMmTsy()
+ {
+ LOGTEXT(_L8("CLineDMmTsy destroyed"));
+ }
+
+
+CTelObject* CLineDMmTsy::OpenNewObjectByNameL(const TDesC& aName)
+ {
+ // An existing call opened by a client - client provides name of call to open
+ if((aName.Compare(DMMTSY_CALL_NAME1)==KErrNone) ||
+ (aName.Compare(DMMTSY_CALL_NAME2)==KErrNone) ||
+ (aName.Compare(DMMTSY_CALL_NAME3)==KErrNone))
+
+ return REINTERPRET_CAST(CTelObject*,CCallDMmTsy::NewL(iPhone,FacPtr()));
+
+ return NULL;
+ }
+
+CTelObject* CLineDMmTsy::OpenNewObjectL(TDes& aNewName)
+ {
+ // A new call opened by a client will have its name allocated by the TSY
+ aNewName.Append(_L("Call"));
+ aNewName.AppendNum(++iCallObjectCount);
+
+ return CCallDMmTsy::NewL(iPhone,FacPtr());
+ }
+
+
+CTelObject::TReqMode CLineDMmTsy::ReqModeL(const TInt aIpc)
+ {
+ // ReqModeL is called from the server's CTelObject::ReqAnalyserL
+ // in order to check the type of request it has
+
+ // The following are example request types for this dummy TSY
+ // All TSYs do not have to have these request types but they have been given
+ // "sensible" values in this test code
+
+ CTelObject::TReqMode ret=0;
+ switch (aIpc)
+ {
+//
+// Non-flow control requests
+//
+ case EMobileLineGetMobileLineStatus:
+ break;
+//
+// Notification Requests
+//
+ case EMobileLineNotifyMobileLineStatusChange:
+ ret=KReqModeMultipleCompletionEnabled | KReqModeRePostImmediately;
+ break;
+//
+// Cancel Requests
+//
+ case EMobileLineNotifyMobileLineStatusChangeCancel:
+ User::Leave(KErrNotSupported);
+ break;
+
+ default:
+ ret=CLineBase::ReqModeL(aIpc);
+ break;
+ }
+ return ret;
+ }
+
+
+TInt CLineDMmTsy::RegisterNotification(const TInt aIpc)
+ {
+ // RegisterNotification is called when the server recognises that this notification
+ // is being posted for the first time on this sub-session object.
+
+ // It enables the TSY to "turn on" any regular notification messages that it may
+ // receive from the phone
+
+ switch (aIpc)
+ {
+ case EMobileLineNotifyMobileLineStatusChange:
+ LOGTEXT(_L8("CLineDMmTsy: RegisterNotification - Line Status Change "));
+ return KErrNone;
+ default:
+ // Unknown or invalid sms IPC
+ return KErrNotSupported;
+ }
+ }
+
+TInt CLineDMmTsy::DeregisterNotification(const TInt aIpc)
+ {
+ // DeregisterNotification is called when the server recognises that this notification
+ // will not be posted again because the last client to have a handle on this sub-session
+ // object has just closed the handle.
+
+ // It enables the TSY to "turn off" any regular notification messages that it may
+ // receive from the phone
+
+ switch (aIpc)
+ {
+ case EMobileLineNotifyMobileLineStatusChange:
+ LOGTEXT(_L8("CLineDMmTsy: DeregisterNotification - Line Status Change"));
+ return KErrNone;
+ default:
+ // Unknown or invalid sms IPC
+ return KErrNotSupported;
+ }
+ }
+
+TInt CLineDMmTsy::NumberOfSlotsL(const TInt aIpc)
+ {
+ // NumberOfSlotsL is called by the server when it is registering a new notification
+ // It enables the TSY to tell the server how many buffer slots to allocate for
+ // "repost immediately" notifications that may trigger before clients collect them
+
+ TInt numberOfSlots=1;
+ switch (aIpc)
+ {
+ case EMobileLineNotifyMobileLineStatusChange:
+ LOGTEXT(_L8("CLineDMmTsy: Registered with 5 slots"));
+ numberOfSlots=5;
+ break;
+ default:
+ // Unknown or invalid Phone IPC
+ User::Leave(KErrNotSupported);
+ break;
+ }
+ return numberOfSlots;
+ }
+
+TInt CLineDMmTsy::ExtFunc(const TTsyReqHandle aTsyReqHandle,const TInt aIpc,
+ const TDataPackage& aPackage)
+ {
+ // ExtFunc is called by the server when it has a "extended", i.e. non-core ETel request
+ // for the TSY to process
+ // A request handle, request type and request data are passed to the TSY
+
+ TAny* dataPtr=aPackage.Ptr1();
+
+ // The request data has to extracted from TDataPackage and the TAny* pointers have to
+ // be "cast" to the expected request data type
+
+ switch (aIpc)
+ {
+//
+// Non-flow control requests
+//
+ case EMobileLineGetMobileLineStatus:
+ return GetMobileLineStatus(aTsyReqHandle,
+ REINTERPRET_CAST(RMobileCall::TMobileCallStatus*, dataPtr));
+
+//
+// Notification Requests
+//
+ case EMobileLineNotifyMobileLineStatusChange:
+ return NotifyMobileLineStatusChange(aTsyReqHandle,
+ REINTERPRET_CAST(RMobileCall::TMobileCallStatus*, dataPtr));
+
+//
+// Cancel Requests
+//
+ case EMobileLineNotifyMobileLineStatusChangeCancel:
+ return NotifyMobileLineStatusChangeCancel(aTsyReqHandle);
+
+ default:
+ return KErrNotSupported;
+ }
+ }
+
+TInt CLineDMmTsy::CancelService(const TInt aIpc,const TTsyReqHandle aTsyReqHandle)
+ {
+ // CancelService is called by the server when it is "cleaning-up" any still outstanding
+ // asynchronous requests before closing a client's sub-session.
+ // This will happen if a client closes its R-class handle without cancelling outstanding
+ // asynchronous requests.
+
+ switch (aIpc)
+ {
+//
+// Cancel Requests
+//
+ case EMobileLineNotifyMobileLineStatusChange:
+ return NotifyMobileLineStatusChangeCancel(aTsyReqHandle);
+ default:
+ return CLineBase::CancelService(aIpc,aTsyReqHandle);
+ }
+ }
+
+TInt CLineDMmTsy::GetCaps(const TTsyReqHandle aTsyReqHandle,RLine::TCaps* aCaps)
+ {
+ //set the aux voice bit
+ aCaps->iFlags |= DMMTSY_MOBILE_LINE_AUX_VOICE;
+
+ ReqCompleted(aTsyReqHandle,KErrNone);
+ return KErrNone;
+ }
+
+
+/***********************************************************************************/
+//
+// The following methods are called from ExtFunc and/or CancelService.
+// Each of these will process a TSY request or cancel a TSY request
+// Here, example values are returned or checked within this dummy TSY in order to ensure
+// that the integrity of the data passed to/from client is maintained
+//
+/***********************************************************************************/
+
+TInt CLineDMmTsy::GetMobileLineStatus(const TTsyReqHandle aTsyReqHandle,RMobileCall::TMobileCallStatus* aStatus)
+ {
+ LOGTEXT(_L8("CLineDMmTsy::GetMobileLineStatus called"));
+ *aStatus=DMMTSY_CALL_STATUS1;
+ ReqCompleted(aTsyReqHandle,KErrNone);
+ return KErrNone;
+ }
+
+TInt CLineDMmTsy::NotifyMobileLineStatusChange(const TTsyReqHandle aTsyReqHandle, RMobileCall::TMobileCallStatus* aStatus)
+ {
+ if (!iNotifyMobileLineStatusChange++)
+ {
+ LOGTEXT(_L8("CLineDMmTsy::NotifyMobileLineStatusChange called"));
+ *aStatus=DMMTSY_CALL_STATUS2;
+ iPhone->AddDelayedReq(aTsyReqHandle,this);
+ }
+ return KErrNone;
+ }
+
+TInt CLineDMmTsy::NotifyMobileLineStatusChangeCancel(const TTsyReqHandle aTsyReqHandle)
+ {
+ LOGTEXT(_L8("CLineDMmTsy::NotifyMobileLineStatusChangeCancel called"));
+ iPhone->RemoveDelayedReq(aTsyReqHandle);
+ ReqCompleted(aTsyReqHandle,KErrCancel);
+ return KErrNone;
+ }
+