diff options
| author | tmk <nobody@nowhere> | 2011-02-22 02:57:01 +0900 | 
|---|---|---|
| committer | tmk <nobody@nowhere> | 2011-02-22 03:49:02 +0900 | 
| commit | 00350c180dee31ec9d9c4aee31e06faf55bd1c6b (patch) | |
| tree | d54b35ca96ec6bce6c415423cdba4f66d198b433 | |
| parent | d2b9489a5e19fabb5d6ec285192b19dc25b36d5e (diff) | |
v3.0    cleanse files
| -rw-r--r-- | ADB.txt | 173 | ||||
| -rw-r--r-- | README | 35 | ||||
| -rw-r--r-- | TODO | 103 | ||||
| -rw-r--r-- | adb.c | 213 | ||||
| -rw-r--r--[-rwxr-xr-x] | pjrc/usb.c | 0 | 
5 files changed, 240 insertions, 284 deletions
| diff --git a/ADB.txt b/ADB.txt deleted file mode 100644 index 63005b3dda..0000000000 --- a/ADB.txt +++ /dev/null @@ -1,173 +0,0 @@ -ADB Protocol -============ - -Resources ---------- -ADB - The Untold Story: Space Aliens Ate My Mouse -    http://developer.apple.com/legacy/mac/library/#technotes/hw/hw_01.html -Apple IIgs Hardware Reference Second Edition [p80(Chapter6 p121)] -    ftp://ftp.apple.asimov.net/pub/apple_II/documentation/Apple%20IIgs%20Hardware%20Reference.pdf -ADB Keycode -    http://72.0.193.250/Documentation/macppc/adbkeycodes/ -    http://m0115.web.fc2.com/m0115.jpg -    [Inside Macintosh volume V, pages 191-192] -ADB Signaling -    http://kbdbabel.sourceforge.net/doc/kbd_signaling_pcxt_ps2_adb.pdf -ADB Overview & History -    http://en.wikipedia.org/wiki/Apple_Desktop_Bus -Microchip Application Note: ADB device(with code for PIC16C) -    http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011062 -AVR ATtiny2131 ADB to PS/2 converter(Japanese) -    http://hp.vector.co.jp/authors/VA000177/html/KeyBoardA5DEA5CBA5A2II.html - - -Pinouts -------- -    ADB female socket from the front: -    __________ -    |        | <--- top -    | 4o  o3 | -    |2o    o1| -    |   ==   | -    |________| <--- bottom -      |    |   <--- 4pins - - -    ADB female socket from bottom: - -    ========== <--- front -    |        | -    |        | -    |2o    o1| -    |4o    o3| -    ---------- <--- back - -    1: Data -    2: Power SW(low when press Power key) -    3: Vcc(5V) -    4: GND - - - -Commands --------- -    ADB command is 1byte and consists of 4bit-address, 2bit-command -    type and 2bit-register. The commands are always sent by Host. - -    Command format: -    7 6 5 4 3 2 1 0 -    | | | |------------ address -            | |-------- command type -                | |---- register - -    bits                commands -    ------------------------------------------------------ -    - - - - 0 0 0 0     Send Request(reset all devices) -    A A A A 0 0 0 1     Flush(reset a device) -    - - - - 0 0 1 0     Reserved -    - - - - 0 0 1 1     Reserved -    - - - - 0 1 - -     Reserved -    A A A A 1 0 R R     Listen(write to a device) -    A A A A 1 1 R R     Talk(read from a device) - -    The command to read keycodes from keyboard is 0x2C which -    consist of keyboard address 2 and Talk against register 0.  - -    Address: -    2:  keyboard -    3:  mice - -    Registers: -    0: application(keyobard uses this to store its data.) -    1: application -    2: application(keyboard uses this for LEDs and state of modifiers) -    3: status and command - - -Communication -------------- -    This is a minimum information for keyboard communication. -    See "Resources" for detail. - -    Signaling: - -    ~~~~____________~~||||||||||||__~~~~~_~~|||||||||||||||__~~~~ - -        |800us     |  |7 Command 0|  |   |  |15-64  Data  0|Stopbit(0) -        +Attention |              |  |   +Startbit(1) -                   +Startbit(1)   |  +Tlt(140-260us) -                                  +stopbit(0) - -    Bit cells: - -    bit0: ______~~~ -          65    :35us - -    bit1: ___~~~~~~ -          35 :65us - -    bit0 low time: 60-70% of bit cell(42-91us) -    bit1 low time: 30-40% of bit cell(21-52us) -    bit cell time: 70-130us -    [from Apple IIgs Hardware Reference Second Edition] - -    Criterion for bit0/1: -    After 55us if line is low/high then bit is 0/1. - -    Attention & start bit: -    Host asserts low in 560-1040us then places start bit(1). - -    Tlt(Stop to Start): -    Bus stays high in 140-260us then device places start bit(1). - -    Global reset: -    Host asserts low in 2.8-5.2ms. All devices are forced to reset. - -    Send request from device(Srq): -    Device can request to send at commad(Global only?) stop bit. -    keep low for 300us to request. - - -Keyboard Data(Register0) -    This 16bit data can contains two keycodes and two released flags. -    First keycode is palced in upper byte. When one keyocode is sent, -    lower byte is 0xFF. -    Release flag is 1 when key is released. - -    1514 . . . . . 8 7 6 . . . . . 0 -     | | | | | | | | | +-+-+-+-+-+-+-   Keycode2 -     | | | | | | | | +---------------   Released2(1 when the key is released) -     | +-+-+-+-+-+-+-----------------   Keycode1 -     +-------------------------------   Released1(1 when the key is released) - -    Keycodes: -    Scancode consists of 7bit keycode and 1bit release flag. -    Device can send two keycodes at once. If just one keycode is sent -    keycode1 contains it and keyocode2 is 0xFF. - -    Power switch: -    You can read the state from PSW line(active low) however -    the switch has a special scancode 0x7F7F, so you can -    also read from Data line. It uses 0xFFFF for release scancode. - -Keyboard LEDs & state of keys(Register2) -    This register hold current state of three LEDs and nine keys. -    The state of LEDs can be changed by sending Listen command. -     -    1514 . . . . . . 7 6 5 . 3 2 1 0 -     | | | | | | | | | | | | | | | +-   LED1(NumLock) -     | | | | | | | | | | | | | | +---   LED2(CapsLock) -     | | | | | | | | | | | | | +-----   LED3(ScrollLock) -     | | | | | | | | | | +-+-+-------   Reserved -     | | | | | | | | | +-------------   ScrollLock -     | | | | | | | | +---------------   NumLock -     | | | | | | | +-----------------   Apple/Command -     | | | | | | +-------------------   Option -     | | | | | +---------------------   Shift -     | | | | +-----------------------   Control -     | | | +-------------------------   Reset/Power -     | | +---------------------------   CapsLock -     | +-----------------------------   Delete -     +-------------------------------   Reserved - -END_OF_ADB @@ -1,16 +1,19 @@  t.m.k. Keyboard Firmware  ======================== -http://github.com/tmk/tmk_keyboard - -This is keyboard firmware for AVR USB MCUs or Teensy/Teensy++. -http://www.pjrc.com/teensy +This is keyboard firmware for Teensy(AVR USB MCU) and V-USB board. -The project is heavily based on PJRC USB Keyboard/Mouse Example and -owes a debt to preceding keyboard firmware projects. +source code repository: +http://github.com/tmk/tmk_keyboard  This firmware is used in following projects:  HHKB mod:   http://geekhack.org/showwiki.php?title=Island:12047  Macway mod: http://geekhack.org/showwiki.php?title=Island:11930 +PS2 to USB: http://geekhack.org/showwiki.php?title=Island:14618 +ADB to USB: http://geekhack.org/showwiki.php?title=Island:14290 + +The project is heavily based on PJRC USB Keyboard/Mouse Example and +owes a debt to preceding keyboard firmware projects. +http://www.pjrc.com/teensy  Features @@ -31,12 +34,27 @@ Limitations  ----------- +Files & Directories +------------------- +Target: +hhkb/                           keyboard controller for PFU HHKB pro +macway/                         keyboard controller for Macway mod +ps2_usb/                        PS2 to USB keyboard converter +adb_usb/                        ADB to USB keyboard converter + +USB Protocol Stack: +pjrc/                           PJRC  USB stack +vusb/                           V-USB USB stack +ps2.[ch]                        PS/2 protocol +adb.[ch]                        ADB protocol + +  Build  -----  To compile needs AVR GCC, AVR Libc and GNU make.  You can use WinAVR on Windows.  http://winavr.sourceforge.net/ -$ cd <target> (hhkb or macway currently) +$ cd <target>  $ make  The firmware will be compiled as a file tmk_<target>.hex. @@ -100,7 +118,8 @@ Build Options  Debuging & Rescue  -----------------  Use PJRC's hid_listen.exe to see debug messages. -Press right Control + Shift + Alt + GUI + H to debug menu.  +Press <COMMAND> + H to debug menu.  +(see config.h for <COMMAND> key combination.)  Pressing any 3 keys when connected enables debug output.  Pressing any 4 keys when connected makes bootloader comes up. @@ -1,103 +0,0 @@ -TODO & IDEAS ------------- -Code cleaning -    keymap layer definition -Debug/Config console -    keymap/layer setting -        layer switching timing -        matrix display -    help -        display keymap -        display matrix(row, col) -    debug console -        through PJRC console -        through UART/USB CDC -    mouse acceleration -    store setting to EEPROM -Document -    development -Interchangable protocol stack -    USB -        PJRC stack(default currently) -        LUFA -        original minimal stack for keyboard/mouse -    PS/2 -        from keyboard-upgrade? -Layer switch -    toggle layer switch -Debouncing logic -    will be coded when bouncing occurs. -    bouncing doesnt occur on my ALPS switch so far. -    scan rate is too slow?(to be measure) -Child lock -    disable keyboard to protect against atacking by child -Windows key blocking -    disable Windows keys for gamers -OneHand operation -    RAlt + Del(or \) to Alt + Tab -Licensings(GPL) -    GPL will not be infringement of PJRC license. -Extra switch -    foot sw for layer switching -    mouse button -PS/2->USB keyboard converter -    PS/2 keyboard host protocol support -PS/2,USB detection -    act as PS/2 keyboard or USB keyboard. -    PS/2 keyboard device protocol support -Thinkpad keyboard support -    turn to USB keyboard/mouse composite device -Other MCU/board support -    architectures on which GCC is available. -    AT90USBKEY and other AVR USB boards -    Cortex-M3 ARM board(STM32) -        http://strawberry-linux.com/catalog/items?code=32105   -Separate keyboard support -    comunicate between keyboards by I2C? -    this is for ergo keyoboard style. - - -DONE & STATUS -------------- -PS2 mouse bug to be FIX'd -    macway/matrix: line select changes pins for mouse. -    2010/01/02 -support for HHKB pro matrix signal -    exchange controller board with teensy -    2010/10/11 -OneHand operation -    Matias half keyboard style -    2010/10/23 -souce code cleaning -    2010/10/23 -debug on/off -    debug off by default -    pressing keys during booting -    2010/10/23 -mouse horizontal wheel -    http://www.microchip.com/forums/tm.aspx?high=&m=391435&mpage=1#391521 -    http://www.keil.com/forum/15671/ -    http://www.microsoft.com/whdc/device/input/wheel.mspx -    2010/10/13 -debug on/off -    Fn key conbination during normal operation -    matrix print on/off -    key print on/off -    mouse print on/off -    2010/10/26 -layer switching -    time before switching -    timeout when not used during specific time -    2010/10/30 -Build Option -    windows media keys suport -    2010/01/06 -Document -     build, customize -    2010/01/06 -Trackpoint(PS/2) -    receive PS/2 signal from TrackPoint -    2010/01/02 -    send USB HID report - -EOF @@ -1,3 +1,39 @@ +/* +Copyright (c) 2011 Jun WAKO <wakojun@gmail.com> + +This software is licensed with a Modified BSD License. +All of this is supposed to be Free Software, Open Source, DFSG-free, +GPL-compatible, and OK to use in both free and proprietary applications. +Additions and corrections to this file are welcome. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright +  notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright +  notice, this list of conditions and the following disclaimer in +  the documentation and/or other materials provided with the +  distribution. + +* Neither the name of the copyright holders nor the names of +  contributors may be used to endorse or promote products derived +  from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +*/  #include <stdbool.h>  #include <util/delay.h>  #include <avr/io.h> @@ -191,3 +227,180 @@ static inline uint8_t wait_data_hi(uint8_t us)      }      return us;  } + + +/* +ADB Protocol +============ + +Resources +--------- +ADB - The Untold Story: Space Aliens Ate My Mouse +    http://developer.apple.com/legacy/mac/library/#technotes/hw/hw_01.html +Apple IIgs Hardware Reference Second Edition [p80(Chapter6 p121)] +    ftp://ftp.apple.asimov.net/pub/apple_II/documentation/Apple%20IIgs%20Hardware%20Reference.pdf +ADB Keycode +    http://72.0.193.250/Documentation/macppc/adbkeycodes/ +    http://m0115.web.fc2.com/m0115.jpg +    [Inside Macintosh volume V, pages 191-192] +ADB Signaling +    http://kbdbabel.sourceforge.net/doc/kbd_signaling_pcxt_ps2_adb.pdf +ADB Overview & History +    http://en.wikipedia.org/wiki/Apple_Desktop_Bus +Microchip Application Note: ADB device(with code for PIC16C) +    http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en011062 +AVR ATtiny2131 ADB to PS/2 converter(Japanese) +    http://hp.vector.co.jp/authors/VA000177/html/KeyBoardA5DEA5CBA5A2II.html + + +Pinouts +------- +    ADB female socket from the front: +    __________ +    |        | <--- top +    | 4o  o3 | +    |2o    o1| +    |   ==   | +    |________| <--- bottom +      |    |   <--- 4pins + + +    ADB female socket from bottom: + +    ========== <--- front +    |        | +    |        | +    |2o    o1| +    |4o    o3| +    ---------- <--- back + +    1: Data +    2: Power SW(low when press Power key) +    3: Vcc(5V) +    4: GND + + + +Commands +-------- +    ADB command is 1byte and consists of 4bit-address, 2bit-command +    type and 2bit-register. The commands are always sent by Host. + +    Command format: +    7 6 5 4 3 2 1 0 +    | | | |------------ address +            | |-------- command type +                | |---- register + +    bits                commands +    ------------------------------------------------------ +    - - - - 0 0 0 0     Send Request(reset all devices) +    A A A A 0 0 0 1     Flush(reset a device) +    - - - - 0 0 1 0     Reserved +    - - - - 0 0 1 1     Reserved +    - - - - 0 1 - -     Reserved +    A A A A 1 0 R R     Listen(write to a device) +    A A A A 1 1 R R     Talk(read from a device) + +    The command to read keycodes from keyboard is 0x2C which +    consist of keyboard address 2 and Talk against register 0.  + +    Address: +    2:  keyboard +    3:  mice + +    Registers: +    0: application(keyobard uses this to store its data.) +    1: application +    2: application(keyboard uses this for LEDs and state of modifiers) +    3: status and command + + +Communication +------------- +    This is a minimum information for keyboard communication. +    See "Resources" for detail. + +    Signaling: + +    ~~~~____________~~||||||||||||__~~~~~_~~|||||||||||||||__~~~~ + +        |800us     |  |7 Command 0|  |   |  |15-64  Data  0|Stopbit(0) +        +Attention |              |  |   +Startbit(1) +                   +Startbit(1)   |  +Tlt(140-260us) +                                  +stopbit(0) + +    Bit cells: + +    bit0: ______~~~ +          65    :35us + +    bit1: ___~~~~~~ +          35 :65us + +    bit0 low time: 60-70% of bit cell(42-91us) +    bit1 low time: 30-40% of bit cell(21-52us) +    bit cell time: 70-130us +    [from Apple IIgs Hardware Reference Second Edition] + +    Criterion for bit0/1: +    After 55us if line is low/high then bit is 0/1. + +    Attention & start bit: +    Host asserts low in 560-1040us then places start bit(1). + +    Tlt(Stop to Start): +    Bus stays high in 140-260us then device places start bit(1). + +    Global reset: +    Host asserts low in 2.8-5.2ms. All devices are forced to reset. + +    Send request from device(Srq): +    Device can request to send at commad(Global only?) stop bit. +    keep low for 300us to request. + + +Keyboard Data(Register0) +    This 16bit data can contains two keycodes and two released flags. +    First keycode is palced in upper byte. When one keyocode is sent, +    lower byte is 0xFF. +    Release flag is 1 when key is released. + +    1514 . . . . . 8 7 6 . . . . . 0 +     | | | | | | | | | +-+-+-+-+-+-+-   Keycode2 +     | | | | | | | | +---------------   Released2(1 when the key is released) +     | +-+-+-+-+-+-+-----------------   Keycode1 +     +-------------------------------   Released1(1 when the key is released) + +    Keycodes: +    Scancode consists of 7bit keycode and 1bit release flag. +    Device can send two keycodes at once. If just one keycode is sent +    keycode1 contains it and keyocode2 is 0xFF. + +    Power switch: +    You can read the state from PSW line(active low) however +    the switch has a special scancode 0x7F7F, so you can +    also read from Data line. It uses 0xFFFF for release scancode. + +Keyboard LEDs & state of keys(Register2) +    This register hold current state of three LEDs and nine keys. +    The state of LEDs can be changed by sending Listen command. +     +    1514 . . . . . . 7 6 5 . 3 2 1 0 +     | | | | | | | | | | | | | | | +-   LED1(NumLock) +     | | | | | | | | | | | | | | +---   LED2(CapsLock) +     | | | | | | | | | | | | | +-----   LED3(ScrollLock) +     | | | | | | | | | | +-+-+-------   Reserved +     | | | | | | | | | +-------------   ScrollLock +     | | | | | | | | +---------------   NumLock +     | | | | | | | +-----------------   Apple/Command +     | | | | | | +-------------------   Option +     | | | | | +---------------------   Shift +     | | | | +-----------------------   Control +     | | | +-------------------------   Reset/Power +     | | +---------------------------   CapsLock +     | +-----------------------------   Delete +     +-------------------------------   Reserved + +END_OF_ADB +*/ diff --git a/pjrc/usb.c b/pjrc/usb.c index 9fd30dee3c..9fd30dee3c 100755..100644 --- a/pjrc/usb.c +++ b/pjrc/usb.c | 
