final

Dependencies:   mbed FATFileSystem

Fork of KL46Z-USBHostMSD_HelloWorld by Norimasa Okamoto

Committer:
homzovam
Date:
Sat Apr 04 20:16:39 2015 +0000
Revision:
4:77d6450f34d7
prijimac-funkcni final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
homzovam 4:77d6450f34d7 1 // Simple USBHost for FRDM-KL46Z
homzovam 4:77d6450f34d7 2 #pragma once
homzovam 4:77d6450f34d7 3 #include "mbed.h"
homzovam 4:77d6450f34d7 4 #include "USBHostTypes.h"
homzovam 4:77d6450f34d7 5 #include "USBEndpoint.h"
homzovam 4:77d6450f34d7 6
homzovam 4:77d6450f34d7 7 struct SETUP_PACKET {
homzovam 4:77d6450f34d7 8 uint8_t bmRequestType;
homzovam 4:77d6450f34d7 9 uint8_t bRequest;
homzovam 4:77d6450f34d7 10 uint16_t wValue;
homzovam 4:77d6450f34d7 11 uint16_t wIndex;
homzovam 4:77d6450f34d7 12 uint16_t wLength;
homzovam 4:77d6450f34d7 13 };
homzovam 4:77d6450f34d7 14
homzovam 4:77d6450f34d7 15 #define GET_CONFIGURATION 8
homzovam 4:77d6450f34d7 16
homzovam 4:77d6450f34d7 17 // TOK_PID[5:2]
homzovam 4:77d6450f34d7 18 #define Bus_Timeout 0x00
homzovam 4:77d6450f34d7 19 #define Data_Error 0x0f
homzovam 4:77d6450f34d7 20
homzovam 4:77d6450f34d7 21 enum ODD_EVEN {
homzovam 4:77d6450f34d7 22 ODD = 0,
homzovam 4:77d6450f34d7 23 EVEN = 1,
homzovam 4:77d6450f34d7 24 };
homzovam 4:77d6450f34d7 25
homzovam 4:77d6450f34d7 26 class Report {
homzovam 4:77d6450f34d7 27 public:
homzovam 4:77d6450f34d7 28 void clear();
homzovam 4:77d6450f34d7 29 void print_errstat();
homzovam 4:77d6450f34d7 30 // error count
homzovam 4:77d6450f34d7 31 uint32_t errstat_piderr; // USBx_ERRSTAT[PIDERR]
homzovam 4:77d6450f34d7 32 uint32_t errstat_crc5eof;// USBx_ERRSTAT[CRC5EOF]
homzovam 4:77d6450f34d7 33 uint32_t errstat_crc16; // USBx_ERRSTAT[CRC16]
homzovam 4:77d6450f34d7 34 uint32_t errstat_dfn8; // USBx_ERRSTAT[DFN8]
homzovam 4:77d6450f34d7 35 uint32_t errstat_btoerr; // USBx_ERRSTAT[BTOERR]
homzovam 4:77d6450f34d7 36 uint32_t errstat_dmaerr; // USBx_ERRSTAT[DMAERR]
homzovam 4:77d6450f34d7 37 uint32_t errstat_bsterr; // USBx_ERRSTAT[BTSERR]
homzovam 4:77d6450f34d7 38 //
homzovam 4:77d6450f34d7 39 uint32_t nak;
homzovam 4:77d6450f34d7 40 uint32_t stall;
homzovam 4:77d6450f34d7 41 };
homzovam 4:77d6450f34d7 42
homzovam 4:77d6450f34d7 43 class USBHALHost {
homzovam 4:77d6450f34d7 44 public:
homzovam 4:77d6450f34d7 45 uint8_t LastStatus;
homzovam 4:77d6450f34d7 46 uint8_t prev_LastStatus;
homzovam 4:77d6450f34d7 47 Report report;
homzovam 4:77d6450f34d7 48
homzovam 4:77d6450f34d7 49 protected:
homzovam 4:77d6450f34d7 50 USBHALHost();
homzovam 4:77d6450f34d7 51 void init();
homzovam 4:77d6450f34d7 52 virtual bool addDevice(USBDeviceConnected* parent, int port, bool lowSpeed) = 0;
homzovam 4:77d6450f34d7 53 void setAddr(int addr, bool lowSpeed = false);
homzovam 4:77d6450f34d7 54 void setEndpoint();
homzovam 4:77d6450f34d7 55 void token_transfer_init();
homzovam 4:77d6450f34d7 56 int token_setup(USBEndpoint* ep, SETUP_PACKET* setup, uint16_t wLength = 0);
homzovam 4:77d6450f34d7 57 int token_in(USBEndpoint* ep, uint8_t* data = NULL, int size = 0, int retryLimit = 10);
homzovam 4:77d6450f34d7 58 int token_out(USBEndpoint* ep, const uint8_t* data = NULL, int size = 0, int retryLimit = 10);
homzovam 4:77d6450f34d7 59 int token_iso_in(USBEndpoint* ep, uint8_t* data, int size);
homzovam 4:77d6450f34d7 60 void token_ready();
homzovam 4:77d6450f34d7 61 private:
homzovam 4:77d6450f34d7 62 static void _usbisr(void);
homzovam 4:77d6450f34d7 63 void UsbIrqhandler();
homzovam 4:77d6450f34d7 64 __IO bool attach_done;
homzovam 4:77d6450f34d7 65 __IO bool token_done;
homzovam 4:77d6450f34d7 66 bool wait_attach();
homzovam 4:77d6450f34d7 67 bool root_lowSpeed;
homzovam 4:77d6450f34d7 68 ODD_EVEN tx_ptr;
homzovam 4:77d6450f34d7 69 ODD_EVEN rx_ptr;
homzovam 4:77d6450f34d7 70 static USBHALHost * instHost;
homzovam 4:77d6450f34d7 71 };