/* * Copyright (c) 2021, Luke Wilde * Copyright (c) 2023, Jesse Buhagiar * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Kernel::USB { class USBManagement { public: USBManagement(); static bool initialized(); static void initialize(); static USBManagement& the(); static void register_driver(NonnullLockRefPtr driver); static LockRefPtr get_driver_by_name(StringView name); static void unregister_driver(NonnullLockRefPtr driver); Vector>& available_drivers() { return m_available_drivers; } private: void enumerate_controllers(); USBController::List m_controllers; Vector> m_available_drivers; }; }