LPCOpen Platform
LPCOpen Platform for NXP LPC Microcontrollers
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Host Controller Drivers

Modules

 Enhanced Host Controller Interface Driver
 

Macros

#define HCD_ENDPOINT_MAXPACKET_XFER_LEN   0xFFEEFFEE
 
#define YES   1
 
#define NO   0
 
#define HCD_MAX_ENDPOINT   8 /* Maximum number of endpoints */
 
#define HC_RESET_TIMEOUT   10 /* in microseconds */
 
#define TRANSFER_TIMEOUT_MS   1000
 
#define PORT_RESET_PERIOD_MS   100
 
#define INTERRUPT_LIST_ENABLE   YES /* Int transfer enable */
 
#define ISO_LIST_ENABLE   YES /* ISO transfer enable */
 
#define hcd_printf(...)
 
#define assert_status_ok_message(...)
 
#define ASSERT_STATUS_OK_MESSAGE(sts, message)
 
#define ASSERT_STATUS_OK(sts)   ASSERT_STATUS_OK_MESSAGE(sts, NULL)
 

Enumerations

enum  HCD_TRANSFER_TYPE { CONTROL_TRANSFER, ISOCHRONOUS_TRANSFER, BULK_TRANSFER, INTERRUPT_TRANSFER }
 
enum  HCD_TRANSFER_DIR { SETUP_TRANSFER, IN_TRANSFER, OUT_TRANSFER }
 
enum  HCD_USB_SPEED { FULL_SPEED = 0, LOW_SPEED, HIGH_SPEED }
 
enum  HCD_STATUS {
  HCD_STATUS_OK = 0, HCD_STATUS_TRANSFER_CRC, HCD_STATUS_TRANSFER_BitStuffing, HCD_STATUS_TRANSFER_DataToggleMismatch,
  HCD_STATUS_TRANSFER_Stall, HCD_STATUS_TRANSFER_DeviceNotResponding, HCD_STATUS_TRANSFER_PIDCheckFailure, HCD_STATUS_TRANSFER_UnexpectedPID,
  HCD_STATUS_TRANSFER_DataOverrun, HCD_STATUS_TRANSFER_DataUnderrun, HCD_STATUS_TRANSFER_CC_Reserved1, HCD_STATUS_TRANSFER_CC_Reserved2,
  HCD_STATUS_TRANSFER_BufferOverrun, HCD_STATUS_TRANSFER_BufferUnderrun, HCD_STATUS_TRANSFER_NotAccessed, HCD_STATUS_TRANSFER_Reserved,
  HCD_STATUS_STRUCTURE_IS_FREE, HCD_STATUS_TO_BE_REMOVED, HCD_STATUS_TRANSFER_QUEUED, HCD_STATUS_TRANSFER_COMPLETED,
  HCD_STATUS_TRANSFER_ERROR, HCD_STATUS_NOT_ENOUGH_MEMORY, HCD_STATUS_NOT_ENOUGH_ENDPOINT, HCD_STATUS_NOT_ENOUGH_GTD,
  HCD_STATUS_NOT_ENOUGH_ITD, HCD_STATUS_NOT_ENOUGH_QTD, HCD_STATUS_NOT_ENOUGH_HS_ITD, HCD_STATUS_NOT_ENOUGH_SITD,
  HCD_STATUS_DATA_OVERFLOW, HCD_STATUS_DEVICE_DISCONNECTED, HCD_STATUS_TRANSFER_TYPE_NOT_SUPPORTED, HCD_STATUS_PIPEHANDLE_INVALID,
  HCD_STATUS_PARAMETER_INVALID
}
 

Functions

HCD_STATUS HcdInitDriver (uint8_t HostID)
 
HCD_STATUS HcdDeInitDriver (uint8_t HostID)
 
void HcdIrqHandler (uint8_t HostID)
 
HCD_STATUS HcdRhPortReset (uint8_t HostID, uint8_t PortNum)
 
HCD_STATUS HcdRhPortEnable (uint8_t HostID, uint8_t PortNum)
 
HCD_STATUS HcdRhPortDisable (uint8_t HostID, uint8_t PortNum)
 
HCD_STATUS HcdGetDeviceSpeed (uint8_t HostID, uint8_t PortNum, HCD_USB_SPEED *DeviceSpeed)
 
uint32_t HcdGetFrameNumber (uint8_t HostID)
 
HCD_STATUS HcdOpenPipe (uint8_t HostID, uint8_t DeviceAddr, HCD_USB_SPEED DeviceSpeed, uint8_t EndpointNo, HCD_TRANSFER_TYPE TransferType, HCD_TRANSFER_DIR TransferDir, uint16_t MaxPacketSize, uint8_t Interval, uint8_t Mult, uint8_t HSHubDevAddr, uint8_t HSHubPortNum, uint32_t *const PipeHandle)
 
HCD_STATUS HcdClosePipe (uint32_t PipeHandle)
 
HCD_STATUS HcdCancelTransfer (uint32_t PipeHandle)
 
HCD_STATUS HcdClearEndpointHalt (uint32_t PipeHandle)
 
HCD_STATUS HcdControlTransfer (uint32_t PipeHandle, const USB_Request_Header_t *const pDeviceRequest, uint8_t *const buffer)
 
HCD_STATUS HcdDataTransfer (uint32_t PipeHandle, uint8_t *const buffer, uint32_t const length, uint16_t *const pActualTransferred)
 
HCD_STATUS HcdGetPipeStatus (uint32_t PipeHandle)
 

Detailed Description

Macro Definition Documentation

#define ASSERT_STATUS_OK (   sts)    ASSERT_STATUS_OK_MESSAGE(sts, NULL)

Definition at line 212 of file HCD.h.

#define assert_status_ok_message (   ...)

Definition at line 200 of file HCD.h.

#define ASSERT_STATUS_OK_MESSAGE (   sts,
  message 
)
Value:
do { \
HCD_STATUS status = (sts); \
assert_status_ok_message(status, message, __func__, __FILE__, __LINE__); \
if (HCD_STATUS_OK != status) { \
return status; \
} \
} while (0)

Definition at line 203 of file HCD.h.

#define HC_RESET_TIMEOUT   10 /* in microseconds */

Definition at line 55 of file HCD.h.

#define HCD_ENDPOINT_MAXPACKET_XFER_LEN   0xFFEEFFEE

Definition at line 45 of file HCD.h.

#define HCD_MAX_ENDPOINT   8 /* Maximum number of endpoints */

Definition at line 53 of file HCD.h.

#define hcd_printf (   ...)

Definition at line 199 of file HCD.h.

#define INTERRUPT_LIST_ENABLE   YES /* Int transfer enable */

Definition at line 60 of file HCD.h.

#define ISO_LIST_ENABLE   YES /* ISO transfer enable */

Definition at line 61 of file HCD.h.

#define NO   0

Definition at line 51 of file HCD.h.

#define PORT_RESET_PERIOD_MS   100

Definition at line 57 of file HCD.h.

#define TRANSFER_TIMEOUT_MS   1000

Definition at line 56 of file HCD.h.

#define YES   1

Definition at line 50 of file HCD.h.

Enumeration Type Documentation

enum HCD_STATUS
Enumerator:
HCD_STATUS_OK 
HCD_STATUS_TRANSFER_CRC 
HCD_STATUS_TRANSFER_BitStuffing 
HCD_STATUS_TRANSFER_DataToggleMismatch 
HCD_STATUS_TRANSFER_Stall 
HCD_STATUS_TRANSFER_DeviceNotResponding 
HCD_STATUS_TRANSFER_PIDCheckFailure 
HCD_STATUS_TRANSFER_UnexpectedPID 
HCD_STATUS_TRANSFER_DataOverrun 
HCD_STATUS_TRANSFER_DataUnderrun 
HCD_STATUS_TRANSFER_CC_Reserved1 
HCD_STATUS_TRANSFER_CC_Reserved2 
HCD_STATUS_TRANSFER_BufferOverrun 
HCD_STATUS_TRANSFER_BufferUnderrun 
HCD_STATUS_TRANSFER_NotAccessed 
HCD_STATUS_TRANSFER_Reserved 
HCD_STATUS_STRUCTURE_IS_FREE 
HCD_STATUS_TO_BE_REMOVED 
HCD_STATUS_TRANSFER_QUEUED 
HCD_STATUS_TRANSFER_COMPLETED 
HCD_STATUS_TRANSFER_ERROR 
HCD_STATUS_NOT_ENOUGH_MEMORY 
HCD_STATUS_NOT_ENOUGH_ENDPOINT 
HCD_STATUS_NOT_ENOUGH_GTD 
HCD_STATUS_NOT_ENOUGH_ITD 
HCD_STATUS_NOT_ENOUGH_QTD 
HCD_STATUS_NOT_ENOUGH_HS_ITD 
HCD_STATUS_NOT_ENOUGH_SITD 
HCD_STATUS_DATA_OVERFLOW 
HCD_STATUS_DEVICE_DISCONNECTED 
HCD_STATUS_TRANSFER_TYPE_NOT_SUPPORTED 
HCD_STATUS_PIPEHANDLE_INVALID 
HCD_STATUS_PARAMETER_INVALID 

Definition at line 85 of file HCD.h.

Enumerator:
SETUP_TRANSFER 
IN_TRANSFER 
OUT_TRANSFER 

Definition at line 73 of file HCD.h.

Enumerator:
CONTROL_TRANSFER 
ISOCHRONOUS_TRANSFER 
BULK_TRANSFER 
INTERRUPT_TRANSFER 

Definition at line 66 of file HCD.h.

Enumerator:
FULL_SPEED 
LOW_SPEED 
HIGH_SPEED 

Definition at line 79 of file HCD.h.

Function Documentation

HCD_STATUS HcdCancelTransfer ( uint32_t  PipeHandle)
HCD_STATUS HcdClearEndpointHalt ( uint32_t  PipeHandle)
HCD_STATUS HcdClosePipe ( uint32_t  PipeHandle)
HCD_STATUS HcdControlTransfer ( uint32_t  PipeHandle,
const USB_Request_Header_t *const  pDeviceRequest,
uint8_t *const  buffer 
)
HCD_STATUS HcdDataTransfer ( uint32_t  PipeHandle,
uint8_t *const  buffer,
uint32_t const  length,
uint16_t *const  pActualTransferred 
)
HCD_STATUS HcdDeInitDriver ( uint8_t  HostID)
HCD_STATUS HcdGetDeviceSpeed ( uint8_t  HostID,
uint8_t  PortNum,
HCD_USB_SPEED DeviceSpeed 
)
uint32_t HcdGetFrameNumber ( uint8_t  HostID)
HCD_STATUS HcdGetPipeStatus ( uint32_t  PipeHandle)
HCD_STATUS HcdInitDriver ( uint8_t  HostID)
void HcdIrqHandler ( uint8_t  HostID)
HCD_STATUS HcdOpenPipe ( uint8_t  HostID,
uint8_t  DeviceAddr,
HCD_USB_SPEED  DeviceSpeed,
uint8_t  EndpointNo,
HCD_TRANSFER_TYPE  TransferType,
HCD_TRANSFER_DIR  TransferDir,
uint16_t  MaxPacketSize,
uint8_t  Interval,
uint8_t  Mult,
uint8_t  HSHubDevAddr,
uint8_t  HSHubPortNum,
uint32_t *const  PipeHandle 
)
HCD_STATUS HcdRhPortDisable ( uint8_t  HostID,
uint8_t  PortNum 
)
HCD_STATUS HcdRhPortEnable ( uint8_t  HostID,
uint8_t  PortNum 
)
HCD_STATUS HcdRhPortReset ( uint8_t  HostID,
uint8_t  PortNum 
)