diff -r 630d2f34d719 -r 07a122eea281 cbsref/telephonyrefplugins/atltsy/comms/src/commengine.cpp --- a/cbsref/telephonyrefplugins/atltsy/comms/src/commengine.cpp Tue Aug 31 16:23:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,581 +0,0 @@ -// Copyright (c) 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 commengine.cpp -// This contains CCommEngine which manage access to serial port. -// - -// user include -#include "globalphonemanager.h" -#include "commengine.h" -#include "mslogger.h" -#include "commreader.h" -#include "commwriter.h" -#include "mcommobserver.h" -#include "stringparser.h" - -// const define -const TInt KLtsyOneSecondPause = 1000000; - -// --------------------------------------------------------------------------- -// CCommEngine::NewL -// other items were commented in a header -// --------------------------------------------------------------------------- -CCommEngine* CCommEngine::NewL(TInt aBufferSize, - TInt aReadPriority, - TInt aWritePriority, - TPortAccess& aPortAccess) - { - CCommEngine *self = CCommEngine::NewLC(aBufferSize, - aReadPriority, - aWritePriority, - aPortAccess); - CleanupStack::Pop(self); - - return self; - } - -// --------------------------------------------------------------------------- -// CCommEngine::NewLC -// other items were commented in a header -// --------------------------------------------------------------------------- -CCommEngine* CCommEngine::NewLC(TInt aBufferSize, - TInt aReadPriority, - TInt aWritePriority, - TPortAccess& aPortAccess) - { - CCommEngine* self = new (ELeave) CCommEngine(aPortAccess); - CleanupStack::PushL(self); - - self->ConstructL(aBufferSize, aReadPriority, aWritePriority); - - return self; - } - -// --------------------------------------------------------------------------- -// CCommEngine::~CCommEngine -// other items were commented in a header -// --------------------------------------------------------------------------- -CCommEngine::~CCommEngine() - { - delete iCommReader; - delete iCommWriter; - delete iStringParse; - delete iCallbackTimer; - iCommPort.Close(); - iCommServer.Close(); - } - -// --------------------------------------------------------------------------- -// CCommEngine::CCommEngine -// other items were commented in a header -// --------------------------------------------------------------------------- -CCommEngine::CCommEngine(TPortAccess& aPortAccess) - :iPortAccess(aPortAccess) - { - iCommReader = NULL; - iCommWriter = NULL; - iEngineObserver = NULL; - iStringParse = NULL; - iCommCancel = EFalse; - } - -// --------------------------------------------------------------------------- -// CCommEngine::ConstructL -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::ConstructL(TInt aBufferSize, TInt aReadPriority, TInt aWritePriority) - { - iCommReader = new (ELeave) CCommReader(this, aReadPriority); - iCommWriter = new (ELeave) CCommWriter(this, aWritePriority); - iStringParse = CStringParser::NewL(aBufferSize); - iCallbackTimer = CCallbackTimer::NewL(*this); - } - -// --------------------------------------------------------------------------- -// CCommEngine::ConfigurePort -// other items were commented in a header -// --------------------------------------------------------------------------- -TInt CCommEngine::ConfigurePort(TCommConfig aConfiguration) - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::ConfigurePort()")); - if (iPortAccess == EPortAccessAllowed) - { - TInt ret; - TCommConfig cbuf; - TCommConfigV01 &cfg = cbuf(); - - // Get the Configuration from current serial com port - iCommPort.Config(cbuf); - - // set the configuration according to passed config data - TCommConfigV01 &newCfg = aConfiguration(); - cfg.iRate = newCfg.iRate; - cfg.iDataBits = newCfg.iDataBits; - cfg.iStopBits = newCfg.iStopBits; - cfg.iParity = newCfg.iParity; - cfg.iHandshake = newCfg.iHandshake; - - // Set the Configuration - ret = iCommPort.SetConfig(cbuf); - if(ret != KErrNone) - { - LOGTEXT2(_L8("[Ltsy] CCommEngine:\tError %d configuring port"),ret); - return ret; - } - } - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CCommEngine::Disconnect -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::Disconnect() - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::Disconnect()")); - - if (iPortAccess == EPortAccessAllowed) - { - TCommConfig cbuf; - TCommConfigV01 &cfg = cbuf(); - iCommPort.Config(cbuf); - cfg.iHandshake = KConfigFreeRTS | KConfigFreeDTR; - TInt ret = iCommPort.SetConfig(cbuf); - if (ret == KErrNone) - { - iCommPort.SetSignalsToSpace(KSignalRTS | KSignalDTR); - } - } - - CommClose(); - - iPortAccess = EPortAccessDenied; - } - -// --------------------------------------------------------------------------- -// CCommEngine::Read -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::Read() - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::Read()")); - iCommCancel = EFalse; - if (iPortAccess == EPortAccessAllowed) - { - CommReadOneOrMore(); - } - else - { - LOGTEXT(_L8("[Ltsy] Port Not Allow Access")); - } - } - -// --------------------------------------------------------------------------- -// CCommEngine::DropDtr -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::DropDtr() - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::DropDtr()")); - - if (iPortAccess == EPortAccessAllowed) - { - LOGTEXT(_L8("[Ltsy] CCommEngine::DropDtr Dropping DTR")); - - iCommPort.SetSignals(0,KSignalDTR); - } - } - -// --------------------------------------------------------------------------- -// CCommEngine::RaiseDTR -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::RaiseDTR() - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::RaiseDTR()")); - - if (iPortAccess == EPortAccessAllowed) - { - LOGTEXT(_L8("[Ltsy] CCommEngine::RaiseDTR Raising DTR")); - - iCommPort.SetSignals(KSignalDTR,0); - } - } - -// --------------------------------------------------------------------------- -// CCommEngine::DropRTS -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::DropRTS() - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::DropRTS()")); - - if (iPortAccess == EPortAccessAllowed) - { - LOGTEXT(_L8("[Ltsy] Dropping RTS")); - - iCommPort.SetSignals(0,KSignalRTS); - } - } - -// --------------------------------------------------------------------------- -// CCommEngine::RaiseRTS -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::RaiseRTS() - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::RaiseRTS()")); - - if (iPortAccess == EPortAccessAllowed) - { - LOGTEXT(_L8("[Ltsy] Raising RTS")); - - iCommPort.SetSignals(KSignalRTS,0); - } - } -// --------------------------------------------------------------------------- -// CCommEngine::ResetBuffers -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::ResetBuffers() - { - iCommPort.ResetBuffers(); - } -// --------------------------------------------------------------------------- -// CCommEngine::Signals -// other items were commented in a header -// --------------------------------------------------------------------------- -TUint CCommEngine::Signals() - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::Signals()")); - - return iCommPort.Signals(); - } - -// --------------------------------------------------------------------------- -// CCommEngine::ResetReadAndWriteBuffers -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::ResetReadAndWriteBuffers() - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::ResetReadAndWriteBuffers()")); - - iCommPort.ResetBuffers(); - } - -// --------------------------------------------------------------------------- -// CCommEngine::GetSizeOfRxBuffer -// other items were commented in a header -// --------------------------------------------------------------------------- -TInt CCommEngine::GetSizeOfRxBuffer() - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::GetSizeOfRxBuffer()")); - - return iCommPort.QueryReceiveBuffer(); - } - -// --------------------------------------------------------------------------- -// CCommEngine::GetPortShutdownTimeout -// other items were commented in a header -// --------------------------------------------------------------------------- -TInt CCommEngine::GetPortShutdownTimeout() - { - if (iPortAccess == EPortAccessAllowed) - { - TCommConfig2 cbuf; - TCommConfigV02& cfg = cbuf(); - // Get the Configuration - iCommPort.Config(cbuf); - - return (cfg.iTxShutdownTimeout); - } - else - { - return (0); - } - } - -// --------------------------------------------------------------------------- -// CCommEngine::SetPortShutdownTimeout -// other items were commented in a header -// --------------------------------------------------------------------------- -TInt CCommEngine::SetPortShutdownTimeout(TInt aTimeout) - { - if (iPortAccess == EPortAccessAllowed) - { - TCommConfig2 cbuf; - TCommConfigV02 &cfg = cbuf(); - - //Get the Configuration - iCommPort.Config(cbuf); - - //Set the Configuration - cfg.iTxShutdownTimeout = aTimeout; - return (iCommPort.SetConfig(cbuf)); - } - else - { - return KErrAccessDenied; - } - } - -// --------------------------------------------------------------------------- -// CCommEngine::CommOpen -// other items were commented in a header -// --------------------------------------------------------------------------- -TInt CCommEngine::CommOpen(const TDesC& aDll, const TDesC& aName, TCommAccess aMode) - { - TInt err; - if (err = iCommServer.Connect(), err!=KErrNone) - return err; - - // load serial comm module - if (aDll.Length()>0) - { - if (err = iCommServer.LoadCommModule(aDll), err!=KErrNone) - { - iCommServer.Close(); - return err; - } - } - - // start to open the serial com with ECommShared model - if (aMode==ECommShared) - { - if (err = iCommPort.Open(iCommServer, aName, aMode), err!=KErrNone) - { - iCommServer.Close(); - return err; - } - } - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CCommEngine::CommClose -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::CommClose() - { - iCommReader->Cancel(); - iCommWriter->Cancel(); - iCommPort.Close(); - iCommServer.Close(); - } - -// --------------------------------------------------------------------------- -// CCommEngine::CommWrite -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::CommWrite(const TDesC8& aDes) - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::CommWrite()")); - LOGTEXTREL2(_L8("Tx:\t%S"),&aDes); - - iCommPort.Write(iCommWriter->StatusRef(), aDes); - iCommWriter->Activate(); - } - -// --------------------------------------------------------------------------- -// CCommEngine::CommRead -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::CommRead() - { - iCommPort.Read(iCommReader->StatusRef(), iRxBuf, iRxBuf.Length()); - iCommReader->Activate(); - } - -// --------------------------------------------------------------------------- -// CCommEngine::CommReadOneOrMore -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::CommReadOneOrMore() - { - if(!iCommCancel) - { - iCommPort.ReadOneOrMore(iCommReader->StatusRef(), iRxBuf); - iCommReader->Activate(); - } - } - -// --------------------------------------------------------------------------- -// CCommEngine::CommCancel -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::CommCancel() - { - iCommCancel = ETrue; - if(iCallbackTimer->IsActive()) - { - iCallbackTimer->Cancel(); - } - - if (NULL != iCommWriter) - { - iCommWriter->Cancel(); - } - - if (NULL != iCommReader) - { - iCommReader->Cancel(); - } - } - -// --------------------------------------------------------------------------- -// CCommEngine::CommWriteCancel -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::CommWriteCancel() - { - if(iCallbackTimer->IsActive()) - { - iCallbackTimer->Cancel(); - } - - if (NULL != iCommWriter) - { - iCommWriter->Cancel(); - } - } - -// --------------------------------------------------------------------------- -// CCommEngine::CommReadCancel -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::CommReadCancel() - { - if(iCallbackTimer->IsActive()) - { - iCallbackTimer->Cancel(); - } - - if (NULL != iCommReader) - { - iCommReader->Cancel(); - } - } - -// --------------------------------------------------------------------------- -// CCommEngine::CommReadComplete -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::CommReadComplete(TInt aStatus) - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::CommReadComplete()")); - LOGTEXT2(_L8("[Ltsy] aStatus = %d"), aStatus); - LOGTEXT2(_L8("Received %d"),iRxBuf.Length()); - LOGTEXTREL2(_L8("Rx:\t%S"),&iRxBuf); - - if (KErrNone == aStatus) - { - if (NULL != iStringParse) - { - iStringParse->ProcessReadString(iRxBuf); - } - - CommReadOneOrMore(); - } - else - { - if (NULL != iEngineObserver) - { - iEngineObserver->ReadOrWriteComplete(EReadCompletion, aStatus); - } - } - LOGTEXT(_L8("[Ltsy] End CCommEngine::CommReadComplete()")); - } - -// --------------------------------------------------------------------------- -// CCommEngine::CommWriteComplete -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::CommWriteComplete(TInt aStatus) - { - LOGTEXT(_L8("[Ltsy] Starting CCommEngine::CommWriteComplete()")); - LOGTEXT2(_L8("[Ltsy] aStatus = %d"), aStatus); - if(iCallbackTimer->IsActive()) - { - iCallbackTimer->Cancel(); - } - - if (NULL != iEngineObserver) - { - iEngineObserver->ReadOrWriteComplete(EWriteCompletion, aStatus); - } - } - -// --------------------------------------------------------------------------- -// CCommEngine::GetStringParse -// other items were commented in a header -// --------------------------------------------------------------------------- -CStringParser* CCommEngine::GetStringParse() const - { - return iStringParse; - } - -// --------------------------------------------------------------------------- -// CCommEngine::SetCommReadLineNotify -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::SetCommReadLineNotify(MCommReadLineNotifier *aReadLineNotify) - { - iStringParse->SetReadLineNotify(aReadLineNotify); - } - -// --------------------------------------------------------------------------- -// CCommEngine::SetCommEngineObserver -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::SetCommEngineObserver(MCommEngineObserver *aEngineObserver) - { - iEngineObserver = aEngineObserver; - } - -// --------------------------------------------------------------------------- -// CCommEngine::TimerRun -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::TimerRun(TInt aError) - { - if(aError == KErrNone) - { - iEngineObserver->ReadOrWriteComplete(ETimeoutCompletion, KErrTimedOut); - } - } - -// --------------------------------------------------------------------------- -// CCommEngine::StartTimer -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::StartTimer(TInt aSeconds) - { - if (iCallbackTimer->IsActive()) - { - iCallbackTimer->Cancel(); - } - iCallbackTimer->After(aSeconds*KLtsyOneSecondPause); - } - -// --------------------------------------------------------------------------- -// CCommEngine::StopTimer -// other items were commented in a header -// --------------------------------------------------------------------------- -void CCommEngine::StopTimer() - { - iCallbackTimer->Cancel(); - } - -// End of file