mirror of https://github.com/ArduPilot/ardupilot
HAL_ChibiOS: support I2C sensor probes by bus mask
This commit is contained in:
parent
fc1ec8a465
commit
03bb94599b
|
@ -776,26 +776,33 @@ def parse_i2c_device(dev):
|
|||
a = dev.split(':')
|
||||
if len(a) != 3:
|
||||
error("Bad I2C device: %s" % dev)
|
||||
busnum = int(a[1])
|
||||
busaddr = int(a[2],base=0)
|
||||
return 'hal.i2c_mgr->get_device(%u,0x%02x)' % (busnum, busaddr)
|
||||
if a[1] == 'ALL_EXTERNAL':
|
||||
return ('FOREACH_I2C_EXTERNAL(b)', 'hal.i2c_mgr->get_device(b,0x%02x)' % (busaddr))
|
||||
elif a[1] == 'ALL_INTERNAL':
|
||||
return ('FOREACH_I2C_INTERNAL(b)', 'hal.i2c_mgr->get_device(b,0x%02x)' % (busaddr))
|
||||
elif a[1] == 'ALL':
|
||||
return ('FOREACH_I2C(b)', 'hal.i2c_mgr->get_device(b,0x%02x)' % (busaddr))
|
||||
busnum = int(a[1])
|
||||
return ('', 'hal.i2c_mgr->get_device(%u,0x%02x)' % (busnum, busaddr))
|
||||
|
||||
def write_IMU_config(f):
|
||||
'''write IMU config defines'''
|
||||
global imu_list
|
||||
devlist = []
|
||||
wrapper = ''
|
||||
for dev in imu_list:
|
||||
driver = dev[0]
|
||||
for i in range(1,len(dev)):
|
||||
if dev[i].startswith("SPI:"):
|
||||
dev[i] = parse_spi_device(dev[i])
|
||||
elif dev[i].startswith("I2C:"):
|
||||
dev[i] = parse_i2c_device(dev[i])
|
||||
(wrapper, dev[i]) = parse_i2c_device(dev[i])
|
||||
n = len(devlist)+1
|
||||
devlist.append('HAL_INS_PROBE%u' % n)
|
||||
f.write(
|
||||
'#define HAL_INS_PROBE%u ADD_BACKEND(AP_InertialSensor_%s::probe(*this,%s))\n'
|
||||
% (n, driver, ','.join(dev[1:])))
|
||||
'#define HAL_INS_PROBE%u %s ADD_BACKEND(AP_InertialSensor_%s::probe(*this,%s))\n'
|
||||
% (n, wrapper, driver, ','.join(dev[1:])))
|
||||
if len(devlist) > 0:
|
||||
f.write('#define HAL_INS_PROBE_LIST %s\n\n' % ';'.join(devlist))
|
||||
|
||||
|
@ -806,6 +813,7 @@ def write_MAG_config(f):
|
|||
for dev in compass_list:
|
||||
driver = dev[0]
|
||||
probe = 'probe'
|
||||
wrapper = ''
|
||||
a = driver.split(':')
|
||||
driver = a[0]
|
||||
if len(a) > 1 and a[1].startswith('probe'):
|
||||
|
@ -814,12 +822,12 @@ def write_MAG_config(f):
|
|||
if dev[i].startswith("SPI:"):
|
||||
dev[i] = parse_spi_device(dev[i])
|
||||
elif dev[i].startswith("I2C:"):
|
||||
dev[i] = parse_i2c_device(dev[i])
|
||||
(wrapper, dev[i]) = parse_i2c_device(dev[i])
|
||||
n = len(devlist)+1
|
||||
devlist.append('HAL_MAG_PROBE%u' % n)
|
||||
f.write(
|
||||
'#define HAL_MAG_PROBE%u ADD_BACKEND(DRIVER_%s, AP_Compass_%s::%s(%s))\n'
|
||||
% (n, driver, driver, probe, ','.join(dev[1:])))
|
||||
'#define HAL_MAG_PROBE%u %s ADD_BACKEND(DRIVER_%s, AP_Compass_%s::%s(%s))\n'
|
||||
% (n, wrapper, driver, driver, probe, ','.join(dev[1:])))
|
||||
if len(devlist) > 0:
|
||||
f.write('#define HAL_MAG_PROBE_LIST %s\n\n' % ';'.join(devlist))
|
||||
|
||||
|
@ -830,6 +838,7 @@ def write_BARO_config(f):
|
|||
for dev in baro_list:
|
||||
driver = dev[0]
|
||||
probe = 'probe'
|
||||
wrapper = ''
|
||||
a = driver.split(':')
|
||||
driver = a[0]
|
||||
if len(a) > 1 and a[1].startswith('probe'):
|
||||
|
@ -838,14 +847,14 @@ def write_BARO_config(f):
|
|||
if dev[i].startswith("SPI:"):
|
||||
dev[i] = parse_spi_device(dev[i])
|
||||
elif dev[i].startswith("I2C:"):
|
||||
dev[i] = parse_i2c_device(dev[i])
|
||||
(wrapper, dev[i]) = parse_i2c_device(dev[i])
|
||||
if dev[i].startswith('hal.i2c_mgr'):
|
||||
dev[i] = 'std::move(%s)' % dev[i]
|
||||
n = len(devlist)+1
|
||||
devlist.append('HAL_BARO_PROBE%u' % n)
|
||||
f.write(
|
||||
'#define HAL_BARO_PROBE%u ADD_BACKEND(AP_Baro_%s::%s(*this,%s))\n'
|
||||
% (n, driver, probe, ','.join(dev[1:])))
|
||||
'#define HAL_BARO_PROBE%u %s ADD_BACKEND(AP_Baro_%s::%s(*this,%s))\n'
|
||||
% (n, wrapper, driver, probe, ','.join(dev[1:])))
|
||||
if len(devlist) > 0:
|
||||
f.write('#define HAL_BARO_PROBE_LIST %s\n\n' % ';'.join(devlist))
|
||||
|
||||
|
|
Loading…
Reference in New Issue