Skip to content

Commit

Permalink
Tools: base commit files to support build
Browse files Browse the repository at this point in the history
1. 633b415	Tools: add devid encode/decode
    - This helps us better understand/maintain items in the parameter files.
    - SW-159
2. 356dcf6	Tools: add SITL defaults processor (partial)
    - Also added default files for Volanti
    - SW-241
    - excludes *.parm files
3. abeb3a3	waf: process Cx SITL defaults on configure
    - SW-241
    - check for param_folder existence
  • Loading branch information
Pradeep-Carbonix committed Aug 14, 2024
1 parent 6dfc55b commit 636ea97
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 0 deletions.
27 changes: 27 additions & 0 deletions Tools/Carbonix_scripts/devid-decode.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Decode an ArduPilot device id

import argparse

parser = argparse.ArgumentParser(description='Decode a device id')
parser.add_argument('device_id', type=int, help='Device ID to decode')
args = parser.parse_args()

bus_types = {
0: 'UNKNOWN',
1: 'I2C',
2: 'SPI',
3: 'UAVCAN',
4: 'SITL',
5: 'MSP',
6: 'SERIAL',
7: 'QSPI',
}

device_id = args.device_id
bus_type = device_id & 0x7
bus = (device_id >> 3) & 0x1f
address = (device_id >> 8) & 0xff
devtype = (device_id >> 16) & 0xff

print(f"Device ID: {device_id}")
print(f"{bus_types[bus_type]}{bus}, address {address}, devtype {devtype}")
21 changes: 21 additions & 0 deletions Tools/Carbonix_scripts/devid-encode.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Encode an ArduPilot device ID

# prompt the user for the bus type
print("Bus types:")
print("0: UNKNOWN")
print("1: I2C")
print("2: SPI")
print("3: UAVCAN")
print("4: SITL")
print("5: MSP")
print("6: SERIAL")
print("7: QSPI")
bus_type = int(input("Enter the bus type (0-7): "))

# prompt the user for the bus number
bus = int(input("Enter the bus number (0-31): "))
address = int(input("Enter the address (0-255): "))
devtype = int(input("Enter the device type (0-255): "))
device_id = bus_type | (bus << 3) | (address << 8) | (devtype << 16)

print(f"Device ID: {device_id}")
55 changes: 55 additions & 0 deletions Tools/Carbonix_scripts/process_sitl_defaults.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/usr/bin/env python
# encoding: utf-8

'''
Build SITL default parameter files for use with SITL launcher
'''

import os
import re
import fnmatch
import argparse


def main():
parser = argparse.ArgumentParser(description='Build SITL default parameter files')
parser.add_argument('input_file', help='Input file to process')
parser.add_argument('output_file', help='Output file to write to')
args = parser.parse_args()

defaults = process_defaults(args.input_file)
with open(args.output_file, "w") as f:
f.write("\n".join(defaults))


def process_defaults(file, depth=0):
if depth > 10:
raise Exception("Too many levels of @include")

param_list = []
with open(file, "r") as f:
lines = f.read().splitlines()
for line in lines:
if line.startswith("@include"):
rel_path = line.split(maxsplit=1)[1]
path = os.path.join(os.path.dirname(file), rel_path)
param_list.extend(
process_defaults(path, depth + 1)
)
continue

if line.startswith("@delete"):
pattern = line.split(maxsplit=1)[1]
for i in range(len(param_list)):
param_name = re.split(r"[\s,]+", param_list[i])[0]
if fnmatch.fnmatch(param_name, pattern):
param_list[i] = "#deleted " + param_list[i]
line = "#" + line

param_list.append(line)

return param_list


if __name__ == "__main__":
main()
20 changes: 20 additions & 0 deletions wscript
Original file line number Diff line number Diff line change
Expand Up @@ -465,6 +465,26 @@ def configure(cfg):
if cfg.options.board is None:
cfg.options.board = 'sitl'

# Loop through all .parm files in libraries/AP_HAL_ChibiOS/hwdef/CarbonixCommon/sitl_params/
param_folder = 'libraries/AP_HAL_ChibiOS/hwdef/CarbonixCommon/sitl_params/'
if cfg.options.board == 'sitl' and os.path.exists(param_folder):
for file in os.listdir(param_folder):
if not file.endswith('.parm'):
continue

# make build/sitl directory if it doesn't exist
if not os.path.exists('build'):
os.makedirs('build')
if not os.path.exists('build/sitl'):
os.makedirs('build/sitl')

in_file = os.path.join(param_folder, file)
out_file = os.path.join('build/sitl', file)

# Call Tools/Carbonix_scripts/process_sitl_defaults.py $in_file $out_file
cfg.msg('Processing default parameters', file)
subprocess.run(['Tools/Carbonix_scripts/process_sitl_defaults.py', in_file, out_file])

boards_names = boards.get_boards_names()
if not cfg.options.board in boards_names:
for b in boards_names:
Expand Down

0 comments on commit 636ea97

Please sign in to comment.