linklayerprotocols/pppnif/te_ppp/src/serial.cpp
changeset 0 af10295192d8
--- /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();
+}
+