int main(void) { wdt_enable(WDTO_1S); odDebugInit(); hardwareInit(); usbInit(); intr3Status = 0; sendEmptyFrame = 0; sei(); for(;;){ /* main event loop */ wdt_reset(); usbPoll(); uartPoll(); #if USB_CFG_HAVE_INTRIN_ENDPOINT3 /* We need to report rx and tx carrier after open attempt */ if(intr3Status != 0 && usbInterruptIsReady3()){ static uchar serialStateNotification[10] = {0xa1, 0x20, 0, 0, 0, 0, 2, 0, 3, 0}; if(intr3Status == 2){ usbSetInterrupt3(serialStateNotification, 8); }else{ usbSetInterrupt3(serialStateNotification+8, 2); } intr3Status--; } #endif } return 0; }
void sendDataUSB3(uchar* data, unsigned int byteCount) { int currentByte; int currentCount; currentByte = 0; while(currentByte < byteCount) { currentCount = byteCount - currentByte; if(currentCount > 8) currentCount = 8; while(!usbInterruptIsReady3()) usbPoll(); usbSetInterrupt3(data + currentByte, currentCount*sizeof(uchar)); currentByte += currentCount; } }
void xbox_send_pad_state() { while (!usbInterruptIsReady3()) usbPoll(); usbSetInterrupt3((unsigned char *) &gamepad_state, 20); }