Skip to content

Commit 0f9be9c

Browse files
committed
sign forwarded messages
when forwarding an unsigned message from a downstream link to an upstream link that has signing enabled then re-pack the message to sign it. This allows for tools like DroneCAN GUI tool to be used more easily
1 parent d22206a commit 0f9be9c

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

MAVProxy/mavproxy.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ def __init__(self):
256256
MPSetting('mavfwd_disarmed', bool, True, 'Allow forwarded control when disarmed'),
257257
MPSetting('mavfwd_rate', bool, False, 'Allow forwarded rate control'),
258258
MPSetting('mavfwd_link', int, -1, 'Forward to a specific link'),
259+
MPSetting('mavfwd_signing', bool, True, 'Sign forwarded messages'),
259260
MPSetting('shownoise', bool, True, 'Show non-MAVLink data'),
260261
MPSetting('baudrate', int, opts.baudrate, 'baudrate for new links', range=(0, 10000000), increment=1),
261262
MPSetting('rtscts', bool, opts.rtscts, 'enable flow control'),
@@ -902,12 +903,18 @@ def process_mavlink(slave):
902903
if allow_fwd:
903904
for m in msgs:
904905
target_sysid = getattr(m, 'target_system', -1)
905-
mbuf = m.get_msgbuf()
906906
if mpstate.settings.mavfwd_link > 0 and mpstate.settings.mavfwd_link <= len(mpstate.mav_master):
907-
mpstate.mav_master[mpstate.settings.mavfwd_link-1].write(mbuf)
907+
output = mpstate.mav_master[mpstate.settings.mavfwd_link-1]
908908
else:
909909
# find best link by sysid
910-
mpstate.master(target_sysid).write(mbuf)
910+
output = mpstate.master(target_sysid)
911+
if (mpstate.settings.mavfwd_signing and
912+
output.mav.signing.sign_outgoing and
913+
(m._header.incompat_flags & mavutil.mavlink.MAVLINK_IFLAG_SIGNED) == 0):
914+
# repack the message if this is a signed link and not already signed
915+
m.pack(output.mav)
916+
917+
output.write(m.get_msgbuf())
911918
if mpstate.logqueue:
912919
usec = int(time.time() * 1.0e6)
913920
mpstate.logqueue.put(bytearray(struct.pack('>Q', usec) + m.get_msgbuf()))

0 commit comments

Comments
 (0)