diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/multimodetsy/test/Te_LoopBack/Te_LoopBackATIO.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/multimodetsy/test/Te_LoopBack/Te_LoopBackATIO.H Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,149 @@ +// 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: +// + +/** + @file + @internalComponent +*/ + +#ifndef __SIO_H +#define __SIO_H + +#include "Te_LoopBackSCHAT.H" +#include "Te_LoopBackSCOMM.H" +#include "Te_LoopBackATSTD.H" // for enum TPortAccess + +const TInt KKeyReaderPriority = 0; +const TInt KChatterPriority = 0; +const TInt KChatTimeout = 3000000; +const TInt KCommRxBufSize = 800; +const TInt KCommTimeout = 10000000; +const TInt KCommReadPriority = 10; +const TInt KCommWritePriority = 20; +const TInt KCommTimerPriority = 5; + +const TInt KReadTimeOutSec=60; +const TInt KWriteTimeOutSec=10; +const TInt KInitialisationTimeOut=20; +const TInt KDefaultTimeOutMillisec=5000; + +class CATIO; +class CATBase; + +/** + * This class inherits from CBase and is used by the test harness to manage the expect + * strings. Every expect (or chat) string is associated with a completion entry. There + * is a list of expected strings managed by the test harness code. When a string comes + * in from the TSY, this class is used (as the data container) for matching the expected + * strings and the input from the TSY. + */ +class CCompletionEntry : public CBase + { +public: + static CCompletionEntry* NewL(CCommChatString* aCs, CATBase* aAtCommand); + CCompletionEntry(CCommChatString* aCs, CATBase* aAtCommand); + ~CCompletionEntry(); +private: + CCommChatString* iCs; //< Pointer to the chat string (expected string) for this + //< completion entry. + CATBase* iAtCommand; //< Pointer to the CATBase object associated with this + //< completion entry. Used for various tasks such as + //< event signalling, removing of expected strings, etc. + TDblQueLink iLink; //< Element of Doubly linked list + friend class CATIO; + }; + +class CATErrorHandler; +class CATBase; +/** + * This class inherits from CBase, MComm, and MCommChatNotify. + * It represents the basic IO mechanism for the regression test harness. + * This class handles the receive buffer from the GSM TSY and the expect + * strings (reading and writing). + */ +class CATIO : public CBase, public MComm, public MCommChatNotify + { +public: + static CATIO* NewL(const TDesC& aCsy, const TDesC& aPort); + CATIO(); + void ConstructL(const TDesC& aCsy, const TDesC& aPort); + ~CATIO(); + TInt ConfigurePort(TCommConfig aConfiguration); + TInt Start(CATBase* aCompletionClass); + CCommChatString* AddExpectString(CATBase* aATBase, const TDesC8& aString); + void RemoveExpectStrings(CATBase* aATBase); + void RemoveExpectString(CCommChatString* aExpectString); + void SignalCommandsWithError(TInt aStatus); + TInt Read(); + TInt Write(CATBase* aWriteCommand, const TDesC8& aString); + TBool RWPending(); + TBool ReadPending(); + void GetExcessData(TDes8& aBuffer); + void MarkRxBuffer(TInputBufferMark& aBufferMarker); + TPtrC8 GetRxBufferLC(TInputBufferMark& aBufferMarker); + void Disconnect(); + void Cancel(); + void WriteAndTimerCancel(CATBase* aATBase); + void WriteAndTimerCancelAll(); + 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;} + TUint Signals(); + void SignalMark(TUint aSignal); + void SignalSpace(TUint aSignal); + + // from MComm + virtual void CommReadComplete(TInt aStatus); + virtual void CommWriteComplete(TInt aStatus); + // from MCommChatNotify + virtual void ChatStringMatchL(CCommChatString* aCs); + virtual void ChatTimeout(); +private: + CATBase* iControllingClass; //< Pointer to the controlling CATBase entity for read + //< completions. + CATBase* iTimeOutCommand; //< Pointer to the controlling CATBase entity for timeout + //< completions. + CATBase* iWriteCommand; //< Pointer to the controlling CATBase entity for write + //< completions. + CATErrorHandler* iErrorHandler; //< Ptr to error handler, not apparently used by test harness. + CCommChatter* iChat; //< Pointer to the CComChatter object which is associated + //< with this IO class and iRxBuf. + TInt iRxBufOffset; //< Offset in iRxBuf where received data is to be placed. + TBuf8 iRxBuf; //< The buffer which contains commands/data received from + //< the GSM TSY. + TBool iReadPending; //< True if a read is pending; false otherwise + TBool iWritePending; //< True if a write is pending; false otherwise + TBool iWaitTimerPending; //< Boolean used for noting an outstanding timer on a chat string. + TBool iInitPending; //< Not currently used in Regression Test Harness + TBool iStringFound; //< True if a matching string is found, set to false when + //< a read is pended. + CArrayFixFlat* iChatStringFound; //< Array of ptrs to chat strings that have been + //< matched. + CCommChatString* iCurrentFoundChatString; //< Pointer to the chat string that has currently + //< been matched. + TDblQue iExpectList; //< Queue of expected strings (in CCompletionEntry) + TInt iSecondChanceForCommsError; //< Counter of number of comms errors. One comm error + //< can be retried during this test. + }; + +#endif