50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
|
#!/usr/bin/env python
|
||
|
'''
|
||
|
extract non-default parameters for publishing
|
||
|
'''
|
||
|
|
||
|
from pymavlink import mavparm
|
||
|
import fnmatch
|
||
|
|
||
|
from argparse import ArgumentParser
|
||
|
parser = ArgumentParser(description=__doc__)
|
||
|
parser.add_argument("defaults", metavar="defaults")
|
||
|
parser.add_argument("params", metavar="params")
|
||
|
|
||
|
args = parser.parse_args()
|
||
|
|
||
|
p1 = mavparm.MAVParmDict()
|
||
|
p2 = mavparm.MAVParmDict()
|
||
|
p1.load(args.defaults)
|
||
|
p2.load(args.params)
|
||
|
|
||
|
include_list = [ 'Q_ENABLE', 'Q_FRAME*', 'INS_HN*' ]
|
||
|
exclude_list = [ 'AHRS_TRIM*', 'RC[0-9]*', 'BARO*', 'INS*',
|
||
|
'COMPASS*', 'ARMING_*', '*DEVID', 'ARSPD_TYPE', 'ARSPD_RATIO',
|
||
|
'ADSB*', 'FLTMODE*', 'EK3*', 'ARSPD_PIN', 'ARSPD_USE', 'ARSPD_OPTIONS', '*WIND*',
|
||
|
'AVD*', 'BATT*', 'BRD*', 'CAN*', 'CRASH*', 'FS*', 'THR_FS*', '*NODEID*', 'GPS*', 'LGR*',
|
||
|
'NTF*', 'ONESH*', 'FENCE*', 'FOLL*', 'Q_AUTOTUNE*', 'Q_OPTIONS', 'RC_OPTIONS',
|
||
|
'RELAY*', 'RNGFND*', 'RSSI*', 'SCR*', 'SERIAL*', 'SR[0-9]*', 'STAT*']
|
||
|
|
||
|
def in_list(p, lst):
|
||
|
for e in lst:
|
||
|
if fnmatch.fnmatch(p, e):
|
||
|
return True
|
||
|
return False
|
||
|
|
||
|
def vstring(v):
|
||
|
s = str(v)
|
||
|
if s.find('.'):
|
||
|
while s[-1] == '0':
|
||
|
s = s[:-1]
|
||
|
if s[-1] == '.':
|
||
|
s = s[:-1]
|
||
|
return s
|
||
|
|
||
|
for p in p2:
|
||
|
if in_list(p, exclude_list) and not in_list(p, include_list):
|
||
|
continue
|
||
|
if not p in p1 or (p1[p] == p2[p] and not in_list(p, include_list)):
|
||
|
continue
|
||
|
print("%-16s %s" % (p, vstring(p2[p])))
|