usb_free(p);
p = n;
}
- rx_first[i] = NULL;
- rx_last[i] = NULL;
+ rx_first[ i ] = NULL;
+ rx_last[ i ] = NULL;
p = tx_first[i];
while (p)
{
usb_free(p);
p = n;
}
- tx_first[i] = NULL;
- tx_last[i] = NULL;
+ tx_first[ i ] = NULL;
+ tx_last[ i ] = NULL;
usb_rx_byte_count_data[i] = 0;
- switch (tx_state[i]) {
+ switch ( tx_state[ i ] )
+ {
case TX_STATE_EVEN_FREE:
case TX_STATE_NONE_FREE_EVEN_FIRST:
- tx_state[i] = TX_STATE_BOTH_FREE_EVEN_FIRST;
+ tx_state[ i ] = TX_STATE_BOTH_FREE_EVEN_FIRST;
break;
case TX_STATE_ODD_FREE:
case TX_STATE_NONE_FREE_ODD_FIRST:
- tx_state[i] = TX_STATE_BOTH_FREE_ODD_FIRST;
+ tx_state[ i ] = TX_STATE_BOTH_FREE_ODD_FIRST;
break;
default:
break;
p = usb_malloc();
if ( p )
{
- table[index(i, RX, EVEN)].addr = p->buf;
- table[index(i, RX, EVEN)].desc = BDT_DESC(64, 0);
+ table[ index( i, RX, EVEN ) ].addr = p->buf;
+ table[ index( i, RX, EVEN ) ].desc = BDT_DESC( 64, 0 );
}
else
{
- table[index(i, RX, EVEN)].desc = 0;
+ table[ index( i, RX, EVEN ) ].desc = 0;
usb_rx_memory_needed++;
}
p = usb_malloc();
if ( p )
{
- table[index(i, RX, ODD)].addr = p->buf;
- table[index(i, RX, ODD)].desc = BDT_DESC(64, 1);
+ table[ index( i, RX, ODD ) ].addr = p->buf;
+ table[ index( i, RX, ODD ) ].desc = BDT_DESC( 64, 1 );
}
else
{
- table[index(i, RX, ODD)].desc = 0;
+ table[ index( i, RX, ODD ) ].desc = 0;
usb_rx_memory_needed++;
}
}
- table[index(i, TX, EVEN)].desc = 0;
- table[index(i, TX, ODD)].desc = 0;
+ table[ index( i, TX, EVEN ) ].desc = 0;
+ table[ index( i, TX, ODD ) ].desc = 0;
}
break;
case 0x0880: // GET_CONFIGURATION
case 0x0681:
#ifdef UART_DEBUG
print("desc:");
- printHex(setup.wValue);
- print(NL);
+ printHex( setup.wValue );
+ print( NL );
#endif
for ( list = usb_descriptor_list; 1; list++ )
{
if ( list->addr == NULL )
break;
- //if (setup.wValue == list->wValue &&
- //(setup.wIndex == list->wIndex) || ((setup.wValue >> 8) == 3)) {
if ( setup.wValue == list->wValue && setup.wIndex == list->wIndex )
{
data = list->addr;
}
#if UART_DEBUG
print("Desc found, ");
- printHex32((uint32_t)data);
+ printHex32( (uint32_t)data );
print(",");
- printHex(datalen);
+ printHex( datalen );
print(",");
- printHex_op(data[0], 2);
- printHex_op(data[1], 2);
- printHex_op(data[2], 2);
- printHex_op(data[3], 2);
- printHex_op(data[4], 2);
- printHex_op(data[5], 2);
- print(NL);
+ printHex_op( data[0], 2 );
+ printHex_op( data[1], 2 );
+ printHex_op( data[2], 2 );
+ printHex_op( data[3], 2 );
+ printHex_op( data[4], 2 );
+ printHex_op( data[5], 2 );
+ print( NL );
#endif
goto send;
}
}
#ifdef UART_DEBUG
- print("desc: not found"NL);
+ print( "desc: not found" NL );
#endif
endpoint0_stall();
return;
case 0x2021: // CDC_SET_LINE_CODING
// XXX Needed?
//serial_print("set coding, waiting...\n");
+ //endpoint0_stall();
return; // Cannot stall here (causes issues)
case 0x0921: // HID SET_REPORT
printHex( setup.wValue );
print(" - ");
printHex( setup.wValue & 0xFF );
- print(NL);
+ print( NL );
#endif
USBKeys_LEDs = setup.wValue & 0xFF;
endpoint0_stall();
cfg = usb_endpoint_config_table;
//serial_print("rx_mem:");
__disable_irq();
- for (i=1; i <= NUM_ENDPOINTS; i++) {
- if (*cfg++ & USB_ENDPT_EPRXEN) {
+ for ( i = 1; i <= NUM_ENDPOINTS; i++ )
+ {
+ if ( *cfg++ & USB_ENDPT_EPRXEN )
+ {
if ( table[ index( i, RX, EVEN ) ].desc == 0 )
{
- table[index(i, RX, EVEN)].addr = packet->buf;
- table[index(i, RX, EVEN)].desc = BDT_DESC( 64, 0 );
+ table[ index( i, RX, EVEN ) ].addr = packet->buf;
+ table[ index( i, RX, EVEN ) ].desc = BDT_DESC( 64, 0 );
usb_rx_memory_needed--;
__enable_irq();
//serial_phex(i);
//status = USB0_ISTAT;
//serial_phex(status);
//serial_print("\n");
- restart:
+restart:
status = USB0_ISTAT;
/*
print("USB ISR STATUS: ");
if ( stat & 0x08 )
{ // transmit
usb_free( packet );
- packet = tx_first[endpoint];
+ packet = tx_first[ endpoint ];
if ( packet )
{
//serial_print("tx packet\n");
switch ( tx_state[ endpoint ] )
{
case TX_STATE_BOTH_FREE_EVEN_FIRST:
- tx_state[endpoint] = TX_STATE_ODD_FREE;
+ tx_state[ endpoint ] = TX_STATE_ODD_FREE;
break;
case TX_STATE_BOTH_FREE_ODD_FIRST:
- tx_state[endpoint] = TX_STATE_EVEN_FREE;
+ tx_state[ endpoint ] = TX_STATE_EVEN_FREE;
break;
case TX_STATE_EVEN_FREE:
- tx_state[endpoint] = TX_STATE_NONE_FREE_ODD_FIRST;
+ tx_state[ endpoint ] = TX_STATE_NONE_FREE_ODD_FIRST;
break;
case TX_STATE_ODD_FREE:
- tx_state[endpoint] = TX_STATE_NONE_FREE_EVEN_FIRST;
+ tx_state[ endpoint ] = TX_STATE_NONE_FREE_EVEN_FIRST;
break;
default:
break;
}
- b->desc = BDT_DESC(packet->len, ((uint32_t)b & 8) ? DATA1 : DATA0);
+ b->desc = BDT_DESC( packet->len, ((uint32_t)b & 8) ? DATA1 : DATA0 );
} else {
//serial_print("tx no packet\n");
switch ( tx_state[ endpoint ] )
case TX_STATE_BOTH_FREE_ODD_FIRST:
break;
case TX_STATE_EVEN_FREE:
- tx_state[endpoint] = TX_STATE_BOTH_FREE_EVEN_FIRST;
+ tx_state[ endpoint ] = TX_STATE_BOTH_FREE_EVEN_FIRST;
break;
case TX_STATE_ODD_FREE:
- tx_state[endpoint] = TX_STATE_BOTH_FREE_ODD_FIRST;
+ tx_state[ endpoint ] = TX_STATE_BOTH_FREE_ODD_FIRST;
break;
default:
- tx_state[endpoint] = ((uint32_t)b & 8)
+ tx_state[ endpoint ] = ((uint32_t)b & 8)
? TX_STATE_ODD_FREE
: TX_STATE_EVEN_FREE;
break;
else
{ // receive
packet->len = b->desc >> 16;
- if (packet->len > 0) {
+ if ( packet->len > 0 )
+ {
packet->index = 0;
packet->next = NULL;
- if (rx_first[endpoint] == NULL)
+ if ( rx_first[ endpoint ] == NULL )
{
//serial_print("rx 1st, epidx=");
//serial_phex(endpoint);
//serial_print(", packet=");
//serial_phex32((uint32_t)packet);
//serial_print("\n");
- rx_first[endpoint] = packet;
+ rx_first[ endpoint ] = packet;
}
else
{
//serial_print(", packet=");
//serial_phex32((uint32_t)packet);
//serial_print("\n");
- rx_last[endpoint]->next = packet;
+ rx_last[ endpoint ]->next = packet;
}
- rx_last[endpoint] = packet;
- usb_rx_byte_count_data[endpoint] += packet->len;
+ rx_last[ endpoint ] = packet;
+ usb_rx_byte_count_data[ endpoint ] += packet->len;
// TODO: implement a per-endpoint maximum # of allocated packets
// so a flood of incoming data on 1 endpoint doesn't starve
// the others if the user isn't reading it regularly
if ( packet )
{
b->addr = packet->buf;
- b->desc = BDT_DESC(64, ((uint32_t)b & 8) ? DATA1 : DATA0);
+ b->desc = BDT_DESC( 64, ((uint32_t)b & 8) ? DATA1 : DATA0 );
}
else
{
}
else
{
- b->desc = BDT_DESC(64, ((uint32_t)b & 8) ? DATA1 : DATA0);
+ b->desc = BDT_DESC( 64, ((uint32_t)b & 8) ? DATA1 : DATA0 );
}
}
ep0_tx_bdt_bank = 0;
// set up buffers to receive Setup and OUT packets
- table[index(0, RX, EVEN)].desc = BDT_DESC(EP0_SIZE, 0);
- table[index(0, RX, EVEN)].addr = ep0_rx0_buf;
- table[index(0, RX, ODD)].desc = BDT_DESC(EP0_SIZE, 0);
- table[index(0, RX, ODD)].addr = ep0_rx1_buf;
- table[index(0, TX, EVEN)].desc = 0;
- table[index(0, TX, ODD)].desc = 0;
+ table[index( 0, RX, EVEN ) ].desc = BDT_DESC( EP0_SIZE, 0 );
+ table[index( 0, RX, EVEN ) ].addr = ep0_rx0_buf;
+ table[index( 0, RX, ODD ) ].desc = BDT_DESC( EP0_SIZE, 0 );
+ table[index( 0, RX, ODD ) ].addr = ep0_rx1_buf;
+ table[index( 0, TX, EVEN ) ].desc = 0;
+ table[index( 0, TX, ODD ) ].desc = 0;
// activate endpoint 0
USB0_ENDPT0 = USB_ENDPT_EPRXEN | USB_ENDPT_EPTXEN | USB_ENDPT_EPHSHK;
//serial_print("sleep\n");
USB0_ISTAT = USB_ISTAT_SLEEP;
}
-
}