From 7c14c49701305c19c59a94bd8638730dccdbf9f1 Mon Sep 17 00:00:00 2001 From: mikeller Date: Fri, 16 Jun 2017 01:43:08 +1200 Subject: [PATCH] Changed 'pwmWriteDshotCommand' to use switch for better readability. --- src/main/drivers/pwm_output.c | 14 ++++++++++++-- src/main/drivers/pwm_output.h | 8 ++++---- src/main/fc/fc_core.c | 5 +++-- src/main/fc/fc_msp.c | 1 + 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/main/drivers/pwm_output.c b/src/main/drivers/pwm_output.c index 7a889af5f7..9a7c75611b 100644 --- a/src/main/drivers/pwm_output.c +++ b/src/main/drivers/pwm_output.c @@ -338,11 +338,21 @@ void pwmWriteDshotCommand(uint8_t index, uint8_t command) motorDmaOutput_t *const motor = getMotorDmaOutput(index); unsigned repeats; - if ((command >= DSHOT_CMD_SPIN_ONE_WAY && command <= DSHOT_CMD_3D_MODE_ON ) || command == DSHOT_CMD_SAVE_SETTINGS || (command >= DSHOT_CMD_ROTATE_NORMAL && command <= DSHOT_CMD_ROTATE_REVERSE) ) { + switch (command) { + case DSHOT_CMD_SPIN_DIRECTION_1: + case DSHOT_CMD_SPIN_DIRECTION_2: + case DSHOT_CMD_3D_MODE_OFF: + case DSHOT_CMD_3D_MODE_ON: + case DSHOT_CMD_SAVE_SETTINGS: + case DSHOT_CMD_SPIN_DIRECTION_NORMAL: + case DSHOT_CMD_SPIN_DIRECTION_REVERSED: repeats = 10; - } else { + break; + default: repeats = 1; + break; } + for (; repeats; repeats--) { motor->requestTelemetry = true; pwmWritePtr(index, command); diff --git a/src/main/drivers/pwm_output.h b/src/main/drivers/pwm_output.h index 1a23e493ff..336671579e 100644 --- a/src/main/drivers/pwm_output.h +++ b/src/main/drivers/pwm_output.h @@ -36,14 +36,14 @@ typedef enum { DSHOT_CMD_BEEP4, DSHOT_CMD_BEEP5, DSHOT_CMD_ESC_INFO, - DSHOT_CMD_SPIN_ONE_WAY, - DSHOT_CMD_SPIN_OTHER_WAY, + DSHOT_CMD_SPIN_DIRECTION_1, + DSHOT_CMD_SPIN_DIRECTION_2, DSHOT_CMD_3D_MODE_OFF, DSHOT_CMD_3D_MODE_ON, DSHOT_CMD_SETTINGS_REQUEST, DSHOT_CMD_SAVE_SETTINGS, - DSHOT_CMD_ROTATE_NORMAL = 20, //Blheli_S only command - DSHOT_CMD_ROTATE_REVERSE = 21, //Blheli_S only command + DSHOT_CMD_SPIN_DIRECTION_NORMAL = 20, //Blheli_S only command + DSHOT_CMD_SPIN_DIRECTION_REVERSED = 21, //Blheli_S only command DSHOT_CMD_MAX = 47 } dshotCommands_e; diff --git a/src/main/fc/fc_core.c b/src/main/fc/fc_core.c index 5685bf7bb7..4c7b2a6120 100644 --- a/src/main/fc/fc_core.c +++ b/src/main/fc/fc_core.c @@ -207,16 +207,17 @@ void mwArm(void) } if (!ARMING_FLAG(PREVENT_ARMING)) { #ifdef USE_DSHOT + //TODO: Use BOXDSHOTREVERSE here if (!feature(FEATURE_3D) && !IS_RC_MODE_ACTIVE(BOX3DDISABLESWITCH)) { reverseMotors = false; for (unsigned index = 0; index < getMotorCount(); index++) { - pwmWriteDshotCommand(index, DSHOT_CMD_ROTATE_NORMAL); + pwmWriteDshotCommand(index, DSHOT_CMD_SPIN_DIRECTION_NORMAL); } } if (!feature(FEATURE_3D) && IS_RC_MODE_ACTIVE(BOX3DDISABLESWITCH)) { reverseMotors = true; for (unsigned index = 0; index < getMotorCount(); index++) { - pwmWriteDshotCommand(index, DSHOT_CMD_ROTATE_REVERSE); + pwmWriteDshotCommand(index, DSHOT_CMD_SPIN_DIRECTION_REVERSED); } } #endif diff --git a/src/main/fc/fc_msp.c b/src/main/fc/fc_msp.c index 9998228362..dbcbfbd089 100644 --- a/src/main/fc/fc_msp.c +++ b/src/main/fc/fc_msp.c @@ -370,6 +370,7 @@ void initActiveBoxIds(void) BME(BOXFPVANGLEMIX); + //TODO: Split this into BOX3DDISABLESWITCH and BOXDSHOTREVERSE BME(BOX3DDISABLESWITCH); if (feature(FEATURE_SERVO_TILT)) {