Difference between revisions of "PACmate20 Braille Display"
From Hackstrich
(Adding USB descriptor info.) |
(IN endpoint is 02 not 82) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | The Freedom Scientific [http://www.freedomscientific.com/fs_products/PACmate_20.asp PACmate 20] is a 20-cell braille display with two pushbuttons over each cell, and two 'whiz wheels' (mousewheel-type wheels) on either side of the braille area. It connects to a PC or other device via USB, and can be attached to the [http://www.freedomscientific.com/fs_products/PACmate2.asp PACmate notetaker] to integrate them into one device. | |
− | The [http://www.freedomscientific.com/fs_products/PACmate_20.asp PACmate 20] is a 20-cell braille display with two pushbuttons over each cell, and two 'whiz wheels' (mousewheel-type wheels) on either side of the braille area. It connects to a PC or other device via USB, and can be attached to the [http://www.freedomscientific.com/fs_products/PACmate2.asp PACmate notetaker] to integrate them into one device. | ||
− | + | == Notable Chips == | |
{| border="1" | {| border="1" | ||
!Chip | !Chip | ||
Line 25: | Line 24: | ||
Configuration descriptor: | Configuration descriptor: | ||
Total length: 0020 | Total length: 0020 | ||
− | + | Number of Interfaces: 01 | |
− | + | Configuration value: 01 | |
− | + | Configuration string: 00 | |
− | + | Attributes: 80 [Device doesn't have own power, can't generate remote wakeups] | |
− | + | Maximum power usage FA [500mA] | |
Interface descriptor: | Interface descriptor: | ||
− | + | Interface number: 00 | |
− | + | Alternate: 00 | |
Endpoints: 02 | Endpoints: 02 | ||
− | Class: FF | + | Class: FF [Vendor Specific] |
− | Subclass: 00 | + | Subclass: 00 [Ignored: Class FF] |
− | Protocol: 00 | + | Protocol: 00 [Ignored: Class FF] |
− | + | Interface string: 00 | |
Endpoint descriptor: | Endpoint descriptor: | ||
− | Endpoint address: 01 | + | Endpoint address: 01 [10000000: OUT endpoint 1] |
− | + | Attributes: 02 [01000000: Bulk] | |
− | + | Maximum packet size: 0040 [64 bytes] | |
− | Polling interval: 00 | + | Polling interval: 00 [Ignored: Not isochronous or interrupt type] |
Endpoint descriptor: | Endpoint descriptor: | ||
− | Endpoint address: | + | Endpoint address: 02 [10000010: IN endpoint 1] |
− | + | Attributes: 02 [01000000: Bulk] | |
− | + | Maximum packet size: 0040 [64 bytes] | |
− | Polling interval: 00 | + | Polling interval: 00 [Ignored: Not isochronous or interrupt type] |
+ | </pre> | ||
− | === Images | + | == Protocol == |
+ | Protocol documentation all taken using BRLTTY's FreedomScientific driver as a reference implementation. Packets sent to the PACmate20 display all follow a standard format, detailed below. | ||
+ | === Packet Format === | ||
+ | <pre> | ||
+ | byte type | ||
+ | byte arg1 | ||
+ | byte arg2 | ||
+ | byte arg3 | ||
+ | byte payload[256] | ||
+ | OR | ||
+ | byte manufacturer[24] | ||
+ | byte model[16] | ||
+ | byte firmware_version[8] | ||
+ | OR | ||
+ | byte extended_keys[4] | ||
+ | </pre> | ||
+ | |||
+ | === C Structure === | ||
+ | <pre> | ||
+ | typedef struct { | ||
+ | unsigned char type; | ||
+ | unsigned char arg1; | ||
+ | unsigned char arg2; | ||
+ | unsigned char arg3; | ||
+ | } PacketHeader; | ||
+ | |||
+ | typedef struct { | ||
+ | PacketHeader header; | ||
+ | union { | ||
+ | unsigned char bytes[0X100]; | ||
+ | struct { | ||
+ | char manufacturer[24]; | ||
+ | char model[16]; | ||
+ | char firmware[8]; | ||
+ | } info; | ||
+ | struct { | ||
+ | unsigned char bytes[4]; | ||
+ | } extkey; | ||
+ | } payload; | ||
+ | } Packet; | ||
+ | </pre> | ||
+ | |||
+ | == Images == | ||
[[Image:PACmate20_Internal.png]] | [[Image:PACmate20_Internal.png]] | ||
[[Category:Products]] | [[Category:Products]] |
Latest revision as of 19:01, 9 October 2011
The Freedom Scientific PACmate 20 is a 20-cell braille display with two pushbuttons over each cell, and two 'whiz wheels' (mousewheel-type wheels) on either side of the braille area. It connects to a PC or other device via USB, and can be attached to the PACmate notetaker to integrate them into one device.
Notable Chips
Chip | Chip Function | Use in Product |
---|---|---|
C8051F320 | Microcontroller w/ USB | Brains of the display, talks to the PC/device natively over USB. |
LM358 | Op-amp | Don't know |
TLC555 | Timer | Near large cap, small caps, and inductors. May be part of the HV charge pump? |
USB Descriptors
Configuration descriptor: Total length: 0020 Number of Interfaces: 01 Configuration value: 01 Configuration string: 00 Attributes: 80 [Device doesn't have own power, can't generate remote wakeups] Maximum power usage FA [500mA] Interface descriptor: Interface number: 00 Alternate: 00 Endpoints: 02 Class: FF [Vendor Specific] Subclass: 00 [Ignored: Class FF] Protocol: 00 [Ignored: Class FF] Interface string: 00 Endpoint descriptor: Endpoint address: 01 [10000000: OUT endpoint 1] Attributes: 02 [01000000: Bulk] Maximum packet size: 0040 [64 bytes] Polling interval: 00 [Ignored: Not isochronous or interrupt type] Endpoint descriptor: Endpoint address: 02 [10000010: IN endpoint 1] Attributes: 02 [01000000: Bulk] Maximum packet size: 0040 [64 bytes] Polling interval: 00 [Ignored: Not isochronous or interrupt type]
Protocol
Protocol documentation all taken using BRLTTY's FreedomScientific driver as a reference implementation. Packets sent to the PACmate20 display all follow a standard format, detailed below.
Packet Format
byte type byte arg1 byte arg2 byte arg3 byte payload[256] OR byte manufacturer[24] byte model[16] byte firmware_version[8] OR byte extended_keys[4]
C Structure
typedef struct { unsigned char type; unsigned char arg1; unsigned char arg2; unsigned char arg3; } PacketHeader; typedef struct { PacketHeader header; union { unsigned char bytes[0X100]; struct { char manufacturer[24]; char model[16]; char firmware[8]; } info; struct { unsigned char bytes[4]; } extkey; } payload; } Packet;