/* Teensyduino Core Library
* http://www.pjrc.com/teensy/
* Copyright (c) 2013 PJRC.COM, LLC.
- * Modifications by Jacob Alexander (2013-2014)
+ * Modifications by Jacob Alexander (2013-2015)
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
print("CONFIGURE - ");
#endif
usb_configuration = setup.wValue;
+ Output_Available = usb_configuration;
reg = &USB0_ENDPT1;
cfg = usb_endpoint_config_table;
// clear all BDT entries, free any allocated memory...
data = reply_buffer;
break;
case 0x0082: // GET_STATUS (endpoint)
- if (setup.wIndex > NUM_ENDPOINTS)
+ if ( setup.wIndex > NUM_ENDPOINTS )
{
// TODO: do we need to handle IN vs OUT here?
endpoint0_stall();
data = reply_buffer;
datalen = 2;
break;
- case 0x0102: // CLEAR_FEATURE (endpoint)
+ case 0x0100: // CLEAR_FEATURE (device)
+ case 0x0101: // CLEAR_FEATURE (interface)
+ // TODO: Currently ignoring, perhaps useful? -HaaTa
+ endpoint0_stall();
+ return;
+ case 0x0102: // CLEAR_FEATURE (interface)
i = setup.wIndex & 0x7F;
if ( i > NUM_ENDPOINTS || setup.wValue != 0 )
{
- // TODO: do we need to handle IN vs OUT here?
endpoint0_stall();
return;
}
- (*(uint8_t *)(&USB0_ENDPT0 + setup.wIndex * 4)) &= ~0x02;
+ //(*(uint8_t *)(&USB0_ENDPT0 + setup.wIndex * 4)) &= ~0x02;
// TODO: do we need to clear the data toggle here?
- break;
+ //break;
+
+ // FIXME: Clearing causes keyboard to freeze, likely an invalid clear
+ // XXX: Ignoring seems to work, though this may not be the ideal behaviour -HaaTa
+ endpoint0_stall();
+ return;
+ case 0x0300: // SET_FEATURE (device)
+ case 0x0301: // SET_FEATURE (interface)
+ // TODO: Currently ignoring, perhaps useful? -HaaTa
+ endpoint0_stall();
+ return;
case 0x0302: // SET_FEATURE (endpoint)
i = setup.wIndex & 0x7F;
if ( i > NUM_ENDPOINTS || setup.wValue != 0 )
SOFTWARE_RESET();
}
+// Kiibohd mk20dx256vlh7
+#elif defined(_mk20dx256vlh7_)
+ // Copies variable into the VBAT register, must be identical to the variable in the bootloader to jump to the bootloader flash mode
+ for ( int pos = 0; pos < sizeof(sys_reset_to_loader_magic); pos++ )
+ (&VBAT)[ pos ] = sys_reset_to_loader_magic[ pos ];
+ SOFTWARE_RESET();
+
// Teensy 3.0 and 3.1
#else
asm volatile("bkpt");
print("USB INIT"NL);
#endif
- // If no USB cable is attached, do not initialize usb
- // XXX Test -HaaTa
- //if ( USB0_OTGISTAT & USB_OTGSTAT_ID )
- // return 0;
-
// Clear out endpoints table
for ( int i = 0; i <= NUM_ENDPOINTS * 4; i++ )
{