# HG changeset patch # User Paul Boddie # Date 1363186595 0 # Node ID f9bb62c60535ad21ae42fe71d2d4a999022ec299 # Parent 05341884dd5e716c378806d971e638b743c8a7f4 Incorporated start-of-frame and keep-alive packet generation into the low and full speed modes, removing SOF and KA packet generation when a device has disconnected. diff -r 05341884dd5e -r f9bb62c60535 test.c --- a/test.c Tue Mar 05 22:26:44 2013 +0000 +++ b/test.c Wed Mar 13 14:56:35 2013 +0000 @@ -134,8 +134,9 @@ #define MAX_MODE_DPPULLDN 128 #define MAX_MODE_HOST_ENABLED MAX_MODE_HOST | MAX_MODE_SEPIRQ_OFF | MAX_MODE_DMPULLDN | MAX_MODE_DPPULLDN -#define MAX_MODE_HOST_FULLSPEED MAX_MODE_HOST_ENABLED -#define MAX_MODE_HOST_LOWSPEED MAX_MODE_HOST_ENABLED | MAX_MODE_LOWSPEED +#define MAX_MODE_HOST_ACTIVE MAX_MODE_HOST_ENABLED | MAX_MODE_SOFKAENAB +#define MAX_MODE_HOST_FULLSPEED MAX_MODE_HOST_ACTIVE +#define MAX_MODE_HOST_LOWSPEED MAX_MODE_HOST_ACTIVE | MAX_MODE_LOWSPEED #define MAX_HCTL_BUSRST 1 #define MAX_HCTL_SAMPLEBUS 4 @@ -539,6 +540,7 @@ else if (!(hrsl & MAX_HRSL_JSTATUS) && !(hrsl & MAX_HRSL_KSTATUS)) { printf("Device disconnected.\n"); + max_write(MAX_REG_MODE, MAX_MODE_HOST_ENABLED); } else { @@ -910,7 +912,7 @@ else if ((devstate == MAX_DEVSTATE_CONNECTED) && bus_event) { - max_write(MAX_REG_MODE, max_read(MAX_REG_MODE, NULL) | MAX_MODE_SOFKAENAB); + max_write(MAX_REG_MODE, max_read(MAX_REG_MODE, NULL)); devstate = MAX_DEVSTATE_RESET; printf("RESET\n"); } @@ -924,7 +926,6 @@ printf("FAILED: RESET -> READY\n"); else { - max_write(MAX_REG_MODE, max_read(MAX_REG_MODE, NULL) & ~MAX_MODE_SOFKAENAB); max_set_address(&device); usb_show_languages(max_get_descriptor(&device, USB_DT_STRING, 0, 0)); usb_show_configuration(max_get_descriptor(&device, USB_DT_CONFIG, 0, 0));