/* * Copyright (c) 2023, Leon Albrecht * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Kernel::USB { class MassStorageDriver final : public Driver { public: MassStorageDriver() : Driver("USB MassStorage"sv) { } static void init(); virtual ~MassStorageDriver() override = default; virtual ErrorOr probe(USB::Device&) override; virtual void detach(USB::Device&) override; private: BulkSCSIInterface::List m_interfaces; ErrorOr checkout_interface(USB::Device&, USBInterface const&); ErrorOr initialise_bulk_only_device(USB::Device&, USBInterface const&); }; }