telephonyserverplugins/multimodetsy/hayes/ATIO.H
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/multimodetsy/hayes/ATIO.H	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,140 @@
+// Copyright (c) 1997-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:
+// Serial IO Functions
+// 
+//
+
+/**
+ @file
+ @internalAll 
+*/
+
+
+#ifndef __ATIO_H__
+#define __ATIO_H__
+
+#include "SCOMM.H"
+#include "ATBASE.H"
+/**
+@internalComponent
+*/
+const TInt KKeyReaderPriority = 0;
+const TInt KChatterPriority = 0;
+const TInt KChatTimeout = 3000000;
+const TInt KCommRxBufSize = 200;
+const TInt KCommTimeout = 10000000;
+const TInt KCommReadPriority = 10;
+const TInt KCommWritePriority = 20;
+const TInt KCommTimerPriority = 5;
+/**
+@internalComponent
+*/
+const TInt KReadTimeOutSec=60;
+const TInt KWriteTimeOutSec=10;
+const TInt KInitialisationTimeOut=20;
+const TInt KDefaultTimeOutMillisec=5000;
+
+class CATIO;
+class CATBase;
+class CCompletionEntry : public CBase
+/**
+@internalComponent
+*/
+	{
+public:
+	static CCompletionEntry* NewL(CCommChatString* aCs,	CATBase* aAtCommand);
+	CCompletionEntry(CCommChatString* aCs, CATBase* aAtCommand);
+	~CCompletionEntry();
+private:
+	CCommChatString* iCs;
+	CATBase* iAtCommand;
+	TDblQueLink iLink;
+	friend class CATIO;
+	};
+
+class CATErrorHandler;
+class CATBase;
+class CATIO : public CBase, public MComm, public MCommChatNotify
+/**
+@internalComponent
+*/
+	{
+public:
+	static CATIO* NewL(TFileName& csy, TName& port,TPortAccess& aPortAccess);
+	CATIO(TPortAccess& aPortAccess);
+	void ConstructL(TFileName& csy, TName& port);
+	~CATIO();
+	TInt ConfigurePort(TCommConfig aConfiguration);
+	void Start(CATBase* aCompletionClass);
+	void StartWrite(CATBase* aCompletionClass);
+	CCommChatString* AddExpectString(CATBase* aATBase, const TDesC8& aString, TBool aPartLine=EFalse);
+	CCommChatString* DoAddExpectStringL(CATBase* aATBase, const TDesC8& aString, TBool aPartLine=EFalse);
+	void RemoveExpectStrings(CATBase* aATBase);
+	void RemoveExpectString(CCommChatString* aExpectString);
+	void SignalCommandsWithError(TInt aStatus);
+	void Read();
+	void Write(CATBase* aWriteCommand, const TDesC8& aString);
+	TBool ReadPending();
+	TInt BufferFindF(const TDesC8& aDes) const;
+	TPtrC8 Buffer() const;
+	TPtrC8 CurrentLine() const;
+	void ClearBuffer();
+	void ClearCurrentLine();
+	void Disconnect();
+	void Cancel();
+	void ReadCancel();
+	void WriteAndTimerCancel(CATBase* aATBase);
+	CCommChatString* FoundChatString();
+
+	void SetTimeOut(CATBase* aCompletionClass, TUint aTimePeriodSec=KDefaultTimeOutMillisec);
+	void DropDtr();
+	void RaiseDTR();
+	void DropRTS();
+	void RaiseRTS();
+	void ResetReadAndWriteBuffers();
+	TInt GetSizeOfRxBuffer();
+	void ProcessReadCharsL();
+	void SetErrorHandler(CATErrorHandler* aErrorHandler) {iErrorHandler = aErrorHandler;}
+	void SetPreserveBufferFlag(TBool aFlg);
+	TUint Signals();
+	// from MComm
+	virtual void CommReadComplete(TInt aStatus);
+	virtual void CommWriteComplete(TInt aStatus);
+	// from MCommChatNotify
+	virtual void ChatStringMatchL(CCommChatString* aCs);
+	virtual void ChatTimeout();
+	TFileName iCsy;
+private:
+	TInt GetPortShutdownTimeout();
+	TInt SetPortShutdownTimeout(TInt aTimeout);
+	CATBase* iTimeOutCommand;
+	CATBase* iWriteCommand;
+	CATErrorHandler* iErrorHandler;
+	CCommChatter* iChat;
+	TInt iRxBufOffset;
+	TBuf8<KCommRxBufSize> iRxBuf;
+	TBool iReadPending;
+	TBool iWritePending;
+	TBool iWaitTimerPending;
+	TBool iInitPending;
+	TBool iStringFound;
+	CArrayFixFlat<CCommChatString*>* iChatStringFound;
+	CCommChatString* iCurrentFoundChatString;
+	TDblQue<CCompletionEntry> iExpectList;
+	TPortAccess& iPortAccess;
+	TInt iSecondChanceForCommsError;
+	TBool iPreserveBuffer;
+	};
+
+#endif