/* * Copyright (c) 2021, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Kernel { class IDEController; class IDEChannel; class ATAPIDiscDevice final : public ATADevice { friend class IDEController; friend class DeviceManagement; public: static NonnullRefPtr create(const ATAController&, ATADevice::Address, u16 capabilities, u64 max_addressable_block); virtual ~ATAPIDiscDevice() override; // ^StorageDevice virtual CommandSet command_set() const override { return CommandSet::SCSI; } private: ATAPIDiscDevice(const ATAController&, Address, MinorNumber, u16, u64, NonnullOwnPtr); // ^DiskDevice virtual StringView class_name() const override; }; }