diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyserverplugins/multimodetsy/hayes/SCOMM.CPP --- a/telephonyserverplugins/multimodetsy/hayes/SCOMM.CPP Mon May 03 13:37:20 2010 +0300 +++ b/telephonyserverplugins/multimodetsy/hayes/SCOMM.CPP Thu May 06 15:10:38 2010 +0100 @@ -1,212 +1,212 @@ -// 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: -// Comms reader and writer mixin -// -// - -#include "ATSTD.H" -#include "SCOMM.H" - -MComm::MComm() - { - iCommReader = NULL; - iCommWriter = NULL; - } - -MComm::~MComm() - { - delete iCommReader; - delete iCommWriter; - iCommPort.Close(); - iCommServer.Close(); - } - -TInt MComm::CommOpen(const TDesC& aDll, const TDesC& aName, TCommAccess aMode) - { - TInt err; - if (err = iCommServer.Connect(), err!=KErrNone) - return err; - if (aDll.Length()>0) - { - if (err = iCommServer.LoadCommModule(aDll), err!=KErrNone) - { - iCommServer.Close(); - return err; - } - } - if (err = iCommPort.Open(iCommServer, aName, ECommExclusive), err!=KErrNone) - // if any other TSY (or other app) is using comm port, we want to return gracefully - // with error - { - iCommServer.Close(); - return err; - } - if (aMode==ECommShared) - { - iCommPort.Close(); - if (err = iCommPort.Open(iCommServer, aName, aMode), err!=KErrNone) - { - iCommServer.Close(); - return err; - } - } - return KErrNone; - } - -TInt MComm::CommOpen(const TDesC& aName, TCommAccess aMode) - { - TInt err; - if (err = iCommServer.Connect(), err!=KErrNone) - return err; - if (err = iCommPort.Open(iCommServer, aName, ECommExclusive), err!=KErrNone) - // if any other TSY (or other app) is using comm port, we want to return gracefully - // with error - { - iCommServer.Close(); - return err; - } - if (aMode==ECommShared) - { - iCommPort.Close(); - if (err = iCommPort.Open(iCommServer, aName, aMode), err!=KErrNone) - { - iCommServer.Close(); - return err; - } - } - return KErrNone; - } - -void MComm::CommClose() - { - iCommReader->Cancel(); - iCommWriter->Cancel(); - iCommPort.Close(); - iCommServer.Close(); - } - -void MComm::CommConstructL(TInt aReadPriority, TInt aWritePriority) - { - iCommReader = new (ELeave) CCommReader(this, aReadPriority); - iCommWriter = new (ELeave) CCommWriter(this, aWritePriority); - }; - -void MComm::CommWrite(const TDesC8& aDes) - { - __ASSERT_ALWAYS(iCommWriter!=NULL, Panic(EATCommand_NotConstructed)); - iCommPort.Write(iCommWriter->StatusRef(), aDes); - iCommWriter->Activate(); - } - -void MComm::CommWriteReady() - { - __ASSERT_ALWAYS(iCommWriter!=NULL, Panic(EATCommand_NotConstructed)); - iCommPort.Write(iCommWriter->StatusRef(), TPtrC8(NULL, 0)); - iCommWriter->Activate(); - } - -void MComm::CommRead(TDes8& aDes) - { - __ASSERT_ALWAYS(iCommReader!=NULL, Panic(EATCommand_NotConstructed)); - iCommPort.Read(iCommReader->StatusRef(), aDes, aDes.Length()); - iCommReader->Activate(); - } - -void MComm::CommReadOneOrMore(TDes8& aDes) - { - __ASSERT_ALWAYS(iCommReader!=NULL, Panic(EATCommand_NotConstructed)); - iCommPort.ReadOneOrMore(iCommReader->StatusRef(), aDes); - iCommReader->Activate(); - } - -void MComm::CommReadReady() - { - __ASSERT_ALWAYS(iCommReader!=NULL, Panic(EATCommand_NotConstructed)); -// TRequestStatus aStatus; -// iCommPort.Read(aStatus,iBuf,0); -// User::WaitForRequest(aStatus); -// JoeF 26.11.99. IrComm.Csy can't handle a read into a zero-length buffer and needs fixing. The -// above lines have been removed from the TSY as a temporary workaround only, until a proper fix -// can be implemented in IrComm.Csy - } - -void MComm::CommCancel() - { - if (iCommWriter) - iCommWriter->Cancel(); - if (iCommReader) - iCommReader->Cancel(); - } - -void MComm::CommWriteCancel() - { - if (iCommWriter) - iCommWriter->Cancel(); - } - -void MComm::CommReadCancel() - { - if (iCommReader) - iCommReader->Cancel(); - } - -// -// CCommWriter -// -CCommWriter::CCommWriter(MComm* aComm, TInt aPriority) - : CActive(aPriority), iComm(aComm) - { - __DECLARE_NAME(_S("CCommWriter")); - CActiveScheduler::Add(this); - } - -CCommWriter::~CCommWriter() - { - Cancel(); - } - -void CCommWriter::RunL() - { - iComm->CommWriteComplete(iStatus.Int()); - } - -void CCommWriter::DoCancel() - { - iComm->iCommPort.WriteCancel(); - } - -// -// CCommReader -// -CCommReader::CCommReader(MComm* aComm, TInt aPriority) - : CActive(aPriority), iComm(aComm) - { - __DECLARE_NAME(_S("CCommReader")); - CActiveScheduler::Add(this); - } - -CCommReader::~CCommReader() - { - Cancel(); - } - -void CCommReader::RunL() - { - iComm->CommReadComplete(iStatus.Int()); - } - -void CCommReader::DoCancel() - { - iComm->iCommPort.ReadCancel(); - } +// 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: +// Comms reader and writer mixin +// +// + +#include "ATSTD.H" +#include "SCOMM.H" + +MComm::MComm() + { + iCommReader = NULL; + iCommWriter = NULL; + } + +MComm::~MComm() + { + delete iCommReader; + delete iCommWriter; + iCommPort.Close(); + iCommServer.Close(); + } + +TInt MComm::CommOpen(const TDesC& aDll, const TDesC& aName, TCommAccess aMode) + { + TInt err; + if (err = iCommServer.Connect(), err!=KErrNone) + return err; + if (aDll.Length()>0) + { + if (err = iCommServer.LoadCommModule(aDll), err!=KErrNone) + { + iCommServer.Close(); + return err; + } + } + if (err = iCommPort.Open(iCommServer, aName, ECommExclusive), err!=KErrNone) + // if any other TSY (or other app) is using comm port, we want to return gracefully + // with error + { + iCommServer.Close(); + return err; + } + if (aMode==ECommShared) + { + iCommPort.Close(); + if (err = iCommPort.Open(iCommServer, aName, aMode), err!=KErrNone) + { + iCommServer.Close(); + return err; + } + } + return KErrNone; + } + +TInt MComm::CommOpen(const TDesC& aName, TCommAccess aMode) + { + TInt err; + if (err = iCommServer.Connect(), err!=KErrNone) + return err; + if (err = iCommPort.Open(iCommServer, aName, ECommExclusive), err!=KErrNone) + // if any other TSY (or other app) is using comm port, we want to return gracefully + // with error + { + iCommServer.Close(); + return err; + } + if (aMode==ECommShared) + { + iCommPort.Close(); + if (err = iCommPort.Open(iCommServer, aName, aMode), err!=KErrNone) + { + iCommServer.Close(); + return err; + } + } + return KErrNone; + } + +void MComm::CommClose() + { + iCommReader->Cancel(); + iCommWriter->Cancel(); + iCommPort.Close(); + iCommServer.Close(); + } + +void MComm::CommConstructL(TInt aReadPriority, TInt aWritePriority) + { + iCommReader = new (ELeave) CCommReader(this, aReadPriority); + iCommWriter = new (ELeave) CCommWriter(this, aWritePriority); + }; + +void MComm::CommWrite(const TDesC8& aDes) + { + __ASSERT_ALWAYS(iCommWriter!=NULL, Panic(EATCommand_NotConstructed)); + iCommPort.Write(iCommWriter->StatusRef(), aDes); + iCommWriter->Activate(); + } + +void MComm::CommWriteReady() + { + __ASSERT_ALWAYS(iCommWriter!=NULL, Panic(EATCommand_NotConstructed)); + iCommPort.Write(iCommWriter->StatusRef(), TPtrC8(NULL, 0)); + iCommWriter->Activate(); + } + +void MComm::CommRead(TDes8& aDes) + { + __ASSERT_ALWAYS(iCommReader!=NULL, Panic(EATCommand_NotConstructed)); + iCommPort.Read(iCommReader->StatusRef(), aDes, aDes.Length()); + iCommReader->Activate(); + } + +void MComm::CommReadOneOrMore(TDes8& aDes) + { + __ASSERT_ALWAYS(iCommReader!=NULL, Panic(EATCommand_NotConstructed)); + iCommPort.ReadOneOrMore(iCommReader->StatusRef(), aDes); + iCommReader->Activate(); + } + +void MComm::CommReadReady() + { + __ASSERT_ALWAYS(iCommReader!=NULL, Panic(EATCommand_NotConstructed)); +// TRequestStatus aStatus; +// iCommPort.Read(aStatus,iBuf,0); +// User::WaitForRequest(aStatus); +// JoeF 26.11.99. IrComm.Csy can't handle a read into a zero-length buffer and needs fixing. The +// above lines have been removed from the TSY as a temporary workaround only, until a proper fix +// can be implemented in IrComm.Csy + } + +void MComm::CommCancel() + { + if (iCommWriter) + iCommWriter->Cancel(); + if (iCommReader) + iCommReader->Cancel(); + } + +void MComm::CommWriteCancel() + { + if (iCommWriter) + iCommWriter->Cancel(); + } + +void MComm::CommReadCancel() + { + if (iCommReader) + iCommReader->Cancel(); + } + +// +// CCommWriter +// +CCommWriter::CCommWriter(MComm* aComm, TInt aPriority) + : CActive(aPriority), iComm(aComm) + { + __DECLARE_NAME(_S("CCommWriter")); + CActiveScheduler::Add(this); + } + +CCommWriter::~CCommWriter() + { + Cancel(); + } + +void CCommWriter::RunL() + { + iComm->CommWriteComplete(iStatus.Int()); + } + +void CCommWriter::DoCancel() + { + iComm->iCommPort.WriteCancel(); + } + +// +// CCommReader +// +CCommReader::CCommReader(MComm* aComm, TInt aPriority) + : CActive(aPriority), iComm(aComm) + { + __DECLARE_NAME(_S("CCommReader")); + CActiveScheduler::Add(this); + } + +CCommReader::~CCommReader() + { + Cancel(); + } + +void CCommReader::RunL() + { + iComm->CommReadComplete(iStatus.Int()); + } + +void CCommReader::DoCancel() + { + iComm->iCommPort.ReadCancel(); + }