cc26xx: add support for RADIO_PARAM_TX_MODE getting and setting and for LAST_RSSI and LAST_LQI reading

This commit is contained in:
Atis Elsts 2016-04-25 19:25:38 +03:00
parent 25c5f0b744
commit 80aa30c5da

View File

@ -1297,6 +1297,17 @@ off(void)
return RF_CORE_CMD_OK; return RF_CORE_CMD_OK;
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
/* Enable or disable CCA before sending */
static radio_result_t
set_send_on_cca(uint8_t enable)
{
if(enable) {
/* this driver does not have support for CCA on Tx */
return RADIO_RESULT_NOT_SUPPORTED;
}
return RADIO_RESULT_OK;
}
/*---------------------------------------------------------------------------*/
static radio_result_t static radio_result_t
get_value(radio_param_t param, radio_value_t *value) get_value(radio_param_t param, radio_value_t *value)
{ {
@ -1332,6 +1343,9 @@ get_value(radio_param_t param, radio_value_t *value)
*value |= RADIO_RX_MODE_POLL_MODE; *value |= RADIO_RX_MODE_POLL_MODE;
} }
return RADIO_RESULT_OK;
case RADIO_PARAM_TX_MODE:
*value = 0;
return RADIO_RESULT_OK; return RADIO_RESULT_OK;
case RADIO_PARAM_TXPOWER: case RADIO_PARAM_TXPOWER:
*value = get_tx_power(); *value = get_tx_power();
@ -1359,6 +1373,12 @@ get_value(radio_param_t param, radio_value_t *value)
case RADIO_CONST_TXPOWER_MAX: case RADIO_CONST_TXPOWER_MAX:
*value = OUTPUT_POWER_MAX; *value = OUTPUT_POWER_MAX;
return RADIO_RESULT_OK; return RADIO_RESULT_OK;
case RADIO_PARAM_LAST_RSSI:
*value = last_rssi;
return RADIO_RESULT_OK;
case RADIO_PARAM_LAST_LINK_QUALITY:
*value = last_corr_lqi;
return RADIO_RESULT_OK;
default: default:
return RADIO_RESULT_NOT_SUPPORTED; return RADIO_RESULT_NOT_SUPPORTED;
} }
@ -1439,6 +1459,13 @@ set_value(radio_param_t param, radio_value_t value)
} }
break; break;
} }
case RADIO_PARAM_TX_MODE:
if(value & ~(RADIO_TX_MODE_SEND_ON_CCA)) {
return RADIO_RESULT_INVALID_VALUE;
}
return set_send_on_cca((value & RADIO_TX_MODE_SEND_ON_CCA) != 0);
case RADIO_PARAM_TXPOWER: case RADIO_PARAM_TXPOWER:
if(value < OUTPUT_POWER_MIN || value > OUTPUT_POWER_MAX) { if(value < OUTPUT_POWER_MIN || value > OUTPUT_POWER_MAX) {
return RADIO_RESULT_INVALID_VALUE; return RADIO_RESULT_INVALID_VALUE;
@ -1447,9 +1474,11 @@ set_value(radio_param_t param, radio_value_t value)
set_tx_power(value); set_tx_power(value);
return RADIO_RESULT_OK; return RADIO_RESULT_OK;
case RADIO_PARAM_CCA_THRESHOLD: case RADIO_PARAM_CCA_THRESHOLD:
cmd->ccaRssiThr = (int8_t)value; cmd->ccaRssiThr = (int8_t)value;
break; break;
default: default:
return RADIO_RESULT_NOT_SUPPORTED; return RADIO_RESULT_NOT_SUPPORTED;
} }