#ifndef __OTX_FLASH_ECUFLASHER_HPP__
#define __OTX_FLASH_ECUFLASHER_HPP__

#include "ECUFlasherEventHandler.hpp"

namespace otx{
namespace flash{
/**
 * @brief 描述ECU刷写器的基本行为准则。
 *
 */
class ECUFlasher {
protected:
  ECUFlasher() = default;
  ECUFlasher(const ECUFlasher &right) = default;
  ECUFlasher &operator=(const ECUFlasher &right) = default;

public:
  virtual ~ECUFlasher() = default;

public:
  virtual bool download() = 0;
  virtual unsigned long long getRemainTime(ECU* ecu) = 0;
  virtual void addEventHandler(ECUFlasherEventHandler *eventListener) = 0;
  virtual void clearEventHandlers() = 0;
};
} // namespace flash
} // namespace otx

#endif // __OTX_FLASH_ECUFLASHER_HPP__