62 lines
1.5 KiB
C++
62 lines
1.5 KiB
C++
#ifndef YMODEMFILERECEIVE_H
|
|
#define YMODEMFILERECEIVE_H
|
|
|
|
#include "TimeoutSerial.h"
|
|
#include "Ymodem.h"
|
|
#include <boost/signals2.hpp>
|
|
#include <boost/utility.hpp>
|
|
#include <boost/asio.hpp>
|
|
#include <iostream>
|
|
#include <fstream>
|
|
#include <string>
|
|
|
|
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<void (int)> receiveProgress;
|
|
boost::signals2::signal<void (YmodemFileReceive::Status status)> 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);
|
|
|
|
int32_t read(uint8_t *buff, uint32_t len);
|
|
int32_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
|