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:
==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 25: Line 24:
 
Configuration descriptor:
 
Configuration descriptor:
 
Total length:          0020
 
Total length:          0020
Num.intf:               01
+
Number of Interfaces:   01
Conf.value:             01
+
Configuration value:   01
Conf.string:           00
+
Configuration string:   00
Attr.:                 80
+
Attributes:             80   [Device doesn't have own power, can't generate remote wakeups]
Max.pwr:                FA
+
Maximum power usage    FA   [500mA]
  
 
Interface descriptor:
 
Interface descriptor:
Intf.number:           00
+
Interface number:       00
Alt.:                   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]
Intf.string:           00
+
Interface string:       00
  
 
Endpoint descriptor:
 
Endpoint descriptor:
Endpoint address:      01
+
Endpoint address:      01   [10000000: OUT endpoint 1]
Attr.:                 02
+
Attributes:             02   [01000000: Bulk]
Max.pkt size:           0040
+
Maximum packet size:   0040 [64 bytes]
Polling interval:      00
+
Polling interval:      00   [Ignored: Not isochronous or interrupt type]
  
 
Endpoint descriptor:
 
Endpoint descriptor:
Endpoint address:      82
+
Endpoint address:      02  [10000010: IN endpoint 1]
Attr.:                 02
+
Attributes:             02   [01000000: Bulk]
Max.pkt size:           0040
+
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;

Images

PACmate20 Internal.png