---
 softusb-input/main.c |   66 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 41 insertions(+), 25 deletions(-)

diff --git a/softusb-input/main.c b/softusb-input/main.c
index 914b124..2500111 100644
--- a/softusb-input/main.c
+++ b/softusb-input/main.c
@@ -27,6 +27,16 @@
 #include "crc.h"
 
 enum {
+       USB_PID_OUT     = 0xe1,
+       USB_PID_IN      = 0x69,
+       USB_PID_SETUP   = 0x2d,
+       USB_PID_DATA0   = 0xc3,
+       USB_PID_DATA1   = 0x4b,
+       USB_PID_ACK     = 0xd2,
+       USB_PID_NAK     = 0x5a,
+};
+
+enum {
        PORT_STATE_DISCONNECTED = 0,
        PORT_STATE_BUS_RESET,
        PORT_STATE_WARMUP,
@@ -131,9 +141,9 @@ static inline unsigned char get_data_token(char *toggle)
 {
        *toggle = !(*toggle);
        if(*toggle)
-               return 0xc3;
+               return USB_PID_DATA0;
        else
-               return 0x4b;
+               return USB_PID_DATA1;
 }
 
 static const char control_failed[] PROGMEM = "Control transfer failed:\n";
@@ -153,7 +163,7 @@ static char control_transfer(unsigned char addr, struct 
setup_packet *p, char ou
        toggle = 0;
 
        /* send SETUP token */
-       make_usb_token(0x2d, addr, usb_buffer);
+       make_usb_token(USB_PID_SETUP, addr, usb_buffer);
        usb_tx(usb_buffer, 3);
        /* send setup packet */
        usb_buffer[0] = get_data_token(&toggle);
@@ -162,7 +172,7 @@ static char control_transfer(unsigned char addr, struct 
setup_packet *p, char ou
        usb_tx(usb_buffer, 11);
        /* get ACK token from device */
        rxlen = usb_rx(usb_buffer, 11);
-       if((rxlen != 1) || (usb_buffer[0] != 0xd2)) {
+       if((rxlen != 1) || (usb_buffer[0] != USB_PID_ACK)) {
                print_string(control_failed);
                print_string(setup_reply);
                dump_hex(usb_buffer, rxlen);
@@ -180,7 +190,7 @@ static char control_transfer(unsigned char addr, struct 
setup_packet *p, char ou
                                chunklen = 8;
 
                        /* send OUT token */
-                       make_usb_token(0xe1, addr, usb_buffer);
+                       make_usb_token(USB_PID_OUT, addr, usb_buffer);
                        usb_tx(usb_buffer, 3);
                        /* send DATAx packet */
                        usb_buffer[0] = get_data_token(&toggle);
@@ -189,8 +199,9 @@ static char control_transfer(unsigned char addr, struct 
setup_packet *p, char ou
                        usb_tx(usb_buffer, chunklen+3);
                        /* get ACK from device */
                        rxlen = usb_rx(usb_buffer, 11);
-                       if((rxlen != 1) || (usb_buffer[0] != 0xd2)) {
-                               if((rxlen > 0) && (usb_buffer[0] == 0x5a))
+                       if((rxlen != 1) || (usb_buffer[0] != USB_PID_ACK)) {
+                               if((rxlen > 0) &&
+                                   (usb_buffer[0] == USB_PID_NAK))
                                        continue; /* NAK: retry */
                                print_string(control_failed);
                                print_string(out_reply);
@@ -206,12 +217,14 @@ static char control_transfer(unsigned char addr, struct 
setup_packet *p, char ou
        } else if(maxlen != 0) {
                while(1) {
                        /* send IN token */
-                       make_usb_token(0x69, addr, usb_buffer);
+                       make_usb_token(USB_PID_IN, addr, usb_buffer);
                        usb_tx(usb_buffer, 3);
                        /* get DATAx packet */
                        rxlen = usb_rx(usb_buffer, 11);
-                       if((rxlen < 3) || ((usb_buffer[0] != 0xc3) && 
(usb_buffer[0] != 0x4b))) {
-                               if((rxlen > 0) && (usb_buffer[0] == 0x5a))
+                       if((rxlen < 3) || ((usb_buffer[0] != USB_PID_DATA0) &&
+                           (usb_buffer[0] != USB_PID_DATA1))) {
+                               if((rxlen > 0) &&
+                                   (usb_buffer[0] == USB_PID_NAK))
                                        continue; /* NAK: retry */
                                print_string(control_failed);
                                print_string(in_reply);
@@ -224,7 +237,7 @@ static char control_transfer(unsigned char addr, struct 
setup_packet *p, char ou
                        memcpy(payload, &usb_buffer[1], chunklen);
 
                        /* send ACK token */
-                       usb_buffer[0] = 0xd2;
+                       usb_buffer[0] = USB_PID_ACK;
                        usb_tx(usb_buffer, 1);
 
                        transferred += chunklen;
@@ -236,13 +249,14 @@ static char control_transfer(unsigned char addr, struct 
setup_packet *p, char ou
 
        /* send IN/OUT token in the opposite direction to end transfer */
 retry:
-       make_usb_token(out ? 0x69 : 0xe1, addr, usb_buffer);
+       make_usb_token(out ? USB_PID_IN : USB_PID_OUT, addr, usb_buffer);
        usb_tx(usb_buffer, 3);
        if(out) {
                /* get DATAx packet */
                rxlen = usb_rx(usb_buffer, 11);
-               if((rxlen != 3) || ((usb_buffer[0] != 0xc3) && (usb_buffer[0] 
!= 0x4b))) {
-                       if((rxlen > 0) && (usb_buffer[0] == 0x5a))
+               if((rxlen != 3) || ((usb_buffer[0] != USB_PID_DATA0) &&
+                   (usb_buffer[0] != USB_PID_DATA1))) {
+                       if((rxlen > 0) && (usb_buffer[0] == USB_PID_NAK))
                                goto retry; /* NAK: retry */
                        print_string(control_failed);
                        print_string(termination);
@@ -251,7 +265,7 @@ retry:
                        return -1;
                }
                /* send ACK token */
-               usb_buffer[0] = 0xd2;
+               usb_buffer[0] = USB_PID_ACK;
                usb_tx(usb_buffer, 1);
        } else {
                /* send DATAx packet */
@@ -260,8 +274,8 @@ retry:
                usb_tx(usb_buffer, 3);
                /* get ACK token from device */
                rxlen = usb_rx(usb_buffer, 11);
-               if((rxlen != 1) || (usb_buffer[0] != 0xd2)) {
-                       if((rxlen > 0) && (usb_buffer[0] == 0x5a))
+               if((rxlen != 1) || (usb_buffer[0] != USB_PID_ACK)) {
+                       if((rxlen > 0) && (usb_buffer[0] == USB_PID_NAK))
                                goto retry; /* NAK: retry */
                        print_string(control_failed);
                        print_string(termination);
@@ -283,28 +297,29 @@ static void poll(struct port_status *p)
        char i;
 
        /* IN */
-       make_usb_token(0x69, 0x081, usb_buffer);
+       make_usb_token(USB_PID_IN, 0x081, usb_buffer);
        usb_tx(usb_buffer, 3);
        /* DATAx */
        len = usb_rx(usb_buffer, 11);
        if(len < 6)
                return;
        if(usb_buffer[0] != p->expected_data) {
-               if((usb_buffer[0] == 0xc3) || (usb_buffer[0] == 0x4b)) {
+               if((usb_buffer[0] == USB_PID_DATA0) ||
+                   (usb_buffer[0] == USB_PID_DATA1)) {
                        /* ACK */
-                       usb_buffer[0] = 0xd2;
+                       usb_buffer[0] = USB_PID_ACK;
                        usb_tx(usb_buffer, 1);
                        print_string(datax_mismatch);
                }
                return; /* drop */
        }
        /* ACK */
-       usb_buffer[0] = 0xd2;
+       usb_buffer[0] = USB_PID_ACK;
        usb_tx(usb_buffer, 1);
-       if(p->expected_data == 0xc3)
-               p->expected_data = 0x4b;
+       if(p->expected_data == USB_PID_DATA0)
+               p->expected_data = USB_PID_DATA1;
        else
-               p->expected_data = 0xc3;
+               p->expected_data = USB_PID_DATA0;
        /* send to host */
        if(p->keyboard) {
                if(len >= 9) {
@@ -541,7 +556,8 @@ static void port_service(struct port_status *p, char name)
 
                        if(control_transfer(0x01, &packet, 1, NULL, 0) == 0) {
                                p->retry_count = 0;
-                               p->expected_data = 0xc3; /* start with DATA0 */
+                               p->expected_data = USB_PID_DATA0;
+                                   /* start with DATA0 */
                                p->state = PORT_STATE_RUNNING;
                        }
                        check_retry(p);
-- 
1.7.0.4

_______________________________________________
http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org
IRC: #milkymist@Freenode

Reply via email to