Files
usbserial-dw/YmodemFileReceive.h
2021-08-25 00:45:13 +02:00

58 lines
1.2 KiB
C++

#ifndef YMODEMFILERECEIVE_H
#define YMODEMFILERECEIVE_H
#include "TimeoutSerial.h"
#include "Ymodem.h"
#include <boost/signals2.hpp>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class YmodemFileReceive : public Ymodem
{
public:
explicit YmodemFileReceive();
~YmodemFileReceive();
void setFilePath(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;
/*
private slots:
void readTimeOut();
void writeTimeOut();
*/
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;
QTimer *readTimer;
QTimer *writeTimer;
TimeoutSerial *serialPort;
int progress;
Status status;
string filePath;
string fileName;
uint64_t fileSize;
uint64_t fileCount;
};
#endif // YMODEMFILERECEIVE_H