diff -r 000000000000 -r 7f656887cf89 core/builtins/xmodem.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/builtins/xmodem.h Wed Jun 23 15:52:26 2010 +0100 @@ -0,0 +1,94 @@ +// xmodem.h +// +// Copyright (c) 2008 - 2010 Accenture. All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the "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: +// Accenture - Initial contribution +// + +#ifndef __XMODEM_H__ +#define __XMODEM_H__ + +#include + +using namespace IoUtils; + + +class CCmdXmodem : public CCommandBase + { +public: + enum TSyncResult + { + ENormal, + EEot + }; +public: + static CCommandBase* NewLC(); + ~CCmdXmodem(); +protected: + CCmdXmodem(); + void ConstructL(); + void SendStdinL(); + void SendFileL(const TDesC& aFileName); + void ReceiveToStdoutL(); + void ReceiveToFileL(const TDesC& aFileName); + void ReceiveToNullL(); + void SendBlockL(const TDesC& aBlock); + TPtrC ReceiveBlockL(TBool aIsFirstBlock, TBool& aIsFinalBlock); + void DoReceiveBlockL(); + void SendTerminateL(); + void WaitForSyncL(); + TSyncResult SendSyncL(); + TUint8 ReceiveByteL(TInt aTimeout, TBool* aTimeoutOccurred = NULL); + TUint16 ReceiveShortL(TInt aTimeout, TBool* aTimeoutOccurred = NULL); + void ReceiveWithTimeoutL(TDes& aBuf, TInt aTimeout, TBool* aTimeoutOccurred = NULL); + void DoReceiveWithTimeoutL(TDes& aBuf, TInt aTimeout, TBool* aTimeoutOccurred = NULL); + void PurgeInputL(); + void SendL(const TDesC& aData); + TInt CheckSize() const; + TInt ProtocolOverhead() const; + TBool CheckBlock() const; + void Progress(TRefByValue aFmt, ...) const; + void Dump(const TDesC& aData); + void Abort(); + void HandleTelnetCommandL(); + void Unget(TChar aChar); + void PrepareConsoleToTransferL(); + void CleanupClonsoleAfterTransferL(); +private: // From CCommandBase. + virtual const TDesC& Name() const; + virtual void DoRunL(); + virtual void ArgumentsL(RCommandArgumentList& aArguments); + virtual void HandleLeave(TInt aError); +protected: + virtual void OptionsL(RCommandOptionList& aOptions); +private: + enum TTelnetMode + { + ESendBinary = 0x00000001, + ERecvBinary = 0x00000002 + }; +protected: + enum + { + ESend, EReceive + } iMode; + TFileName2 iFileName; + TInt iBlockSize; + TUint8 iPacketNumber; + TBool iOverwrite; +private: + TBool iVerbose; + TBool iCrc; + TBool iStarted; + TUint iTelnetMode; + HBufC* iBuf; + TBuf<2> iUngetBuf; + RTimer iTimer; + }; + +#endif // __XMODEM_H__