haiku/src/apps/serialconnect/XModem.h

50 lines
894 B
C++

/*
* Copyright 2017, Adrien Destugues, pulkomandy@pulkomandy.tk
* Distributed under terms of the MIT license.
*/
#ifndef XMODEM_H
#define XMODEM_H
#include "FileSender.h"
#include <Messenger.h>
#include <String.h>
class BDataIO;
class BHandler;
class BSerialPort;
class XModemSender: public FileSender {
public:
XModemSender(BDataIO* source, BSerialPort* sink,
BHandler* listener);
virtual ~XModemSender();
virtual bool BytesReceived(const uint8_t* data,
size_t length);
private:
void SendBlock();
status_t NextBlock();
uint16_t CRC(const uint8_t* buffer, size_t size);
private:
BDataIO* fSource;
BSerialPort* fSink;
BMessenger fListener;
off_t fBlockNumber;
off_t fSourceSize;
uint8_t fBuffer[128];
bool fEotSent;
bool fUseCRC;
BString fStatus;
};
#endif /* !XMODEM_H */