// TransferrableFile.h: interface for the CTransferrableFile class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_TRANSFERRABLEFILE_H__6CE91C15_A86E_465A_82E6_7C0E84FDB598__INCLUDED_) #define AFX_TRANSFERRABLEFILE_H__6CE91C15_A86E_465A_82E6_7C0E84FDB598__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class CSerialPort; #include "datablock.h" #include "serialport.h" #include "miniconsfile.h" #include class CTransferrableFile : public CMiniconsFile { public: CTransferrableFile(); virtual ~CTransferrableFile(); unsigned int GetBytesTransferred(); void Abort(); bool ShouldAbort(); unsigned int GetLength(); virtual bool OpenForReading(TCHAR* filename)=0; bool WaitForTransferComplete(DWORD millsecondsToWait); protected: bool StartSend(); static DWORD WINAPI SendStatic(LPVOID thisPointer); virtual bool SendThread()=0; DWORD WriteBigEndianDWORD(CSerialPort& port, DWORD dword); bool StartBinaryWrite(CSerialPort& port); bool EndBinaryWrite(CSerialPort& port); bool StartBinaryRead(CSerialPort& port); bool EndBinaryRead(CSerialPort& port); bool TransferDataFromFile(CSerialPort& port, unsigned int address, unsigned int length); bool TransferDataToFile(CSerialPort& port, unsigned int address, unsigned int length); bool WaitForString(CSerialPort& port, char* string); bool WriteString(CSerialPort& port, char* string); static CDataBlock m_DataBlock; HANDLE m_hThread; CRITICAL_SECTION m_Lock; bool m_bAbort; unsigned int m_BytesTransferred; }; #endif // !defined(AFX_TRANSFERRABLEFILE_H__6CE91C15_A86E_465A_82E6_7C0E84FDB598__INCLUDED_)