chiark / gitweb /
note a misbehaviour in the README
[trains.git] / hostside / README
1 ./hostside-old [<options>] <nmra-command> <nmra-args...>    see nmra-packets.h
2 ./hostside-old [<options>] nmra_bytes <nmra-command-hex-no-csum>
3 ./hostside-old [<options>] nmra_raw <nmra-command-hex-with-csum>
4 ./hostside-old [<options>] command <literal-data-for-pic>
5  options
6   -s<serialport>   eg -s/dev/ttyS0  normally necessary
7   -w<repeatdelay>  usleep; 0 = no usleep; default is -1 = don't repeat at all
8   -i<iterations>   default is 0 = infinite; -1 means don't repeat
9                       *** the above seems wrong; -1 seems to mean infinite
10   -f<fudgedelay>   usleep; each character; default is 0 = no usleep
11
12 Eg,
13  ./hostside-old -s/dev/ttyS0 -w10000 -i1000 nmra_bytes 0348
14 to tell decoder 3 to go speed 13 backwards every 10ms for 1000 times, ie 10s
15  (on norway this means it actually happens every 20ms, ie for 20s,
16    which makes it a bit of a fudge really)
17
18  ff       ff       80       e4       c1       17         output bytes
19  11111111 11111111 10000000 11100100 11000001 00010111   as bits
20  >1111111 >1111111 >0000000 >1100100 >1000001 $0010111   top bit: >/$ for pic
21
22  1111111 1111111  0 00000011 0 01001000 0 01001011 1     reorg bits for nmra:
23   preamble (14)   S 0AAAAAAA P 01DCSSSS 0 EEEEEEEE 1
24                     03    (+)  48       = 4b ok
25
26 To test:
27  ./hostside-old -st nmra_bytes 0348 && binview t
28
29
30
31
32 Protocol over new hostside stdin:
33                                             Example (always the same msg):
34  P> nmra [*<slot>] [<nmra-command [<nmra-args>...]]    nmra speed28 3 13 1
35  P> nmra [*<slot>] [=<nmra-bytes>]                     nmra =0348
36  P> nmra [*<slot>] [:<nmra-bytes-with-csum>]           nmra :03484b
37  P> nmra [*<slot>] [_<pic-literal-bytes>]              nmra _7f7f00644197
38    in each case *<slot> indicates that the message should be put in
39    the retransmission cycle, and cancels any previous message with the
40    same *<slot>.  <slot> may be empty.
41  P> nmra *<slot>
42    cancels the relevant retransmission.
43
44                                             Example (always the same msg):
45  P> pic =<pic-bytes>                                   pic =a003
46  P> pic <pic-command> [<pic-args...]                   pic point 3
47        the latter for commands with no `...' in README.protocol only
48
49  Keen readers will observe that
50     pic =<pic-bytes>    and
51     nmra _<pic-bytes>
52  do exactly the same.
53
54  P> polarity <bit-string-in-hex>....
55        where, eg, with 14 segments,
56                          [      1]    [111 1111]    reversible
57                [123]     [56 7890]    [123 4567]     segment number
58          1 0010 000    1 000 1000    0 111 1010     example POLARITY
59          1 0010 RRR    1 RRR RRRR    0 RRR R---      from README.protocol
60                 RRR      RRR RRRR      RRR R        actual R bits
61                 \__        ___/\__      ___/         ... which map ...
62                    RRRRRRRR       RRRRRR             ... into data ...
63                    RRRRRRRR       RRRRRR--           ... like this.
64                    00000010       00111100
65                                  [ 1111111]         reversible
66                   [12345678]     [90123456]          segment number
67                      0x02           0x3c            hex values
68                        023c                         hex data string
69
70  Up< pic-out <hex-bytes...>
71  Up< pic-in <hex-bytes...>
72
73  U< count <type> <number-in-decimal>
74       eg  count polarity 14
75  U< pic detect 1|0 <S>
76  U< pic point <P>
77  U< pic pointed <P>
78  U< pic charged <P>
79  U< polarity <bit-string-in-hex>....
80  U< polarised <bit-string-in-hex>....