Skip to content

Commit c4b3ab8

Browse files
committed
Added the possibility to inject RTCM 1008 messages
1 parent c2001f9 commit c4b3ab8

File tree

4 files changed

+50
-0
lines changed

4 files changed

+50
-0
lines changed

README.md

+7
Original file line numberDiff line numberDiff line change
@@ -177,3 +177,10 @@ Falls die Baudrate geändert wird , muss wie oben beschrieben der Service `baseP
177177
neuen Baudrate gestartet werden. Wenn es nur temporär ist, müssen die Kommandos mit `systemctl enable ...` und `systemctl disable ...`
178178
nicht eingegeben werden.
179179

180+
# RTCM 1008
181+
182+
Wenn bestimmte Empfänger verwendet werden (z.B. Trimble), müssen leere RTCM-1008-Nachrichten in den Datenstrom eingefügt werden, falls
183+
diese nicht vom GPS-Empfänger selbst erstellt werden. Wenn dies gewünscht ist, muss anstatt von ```str2str.service```
184+
```str2str-injectrtcm1008.service``` ausgeführt und aktiviert werden. Der Rest bleibt gleich. Nachzulesen unter diesem
185+
[Link](https://www.thecombineforum.com/forums/31-technology/331721-how-use-zed-f9p-base-station-trimble.html)
186+

rtcmadd1008.py

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/python3
2+
3+
import sys
4+
5+
while True:
6+
data = sys.stdin.buffer.read(1)
7+
while (data != b'\xd3'):
8+
data = sys.stdin.buffer.read(1)
9+
10+
length_data = sys.stdin.buffer.read(2)
11+
length = (length_data[0] << 8) + length_data[1]
12+
packet_data = sys.stdin.buffer.read(length)
13+
crc24_data = sys.stdin.buffer.read(3)
14+
15+
message_number = (packet_data[0] << 8) + packet_data[1]
16+
message_number >>= 4
17+
18+
sys.stdout.buffer.write(b'\xd3')
19+
sys.stdout.buffer.write(length_data)
20+
sys.stdout.buffer.write(packet_data)
21+
sys.stdout.buffer.write(crc24_data)
22+
sys.stdout.flush()
23+
24+
if message_number == 1005:
25+
# blank 1008 message for Trimble
26+
sys.stdout.buffer.write(bytes([0xd3,0x00,0x06,0x3f,0x00,0x00,0x00,0x00,0x00,0x99,0x25,0xca]))
27+
28+
sys.stdout.flush()

str2str-injectrtcm1008.service

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[Unit]
2+
Description=str2str with RTCM 1008 injected
3+
After=network.target
4+
After=ntripcaster.service
5+
6+
[Service]
7+
Type=simple
8+
Restart=always
9+
ExecStart=/bin/bash -c "/usr/bin/socat TCP:localhost:2102 - | /usr/bin/python3 /usr/local/bin/rtcmadd1008.py | /usr/local/bin/str2str -out ntrips://:gps@localhost:2101/STALL"
10+
11+
[Install]
12+
WantedBy=multi-user.target
13+

update.sh

+2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
cp ntripcaster.conf /usr/local/ntripcaster/
44
cp ntripcaster.logrotate /usr/local/ntripcaster/
55
cp m8t_base.cmd /usr/local/ntripcaster/
6+
cp trimbleadd1008.py /usr/local/bin/
67

78
cp *.service *.timer /etc/systemd/system
89
systemctl daemon-reload
910

1011
systemctl try-restart ntripcaster.service
1112
systemctl try-restart str2str.service
1213
systemctl try-restart str2str-M8T.service
14+
systemctl try-restart str2str-injectrtcm1008.service
1315
systemctl try-restart logrotate-ntripcaster.timer
1416

0 commit comments

Comments
 (0)