1 #ifndef FLUXSOURCE_H 2 #define FLUXSOURCE_H 3 4 #include "flags.h" 5 6 extern FlagGroup hardwareFluxSourceFlags; 7 8 class Fluxmap; 9 class FluxSpec; 10 11 class FluxSource 12 { 13 public: ~FluxSource()14 virtual ~FluxSource() {} 15 16 private: 17 static std::unique_ptr<FluxSource> createSqliteFluxSource(const std::string& filename); 18 static std::unique_ptr<FluxSource> createHardwareFluxSource(unsigned drive); 19 static std::unique_ptr<FluxSource> createStreamFluxSource(const std::string& path); 20 21 public: 22 static std::unique_ptr<FluxSource> create(const FluxSpec& spec); 23 24 public: 25 virtual std::unique_ptr<Fluxmap> readFlux(int track, int side) = 0; recalibrate()26 virtual void recalibrate() {} retryable()27 virtual bool retryable() { return false; } 28 }; 29 30 extern void setHardwareFluxSourceRevolutions(double revolutions); 31 extern void setHardwareFluxSourceDensity(bool high_density); 32 extern void setHardwareFluxSourceSynced(bool synced); 33 extern void setHardwareFluxSourceHardSectorCount(int sectorCount); 34 35 #endif 36 37