Difference between revisions of "PACmate20 Braille Display"

From Hackstrich
m (Removing redundant header line.)
(Started documenting the protocol.)
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 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.
  
=== Notable Chips ===
+
== Notable Chips ==
 
{| border="1"
 
{| border="1"
 
!Chip
 
!Chip
Line 20: Line 20:
 
|}
 
|}
  
=== USB Descriptors ===
+
== USB Descriptors ==
 
<pre>
 
<pre>
 
Configuration descriptor:
 
Configuration descriptor:
Line 52: Line 52:
 
</pre>
 
</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]]

Revision as of 11:58, 16 November 2009

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:       82   [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;

Images

PACmate20 Internal.png