feat: add option to disable radio calibration and update status error handling

This commit is contained in:
2025-08-07 14:51:57 +08:00
parent c4a61d2708
commit 72299b62ce
6 changed files with 57 additions and 25 deletions

View File

@ -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;
}
/*!