PACmate20 Braille Display
From Hackstrich
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;