projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Device mode class driver callbacks are now fired before the control request status...
[pub/USBasp.git]
/
Projects
/
RelayBoard
/
RelayBoard.c
diff --git
a/Projects/RelayBoard/RelayBoard.c
b/Projects/RelayBoard/RelayBoard.c
index
0923a23
..
2fb7b69
100644
(file)
--- a/
Projects/RelayBoard/RelayBoard.c
+++ b/
Projects/RelayBoard/RelayBoard.c
@@
-7,6
+7,7
@@
*/
\r
\r
/*
\r
*/
\r
\r
/*
\r
+ Copyright 2010 OBinou (obconseil [at] gmail [dot] com)
\r
Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
\r
\r
Permission to use, copy, modify, distribute, and sell this
\r
Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
\r
\r
Permission to use, copy, modify, distribute, and sell this
\r
@@
-43,6
+44,8
@@
int main(void)
\r
{
\r
SetupHardware();
\r
int main(void)
\r
{
\r
SetupHardware();
\r
+
\r
+ sei();
\r
\r
for (;;)
\r
USB_USBTask();
\r
\r
for (;;)
\r
USB_USBTask();
\r
@@
-62,8
+65,8
@@
void SetupHardware(void)
USB_Init();
\r
\r
/* Initialize Relays */
\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
}
\r
\r
\r
@@
-76,8
+79,8
@@
void EVENT_USB_Device_ConfigurationChanged(void)
/** Event handler for the library USB Unhandled Control Packet event. */
\r
void EVENT_USB_Device_UnhandledControlRequest(void)
\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
switch (USB_ControlRequest.bRequest)
\r
{
\r
@@
-88,20
+91,22
@@
void EVENT_USB_Device_UnhandledControlRequest(void)
\r
Endpoint_ClearSETUP();
\r
\r
\r
Endpoint_ClearSETUP();
\r
\r
- Endpoint_Read_Control_Stream_LE(
data, sizeof(d
ata));
\r
+ Endpoint_Read_Control_Stream_LE(
ControlData, sizeof(ControlD
ata));
\r
Endpoint_ClearIN();
\r
\r
switch (USB_ControlRequest.wValue)
\r
{
\r
case 0x303:
\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
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
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
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
break;
\r
}
\r
}
\r
@@
-117,22
+122,24
@@
void EVENT_USB_Device_UnhandledControlRequest(void)
switch (USB_ControlRequest.wValue)
\r
{
\r
case 0x301:
\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
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
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
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
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
break;
\r
}
\r
\r
- if (
d
ata[1])
\r
- Endpoint_Write_Control_Stream_LE(
data, sizeof(d
ata));
\r
+ if (
ControlD
ata[1])
\r
+ Endpoint_Write_Control_Stream_LE(
ControlData, sizeof(ControlD
ata));
\r
\r
Endpoint_ClearOUT();
\r
}
\r
\r
Endpoint_ClearOUT();
\r
}
\r