From 4ea4f7c2177d26062781621910ac5ee16395a569 Mon Sep 17 00:00:00 2001 From: blckmn Date: Sat, 17 Dec 2016 17:09:08 +1100 Subject: [PATCH] Introduced PreInit. --- src/main/main.c | 30 +++++++++----- src/main/target/BLUEJAYF4/initialisation.c | 48 ++++++++++++++++++++++ src/main/target/BLUEJAYF4/target.h | 3 ++ 3 files changed, 70 insertions(+), 11 deletions(-) create mode 100644 src/main/target/BLUEJAYF4/initialisation.c diff --git a/src/main/main.c b/src/main/main.c index 90aaa0330..6412f8d6d 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -124,6 +124,10 @@ #include "build/build_config.h" #include "build/debug.h" +#ifdef TARGET_PREINIT +void targetPreInit(void); +#endif + #ifdef TARGET_BUS_INIT void targetBusInit(void); #endif @@ -180,7 +184,11 @@ void init(void) // Latch active features to be used for feature() in the remainder of init(). latchActiveFeatures(); - ledInit(&masterConfig.statusLedConfig); +#ifdef TARGET_PREINIT + targetPreInit(); +#endif + + ledInit(statusLedConfig()); LED2_ON; #ifdef USE_EXTI @@ -268,9 +276,9 @@ void init(void) #endif #ifdef USE_QUAD_MIXER_ONLY - motorInit(&masterConfig.motorConfig, idlePulse, QUAD_MOTOR_COUNT); + motorInit(motorConfig(), idlePulse, QUAD_MOTOR_COUNT); #else - motorInit(&masterConfig.motorConfig, idlePulse, motorCount); + motorInit(motorConfig(), idlePulse, motorCount); #endif #ifdef USE_SERVOS @@ -291,7 +299,7 @@ void init(void) systemState |= SYSTEM_STATE_MOTORS_READY; #ifdef BEEPER - beeperInit(&masterConfig.beeperConfig); + beeperInit(beeperConfig()); #endif /* temp until PGs are implemented. */ #ifdef INVERTER @@ -350,10 +358,10 @@ void init(void) adcConfig()->vbat.enabled = feature(FEATURE_VBAT); adcConfig()->currentMeter.enabled = feature(FEATURE_CURRENT_METER); adcConfig()->rssi.enabled = feature(FEATURE_RSSI_ADC); - adcInit(&masterConfig.adcConfig); + adcInit(adcConfig()); #endif - initBoardAlignment(&masterConfig.boardAlignment); + initBoardAlignment(boardAlignment()); #ifdef CMS cmsInit(); @@ -361,7 +369,7 @@ void init(void) #ifdef USE_DASHBOARD if (feature(FEATURE_DASHBOARD)) { - dashboardInit(&masterConfig.rxConfig); + dashboardInit(rxConfig()); } #endif @@ -428,12 +436,12 @@ void init(void) #endif #ifdef USE_CLI - cliInit(&masterConfig.serialConfig); + cliInit(serialConfig()); #endif - failsafeInit(&masterConfig.rxConfig, flight3DConfig()->deadband3d_throttle); + failsafeInit(rxConfig(), flight3DConfig()->deadband3d_throttle); - rxInit(&masterConfig.rxConfig, masterConfig.modeActivationConditions); + rxInit(rxConfig(), masterConfig.modeActivationConditions); #ifdef GPS if (feature(FEATURE_GPS)) { @@ -449,7 +457,7 @@ void init(void) #endif #ifdef LED_STRIP - ledStripInit(&masterConfig.ledStripConfig); + ledStripInit(ledStripConfig()); if (feature(FEATURE_LED_STRIP)) { ledStripEnable(); diff --git a/src/main/target/BLUEJAYF4/initialisation.c b/src/main/target/BLUEJAYF4/initialisation.c new file mode 100644 index 000000000..a11301baa --- /dev/null +++ b/src/main/target/BLUEJAYF4/initialisation.c @@ -0,0 +1,48 @@ +/* + * This file is part of Cleanflight. + * + * Cleanflight is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Cleanflight is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Cleanflight. If not, see . + */ + +#include +#include + +#include "platform.h" +#include "drivers/bus_i2c.h" +#include "drivers/bus_spi.h" +#include "hardware_revision.h" +#include "config/config_master.h" +#include "drivers/io.h" +#include "config/feature.h" + +void targetPreInit(void) +{ + /* enable the built in inverter if telemetry is setup for the UART1 */ + if (serialConfig()->portConfigs[SERIAL_PORT_USART1].functionMask & FUNCTION_TELEMETRY_SMARTPORT && + telemetryConfig()->telemetry_inversion && + feature(FEATURE_TELEMETRY)) { + IO_t io = IOGetByTag(IO_TAG(UART1_INVERTER)); + IOInit(io, OWNER_INVERTER, 1); + IOConfigGPIO(io, IOCFG_OUT_PP); + IOHi(io); + } + + /* ensure the CS pin for the flash is pulled hi so any SD card initialisation does not impact the chip */ + if (hardwareRevision == BJF4_REV3) { + IO_t io = IOGetByTag(IO_TAG(M25P16_CS_PIN)); + IOConfigGPIO(io, IOCFG_OUT_PP); + IOHi(io); + } +} + diff --git a/src/main/target/BLUEJAYF4/target.h b/src/main/target/BLUEJAYF4/target.h index 750ebf7ab..17a1d389a 100644 --- a/src/main/target/BLUEJAYF4/target.h +++ b/src/main/target/BLUEJAYF4/target.h @@ -19,6 +19,7 @@ #define TARGET_BOARD_IDENTIFIER "BJF4" #define TARGET_CONFIG #define TARGET_VALIDATECONFIG +#define TARGET_PREINIT #define CONFIG_START_FLASH_ADDRESS (0x08080000) //0x08080000 to 0x080A0000 (FLASH_Sector_8) @@ -40,6 +41,8 @@ #define INVERTER PB15 #define INVERTER_USART USART6 +#define UART1_INVERTER PC9 + // MPU6500 interrupt #define USE_EXTI #define MPU_INT_EXTI PC5