diff --git a/dronecan/driver/common.py b/dronecan/driver/common.py index 171f019..184f6f0 100644 --- a/dronecan/driver/common.py +++ b/dronecan/driver/common.py @@ -158,6 +158,10 @@ def set_signing_passphrase(self, passphrase): '''set MAVLink2 signing passphrase''' pass + def set_parameter(self, name, value): + '''set parameter on the remote device''' + pass + def stream_progress(self): '''stream progress of the current stream''' pass diff --git a/dronecan/driver/mavcan.py b/dronecan/driver/mavcan.py index 4f0b9bf..a52eeec 100644 --- a/dronecan/driver/mavcan.py +++ b/dronecan/driver/mavcan.py @@ -119,6 +119,8 @@ def handle_control_message(m): nonlocal signing_key signing_key = m.data conn.setup_signing(signing_key, sign_outgoing=True) + elif m.command == "SetParam": + conn.param_set_send(m.data[0], m.data[1]) connect() enable_can_forward() @@ -282,6 +284,13 @@ def get_filter_list(self): '''get the current filter list''' return self.filter_list + def set_parameter(self, name, value): + '''set parameter in the remote air vehicle''' + if len(name) > 16: + raise DriverError('Parameter name %s too long' % name) + + self.tx_queue.put_nowait(ControlMessage('SetParam', (name, value))) + def passphrase_to_key(self, passphrase): '''convert a passphrase to a 32 byte key''' import hashlib