mirror of
				https://github.com/davidgiven/fluxengine.git
				synced 2025-10-24 11:11:02 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "lib/core/globals.h"
 | |
| #include "lib/config/config.h"
 | |
| #include "lib/config/flags.h"
 | |
| #include "lib/data/fluxmap.h"
 | |
| #include "lib/core/logger.h"
 | |
| #include "lib/config/proto.h"
 | |
| #include "lib/usb/usb.h"
 | |
| #include "lib/fluxsink/fluxsink.h"
 | |
| #include "lib/fluxsink/fluxsink.pb.h"
 | |
| #include "lib/readerwriter.h"
 | |
| 
 | |
| class HardwareFluxSink : public FluxSink
 | |
| {
 | |
| public:
 | |
|     HardwareFluxSink(const HardwareFluxSinkProto& conf): _config(conf) {}
 | |
| 
 | |
|     ~HardwareFluxSink() {}
 | |
| 
 | |
| public:
 | |
|     void writeFlux(int track, int side, const Fluxmap& fluxmap) override
 | |
|     {
 | |
|         auto& drive = globalConfig()->drive();
 | |
|         usbSetDrive(drive.drive(), drive.high_density(), drive.index_mode());
 | |
|         usbSeek(track);
 | |
| 
 | |
|         return usbWrite(
 | |
|             side, fluxmap.rawBytes(), drive.hard_sector_threshold_ns());
 | |
|     }
 | |
| 
 | |
|     bool isHardware() const override
 | |
|     {
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     operator std::string() const override
 | |
|     {
 | |
|         return fmt::format("drive {}", globalConfig()->drive().drive());
 | |
|     }
 | |
| 
 | |
| private:
 | |
|     const HardwareFluxSinkProto& _config;
 | |
| };
 | |
| 
 | |
| std::unique_ptr<FluxSink> FluxSink::createHardwareFluxSink(
 | |
|     const HardwareFluxSinkProto& config)
 | |
| {
 | |
|     return std::unique_ptr<FluxSink>(new HardwareFluxSink(config));
 | |
| }
 |