pub const MAX_DATA_LENGTH: u32 = 512;
#[doc = " @}\n/\n/*******************************************************************************\n Global type definitions ('typedef')\n/\n/**\n @defgroup USB_Global_Types USB Global Types\n @{"]
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_GREGS {
pub GVBUSCFG: u32,
pub Reserved04: u32,
pub GAHBCFG: u32,
pub GUSBCFG: u32,
pub GRSTCTL: u32,
pub GINTSTS: u32,
pub GINTMSK: u32,
pub GRXSTSR: u32,
pub GRXSTSP: u32,
pub GRXFSIZ: u32,
pub HNPTXFSIZ: u32,
pub HNPTXSTS: u32,
pub Reserved30: [u32; 3usize],
pub CID: u32,
pub Reserved40: [u32; 5usize],
pub GLPMCFG: u32,
pub Reserved58: [u32; 42usize],
pub HPTXFSIZ: u32,
pub DIEPTXF: [u32; 6usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_DREGS {
pub DCFG: u32,
pub DCTL: u32,
pub DSTS: u32,
pub Reserved0C: u32,
pub DIEPMSK: u32,
pub DOEPMSK: u32,
pub DAINT: u32,
pub DAINTMSK: u32,
pub Reserved20: [u32; 4usize],
pub DTHRCTL: u32,
pub DIEPEMPMSK: u32,
pub DEACHINT: u32,
pub DEACHINTMSK: u32,
pub Reserved40: u32,
pub DIEPEACHMSK1: u32,
pub Reserved48: [u32; 15usize],
pub DOEPEACHMSK1: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_INEPREGS {
pub DIEPCTL: u32,
pub Reserved04: u32,
pub DIEPINT: u32,
pub Reserved0C: u32,
pub DIEPTSIZ: u32,
pub DIEPDMA: u32,
pub DTXFSTS: u32,
pub Reserved18: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_OUTEPREGS {
pub DOEPCTL: u32,
pub Reserved04: u32,
pub DOEPINT: u32,
pub Reserved0C: u32,
pub DOEPTSIZ: u32,
pub DOEPDMA: u32,
pub Reserved18: [u32; 2usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_HREGS {
pub HCFG: u32,
pub HFIR: u32,
pub HFNUM: u32,
pub Reserved40C: u32,
pub HPTXSTS: u32,
pub HAINT: u32,
pub HAINTMSK: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_HC_REGS {
pub HCCHAR: u32,
pub HCSPLT: u32,
pub HCINT: u32,
pub HCINTMSK: u32,
pub HCTSIZ: u32,
pub HCDMA: u32,
pub Reserved: [u32; 2usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct LL_USB_TypeDef {
pub GREGS: *mut USB_CORE_GREGS,
pub DREGS: *mut USB_CORE_DREGS,
pub HREGS: *mut USB_CORE_HREGS,
pub INEP_REGS: [*mut USB_CORE_INEPREGS; 6usize],
pub OUTEP_REGS: [*mut USB_CORE_OUTEPREGS; 6usize],
pub HC_REGS: [*mut USB_CORE_HC_REGS; 12usize],
pub HPRT: *mut u32,
pub DFIFO: [*mut u32; 6usize],
pub GCCTL: *mut u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_CORE_BASIC_CFGS {
pub host_chnum: u8,
pub dev_epnum: u8,
pub dmaen: u8,
pub low_power: u8,
pub phy_type: u8,
pub core_type: u8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_HOST_CH {
pub dev_addr: u8,
pub ep_idx: u8,
pub is_epin: u8,
pub ch_speed: u8,
pub do_ping: u8,
pub ep_type: u8,
pub max_packet: u16,
pub pid_type: u8,
pub in_toggle: u8,
pub out_toggle: u8,
pub dma_addr: u32,
pub xfer_len: u32,
pub xfer_count: u32,
pub xfer_buff: *mut u8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_DEV_EP {
pub epidx: u8,
pub ep_dir: u8,
pub trans_type: u8,
pub ep_stall: u8,
pub data_pid_start: u8,
pub datax_pid: u8,
pub tx_fifo_num: u16,
pub maxpacket: u32,
pub rem_data_len: u32,
pub total_data_len: u32,
pub ctl_data_len: u32,
pub dma_addr: u32,
pub xfer_len: u32,
pub xfer_count: u32,
pub xfer_buff: *mut u8,
}
pub const HOST_CH_STATUS_HOST_CH_IDLE: HOST_CH_STATUS = 0;
pub const HOST_CH_STATUS_HOST_CH_XFERCOMPL: HOST_CH_STATUS = 1;
pub const HOST_CH_STATUS_HOST_CH_CHHLTD: HOST_CH_STATUS = 2;
pub const HOST_CH_STATUS_HOST_CH_NAK: HOST_CH_STATUS = 3;
pub const HOST_CH_STATUS_HOST_CH_NYET: HOST_CH_STATUS = 4;
pub const HOST_CH_STATUS_HOST_CH_STALL: HOST_CH_STATUS = 5;
pub const HOST_CH_STATUS_HOST_CH_XACTERR: HOST_CH_STATUS = 6;
pub const HOST_CH_STATUS_HOST_CH_BBLERR: HOST_CH_STATUS = 7;
pub const HOST_CH_STATUS_HOST_CH_DATATGLERR: HOST_CH_STATUS = 8;
pub const HOST_CH_STATUS_HOST_CH_AHBERR: HOST_CH_STATUS = 9;
pub const HOST_CH_STATUS_HOST_CH_FRMOVRUN: HOST_CH_STATUS = 10;
pub const HOST_CH_STATUS_HOST_CH_BNAINTR: HOST_CH_STATUS = 11;
pub const HOST_CH_STATUS_HOST_CH_XCS_XACT_ERR: HOST_CH_STATUS = 12;
pub const HOST_CH_STATUS_HOST_CH_DESC_LST_ROLLINTR: HOST_CH_STATUS = 13;
#[doc = " Global type definitions ('typedef')"]
pub type HOST_CH_STATUS = ::core::ffi::c_uint;
pub const HOST_CH_XFER_STATE_HOST_CH_XFER_IDLE: HOST_CH_XFER_STATE = 0;
pub const HOST_CH_XFER_STATE_HOST_CH_XFER_DONE: HOST_CH_XFER_STATE = 1;
pub const HOST_CH_XFER_STATE_HOST_CH_XFER_UNREADY: HOST_CH_XFER_STATE = 2;
pub const HOST_CH_XFER_STATE_HOST_CH_XFER_ERROR: HOST_CH_XFER_STATE = 3;
pub const HOST_CH_XFER_STATE_HOST_CH_XFER_STALL: HOST_CH_XFER_STATE = 4;
pub type HOST_CH_XFER_STATE = ::core::ffi::c_uint;
pub const CTRL_HANDLE_STATUS_CTRL_START: CTRL_HANDLE_STATUS = 0;
pub const CTRL_HANDLE_STATUS_CTRL_XFRC: CTRL_HANDLE_STATUS = 1;
pub const CTRL_HANDLE_STATUS_CTRL_HALTED: CTRL_HANDLE_STATUS = 2;
pub const CTRL_HANDLE_STATUS_CTRL_NAK: CTRL_HANDLE_STATUS = 3;
pub const CTRL_HANDLE_STATUS_CTRL_STALL: CTRL_HANDLE_STATUS = 4;
pub const CTRL_HANDLE_STATUS_CTRL_XACTERR: CTRL_HANDLE_STATUS = 5;
pub const CTRL_HANDLE_STATUS_CTRL_BBLERR: CTRL_HANDLE_STATUS = 6;
pub const CTRL_HANDLE_STATUS_CTRL_DATATGLERR: CTRL_HANDLE_STATUS = 7;
pub const CTRL_HANDLE_STATUS_CTRL_FAIL: CTRL_HANDLE_STATUS = 8;
pub type CTRL_HANDLE_STATUS = ::core::ffi::c_uint;
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_SETUP_REQ {
pub bmRequest: u8,
pub bRequest: u8,
pub wValue: u16,
pub wIndex: u16,
pub wLength: u16,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct usb_dev_desc_func {
pub get_dev_desc: ::core::option::Option<unsafe extern "C" fn(length: *mut u16) -> *mut u8>,
pub get_dev_langiddesc:
::core::option::Option<unsafe extern "C" fn(length: *mut u16) -> *mut u8>,
pub get_dev_manufacturerstr:
::core::option::Option<unsafe extern "C" fn(length: *mut u16) -> *mut u8>,
pub get_dev_productstr:
::core::option::Option<unsafe extern "C" fn(length: *mut u16) -> *mut u8>,
pub get_dev_serialstr:
::core::option::Option<unsafe extern "C" fn(length: *mut u16) -> *mut u8>,
pub get_dev_configstr:
::core::option::Option<unsafe extern "C" fn(length: *mut u16) -> *mut u8>,
pub get_dev_interfacestr:
::core::option::Option<unsafe extern "C" fn(length: *mut u16) -> *mut u8>,
pub get_dev_winusbosstr:
::core::option::Option<unsafe extern "C" fn(length: *mut u16) -> *mut u8>,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct usb_dev_class_func {
pub class_init: ::core::option::Option<unsafe extern "C" fn(pdev: *mut ::core::ffi::c_void)>,
pub class_deinit: ::core::option::Option<unsafe extern "C" fn(pdev: *mut ::core::ffi::c_void)>,
pub ep0_setup: ::core::option::Option<
unsafe extern "C" fn(pdev: *mut ::core::ffi::c_void, req: *mut USB_SETUP_REQ) -> u8,
>,
pub ep0_datain: ::core::option::Option<unsafe extern "C" fn(pdev: *mut ::core::ffi::c_void)>,
pub ep0_dataout: ::core::option::Option<unsafe extern "C" fn(pdev: *mut ::core::ffi::c_void)>,
pub class_getconfigdesc:
::core::option::Option<unsafe extern "C" fn(length: *mut u16) -> *mut u8>,
pub class_sof:
::core::option::Option<unsafe extern "C" fn(pdev: *mut ::core::ffi::c_void) -> u8>,
pub class_datain:
::core::option::Option<unsafe extern "C" fn(pdev: *mut ::core::ffi::c_void, epnum: u8)>,
pub class_dataout:
::core::option::Option<unsafe extern "C" fn(pdev: *mut ::core::ffi::c_void, epnum: u8)>,
pub class_syn_in_incomplt:
::core::option::Option<unsafe extern "C" fn(pdev: *mut ::core::ffi::c_void)>,
pub class_syn_out_incomplt:
::core::option::Option<unsafe extern "C" fn(pdev: *mut ::core::ffi::c_void)>,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct usb_dev_user_func {
pub user_init: ::core::option::Option<unsafe extern "C" fn()>,
pub user_devrst: ::core::option::Option<unsafe extern "C" fn()>,
pub user_devconfig: ::core::option::Option<unsafe extern "C" fn()>,
pub user_devsusp: ::core::option::Option<unsafe extern "C" fn()>,
pub user_devresume: ::core::option::Option<unsafe extern "C" fn()>,
pub user_devconn: ::core::option::Option<unsafe extern "C" fn()>,
pub user_devdisconn: ::core::option::Option<unsafe extern "C" fn()>,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_DEV_PARAM {
pub device_config: u8,
pub device_address: u8,
pub device_state: u8,
pub device_old_status: u8,
pub device_cur_status: u8,
pub connection_status: u8,
pub device_remote_wakeup: u8,
pub test_mode: u8,
pub in_ep: [USB_DEV_EP; 6usize],
pub out_ep: [USB_DEV_EP; 6usize],
pub setup_pkt_buf: [u8; 24usize],
pub class_callback: *mut usb_dev_class_func,
pub user_callback: *mut usb_dev_user_func,
pub desc_callback: *mut usb_dev_desc_func,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct USB_HOST_PARAM {
pub channel: [u16; 12usize],
pub hc: [USB_HOST_CH; 12usize],
pub is_dev_connect: u32,
pub Rx_Buffer: [u8; 512usize],
pub ErrCnt: [u32; 12usize],
pub XferCnt: [u32; 12usize],
pub HC_Status: [HOST_CH_STATUS; 12usize],
pub URB_State: [HOST_CH_XFER_STATE; 12usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct usb_core_instance {
pub basic_cfgs: USB_CORE_BASIC_CFGS,
pub regs: LL_USB_TypeDef,
pub dev: USB_DEV_PARAM,
}