cc26xx: use CMD_IEEE_MOD_FILT to change address filtering instead of fully restarting the radio
This commit is contained in:
parent
3a99639294
commit
e19fbc996e
|
@ -631,6 +631,11 @@ init_rf_params(void)
|
||||||
|
|
||||||
cmd->endTrigger.triggerType = TRIG_NEVER;
|
cmd->endTrigger.triggerType = TRIG_NEVER;
|
||||||
cmd->endTime = 0x00000000;
|
cmd->endTime = 0x00000000;
|
||||||
|
|
||||||
|
/* set address filter command */
|
||||||
|
filter_cmd.commandNo = CMD_IEEE_MOD_FILT;
|
||||||
|
memcpy(&filter_cmd.newFrameFiltOpt, &cmd->frameFiltOpt, sizeof(cmd->frameFiltOpt));
|
||||||
|
memcpy(&filter_cmd.newFrameTypes, &cmd->frameTypes, sizeof(cmd->frameTypes));
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static int
|
static int
|
||||||
|
@ -1355,9 +1360,9 @@ get_value(radio_param_t param, radio_value_t *value)
|
||||||
static radio_result_t
|
static radio_result_t
|
||||||
set_value(radio_param_t param, radio_value_t value)
|
set_value(radio_param_t param, radio_value_t value)
|
||||||
{
|
{
|
||||||
uint8_t was_off = 0;
|
|
||||||
radio_result_t rv = RADIO_RESULT_OK;
|
radio_result_t rv = RADIO_RESULT_OK;
|
||||||
rfc_CMD_IEEE_RX_t *cmd = (rfc_CMD_IEEE_RX_t *)cmd_ieee_rx_buf;
|
rfc_CMD_IEEE_RX_t *cmd = (rfc_CMD_IEEE_RX_t *)cmd_ieee_rx_buf;
|
||||||
|
uint8_t old_poll_mode;
|
||||||
|
|
||||||
switch(param) {
|
switch(param) {
|
||||||
case RADIO_PARAM_POWER_MODE:
|
case RADIO_PARAM_POWER_MODE:
|
||||||
|
@ -1411,7 +1416,20 @@ set_value(radio_param_t param, radio_value_t value)
|
||||||
cmd->frameFiltOpt.bPanCoord = 0;
|
cmd->frameFiltOpt.bPanCoord = 0;
|
||||||
cmd->frameFiltOpt.bStrictLenFilter = 0;
|
cmd->frameFiltOpt.bStrictLenFilter = 0;
|
||||||
|
|
||||||
|
old_poll_mode = poll_mode;
|
||||||
poll_mode = (value & RADIO_RX_MODE_POLL_MODE) != 0;
|
poll_mode = (value & RADIO_RX_MODE_POLL_MODE) != 0;
|
||||||
|
if(poll_mode == old_poll_mode) {
|
||||||
|
uint32_t cmd_status;
|
||||||
|
|
||||||
|
/* do not turn the radio on and off, just send an update command */
|
||||||
|
memcpy(&filter_cmd.newFrameFiltOpt, &cmd->frameFiltOpt, sizeof(cmd->frameFiltOpt));
|
||||||
|
|
||||||
|
if(rf_core_send_cmd((uint32_t)&filter_cmd, &cmd_status) == RF_CORE_CMD_ERROR) {
|
||||||
|
PRINTF("setting address filter failed: CMDSTA=0x%08lx\n", cmd_status);
|
||||||
|
return RADIO_RESULT_ERROR;
|
||||||
|
}
|
||||||
|
return RADIO_RESULT_OK;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case RADIO_PARAM_TXPOWER:
|
case RADIO_PARAM_TXPOWER:
|
||||||
|
|
Loading…
Reference in a new issue