Difference between revisions of "PACmate20 Braille Display"

From Hackstrich
(Added detailed information on USB descriptor info.)
(IN endpoint is 02 not 82)
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
==PACmate 20 Braille Display==
+
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 ===
+
== Notable Chips ==
 
{| border="1"
 
{| border="1"
 
!Chip
 
!Chip
Line 21: Line 20:
 
|}
 
|}
  
=== USB Descriptors ===
+
== USB Descriptors ==
 
<pre>
 
<pre>
 
Configuration descriptor:
 
Configuration descriptor:
Line 47: Line 46:
  
 
Endpoint descriptor:
 
Endpoint descriptor:
Endpoint address:      82   [10000010: IN endpoint 1]
+
Endpoint address:      02   [10000010: IN endpoint 1]
 
Attributes:            02  [01000000: Bulk]
 
Attributes:            02  [01000000: Bulk]
 
Maximum packet size:    0040 [64 bytes]
 
Maximum packet size:    0040 [64 bytes]
Line 53: 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]]

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;

Images

PACmate20 Internal.png