#ifndef YMODEMFILERECEIVE_H #define YMODEMFILERECEIVE_H #include "TimeoutSerial.h" #include "Ymodem.h" #include #include #include #include #include #include using namespace std; class YmodemFileReceive : public Ymodem { public: explicit YmodemFileReceive(); ~YmodemFileReceive(); void setFilePath(const string &path); void setDefaultFileName(const string &path); void setSerialPort(TimeoutSerial *port); TimeoutSerial *getSerialPort(); bool startReceive(); void stopReceive(); int getReceiveProgress(); Status getReceiveStatus(); boost::signals2::signal receiveProgress; boost::signals2::signal receiveStatus; void readTimeOut(const boost::system::error_code& e); void writeTimeOut(const boost::system::error_code& e); private: Code callback(Status status, uint8_t *buff, uint32_t *len); uint32_t read(uint8_t *buff, uint32_t len); uint32_t write(uint8_t *buff, uint32_t len); ofstream file; boost::asio::io_service io; ///< Io service object boost::asio::deadline_timer readTimer; ///< Timer for timeout boost::asio::deadline_timer writeTimer; ///< Timer for timeout TimeoutSerial *serialPort; int progress; Status status; string filePath; string fileName; string defaultFileName = ""; uint64_t fileSize; uint64_t fileCount; }; #endif // YMODEMFILERECEIVE_H