int main(void)\r
{\r
SetupHardware();\r
+ \r
+ sei();\r
\r
for (;;)\r
USB_USBTask();\r
USB_Init();\r
\r
/* Initialize Relays */\r
- DDRC |= ALL_RELAYS;\r
- PORTC |= ALL_RELAYS;\r
+ DDRC |= ALL_RELAYS;\r
+ PORTC &= ~ALL_RELAYS;\r
}\r
\r
\r
/** Event handler for the library USB Unhandled Control Packet event. */\r
void EVENT_USB_Device_UnhandledControlRequest(void)\r
{\r
- const uint8_t serial[5] = { 0, 0, 0, 0, 1 };\r
- uint8_t data[2] = { 0, 0 };\r
+ const uint8_t SerialNumber[5] = { 0, 0, 0, 0, 1 };\r
+ uint8_t ControlData[2] = { 0, 0 };\r
\r
switch (USB_ControlRequest.bRequest)\r
{\r
\r
Endpoint_ClearSETUP();\r
\r
- Endpoint_Read_Control_Stream_LE(data, sizeof(data));\r
+ Endpoint_Read_Control_Stream_LE(ControlData, sizeof(ControlData));\r
Endpoint_ClearIN();\r
\r
switch (USB_ControlRequest.wValue)\r
{\r
case 0x303:\r
- if (data[1]) PORTC |= RELAY1; else PORTC &= ~RELAY1; break;\r
+ if (ControlData[1]) PORTC &= ~RELAY1; else PORTC |= RELAY1;\r
+ break;\r
case 0x306:\r
- if (data[1]) PORTC |= RELAY2; else PORTC &= ~RELAY2; break;\r
+ if (ControlData[1]) PORTC &= ~RELAY2; else PORTC |= RELAY2;\r
+ break;\r
case 0x309:\r
- if (data[1]) PORTC |= RELAY3; else PORTC &= ~RELAY3; break;\r
+ if (ControlData[1]) PORTC &= ~RELAY3; else PORTC |= RELAY3;\r
+ break;\r
case 0x30c:\r
- if (data[1]) PORTC |= RELAY4; else PORTC &= ~RELAY4; break;\r
- default:\r
+ if (ControlData[1]) PORTC &= ~RELAY4; else PORTC |= RELAY4;\r
break;\r
}\r
}\r
switch (USB_ControlRequest.wValue)\r
{\r
case 0x301:\r
- Endpoint_Write_Control_Stream_LE(serial, sizeof(serial));\r
+ Endpoint_Write_Control_Stream_LE(SerialNumber, sizeof(SerialNumber));\r
break;\r
case 0x303:\r
- if (PORTC & RELAY1) data[1]=3; else data[1]=2; break;\r
+ ControlData[1] = (PORTC & RELAY1) ? 2 : 3;\r
+ break;\r
case 0x306:\r
- if (PORTC & RELAY2) data[1]=3; else data[1]=2; break;\r
+ ControlData[1] = (PORTC & RELAY2) ? 2 : 3;\r
+ break;\r
case 0x309:\r
- if (PORTC & RELAY3) data[1]=3; else data[1]=2; break;\r
+ ControlData[1] = (PORTC & RELAY3) ? 2 : 3;\r
+ break;\r
case 0x30c:\r
- if (PORTC & RELAY4) data[1]=3; else data[1]=2; break;\r
- default:\r
+ ControlData[1] = (PORTC & RELAY4) ? 2 : 3;\r
break;\r
}\r
\r
- if (data[1])\r
- Endpoint_Write_Control_Stream_LE(data, sizeof(data));\r
+ if (ControlData[1])\r
+ Endpoint_Write_Control_Stream_LE(ControlData, sizeof(ControlData));\r
\r
Endpoint_ClearOUT();\r
}\r