Serenity Operating System
at master 36 lines 1.2 kB view raw
1/* 2 * Copyright (c) 2022, Jesse Buhagiar <jesse.buhagiar@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/Vector.h> 10 11namespace Kernel::USB { 12 13class USBConfiguration; 14 15class USBInterface final { 16public: 17 USBInterface() = delete; 18 USBInterface(USBConfiguration const& configuration, USBInterfaceDescriptor const descriptor, Vector<USBEndpointDescriptor> const& endpoint_descriptors) 19 : m_configuration(configuration) 20 , m_descriptor(descriptor) 21 , m_endpoint_descriptors(endpoint_descriptors) 22 { 23 m_endpoint_descriptors.ensure_capacity(descriptor.number_of_endpoints); 24 } 25 26 Vector<USBEndpointDescriptor> const& endpoints() const { return m_endpoint_descriptors; } 27 28 USBInterfaceDescriptor const& descriptor() const { return m_descriptor; } 29 30private: 31 USBConfiguration const& m_configuration; // Configuration that this interface belongs to 32 USBInterfaceDescriptor const m_descriptor; // Descriptor backing this interface 33 Vector<USBEndpointDescriptor> m_endpoint_descriptors; // Endpoint descriptors for this interface (that we can use to open an endpoint) 34}; 35 36}