diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index abcdedb9a7..5fc4d2e6e9 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -215,15 +215,8 @@ static void print_flight_mode(AP_HAL::BetterStream *port, uint8_t mode); static DataFlash_APM2 DataFlash; #elif CONFIG_HAL_BOARD == HAL_BOARD_APM1 static DataFlash_APM1 DataFlash; -#elif CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL -static DataFlash_File DataFlash("logs"); -//static DataFlash_SITL DataFlash; -#elif CONFIG_HAL_BOARD == HAL_BOARD_PX4 -static DataFlash_File DataFlash("/fs/microsd/APM/LOGS"); -#elif CONFIG_HAL_BOARD == HAL_BOARD_LINUX -static DataFlash_File DataFlash("logs"); -#elif CONFIG_HAL_BOARD == HAL_BOARD_VRBRAIN -static DataFlash_File DataFlash("/fs/microsd/APM/LOGS"); +#elif defined(HAL_BOARD_LOG_DIRECTORY) +static DataFlash_File DataFlash(HAL_BOARD_LOG_DIRECTORY); #else static DataFlash_Empty DataFlash; #endif @@ -258,77 +251,57 @@ static GPS_Glitch gps_glitch(gps); // flight modes convenience array static AP_Int8 *flight_modes = &g.flight_mode1; -#if HIL_MODE == HIL_MODE_DISABLED - - #if CONFIG_ADC == ENABLED -static AP_ADC_ADS7844 adc; - #endif - - #if CONFIG_IMU_TYPE == CONFIG_IMU_MPU6000 -static AP_InertialSensor_MPU6000 ins; -#elif CONFIG_IMU_TYPE == CONFIG_IMU_MPU9250 -static AP_InertialSensor_MPU9250 ins; -#elif CONFIG_IMU_TYPE == CONFIG_IMU_OILPAN -static AP_InertialSensor_Oilpan ins(&adc); -#elif CONFIG_IMU_TYPE == CONFIG_IMU_SITL -static AP_InertialSensor_HIL ins; -#elif CONFIG_IMU_TYPE == CONFIG_IMU_PX4 -static AP_InertialSensor_PX4 ins; -#elif CONFIG_IMU_TYPE == CONFIG_IMU_VRBRAIN -static AP_InertialSensor_VRBRAIN ins; -#elif CONFIG_IMU_TYPE == CONFIG_IMU_FLYMAPLE -AP_InertialSensor_Flymaple ins; -#elif CONFIG_IMU_TYPE == CONFIG_IMU_L3G4200D -AP_InertialSensor_L3G4200D ins; -#endif - - #if CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL - // When building for SITL we use the HIL barometer and compass drivers -static AP_Baro_HIL barometer; -static AP_Compass_HIL compass; -static SITL sitl; - #else -// Otherwise, instantiate a real barometer and compass driver - #if CONFIG_BARO == AP_BARO_BMP085 +#if CONFIG_BARO == HAL_BARO_BMP085 static AP_Baro_BMP085 barometer; - #elif CONFIG_BARO == AP_BARO_PX4 +#elif CONFIG_BARO == HAL_BARO_PX4 static AP_Baro_PX4 barometer; -#elif CONFIG_BARO == AP_BARO_VRBRAIN +#elif CONFIG_BARO == HAL_BARO_VRBRAIN static AP_Baro_VRBRAIN barometer; - #elif CONFIG_BARO == AP_BARO_MS5611 - #if CONFIG_MS5611_SERIAL == AP_BARO_MS5611_SPI -static AP_Baro_MS5611 barometer(&AP_Baro_MS5611::spi); - #elif CONFIG_MS5611_SERIAL == AP_BARO_MS5611_I2C +#elif CONFIG_BARO == HAL_BARO_HIL +static AP_Baro_HIL barometer; +#elif CONFIG_BARO == HAL_BARO_MS5611 static AP_Baro_MS5611 barometer(&AP_Baro_MS5611::i2c); - #else - #error Unrecognized CONFIG_MS5611_SERIAL setting. - #endif - #endif - - #if CONFIG_HAL_BOARD == HAL_BOARD_PX4 -static AP_Compass_PX4 compass; - #elif CONFIG_HAL_BOARD == HAL_BOARD_VRBRAIN -static AP_Compass_VRBRAIN compass; - #else -static AP_Compass_HMC5843 compass; - #endif - #endif - -#elif HIL_MODE != HIL_MODE_DISABLED -// sensor emulators -static AP_ADC_HIL adc; -static AP_Baro_HIL barometer; -static AP_Compass_HIL compass; -static AP_InertialSensor_HIL ins; - - #if CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL - // When building for SITL we use the HIL barometer and compass drivers -static SITL sitl; +#elif CONFIG_BARO == HAL_BARO_MS5611_SPI +static AP_Baro_MS5611 barometer(&AP_Baro_MS5611::spi); +#else + #error Unrecognized CONFIG_BARO setting #endif +#if CONFIG_COMPASS == HAL_COMPASS_PX4 +static AP_Compass_PX4 compass; +#elif CONFIG_COMPASS == HAL_COMPASS_VRBRAIN +static AP_Compass_VRBRAIN compass; +#elif CONFIG_COMPASS == HAL_COMPASS_HMC5843 +static AP_Compass_HMC5843 compass; +#elif CONFIG_COMPASS == HAL_COMPASS_HIL +static AP_Compass_HIL compass; #else - #error Unrecognised HIL_MODE setting. -#endif // HIL MODE + #error Unrecognized CONFIG_COMPASS setting +#endif + +#if CONFIG_INS_TYPE == HAL_INS_OILPAN || CONFIG_HAL_BOARD == HAL_BOARD_APM1 +AP_ADC_ADS7844 apm1_adc; +#endif + +#if CONFIG_INS_TYPE == HAL_INS_MPU6000 +AP_InertialSensor_MPU6000 ins; +#elif CONFIG_INS_TYPE == HAL_INS_PX4 +AP_InertialSensor_PX4 ins; +#elif CONFIG_INS_TYPE == HAL_INS_VRBRAIN +AP_InertialSensor_VRBRAIN ins; +#elif CONFIG_INS_TYPE == HAL_INS_HIL +AP_InertialSensor_HIL ins; +#elif CONFIG_INS_TYPE == HAL_INS_OILPAN +AP_InertialSensor_Oilpan ins( &apm1_adc ); +#elif CONFIG_INS_TYPE == HAL_INS_FLYMAPLE +AP_InertialSensor_Flymaple ins; +#elif CONFIG_INS_TYPE == HAL_INS_L3G4200D +AP_InertialSensor_L3G4200D ins; +#elif CONFIG_INS_TYPE == HAL_INS_MPU9250 +AP_InertialSensor_MPU9250 ins; +#else + #error Unrecognised CONFIG_INS_TYPE setting. +#endif // CONFIG_INS_TYPE // Inertial Navigation EKF #if AP_AHRS_NAVEKF_AVAILABLE @@ -337,6 +310,10 @@ AP_AHRS_NavEKF ahrs(ins, barometer, gps); AP_AHRS_DCM ahrs(ins, barometer, gps); #endif +#if CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL +SITL sitl; +#endif + // Mission library // forward declaration to keep compiler happy static bool start_command(const AP_Mission::Mission_Command& cmd); diff --git a/ArduCopter/config.h b/ArduCopter/config.h index 7b4dcb9c84..fd17055697 100644 --- a/ArduCopter/config.h +++ b/ArduCopter/config.h @@ -53,48 +53,50 @@ #endif ////////////////////////////////////////////////////////////////////////////// -// FLIGHT CONTROLLER HARDWARE DEFAULT SETTINGS -// +// sensor types + +#define CONFIG_INS_TYPE HAL_INS_DEFAULT +#define CONFIG_BARO HAL_BARO_DEFAULT +#define CONFIG_COMPASS HAL_COMPASS_DEFAULT + +#ifdef HAL_SERIAL0_BAUD_DEFAULT +# define SERIAL0_BAUD HAL_SERIAL0_BAUD_DEFAULT +#endif + +////////////////////////////////////////////////////////////////////////////// +// HIL_MODE OPTIONAL + +#ifndef HIL_MODE + #define HIL_MODE HIL_MODE_DISABLED +#endif + +#if HIL_MODE != HIL_MODE_DISABLED // we are in HIL mode + #undef CONFIG_BARO + #define CONFIG_BARO HAL_BARO_HIL + #undef CONFIG_INS_TYPE + #define CONFIG_INS_TYPE HAL_INS_HIL + #undef CONFIG_COMPASS + #define CONFIG_COMPASS HAL_COMPASS_HIL +#endif + +#define MAGNETOMETER ENABLED + #if CONFIG_HAL_BOARD == HAL_BOARD_APM2 - # define CONFIG_IMU_TYPE CONFIG_IMU_MPU6000 # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ANALOG_PIN - # define MAGNETOMETER ENABLED # define PARACHUTE DISABLED # define AC_RALLY DISABLED - # ifdef APM2_BETA_HARDWARE - # define CONFIG_BARO AP_BARO_BMP085 - # else // APM2 Production Hardware (default) - # define CONFIG_BARO AP_BARO_MS5611 - # define CONFIG_MS5611_SERIAL AP_BARO_MS5611_SPI - # endif #elif CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL - # define CONFIG_IMU_TYPE CONFIG_IMU_SITL # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ANALOG_PIN - # define MAGNETOMETER ENABLED #elif CONFIG_HAL_BOARD == HAL_BOARD_PX4 - # define CONFIG_IMU_TYPE CONFIG_IMU_PX4 - # define CONFIG_BARO AP_BARO_PX4 # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ANALOG_PIN - # define MAGNETOMETER ENABLED #elif CONFIG_HAL_BOARD == HAL_BOARD_FLYMAPLE - # define CONFIG_IMU_TYPE CONFIG_IMU_FLYMAPLE - # define CONFIG_BARO AP_BARO_BMP085 - # define CONFIG_COMPASS AP_COMPASS_HMC5843 # define CONFIG_ADC DISABLED - # define MAGNETOMETER ENABLED # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ANALOG_PIN #elif CONFIG_HAL_BOARD == HAL_BOARD_LINUX - # define CONFIG_IMU_TYPE CONFIG_IMU_L3G4200D - # define CONFIG_BARO AP_BARO_BMP085 - # define CONFIG_COMPASS AP_COMPASS_HMC5843 # define CONFIG_ADC DISABLED - # define MAGNETOMETER ENABLED # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ANALOG_PIN #elif CONFIG_HAL_BOARD == HAL_BOARD_VRBRAIN - # define CONFIG_IMU_TYPE CONFIG_IMU_VRBRAIN - # define CONFIG_BARO AP_BARO_VRBRAIN # define CONFIG_SONAR_SOURCE SONAR_SOURCE_ANALOG_PIN - # define MAGNETOMETER ENABLED #endif #if HAL_CPU_CLASS < HAL_CPU_CLASS_75 || CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL @@ -102,6 +104,11 @@ # define MAIN_LOOP_RATE 100 # define MAIN_LOOP_SECONDS 0.01 # define MAIN_LOOP_MICROS 10000 +#elif CONFIG_HAL_BOARD == HAL_BOARD_LINUX + // Linux boards + # define MAIN_LOOP_RATE 200 + # define MAIN_LOOP_SECONDS 0.005 + # define MAIN_LOOP_MICROS 5000 #else // high power CPUs (Flymaple, PX4, Pixhawk, VRBrain) # define MAIN_LOOP_RATE 400 @@ -141,18 +148,11 @@ # define RATE_YAW_I 0.015f #endif -////////////////////////////////////////////////////////////////////////////// -// IMU Selection -// -#ifndef CONFIG_IMU_TYPE - # define CONFIG_IMU_TYPE CONFIG_IMU_OILPAN -#endif - ////////////////////////////////////////////////////////////////////////////// // ADC Enable - used to eliminate for systems which don't have ADC. // #ifndef CONFIG_ADC - # if CONFIG_IMU_TYPE == CONFIG_IMU_OILPAN + # if CONFIG_INS_TYPE == HAL_INS_OILPAN || CONFIG_HAL_BOARD == HAL_BOARD_APM1 # define CONFIG_ADC ENABLED # else # define CONFIG_ADC DISABLED diff --git a/ArduCopter/defines.h b/ArduCopter/defines.h index efedec3ce3..d1e796b8e8 100644 --- a/ArduCopter/defines.h +++ b/ArduCopter/defines.h @@ -334,22 +334,6 @@ enum FlipState { // mark a function as not to be inlined #define NOINLINE __attribute__((noinline)) -// IMU selection -#define CONFIG_IMU_OILPAN 1 -#define CONFIG_IMU_MPU6000 2 -#define CONFIG_IMU_SITL 3 -#define CONFIG_IMU_PX4 4 -#define CONFIG_IMU_FLYMAPLE 5 -#define CONFIG_IMU_VRBRAIN 6 - -#define AP_BARO_BMP085 1 -#define AP_BARO_MS5611 2 -#define AP_BARO_PX4 3 -#define AP_BARO_VRBRAIN 4 - -#define AP_BARO_MS5611_SPI 1 -#define AP_BARO_MS5611_I2C 2 - // Error message sub systems and error codes #define ERROR_SUBSYSTEM_MAIN 1 #define ERROR_SUBSYSTEM_RADIO 2 diff --git a/ArduCopter/system.pde b/ArduCopter/system.pde index 76f1bc2503..538a0df04c 100644 --- a/ArduCopter/system.pde +++ b/ArduCopter/system.pde @@ -205,7 +205,7 @@ static void init_ardupilot() #if CONFIG_ADC == ENABLED // begin filtering the ADC Gyros - adc.Init(); // APM ADC library initialization + apm1_adc.Init(); // APM ADC library initialization #endif // CONFIG_ADC // Do GPS init