/* * Copyright (c) 2023, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Kernel::USB { class MouseDriver final : public Driver { public: MouseDriver() : Driver("USB Mouse"sv) { } static void init(); virtual ~MouseDriver() override = default; virtual ErrorOr probe(USB::Device&) override; virtual void detach(USB::Device&) override; private: USBMouseDevice::List m_interfaces; ErrorOr checkout_interface(USB::Device&, USBInterface const&); ErrorOr initialize_device(USB::Device&, USBInterface const&); }; }