Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of F401RE-USBHost by
USBHALHost_KL46Z.h
00001 #pragma once 00002 #include "mbed.h" 00003 #include "USBHostTypes.h" 00004 #include "USBEndpoint.h" 00005 00006 #define GET_CONFIGURATION 8 00007 00008 // TOK_PID[5:2] 00009 #define Bus_Timeout 0x00 00010 #define Data_Error 0x0f 00011 00012 enum ODD_EVEN { 00013 ODD = 0, 00014 EVEN = 1, 00015 }; 00016 00017 class Report { 00018 public: 00019 void clear(); 00020 void print_errstat(); 00021 // error count 00022 uint32_t errstat_piderr; // USBx_ERRSTAT[PIDERR] 00023 uint32_t errstat_crc5eof;// USBx_ERRSTAT[CRC5EOF] 00024 uint32_t errstat_crc16; // USBx_ERRSTAT[CRC16] 00025 uint32_t errstat_dfn8; // USBx_ERRSTAT[DFN8] 00026 uint32_t errstat_btoerr; // USBx_ERRSTAT[BTOERR] 00027 uint32_t errstat_dmaerr; // USBx_ERRSTAT[DMAERR] 00028 uint32_t errstat_bsterr; // USBx_ERRSTAT[BTSERR] 00029 // 00030 uint32_t nak; 00031 uint32_t stall; 00032 }; 00033 00034 class USBHALHost { 00035 public: 00036 uint8_t LastStatus; 00037 uint8_t prev_LastStatus; 00038 Report report; 00039 00040 protected: 00041 USBHALHost(); 00042 void init(); 00043 virtual bool addDevice(USBDeviceConnected* parent, int port, bool lowSpeed) = 0; 00044 int token_setup(USBEndpoint* ep, SETUP_PACKET* setup, uint16_t wLength = 0); 00045 int multi_token_in(USBEndpoint* ep, uint8_t* data = NULL, size_t total = 0, bool block = true); 00046 int multi_token_out(USBEndpoint* ep, const uint8_t* data = NULL, size_t total = 0); 00047 void multi_token_inNB(USBEndpoint* ep, uint8_t* data, int size); 00048 USB_TYPE multi_token_inNB_result(USBEndpoint* ep); 00049 void setToggle(USBEndpoint* ep, uint8_t toggle); 00050 int token_iso_in(USBEndpoint* ep, uint8_t* data, int size); 00051 00052 private: 00053 void setAddr(int addr, bool lowSpeed = false); 00054 void setEndpoint(); 00055 void token_transfer_init(); 00056 void token_ready(); 00057 int token_in(USBEndpoint* ep, uint8_t* data = NULL, int size = 0, int retryLimit = 10); 00058 int token_out(USBEndpoint* ep, const uint8_t* data = NULL, int size = 0, int retryLimit = 10); 00059 static void _usbisr(void); 00060 void UsbIrqhandler(); 00061 __IO bool attach_done; 00062 __IO bool token_done; 00063 bool wait_attach(); 00064 bool root_lowSpeed; 00065 ODD_EVEN tx_ptr; 00066 ODD_EVEN rx_ptr; 00067 static USBHALHost * instHost; 00068 };
Generated on Tue Jul 12 2022 21:43:28 by
1.7.2
