Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste Überarbeitung Beide Seiten der Revision | ||
dapnetprotocol [2018/10/16 21:49] df2et |
dapnetprotocol [2018/10/17 11:02] df2et |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Protocol for Connection of Transmitters ====== | ====== Protocol for Connection of Transmitters ====== | ||
- | Connection for transmitters is based on a simple cleartext TCP protocol. A tcpdump looks like: | + | Connection for transmitters is based on a simple cleartext TCP protocol. A tcpdump of a connection is shown below. Comments are inserted in italic where applicable. \\ |
+ | <color #ed1c24>Red color denotes what is sent to the master.</color> \\ | ||
+ | <color #7092be>Blue color shows answers received from the master.</color> | ||
+ | |||
+ | ---- | ||
<color #ed1c24>[UniPager-Raspager1 v1.0.3 df2et ThisIsAReallyGoodPassword]</color> \\ | <color #ed1c24>[UniPager-Raspager1 v1.0.3 df2et ThisIsAReallyGoodPassword]</color> \\ | ||
+ | |||
+ | //First you have to send the name of your software, a version string starting with "v", the callsign of the transmitter and your AuthKey. Remember that this is not the user account but an account for a transmitter. // | ||
+ | |||
<color #7092be>2:6116</color> \\ | <color #7092be>2:6116</color> \\ | ||
+ | |||
+ | //The master answers with a random value. The next five steps were originally designed to calculate the time offset between master and slave to determine the correct time slots. In the current implementation this is not needed because clients are NTP synced.// | ||
+ | |||
<color #ed1c24>2:6116:0000</color> \\ | <color #ed1c24>2:6116:0000</color> \\ | ||
<color #ed1c24>+ </color> \\ | <color #ed1c24>+ </color> \\ | ||
+ | |||
+ | //So we answer by repeating what the master sent and adding ":0000" as offset. Transmission end is indicated by a "+".// | ||
+ | |||
<color #7092be>2:6118</color> \\ | <color #7092be>2:6118</color> \\ | ||
<color #ed1c24>2:6118:0000</color> \\ | <color #ed1c24>2:6118:0000</color> \\ | ||
<color #ed1c24>+</color> \\ | <color #ed1c24>+</color> \\ | ||
+ | |||
+ | //The same procedure happens a second time ...// | ||
+ | |||
<color #7092be>2:611A</color> \\ | <color #7092be>2:611A</color> \\ | ||
<color #ed1c24>2:611A:0000</color> \\ | <color #ed1c24>2:611A:0000</color> \\ | ||
<color #ed1c24>+</color> \\ | <color #ed1c24>+</color> \\ | ||
+ | |||
+ | //... a third time ...// | ||
+ | |||
<color #7092be>2:611B</color> \\ | <color #7092be>2:611B</color> \\ | ||
<color #ed1c24>2:611B:0000</color> \\ | <color #ed1c24>2:611B:0000</color> \\ | ||
<color #ed1c24>+</color> \\ | <color #ed1c24>+</color> \\ | ||
+ | |||
+ | //... four ...// | ||
+ | |||
<color #7092be>2:611D</color> \\ | <color #7092be>2:611D</color> \\ | ||
<color #ed1c24>2:611D:0000</color> \\ | <color #ed1c24>2:611D:0000</color> \\ | ||
<color #ed1c24>+</color> \\ | <color #ed1c24>+</color> \\ | ||
+ | |||
+ | // ... and done. // | ||
+ | |||
<color #7092be>3:+611A</color> \\ | <color #7092be>3:+611A</color> \\ | ||
<color #ed1c24>+</color> \\ | <color #ed1c24>+</color> \\ | ||
+ | |||
+ | // If the master answered with the first number before the ":" increased it is going to tell us which time slots we are allowed to use on the next transmission.// | ||
+ | |||
<color #7092be>4:0189</color> \\ | <color #7092be>4:0189</color> \\ | ||
<color #ed1c24>+</color> \\ | <color #ed1c24>+</color> \\ | ||
+ | |||
+ | //In this case we got 4 (of 16 time slots): 0, 1, 8 and 9. From here on the master will send out information about incoming calls.// | ||
+ | |||
<color #7092be>#00 6:1:3EC:3:5357.0 EA5FIV von DL4MFF um 1933z</color> \\ | <color #7092be>#00 6:1:3EC:3:5357.0 EA5FIV von DL4MFF um 1933z</color> \\ | ||
<color #ed1c24>#01 +</color> \\ | <color #ed1c24>#01 +</color> \\ | ||
+ | |||
+ | //This is the first call. The master sent "#00" which we have to confirm by increasing by one -> "#:01 +". The rest of the line is as follows (values separated by a ":"): // | ||
+ | * ''6'' //is blabla// | ||
+ | * ''1'' //is blabla// | ||
+ | * ''3EC'' //is the RIC/CAP code that the message is intended for. It is the hexadecimal representation of the decimal value 1004 in this case.// | ||
+ | * ''3'' //is the function bit or sub RIC that the message is addressed to.// | ||
+ | * ''5357.0 EA5FIV von DL4MFF um 1933z'' //The rest of the line is the content of the message (an information of the DX cluster here).// | ||
+ | |||
<color #7092be>#01 6:1:11A8:3:#"6468/1!FB6GJW!!!!!!!wpo!EM5NGG!vn!2:44{</color> \\ | <color #7092be>#01 6:1:11A8:3:#"6468/1!FB6GJW!!!!!!!wpo!EM5NGG!vn!2:44{</color> \\ | ||
<color #ed1c24>#02 +</color> \\ | <color #ed1c24>#02 +</color> \\ | ||
Zeile 35: | Zeile 74: | ||
<color #7092be>#05 6:1:11A8:3:'#8122/1!PF211CLD!!!!!wpo!PF4CLD!vn!2:44{</color> \\ | <color #7092be>#05 6:1:11A8:3:'#8122/1!PF211CLD!!!!!wpo!PF4CLD!vn!2:44{</color> \\ | ||
<color #ed1c24>#06 +</color> \\ | <color #ed1c24>#06 +</color> \\ | ||
+ | |||
+ | //This is a message to the rubrics content of Skyper pagers. It is adressed to RIC 4520 function 3 and the content is ROT-1 encoded.// | ||
+ | |||
<color #7092be>#06 6:1:1B050:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die</color> \\ | <color #7092be>#06 6:1:1B050:3:Edingen-Neckarhausen Entwarnung: Brand in einer Trafostation 21:33 Dies ist die</color> \\ | ||
<color #ed1c24>#07 +</color> \\ | <color #ed1c24>#07 +</color> \\ | ||
Zeile 83: | Zeile 125: | ||
<color #7092be>#1D 5:1:9C8:0:193500 161018</color> \\ | <color #7092be>#1D 5:1:9C8:0:193500 161018</color> \\ | ||
<color #ed1c24>#1e +</color> \\ | <color #ed1c24>#1e +</color> \\ | ||
+ | |||
+ | //This is a time synchronization call for Skypers. Adressed to RIC 2504 function 0 and contains time and date.// | ||
+ | |||
<color #7092be>#1E 6:1:287E0:3:XTIME=1935161018XTIME=1935161018</color> \\ | <color #7092be>#1E 6:1:287E0:3:XTIME=1935161018XTIME=1935161018</color> \\ | ||
<color #ed1c24>#1f +</color> \\ | <color #ed1c24>#1f +</color> \\ | ||
+ | |||
+ | //This is a time synchronization call for Swissphone pagers.// | ||
+ | |||
<color #7092be>#1F 6:1:287EA:3:YYYYMMDDHHMMSS181016193500</color> \\ | <color #7092be>#1F 6:1:287EA:3:YYYYMMDDHHMMSS181016193500</color> \\ | ||
<color #ed1c24>#20 +</color> \\ | <color #ed1c24>#20 +</color> \\ | ||
+ | |||
+ | //This is a time synchronization call for AlphaPoc pagers.// | ||
+ | |||
<color #7092be>#20 6:1:3EC:3:7088.0 OE100OE von ON4AZP um 1935z</color> \\ | <color #7092be>#20 6:1:3EC:3:7088.0 OE100OE von ON4AZP um 1935z</color> \\ | ||
<color #ed1c24>#21 +</color> \\ | <color #ed1c24>#21 +</color> \\ | ||
Zeile 99: | Zeile 150: | ||
<color #7092be>#25 6:1:11A8:3:'$8114/1!UB2QC!!!!!!!!wpo!TQ9BSZ!vn!2:46{</color> \\ | <color #7092be>#25 6:1:11A8:3:'$8114/1!UB2QC!!!!!!!!wpo!TQ9BSZ!vn!2:46{</color> \\ | ||
<color #ed1c24>#26 +</color> \\ | <color #ed1c24>#26 +</color> \\ | ||
+ | |||
+ | The client initiates a TCP connection to one node of the masters on port 43434. Login and AuthKey need to be available. So you may need to register a transmitter beforehand. |