summaryrefslogtreecommitdiff
path: root/RocketViewRecoveryNode.mdwn
blob: 917b5849ca0dc9fee2ec94b9d2e80ea2d81fee2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# <a name="Recovery Node Display in rocketv"></a> Recovery Node Display in rocketview

Note: Message IDs are described in the form `DEFINED_MESSAGE_NAME = [16bit ID] = [11bit ID] [RTR] [length] [byte0] ... [byte7]`, where the 16bit ID is the 16 bit "packed value" of the ID (11 bits CAN ID + 1 bit RTR + 4 bits length).

If the data is unkown - e.g., because a message has not been received which sets this data - then display a dash(-).

<table border=1>
  <tr>
    <td><pre>
Recovery Node ([-|Safe|2m Armed|Armed])

Power:   [-|External|HAP]
Charge:  [-|Fast|Trickle|off]
Battery: [-|n.n]V [-|nnnn]#A

Last DTMF: [-|DTMF tones 0..9,#,* (tone number, tone sequence)]

Timer 1: [-|nnn]s   Pyro 1: [-|Fired(nx)]
Timer 2: [-|nnn]s   Pyro 2: [-|Fired(nx)]
Timer 3: [-|nnn]s   Pyro 3: [-|Fired(nx)]
Timer 4: [-|nnn]s   Pyro 4: [-|Fired(nx)]
</pre></td>
  </tr>
</table>

Here's how to map CAN messages to the display:

The recovery node's mode is set by `2m REC_REPORT_MODE = 941 = 4a 0 1 [0x30|0x33|0x3F]` where:

- 0x30 = `'Safe'`
- 0x33 = `'2m Armed'`
- 0x3F = `'Armed'`

`Power` is set by `REC_REPORT_BATTERY = 9C6 = 4E 0 6 [batt] [Vb MSB] [Vb LSB] [Ib MSB] [Ib LSB] [EXT PWR]` where:

- `[EXT PWR] = 0 -> 'HAP'`
- `[EXT PWR] = 1 -> 'External'`

`Charge` is set by `REC_REPORT_BATTERY = 9C6 = 4E 0 6 [batt] [Vb MSB] [Vb LSB] [Ib MSB] [Ib LSB] [EXT PWR]` where:

- `[batt] = 0 -> 'Off'`
- `[batt] = 1 -> 'Trickle'`
- `[batt] = 2 -> 'Fast'`

`Battery` is set by set by `REC_REPORT_BATTERY = 9C6 = 4E 0 6 [batt] [Vb MSB] [Vb LSB] [Ib MSB] [Ib LSB] [EXT PWR]` where:

- Battery voltage is `(([Vb MSB] << 8) + [Vb LSB])*5/1024` volts
- Battery current is `([Ib MSB] << 8) + [Ib LSB]` which is the raw 10bit ADC value (thus the "#A" units in the display)

`Last DTMF` is set by `REC_REPORT_DTMF = 9A3 = 4D 0 3 [DTMF tone] [tone_number] [tone_sequence]` where:

- `i (j,k)` is DTMF tone 1..12 (tone number, tone sequence)
- The DTMF tones from 1..12 are 1234567890\*#
- The control will show the received DTMF sequence starting with #. Sending a # will reset the sequence.

`Timer i:` is set by `REC_REPORT_TIMER = 923 = 49 0 3 [MSB timer] [LSB timer] [timer #]` where:

- `i = [timer # 1..4]`
- `([MSB timer] << 8) + [LSB timer]`

`Pyro i:` is set by `REC_REPORT_PYRO = 902 = 48 0 2 [pyro #] [Fired]` where:

- `i = [pyro # 1..4]`
- `'Fired(nx)'` where `n` is a count of how many times `[Fired]` was `1` for `i = [pyro #]`
- Please don't ever clear this, even if you get a `[Fired] = 0`. If `[Fired]` is ever equal to 1, then just increment the number of firings (1x, 2x, 3x, etc) and never reset it (until rocketview is restarted, of course).