libnx
Data Structures | Macros | Enumerations | Functions
usb.h File Reference

USB (usb:*) service IPC wrapper. More...

#include "../types.h"
#include "../services/sm.h"

Go to the source code of this file.

Data Structures

struct  usb_endpoint_descriptor
 Imported from libusb, with some adjustments. More...
 
struct  usb_interface_descriptor
 Imported from libusb, with some adjustments. More...
 
struct  UsbDsDeviceInfo
 
struct  UsbDsReportEntry
 
struct  UsbDsReportData
 
struct  UsbDsInterface
 
struct  UsbDsEndpoint
 

Macros

#define USBDS_DEFAULT_InterfaceNumber   0x4
 usb:ds Switch-as-device<>host USB comms, see also here: http://switchbrew.org/index.php?title=USB_services More...
 
#define USB_DT_INTERFACE_SIZE   9
 Imported from libusb with changed names.
 
#define USB_DT_ENDPOINT_SIZE   7
 

Enumerations

enum  UsbComplexId { UsbComplexId_Default = 0x2 }
 
enum  usb_class_code {
  USB_CLASS_PER_INTERFACE = 0,
  USB_CLASS_AUDIO = 1,
  USB_CLASS_COMM = 2,
  USB_CLASS_HID = 3,
  USB_CLASS_PHYSICAL = 5,
  USB_CLASS_PRINTER = 7,
  USB_CLASS_PTP = 6,
  USB_CLASS_IMAGE = 6,
  USB_CLASS_MASS_STORAGE = 8,
  USB_CLASS_HUB = 9,
  USB_CLASS_DATA = 10,
  USB_CLASS_SMART_CARD = 0x0b,
  USB_CLASS_CONTENT_SECURITY = 0x0d,
  USB_CLASS_VIDEO = 0x0e,
  USB_CLASS_PERSONAL_HEALTHCARE = 0x0f,
  USB_CLASS_DIAGNOSTIC_DEVICE = 0xdc,
  USB_CLASS_WIRELESS = 0xe0,
  USB_CLASS_APPLICATION = 0xfe,
  USB_CLASS_VENDOR_SPEC = 0xff
}
 Imported from libusb, with changed names.
 
enum  usb_descriptor_type {
  USB_DT_DEVICE = 0x01,
  USB_DT_CONFIG = 0x02,
  USB_DT_STRING = 0x03,
  USB_DT_INTERFACE = 0x04,
  USB_DT_ENDPOINT = 0x05,
  USB_DT_BOS = 0x0f,
  USB_DT_DEVICE_CAPABILITY = 0x10,
  USB_DT_HID = 0x21,
  USB_DT_REPORT = 0x22,
  USB_DT_PHYSICAL = 0x23,
  USB_DT_HUB = 0x29,
  USB_DT_SUPERSPEED_HUB = 0x2a,
  USB_DT_SS_ENDPOINT_COMPANION = 0x30
}
 Imported from libusb, with changed names.
 
enum  usb_endpoint_direction {
  USB_ENDPOINT_IN = 0x80,
  USB_ENDPOINT_OUT = 0x00
}
 Imported from libusb, with changed names.
 
enum  usb_transfer_type {
  USB_TRANSFER_TYPE_CONTROL = 0,
  USB_TRANSFER_TYPE_ISOCHRONOUS = 1,
  USB_TRANSFER_TYPE_BULK = 2,
  USB_TRANSFER_TYPE_INTERRUPT = 3,
  USB_TRANSFER_TYPE_BULK_STREAM = 4
}
 Imported from libusb, with changed names.
 
enum  usb_iso_sync_type {
  USB_ISO_SYNC_TYPE_NONE = 0,
  USB_ISO_SYNC_TYPE_ASYNC = 1,
  USB_ISO_SYNC_TYPE_ADAPTIVE = 2,
  USB_ISO_SYNC_TYPE_SYNC = 3
}
 Imported from libusb, with changed names.
 
enum  usb_iso_usage_type {
  USB_ISO_USAGE_TYPE_DATA = 0,
  USB_ISO_USAGE_TYPE_FEEDBACK = 1,
  USB_ISO_USAGE_TYPE_IMPLICIT = 2
}
 Imported from libusb, with changed names.
 

Functions

Result usbDsInitialize (UsbComplexId complexId, const UsbDsDeviceInfo *deviceinfo)
 
void usbDsExit (void)
 Exit usbDs. Any interfaces/endpoints which are left open are automatically closed, since otherwise usb-sysmodule won't fully reset usbds to defaults.
 
ServiceusbDsGetServiceSession (void)
 
Handle usbDsGetStateChangeEvent (void)
 
Result usbDsGetState (u32 *out)
 
Result usbDsGetDsInterface (UsbDsInterface **interface, struct usb_interface_descriptor *descriptor, const char *interface_name)
 
Result usbDsWaitReady (void)
 Wait for initialization to finish where data-transfer is usable.
 
Result usbDsParseReportData (UsbDsReportData *reportdata, u32 urbId, u32 *requestedSize, u32 *transferredSize)
 Parse usbDsReportData from the Get*ReportData commands, where urbId is from the post-buffer commands. Will return the converted urb_status result-value.
 
void usbDsInterface_Close (UsbDsInterface *interface)
 IDsInterface.
 
Result usbDsInterface_GetDsEndpoint (UsbDsInterface *interface, UsbDsEndpoint **endpoint, struct usb_endpoint_descriptor *descriptor)
 
Result usbDsInterface_EnableInterface (UsbDsInterface *interface)
 
Result usbDsInterface_DisableInterface (UsbDsInterface *interface)
 
Result usbDsInterface_CtrlInPostBufferAsync (UsbDsInterface *interface, void *buffer, size_t size, u32 *urbId)
 
Result usbDsInterface_CtrlOutPostBufferAsync (UsbDsInterface *interface, void *buffer, size_t size, u32 *urbId)
 
Result usbDsInterface_GetCtrlInReportData (UsbDsInterface *interface, UsbDsReportData *out)
 
Result usbDsInterface_GetCtrlOutReportData (UsbDsInterface *interface, UsbDsReportData *out)
 
Result usbDsInterface_StallCtrl (UsbDsInterface *interface)
 
void usbDsEndpoint_Close (UsbDsEndpoint *endpoint)
 IDsEndpoint.
 
Result usbDsEndpoint_PostBufferAsync (UsbDsEndpoint *endpoint, void *buffer, size_t size, u32 *urbId)
 
Result usbDsEndpoint_GetReportData (UsbDsEndpoint *endpoint, UsbDsReportData *out)
 
Result usbDsEndpoint_StallCtrl (UsbDsEndpoint *endpoint)
 

Detailed Description

USB (usb:*) service IPC wrapper.

Author
yellows8

Macro Definition Documentation

#define USBDS_DEFAULT_InterfaceNumber   0x4

usb:ds Switch-as-device<>host USB comms, see also here: http://switchbrew.org/index.php?title=USB_services

Names starting with "libusb" were changed to "usb" to avoid collision with actual libusb if it's ever used.