feat: add option to disable radio calibration and update status error handling
This commit is contained in:
@ -47,21 +47,37 @@ void init(spi_config_t config = {SPI2_HOST, 4'000'000});
|
||||
|
||||
|
||||
inline error_t status_to_err(const uint8_t status) {
|
||||
const auto st = *reinterpret_cast<const llcc68::status_t *>(&status);
|
||||
switch (st.command_status) {
|
||||
case llcc68::CommandStatus::COMMAND_TIMEOUT:
|
||||
return error::SPI_TIMEOUT;
|
||||
case llcc68::CommandStatus::FAILURE_TO_EXECUTE_COMMAND:
|
||||
return error::SPI_CMD_FAILED;
|
||||
case llcc68::CommandStatus::COMMAND_PROCESSING_ERROR:
|
||||
const auto st = *reinterpret_cast<const llcc68::status_t *>(&status);
|
||||
error_t status_ok = [](llcc68::CommandStatus st) {
|
||||
switch (st) {
|
||||
case llcc68::CommandStatus::COMMAND_TIMEOUT:
|
||||
return error::SPI_TIMEOUT;
|
||||
case llcc68::CommandStatus::FAILURE_TO_EXECUTE_COMMAND:
|
||||
return error::SPI_CMD_FAILED;
|
||||
case llcc68::CommandStatus::COMMAND_PROCESSING_ERROR:
|
||||
#ifdef APP_SPI_DISABLE_INVALID_STATUS_CHECK
|
||||
return error::OK;
|
||||
return error::OK;
|
||||
#else
|
||||
return error::SPI_CMD_INVALID;
|
||||
return error::SPI_CMD_INVALID;
|
||||
#endif
|
||||
default:
|
||||
return error::OK;
|
||||
default:
|
||||
return error::OK;
|
||||
}
|
||||
}(st.command_status);
|
||||
if (status_ok != error::OK) {
|
||||
return status_ok;
|
||||
}
|
||||
error_t chip_mode_usual = [](llcc68::ChipMode mode) {
|
||||
switch (mode) {
|
||||
case llcc68::ChipMode::TX:
|
||||
case llcc68::ChipMode::RX:
|
||||
case llcc68::ChipMode::STBY_RC:
|
||||
return error::OK;
|
||||
default:
|
||||
return error::SPI_INVALID_RADIO_STATE;
|
||||
}
|
||||
}(st.chip_mode);
|
||||
return chip_mode_usual;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
||||
Reference in New Issue
Block a user