#!/usr/bin/env python3 import dronecan from argparse import ArgumentParser import time import sys import os import base64 import zlib import struct from dronecan.introspect import value_to_constant_name, to_yaml # import logging # logging.basicConfig(level=logging.DEBUG) def main(): parser = ArgumentParser(description='dump all DroneCAN messages') parser.add_argument("--bitrate", default=1000000, type=int, help="CAN bit rate") parser.add_argument("--node-id", default=100, type=int, help="CAN node ID") parser.add_argument("--target-node-id", default=-1, type=int, help="Target CAN node ID (-1 for auto)") parser.add_argument("--dna", action='store_true', default=False, help="run dynamic node allocation server") parser.add_argument("--port", default='/dev/ttyACM0', type=str, help="serial port") parser.add_argument("--fw", default='', required=True, type=str, help="app firmware path") args = parser.parse_args() firmware_path = os.path.abspath(args.fw) # Ensure it is readable try: with open(firmware_path, 'rb') as f: f.read(100) except Exception as ex: print('Could not read file') sys.exit(1) # map file path to a hash to keep it in a single packet file_hash = base64.b64encode(struct.pack("