1
0

Merge remote-tracking branch 'upstream/master'

Conflicts:
	common/avr/suspend.c
This commit is contained in:
Kai Ryu 2015-04-07 14:57:03 +09:00
commit ee163c66ab
33 changed files with 309 additions and 160 deletions

6
.gitmodules vendored
View File

@ -1,6 +1,6 @@
[submodule "protocol/usb_hid/USB_Host_Shield_2.0"]
path = protocol/usb_hid/USB_Host_Shield_2.0
url = git@github.com:tmk/USB_Host_Shield_2.0.git
[submodule "protocol/lufa/LUFA-git"] [submodule "protocol/lufa/LUFA-git"]
path = protocol/lufa/LUFA-git path = protocol/lufa/LUFA-git
url = https://github.com/abcminiuser/lufa.git url = https://github.com/abcminiuser/lufa.git
[submodule "protocol/usb_hid/USB_Host_Shield_2.0"]
path = protocol/usb_hid/USB_Host_Shield_2.0
url = https://github.com/felis/USB_Host_Shield_2.0.git

View File

@ -53,6 +53,16 @@ You can find some keyboard specific projects under `converter` and `keyboard` di
* [macway](keyboard/macway/) - [Compact keyboard mod][GH_macway] [retired] * [macway](keyboard/macway/) - [Compact keyboard mod][GH_macway] [retired]
* [KMAC](keyboard/kmac/) - Korean custom keyboard * [KMAC](keyboard/kmac/) - Korean custom keyboard
* [Lightsaber](keyboard/lightsaber/) - Korean custom keyboard * [Lightsaber](keyboard/lightsaber/) - Korean custom keyboard
* [Infinity](keyboard/infinity/) - Massdrop [Infinity keyboard][Infinity]
* [NerD](keyboard/nerd/) - Korean custom keyboard
* [KittenPaw](keyboard/kitten_paw) - Custom Majestouch controller
* [Lightpad](keyboard/lightpad) - Korean custom keypad
* [ghost_squid](keyboard/ghost_squid/) - [The Ghost Squid][ghost_squid] controller for [Cooler Master QuickFire XT][cmxt]
### Extenal projects using tmk_keyboard
* [ErgoDox_cub-uanic][cub-uanic] - Split Ergonomic Keyboard [ErgoDox][ergodox_org]
* [mcdox][mcdox_tmk] - [mcdox][mcdox]
[GH_macway]: http://geekhack.org/showwiki.php?title=Island:11930 [GH_macway]: http://geekhack.org/showwiki.php?title=Island:11930
[GH_hhkb]: http://geekhack.org/showwiki.php?title=Island:12047 [GH_hhkb]: http://geekhack.org/showwiki.php?title=Island:12047
@ -72,6 +82,13 @@ You can find some keyboard specific projects under `converter` and `keyboard` di
[PC98]: http://en.wikipedia.org/wiki/NEC_PC-9801 [PC98]: http://en.wikipedia.org/wiki/NEC_PC-9801
[Sun]: http://en.wikipedia.org/wiki/Sun-3 [Sun]: http://en.wikipedia.org/wiki/Sun-3
[IIGS]: http://en.wikipedia.org/wiki/Apple_IIGS [IIGS]: http://en.wikipedia.org/wiki/Apple_IIGS
[Infinity]: https://www.massdrop.com/buy/infinity-keyboard-kit
[ghost_squid]: http://deskthority.net/wiki/Costar_replacement_controllers#The_Ghost_Squid
[cmxt]: http://gaming.coolermaster.com/en/products/keyboards/quickfirext/
[ergodox_org]: http://ergodox.org/
[cub-uanic]: https://github.com/cub-uanic/tmk_keyboard/tree/master/keyboard/ergodox
[mcdox]: https://github.com/DavidMcEwan/mcdox
[mcdox_tmk]: https://github.com/DavidMcEwan/tmk_keyboard/tree/master/keyboard/mcdox
@ -276,4 +293,4 @@ Coding Style
Other Keyboard Firmware Projects Other Keyboard Firmware Projects
------------------ ------------------
See [doc/other_projects.md](doc/other_projects.md). You can learn a lot about keyboard firmware from these. See [doc/other_projects.md](doc/other_projects.md).

View File

@ -8,6 +8,7 @@
#include "softpwm_led.h" #include "softpwm_led.h"
#include "suspend_avr.h" #include "suspend_avr.h"
#include "suspend.h" #include "suspend.h"
#include "timer.h"
#ifdef PROTOCOL_LUFA #ifdef PROTOCOL_LUFA
#include "lufa.h" #include "lufa.h"
#endif #endif
@ -52,11 +53,13 @@ void suspend_idle(uint8_t time)
* WDTO_4S * WDTO_4S
* WDTO_8S * WDTO_8S
*/ */
void suspend_power_down(uint8_t wdto) static uint8_t wdt_timeout = 0;
static void power_down(uint8_t wdto)
{ {
#ifdef PROTOCOL_LUFA #ifdef PROTOCOL_LUFA
if (USB_DeviceState == DEVICE_STATE_Configured) return; if (USB_DeviceState == DEVICE_STATE_Configured) return;
#endif #endif
wdt_timeout = wdto;
// Watchdog Interrupt Mode // Watchdog Interrupt Mode
wdt_intr_enable(wdto); wdt_intr_enable(wdto);
@ -86,6 +89,11 @@ void suspend_power_down(uint8_t wdto)
wdt_disable(); wdt_disable();
} }
void suspend_power_down(void)
{
power_down(WDTO_15MS);
}
bool suspend_wakeup_condition(void) bool suspend_wakeup_condition(void)
{ {
matrix_power_up(); matrix_power_up();
@ -114,16 +122,14 @@ void suspend_wakeup_init(void)
/* watchdog timeout */ /* watchdog timeout */
ISR(WDT_vect) ISR(WDT_vect)
{ {
/* wakeup from MCU sleep mode */ // compensate timer for sleep
/* switch (wdt_timeout) {
// blink LED case WDTO_15MS:
static uint8_t led_state = 0; timer_count += 15 + 2; // WDTO_15MS + 2(from observation)
static uint8_t led_count = 0; break;
led_count++; default:
if ((led_count & 0x07) == 0) { ;
led_set((led_state ^= (1<<USB_LED_CAPS_LOCK)));
} }
*/
} }
#endif #endif

View File

@ -194,6 +194,7 @@ static bool command_common(uint8_t code)
case KC_CAPSLOCK: case KC_CAPSLOCK:
if (host_get_driver()) { if (host_get_driver()) {
host_driver = host_get_driver(); host_driver = host_get_driver();
clear_keyboard();
host_set_driver(0); host_set_driver(0);
print("Locked.\n"); print("Locked.\n");
} else { } else {
@ -323,7 +324,7 @@ static bool command_common(uint8_t code)
#endif #endif
" " STR(BOOTLOADER_SIZE) "\n"); " " STR(BOOTLOADER_SIZE) "\n");
print("GCC: " STR(__GNUC__) "." STR(__GNUC_MINOR__) "." STR(__GNUC_PATCHLEVEL__) print("GCC: " STR(__GNUC__) "." STR(__GNUC_MINOR__) "." STR(__GNUC_PATCHLEVEL__)
" AVR-LIBC: " __AVR_LIBC_VERSION_STRING__ " AVR-LIBC: " __AVR_LIBC_VERSION_STRING__
" AVR_ARCH: avr" STR(__AVR_ARCH__) "\n"); " AVR_ARCH: avr" STR(__AVR_ARCH__) "\n");
break; break;
@ -562,12 +563,12 @@ static void mousekey_console_help(void)
print("4: select mk_time_to_max\n"); print("4: select mk_time_to_max\n");
print("5: select mk_wheel_max_speed\n"); print("5: select mk_wheel_max_speed\n");
print("6: select mk_wheel_time_to_max\n"); print("6: select mk_wheel_time_to_max\n");
print("p: print prameters\n"); print("p: print parameters\n");
print("d: set default values\n"); print("d: set default values\n");
print("up: increase prameters(+1)\n"); print("up: increase parameters(+1)\n");
print("down: decrease prameters(-1)\n"); print("down: decrease parameters(-1)\n");
print("pgup: increase prameters(+10)\n"); print("pgup: increase parameters(+10)\n");
print("pgdown: decrease prameters(-10)\n"); print("pgdown: decrease parameters(-10)\n");
print("\nspeed = delta * max_speed * (repeat / time_to_max)\n"); print("\nspeed = delta * max_speed * (repeat / time_to_max)\n");
print("where delta: cursor="); pdec(MOUSEKEY_MOVE_DELTA); print("where delta: cursor="); pdec(MOUSEKEY_MOVE_DELTA);
print(", wheel="); pdec(MOUSEKEY_WHEEL_DELTA); print("\n"); print(", wheel="); pdec(MOUSEKEY_WHEEL_DELTA); print("\n");

View File

@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* /*
* Keycodes based on HID Usage Keyboard/Keypad Page(0x07) plus special codes * Keycodes based on HID Usage Keyboard/Keypad Page(0x07) plus special codes
* http://www.usb.org/developers/devclass_docs/Hut1_12.pdf * http://www.usb.org/developers/devclass_docs/Hut1_12.pdf
*/ */
@ -140,6 +140,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define KC_VOLD KC_AUDIO_VOL_DOWN #define KC_VOLD KC_AUDIO_VOL_DOWN
#define KC_MNXT KC_MEDIA_NEXT_TRACK #define KC_MNXT KC_MEDIA_NEXT_TRACK
#define KC_MPRV KC_MEDIA_PREV_TRACK #define KC_MPRV KC_MEDIA_PREV_TRACK
#define KC_MFFD KC_MEDIA_FAST_FORWARD
#define KC_MRWD KC_MEDIA_REWIND
#define KC_MSTP KC_MEDIA_STOP #define KC_MSTP KC_MEDIA_STOP
#define KC_MPLY KC_MEDIA_PLAY_PAUSE #define KC_MPLY KC_MEDIA_PLAY_PAUSE
#define KC_MSEL KC_MEDIA_SELECT #define KC_MSEL KC_MEDIA_SELECT
@ -390,7 +392,7 @@ enum hid_keyboard_keypad_usage {
KC_RALT, KC_RALT,
KC_RGUI, KC_RGUI,
/* NOTE: 0xE8-FF are used for internal special purpose */ /* NOTE: 0xE8-FF are used for internal special purpose */
}; };
/* Special keycodes */ /* Special keycodes */
@ -420,7 +422,9 @@ enum internal_special_keycodes {
KC_WWW_FORWARD, KC_WWW_FORWARD,
KC_WWW_STOP, KC_WWW_STOP,
KC_WWW_REFRESH, KC_WWW_REFRESH,
KC_WWW_FAVORITES, /* 0xBA */ KC_WWW_FAVORITES,
KC_MEDIA_FAST_FORWARD,
KC_MEDIA_REWIND, /* 0xBC */
/* Fn key */ /* Fn key */
KC_FN0 = 0xC0, KC_FN0 = 0xC0,

View File

@ -35,6 +35,10 @@ typedef uint32_t matrix_row_t;
#define MATRIX_IS_ON(row, col) (matrix_get_row(row) && (1<<col)) #define MATRIX_IS_ON(row, col) (matrix_get_row(row) && (1<<col))
#ifdef __cplusplus
extern "C" {
#endif
/* number of matrix rows */ /* number of matrix rows */
uint8_t matrix_rows(void); uint8_t matrix_rows(void);
/* number of matrix columns */ /* number of matrix columns */
@ -48,7 +52,7 @@ bool matrix_is_modified(void) __attribute__ ((deprecated));
/* whether a swtich is on */ /* whether a swtich is on */
bool matrix_is_on(uint8_t row, uint8_t col); bool matrix_is_on(uint8_t row, uint8_t col);
/* matrix state on row */ /* matrix state on row */
matrix_row_t matrix_get_row(uint8_t row); matrix_row_t matrix_get_row(uint8_t row);
/* print matrix for debug */ /* print matrix for debug */
void matrix_print(void); void matrix_print(void);
@ -57,5 +61,8 @@ void matrix_print(void);
void matrix_power_up(void); void matrix_power_up(void);
void matrix_power_down(void); void matrix_power_down(void);
#ifdef __cplusplus
}
#endif
#endif #endif

View File

@ -6,6 +6,10 @@
#define STRING_STACK_LIMIT 120 #define STRING_STACK_LIMIT 120
//TODO
int xprintf(const char* format, ...) { return 0; }
#if 0
/* mbed Serial */ /* mbed Serial */
Serial ser(UART_TX, UART_RX); Serial ser(UART_TX, UART_RX);
@ -44,3 +48,4 @@ int xprintf(const char* format, ...)
return r; return r;
*/ */
} }
#endif

View File

@ -22,13 +22,14 @@
* THE SOFTWARE. * THE SOFTWARE.
*/ */
#include <avr/io.h> #include <stdint.h>
#include <avr/pgmspace.h>
#include "print.h" #include "print.h"
#ifndef NO_PRINT #ifndef NO_PRINT
#if defined(__AVR__)
#define sendchar(c) xputc(c) #define sendchar(c) xputc(c)
@ -37,4 +38,11 @@ void print_set_sendchar(int8_t (*sendchar_func)(uint8_t))
xdev_out(sendchar_func); xdev_out(sendchar_func);
} }
#elif defined(__arm__)
// TODO
//void print_set_sendchar(int8_t (*sendchar_func)(uint8_t)) { }
#endif
#endif #endif

View File

@ -38,12 +38,7 @@
#if defined(__AVR__) #if defined(__AVR__)
#include "avr/xprintf.h" #include "avr/xprintf.h"
// TODO: avoid collision with arduino/Print.h
#ifndef __cplusplus
#define print(s) xputs(PSTR(s)) #define print(s) xputs(PSTR(s))
#endif
#define println(s) xputs(PSTR(s "\r\n")) #define println(s) xputs(PSTR(s "\r\n"))
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -61,6 +61,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* supplement for Bluegiga iWRAP HID(not supported by Windows?) */ /* supplement for Bluegiga iWRAP HID(not supported by Windows?) */
#define AL_LOCK 0x019E #define AL_LOCK 0x019E
#define TRANSPORT_RECORD 0x00B2 #define TRANSPORT_RECORD 0x00B2
#define TRANSPORT_FAST_FORWARD 0x00B3
#define TRANSPORT_REWIND 0x00B4 #define TRANSPORT_REWIND 0x00B4
#define TRANSPORT_EJECT 0x00B8 #define TRANSPORT_EJECT 0x00B8
#define AC_MINIMIZE 0x0206 #define AC_MINIMIZE 0x0206
@ -158,6 +159,8 @@ typedef struct {
(key == KC_AUDIO_VOL_DOWN ? AUDIO_VOL_DOWN : \ (key == KC_AUDIO_VOL_DOWN ? AUDIO_VOL_DOWN : \
(key == KC_MEDIA_NEXT_TRACK ? TRANSPORT_NEXT_TRACK : \ (key == KC_MEDIA_NEXT_TRACK ? TRANSPORT_NEXT_TRACK : \
(key == KC_MEDIA_PREV_TRACK ? TRANSPORT_PREV_TRACK : \ (key == KC_MEDIA_PREV_TRACK ? TRANSPORT_PREV_TRACK : \
(key == KC_MEDIA_FAST_FORWARD ? TRANSPORT_FAST_FORWARD : \
(key == KC_MEDIA_REWIND ? TRANSPORT_REWIND : \
(key == KC_MEDIA_STOP ? TRANSPORT_STOP : \ (key == KC_MEDIA_STOP ? TRANSPORT_STOP : \
(key == KC_MEDIA_EJECT ? TRANSPORT_STOP_EJECT : \ (key == KC_MEDIA_EJECT ? TRANSPORT_STOP_EJECT : \
(key == KC_MEDIA_PLAY_PAUSE ? TRANSPORT_PLAY_PAUSE : \ (key == KC_MEDIA_PLAY_PAUSE ? TRANSPORT_PLAY_PAUSE : \
@ -171,7 +174,7 @@ typedef struct {
(key == KC_WWW_FORWARD ? AC_FORWARD : \ (key == KC_WWW_FORWARD ? AC_FORWARD : \
(key == KC_WWW_STOP ? AC_STOP : \ (key == KC_WWW_STOP ? AC_STOP : \
(key == KC_WWW_REFRESH ? AC_REFRESH : \ (key == KC_WWW_REFRESH ? AC_REFRESH : \
(key == KC_WWW_FAVORITES ? AC_BOOKMARKS : 0))))))))))))))))))) (key == KC_WWW_FAVORITES ? AC_BOOKMARKS : 0)))))))))))))))))))))
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -6,7 +6,7 @@
void suspend_idle(uint8_t timeout); void suspend_idle(uint8_t timeout);
void suspend_power_down(uint8_t timeout); void suspend_power_down(void);
bool suspend_wakeup_condition(void); bool suspend_wakeup_condition(void);
void suspend_wakeup_init(void); void suspend_wakeup_init(void);

View File

@ -81,7 +81,7 @@ KC_F12 45 Keyboard F12
KC_PSCREEN KC_PSCR 46 Keyboard PrintScreen1 KC_PSCREEN KC_PSCR 46 Keyboard PrintScreen1
KC_SCKLOCK KC_SLCK 47 Keyboard Scroll Lock11 KC_SCKLOCK KC_SLCK 47 Keyboard Scroll Lock11
KC_PAUSE KC_PAUS 48 Keyboard Pause1 KC_PAUSE KC_PAUS 48 Keyboard Pause1
KC_INSERT KC_INT 49 Keyboard Insert1 KC_INSERT KC_INS 49 Keyboard Insert1
KC_HOME 4A Keyboard Home1 KC_HOME 4A Keyboard Home1
KC_PGUP 4B Keyboard PageUp1 KC_PGUP 4B Keyboard PageUp1
KC_DELETE KC_DELETE 4C Keyboard Delete Forward KC_DELETE KC_DELETE 4C Keyboard Delete Forward

View File

@ -29,6 +29,7 @@ Other Keyboard Firmware Projects
## ErgoDox[Ergo][Split][USB][AVR] ## ErgoDox[Ergo][Split][USB][AVR]
- <http://geekhack.org/index.php?topic=22780.0> - <http://geekhack.org/index.php?topic=22780.0>
- <https://github.com/benblazak/ergodox-firmware> - <https://github.com/benblazak/ergodox-firmware>
- <https://github.com/cub-uanic/tmk_keyboard>
## Suka's keyboard collection[Ergo][Split][3DPrinting][USB][AVR] ## Suka's keyboard collection[Ergo][Split][3DPrinting][USB][AVR]
- <http://deskthority.net/workshop-f7/my-diy-keyboard-collection-or-how-i-became-a-kb-geek-t2534.html> - <http://deskthority.net/workshop-f7/my-diy-keyboard-collection-or-how-i-became-a-kb-geek-t2534.html>

View File

@ -15,11 +15,13 @@ endif
ifdef PS2_USE_INT ifdef PS2_USE_INT
SRC += protocol/ps2_interrupt.c SRC += protocol/ps2_interrupt.c
SRC += protocol/ps2_io_avr.c
OPT_DEFS += -DPS2_USE_INT OPT_DEFS += -DPS2_USE_INT
endif endif
ifdef PS2_USE_USART ifdef PS2_USE_USART
SRC += protocol/ps2_usart.c SRC += protocol/ps2_usart.c
SRC += protocol/ps2_io_avr.c
OPT_DEFS += -DPS2_USE_USART OPT_DEFS += -DPS2_USE_USART
endif endif

View File

@ -360,7 +360,7 @@ Commands
3: mice 3: mice
Registers: Registers:
0: application(keyobard uses this to store its data.) 0: application(keyboard uses this to store its data.)
1: application 1: application
2: application(keyboard uses this for LEDs and state of modifiers) 2: application(keyboard uses this for LEDs and state of modifiers)
3: status and command 3: status and command

View File

@ -36,7 +36,7 @@ static void bluefruit_serial_send(uint8_t);
void bluefruit_keyboard_print_report(report_keyboard_t *report) void bluefruit_keyboard_print_report(report_keyboard_t *report)
{ {
if (!debug_keyboard) return; if (!debug_keyboard) return;
dprintf("keys: "); for (int i = 0; i < REPORT_KEYS; i++) { debug_hex8(report->keys[i]); dprintf(" "); } dprintf("keys: "); for (int i = 0; i < KEYBOARD_REPORT_KEYS; i++) { debug_hex8(report->keys[i]); dprintf(" "); }
dprintf(" mods: "); debug_hex8(report->mods); dprintf(" mods: "); debug_hex8(report->mods);
dprintf(" reserved: "); debug_hex8(report->reserved); dprintf(" reserved: "); debug_hex8(report->reserved);
dprintf("\n"); dprintf("\n");
@ -99,7 +99,7 @@ static void send_keyboard(report_keyboard_t *report)
bluefruit_trace_header(); bluefruit_trace_header();
#endif #endif
bluefruit_serial_send(0xFD); bluefruit_serial_send(0xFD);
for (uint8_t i = 0; i < REPORT_SIZE; i++) { for (uint8_t i = 0; i < KEYBOARD_REPORT_SIZE; i++) {
bluefruit_serial_send(report->raw[i]); bluefruit_serial_send(report->raw[i]);
} }
#ifdef BLUEFRUIT_TRACE_SERIAL #ifdef BLUEFRUIT_TRACE_SERIAL

View File

@ -148,8 +148,10 @@ static void Console_Task(void)
*/ */
void EVENT_USB_Device_Connect(void) void EVENT_USB_Device_Connect(void)
{ {
print("[C]");
/* For battery powered device */ /* For battery powered device */
if (!USB_IsInitialized) { if (!USB_IsInitialized) {
USB_Disable();
USB_Init(); USB_Init();
USB_Device_EnableSOFEvents(); USB_Device_EnableSOFEvents();
} }
@ -157,7 +159,9 @@ void EVENT_USB_Device_Connect(void)
void EVENT_USB_Device_Disconnect(void) void EVENT_USB_Device_Disconnect(void)
{ {
print("[D]");
/* For battery powered device */ /* For battery powered device */
USB_IsInitialized = false;
/* TODO: This doesn't work. After several plug in/outs can not be enumerated. /* TODO: This doesn't work. After several plug in/outs can not be enumerated.
if (USB_IsInitialized) { if (USB_IsInitialized) {
USB_Disable(); // Disable all interrupts USB_Disable(); // Disable all interrupts
@ -169,10 +173,13 @@ void EVENT_USB_Device_Disconnect(void)
void EVENT_USB_Device_Reset(void) void EVENT_USB_Device_Reset(void)
{ {
print("[R]");
} }
void EVENT_USB_Device_Suspend() void EVENT_USB_Device_Suspend()
{ {
print("[S]");
matrix_power_down();
#ifdef SLEEP_LED_ENABLE #ifdef SLEEP_LED_ENABLE
sleep_led_enable(); sleep_led_enable();
#endif #endif
@ -180,6 +187,7 @@ void EVENT_USB_Device_Suspend()
void EVENT_USB_Device_WakeUp() void EVENT_USB_Device_WakeUp()
{ {
print("[W]");
suspend_wakeup_init(); suspend_wakeup_init();
#ifdef SLEEP_LED_ENABLE #ifdef SLEEP_LED_ENABLE
@ -489,37 +497,28 @@ int8_t sendchar(uint8_t c)
uint8_t ep = Endpoint_GetCurrentEndpoint(); uint8_t ep = Endpoint_GetCurrentEndpoint();
Endpoint_SelectEndpoint(CONSOLE_IN_EPNUM); Endpoint_SelectEndpoint(CONSOLE_IN_EPNUM);
if (!Endpoint_IsEnabled() || !Endpoint_IsConfigured()) { if (!Endpoint_IsEnabled() || !Endpoint_IsConfigured()) {
Endpoint_SelectEndpoint(ep); goto ERROR_EXIT;
return -1;
} }
if (timeouted && !Endpoint_IsReadWriteAllowed()) { if (timeouted && !Endpoint_IsReadWriteAllowed()) {
Endpoint_SelectEndpoint(ep); goto ERROR_EXIT;
return - 1;
} }
timeouted = false; timeouted = false;
uint8_t timeout = SEND_TIMEOUT; uint8_t timeout = SEND_TIMEOUT;
uint16_t prevFN = USB_Device_GetFrameNumber();
while (!Endpoint_IsReadWriteAllowed()) { while (!Endpoint_IsReadWriteAllowed()) {
switch (USB_DeviceState) { if (USB_DeviceState != DEVICE_STATE_Configured) {
case DEVICE_STATE_Unattached: goto ERROR_EXIT;
case DEVICE_STATE_Suspended:
return -1;
} }
if (Endpoint_IsStalled()) { if (Endpoint_IsStalled()) {
Endpoint_SelectEndpoint(ep); goto ERROR_EXIT;
return -1;
} }
if (prevFN != USB_Device_GetFrameNumber()) { if (!(timeout--)) {
if (!(timeout--)) { timeouted = true;
timeouted = true; goto ERROR_EXIT;
Endpoint_SelectEndpoint(ep);
return -1;
}
prevFN = USB_Device_GetFrameNumber();
} }
_delay_ms(1);
} }
Endpoint_Write_8(c); Endpoint_Write_8(c);
@ -530,6 +529,9 @@ int8_t sendchar(uint8_t c)
Endpoint_SelectEndpoint(ep); Endpoint_SelectEndpoint(ep);
return 0; return 0;
ERROR_EXIT:
Endpoint_SelectEndpoint(ep);
return -1;
} }
#else #else
int8_t sendchar(uint8_t c) int8_t sendchar(uint8_t c)
@ -587,7 +589,8 @@ int main(void)
print("Keyboard start.\n"); print("Keyboard start.\n");
while (1) { while (1) {
while (USB_DeviceState == DEVICE_STATE_Suspended) { while (USB_DeviceState == DEVICE_STATE_Suspended) {
suspend_power_down(WDTO_120MS); print("[s]");
suspend_power_down();
if (USB_Device_RemoteWakeupEnabled && suspend_wakeup_condition()) { if (USB_Device_RemoteWakeupEnabled && suspend_wakeup_condition()) {
USB_Device_SendRemoteWakeup(); USB_Device_SendRemoteWakeup();
} }

View File

@ -502,8 +502,10 @@ MODEL NUMBER:
Scan Code Scan Code
--------- ---------
m0110_recv_key() function returns following scan codes instead of raw key events. m0110_recv_key() function returns following scan codes instead of M0110 raw codes.
Scan codes are 1 byte long and MSB(bit7) is set when key is released. Scan codes are 1 byte size and MSB(bit7) is set when key is released.
scancode = ((raw&0x80) | ((raw&0x7F)>>1))
M0110 M0120 M0110 M0120
,---------------------------------------------------------. ,---------------. ,---------------------------------------------------------. ,---------------.
@ -529,6 +531,19 @@ Scan Code
| 3A| 37| 31 | 34| 3A| | 52| 41| | | 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 M0110A
,---------------------------------------------------------. ,---------------. ,---------------------------------------------------------. ,---------------.
| `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Bcksp| |Clr| =| /| *| | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Bcksp| |Clr| =| /| *|
@ -568,7 +583,7 @@ Connector:
Signaling: Signaling:
http://www.kbdbabel.org/signaling/kbd_signaling_mac.png http://www.kbdbabel.org/signaling/kbd_signaling_mac.png
http://typematic.blog.shinobi.jp/Entry/14/ http://typematic.blog.shinobi.jp/Entry/14/
Scan Codes: M0110 raw scan codes:
Page 22 of Tech Info for 128K/512K Page 22 of Tech Info for 128K/512K
Page 07 of Tech Info for Plus Page 07 of Tech Info for Plus
http://m0115.web.fc2.com/m0110.jpg http://m0115.web.fc2.com/m0110.jpg

25
protocol/pjrc/MEMO.txt Normal file
View File

@ -0,0 +1,25 @@
Endpoint configuration
----------------------
0 Control endpoint
1 keyboard
2 mouse
3 debug
4 extra key(consumer/system)
5 nkro keyboard(supported only on ATmega32U4/16U4 and AT90USB64/128)
ATmega32U4/16U4, AT90USB64/128
• Endpoint 0:programmable size FIFO up to 64 bytes, default control endpoint
• Endpoints 1 programmable size FIFO up to 256 bytes in ping-pong mode.
• Endpoints 2 to 6: programmable size FIFO up to 64 bytes in ping-pong mode.
AT90USB82/162, ATmega8U2/16U2/32U2
• Endpoint 0:programmable size FIFO up to 64 bytes, default control endpoint
• Endpoints 1 and 2: programmable size FIFO up to 64 bytes.
• Endpoints 3 and 4: programmable size FIFO up to 64 bytes with ping-pong mode.
ping-pong mode means double buffer feature.
NOTE: ATmega8U2/16U2/32U2 is not supported with PJRC stack at this time.
TODO: Macro definition for ATmega8U2/16U2/32U2 in usb.h

View File

@ -24,6 +24,7 @@
#include <stdbool.h> #include <stdbool.h>
#include <avr/io.h> #include <avr/io.h>
#include <avr/interrupt.h> #include <avr/interrupt.h>
#include <avr/wdt.h>
#include <util/delay.h> #include <util/delay.h>
#include "keyboard.h" #include "keyboard.h"
#include "usb.h" #include "usb.h"

View File

@ -122,7 +122,7 @@ void usb_remote_wakeup(void);
#define KBD_INTERFACE 0 #define KBD_INTERFACE 0
#define KBD_ENDPOINT 1 #define KBD_ENDPOINT 1
#define KBD_SIZE 8 #define KBD_SIZE 8
#define KBD_BUFFER EP_DOUBLE_BUFFER #define KBD_BUFFER EP_SINGLE_BUFFER
#define KBD_REPORT_KEYS (KBD_SIZE - 2) #define KBD_REPORT_KEYS (KBD_SIZE - 2)
// secondary keyboard // secondary keyboard

View File

@ -74,7 +74,7 @@ void usb_keyboard_print_report(report_keyboard_t *report)
{ {
if (!debug_keyboard) return; if (!debug_keyboard) return;
print("keys: "); print("keys: ");
for (int i = 0; i < REPORT_KEYS; i++) { phex(report->keys[i]); print(" "); } for (int i = 0; i < KEYBOARD_REPORT_KEYS; i++) { phex(report->keys[i]); print(" "); }
print(" mods: "); phex(report->mods); print("\n"); print(" mods: "); phex(report->mods); print("\n");
} }

View File

@ -32,7 +32,7 @@
#define MOUSE_INTERFACE 1 #define MOUSE_INTERFACE 1
#define MOUSE_ENDPOINT 2 #define MOUSE_ENDPOINT 2
#define MOUSE_SIZE 8 #define MOUSE_SIZE 8
#define MOUSE_BUFFER EP_DOUBLE_BUFFER #define MOUSE_BUFFER EP_SINGLE_BUFFER
#define MOUSE_BTN1 (1<<0) #define MOUSE_BTN1 (1<<0)
#define MOUSE_BTN2 (1<<1) #define MOUSE_BTN2 (1<<1)

View File

@ -43,6 +43,7 @@ POSSIBILITY OF SUCH DAMAGE.
#include <avr/interrupt.h> #include <avr/interrupt.h>
#include <util/delay.h> #include <util/delay.h>
#include "ps2.h" #include "ps2.h"
#include "ps2_io.h"
#include "print.h" #include "print.h"

View File

@ -1,4 +1,5 @@
#include <stdbool.h> #include <stdbool.h>
#include <avr/io.h>
#include <util/delay.h> #include <util/delay.h>
/* Check port settings for clock and data line */ /* Check port settings for clock and data line */

View File

@ -43,6 +43,7 @@ POSSIBILITY OF SUCH DAMAGE.
#include <avr/interrupt.h> #include <avr/interrupt.h>
#include <util/delay.h> #include <util/delay.h>
#include "ps2.h" #include "ps2.h"
#include "ps2_io.h"
#include "print.h" #include "print.h"

View File

@ -8,6 +8,7 @@ USB_HOST_SHIELD_DIR = $(USB_HID_DIR)/USB_Host_Shield_2.0
USB_HOST_SHIELD_SRC = \ USB_HOST_SHIELD_SRC = \
$(USB_HOST_SHIELD_DIR)/Usb.cpp \ $(USB_HOST_SHIELD_DIR)/Usb.cpp \
$(USB_HOST_SHIELD_DIR)/hid.cpp \ $(USB_HOST_SHIELD_DIR)/hid.cpp \
$(USB_HOST_SHIELD_DIR)/usbhub.cpp \
$(USB_HOST_SHIELD_DIR)/parsetools.cpp \ $(USB_HOST_SHIELD_DIR)/parsetools.cpp \
$(USB_HOST_SHIELD_DIR)/message.cpp $(USB_HOST_SHIELD_DIR)/message.cpp
@ -42,7 +43,7 @@ SRC += $(USB_HID_DIR)/override_Serial.cpp
# replace arduino/wiring.c # replace arduino/wiring.c
SRC += $(USB_HID_DIR)/override_wiring.c SRC += $(USB_HID_DIR)/override_wiring.c
SRC += common/timer.c SRC += common/avr/timer.c
SRC += $(USB_HOST_SHIELD_SRC) SRC += $(USB_HOST_SHIELD_SRC)
SRC += $(ARDUINO_CORES_SRC) SRC += $(ARDUINO_CORES_SRC)

@ -1 +1 @@
Subproject commit 8bb790f83af298b5f3e5516259c9d8ec27efe522 Subproject commit 2b4a56de3d090686f62d25ea34042759dc4352d6

View File

@ -419,6 +419,11 @@ flip: $(TARGET).hex
batchisp -hardware usb -device $(MCU) -operation start reset 0 batchisp -hardware usb -device $(MCU) -operation start reset 0
dfu: $(TARGET).hex dfu: $(TARGET).hex
ifneq (, $(findstring 0.7, $(shell dfu-programmer --version 2>&1)))
dfu-programmer $(MCU) erase --force
else
dfu-programmer $(MCU) erase
endif
dfu-programmer $(MCU) erase dfu-programmer $(MCU) erase
dfu-programmer $(MCU) flash $(TARGET).hex dfu-programmer $(MCU) flash $(TARGET).hex
dfu-programmer $(MCU) reset dfu-programmer $(MCU) reset

View File

@ -7,6 +7,8 @@ OBJECTS += \
$(OBJDIR)/common/host.o \ $(OBJDIR)/common/host.o \
$(OBJDIR)/common/keymap.o \ $(OBJDIR)/common/keymap.o \
$(OBJDIR)/common/keyboard.o \ $(OBJDIR)/common/keyboard.o \
$(OBJDIR)/common/print.o \
$(OBJDIR)/common/debug.o \
$(OBJDIR)/common/util.o \ $(OBJDIR)/common/util.o \
$(OBJDIR)/common/mbed/suspend.o \ $(OBJDIR)/common/mbed/suspend.o \
$(OBJDIR)/common/mbed/timer.o \ $(OBJDIR)/common/mbed/timer.o \

View File

@ -1,4 +1,6 @@
############################################################################### # based on Makefile exported form mbed.org
# see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded
GCC_BIN = GCC_BIN =
AS = $(GCC_BIN)arm-none-eabi-as AS = $(GCC_BIN)arm-none-eabi-as
CC = $(GCC_BIN)arm-none-eabi-gcc CC = $(GCC_BIN)arm-none-eabi-gcc
@ -9,13 +11,21 @@ OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump
SIZE = $(GCC_BIN)arm-none-eabi-size SIZE = $(GCC_BIN)arm-none-eabi-size
CHKSUM = $(TMK_DIR)/tool/mbed/lpc-vector-checksum CHKSUM = $(TMK_DIR)/tool/mbed/lpc-vector-checksum
CPU = -mcpu=cortex-m0 -mthumb CC_FLAGS += \
$(CPU) \
CC_FLAGS += $(CPU) -c -g -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -c \
-g \
-fno-common \
-fmessage-length=0 \
-Wall \
-fno-exceptions \
-ffunction-sections \
-fdata-sections \
-fomit-frame-pointer
CC_FLAGS += -MMD -MP CC_FLAGS += -MMD -MP
CC_SYMBOLS = -DTARGET_LPC11U35_401 -DTARGET_M0 -DTARGET_NXP -DTARGET_LPC11UXX -DTOOLCHAIN_GCC_ARM -DTOOLCHAIN_GCC -D__CORTEX_M0 -DARM_MATH_CM0 -DMBED_BUILD_TIMESTAMP=1399108688.49 -D__MBED__=1
LD_FLAGS = -mcpu=cortex-m0 -mthumb -Wl,--gc-sections --specs=nano.specs LD_FLAGS = $(CPU) -Wl,--gc-sections --specs=nano.specs
#LD_FLAGS += -u _printf_float -u _scanf_float
LD_FLAGS += -Wl,-Map=$(OBJDIR)/$(PROJECT).map,--cref LD_FLAGS += -Wl,-Map=$(OBJDIR)/$(PROJECT).map,--cref
LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys
@ -25,7 +35,7 @@ else
CC_FLAGS += -DNDEBUG -Os CC_FLAGS += -DNDEBUG -Os
endif endif
all: $(OBJDIR)/$(PROJECT).bin $(OBJDIR)/$(PROJECT).hex size all: $(OBJDIR)/$(PROJECT).bin $(OBJDIR)/$(PROJECT).hex
clean: clean:
rm -f $(OBJDIR)/$(PROJECT).bin $(OBJDIR)/$(PROJECT).elf $(OBJDIR)/$(PROJECT).hex $(OBJDIR)/$(PROJECT).map $(OBJDIR)/$(PROJECT).lst $(OBJECTS) $(DEPS) rm -f $(OBJDIR)/$(PROJECT).bin $(OBJDIR)/$(PROJECT).elf $(OBJDIR)/$(PROJECT).hex $(OBJDIR)/$(PROJECT).map $(OBJDIR)/$(PROJECT).lst $(OBJECTS) $(DEPS)
@ -41,22 +51,21 @@ $(OBJDIR)/%.o: %.c
$(OBJDIR)/%.o: %.cpp $(OBJDIR)/%.o: %.cpp
mkdir -p $(@D) mkdir -p $(@D)
$(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 $(INCLUDE_PATHS) -o $@ $< $(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $<
$(OBJDIR)/$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS) $(OBJDIR)/$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS)
$(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS) $(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS)
@echo "" $(SIZE) $@
@echo "*****"
@echo "***** You must modify vector checksum value in *.bin and *.hex files."
@echo "*****"
@echo ""
$(OBJDIR)/$(PROJECT).bin: $(OBJDIR)/$(PROJECT).elf $(OBJDIR)/$(PROJECT).bin: $(OBJDIR)/$(PROJECT).elf
@$(OBJCOPY) -O binary $< $@ @$(OBJCOPY) -O binary $< $@
@echo "Writing vector checksum value into $@ ..." ifneq (,$(findstring TARGET_NXP,$(CC_SYMBOLS)))
@echo
@echo "For NXP writing vector checksum value into $@ ..."
@$(CHKSUM) $@ @$(CHKSUM) $@
@echo @echo
endif
$(OBJDIR)/$(PROJECT).hex: $(OBJDIR)/$(PROJECT).elf $(OBJDIR)/$(PROJECT).hex: $(OBJDIR)/$(PROJECT).elf
@$(OBJCOPY) -O ihex $< $@ @$(OBJCOPY) -O ihex $< $@

50
tool/mbed/lpc11u35_501.mk Normal file
View File

@ -0,0 +1,50 @@
# based on Makefile exported form mbed.org
# see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded
CPU = -mcpu=cortex-m0 -mthumb
CC_SYMBOLS = \
-DTARGET_LPC11U35_501 \
-DTARGET_M0 \
-DTARGET_CORTEX_M \
-DTARGET_NXP \
-DTARGET_LPC11UXX \
-DTARGET_MCU_LPC11U35_501 \
-DTOOLCHAIN_GCC_ARM \
-DTOOLCHAIN_GCC \
-D__CORTEX_M0 \
-DARM_MATH_CM0 \
-D__MBED__=1
OBJECTS += \
$(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_LPC11U.o \
$(OBJDIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/startup_LPC11xx.o \
$(OBJDIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/cmsis_nvic.o \
$(OBJDIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/system_LPC11Uxx.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/TARGET_MCU_LPC11U35_501/PeripheralPins.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/analogin_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_irq_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/i2c_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/pinmap.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/port_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/pwmout_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/serial_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/sleep.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/spi_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/us_ticker.o
INCLUDE_PATHS += \
-I$(MBED_DIR)/libraries/mbed/targets \
-I$(MBED_DIR)/libraries/mbed/targets/cmsis \
-I$(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP \
-I$(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX \
-I$(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM \
-I$(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/TARGET_LPC11U35_501 \
-I$(MBED_DIR)/libraries/mbed/targets/hal \
-I$(MBED_DIR)/libraries/mbed/targets/hal/TARGET_NXP \
-I$(MBED_DIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX \
-I$(MBED_DIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/TARGET_MCU_LPC11U35_501 \
-I$(MBED_DIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/TARGET_MCU_LPC11U35_501/TARGET_LPC11U35_501
LINKER_SCRIPT = $(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/TARGET_LPC11U35_501/LPC11U35.ld

View File

@ -1,99 +1,85 @@
# based on Makefile exported form mbed.org
# see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded
OBJECTS += \ OBJECTS += \
$(OBJDIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/startup_LPC11xx.o \
$(OBJDIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/cmsis_nvic.o \
$(OBJDIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/system_LPC11Uxx.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/port_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/spi_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/analogin_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/gpio_irq_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/serial_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/i2c_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/pwmout_api.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/sleep.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/pinmap.o \
$(OBJDIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/us_ticker.o \
$(OBJDIR)/libraries/mbed/common/board.o \
$(OBJDIR)/libraries/mbed/common/mbed_interface.o \
$(OBJDIR)/libraries/mbed/common/exit.o \
$(OBJDIR)/libraries/mbed/common/rtc_time.o \
$(OBJDIR)/libraries/mbed/common/us_ticker_api.o \
$(OBJDIR)/libraries/mbed/common/pinmap_common.o \
$(OBJDIR)/libraries/mbed/common/error.o \
$(OBJDIR)/libraries/mbed/common/gpio.o \ $(OBJDIR)/libraries/mbed/common/gpio.o \
$(OBJDIR)/libraries/mbed/common/semihost_api.o \ $(OBJDIR)/libraries/mbed/common/us_ticker_api.o \
$(OBJDIR)/libraries/mbed/common/wait_api.o \ $(OBJDIR)/libraries/mbed/common/wait_api.o \
$(OBJDIR)/libraries/mbed/common/RawSerial.o \ $(OBJDIR)/libraries/USBDevice/USBDevice/USBDevice.o
$(OBJDIR)/libraries/mbed/common/Ticker.o \
$(OBJDIR)/libraries/mbed/common/FilePath.o \
$(OBJDIR)/libraries/mbed/common/I2C.o \ # $(OBJDIR)/libraries/mbed/common/assert.o \
$(OBJDIR)/libraries/mbed/common/FileBase.o \ # $(OBJDIR)/libraries/mbed/common/board.o \
$(OBJDIR)/libraries/mbed/common/retarget.o \ # $(OBJDIR)/libraries/mbed/common/BusIn.o \
$(OBJDIR)/libraries/mbed/common/Serial.o \ # $(OBJDIR)/libraries/mbed/common/BusInOut.o \
$(OBJDIR)/libraries/mbed/common/Stream.o \ # $(OBJDIR)/libraries/mbed/common/BusOut.o \
$(OBJDIR)/libraries/mbed/common/FileSystemLike.o \ # $(OBJDIR)/libraries/mbed/common/CallChain.o \
$(OBJDIR)/libraries/mbed/common/CallChain.o \ # $(OBJDIR)/libraries/mbed/common/CAN.o \
$(OBJDIR)/libraries/mbed/common/InterruptManager.o \ # $(OBJDIR)/libraries/mbed/common/error.o \
$(OBJDIR)/libraries/mbed/common/SerialBase.o \ # $(OBJDIR)/libraries/mbed/common/Ethernet.o \
$(OBJDIR)/libraries/mbed/common/BusInOut.o \ # $(OBJDIR)/libraries/mbed/common/exit.o \
$(OBJDIR)/libraries/mbed/common/SPISlave.o \ # $(OBJDIR)/libraries/mbed/common/FileBase.o \
$(OBJDIR)/libraries/mbed/common/I2CSlave.o \ # $(OBJDIR)/libraries/mbed/common/FileLike.o \
$(OBJDIR)/libraries/mbed/common/FunctionPointer.o \ # $(OBJDIR)/libraries/mbed/common/FilePath.o \
$(OBJDIR)/libraries/mbed/common/Timer.o \ # $(OBJDIR)/libraries/mbed/common/FileSystemLike.o \
$(OBJDIR)/libraries/mbed/common/SPI.o \ # $(OBJDIR)/libraries/mbed/common/FunctionPointer.o \
$(OBJDIR)/libraries/mbed/common/Timeout.o \ # $(OBJDIR)/libraries/mbed/common/gpio.o \
$(OBJDIR)/libraries/mbed/common/Ethernet.o \ # $(OBJDIR)/libraries/mbed/common/I2C.o \
$(OBJDIR)/libraries/mbed/common/TimerEvent.o \ # $(OBJDIR)/libraries/mbed/common/I2CSlave.o \
$(OBJDIR)/libraries/mbed/common/CAN.o \ # $(OBJDIR)/libraries/mbed/common/InterruptIn.o \
$(OBJDIR)/libraries/mbed/common/BusOut.o \ # $(OBJDIR)/libraries/mbed/common/InterruptManager.o \
$(OBJDIR)/libraries/mbed/common/FileLike.o \ # $(OBJDIR)/libraries/mbed/common/LocalFileSystem.o \
$(OBJDIR)/libraries/mbed/common/BusIn.o \ # $(OBJDIR)/libraries/mbed/common/mbed_interface.o \
$(OBJDIR)/libraries/mbed/common/InterruptIn.o \ # $(OBJDIR)/libraries/mbed/common/pinmap_common.o \
$(OBJDIR)/libraries/mbed/common/LocalFileSystem.o \ # $(OBJDIR)/libraries/mbed/common/RawSerial.o \
$(OBJDIR)/libraries/USBDevice/USBHID/USBMouse.o \ # $(OBJDIR)/libraries/mbed/common/retarget.o \
$(OBJDIR)/libraries/USBDevice/USBHID/USBHID.o \ # $(OBJDIR)/libraries/mbed/common/rtc_time.o \
$(OBJDIR)/libraries/USBDevice/USBHID/USBMouseKeyboard.o \ # $(OBJDIR)/libraries/mbed/common/semihost_api.o \
$(OBJDIR)/libraries/USBDevice/USBHID/USBKeyboard.o \ # $(OBJDIR)/libraries/mbed/common/SerialBase.o \
$(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_KL25Z.o \ # $(OBJDIR)/libraries/mbed/common/Serial.o \
$(OBJDIR)/libraries/USBDevice/USBDevice/USBDevice.o \ # $(OBJDIR)/libraries/mbed/common/SPI.o \
$(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_LPC17.o \ # $(OBJDIR)/libraries/mbed/common/SPISlave.o \
$(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_LPC40.o \ # $(OBJDIR)/libraries/mbed/common/Stream.o \
$(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_LPC11U.o \ # $(OBJDIR)/libraries/mbed/common/Ticker.o \
$(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_STM32F4.o \ # $(OBJDIR)/libraries/mbed/common/Timeout.o \
$(OBJDIR)/libraries/USBDevice/USBAudio/USBAudio.o \ # $(OBJDIR)/libraries/mbed/common/TimerEvent.o \
$(OBJDIR)/libraries/USBDevice/USBSerial/USBSerial.o \ # $(OBJDIR)/libraries/mbed/common/Timer.o \
$(OBJDIR)/libraries/USBDevice/USBSerial/USBCDC.o \ # $(OBJDIR)/libraries/mbed/common/us_ticker_api.o \
$(OBJDIR)/libraries/USBDevice/USBMSD/USBMSD.o \ # $(OBJDIR)/libraries/mbed/common/wait_api.o \
$(OBJDIR)/libraries/USBDevice/USBMIDI/USBMIDI.o # $(OBJDIR)/libraries/USBDevice/USBAudio/USBAudio.o \
# $(OBJDIR)/libraries/USBDevice/USBDevice/USBDevice.o \
# $(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_KL25Z.o \
# $(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_LPC11U.o \
# $(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_LPC17.o \
# $(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_LPC40.o \
# $(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_RZ_A1H.o \
# $(OBJDIR)/libraries/USBDevice/USBDevice/USBHAL_STM32F4.o \
# $(OBJDIR)/libraries/USBDevice/USBHID/USBHID.o \
# $(OBJDIR)/libraries/USBDevice/USBHID/USBKeyboard.o \
# $(OBJDIR)/libraries/USBDevice/USBHID/USBMouseKeyboard.o \
# $(OBJDIR)/libraries/USBDevice/USBHID/USBMouse.o \
# $(OBJDIR)/libraries/USBDevice/USBMIDI/USBMIDI.o \
# $(OBJDIR)/libraries/USBDevice/USBMSD/USBMSD.o \
# $(OBJDIR)/libraries/USBDevice/USBSerial/USBCDC.o \
# $(OBJDIR)/libraries/USBDevice/USBSerial/USBSerial.o
INCLUDE_PATHS += \ INCLUDE_PATHS += \
-I$(MBED_DIR)/libraries/mbed/targets \
-I$(MBED_DIR)/libraries/mbed/targets/hal \
-I$(MBED_DIR)/libraries/mbed/targets/hal/TARGET_NXP \
-I$(MBED_DIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX \
-I$(MBED_DIR)/libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC11UXX/TARGET_LPC11U35_401 \
-I$(MBED_DIR)/libraries/mbed/targets/cmsis \
-I$(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP \
-I$(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX \
-I$(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM \
-I$(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/TARGET_LPC11U35_401 \
-I$(MBED_DIR)/libraries/mbed \ -I$(MBED_DIR)/libraries/mbed \
-I$(MBED_DIR)/libraries/mbed/hal \
-I$(MBED_DIR)/libraries/mbed/api \ -I$(MBED_DIR)/libraries/mbed/api \
-I$(MBED_DIR)/libraries/mbed/common \ -I$(MBED_DIR)/libraries/mbed/common \
-I$(MBED_DIR)/libraries/mbed/hal \
-I$(MBED_DIR)/libraries/USBDevice \ -I$(MBED_DIR)/libraries/USBDevice \
-I$(MBED_DIR)/libraries/USBDevice/USBHID \
-I$(MBED_DIR)/libraries/USBDevice/USBDevice \
-I$(MBED_DIR)/libraries/USBDevice/USBAudio \ -I$(MBED_DIR)/libraries/USBDevice/USBAudio \
-I$(MBED_DIR)/libraries/USBDevice/USBSerial \ -I$(MBED_DIR)/libraries/USBDevice/USBDevice \
-I$(MBED_DIR)/libraries/USBDevice/USBHID \
-I$(MBED_DIR)/libraries/USBDevice/USBMIDI \
-I$(MBED_DIR)/libraries/USBDevice/USBMSD \ -I$(MBED_DIR)/libraries/USBDevice/USBMSD \
-I$(MBED_DIR)/libraries/USBDevice/USBMIDI -I$(MBED_DIR)/libraries/USBDevice/USBSerial
# TMK mbed protocol
OBJECTS += \ OBJECTS += \
$(OBJDIR)/protocol/mbed/mbed_driver.o \ $(OBJDIR)/protocol/mbed/mbed_driver.o \
$(OBJDIR)/protocol/mbed/HIDKeyboard.o \ $(OBJDIR)/protocol/mbed/HIDKeyboard.o
INCLUDE_PATHS += \ INCLUDE_PATHS += \
-I$(TMK_DIR)/protocol/mbed -I$(TMK_DIR)/protocol/mbed
LINKER_SCRIPT = $(MBED_DIR)/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC11UXX/TOOLCHAIN_GCC_ARM/TARGET_LPC11U35_401/LPC11U35.ld