mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-02-28 18:53:57 -04:00
AP_HAL: add and use linux_hwdef.py
like chibios_hwdef.py - but for Linux
This commit is contained in:
parent
d31889854c
commit
7ce9ec2c61
@ -1,5 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <hwdef.h>
|
||||||
|
|
||||||
#define HAL_BOARD_NAME "Linux"
|
#define HAL_BOARD_NAME "Linux"
|
||||||
#define HAL_CPU_CLASS HAL_CPU_CLASS_1000
|
#define HAL_CPU_CLASS HAL_CPU_CLASS_1000
|
||||||
#define HAL_MEM_CLASS HAL_MEM_CLASS_1000
|
#define HAL_MEM_CLASS HAL_MEM_CLASS_1000
|
||||||
@ -22,15 +24,8 @@
|
|||||||
#define PROBE_MAG_IMU_I2C(driver, imudev, bus, addr, args ...) ADD_BACKEND(DRIVER_ ##driver, AP_Compass_ ## driver::probe_ ## imudev(GET_I2C_DEVICE(bus,addr),##args))
|
#define PROBE_MAG_IMU_I2C(driver, imudev, bus, addr, args ...) ADD_BACKEND(DRIVER_ ##driver, AP_Compass_ ## driver::probe_ ## imudev(GET_I2C_DEVICE(bus,addr),##args))
|
||||||
|
|
||||||
#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NONE
|
#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NONE
|
||||||
#define HAL_BOARD_LOG_DIRECTORY "logs"
|
// nothing to do here
|
||||||
#define HAL_BOARD_TERRAIN_DIRECTORY "terrain"
|
|
||||||
#define HAL_BOARD_STORAGE_DIRECTORY "."
|
|
||||||
#define HAL_INS_DEFAULT HAL_INS_NONE
|
|
||||||
#define HAL_BARO_DEFAULT HAL_BARO_NONE
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBOARD
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBOARD
|
||||||
#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF
|
|
||||||
#define AP_NOTIFY_TONEALARM_ENABLED 1
|
|
||||||
#endif
|
|
||||||
#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF
|
#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_ROLL_180_YAW_270)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_ROLL_180_YAW_270)
|
||||||
#else
|
#else
|
||||||
@ -39,140 +34,41 @@
|
|||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
#define AP_NOTIFY_GPIO_LED_3_ENABLED 1
|
|
||||||
#define HAL_GPIO_A_LED_PIN 61
|
|
||||||
#define HAL_GPIO_B_LED_PIN 48
|
|
||||||
#define HAL_GPIO_C_LED_PIN 117
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP
|
||||||
#define HAL_BOARD_LOG_DIRECTORY "/data/ftp/internal_000/ardupilot/logs"
|
|
||||||
#define HAL_BOARD_TERRAIN_DIRECTORY "/data/ftp/internal_000/ardupilot/terrain"
|
|
||||||
#define HAL_BOARD_STORAGE_DIRECTORY "/data/ftp/internal_000/ardupilot"
|
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_I2C(Invensense, 2, 0x68, ROTATION_YAW_270)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_I2C(Invensense, 2, 0x68, ROTATION_YAW_270)
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_I2C(AK8963, 1, 0x0d, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_I2C(AK8963, 1, 0x0d, ROTATION_NONE)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77, AP_Baro_MS56XX::BARO_MS5607)
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77, AP_Baro_MS56XX::BARO_MS5607)
|
||||||
#define HAL_HAVE_IMU_HEATER 1
|
|
||||||
#define HAL_IMU_TEMP_DEFAULT 55
|
|
||||||
#define HAL_UTILS_HEAT HAL_LINUX_HEAT_PWM
|
|
||||||
#define HAL_LINUX_HEAT_PWM_NUM 6
|
|
||||||
#define HAL_LINUX_HEAT_KP 20000
|
|
||||||
#define HAL_LINUX_HEAT_KI 6
|
|
||||||
#define HAL_LINUX_HEAT_PERIOD_NS 125000
|
|
||||||
#define HAL_LINUX_HEAT_TARGET_TEMP 50
|
|
||||||
#define BEBOP_CAMV_PWM 9
|
|
||||||
#define BEBOP_CAMV_PWM_FREQ 43333333
|
|
||||||
#define OPTICAL_FLOW_TYPE_DEFAULT Type::BEBOP
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_VDEV_PATH "/dev/video0"
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_SUBDEV_PATH "/dev/v4l-subdev0"
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_SENSOR_WIDTH 320
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_SENSOR_HEIGHT 240
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_OUTPUT_WIDTH 64
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_OUTPUT_HEIGHT 64
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_CROP_WIDTH 240
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_CROP_HEIGHT 240
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_NBUFS 8
|
|
||||||
#define HAL_FLOW_PX4_MAX_FLOW_PIXEL 4
|
|
||||||
#define HAL_FLOW_PX4_BOTTOM_FLOW_FEATURE_THRESHOLD 30
|
|
||||||
#define HAL_FLOW_PX4_BOTTOM_FLOW_VALUE_THRESHOLD 5000
|
|
||||||
#define HAL_PARAM_DEFAULTS_PATH "/data/ftp/internal_000/ardupilot/bebop.parm"
|
|
||||||
#define HAL_RCOUT_BEBOP_BLDC_I2C_BUS 1
|
|
||||||
#define HAL_RCOUT_BEBOP_BLDC_I2C_ADDR 0x08
|
|
||||||
/* focal length 2.21mm pixel size 3.6 um, 2x binning in each direction
|
|
||||||
* 240x240 crop rescaled to 64x64 */
|
|
||||||
#define HAL_FLOW_PX4_FOCAL_LENGTH_MILLIPX (2.21 / (3.6 * 2.0 * 240 / 64))
|
|
||||||
#define HAL_RANGEFINDER_LIGHTWARE_I2C_BUS 0
|
|
||||||
#define HAL_BATT_MONITOR_DEFAULT AP_BattMonitor::Type::BEBOP
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_VNAV
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_VNAV
|
||||||
// linux SBC with VectorNav AHRS
|
// nothing to do here
|
||||||
#define HAL_EXTERNAL_AHRS_DEFAULT 1
|
|
||||||
#define DEFAULT_SERIAL3_PROTOCOL 36
|
|
||||||
#define HAL_AIRSPEED_TYPE_DEFAULT 0
|
|
||||||
#define HAL_GPS1_TYPE_DEFAULT 21
|
|
||||||
#define HAL_AHRS_EKF_TYPE_DEFAULT 11
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DISCO
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DISCO
|
||||||
#define HAL_BOARD_LOG_DIRECTORY "/data/ftp/internal_000/ardupilot/logs"
|
|
||||||
#define HAL_BOARD_TERRAIN_DIRECTORY "/data/ftp/internal_000/ardupilot/terrain"
|
|
||||||
#define HAL_BOARD_STORAGE_DIRECTORY "/data/ftp/internal_000/ardupilot"
|
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_I2C(Invensense, 2, 0x68, ROTATION_PITCH_180_YAW_90)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_I2C(Invensense, 2, 0x68, ROTATION_PITCH_180_YAW_90)
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_I2C(AK8963, 1, 0x0d, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_I2C(AK8963, 1, 0x0d, ROTATION_NONE)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77, AP_Baro_MS56XX::BARO_MS5607)
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77, AP_Baro_MS56XX::BARO_MS5607)
|
||||||
#define HAL_UTILS_HEAT HAL_LINUX_HEAT_PWM
|
|
||||||
#define HAL_LINUX_HEAT_PWM_NUM 10
|
|
||||||
#define HAL_LINUX_HEAT_KP 20000
|
|
||||||
#define HAL_LINUX_HEAT_KI 6
|
|
||||||
#define HAL_LINUX_HEAT_PERIOD_NS 125000
|
|
||||||
#define HAL_LINUX_HEAT_TARGET_TEMP 50
|
|
||||||
#define BEBOP_CAMV_PWM 9
|
|
||||||
#define BEBOP_CAMV_PWM_FREQ 43333333
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_VDEV_PATH "/dev/video0"
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_SUBDEV_PATH "/dev/v4l-subdev0"
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_SENSOR_WIDTH 320
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_SENSOR_HEIGHT 240
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_OUTPUT_WIDTH 64
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_OUTPUT_HEIGHT 64
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_CROP_WIDTH 240
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_CROP_HEIGHT 240
|
|
||||||
#define HAL_OPTFLOW_ONBOARD_NBUFS 8
|
|
||||||
#define HAL_FLOW_PX4_MAX_FLOW_PIXEL 4
|
|
||||||
#define HAL_FLOW_PX4_BOTTOM_FLOW_FEATURE_THRESHOLD 30
|
|
||||||
#define HAL_FLOW_PX4_BOTTOM_FLOW_VALUE_THRESHOLD 5000
|
|
||||||
#define HAL_RCOUT_DISCO_BLDC_I2C_BUS 1
|
|
||||||
#define HAL_RCOUT_DISCO_BLDC_I2C_ADDR 0x08
|
|
||||||
#define HAL_PARAM_DEFAULTS_PATH "/data/ftp/internal_000/ardupilot/disco.parm"
|
|
||||||
/* focal length 2.21mm pixel size 3.6 um, 2x binning in each direction
|
|
||||||
* 240x240 crop rescaled to 64x64 */
|
|
||||||
#define HAL_FLOW_PX4_FOCAL_LENGTH_MILLIPX (2.21 / (3.6 * 2.0 * 240 / 64))
|
|
||||||
#define HAL_RANGEFINDER_LIGHTWARE_I2C_BUS 0
|
|
||||||
// the disco has challenges with its magnetic setup
|
|
||||||
#define AP_COMPASS_OFFSETS_MAX_DEFAULT 2200
|
|
||||||
#define HAL_BATT_MONITOR_DEFAULT AP_BattMonitor::Type::BEBOP
|
|
||||||
#define HAL_GPIO_SCRIPT "/data/ftp/internal_000/ardupilot/gpio.sh"
|
|
||||||
#define AP_NOTIFY_DISCO_LED_ENABLED 1
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO
|
||||||
#define AP_NOTIFY_GPIO_LED_3_ENABLED 1
|
|
||||||
#define HAL_GPIO_A_LED_PIN 0
|
|
||||||
#define HAL_GPIO_B_LED_PIN 1
|
|
||||||
#define HAL_GPIO_C_LED_PIN 2
|
|
||||||
#define HAL_GPIO_LED_ON 1
|
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77)
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77)
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2
|
||||||
#define HAL_HAVE_SERVO_VOLTAGE 1
|
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77)
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77)
|
||||||
#define HAL_MAG_PROBE1 PROBE_MAG_SPI(LSM9DS1, "lsm9ds1_m", ROTATION_ROLL_180)
|
#define HAL_MAG_PROBE1 PROBE_MAG_SPI(LSM9DS1, "lsm9ds1_m", ROTATION_ROLL_180)
|
||||||
#define HAL_MAG_PROBE2 PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
#define HAL_MAG_PROBE2 PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
||||||
#define HAL_MAG_PROBE_LIST HAL_MAG_PROBE1; HAL_MAG_PROBE2
|
#define HAL_MAG_PROBE_LIST HAL_MAG_PROBE1; HAL_MAG_PROBE2
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
#define AP_NOTIFY_SYSFS_LED_ENABLED 1
|
|
||||||
#define AP_RCPROTOCOL_EMLID_RCIO_ENABLED 1
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBRAIN2
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBRAIN2
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_YAW_270)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_YAW_270)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
#define AP_NOTIFY_GPIO_LED_3_ENABLED 1
|
|
||||||
#define HAL_GPIO_A_LED_PIN 24
|
|
||||||
#define HAL_GPIO_B_LED_PIN 25
|
|
||||||
#define HAL_GPIO_C_LED_PIN 16
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ZYNQ
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ZYNQ
|
||||||
// Stub the sensors out for now, at least we can build and run
|
// nothing to do here
|
||||||
#define HAL_INS_DEFAULT HAL_INS_NONE
|
|
||||||
#define HAL_BARO_DEFAULT HAL_BARO_NONE
|
|
||||||
// only external compasses
|
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI
|
||||||
#define AP_NOTIFY_GPIO_LED_3_ENABLED 1
|
|
||||||
#define HAL_GPIO_A_LED_PIN 69
|
|
||||||
#define HAL_GPIO_B_LED_PIN 68
|
|
||||||
#define HAL_GPIO_C_LED_PIN 45
|
|
||||||
#define HAL_BUZZER_PIN 11
|
|
||||||
#define HAL_INS_PROBE1 PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
#define HAL_INS_PROBE1 PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
||||||
#define HAL_INS_PROBE2 PROBE_IMU_SPI(Invensense, "mpu9250ext", ROTATION_NONE)
|
#define HAL_INS_PROBE2 PROBE_IMU_SPI(Invensense, "mpu9250ext", ROTATION_NONE)
|
||||||
#define HAL_INS_PROBE_LIST HAL_INS_PROBE1; HAL_INS_PROBE2
|
#define HAL_INS_PROBE_LIST HAL_INS_PROBE1; HAL_INS_PROBE2
|
||||||
@ -181,9 +77,6 @@
|
|||||||
#define HAL_MAG_PROBE2 PROBE_MAG_IMU(AK8963, mpu9250, 1, ROTATION_NONE)
|
#define HAL_MAG_PROBE2 PROBE_MAG_IMU(AK8963, mpu9250, 1, ROTATION_NONE)
|
||||||
#define HAL_MAG_PROBE_LIST HAL_MAG_PROBE1; HAL_MAG_PROBE2
|
#define HAL_MAG_PROBE_LIST HAL_MAG_PROBE1; HAL_MAG_PROBE2
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
#define HAL_OPTFLOW_PX4FLOW_I2C_BUS 2
|
|
||||||
#define HAL_RANGEFINDER_LIGHTWARE_I2C_BUS 2
|
|
||||||
#define HAL_NUM_CAN_IFACES 1
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIGATOR
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "icm20602", ROTATION_ROLL_180_YAW_270)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "icm20602", ROTATION_ROLL_180_YAW_270)
|
||||||
#define HAL_MAG_PROBE1 PROBE_MAG_SPI(MMC5XX3, "mmc5983", false, ROTATION_YAW_180)
|
#define HAL_MAG_PROBE1 PROBE_MAG_SPI(MMC5XX3, "mmc5983", false, ROTATION_YAW_180)
|
||||||
@ -192,37 +85,16 @@
|
|||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(BMP280, 1, 0x76); PROBE_BARO_I2C(BMP388, 1, 0x76)
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(BMP280, 1, 0x76); PROBE_BARO_I2C(BMP388, 1, 0x76)
|
||||||
#define HAL_BARO_EXTERNAL_BUS_DEFAULT 6
|
#define HAL_BARO_EXTERNAL_BUS_DEFAULT 6
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
// I2C6 is the only i2c one exposed on a header
|
|
||||||
#define HAL_LINUX_I2C_EXTERNAL_BUS_MASK 1 << 6
|
|
||||||
// We don't want any probing on the internal buses
|
|
||||||
#define HAL_LINUX_I2C_INTERNAL_BUS_MASK 0
|
|
||||||
#define AP_NOTIFY_NAVIGATOR_LED_ENABLED 1
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BLUE
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BLUE
|
||||||
#define AP_NOTIFY_GPIO_LED_2_ENABLED 1
|
|
||||||
#define HAL_GPIO_A_LED_PIN 66
|
|
||||||
#define HAL_GPIO_B_LED_PIN 67
|
|
||||||
#define HAL_GPIO_LED_ON 1
|
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_I2C(Invensense, 2, 0x68, ROTATION_NONE)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_I2C(Invensense, 2, 0x68, ROTATION_NONE)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(BMP280, 2, 0x76)
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(BMP280, 2, 0x76)
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU_I2C(AK8963, mpu9250, 2, 0x0c, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU_I2C(AK8963, mpu9250, 2, 0x0c, ROTATION_NONE)
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
#define HAL_OPTFLOW_PX4FLOW_I2C_BUS 1
|
|
||||||
#define HAL_RANGEFINDER_LIGHTWARE_I2C_BUS 1
|
|
||||||
#define HAL_NUM_CAN_IFACES 1
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_POCKET
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_POCKET
|
||||||
#define AP_NOTIFY_GPIO_LED_3_ENABLED 1
|
|
||||||
#define HAL_GPIO_A_LED_PIN 59
|
|
||||||
#define HAL_GPIO_B_LED_PIN 58
|
|
||||||
#define HAL_GPIO_C_LED_PIN 57
|
|
||||||
#define HAL_GPIO_LED_ON 1
|
|
||||||
#define HAL_BUZZER_PIN 28
|
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(BMP280, "bmp280")
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(BMP280, "bmp280")
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
#define HAL_OPTFLOW_PX4FLOW_I2C_BUS 2
|
|
||||||
#define HAL_RANGEFINDER_LIGHTWARE_I2C_BUS 2
|
|
||||||
#define HAL_NUM_CAN_IFACES 1
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77)
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77)
|
||||||
#define HAL_INS_PROBE1 PROBE_IMU_I2C(Invensense, 1, 0x69, ROTATION_NONE)
|
#define HAL_INS_PROBE1 PROBE_IMU_I2C(Invensense, 1, 0x69, ROTATION_NONE)
|
||||||
@ -230,23 +102,11 @@
|
|||||||
#define HAL_INS_PROBE_LIST HAL_INS_PROBE1; HAL_INS_PROBE2
|
#define HAL_INS_PROBE_LIST HAL_INS_PROBE1; HAL_INS_PROBE2
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
#define AP_NOTIFY_GPIO_LED_3_ENABLED 1
|
|
||||||
#define HAL_GPIO_A_LED_PIN 17
|
|
||||||
#define HAL_GPIO_B_LED_PIN 18
|
|
||||||
#define HAL_GPIO_C_LED_PIN 22
|
|
||||||
#define AP_NOTIFY_RCOUTPUTRGBLED_LED_ENABLED 1
|
|
||||||
#define HAL_RCOUT_RGBLED_RED 13
|
|
||||||
#define HAL_RCOUT_RGBLED_GREEN 14
|
|
||||||
#define HAL_RCOUT_RGBLED_BLUE 15
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_YAW_270)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_YAW_270)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
#define AP_NOTIFY_GPIO_LED_3_ENABLED 1
|
|
||||||
#define HAL_GPIO_A_LED_PIN 24
|
|
||||||
#define HAL_GPIO_B_LED_PIN 25
|
|
||||||
#define HAL_GPIO_C_LED_PIN 16
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_AERO
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_AERO
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(BMI160, "bmi160")
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(BMI160, "bmi160")
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 2, 0x76)
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 2, 0x76)
|
||||||
@ -254,95 +114,31 @@
|
|||||||
#define HAL_MAG_PROBE2 PROBE_MAG_I2C(HMC5843, 4, 0x1e, true, ROTATION_NONE)
|
#define HAL_MAG_PROBE2 PROBE_MAG_I2C(HMC5843, 4, 0x1e, true, ROTATION_NONE)
|
||||||
#define HAL_MAG_PROBE3 PROBE_MAG_I2C(IST8310, 4, 0x0e, true, ROTATION_PITCH_180_YAW_90)
|
#define HAL_MAG_PROBE3 PROBE_MAG_I2C(IST8310, 4, 0x0e, true, ROTATION_PITCH_180_YAW_90)
|
||||||
#define HAL_MAG_PROBE_LIST HAL_MAG_PROBE1; HAL_MAG_PROBE2; HAL_MAG_PROBE3
|
#define HAL_MAG_PROBE_LIST HAL_MAG_PROBE1; HAL_MAG_PROBE2; HAL_MAG_PROBE3
|
||||||
#define HAL_RCOUTPUT_TAP_DEVICE "/dev/ttyS1"
|
|
||||||
#define HAL_NUM_CAN_IFACES 1
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DARK
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DARK
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77)
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(MS56XX, 1, 0x77)
|
||||||
#define AP_NOTIFY_GPIO_LED_3_ENABLED 1
|
|
||||||
#define HAL_GPIO_A_LED_PIN 24
|
|
||||||
#define HAL_GPIO_B_LED_PIN 25
|
|
||||||
#define HAL_GPIO_C_LED_PIN 16
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_EDGE
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_EDGE
|
||||||
#define HAL_BOARD_LOG_DIRECTORY "/edge/ardupilot/logs"
|
|
||||||
#define HAL_BOARD_TERRAIN_DIRECTORY "/edge/ardupilot/terrain"
|
|
||||||
#define HAL_BOARD_STORAGE_DIRECTORY "/edge/ardupilot"
|
|
||||||
#define HAL_INS_PROBE1 PROBE_IMU_SPI(Invensense, "mpu60x0", ROTATION_YAW_90)
|
#define HAL_INS_PROBE1 PROBE_IMU_SPI(Invensense, "mpu60x0", ROTATION_YAW_90)
|
||||||
#define HAL_INS_PROBE2 PROBE_IMU_SPI(Invensense, "mpu60x0ext", ROTATION_YAW_90)
|
#define HAL_INS_PROBE2 PROBE_IMU_SPI(Invensense, "mpu60x0ext", ROTATION_YAW_90)
|
||||||
#define HAL_INS_PROBE_LIST HAL_INS_PROBE1; HAL_INS_PROBE2
|
#define HAL_INS_PROBE_LIST HAL_INS_PROBE1; HAL_INS_PROBE2
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
||||||
// only external compasses
|
// only external compasses
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
#define HAL_NUM_CAN_IFACES 1
|
|
||||||
#define HAL_IMU_TEMP_DEFAULT 55
|
|
||||||
#define HAL_HAVE_IMU_HEATER 1
|
|
||||||
#define HAL_UTILS_HEAT HAL_LINUX_HEAT_PWM
|
|
||||||
#define HAL_LINUX_HEAT_PWM_NUM 15
|
|
||||||
#define HAL_LINUX_HEAT_KP 20000
|
|
||||||
#define HAL_LINUX_HEAT_KI 6
|
|
||||||
#define HAL_LINUX_HEAT_PERIOD_NS 2040816
|
|
||||||
#define HAL_GPS1_TYPE_DEFAULT 9
|
|
||||||
#define HAL_CAN_DRIVER_DEFAULT 1
|
|
||||||
#define AP_NOTIFY_RCOUTPUTRGBLEDINVERTED_LED_ENABLED 1
|
|
||||||
#define AP_RCPROTOCOL_EMLID_RCIO_ENABLED 1
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_RST_ZYNQ
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_RST_ZYNQ
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI2(Invensense, "rst_g", "rst_a", ROTATION_ROLL_180_YAW_90, ROTATION_ROLL_180_YAW_90)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI2(Invensense, "rst_g", "rst_a", ROTATION_ROLL_180_YAW_90, ROTATION_ROLL_180_YAW_90)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_SPI(LIS3MDL, lis3mdl, false, ROTATION_ROLL_180_YAW_90)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_SPI(LIS3MDL, lis3mdl, false, ROTATION_ROLL_180_YAW_90)
|
||||||
#define HAL_OPTFLOW_PX4FLOW_I2C_BUS 0
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_CANZERO
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_CANZERO
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_SPI(MS56XX, "ms5611")
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
|
||||||
#define HAL_NUM_CAN_IFACES 1
|
|
||||||
#define HAL_CAN_DRIVER_DEFAULT 1
|
|
||||||
#define AP_NOTIFY_GPIO_LED_3_ENABLED 1
|
|
||||||
#define HAL_GPIO_A_LED_PIN 22
|
|
||||||
#define HAL_GPIO_B_LED_PIN 27
|
|
||||||
#define HAL_GPIO_C_LED_PIN 6
|
|
||||||
#define HAL_BOARD_LOG_DIRECTORY "/home/pi/ardupilot/logs"
|
|
||||||
#define HAL_BOARD_TERRAIN_DIRECTORY "/home/pi/ardupilot/terrain"
|
|
||||||
#define HAL_BOARD_STORAGE_DIRECTORY "/home/pi/ardupilot"
|
|
||||||
#define HAL_DEFAULT_INS_FAST_SAMPLE 0
|
|
||||||
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
|
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OBAL_V1
|
||||||
|
|
||||||
//#define HAL_BARO_ALLOW_INIT_NO_BARO
|
|
||||||
|
|
||||||
// Activate SUB Model Configuratopm
|
|
||||||
#define HAL_BOARD_SUBTYPE_LINUX_OBAL_V1_MPU_9250_SPI
|
|
||||||
|
|
||||||
// Define Notify
|
|
||||||
#define OBAL_NOTIFY_LED
|
|
||||||
|
|
||||||
|
|
||||||
// GY-91 SPI Connection
|
|
||||||
#ifdef HAL_BOARD_SUBTYPE_LINUX_OBAL_V1_MPU_9250_SPI
|
|
||||||
#define HAL_BOARD_LOG_DIRECTORY "/home/pi/ardupilot/logs"
|
|
||||||
#define HAL_BOARD_TERRAIN_DIRECTORY "/home/pi/ardupilot/terrain"
|
|
||||||
#define HAL_BOARD_STORAGE_DIRECTORY "/home/pi/ardupilot"
|
|
||||||
#define HAL_PARAM_DEFAULTS_PATH "/home/pi/ardupilot.parm"
|
|
||||||
|
|
||||||
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
#define HAL_INS_PROBE_LIST PROBE_IMU_SPI(Invensense, "mpu9250", ROTATION_NONE)
|
||||||
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
#define HAL_MAG_PROBE_LIST PROBE_MAG_IMU(AK8963, mpu9250, 0, ROTATION_NONE)
|
||||||
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(BMP085, 1, 0x77)
|
#define HAL_BARO_PROBE_LIST PROBE_BARO_I2C(BMP085, 1, 0x77)
|
||||||
//#define HAL_MAG_PROBE_LIST PROBE_MAG_I2C(QMC5883L, 1, 0x0d,true , ROTATION_NONE)
|
|
||||||
|
|
||||||
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
#define HAL_PROBE_EXTERNAL_I2C_COMPASSES
|
||||||
#endif
|
//#define HAL_MAG_PROBE_LIST PROBE_MAG_I2C(QMC5883L, 1, 0x0d,true , ROTATION_NONE)
|
||||||
|
|
||||||
|
|
||||||
#ifdef OBAL_NOTIFY_LED
|
|
||||||
#define AP_NOTIFY_GPIO_LED_3_ENABLED 1
|
|
||||||
#define HAL_GPIO_A_LED_PIN 27 // You can choose between 27,22,4,12
|
|
||||||
#define HAL_GPIO_C_LED_PIN 22 // You can choose between 27,22,4,12
|
|
||||||
#define HAL_GPIO_B_LED_PIN 4 // You can choose between 27,22,4,12
|
|
||||||
#define HAL_GPIO_LED_ON 1
|
|
||||||
#endif
|
|
||||||
#define HAL_BUZZER_PIN 12 // You can choose between 27,22,4,12
|
|
||||||
#define OBAL_ALLOW_ADC 1
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#error "no Linux board subtype set"
|
#error "no Linux board subtype set"
|
||||||
#endif
|
#endif
|
||||||
|
223
libraries/AP_HAL/hwdef/scripts/hwdef.py
Normal file
223
libraries/AP_HAL/hwdef/scripts/hwdef.py
Normal file
@ -0,0 +1,223 @@
|
|||||||
|
'''
|
||||||
|
base class for hwdef processing
|
||||||
|
|
||||||
|
AP_FLAKE8_CLEAN
|
||||||
|
'''
|
||||||
|
|
||||||
|
import filecmp
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import shlex
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
class IncludeNotFoundException(Exception):
|
||||||
|
def __init__(self, hwdef, includer):
|
||||||
|
self.hwdef = hwdef
|
||||||
|
self.includer = includer
|
||||||
|
|
||||||
|
|
||||||
|
class HWDef:
|
||||||
|
def __init__(self, quiet=False, outdir=None, hwdef=[]):
|
||||||
|
self.outdir = outdir
|
||||||
|
self.hwdef = hwdef
|
||||||
|
self.quiet = quiet
|
||||||
|
|
||||||
|
# dictionary of all config lines, indexed by first word
|
||||||
|
self.config = {}
|
||||||
|
|
||||||
|
# all config lines in order
|
||||||
|
self.alllines = []
|
||||||
|
|
||||||
|
# allow for extra env vars
|
||||||
|
self.env_vars = {}
|
||||||
|
|
||||||
|
# output lines:
|
||||||
|
self.all_lines = []
|
||||||
|
|
||||||
|
# integer defines
|
||||||
|
self.intdefines = {}
|
||||||
|
|
||||||
|
# boolean indicating whether we have read and processed self.hwdef
|
||||||
|
self.processed_hwdefs = False
|
||||||
|
|
||||||
|
def is_int(self, str):
|
||||||
|
'''check if a string is an integer'''
|
||||||
|
try:
|
||||||
|
int(str)
|
||||||
|
except Exception:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def error(self, str):
|
||||||
|
'''show an error and exit'''
|
||||||
|
print("Error: " + str)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def load_file_with_include(self, fname):
|
||||||
|
'''load a file as an array of lines, processing any include lines'''
|
||||||
|
lines = open(fname, 'r').readlines()
|
||||||
|
ret = []
|
||||||
|
for line in lines:
|
||||||
|
if line.startswith("include"):
|
||||||
|
a = shlex.split(line)
|
||||||
|
if len(a) > 1 and a[0] == "include":
|
||||||
|
fname2 = os.path.relpath(os.path.join(os.path.dirname(fname), a[1]))
|
||||||
|
ret.extend(self.load_file_with_include(fname2))
|
||||||
|
continue
|
||||||
|
ret.append(line)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def get_numeric_board_id(self):
|
||||||
|
'''return a numeric board ID, which may require mapping a string to a
|
||||||
|
number via board_list.txt'''
|
||||||
|
some_id = self.get_config('APJ_BOARD_ID')
|
||||||
|
if some_id.isnumeric():
|
||||||
|
return some_id
|
||||||
|
|
||||||
|
board_types_filename = "board_types.txt"
|
||||||
|
topdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), '../../../..')
|
||||||
|
board_types_dirpath = os.path.join(topdir, "Tools", "AP_Bootloader")
|
||||||
|
board_types_filepath = os.path.join(board_types_dirpath, board_types_filename)
|
||||||
|
for line in open(board_types_filepath, 'r'):
|
||||||
|
m = re.match(r"(?P<name>[-\w]+)\s+(?P<board_id>\d+)", line)
|
||||||
|
if m is None:
|
||||||
|
continue
|
||||||
|
if m.group('name') == some_id:
|
||||||
|
return m.group('board_id')
|
||||||
|
|
||||||
|
raise ValueError("Unable to map (%s) to a board ID using %s" %
|
||||||
|
(some_id, board_types_filepath))
|
||||||
|
|
||||||
|
def write_all_lines(self, hwdat):
|
||||||
|
f = open(hwdat, 'w')
|
||||||
|
f.write('\n'.join(self.all_lines))
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
def write_defaulting_define(self, f, name, value):
|
||||||
|
f.write(f"#ifndef {name}\n")
|
||||||
|
f.write(f"#define {name} {value}\n")
|
||||||
|
f.write("#endif\n")
|
||||||
|
|
||||||
|
def write_define(self, f, name, value):
|
||||||
|
f.write(f"#define {name} {value}\n")
|
||||||
|
|
||||||
|
def write_hwdef_header(self, outfilename):
|
||||||
|
'''write hwdef header file'''
|
||||||
|
self.progress("Writing hwdef setup in %s" % outfilename)
|
||||||
|
tmpfile = outfilename + ".tmp"
|
||||||
|
f = open(tmpfile, 'w')
|
||||||
|
|
||||||
|
f.write('''/*
|
||||||
|
generated hardware definitions from hwdef.dat - DO NOT EDIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef TRUE
|
||||||
|
#define TRUE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef FALSE
|
||||||
|
#define FALSE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
''')
|
||||||
|
|
||||||
|
self.write_hwdef_header_content(f)
|
||||||
|
|
||||||
|
f.close()
|
||||||
|
# see if we ended up with the same file, on an unnecessary reconfigure
|
||||||
|
try:
|
||||||
|
if filecmp.cmp(outfilename, tmpfile):
|
||||||
|
self.progress("No change in hwdef.h")
|
||||||
|
os.unlink(tmpfile)
|
||||||
|
return
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
os.unlink(outfilename)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
os.rename(tmpfile, outfilename)
|
||||||
|
|
||||||
|
def progress(self, message):
|
||||||
|
if self.quiet:
|
||||||
|
return
|
||||||
|
print(message)
|
||||||
|
|
||||||
|
def process_file(self, filename, depth=0):
|
||||||
|
'''process a hwdef.dat file'''
|
||||||
|
try:
|
||||||
|
f = open(filename, "r")
|
||||||
|
except Exception:
|
||||||
|
self.error("Unable to open file %s" % filename)
|
||||||
|
for line in f.readlines():
|
||||||
|
line = line.split('#')[0] # ensure we discard the comments
|
||||||
|
line = line.strip()
|
||||||
|
if len(line) == 0 or line[0] == '#':
|
||||||
|
continue
|
||||||
|
a = shlex.split(line)
|
||||||
|
if a[0] == "include" and len(a) > 1:
|
||||||
|
include_file = a[1]
|
||||||
|
if include_file[0] != '/':
|
||||||
|
dir = os.path.dirname(filename)
|
||||||
|
include_file = os.path.normpath(
|
||||||
|
os.path.join(dir, include_file))
|
||||||
|
self.progress("Including %s" % include_file)
|
||||||
|
self.process_file(include_file, depth+1)
|
||||||
|
else:
|
||||||
|
self.process_line(line, depth)
|
||||||
|
|
||||||
|
def process_hwdefs(self):
|
||||||
|
for fname in self.hwdef:
|
||||||
|
self.process_file(fname)
|
||||||
|
self.processed_hwdefs = True
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
# process input file
|
||||||
|
self.process_hwdefs()
|
||||||
|
|
||||||
|
# write out hwdef.h
|
||||||
|
self.write_hwdef_header(os.path.join(self.outdir, "hwdef.h"))
|
||||||
|
|
||||||
|
def process_line(self, line, depth):
|
||||||
|
'''process one line of pin definition file'''
|
||||||
|
self.all_lines.append(line)
|
||||||
|
a = shlex.split(line, posix=False)
|
||||||
|
# keep all config lines for later use
|
||||||
|
self.alllines.append(line)
|
||||||
|
|
||||||
|
if a[0] == 'undef':
|
||||||
|
for u in a[1:]:
|
||||||
|
self.progress("Removing %s" % u)
|
||||||
|
self.config.pop(u, '')
|
||||||
|
self.intdefines.pop(u, '')
|
||||||
|
# also remove all occurences of defines in previous lines if any
|
||||||
|
for line in self.alllines[:]:
|
||||||
|
if line.startswith('define') and u == line.split()[1] or line.startswith('STM32_') and u == line.split()[0]: # noqa
|
||||||
|
self.alllines.remove(line)
|
||||||
|
return
|
||||||
|
|
||||||
|
if a[0] == 'env':
|
||||||
|
self.progress("Adding environment %s" % ' '.join(a[1:]))
|
||||||
|
if len(a[1:]) < 2:
|
||||||
|
self.error("Bad env line for %s" % a[0])
|
||||||
|
name = a[1]
|
||||||
|
value = ' '.join(a[2:])
|
||||||
|
self.env_vars[name] = value
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
if a[0] == 'define':
|
||||||
|
# extract numerical defines for processing by other parts of the script
|
||||||
|
result = re.match(r'define\s*([A-Z_0-9]+)\s+([0-9]+)', line)
|
||||||
|
if result:
|
||||||
|
(name, intvalue) = (result.group(1), int(result.group(2)))
|
||||||
|
if name in self.intdefines and self.intdefines[name] == intvalue:
|
||||||
|
msg = f"{name} already in defines with same value"
|
||||||
|
if depth == 0:
|
||||||
|
print(msg)
|
||||||
|
# raise ValueError(msg)
|
||||||
|
|
||||||
|
self.intdefines[name] = intvalue
|
Loading…
Reference in New Issue
Block a user