#ifndef __NULLDISKREADDRIVER_H__ #define __NULLDISKREADDRIVER_H__ #ifdef __cplusplus #include "icsneo/disk/diskreaddriver.h" #include "icsneo/disk/diskwritedriver.h" #include namespace icsneo { namespace Disk { /** * A disk driver which always returns the requested disk as unsupported * * Used for devices which do not have a disk, or do not provide any means for accessing it */ class NullDriver : public ReadDriver, public WriteDriver { public: std::optional readLogicalDisk(Communication& com, device_eventhandler_t report, uint64_t pos, uint8_t* into, uint64_t amount, std::chrono::milliseconds timeout = DefaultTimeout, MemoryType memType = MemoryType::SD) override; std::optional writeLogicalDisk(Communication& com, device_eventhandler_t report, ReadDriver& readDriver, uint64_t pos, const uint8_t* from, uint64_t amount, std::chrono::milliseconds timeout = DefaultTimeout, MemoryType memType = MemoryType::SD) override; std::pair getBlockSizeBounds() const override { static_assert(SectorSize <= std::numeric_limits::max(), "Incorrect sector size"); static_assert(SectorSize >= std::numeric_limits::min(), "Incorrect sector size"); return { static_cast(SectorSize), static_cast(SectorSize) }; } private: Access getPossibleAccess() const override { return Access::None; } std::optional readLogicalDiskAligned(Communication& com, device_eventhandler_t report, uint64_t pos, uint8_t* into, uint64_t amount, std::chrono::milliseconds timeout, MemoryType memType = MemoryType::SD) override; std::optional writeLogicalDiskAligned(Communication& com, device_eventhandler_t report, uint64_t pos, const uint8_t* from, uint64_t amount, std::chrono::milliseconds timeout, MemoryType memType = MemoryType::SD) override; }; } // namespace Disk } // namespace icsneo #endif // __cplusplus #endif // __NULLDISKREADDRIVER_H__