VSF Documented
Data Structures | Macros | Typedefs | Enumerations
vsf_template_usb.h File Reference
#include "hal/arch/vsf_arch.h"

Go to the source code of this file.

Data Structures

struct  usb_dc_cfg_t
 
struct  usb_dc_ip_info_t
 
struct  usb_hc_ip_info_t
 

Macros

#define USB_DC_SPEED_UNKNOWN   0
 
#define USB_DC_SPEED_LOW   1
 
#define USB_DC_SPEED_FULL   2
 
#define USB_DC_SPEED_HIGH   3
 
#define USB_DC_SPEED_SUPER   4
 
#define __USB_HC_IP_FUNC_DEF(__N, __VALUE)
 
#define __USB_HC_IP_INTERFACE_FUNC_DEF(__N, __VALUE)
 
#define __USB_HC_IP_BODY_EX(__N, __OBJ, __HEADER)
 
#define __USB_HC_IP_BODY(__N, __HEADER)    __USB_HC_IP_BODY_EX(__N, USB_HC##__N##_IP, __HEADER)
 
#define __USB_OTG_HC_IP_BODY(__N, __HEADER)    __USB_HC_IP_BODY_EX(__N, USB_OTG##__N##_IP, __HEADER)
 
#define __USB_DC_IP_FUNC_DEF(__N, __VALUE)
 
#define __USB_DC_IP_INTERFACE_FUNC_DEF(__N, __VALUE)
 
#define __USB_DC_IP_BODY_EX(__N, __OBJ, __HEADER)
 
#define __USB_DC_IP_BODY(__N, __HEADER)    __USB_DC_IP_BODY_EX(__N, USB_DC##__N##_IP, __HEADER)
 
#define __USB_OTG_DC_IP_BODY(__N, __HEADER)    __USB_DC_IP_BODY_EX(__N, USB_OTG##__N##_IP, __HEADER)
 
#define __USB_DC_FROM_IP(__N, __OBJ, __DRV_NAME, __HEADER)
 
#define __USB_DC_FUNC_DEF(__N, __VALUE)
 
#define __USB_DC_INTERFACE_FUNC_DEF(__N, __VALUE)
 
#define __USB_DC_BODY_EX(__N, __HEADER, __OBJ)
 
#define __USB_DC_BODY(__N, __HEADER)    __USB_DC_BODY_EX(__N, __HEADER, USB_DC##__N)
 

Typedefs

typedef void(* usb_ip_irqhandler_t) (void *param)
 
typedef void(* usb_dc_evthandler_t) (void *param, usb_evt_t evt, uint_fast8_t value)
 
typedef uint8_t usb_dc_speed_t
 
usb_dc configuration structure
typedef struct usb_dc_cfg_t usb_dc_cfg_t
 
usb_dc_ip information structure
typedef struct usb_dc_ip_info_t usb_dc_ip_info_t
 
usb_hc_ip information structure
typedef struct usb_hc_ip_info_t usb_hc_ip_info_t
 

Enumerations

enum  usb_dc_feature_t { USB_DC_FEATURE_TRANSFER = 1 << 0 }
 
enum  usb_ep_type_t {
  USB_EP_TYPE_CONTROL = 0 ,
  USB_EP_TYPE_INTERRUPT = 3 ,
  USB_EP_TYPE_BULK = 2 ,
  USB_EP_TYPE_ISO = 1
}
 
enum  usb_evt_t {
  USB_ON_ATTACH ,
  USB_ON_DETACH ,
  USB_ON_RESET ,
  USB_ON_SETUP ,
  USB_ON_ERROR ,
  USB_ON_SUSPEND ,
  USB_ON_RESUME ,
  USB_ON_SOF ,
  USB_ON_IN ,
  USB_ON_NAK ,
  USB_ON_OUT ,
  USB_ON_STATUS ,
  USB_ON_UNDERFLOW ,
  USB_ON_OVERFLOW ,
  USB_USR_EVT
}
 
enum  usb_dc_err_t {
  USB_DC_ERR_ERROR ,
  USB_DC_ERR_INVALID_CRC ,
  USB_DC_ERR_SOF_TO
}
 

Functions

usb_hc_ip control interface, IMPORTANT: i_usb_hc_ip_t belongs to lv0
 def_interface (i_usb_hc_ip_t) vsf_err_t(*Init)(usb_hc_ip_cfg_t *cfg)
 initialize
 

Variables

usb_dc_ip configuration structure
 usb_dc_ip_cfg_t
 
usb_hc_ip configuration structure
 usb_hc_ip_cfg_t
 

usb_dc and ep control interface, IMPORTANT: i_usb_dc_t belongs to lv0

void(* Fini )(void)
 
void(* Reset )(usb_dc_cfg_t *cfg)
 
void(* Connect )(void)
 
void(* Disconnect )(void)
 
void(* Wakeup )(void)
 
void(* SetAddress )(uint_fast8_t addr)
 
uint_fast8_t(* GetAddress )(void)
 
uint_fast16_t(* GetFrameNo )(void)
 
uint_fast8_t(* GetMicroFrameNo )(void)
 
void(* GetSetup )(uint8_t *buffer)
 
void(* StatusStage )(bool is_in)
 
struct { 
 
   uint_fast8_t(*   GetFeature )(uint_fast8_t ep,
       uint_fast8_t feature) 
 
   vsf_err_t(*   Add )(uint_fast8_t ep,
       usb_ep_type_t type,
       uint_fast16_t size
 
   uint_fast16_t(*   GetSize )(uint_fast8_t ep) 
 
   vsf_err_t(*   SetStall )(uint_fast8_t ep) 
 
   bool(*   IsStalled )(uint_fast8_t ep) 
 
   vsf_err_t(*   ClearStall )(uint_fast8_t ep) 
 
   uint_fast32_t(*   GetDataSize )(uint_fast8_t ep) 
 
   struct { 
 
      vsf_err_t(*   ReadBuffer )(uint_fast8_t ep, uint8_t
         *buffer, uint_fast16_t size
 
      vsf_err_t(*   EnableOut )(uint_fast8_t ep) 
 
      vsf_err_t(*   SetDataSize )(uint_fast8_t ep,
          uint_fast16_t size
 
      vsf_err_t(*   WriteBuffer )(uint_fast8_t ep, uint8_t
         *buffer, uint_fast16_t size
 
   }   Transaction 
 
   struct { 
 
      vsf_err_t(*   Recv )(uint_fast8_t ep, uint8_t
         *buffer, uint_fast32_t size
 
      vsf_err_t(*   Send )(uint_fast8_t ep, uint8_t
         *buffer, uint_fast32_t size,
          bool zlp) 
 
   }   Transfer 
 
Ep 
 
void(* Irq )(void)
 irq handler
 
 def_interface (i_usb_dc_t) vsf_err_t(*Init)(usb_dc_cfg_t *cfg)
 

usb_dc_ip control interface

void(* GetInfo )(usb_dc_ip_info_t *info)
 get register base
 
 def_interface (i_usb_dc_ip_t) vsf_err_t(*Init)(usb_dc_ip_cfg_t *cfg)
 initialize
 

Macro Definition Documentation

◆ USB_DC_SPEED_UNKNOWN

#define USB_DC_SPEED_UNKNOWN   0

◆ USB_DC_SPEED_LOW

#define USB_DC_SPEED_LOW   1

◆ USB_DC_SPEED_FULL

#define USB_DC_SPEED_FULL   2

◆ USB_DC_SPEED_HIGH

#define USB_DC_SPEED_HIGH   3

◆ USB_DC_SPEED_SUPER

#define USB_DC_SPEED_SUPER   4

◆ __USB_HC_IP_FUNC_DEF

#define __USB_HC_IP_FUNC_DEF (   __N,
  __VALUE 
)
Value:
static vsf_err_t usb_hc##__N##_init(usb_hc_ip_cfg_t *cfg); \
static void usb_hc##__N##_get_info(usb_hc_ip_info_t *info); \
static void usb_hc##__N##_irq(void);
vsf_err_t
Definition __type.h:42
void _init()
Definition init.c:12
Definition vsf_template_usb.h:446
usb_hc_ip_cfg_t
Definition vsf_template_usb.h:441

◆ __USB_HC_IP_INTERFACE_FUNC_DEF

#define __USB_HC_IP_INTERFACE_FUNC_DEF (   __N,
  __VALUE 
)
Value:
{ \
.Init = &usb_hc##__N##_init, \
.GetInfo = &usb_hc##__N##_get_info, \
.Irq = &usb_hc##__N##_irq, \
}

◆ __USB_HC_IP_BODY_EX

#define __USB_HC_IP_BODY_EX (   __N,
  __OBJ,
  __HEADER 
)
Value:
static vsf_err_t usb_hc##__N##_init(usb_hc_ip_cfg_t *cfg) \
{ return __HEADER##_init(&(__OBJ), cfg); } \
static void usb_hc##__N##_get_info(usb_hc_ip_info_t *info) \
{ __HEADER##_get_info(&(__OBJ), info); } \
static void usb_hc##__N##_irq(void) \
{ __HEADER##_irq(&(__OBJ)); }

◆ __USB_HC_IP_BODY

#define __USB_HC_IP_BODY (   __N,
  __HEADER 
)     __USB_HC_IP_BODY_EX(__N, USB_HC##__N##_IP, __HEADER)

◆ __USB_OTG_HC_IP_BODY

#define __USB_OTG_HC_IP_BODY (   __N,
  __HEADER 
)     __USB_HC_IP_BODY_EX(__N, USB_OTG##__N##_IP, __HEADER)

◆ __USB_DC_IP_FUNC_DEF

#define __USB_DC_IP_FUNC_DEF (   __N,
  __VALUE 
)
Value:
static vsf_err_t usb_dc##__N##_init(usb_dc_ip_cfg_t *cfg); \
static void usb_dc##__N##_fini(void); \
static void usb_dc##__N##_get_info(usb_dc_ip_info_t *info); \
static void usb_dc##__N##_connect(void); \
static void usb_dc##__N##_disconnect(void); \
static void usb_dc##__N##_irq(void);
void _fini()
Definition init.c:33
Definition vsf_template_usb.h:408
usb_dc_ip_cfg_t
Definition vsf_template_usb.h:403

◆ __USB_DC_IP_INTERFACE_FUNC_DEF

#define __USB_DC_IP_INTERFACE_FUNC_DEF (   __N,
  __VALUE 
)
Value:
{ \
.Init = &usb_dc##__N##_init, \
.Fini = &usb_dc##__N##_fini, \
.GetInfo = &usb_dc##__N##_get_info, \
.Connect = &usb_dc##__N##_connect, \
.Disconnect = &usb_dc##__N##_disconnect, \
.Irq = &usb_dc##__N##_irq, \
}

◆ __USB_DC_IP_BODY_EX

#define __USB_DC_IP_BODY_EX (   __N,
  __OBJ,
  __HEADER 
)
Value:
static vsf_err_t usb_dc##__N##_init(usb_dc_ip_cfg_t *cfg) \
{ return __HEADER##_init(&(__OBJ), cfg); } \
static void usb_dc##__N##_fini(void) \
{ __HEADER##_fini(&(__OBJ)); } \
static void usb_dc##__N##_get_info(usb_dc_ip_info_t *info) \
{ __HEADER##_get_info(&(__OBJ), info); } \
static void usb_dc##__N##_connect(void) \
{ __HEADER##_connect(&(__OBJ)); } \
static void usb_dc##__N##_disconnect(void) \
{ __HEADER##_disconnect(&(__OBJ)); } \
static void usb_dc##__N##_irq(void) \
{ __HEADER##_irq(&(__OBJ)); }

◆ __USB_DC_IP_BODY

#define __USB_DC_IP_BODY (   __N,
  __HEADER 
)     __USB_DC_IP_BODY_EX(__N, USB_DC##__N##_IP, __HEADER)

◆ __USB_OTG_DC_IP_BODY

#define __USB_OTG_DC_IP_BODY (   __N,
  __HEADER 
)     __USB_DC_IP_BODY_EX(__N, USB_OTG##__N##_IP, __HEADER)

◆ __USB_DC_FROM_IP

#define __USB_DC_FROM_IP (   __N,
  __OBJ,
  __DRV_NAME,
  __HEADER 
)
Value:
const i_usb_dc_t __DRV_NAME = __USB_DC_INTERFACE_FUNC_DEF(__N, NULL); \
__USB_DC_BODY_EX(__N, __HEADER, __OBJ)
#define NULL
Definition stddef.h:52
#define __USB_DC_INTERFACE_FUNC_DEF(__N, __VALUE)
Definition vsf_template_usb.h:162
#define __USB_DC_FUNC_DEF(__N, __VALUE)
Definition vsf_template_usb.h:109

◆ __USB_DC_FUNC_DEF

#define __USB_DC_FUNC_DEF (   __N,
  __VALUE 
)

◆ __USB_DC_INTERFACE_FUNC_DEF

#define __USB_DC_INTERFACE_FUNC_DEF (   __N,
  __VALUE 
)

◆ __USB_DC_BODY_EX

#define __USB_DC_BODY_EX (   __N,
  __HEADER,
  __OBJ 
)

◆ __USB_DC_BODY

#define __USB_DC_BODY (   __N,
  __HEADER 
)     __USB_DC_BODY_EX(__N, __HEADER, USB_DC##__N)

Typedef Documentation

◆ usb_ip_irqhandler_t

typedef void(* usb_ip_irqhandler_t) (void *param)

◆ usb_dc_evthandler_t

typedef void(* usb_dc_evthandler_t) (void *param, usb_evt_t evt, uint_fast8_t value)

◆ usb_dc_speed_t

◆ usb_dc_cfg_t

typedef struct usb_dc_cfg_t usb_dc_cfg_t

◆ usb_dc_ip_info_t

◆ usb_hc_ip_info_t

Enumeration Type Documentation

◆ usb_dc_feature_t

Enumerator
USB_DC_FEATURE_TRANSFER 

◆ usb_ep_type_t

Enumerator
USB_EP_TYPE_CONTROL 
USB_EP_TYPE_INTERRUPT 
USB_EP_TYPE_BULK 
USB_EP_TYPE_ISO 

◆ usb_evt_t

enum usb_evt_t
Enumerator
USB_ON_ATTACH 
USB_ON_DETACH 
USB_ON_RESET 
USB_ON_SETUP 
USB_ON_ERROR 
USB_ON_SUSPEND 
USB_ON_RESUME 
USB_ON_SOF 
USB_ON_IN 
USB_ON_NAK 
USB_ON_OUT 
USB_ON_STATUS 
USB_ON_UNDERFLOW 
USB_ON_OVERFLOW 
USB_USR_EVT 

◆ usb_dc_err_t

Enumerator
USB_DC_ERR_ERROR 
USB_DC_ERR_INVALID_CRC 
USB_DC_ERR_SOF_TO 

Function Documentation

◆ def_interface() [1/3]

def_interface ( i_usb_dc_t  )

◆ def_interface() [2/3]

def_interface ( i_usb_dc_ip_t  )

initialize

◆ def_interface() [3/3]

def_interface ( i_usb_hc_ip_t  )

initialize

Variable Documentation

◆ Fini

void(* Fini)(void) ( void  )

◆ Reset

void(* Reset) (usb_dc_cfg_t *cfg) ( usb_dc_cfg_t cfg)

◆ Connect

void(* Connect)(void) ( void  )

◆ Disconnect

void(* Disconnect)(void) ( void  )

◆ Wakeup

void(* Wakeup) (void) ( void  )

◆ SetAddress

void(* SetAddress) (uint_fast8_t addr) ( uint_fast8_t  addr)

◆ GetAddress

uint_fast8_t(* GetAddress) (void) ( void  )

◆ GetFrameNo

uint_fast16_t(* GetFrameNo) (void) ( void  )

◆ GetMicroFrameNo

uint_fast8_t(* GetMicroFrameNo) (void) ( void  )

◆ GetSetup

void(* GetSetup) (uint8_t *buffer) ( uint8_t buffer)

◆ StatusStage

void(* StatusStage) (bool is_in) ( bool  is_in)

◆ GetFeature

uint_fast8_t(* GetFeature) (uint_fast8_t ep, uint_fast8_t feature) ( uint_fast8_t  ep,
uint_fast8_t  feature 
)

◆ Add

◆ GetSize

uint_fast16_t(* GetSize) (uint_fast8_t ep) ( uint_fast8_t  ep)

◆ SetStall

vsf_err_t(* SetStall) (uint_fast8_t ep) ( uint_fast8_t  ep)

◆ IsStalled

bool(* IsStalled) (uint_fast8_t ep) ( uint_fast8_t  ep)

◆ ClearStall

vsf_err_t(* ClearStall) (uint_fast8_t ep) ( uint_fast8_t  ep)

◆ GetDataSize

uint_fast32_t(* GetDataSize) (uint_fast8_t ep) ( uint_fast8_t  ep)

get the data size in hw-buffer in transaction mode get the all transferred data size in transfer mode

◆ ReadBuffer

vsf_err_t(* ReadBuffer) (uint_fast8_t ep, uint8_t *buffer, uint_fast16_t size) ( uint_fast8_t  ep,
uint8_t buffer,
uint_fast16_t  size 
)

◆ EnableOut

vsf_err_t(* EnableOut) (uint_fast8_t ep) ( uint_fast8_t  ep)

◆ SetDataSize

vsf_err_t(* SetDataSize) (uint_fast8_t ep, uint_fast16_t size) ( uint_fast8_t  ep,
uint_fast16_t  size 
)

◆ WriteBuffer

vsf_err_t(* WriteBuffer) (uint_fast8_t ep, uint8_t *buffer, uint_fast16_t size) ( uint_fast8_t  ep,
uint8_t buffer,
uint_fast16_t  size 
)

◆ [struct]

struct { ... } Transaction

◆ Recv

vsf_err_t(* Recv) (uint_fast8_t ep, uint8_t *buffer, uint_fast32_t size) ( uint_fast8_t  ep,
uint8_t buffer,
uint_fast32_t  size 
)

◆ Send

vsf_err_t(* Send) (uint_fast8_t ep, uint8_t *buffer, uint_fast32_t size, bool zlp) ( uint_fast8_t  ep,
uint8_t buffer,
uint_fast32_t  size,
bool  zlp 
)

◆ [struct]

struct { ... } Transfer

◆ [struct]

struct { ... } Ep

◆ Irq

void(* Irq) (void) ( void  )

irq handler

◆ usb_dc_ip_cfg_t

typedef struct usb_dc_ip_cfg_t

< interrupt priority

< irqhandler function

< dcd related parameters

◆ GetInfo

void(* GetInfo)(usb_hc_ip_info_t *info) ( usb_dc_ip_info_t info)

get register base

◆ usb_hc_ip_cfg_t

typedef struct usb_hc_ip_cfg_t

< interrupt priority

< irqhandler function

< hcd related parameters