﻿#ifndef __OTX_FLASH_ECUFLASHEREVENTHANDLER_HPP__
#define __OTX_FLASH_ECUFLASHEREVENTHANDLER_HPP__

#include "ECU.hpp"
#include "ECUFlasherECUEventArg.hpp"
#include "ECUFlasherFileEventArg.hpp"
#include "ECUFlasherFileDownloadEndEventArg.hpp"
#include "ECUFlasherFileDownloadProgressEventArg.hpp"

namespace otx{
namespace flash{

class ECUFlasher;

class ECUFlasherEventHandler {
protected:
  ECUFlasherEventHandler() = default;
  ECUFlasherEventHandler(const ECUFlasherEventHandler &right) = default;
  ECUFlasherEventHandler &operator=(const ECUFlasherEventHandler &right) = default;

public:
  virtual ~ECUFlasherEventHandler() = default;

public:
  virtual void onECUDownloadStart(ECUFlasherECUEventArg &arg) = 0;
  virtual void onECUDownloadEnd(ECUFlasherECUEventArg &arg) = 0;

  virtual void onECUResetStart(ECUFlasherECUEventArg& arg) = 0;
  virtual void onECUResetEnd(ECUFlasherECUEventArg& arg) = 0;

  virtual void onFileDownloadStart(ECUFlasherFileEventArg &arg) = 0;
  virtual void onFileDownloadEnd(ECUFlasherFileDownloadEndEventArg &arg) = 0;
  virtual void onFileDownloadProgress(ECUFlasherFileDownloadProgressEventArg &arg) = 0;
};
} // namespace flash
} // namespace otx

#endif // __OTX_FLASH_ECUFLASHEREVENTHANDLER_HPP__