diff --git a/src/main/config/config.c b/src/main/config/config.c index 123a124b2..c0fd1010c 100755 --- a/src/main/config/config.c +++ b/src/main/config/config.c @@ -583,6 +583,7 @@ static void resetConf(void) #ifdef ALIENFLIGHT featureSet(FEATURE_RX_SERIAL); featureSet(FEATURE_MOTOR_STOP); + featureClear(FEATURE_ONESHOT125); #ifdef ALIENFLIGHTF3 masterConfig.serialConfig.portConfigs[2].functionMask = FUNCTION_RX_SERIAL; masterConfig.batteryConfig.vbatscale = 20; @@ -595,6 +596,14 @@ static void resetConf(void) masterConfig.escAndServoConfig.minthrottle = 1000; masterConfig.escAndServoConfig.maxthrottle = 2000; masterConfig.motor_pwm_rate = 32000; + currentProfile->pidProfile.pidController = 2; + masterConfig.failsafeConfig.failsafe_delay = 2; + masterConfig.failsafeConfig.failsafe_off_delay = 0; + masterConfig.mixerConfig.yaw_jump_prevention_limit = 500; + currentControlRateProfile->rcRate8 = 100; + currentControlRateProfile->rates[FD_PITCH] = 20; + currentControlRateProfile->rates[FD_ROLL] = 20; + currentControlRateProfile->rates[FD_YAW] = 20; parseRcChannels("TAER1234", &masterConfig.rxConfig); // { 1.0f, -0.414178f, 1.0f, -1.0f }, // REAR_R diff --git a/src/main/drivers/light_led.h b/src/main/drivers/light_led.h index cf6a2bea9..83d436d6f 100644 --- a/src/main/drivers/light_led.h +++ b/src/main/drivers/light_led.h @@ -17,15 +17,20 @@ #pragma once +struct { + GPIO_TypeDef *gpio; + uint16_t pin; +} led_config[3]; + // Helpful macros #ifdef LED0 -#define LED0_TOGGLE digitalToggle(LED0_GPIO, LED0_PIN) +#define LED0_TOGGLE digitalToggle(led_config[0].gpio, led_config[0].pin) #ifndef LED0_INVERTED -#define LED0_OFF digitalHi(LED0_GPIO, LED0_PIN) -#define LED0_ON digitalLo(LED0_GPIO, LED0_PIN) +#define LED0_OFF digitalHi(led_config[0].gpio, led_config[0].pin) +#define LED0_ON digitalLo(led_config[0].gpio, led_config[0].pin) #else -#define LED0_OFF digitalLo(LED0_GPIO, LED0_PIN) -#define LED0_ON digitalHi(LED0_GPIO, LED0_PIN) +#define LED0_OFF digitalLo(led_config[0].gpio, led_config[0].pin) +#define LED0_ON digitalHi(led_config[0].gpio, led_config[0].pin) #endif // inverted #else #define LED0_TOGGLE do {} while(0) @@ -34,13 +39,13 @@ #endif #ifdef LED1 -#define LED1_TOGGLE digitalToggle(LED1_GPIO, LED1_PIN) +#define LED1_TOGGLE digitalToggle(led_config[1].gpio, led_config[1].pin) #ifndef LED1_INVERTED -#define LED1_OFF digitalHi(LED1_GPIO, LED1_PIN) -#define LED1_ON digitalLo(LED1_GPIO, LED1_PIN) +#define LED1_OFF digitalHi(led_config[1].gpio, led_config[1].pin) +#define LED1_ON digitalLo(led_config[1].gpio, led_config[1].pin) #else -#define LED1_OFF digitalLo(LED1_GPIO, LED1_PIN) -#define LED1_ON digitalHi(LED1_GPIO, LED1_PIN) +#define LED1_OFF digitalLo(led_config[1].gpio, led_config[1].pin) +#define LED1_ON digitalHi(led_config[1].gpio, led_config[1].pin) #endif // inverted #else #define LED1_TOGGLE do {} while(0) @@ -50,13 +55,13 @@ #ifdef LED2 -#define LED2_TOGGLE digitalToggle(LED2_GPIO, LED2_PIN) +#define LED2_TOGGLE digitalToggle(led_config[2].gpio, led_config[2].pin) #ifndef LED2_INVERTED -#define LED2_OFF digitalHi(LED2_GPIO, LED2_PIN) -#define LED2_ON digitalLo(LED2_GPIO, LED2_PIN) +#define LED2_OFF digitalHi(led_config[2].gpio, led_config[2].pin) +#define LED2_ON digitalLo(led_config[2].gpio, led_config[2].pin) #else -#define LED2_OFF digitalLo(LED2_GPIO, LED2_PIN) -#define LED2_ON digitalHi(LED2_GPIO, LED2_PIN) +#define LED2_OFF digitalLo(led_config[2].gpio, led_config[2].pin) +#define LED2_ON digitalHi(led_config[2].gpio, led_config[2].pin) #endif // inverted #else #define LED2_TOGGLE do {} while(0) @@ -64,4 +69,4 @@ #define LED2_ON do {} while(0) #endif -void ledInit(void); +void ledInit(bool alternative_led); diff --git a/src/main/drivers/light_led_stm32f10x.c b/src/main/drivers/light_led_stm32f10x.c index 9b5ab4bf7..51fe4e03f 100644 --- a/src/main/drivers/light_led_stm32f10x.c +++ b/src/main/drivers/light_led_stm32f10x.c @@ -28,56 +28,37 @@ #include "light_led.h" - -void ledInit(void) +void ledInit(bool alternative_led) { + UNUSED(alternative_led); #if defined(LED0) || defined(LED1) || defined(LED2) - uint32_t i; - - struct { - GPIO_TypeDef *gpio; - gpio_config_t cfg; - } gpio_setup[] = { -#ifdef LED0 - { - .gpio = LED0_GPIO, - .cfg = { LED0_PIN, Mode_Out_PP, Speed_2MHz } - }, -#endif -#ifdef LED1 - { - .gpio = LED1_GPIO, - .cfg = { LED1_PIN, Mode_Out_PP, Speed_2MHz } - }, -#endif -#ifdef LED2 - { - .gpio = LED2_GPIO, - .cfg = { LED2_PIN, Mode_Out_PP, Speed_2MHz } - } -#endif - }; - - uint8_t gpio_count = ARRAYLEN(gpio_setup); - + gpio_config_t cfg; + cfg.mode = Mode_Out_PP; + cfg.speed = Speed_2MHz; #ifdef LED0 RCC_APB2PeriphClockCmd(LED0_PERIPHERAL, ENABLE); + led_config[0].gpio = LED0_GPIO; + led_config[0].pin = LED0_PIN; + cfg.pin = led_config[0].pin; + LED0_OFF; + gpioInit(led_config[0].gpio, &cfg); #endif #ifdef LED1 RCC_APB2PeriphClockCmd(LED1_PERIPHERAL, ENABLE); + led_config[1].gpio = LED1_GPIO; + led_config[1].pin = LED1_PIN; + cfg.pin = led_config[1].pin; + LED1_OFF; + gpioInit(led_config[1].gpio, &cfg); #endif #ifdef LED2 RCC_APB2PeriphClockCmd(LED2_PERIPHERAL, ENABLE); -#endif - - LED0_OFF; - LED1_OFF; + led_config[2].gpio = LED2_GPIO; + led_config[2].pin = LED2_PIN; + cfg.pin = led_config[2].pin; LED2_OFF; - - for (i = 0; i < gpio_count; i++) { - gpioInit(gpio_setup[i].gpio, &gpio_setup[i].cfg); - } - + gpioInit(led_config[2].gpio, &cfg); +#endif #endif } diff --git a/src/main/drivers/light_led_stm32f30x.c b/src/main/drivers/light_led_stm32f30x.c index cd12a07f9..d05fa56e5 100644 --- a/src/main/drivers/light_led_stm32f30x.c +++ b/src/main/drivers/light_led_stm32f30x.c @@ -27,52 +27,62 @@ #include "light_led.h" -void ledInit(void) +void ledInit(bool alternative_led) { - uint32_t i; - - struct { - GPIO_TypeDef *gpio; - gpio_config_t cfg; - } gpio_setup[] = { +#if defined(LED0) || defined(LED1) || defined(LED2) + gpio_config_t cfg; + cfg.mode = Mode_Out_PP; + cfg.speed = Speed_2MHz; #ifdef LED0 - { - .gpio = LED0_GPIO, - .cfg = { LED0_PIN, Mode_Out_PP, Speed_2MHz } - }, + if (alternative_led) { +#ifdef LED0_PERIPHERAL_2 + RCC_AHBPeriphClockCmd(LED0_PERIPHERAL_2, ENABLE); + led_config[0].gpio = LED0_GPIO_2; + led_config[0].pin = LED0_PIN_2; #endif -#ifdef LED1 - { - .gpio = LED1_GPIO, - .cfg = { LED1_PIN, Mode_Out_PP, Speed_2MHz } - }, -#endif -#ifdef LED2 - { - .gpio = LED2_GPIO, - .cfg = { LED2_PIN, Mode_Out_PP, Speed_2MHz } - } -#endif - }; - - uint8_t gpio_count = ARRAYLEN(gpio_setup); - -#ifdef LED0 - RCC_AHBPeriphClockCmd(LED0_PERIPHERAL, ENABLE); -#endif -#ifdef LED1 - RCC_AHBPeriphClockCmd(LED1_PERIPHERAL, ENABLE); -#endif -#ifdef LED2 - RCC_AHBPeriphClockCmd(LED2_PERIPHERAL, ENABLE); -#endif - - LED0_OFF; - LED1_OFF; - LED2_OFF; - - for (i = 0; i < gpio_count; i++) { - gpioInit(gpio_setup[i].gpio, &gpio_setup[i].cfg); + } else { + RCC_AHBPeriphClockCmd(LED0_PERIPHERAL, ENABLE); + led_config[0].gpio = LED0_GPIO; + led_config[0].pin = LED0_PIN; } + cfg.pin = led_config[0].pin; + LED0_OFF; + gpioInit(led_config[0].gpio, &cfg); +#endif +#ifdef LED1 + if (alternative_led) { +#ifdef LED1_PERIPHERAL_2 + RCC_AHBPeriphClockCmd(LED1_PERIPHERAL_2, ENABLE); + led_config[1].gpio = LED1_GPIO_2; + led_config[1].pin = LED1_PIN_2; +#endif + } else { + RCC_AHBPeriphClockCmd(LED1_PERIPHERAL, ENABLE); + led_config[1].gpio = LED1_GPIO; + led_config[1].pin = LED1_PIN; + } + cfg.pin = led_config[1].pin; + LED1_OFF; + gpioInit(led_config[1].gpio, &cfg); +#endif +#ifdef LED2 + if (alternative_led) { +#ifdef LED2_PERIPHERAL_2 + RCC_AHBPeriphClockCmd(LED2_PERIPHERAL_2, ENABLE); + led_config[2].gpio = LED2_GPIO_2; + led_config[2].pin = LED2_PIN_2; +#endif + } else { + RCC_AHBPeriphClockCmd(LED2_PERIPHERAL, ENABLE); + led_config[2].gpio = LED2_GPIO; + led_config[2].pin = LED2_PIN; + } + cfg.pin = led_config[2].pin; + LED2_OFF; + gpioInit(led_config[2].gpio, &cfg); +#endif +#else + UNUSED(alternative_led); +#endif } diff --git a/src/main/main.c b/src/main/main.c index 80e4ac0e4..5a71368cc 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -189,7 +189,15 @@ void init(void) // Latch active features to be used for feature() in the remainder of init(). latchActiveFeatures(); - ledInit(); +#ifdef ALIENFLIGHTF3 + if (hardwareRevision == AFF3_REV_1) { + ledInit(false); + } else { + ledInit(true); + } +#else + ledInit(false); +#endif #ifdef SPRACINGF3MINI gpio_config_t buttonAGpioConfig = {