diff -r 000000000000 -r af10295192d8 linklayerprotocols/pppnif/te_ppp/src/serial.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/linklayerprotocols/pppnif/te_ppp/src/serial.cpp Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,116 @@ +// Copyright (c) 2001-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 "serial.h" +#include "TestMgr.h" +// +// Serial Listener Active Object - receive commands on the serial port +// + +CSerialListener::CSerialListener(RComm* aCommPort, CTestMgr* aController) +: CActive(CActive::EPriorityStandard), iCommPort(aCommPort), iController(aController) +{ +} + +CSerialListener* CSerialListener::NewL(RComm* aCommPort, CTestMgr* aController) +{ + CSerialListener* self = new (ELeave) CSerialListener(aCommPort, aController); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); // self + CActiveScheduler::Add(self); + return self; +} + +void CSerialListener::ConstructL() +{ +} + +CSerialListener::~CSerialListener() +{ + Cancel(); +} + +void CSerialListener::Recv() +{ + // read data from Comm port + iCommPort->Read(iStatus, iDataBuffer); + SetActive(); +} + +void CSerialListener::RunL() +{ + iLastBuffer = iDataBuffer; + // notify controller we have read something + iController->Notify(CTestMgr::EReadComplete); + // start the listener again + Recv(); +} + +void CSerialListener::DoCancel() +{ + iCommPort->ReadCancel(); +} +// +// Serial Sender Active Object - send commands on the serial port +// + +CSerialSender* CSerialSender::NewL(RComm* aCommPort, CTestMgr* aController) +{ + CSerialSender* self = new (ELeave) CSerialSender(aCommPort, aController); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); // self + CActiveScheduler::Add(self); + return self; +} + +void CSerialSender::ConstructL() +{ +} + +CSerialSender::~CSerialSender() +{ + Cancel(); +} + +void CSerialSender::Send(TBuffer& aBuff) +{ + if (!IsActive()) + { + // take a local copy of data to send + iDataBuffer = aBuff; + // send the data + iCommPort->Write(iStatus, iDataBuffer); + SetActive(); + } +} + +CSerialSender::CSerialSender(RComm* aCommPort, CTestMgr* aController) +: CActive(CActive::EPriorityStandard), iCommPort(aCommPort), iController(aController) +{ +} + +void CSerialSender::RunL() +{ + // notify controller that send has finished + iController->Notify(CTestMgr::EWriteComplete); +} + +void CSerialSender::DoCancel() +{ + iCommPort->WriteCancel(); +} +