hc32f460_driver_sys 0.1.0

Provide driver function binding for HDSC's HC32F460 MCU.
Documentation
/* automatically generated by rust-bindgen 0.72.1 */

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,
}