mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-03-16 08:29:15 +01:00
LP-345 Simplify xtalcap callback check, reuse PIOS_RFM22B_SetXtalCap at boot
This commit is contained in:
parent
340d304558
commit
2872a3467a
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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)) {
|
||||
|
@ -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. */
|
||||
|
@ -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,
|
||||
|
@ -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. */
|
||||
|
@ -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,
|
||||
|
@ -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. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user