HAL_ChibiOS: add support for adding board validation test
This commit is contained in:
parent
8a77ddf8c6
commit
ef91f1634b
@ -24,6 +24,29 @@ PB1 PB1_ADC ADC1 SCALE(1)
|
||||
SPIDEV icm20948_ext SPI4 DEVID1 MPU_EXT_CS MODE3 4*MHZ 8*MHZ
|
||||
SPIDEV icm20602_ext SPI4 DEVID3 GYRO_EXT_CS MODE3 4*MHZ 8*MHZ
|
||||
|
||||
|
||||
# Sensor Check alias for validating board type
|
||||
CHECK_MPU9250 spi_check_register("mpu9250", MPUREG_WHOAMI, MPU_WHOAMI_MPU9250)
|
||||
CHECK_MPU9250_EXT spi_check_register("mpu9250_ext", MPUREG_WHOAMI, MPU_WHOAMI_MPU9250)
|
||||
CHECK_ICM20602_EXT spi_check_register("icm20602_ext", MPUREG_WHOAMI, MPU_WHOAMI_ICM20602)
|
||||
CHECK_LSM9DS0_EXT_G spi_check_register("lsm9ds0_ext_g", LSMREG_WHOAMI, LSM_WHOAMI_L3GD20)
|
||||
CHECK_LSM9DS0_EXT_AM spi_check_register("lsm9ds0_ext_am", LSMREG_WHOAMI, LSM_WHOAMI_LSM303D)
|
||||
CHECK_ICM20948_EXT spi_check_register("icm20948_ext", INV2REG_WHOAMI, INV2_WHOAMI_ICM20948)
|
||||
CHECK_MS5611 check_ms5611("ms5611")
|
||||
CHECK_MS5611_EXT check_ms5611("ms5611_ext")
|
||||
|
||||
# Sensor Check Macros to be used for validating board type
|
||||
CHECK_IMU0_PRESENT $CHECK_MPU9250_EXT || $CHECK_ICM20602_EXT
|
||||
CHECK_IMU1_PRESENT ($CHECK_LSM9DS0_EXT_G && $CHECK_LSM9DS0_EXT_AM) || $CHECK_ICM20948_EXT
|
||||
CHECK_IMU2_PRESENT $CHECK_MPU9250
|
||||
CHECK_BARO0_PRESENT $CHECK_MS5611
|
||||
CHECK_BARO1_PRESENT $CHECK_MS5611_EXT
|
||||
|
||||
BOARD_VALIDATE $CHECK_IMU0_PRESENT $CHECK_IMU1_PRESENT $CHECK_IMU2_PRESENT $CHECK_BARO0_PRESENT $CHECK_BARO1_PRESENT
|
||||
|
||||
# also define the default board type
|
||||
define BOARD_TYPE_DEFAULT 3
|
||||
|
||||
# three IMUs, but allow for different varients. First two IMUs are
|
||||
# isolated, 3rd isn't
|
||||
IMU Invensense SPI:mpu9250_ext ROTATION_PITCH_180
|
||||
|
@ -847,12 +847,12 @@ def write_USB_config(f):
|
||||
(USB_VID, USB_PID) = get_USB_IDs()
|
||||
f.write('#define HAL_USB_VENDOR_ID 0x%04x\n' % int(USB_VID))
|
||||
f.write('#define HAL_USB_PRODUCT_ID 0x%04x\n' % int(USB_PID))
|
||||
f.write('#define HAL_USB_STRING_MANUFACTURER "%s"\n' % get_config("USB_STRING_MANUFACTURER", default="ArduPilot"))
|
||||
f.write('#define HAL_USB_STRING_MANUFACTURER %s\n' % get_config("USB_STRING_MANUFACTURER", default="\"ArduPilot\""))
|
||||
default_product = "%BOARD%"
|
||||
if args.bootloader:
|
||||
default_product += "-BL"
|
||||
f.write('#define HAL_USB_STRING_PRODUCT "%s"\n' % get_config("USB_STRING_PRODUCT", default=default_product))
|
||||
f.write('#define HAL_USB_STRING_SERIAL "%s"\n' % get_config("USB_STRING_SERIAL", default="%SERIAL%"))
|
||||
f.write('#define HAL_USB_STRING_PRODUCT %s\n' % get_config("USB_STRING_PRODUCT", default="\"%s\""%default_product))
|
||||
f.write('#define HAL_USB_STRING_SERIAL %s\n' % get_config("USB_STRING_SERIAL", default="\"%SERIAL%\""))
|
||||
|
||||
f.write('\n\n')
|
||||
|
||||
@ -1032,6 +1032,28 @@ def write_BARO_config(f):
|
||||
if len(devlist) > 0:
|
||||
f.write('#define HAL_BARO_PROBE_LIST %s\n\n' % ';'.join(devlist))
|
||||
|
||||
def write_board_validate_macro(f):
|
||||
'''write board validation macro'''
|
||||
global config
|
||||
validate_string = ''
|
||||
validate_dict = {}
|
||||
if 'BOARD_VALIDATE' in config:
|
||||
for check in config['BOARD_VALIDATE']:
|
||||
check_name = check
|
||||
check_string = check
|
||||
while True:
|
||||
def substitute_alias(m):
|
||||
return '(' + get_config(m.group(1), spaces=True) + ')'
|
||||
output = re.sub(r'\$(\w+|\{([^}]*)\})', substitute_alias, check_string)
|
||||
if (output == check_string):
|
||||
break
|
||||
check_string = output
|
||||
validate_dict[check_name] = check_string
|
||||
# Finally create check conditional
|
||||
for check_name in validate_dict:
|
||||
validate_string += "!" + validate_dict[check_name] + "?" + "\"" + check_name + "\"" + ":"
|
||||
validate_string += "nullptr"
|
||||
f.write('#define HAL_VALIDATE_BOARD (%s)\n\n' % validate_string)
|
||||
|
||||
def get_gpio_bylabel(label):
|
||||
'''get GPIO(n) setting on a pin label, or -1'''
|
||||
@ -1624,6 +1646,7 @@ def write_hwdef_header(outfilename):
|
||||
write_IMU_config(f)
|
||||
write_MAG_config(f)
|
||||
write_BARO_config(f)
|
||||
write_board_validate_macro(f)
|
||||
|
||||
write_peripheral_enable(f)
|
||||
|
||||
@ -1843,7 +1866,7 @@ def process_line(line):
|
||||
global allpins, imu_list, compass_list, baro_list
|
||||
global mcu_type, mcu_series
|
||||
all_lines.append(line)
|
||||
a = shlex.split(line)
|
||||
a = shlex.split(line, posix=False)
|
||||
# keep all config lines for later use
|
||||
alllines.append(line)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user