#ifndef __OTX_FLASH_MultipleECUFlasher_HPP__
#define __OTX_FLASH_MultipleECUFlasher_HPP__

#include "DownloadArgs.hpp"
#include "ECU.hpp"
#include "ECUFlasher.hpp"
#include "ECUFlasherImpl.hpp"
#include <mutex>

namespace otx {
namespace flash {
/**
 * @brief 单一ECU刷写器。
 *
 */
class MultipleECUFlasher : virtual public ECUFlasher, virtual public ECUFlasherImpl {
public:
  MultipleECUFlasher();
  MultipleECUFlasher(const MultipleECUFlasher &right) = default;
  MultipleECUFlasher &operator=(const MultipleECUFlasher &right) = default;
  virtual ~MultipleECUFlasher() = default;

protected:
  std::vector<ECU *> mECUs;

public:

  virtual std::vector<ECU *> *getECUs();
  virtual void addECU(ECU *ecu);

// protected:
//   /**
//    * @brief 要求串行完成。
//    * 
//    * @param ecu 待刷写的ECU。
//    */
//   virtual void downloadECU(ECU *ecu) = 0;
};
} // namespace flash
} // namespace otx

#endif // __OTX_FLASH_MultipleECUFlasher_HPP__