diff options
Diffstat (limited to 'protocol')
-rw-r--r-- | protocol/adb.c | 2 | ||||
-rw-r--r-- | protocol/bluefruit/main.c | 2 | ||||
-rw-r--r-- | protocol/lufa/lufa.c | 41 | ||||
-rw-r--r-- | protocol/m0110.c | 21 | ||||
-rw-r--r-- | protocol/pjrc/main.c | 2 |
5 files changed, 43 insertions, 25 deletions
diff --git a/protocol/adb.c b/protocol/adb.c index f57afac937..bbff66df03 100644 --- a/protocol/adb.c +++ b/protocol/adb.c @@ -360,7 +360,7 @@ Commands 3: mice Registers: - 0: application(keyobard uses this to store its data.) + 0: application(keyboard uses this to store its data.) 1: application 2: application(keyboard uses this for LEDs and state of modifiers) 3: status and command diff --git a/protocol/bluefruit/main.c b/protocol/bluefruit/main.c index 094fdb3662..871062ab11 100644 --- a/protocol/bluefruit/main.c +++ b/protocol/bluefruit/main.c @@ -104,7 +104,7 @@ int main(void) dprintf("Starting main loop"); while (1) { while (suspend) { - suspend_power_down(WDTO_120MS); + suspend_power_down(); if (remote_wakeup && suspend_wakeup_condition()) { usb_remote_wakeup(); } diff --git a/protocol/lufa/lufa.c b/protocol/lufa/lufa.c index 6802f3b631..cdfc7bc6ad 100644 --- a/protocol/lufa/lufa.c +++ b/protocol/lufa/lufa.c @@ -148,8 +148,10 @@ static void Console_Task(void) */ void EVENT_USB_Device_Connect(void) { + print("[C]"); /* For battery powered device */ if (!USB_IsInitialized) { + USB_Disable(); USB_Init(); USB_Device_EnableSOFEvents(); } @@ -157,7 +159,9 @@ void EVENT_USB_Device_Connect(void) void EVENT_USB_Device_Disconnect(void) { + print("[D]"); /* For battery powered device */ + USB_IsInitialized = false; /* TODO: This doesn't work. After several plug in/outs can not be enumerated. if (USB_IsInitialized) { USB_Disable(); // Disable all interrupts @@ -169,10 +173,13 @@ void EVENT_USB_Device_Disconnect(void) void EVENT_USB_Device_Reset(void) { + print("[R]"); } void EVENT_USB_Device_Suspend() { + print("[S]"); + matrix_power_down(); #ifdef SLEEP_LED_ENABLE sleep_led_enable(); #endif @@ -180,6 +187,7 @@ void EVENT_USB_Device_Suspend() void EVENT_USB_Device_WakeUp() { + print("[W]"); suspend_wakeup_init(); #ifdef SLEEP_LED_ENABLE @@ -489,37 +497,28 @@ int8_t sendchar(uint8_t c) uint8_t ep = Endpoint_GetCurrentEndpoint(); Endpoint_SelectEndpoint(CONSOLE_IN_EPNUM); if (!Endpoint_IsEnabled() || !Endpoint_IsConfigured()) { - Endpoint_SelectEndpoint(ep); - return -1; + goto ERROR_EXIT; } if (timeouted && !Endpoint_IsReadWriteAllowed()) { - Endpoint_SelectEndpoint(ep); - return - 1; + goto ERROR_EXIT; } timeouted = false; uint8_t timeout = SEND_TIMEOUT; - uint16_t prevFN = USB_Device_GetFrameNumber(); while (!Endpoint_IsReadWriteAllowed()) { - switch (USB_DeviceState) { - case DEVICE_STATE_Unattached: - case DEVICE_STATE_Suspended: - return -1; + if (USB_DeviceState != DEVICE_STATE_Configured) { + goto ERROR_EXIT; } if (Endpoint_IsStalled()) { - Endpoint_SelectEndpoint(ep); - return -1; + goto ERROR_EXIT; } - if (prevFN != USB_Device_GetFrameNumber()) { - if (!(timeout--)) { - timeouted = true; - Endpoint_SelectEndpoint(ep); - return -1; - } - prevFN = USB_Device_GetFrameNumber(); + if (!(timeout--)) { + timeouted = true; + goto ERROR_EXIT; } + _delay_ms(1); } Endpoint_Write_8(c); @@ -530,6 +529,9 @@ int8_t sendchar(uint8_t c) Endpoint_SelectEndpoint(ep); return 0; +ERROR_EXIT: + Endpoint_SelectEndpoint(ep); + return -1; } #else int8_t sendchar(uint8_t c) @@ -587,7 +589,8 @@ int main(void) print("Keyboard start.\n"); while (1) { while (USB_DeviceState == DEVICE_STATE_Suspended) { - suspend_power_down(WDTO_120MS); + print("[s]"); + suspend_power_down(); if (USB_Device_RemoteWakeupEnabled && suspend_wakeup_condition()) { USB_Device_SendRemoteWakeup(); } diff --git a/protocol/m0110.c b/protocol/m0110.c index 924ec316b8..0d3a5aaa42 100644 --- a/protocol/m0110.c +++ b/protocol/m0110.c @@ -502,8 +502,10 @@ MODEL NUMBER: Scan Code --------- - m0110_recv_key() function returns following scan codes instead of raw key events. - Scan codes are 1 byte long and MSB(bit7) is set when key is released. + m0110_recv_key() function returns following scan codes instead of M0110 raw codes. + Scan codes are 1 byte size and MSB(bit7) is set when key is released. + + scancode = ((raw&0x80) | ((raw&0x7F)>>1)) M0110 M0120 ,---------------------------------------------------------. ,---------------. @@ -529,6 +531,19 @@ Scan Code | 3A| 37| 31 | 34| 3A| | 52| 41| | `------------------------------------------------' `---------------' + International keyboard(See page 22 of "Technical Info for 128K/512K") + ,---------------------------------------------------------. + | 32| 12| 13| 14| 15| 17| 16| 1A| 1C| 19| 1D| 1B| 18| 33| + |---------------------------------------------------------| + | 30| 0C| 0D| 0E| 0F| 10| 11| 20| 22| 1F| 23| 21| 1E| 2A| + |------------------------------------------------------ | + | 39| 00| 01| 02| 03| 05| 04| 26| 28| 25| 29| 27| 24| | + |---------------------------------------------------------| + | 38| 06| 07| 08| 09| 0B| 2D| 2E| 2B| 2F| 2C| 0A| 38| + `---------------------------------------------------------' + | 3A| 37| 34 | 31| 3A| + `------------------------------------------------' + M0110A ,---------------------------------------------------------. ,---------------. | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Bcksp| |Clr| =| /| *| @@ -568,7 +583,7 @@ Connector: Signaling: http://www.kbdbabel.org/signaling/kbd_signaling_mac.png http://typematic.blog.shinobi.jp/Entry/14/ -Scan Codes: +M0110 raw scan codes: Page 22 of Tech Info for 128K/512K Page 07 of Tech Info for Plus http://m0115.web.fc2.com/m0110.jpg diff --git a/protocol/pjrc/main.c b/protocol/pjrc/main.c index 4f87a17364..e7bdcc059a 100644 --- a/protocol/pjrc/main.c +++ b/protocol/pjrc/main.c @@ -61,7 +61,7 @@ int main(void) #endif while (1) { while (suspend) { - suspend_power_down(WDTO_120MS); + suspend_power_down(); if (remote_wakeup && suspend_wakeup_condition()) { usb_remote_wakeup(); } |