telephonyprotocols/csdagt/script/SIO.H
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyprotocols/csdagt/script/SIO.H	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,131 @@
+/**
+* Copyright (c) 2003-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:
+* Script Serial Comms I/O Functions Header.
+* This should all be 8-bit so we don't need to deal with any conversions at this level.
+* 
+*
+*/
+
+
+
+/**
+ @file Sio.h
+ @internalComponent
+*/
+
+#ifndef __SIO_H__
+#define __SIO_H__
+
+#include <nifutl.h>
+#include <etel.h>
+#include "ND_STD.H"
+#include "SCHAT.H"
+#include "SCOMMAND.H"
+
+// Forward declarations
+
+class CScriptExecutor;
+class CPreSendPause;
+
+class CScriptIO : public CBase, public MCommV2, public MCommChatNotify
+
+/**
+One of these per CScriptExecutor object (also uses CScriptExecutor object).
+Has CPreSendPause and CCommChatter objects.
+
+@internalComponent
+*/
+	{
+public:
+	static CScriptIO* NewL(CScriptExecutor* aScriptExecutor, const TDesC& aCommsChannel);
+	~CScriptIO();
+//	
+	void ConfigurePort(TRequestStatus& aStatus, const TCommConfig& aConfiguration);
+	void CancelConfigurePort();
+	void CreateChannel(TRequestStatus& aStatus);
+	void CancelCreateChannel();
+	void ShutdownChannel(TRequestStatus& aStatus);
+	void Start();
+	void Read(CLabelSearchArray* aSearchArray, const TReal& aTimeOut);
+	void ReadEcho();
+	void Write(const TDesC8& aString);
+	void PreSendPauseCompleted();
+	TBool RWPending();
+	inline TBool WritePending() const;
+	TInt GetExcessData(TDes8& aBuffer);
+	void Disconnect();
+	void ReConfigureAndCancelPort(TRequestStatus& aStatus);
+	void DropSignals(TRequestStatus& aStatus);
+	void Cancel();
+	void ReadEchoCancel();
+	void DropDTR(TRequestStatus* aStatusPtr);
+	void RaiseDTR(TRequestStatus* aStatusPtr);
+	void SetControlLines(TRequestStatus* aStatusPtr, TUint aSetMask, TUint aClearMask);
+	
+	// MComm
+	virtual void CommReadComplete(TInt aStatus);
+	virtual void CommWriteComplete(TInt aStatus);
+	virtual const TDesC& BcaStack();
+	virtual void Stop(TInt aError);
+	virtual TInt IapId();
+	virtual void InitializeComplete();
+	virtual void ShutdownComplete(TInt aError);
+	//
+	// MCommChatNotify
+	virtual void ChatStringMatch(TInt aIndex);
+	virtual void ChatTimeout();
+	//
+private:
+	CScriptIO(CScriptExecutor* aScriptExecutor);
+	void ConstructL(const TDesC& aCommsChannel);
+private:
+	CScriptExecutor* iScriptExecutor;
+	CCommChatter* iChat;
+	CPreSendPause* iPreSendPause;
+	TInt iRxBufOffset;
+	TBuf8<KRxBufferSize> iRxBuffer;
+	TBuf8<KTxBufferSize> iTxBuffer;
+	CLabelSearchArray* iSearchArray;
+	TPtrC8 iExcessData;
+	TBool iReadPending;
+	TBool iWritePending;
+	TInt iStringFound;
+	TRequestStatus* iCreateAndShutdownStatus;
+	TInt iCreateError;
+	RBuf iCommsChannel;
+	TPckgBuf<TCommConfig> iConfig;
+	TUint iCommClosed : 1;
+	};
+
+#include "SIO.INL"
+
+
+class CPreSendPause : public CTimer
+/**
+One of these per CScriptIO object.  Implements pause before sending.
+
+@internalComponent
+*/
+	{
+public:
+	static CPreSendPause* NewL(CScriptIO* aNotifier);
+	CPreSendPause(CScriptIO* aNotifier);
+	void Start();
+	void RunL();
+private:
+	CScriptIO* iNotifier;
+	};
+
+#endif