--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/comms/inc/commengine.h Tue Jun 22 11:02:32 2010 +0100
@@ -0,0 +1,305 @@
+// 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.h
+// This contains CCommEngine which manage access to serial port.
+//
+
+#ifndef __CCOMMENGINE_H__
+#define __CCOMMENGINE_H__
+
+// system include
+#include <c32comm.h>
+#include <callbacktimer.h>
+
+// use include
+#include "mcommobserver.h"
+#include "globalphonemanager.h"
+
+// const defination
+const TInt KCommRxBufSize = 200;
+
+//Class forward
+class CCommWriter;
+class CCommReader;
+class CStringParser;
+
+/**
+ * The class provide the functionalities to access the serials port, write and read to or from
+ * serial port. It also provide the function to find one line of string and notify its observer.
+ *
+ */
+class CCommEngine : public CBase,
+ public MTimerObserver
+
+ {
+ friend class CCommWriter;
+ friend class CCommReader;
+public:
+ /**
+ * Factory function
+ *
+ * @param aBufferSize
+ * @param aReadPriority
+ * @param aWritePriority
+ * @param aPortAccess
+ */
+ static CCommEngine* NewL(TInt aBufferSize,
+ TInt aReadPriority,
+ TInt aWritePriority,
+ TPortAccess& aPortAccess);
+
+ /**
+ * Factory function
+ *
+ * @param aBufferSize
+ * @param aReadPriority
+ * @param aWritePriority
+ * @param aPortAccess
+ */
+ static CCommEngine* NewLC(TInt aBufferSize,
+ TInt aReadPriority,
+ TInt aWritePriority,
+ TPortAccess& aPortAccess);
+
+ /**
+ * Destructor
+ *
+ */
+ virtual ~CCommEngine();
+
+public:
+ /**
+ * Configure the serial port
+ *
+ */
+ TInt ConfigurePort(TCommConfig aConfiguration);
+
+ /**
+ * Open the serial port
+ *
+ * @param aDll
+ * @param aName
+ * @param aAccess
+ */
+ TInt CommOpen(const TDesC& aDll, const TDesC& aName, TCommAccess aAccess);
+
+ /**
+ * Close the serial port
+ *
+ */
+ void CommClose();
+
+ /**
+ * Cancel comm serail IO opeation
+ *
+ */
+ void CommCancel();
+
+ /**
+ * Start serail IO writing
+ *
+ */
+ void CommWrite(const TDesC8& aDes);
+
+ /**
+ * Serial port writing is ready
+ *
+ */
+ void CommWriteReady();
+
+ /**
+ * Cancel serial writing
+ *
+ */
+ void CommWriteCancel();
+
+ /**
+ * Start serail IO reading
+ *
+ */
+ void CommRead();
+
+ /**
+ * Start to read
+ *
+ */
+ void Read();
+
+ /**
+ * The read will return whatever the data have been received
+ *
+ */
+ void CommReadOneOrMore();
+
+ /**
+ * Cancel reading
+ */
+ void CommReadCancel();
+
+ /**
+ * Disconnect it from modem
+ */
+ void Disconnect();
+
+ /**
+ * Drop the DTR
+ */
+ void DropDtr();
+
+ /**
+ * Raise the DTR-- Data Terminal Ready
+ */
+ void RaiseDTR();
+
+ /**
+ * Drop the RTS signal-- Request to send
+ */
+ void DropRTS();
+
+ /**
+ * Raise the RTS signal
+ */
+ void RaiseRTS();
+
+ /**
+ * Clean all the buffers
+ */
+ void ResetBuffers();
+
+ /**
+ * Get the singnals
+ */
+ TUint Signals();
+
+ /**
+ * Start the timer
+ */
+ void StartTimer(TInt aSecond);
+
+ /**
+ * Stop the timer
+ */
+ void StopTimer();
+
+ /**
+ * Reset all the buffers
+ */
+ void ResetReadAndWriteBuffers();
+
+ /**
+ * Get the port shutdown timeout
+ */
+ TInt GetPortShutdownTimeout();
+
+ /**
+ * Set the port shut down timeout
+ */
+ TInt SetPortShutdownTimeout(TInt aTimeout);
+
+ /**
+ * Get the string parser
+ */
+ CStringParser* GetStringParse() const;
+public:
+ /**
+ * Set the notifier for get the notificaiton when one line of string was found
+ */
+ void SetCommReadLineNotify(MCommReadLineNotifier *aReadLineNotify);
+
+ /**
+ * Set the comm engine observer
+ */
+ void SetCommEngineObserver(MCommEngineObserver *aEngineObserver);
+public:
+ /**
+ * Handle read complete event
+ */
+ virtual void CommReadComplete(TInt aStatus);
+
+ /**
+ * Handle write complete event
+ */
+ virtual void CommWriteComplete(TInt aStatus);
+protected:
+ /**
+ * Constructor
+ */
+ CCommEngine(TPortAccess& aPortAccess);
+
+ /**
+ * 2nd constructor
+ */
+ void ConstructL(TInt aBufferSize, TInt aReadPriority, TInt aWritePriority);
+private:
+ /**
+ * From MTimerObserver
+ */
+ virtual void TimerRun(TInt aError);
+
+ /**
+ * Get the size of received buffer
+ */
+ TInt GetSizeOfRxBuffer();
+private:
+ /**
+ * The comm server reference
+ */
+ RCommServ iCommServer;
+
+ /**
+ * The comm port object
+ */
+ RComm iCommPort;
+
+ /**
+ * The active object for reading data from Baseband
+ */
+ CCommReader *iCommReader;
+
+ /**
+ * The active object for writing AT command
+ */
+ CCommWriter *iCommWriter;
+
+ /**
+ * The string parser
+ */
+ CStringParser *iStringParse;
+
+ /**
+ * The engine observer
+ */
+ MCommEngineObserver *iEngineObserver;
+
+ /**
+ * The received data
+ */
+ TBuf8<KCommRxBufSize> iRxBuf;
+
+ /**
+ * The port specification
+ */
+ TPortAccess& iPortAccess;
+
+ /**
+ * The timer active object. Used to record the time after a writing request is triggered.
+ */
+ CCallbackTimer* iCallbackTimer;
+
+ /**
+ * Check if the comm has been canceled.
+ */
+ TBool iCommCancel;
+ };
+#endif