diff -r 000000000000 -r 3553901f7fa8 telephonyprotocols/csdagt/script/SIO.H --- /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 +#include +#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 iRxBuffer; + TBuf8 iTxBuffer; + CLabelSearchArray* iSearchArray; + TPtrC8 iExcessData; + TBool iReadPending; + TBool iWritePending; + TInt iStringFound; + TRequestStatus* iCreateAndShutdownStatus; + TInt iCreateError; + RBuf iCommsChannel; + TPckgBuf 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