From 2872a3467ae368d5373d25c53d162b3be5bb8b20 Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Thu, 22 Dec 2016 18:49:19 +0100 Subject: [PATCH] LP-345 Simplify xtalcap callback check, reuse PIOS_RFM22B_SetXtalCap at boot --- flight/modules/OPLink/oplinkmod.c | 18 +++++++++--------- flight/modules/System/systemmod.c | 18 +++++++++--------- .../discoveryf4bare/firmware/pios_board.c | 3 ++- .../boards/oplinkmini/firmware/pios_board.c | 4 +--- .../targets/boards/revolution/board_hw_defs.c | 4 ++-- .../boards/revolution/firmware/pios_board.c | 5 +---- flight/targets/boards/sparky2/board_hw_defs.c | 2 +- .../boards/sparky2/firmware/pios_board.c | 4 +--- 8 files changed, 26 insertions(+), 32 deletions(-) diff --git a/flight/modules/OPLink/oplinkmod.c b/flight/modules/OPLink/oplinkmod.c index 8c0b4195a..a1106a1e9 100644 --- a/flight/modules/OPLink/oplinkmod.c +++ b/flight/modules/OPLink/oplinkmod.c @@ -68,7 +68,7 @@ static xTaskHandle systemTaskHandle; static bool stackOverflow; static bool mallocFailed; volatile int initTaskDone = 0; -static OPLinkSettingsData previousOPLinkSettings; +static uint8_t previousRFXtalCap; // Private functions static void systemTask(void *parameters); @@ -136,9 +136,8 @@ static void systemTask(__attribute__((unused)) void *parameters) PIOS_SYS_Reset(); } - // Initialize previousOPLinkSettings used by callback - OPLinkSettingsGet(&previousOPLinkSettings); - + // Initialize previousRFXtalCap used by callback + OPLinkSettingsRFXtalCapGet(&previousRFXtalCap); OPLinkSettingsConnectCallback(oplinkSettingsUpdatedCb); // Initialize vars @@ -255,14 +254,15 @@ void vApplicationMallocFailedHook(void) */ static void oplinkSettingsUpdatedCb(__attribute__((unused)) UAVObjEvent *ev) { - OPLinkSettingsData currentOPLinkSettings; + uint8_t currentRFXtalCap; + + OPLinkSettingsRFXtalCapGet(¤tRFXtalCap); - OPLinkSettingsGet(¤tOPLinkSettings); // Check if RFXtalCap value changed - if (currentOPLinkSettings.RFXtalCap != previousOPLinkSettings.RFXtalCap) { - PIOS_RFM22B_SetXtalCap(pios_rfm22b_id, currentOPLinkSettings.RFXtalCap); + if (currentRFXtalCap != previousRFXtalCap) { + PIOS_RFM22B_SetXtalCap(pios_rfm22b_id, currentRFXtalCap); PIOS_RFM22B_Reinit(pios_rfm22b_id); - previousOPLinkSettings = currentOPLinkSettings; + previousRFXtalCap = currentRFXtalCap; } } diff --git a/flight/modules/System/systemmod.c b/flight/modules/System/systemmod.c index 2a911d5bd..a09a77fa3 100644 --- a/flight/modules/System/systemmod.c +++ b/flight/modules/System/systemmod.c @@ -130,7 +130,7 @@ static uint8_t i2c_error_activity[PIOS_I2C_ERROR_COUNT_NUMELEM]; #endif #ifdef PIOS_INCLUDE_RFM22B -static OPLinkSettingsData previousOPLinkSettings; +static uint8_t previousRFXtalCap; static void oplinkSettingsUpdatedCb(UAVObjEvent *ev); #endif @@ -237,9 +237,8 @@ static void systemTask(__attribute__((unused)) void *parameters) SystemSettingsConnectCallback(checkSettingsUpdatedCb); #ifdef PIOS_INCLUDE_RFM22B - // Initialize previousOPLinkSettings used by callback - OPLinkSettingsGet(&previousOPLinkSettings); - + // Initialize previousRFXtalCap used by callback + OPLinkSettingsRFXtalCapGet(&previousRFXtalCap); OPLinkSettingsConnectCallback(oplinkSettingsUpdatedCb); #endif @@ -472,14 +471,15 @@ static void checkSettingsUpdatedCb(__attribute__((unused)) UAVObjEvent *ev) */ static void oplinkSettingsUpdatedCb(__attribute__((unused)) UAVObjEvent *ev) { - OPLinkSettingsData currentOPLinkSettings; + uint8_t currentRFXtalCap; + + OPLinkSettingsRFXtalCapGet(¤tRFXtalCap); - OPLinkSettingsGet(¤tOPLinkSettings); // Check if RFXtalCap value changed - if (currentOPLinkSettings.RFXtalCap != previousOPLinkSettings.RFXtalCap) { - PIOS_RFM22B_SetXtalCap(pios_rfm22b_id, currentOPLinkSettings.RFXtalCap); + if (currentRFXtalCap != previousRFXtalCap) { + PIOS_RFM22B_SetXtalCap(pios_rfm22b_id, currentRFXtalCap); PIOS_RFM22B_Reinit(pios_rfm22b_id); - previousOPLinkSettings = currentOPLinkSettings; + previousRFXtalCap = currentRFXtalCap; } } #endif /* ifdef PIOS_INCLUDE_RFM22B */ diff --git a/flight/targets/boards/discoveryf4bare/firmware/pios_board.c b/flight/targets/boards/discoveryf4bare/firmware/pios_board.c index f1b3cfe80..fe2559b32 100644 --- a/flight/targets/boards/discoveryf4bare/firmware/pios_board.c +++ b/flight/targets/boards/discoveryf4bare/firmware/pios_board.c @@ -825,8 +825,9 @@ void PIOS_Board_Init(void) /* Set the radio configuration parameters. */ PIOS_RFM22B_SetDeviceID(pios_rfm22b_id, oplinkSettings.CustomDeviceID); - PIOS_RFM22B_SetChannelConfig(pios_rfm22b_id, datarate, oplinkSettings.MinChannel, oplinkSettings.MaxChannel, is_coordinator, is_oneway, ppm_mode, ppm_only); PIOS_RFM22B_SetCoordinatorID(pios_rfm22b_id, oplinkSettings.CoordID); + PIOS_RFM22B_SetXtalCap(pios_rfm22b_id, oplinkSettings.RFXtalCap); + PIOS_RFM22B_SetChannelConfig(pios_rfm22b_id, datarate, oplinkSettings.MinChannel, oplinkSettings.MaxChannel, is_coordinator, data_mode, ppm_mode); /* Set the PPM callback if we should be receiving PPM. */ if (ppm_mode || (ppm_only && !is_coordinator)) { diff --git a/flight/targets/boards/oplinkmini/firmware/pios_board.c b/flight/targets/boards/oplinkmini/firmware/pios_board.c index a3dd3f4af..f1e3b78a5 100644 --- a/flight/targets/boards/oplinkmini/firmware/pios_board.c +++ b/flight/targets/boards/oplinkmini/firmware/pios_board.c @@ -414,9 +414,6 @@ void PIOS_Board_Init(void) // Configure the RFM22B device const struct pios_rfm22b_cfg *rfm22b_cfg = PIOS_BOARD_HW_DEFS_GetRfm22Cfg(bdinfo->board_rev); - // Set the Xtal capacitor value - pios_rfm22b_cfg.RFXtalCap = oplinkSettings.RFXtalCap; - if (PIOS_RFM22B_Init(&pios_rfm22b_id, PIOS_RFM22_SPI_PORT, rfm22b_cfg->slave_num, rfm22b_cfg, oplinkSettings.RFBand)) { PIOS_Assert(0); } @@ -489,6 +486,7 @@ void PIOS_Board_Init(void) // Set the radio configuration parameters. PIOS_RFM22B_SetDeviceID(pios_rfm22b_id, oplinkSettings.CustomDeviceID); PIOS_RFM22B_SetCoordinatorID(pios_rfm22b_id, oplinkSettings.CoordID); + PIOS_RFM22B_SetXtalCap(pios_rfm22b_id, oplinkSettings.RFXtalCap); PIOS_RFM22B_SetChannelConfig(pios_rfm22b_id, datarate, oplinkSettings.MinChannel, oplinkSettings.MaxChannel, is_coordinator, data_mode, ppm_mode); /* Set the PPM callback if we should be receiving PPM. */ diff --git a/flight/targets/boards/revolution/board_hw_defs.c b/flight/targets/boards/revolution/board_hw_defs.c index 251e6a5f5..74770d980 100644 --- a/flight/targets/boards/revolution/board_hw_defs.c +++ b/flight/targets/boards/revolution/board_hw_defs.c @@ -640,7 +640,7 @@ static const struct pios_exti_cfg pios_exti_rfm22b_cfg __exti_config = { }, }; -struct pios_rfm22b_cfg pios_rfm22b_rm1_cfg = { +const struct pios_rfm22b_cfg pios_rfm22b_rm1_cfg = { .spi_cfg = &pios_spi_telem_flash_cfg, .exti_cfg = &pios_exti_rfm22b_cfg, .RFXtalCap = 0x7f, @@ -648,7 +648,7 @@ struct pios_rfm22b_cfg pios_rfm22b_rm1_cfg = { .gpio_direction = GPIO0_RX_GPIO1_TX, }; -struct pios_rfm22b_cfg pios_rfm22b_rm2_cfg = { +const struct pios_rfm22b_cfg pios_rfm22b_rm2_cfg = { .spi_cfg = &pios_spi_telem_flash_cfg, .exti_cfg = &pios_exti_rfm22b_cfg, .RFXtalCap = 0x7f, diff --git a/flight/targets/boards/revolution/firmware/pios_board.c b/flight/targets/boards/revolution/firmware/pios_board.c index d6fb08c3e..15b0a2f9b 100644 --- a/flight/targets/boards/revolution/firmware/pios_board.c +++ b/flight/targets/boards/revolution/firmware/pios_board.c @@ -913,10 +913,6 @@ void PIOS_Board_Init(void) /* Configure the RFM22B device. */ const struct pios_rfm22b_cfg *rfm22b_cfg = PIOS_BOARD_HW_DEFS_GetRfm22Cfg(bdinfo->board_rev); - // Set the Xtal capacitor value - pios_rfm22b_rm1_cfg.RFXtalCap = oplinkSettings.RFXtalCap; - pios_rfm22b_rm2_cfg.RFXtalCap = oplinkSettings.RFXtalCap; - if (PIOS_RFM22B_Init(&pios_rfm22b_id, PIOS_RFM22_SPI_PORT, rfm22b_cfg->slave_num, rfm22b_cfg, oplinkSettings.RFBand)) { PIOS_Assert(0); } @@ -960,6 +956,7 @@ void PIOS_Board_Init(void) /* Set the radio configuration parameters. */ PIOS_RFM22B_SetDeviceID(pios_rfm22b_id, oplinkSettings.CustomDeviceID); PIOS_RFM22B_SetCoordinatorID(pios_rfm22b_id, oplinkSettings.CoordID); + PIOS_RFM22B_SetXtalCap(pios_rfm22b_id, oplinkSettings.RFXtalCap); PIOS_RFM22B_SetChannelConfig(pios_rfm22b_id, datarate, oplinkSettings.MinChannel, oplinkSettings.MaxChannel, is_coordinator, data_mode, ppm_mode); /* Set the PPM callback if we should be receiving PPM. */ diff --git a/flight/targets/boards/sparky2/board_hw_defs.c b/flight/targets/boards/sparky2/board_hw_defs.c index 2c63d0fcf..25afb14e2 100644 --- a/flight/targets/boards/sparky2/board_hw_defs.c +++ b/flight/targets/boards/sparky2/board_hw_defs.c @@ -431,7 +431,7 @@ static const struct pios_exti_cfg pios_exti_rfm22b_cfg __exti_config = { }, }; -struct pios_rfm22b_cfg pios_rfm22b_cfg = { +const struct pios_rfm22b_cfg pios_rfm22b_cfg = { .spi_cfg = &pios_spi_telem_flash_cfg, .exti_cfg = &pios_exti_rfm22b_cfg, .RFXtalCap = 0x7f, diff --git a/flight/targets/boards/sparky2/firmware/pios_board.c b/flight/targets/boards/sparky2/firmware/pios_board.c index 9823bf135..c73b96aea 100644 --- a/flight/targets/boards/sparky2/firmware/pios_board.c +++ b/flight/targets/boards/sparky2/firmware/pios_board.c @@ -853,9 +853,6 @@ void PIOS_Board_Init(void) /* Configure the RFM22B device. */ const struct pios_rfm22b_cfg *rfm22b_cfg = PIOS_BOARD_HW_DEFS_GetRfm22Cfg(bdinfo->board_rev); - // Set the Xtal capacitor value - pios_rfm22b_cfg.RFXtalCap = oplinkSettings.RFXtalCap; - if (PIOS_RFM22B_Init(&pios_rfm22b_id, PIOS_RFM22_SPI_PORT, rfm22b_cfg->slave_num, rfm22b_cfg, oplinkSettings.RFBand)) { PIOS_Assert(0); } @@ -899,6 +896,7 @@ void PIOS_Board_Init(void) /* Set the radio configuration parameters. */ PIOS_RFM22B_SetDeviceID(pios_rfm22b_id, oplinkSettings.CustomDeviceID); PIOS_RFM22B_SetCoordinatorID(pios_rfm22b_id, oplinkSettings.CoordID); + PIOS_RFM22B_SetXtalCap(pios_rfm22b_id, oplinkSettings.RFXtalCap); PIOS_RFM22B_SetChannelConfig(pios_rfm22b_id, datarate, oplinkSettings.MinChannel, oplinkSettings.MaxChannel, is_coordinator, data_mode, ppm_mode); /* Set the PPM callback if we should be receiving PPM. */