58 lines
1.2 KiB
C++
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
|