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 stackOverflow;
|
||||||
static bool mallocFailed;
|
static bool mallocFailed;
|
||||||
volatile int initTaskDone = 0;
|
volatile int initTaskDone = 0;
|
||||||
static OPLinkSettingsData previousOPLinkSettings;
|
static uint8_t previousRFXtalCap;
|
||||||
|
|
||||||
// Private functions
|
// Private functions
|
||||||
static void systemTask(void *parameters);
|
static void systemTask(void *parameters);
|
||||||
@ -136,9 +136,8 @@ static void systemTask(__attribute__((unused)) void *parameters)
|
|||||||
PIOS_SYS_Reset();
|
PIOS_SYS_Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize previousOPLinkSettings used by callback
|
// Initialize previousRFXtalCap used by callback
|
||||||
OPLinkSettingsGet(&previousOPLinkSettings);
|
OPLinkSettingsRFXtalCapGet(&previousRFXtalCap);
|
||||||
|
|
||||||
OPLinkSettingsConnectCallback(oplinkSettingsUpdatedCb);
|
OPLinkSettingsConnectCallback(oplinkSettingsUpdatedCb);
|
||||||
|
|
||||||
// Initialize vars
|
// Initialize vars
|
||||||
@ -255,14 +254,15 @@ void vApplicationMallocFailedHook(void)
|
|||||||
*/
|
*/
|
||||||
static void oplinkSettingsUpdatedCb(__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
|
// Check if RFXtalCap value changed
|
||||||
if (currentOPLinkSettings.RFXtalCap != previousOPLinkSettings.RFXtalCap) {
|
if (currentRFXtalCap != previousRFXtalCap) {
|
||||||
PIOS_RFM22B_SetXtalCap(pios_rfm22b_id, currentOPLinkSettings.RFXtalCap);
|
PIOS_RFM22B_SetXtalCap(pios_rfm22b_id, currentRFXtalCap);
|
||||||
PIOS_RFM22B_Reinit(pios_rfm22b_id);
|
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
|
#endif
|
||||||
|
|
||||||
#ifdef PIOS_INCLUDE_RFM22B
|
#ifdef PIOS_INCLUDE_RFM22B
|
||||||
static OPLinkSettingsData previousOPLinkSettings;
|
static uint8_t previousRFXtalCap;
|
||||||
static void oplinkSettingsUpdatedCb(UAVObjEvent *ev);
|
static void oplinkSettingsUpdatedCb(UAVObjEvent *ev);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -237,9 +237,8 @@ static void systemTask(__attribute__((unused)) void *parameters)
|
|||||||
SystemSettingsConnectCallback(checkSettingsUpdatedCb);
|
SystemSettingsConnectCallback(checkSettingsUpdatedCb);
|
||||||
|
|
||||||
#ifdef PIOS_INCLUDE_RFM22B
|
#ifdef PIOS_INCLUDE_RFM22B
|
||||||
// Initialize previousOPLinkSettings used by callback
|
// Initialize previousRFXtalCap used by callback
|
||||||
OPLinkSettingsGet(&previousOPLinkSettings);
|
OPLinkSettingsRFXtalCapGet(&previousRFXtalCap);
|
||||||
|
|
||||||
OPLinkSettingsConnectCallback(oplinkSettingsUpdatedCb);
|
OPLinkSettingsConnectCallback(oplinkSettingsUpdatedCb);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -472,14 +471,15 @@ static void checkSettingsUpdatedCb(__attribute__((unused)) UAVObjEvent *ev)
|
|||||||
*/
|
*/
|
||||||
static void oplinkSettingsUpdatedCb(__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
|
// Check if RFXtalCap value changed
|
||||||
if (currentOPLinkSettings.RFXtalCap != previousOPLinkSettings.RFXtalCap) {
|
if (currentRFXtalCap != previousRFXtalCap) {
|
||||||
PIOS_RFM22B_SetXtalCap(pios_rfm22b_id, currentOPLinkSettings.RFXtalCap);
|
PIOS_RFM22B_SetXtalCap(pios_rfm22b_id, currentRFXtalCap);
|
||||||
PIOS_RFM22B_Reinit(pios_rfm22b_id);
|
PIOS_RFM22B_Reinit(pios_rfm22b_id);
|
||||||
previousOPLinkSettings = currentOPLinkSettings;
|
previousRFXtalCap = currentRFXtalCap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* ifdef PIOS_INCLUDE_RFM22B */
|
#endif /* ifdef PIOS_INCLUDE_RFM22B */
|
||||||
|
@ -825,8 +825,9 @@ void PIOS_Board_Init(void)
|
|||||||
|
|
||||||
/* Set the radio configuration parameters. */
|
/* Set the radio configuration parameters. */
|
||||||
PIOS_RFM22B_SetDeviceID(pios_rfm22b_id, oplinkSettings.CustomDeviceID);
|
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_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. */
|
/* Set the PPM callback if we should be receiving PPM. */
|
||||||
if (ppm_mode || (ppm_only && !is_coordinator)) {
|
if (ppm_mode || (ppm_only && !is_coordinator)) {
|
||||||
|
@ -414,9 +414,6 @@ void PIOS_Board_Init(void)
|
|||||||
// Configure the RFM22B device
|
// Configure the RFM22B device
|
||||||
const struct pios_rfm22b_cfg *rfm22b_cfg = PIOS_BOARD_HW_DEFS_GetRfm22Cfg(bdinfo->board_rev);
|
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)) {
|
if (PIOS_RFM22B_Init(&pios_rfm22b_id, PIOS_RFM22_SPI_PORT, rfm22b_cfg->slave_num, rfm22b_cfg, oplinkSettings.RFBand)) {
|
||||||
PIOS_Assert(0);
|
PIOS_Assert(0);
|
||||||
}
|
}
|
||||||
@ -489,6 +486,7 @@ void PIOS_Board_Init(void)
|
|||||||
// Set the radio configuration parameters.
|
// Set the radio configuration parameters.
|
||||||
PIOS_RFM22B_SetDeviceID(pios_rfm22b_id, oplinkSettings.CustomDeviceID);
|
PIOS_RFM22B_SetDeviceID(pios_rfm22b_id, oplinkSettings.CustomDeviceID);
|
||||||
PIOS_RFM22B_SetCoordinatorID(pios_rfm22b_id, oplinkSettings.CoordID);
|
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);
|
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. */
|
/* 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,
|
.spi_cfg = &pios_spi_telem_flash_cfg,
|
||||||
.exti_cfg = &pios_exti_rfm22b_cfg,
|
.exti_cfg = &pios_exti_rfm22b_cfg,
|
||||||
.RFXtalCap = 0x7f,
|
.RFXtalCap = 0x7f,
|
||||||
@ -648,7 +648,7 @@ struct pios_rfm22b_cfg pios_rfm22b_rm1_cfg = {
|
|||||||
.gpio_direction = GPIO0_RX_GPIO1_TX,
|
.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,
|
.spi_cfg = &pios_spi_telem_flash_cfg,
|
||||||
.exti_cfg = &pios_exti_rfm22b_cfg,
|
.exti_cfg = &pios_exti_rfm22b_cfg,
|
||||||
.RFXtalCap = 0x7f,
|
.RFXtalCap = 0x7f,
|
||||||
|
@ -913,10 +913,6 @@ void PIOS_Board_Init(void)
|
|||||||
/* Configure the RFM22B device. */
|
/* Configure the RFM22B device. */
|
||||||
const struct pios_rfm22b_cfg *rfm22b_cfg = PIOS_BOARD_HW_DEFS_GetRfm22Cfg(bdinfo->board_rev);
|
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)) {
|
if (PIOS_RFM22B_Init(&pios_rfm22b_id, PIOS_RFM22_SPI_PORT, rfm22b_cfg->slave_num, rfm22b_cfg, oplinkSettings.RFBand)) {
|
||||||
PIOS_Assert(0);
|
PIOS_Assert(0);
|
||||||
}
|
}
|
||||||
@ -960,6 +956,7 @@ void PIOS_Board_Init(void)
|
|||||||
/* Set the radio configuration parameters. */
|
/* Set the radio configuration parameters. */
|
||||||
PIOS_RFM22B_SetDeviceID(pios_rfm22b_id, oplinkSettings.CustomDeviceID);
|
PIOS_RFM22B_SetDeviceID(pios_rfm22b_id, oplinkSettings.CustomDeviceID);
|
||||||
PIOS_RFM22B_SetCoordinatorID(pios_rfm22b_id, oplinkSettings.CoordID);
|
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);
|
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. */
|
/* 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,
|
.spi_cfg = &pios_spi_telem_flash_cfg,
|
||||||
.exti_cfg = &pios_exti_rfm22b_cfg,
|
.exti_cfg = &pios_exti_rfm22b_cfg,
|
||||||
.RFXtalCap = 0x7f,
|
.RFXtalCap = 0x7f,
|
||||||
|
@ -853,9 +853,6 @@ void PIOS_Board_Init(void)
|
|||||||
/* Configure the RFM22B device. */
|
/* Configure the RFM22B device. */
|
||||||
const struct pios_rfm22b_cfg *rfm22b_cfg = PIOS_BOARD_HW_DEFS_GetRfm22Cfg(bdinfo->board_rev);
|
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)) {
|
if (PIOS_RFM22B_Init(&pios_rfm22b_id, PIOS_RFM22_SPI_PORT, rfm22b_cfg->slave_num, rfm22b_cfg, oplinkSettings.RFBand)) {
|
||||||
PIOS_Assert(0);
|
PIOS_Assert(0);
|
||||||
}
|
}
|
||||||
@ -899,6 +896,7 @@ void PIOS_Board_Init(void)
|
|||||||
/* Set the radio configuration parameters. */
|
/* Set the radio configuration parameters. */
|
||||||
PIOS_RFM22B_SetDeviceID(pios_rfm22b_id, oplinkSettings.CustomDeviceID);
|
PIOS_RFM22B_SetDeviceID(pios_rfm22b_id, oplinkSettings.CustomDeviceID);
|
||||||
PIOS_RFM22B_SetCoordinatorID(pios_rfm22b_id, oplinkSettings.CoordID);
|
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);
|
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. */
|
/* Set the PPM callback if we should be receiving PPM. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user