mirror of
https://github.com/felis/USB_Host_Shield_2.0.git
synced 2024-03-22 11:31:26 +01:00
fixes
This commit is contained in:
parent
e73a684b46
commit
b85e21cf98
5 changed files with 48 additions and 39 deletions
11
cdcacm.cpp
11
cdcacm.cpp
|
@ -269,12 +269,11 @@ uint8_t ACM::Release() {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t ACM::Poll() {
|
uint8_t ACM::Poll() {
|
||||||
uint8_t rcode = 0;
|
//uint8_t rcode = 0;
|
||||||
|
//if(!bPollEnable)
|
||||||
if(!bPollEnable)
|
// return 0;
|
||||||
return 0;
|
//return rcode;
|
||||||
|
return 0;
|
||||||
return rcode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t ACM::RcvData(uint16_t *bytes_rcvd, uint8_t *dataptr) {
|
uint8_t ACM::RcvData(uint16_t *bytes_rcvd, uint8_t *dataptr) {
|
||||||
|
|
11
cdcacm.h
11
cdcacm.h
|
@ -162,10 +162,6 @@ typedef struct {
|
||||||
|
|
||||||
class ACM : public USBDeviceConfig, public UsbConfigXtracter {
|
class ACM : public USBDeviceConfig, public UsbConfigXtracter {
|
||||||
protected:
|
protected:
|
||||||
static const uint8_t epDataInIndex; // DataIn endpoint index
|
|
||||||
static const uint8_t epDataOutIndex; // DataOUT endpoint index
|
|
||||||
static const uint8_t epInterruptInIndex; // InterruptIN endpoint index
|
|
||||||
|
|
||||||
USB *pUsb;
|
USB *pUsb;
|
||||||
CDCAsyncOper *pAsync;
|
CDCAsyncOper *pAsync;
|
||||||
uint8_t bAddress;
|
uint8_t bAddress;
|
||||||
|
@ -178,11 +174,14 @@ protected:
|
||||||
volatile bool ready; //device ready indicator
|
volatile bool ready; //device ready indicator
|
||||||
tty_features _enhanced_status; // current status
|
tty_features _enhanced_status; // current status
|
||||||
|
|
||||||
EpInfo epInfo[ACM_MAX_ENDPOINTS];
|
|
||||||
|
|
||||||
void PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR* ep_ptr);
|
void PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR* ep_ptr);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static const uint8_t epDataInIndex; // DataIn endpoint index
|
||||||
|
static const uint8_t epDataOutIndex; // DataOUT endpoint index
|
||||||
|
static const uint8_t epInterruptInIndex; // InterruptIN endpoint index
|
||||||
|
EpInfo epInfo[ACM_MAX_ENDPOINTS];
|
||||||
|
|
||||||
ACM(USB *pusb, CDCAsyncOper *pasync);
|
ACM(USB *pusb, CDCAsyncOper *pasync);
|
||||||
|
|
||||||
uint8_t SetCommFeature(uint16_t fid, uint8_t nbytes, uint8_t *dataptr);
|
uint8_t SetCommFeature(uint16_t fid, uint8_t nbytes, uint8_t *dataptr);
|
||||||
|
|
23
cdcftdi.cpp
23
cdcftdi.cpp
|
@ -51,15 +51,17 @@ uint8_t FTDI::Init(uint8_t parent, uint8_t port, bool lowspeed) {
|
||||||
|
|
||||||
USBTRACE("FTDI Init\r\n");
|
USBTRACE("FTDI Init\r\n");
|
||||||
|
|
||||||
if(bAddress)
|
if(bAddress) {
|
||||||
|
USBTRACE("FTDI CLASS IN USE??\r\n");
|
||||||
return USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE;
|
return USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE;
|
||||||
|
}
|
||||||
// Get pointer to pseudo device with address 0 assigned
|
// Get pointer to pseudo device with address 0 assigned
|
||||||
p = addrPool.GetUsbDevicePtr(0);
|
p = addrPool.GetUsbDevicePtr(0);
|
||||||
|
|
||||||
if(!p)
|
if(!p) {
|
||||||
|
USBTRACE("FTDI NO ADDRESS??\r\n");
|
||||||
return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL;
|
return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL;
|
||||||
|
}
|
||||||
if(!p->epinfo) {
|
if(!p->epinfo) {
|
||||||
USBTRACE("epinfo\r\n");
|
USBTRACE("epinfo\r\n");
|
||||||
return USB_ERROR_EPINFO_IS_NULL;
|
return USB_ERROR_EPINFO_IS_NULL;
|
||||||
|
@ -79,11 +81,16 @@ uint8_t FTDI::Init(uint8_t parent, uint8_t port, bool lowspeed) {
|
||||||
// Restore p->epinfo
|
// Restore p->epinfo
|
||||||
p->epinfo = oldep_ptr;
|
p->epinfo = oldep_ptr;
|
||||||
|
|
||||||
if(rcode)
|
if(rcode) {
|
||||||
goto FailGetDevDescr;
|
|
||||||
if(udd->idVendor != FTDI_VID || udd->idProduct != FTDI_PID)
|
|
||||||
return USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED;
|
|
||||||
|
|
||||||
|
goto FailGetDevDescr;
|
||||||
|
}
|
||||||
|
if(udd->idVendor != FTDI_VID && udd->idProduct != FTDI_PID) {
|
||||||
|
USBTRACE("FTDI NO SUPPORT??\r\n");
|
||||||
|
Serial.println(udd->idVendor, HEX);
|
||||||
|
Serial.println(udd->idProduct, HEX);
|
||||||
|
return USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED;
|
||||||
|
}
|
||||||
// Save type of FTDI chip
|
// Save type of FTDI chip
|
||||||
wFTDIType = udd->bcdDevice;
|
wFTDIType = udd->bcdDevice;
|
||||||
|
|
||||||
|
|
|
@ -137,6 +137,10 @@ public:
|
||||||
virtual bool VIDPIDOK(uint16_t vid, uint16_t pid) {
|
virtual bool VIDPIDOK(uint16_t vid, uint16_t pid) {
|
||||||
return (vid == FTDI_VID && pid == FTDI_PID);
|
return (vid == FTDI_VID && pid == FTDI_PID);
|
||||||
}
|
}
|
||||||
|
virtual bool isReady() {
|
||||||
|
return bPollEnable;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -80,26 +80,26 @@ void setup() {
|
||||||
/* GPIO test */
|
/* GPIO test */
|
||||||
/* in order to simplify board layout, GPIN pins on text fixture are connected to GPOUT */
|
/* in order to simplify board layout, GPIN pins on text fixture are connected to GPOUT */
|
||||||
/* in reverse order, i.e, GPIN0 is connected to GPOUT7, GPIN1 to GPOUT6, etc. */
|
/* in reverse order, i.e, GPIN0 is connected to GPOUT7, GPIN1 to GPOUT6, etc. */
|
||||||
{
|
//{
|
||||||
uint8_t tmpbyte;
|
// uint8_t tmpbyte;
|
||||||
E_Notify(PSTR("\r\nGPIO test. Connect GPIN0 to GPOUT7, GPIN1 to GPOUT6, and so on"), 0x80);
|
// E_Notify(PSTR("\r\nGPIO test. Connect GPIN0 to GPOUT7, GPIN1 to GPOUT6, and so on"), 0x80);
|
||||||
for(uint8_t sample_gpio = 0; sample_gpio < 255; sample_gpio++) {
|
// for(uint8_t sample_gpio = 0; sample_gpio < 255; sample_gpio++) {
|
||||||
Usb.gpioWr(sample_gpio);
|
// Usb.gpioWr(sample_gpio);
|
||||||
tmpbyte = Usb.gpioRd();
|
// tmpbyte = Usb.gpioRd();
|
||||||
/* bit reversing code copied vetbatim from http://graphics.stanford.edu/~seander/bithacks.html#BitReverseObvious */
|
// /* bit reversing code copied vetbatim from http://graphics.stanford.edu/~seander/bithacks.html#BitReverseObvious */
|
||||||
tmpbyte = ((tmpbyte * 0x0802LU & 0x22110LU) | (tmpbyte * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16;
|
// tmpbyte = ((tmpbyte * 0x0802LU & 0x22110LU) | (tmpbyte * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16;
|
||||||
if(sample_gpio != tmpbyte) {
|
// if(sample_gpio != tmpbyte) {
|
||||||
E_Notify(PSTR("\r\nTest failed. Value written: "), 0x80);
|
// E_Notify(PSTR("\r\nTest failed. Value written: "), 0x80);
|
||||||
print_hex(sample_gpio, 8);
|
// print_hex(sample_gpio, 8);
|
||||||
E_Notify(PSTR(" Value read: "), 0x80);
|
// E_Notify(PSTR(" Value read: "), 0x80);
|
||||||
print_hex(tmpbyte, 8);
|
// print_hex(tmpbyte, 8);
|
||||||
E_Notify(PSTR(" "), 0x80);
|
// E_Notify(PSTR(" "), 0x80);
|
||||||
press_any_key();
|
// press_any_key();
|
||||||
break;
|
// break;
|
||||||
}//if( sample_gpio != tmpbyte...
|
// }//if( sample_gpio != tmpbyte...
|
||||||
}//for( uint8_t sample_gpio...
|
// }//for( uint8_t sample_gpio...
|
||||||
E_Notify(PSTR("\r\nGPIO test passed."), 0x80);
|
// E_Notify(PSTR("\r\nGPIO test passed."), 0x80);
|
||||||
}//GPIO test
|
//}//GPIO test
|
||||||
/* PLL test. Stops/starts MAX3421E oscillator several times */
|
/* PLL test. Stops/starts MAX3421E oscillator several times */
|
||||||
{
|
{
|
||||||
E_Notify(PSTR("\r\nPLL test. 100 chip resets will be performed"), 0x80);
|
E_Notify(PSTR("\r\nPLL test. 100 chip resets will be performed"), 0x80);
|
||||||
|
|
Loading…
Reference in a new issue