libtransistor
A userland library for the Nintendo Switch
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
Data Structures | Enumerations | Functions | Variables
usb.h File Reference

USB Services. More...

#include <libtransistor/types.h>
#include <libtransistor/encoding.h>
#include <libtransistor/ipc/usb/ds/endpoint.h>
#include <libtransistor/ipc/usb/ds/interface.h>
Include dependency graph for usb.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  usb_device_data_t
 
struct  _usb_speed_info_t
 

Enumerations

enum  trn_usb_descriptor_type_t {
  TRN_USB_DT_DEVICE = 0x1, TRN_USB_DT_CONFIGURATION = 0x2, TRN_USB_DT_STRING = 0x3, TRN_USB_DT_INTERFACE = 0x4,
  TRN_USB_DT_ENDPOINT = 0x5, TRN_USB_DT_BOS = 0xf, TRN_USB_DT_DEVICE_CAPABILITY = 0x10
}
 
enum  trn_usb_bos_type_t { TRN_USB_BT_WIRELESS_USB_DEVICE_CAPABILITY = 1, TRN_USB_BT_USB_2_0_EXTENSION = 2, TRN_USB_BT_SS_USB_DEVICE_CAPABILITY = 3, TRN_USB_BT_CONTAINER_ID = 4 }
 
enum  trn_usb_endpoint_direction_t { TRN_USB_ENDPOINT_OUT = 0x00, TRN_USB_ENDPOINT_IN = 0x80 }
 
enum  trn_usb_transfer_type_t { TRN_USB_TRANSFER_TYPE_CONTROL = 0x0, TRN_USB_TRANSFER_TYPE_ISOCHRONOUS = 0x1, TRN_USB_TRANSFER_TYPE_BULK = 0x2, TRN_USB_TRANSFER_TYPE_INTERRUPT = 0x3 }
 
enum  usb_ds_state_t {
  USB_DS_STATE_INITIAL = 0, USB_DS_STATE_INIT_STARTING = 6, USB_DS_STATE_INIT2 = 3, USB_DS_STATE_INIT3 = 4,
  USB_DS_STATE_INITIALIZED = 5, USB_DS_STATE_MAX = 0xFFFFFFFF
}
 

Functions

struct __attribute__ ((packed, aligned(1)))
 
result_t usb_ds_init (uint32_t complex_id, usb_device_data_t *data)
 Initialize USB-as-device services. More...
 
result_t usb_ds_get_interface (usb_interface_descriptor_t *descriptor, const char *name, usb_ds_interface_t *out)
 Open a new USB interface. More...
 
result_t usb_ds_get_state_change_event (revent_h *evt)
 Get state change event.
 
result_t usb_ds_get_state (usb_ds_state_t *state)
 Get state.
 
void usb_ds_finalize ()
 Finalize USB as device services.
 
result_t _usb_ds_enable ()
 
result_t _usb_ds_disable ()
 
result_t _usb_ds_500_append_configuration_data (usb_ds_interface_t *interface, uint32_t speed_mode, usb_descriptor_t *descriptor)
 

Variables

 usb_descriptor_t
 
 usb_device_descriptor_t
 
 usb_configuration_descriptor_t
 
 usb_interface_descriptor_t
 
 usb_endpoint_descriptor_t
 
 usb_string_descriptor_t
 
 usb_bos_dev_capability_descriptor_t
 
 usb_bos_descriptor_t
 
_usb_speed_info_t _usb_speed_info []
 
uint8_t _usb_next_in_ep_number
 
uint8_t _usb_next_out_ep_number
 

Detailed Description

USB Services.

Function Documentation

result_t usb_ds_get_interface ( usb_interface_descriptor_t *  descriptor,
const char *  name,
usb_ds_interface_t out 
)

Open a new USB interface.

Parameters
descriptorThe descriptor for the interface to create
nameName for the interface (not sent over USB)
outStores the newly created interface
result_t usb_ds_init ( uint32_t  complex_id,
usb_device_data_t data 
)

Initialize USB-as-device services.

Parameters
dataDevice data such as vid/pid. NULL for don't care.