From 9349abfe4878211f0be9e776dec4e6096ba60d61 Mon Sep 17 00:00:00 2001 From: Hwurzburg Date: Sun, 24 Oct 2021 13:24:33 -0500 Subject: [PATCH] AP_Motors: add build options for each frame class --- libraries/AP_Motors/AP_MotorsMatrix.cpp | 26 ++++++++++++++++--------- libraries/AP_Motors/AP_Motors_Class.h | 22 +++++++++++++++++++++ 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/libraries/AP_Motors/AP_MotorsMatrix.cpp b/libraries/AP_Motors/AP_MotorsMatrix.cpp index 4c5eebd238..9c7e8563a9 100644 --- a/libraries/AP_Motors/AP_MotorsMatrix.cpp +++ b/libraries/AP_Motors/AP_MotorsMatrix.cpp @@ -585,7 +585,7 @@ void AP_MotorsMatrix::setup_motors(motor_frame_class frame_class, motor_frame_ty bool success = true; switch (frame_class) { - +#if FRAME_QUAD case MOTOR_FRAME_QUAD: _frame_class_string = "QUAD"; _mav_type = MAV_TYPE_QUADROTOR; @@ -635,7 +635,7 @@ void AP_MotorsMatrix::setup_motors(motor_frame_class frame_class, motor_frame_ty add_motors(motors, ARRAY_SIZE(motors)); break; } -#endif +#endif //APM_BUILD_TYPE(APM_BUILD_ArduPlane) case MOTOR_FRAME_TYPE_BF_X: { // betaflight quad X order // see: https://fpvfrenzy.com/betaflight-motor-order/ @@ -772,7 +772,8 @@ void AP_MotorsMatrix::setup_motors(motor_frame_class frame_class, motor_frame_ty break; } break; // quad - +#endif //FRAME_QUAD +#if FRAME_HEXA case MOTOR_FRAME_HEXA: _frame_class_string = "HEXA"; _mav_type = MAV_TYPE_HEXAROTOR; @@ -850,7 +851,8 @@ void AP_MotorsMatrix::setup_motors(motor_frame_class frame_class, motor_frame_ty break; } break; - +#endif //FRAME_HEXA +#if FRAME_OCTA case MOTOR_FRAME_OCTA: _frame_class_string = "OCTA"; _mav_type = MAV_TYPE_OCTOROTOR; @@ -968,7 +970,8 @@ void AP_MotorsMatrix::setup_motors(motor_frame_class frame_class, motor_frame_ty break; } // octa frame type break; - +#endif //FRAME_OCTA +#if FRAME_OCTAQUAD case MOTOR_FRAME_OCTAQUAD: _mav_type = MAV_TYPE_OCTOROTOR; _frame_class_string = "OCTAQUAD"; @@ -1055,7 +1058,8 @@ void AP_MotorsMatrix::setup_motors(motor_frame_class frame_class, motor_frame_ty break; } break; - +#endif //FRAME_OCTAQUAD +#if FRAME_DODECAHEXA case MOTOR_FRAME_DODECAHEXA: { _mav_type = MAV_TYPE_DODECAROTOR; _frame_class_string = "DODECAHEXA"; @@ -1105,7 +1109,8 @@ void AP_MotorsMatrix::setup_motors(motor_frame_class frame_class, motor_frame_ty break; }} break; - +#endif //FRAME_DODECAHEXA +#if FRAME_Y6 case MOTOR_FRAME_Y6: _mav_type = MAV_TYPE_HEXAROTOR; _frame_class_string = "Y6"; @@ -1153,7 +1158,8 @@ void AP_MotorsMatrix::setup_motors(motor_frame_class frame_class, motor_frame_ty } } break; - +#endif //FRAME_Y6 +#if FRAME_DECA case MOTOR_FRAME_DECA: _mav_type = MAV_TYPE_DECAROTOR; _frame_class_string = "DECA"; @@ -1198,13 +1204,15 @@ void AP_MotorsMatrix::setup_motors(motor_frame_class frame_class, motor_frame_ty break; } break; - +#endif //FRAME_DECA default: // matrix doesn't support the configured class _frame_class_string = "UNSUPPORTED"; success = false; _mav_type = MAV_TYPE_GENERIC; break; + + } // switch frame_class // normalise factors to magnitude 0.5 diff --git a/libraries/AP_Motors/AP_Motors_Class.h b/libraries/AP_Motors/AP_Motors_Class.h index eb9a0ba120..e87445ac71 100644 --- a/libraries/AP_Motors/AP_Motors_Class.h +++ b/libraries/AP_Motors/AP_Motors_Class.h @@ -22,6 +22,28 @@ #define AP_MOTORS_MAX_NUM_MOTORS 12 +#ifndef FRAME_QUAD +#define FRAME_QUAD 1 +#endif +#ifndef FRAME_HEXA +#define FRAME_HEXA 1 +#endif +#ifndef FRAME_OCTA +#define FRAME_OCTA 1 +#endif +#ifndef FRAME_DECA +#define FRAME_DECA 1 +#endif +#ifndef FRAME_DODECAHEXA +#define FRAME_DODECAHEXA 1 +#endif +#ifndef FRAME_Y6 +#define FRAME_Y6 1 +#endif +#ifndef FRAME_OCTAQUAD +#define FRAME_OCTAQUAD 1 +#endif + // motor update rate #define AP_MOTORS_SPEED_DEFAULT 490 // default output rate to the motors