slime@2
|
1 |
--- Protocol Descrition ---
|
slime@2
|
2 |
|
slime@2
|
3 |
[------------------ HEADER ------------------] [- DATA -]
|
slime@2
|
4 |
[SYNC] [COMMAND] [LENGTH_UPPER] [LENGTH_LOWER] ([DATA])
|
slime@2
|
5 |
|
slime@2
|
6 |
|
slime@2
|
7 |
--- HEADER ---
|
slime@2
|
8 |
-- Sync --
|
slime@2
|
9 |
Commands send from the Host to the Unit start with 0xAA.
|
slime@2
|
10 |
Commands from the unit, to the Host Computer start with 0x55.
|
slime@2
|
11 |
|
slime@2
|
12 |
-- Length --
|
slime@2
|
13 |
Warning: A complete Packet _must_ be smaller than 64 Bytes. This is a Firmware limit!
|
slime@2
|
14 |
Therefore, LENGTH_UPPER is always zero.
|
slime@2
|
15 |
LENGTH_LOWER ist the number of Data bytes, following the header. The Firmware will scrap the complete package, if length is not correct.
|
slime@2
|
16 |
|
slime@2
|
17 |
--- Commands ---
|
slime@2
|
18 |
Currently the following commands are implemented:
|
slime@2
|
19 |
|
slime@2
|
20 |
-- Commands used by the unit --
|
slime@2
|
21 |
In most cases, these are replys to host initiated commands. Only CMD_SYS_IR is used 'standalone'.
|
slime@2
|
22 |
|
slime@2
|
23 |
- CMD_SYS_SYNC (0x00)-
|
slime@2
|
24 |
* not used.
|
slime@2
|
25 |
|
slime@2
|
26 |
- CMD_SYS_ACK (0x01) -
|
slime@2
|
27 |
* Acknowledge command.
|
slime@2
|
28 |
* Can contain data
|
slime@2
|
29 |
|
slime@2
|
30 |
- CMD_SYS_NACK (0x02) -
|
slime@2
|
31 |
* Not Acknowledge
|
slime@2
|
32 |
* Never contains data
|
slime@2
|
33 |
|
slime@2
|
34 |
- CMD_SYS_NIMP (0xFF) -
|
slime@2
|
35 |
* Issued commands is not implemented.
|
slime@2
|
36 |
* Never contains data
|
slime@2
|
37 |
|
slime@2
|
38 |
- CMD_SYS_IR (0x10) -
|
slime@2
|
39 |
* A Infrared or Key-Event has occured
|
slime@2
|
40 |
* 2 data Bytes: RC5-Address & RC5-Command
|
slime@2
|
41 |
|
slime@2
|
42 |
-- Host initiated commands --
|
slime@2
|
43 |
- CMD_DISP_CLEAR_SCREEN (0x10) -
|
slime@2
|
44 |
* Required data: None
|
slime@2
|
45 |
* Clears Display Data-RAM from 0x0000 to 0x1000
|
slime@2
|
46 |
|
slime@2
|
47 |
- CMD_DISP_SET_ROW_DATA (0x14) -
|
slime@2
|
48 |
* Required data: at least 3 data Bytes: ADDR_LOWER, ADDR_UPPER, DISPLAY_DATA[]
|
slime@2
|
49 |
* sets the Display Ram starting from address (ADDR_UPPER << 2 + ADDR_LOWER) to DISPLAY_DATA[].
|
slime@2
|
50 |
* most usefull if one ore more complete rows are written.
|
slime@2
|
51 |
|
slime@2
|
52 |
- CMD_DISP_SET_ADDRESS (0x16) -
|
slime@2
|
53 |
* Required data: 2 data Bytes: ADDR_LOWER, ADDR_UPPER
|
slime@2
|
54 |
* Sets the Display Ram Address to (ADDR_UPPER << 2 + ADDR_LOWER)
|
slime@2
|
55 |
|
cpresser@25
|
56 |
- CMD_WRITE_EEPROM (0x20) -
|
cpresser@25
|
57 |
* Required data: 2 data Bytes: ADDR, DATA
|
cpresser@25
|
58 |
* Writes DATA to the internal EEPROM at location ADDR
|
cpresser@25
|
59 |
|
cpresser@25
|
60 |
- CMD_READ_EEPROM (0x21) -
|
cpresser@25
|
61 |
* Required data: 1 data Bytes: ADDR
|
cpresser@25
|
62 |
* Returns one byte from the internal EEPROM at location ADDR
|
cpresser@25
|
63 |
|
slime@2
|
64 |
- CMD_READ_CLOCK (0x40) -
|
slime@2
|
65 |
* Required data: None
|
slime@2
|
66 |
* Returns 10Bytes of Data, corresponding to the pcf8583 ram from 0x00 to 0x0F.
|
slime@2
|
67 |
|
slime@2
|
68 |
- CMD_WRITE_CLOCK (0x41) -
|
slime@2
|
69 |
* Required data: 10Bytes: CLOCK_DATA[]
|
slime@2
|
70 |
* Writes CLOCK_DATA to the pcf8583 from address 0x00 to 0x0F.
|
slime@2
|
71 |
|
slime@2
|
72 |
- CMD_SET_PWM1 (0x45) -
|
slime@2
|
73 |
* Required data: 1 Byte (DutyCycle)
|
slime@2
|
74 |
* Loads PWM1 DutyCycle Register
|
slime@2
|
75 |
|
slime@2
|
76 |
- CMD_SET_PWM2 (0x46) -
|
slime@2
|
77 |
* Required data: 1 Byte (DutyCycle)
|
slime@2
|
78 |
* Loads PWM2 DutyCycle Register
|
slime@2
|
79 |
|
slime@2
|
80 |
- CMD_SET_MODE_MANAGED (0x70) -
|
slime@2
|
81 |
* Required data: None
|
slime@2
|
82 |
* Enters 'managed mode': now the display wont be updated, ir&key events will be send
|
slime@2
|
83 |
|
slime@2
|
84 |
- CMD_SET_MODE_UNMANAGED (0x71) -
|
slime@2
|
85 |
* Required data: None
|
root@33
|
86 |
* Enters 'unmanaged mode': now the display will display the current time, ir&key events wont be send
|
slime@2
|
87 |
|
slime@2
|
88 |
- CMD_BOOT (0x80) -
|
slime@2
|
89 |
* Required data: None
|
slime@2
|
90 |
* Enters Bootload mode. NO ACK is send!
|
slime@2
|
91 |
|
slime@2
|
92 |
--- Examples ---
|
slime@2
|
93 |
0xAA 0x10 0x00 0x00 -> Clears the Display
|
slime@2
|
94 |
0xAA 0x45 0x00 0x01 0x80 -> Sets PWM1 to 50% DC
|
slime@2
|
95 |
0xAA 0x14 0x00 0x03 0x00 0x08 0x42 -> Writes a small 'b' to the upper left display corner
|
slime@2
|
96 |
0xAA 0x80 0x00 0x00 -> Enters Bootloader mode
|
root@33
|
97 |
0xAA 0x40 0x00 0x00 -> Returns 10Bytes Clock Data
|