Compare commits

..

No commits in common. "506c8409333d92256564f8d6cc0d9d0d243bb742" and "9a60ab8f74e7e775c999a0e7a21987a11cd8ebcf" have entirely different histories.

7 changed files with 26 additions and 78 deletions

View File

@ -36,23 +36,12 @@ void IRAM_ATTR dio1handler(void* context) {
((Sx1262*)context)->dio1Event(); ((Sx1262*)context)->dio1Event();
} }
Sx1262::ParameterStatus Sx1262::setBaseParameter(const Parameter parameter, const float value) { Sx1262::ParameterStatus Sx1262::setLoraParameter(const Parameter parameter, const float value) {
using enum Parameter; using enum Parameter;
switch (parameter) { switch (parameter) {
case Power: case Power:
return checkLimitsAndApply(power, value, -9.0, 22.0); return checkLimitsAndApply(power, value, -9.0, 22.0);
case BoostedGain:
return checkLimitsAndApply(boostedGain, value, 0.0, 1.0, 1);
default:
return Sx1262::ParameterStatus::Unavailable;
}
}
Sx1262::ParameterStatus Sx1262::setLoraParameter(const Parameter parameter, const float value) {
using enum Parameter;
switch (parameter) {
case Frequency: case Frequency:
return checkLimitsAndApply(frequency, value, 150.0, 960.0); return checkLimitsAndApply(frequency, value, 150.0, 960.0);
case Bandwidth: case Bandwidth:
@ -79,6 +68,8 @@ Sx1262::ParameterStatus Sx1262::setFskParameter(const Parameter parameter, const
using enum Parameter; using enum Parameter;
switch (parameter) { switch (parameter) {
case Power:
return checkLimitsAndApply(power, value, -9.0, 22.0);
case Frequency: case Frequency:
return checkLimitsAndApply(frequency, value, 150.0, 960.0); return checkLimitsAndApply(frequency, value, 150.0, 960.0);
case Bandwidth: case Bandwidth:
@ -130,11 +121,6 @@ Sx1262::ParameterStatus Sx1262::setLrFhssParameter(const Parameter parameter, co
Sx1262::ParameterStatus Sx1262::setParameter(const Parameter parameter, const float value) { Sx1262::ParameterStatus Sx1262::setParameter(const Parameter parameter, const float value) {
const auto currentModulation = getModulation(); const auto currentModulation = getModulation();
auto base_return = setBaseParameter(parameter, value);
if (base_return != Sx1262::ParameterStatus::Unavailable) {
return base_return;
}
switch (currentModulation) { switch (currentModulation) {
case Modulation::LoRa: case Modulation::LoRa:
return setLoraParameter(parameter, value); return setLoraParameter(parameter, value);
@ -150,27 +136,13 @@ Sx1262::ParameterStatus Sx1262::setParameter(const Parameter parameter, const fl
return Sx1262::ParameterStatus::Unavailable; return Sx1262::ParameterStatus::Unavailable;
} }
Sx1262::ParameterStatus Sx1262::getLoraParameter(const Parameter parameter, float &value) const {
Sx1262::ParameterStatus Sx1262::getBaseParameter(const Parameter parameter, float &value) const {
using enum Parameter; using enum Parameter;
switch (parameter) { switch (parameter) {
case Power: case Power:
value = power; value = power;
return Sx1262::ParameterStatus::Success; return Sx1262::ParameterStatus::Success;
case BoostedGain:
value = boostedGain;
return Sx1262::ParameterStatus::Success;
default:
return Sx1262::ParameterStatus::Unavailable;
}
}
Sx1262::ParameterStatus Sx1262::getLoraParameter(const Parameter parameter, float &value) const {
using enum Parameter;
switch (parameter) {
case Frequency: case Frequency:
value = frequency; value = frequency;
return Sx1262::ParameterStatus::Success; return Sx1262::ParameterStatus::Success;
@ -200,6 +172,9 @@ Sx1262::ParameterStatus Sx1262::getFskParameter(const Parameter parameter, float
using enum Parameter; using enum Parameter;
switch (parameter) { switch (parameter) {
case Power:
value = power;
return Sx1262::ParameterStatus::Success;
case Frequency: case Frequency:
value = frequency; value = frequency;
return Sx1262::ParameterStatus::Success; return Sx1262::ParameterStatus::Success;
@ -223,6 +198,9 @@ Sx1262::ParameterStatus Sx1262::getLrFhssParameter(const Parameter parameter, fl
using enum Parameter; using enum Parameter;
switch (parameter) { switch (parameter) {
case Power:
value = power;
return Sx1262::ParameterStatus::Success;
case Bandwidth: case Bandwidth:
value = bandwidth; value = bandwidth;
return Sx1262::ParameterStatus::Success; return Sx1262::ParameterStatus::Success;
@ -244,11 +222,6 @@ Sx1262::ParameterStatus Sx1262::getParameter(const Parameter parameter, float &v
const auto currentModulation = getModulation(); const auto currentModulation = getModulation();
// No warnings are emitted to be able to discover parameters by return status // No warnings are emitted to be able to discover parameters by return status
auto base_return = getBaseParameter(parameter, value);
if (base_return != Sx1262::ParameterStatus::Unavailable) {
return base_return;
}
switch (currentModulation) { switch (currentModulation) {
case Modulation::LoRa: case Modulation::LoRa:
return getLoraParameter(parameter, value); return getLoraParameter(parameter, value);
@ -257,9 +230,11 @@ Sx1262::ParameterStatus Sx1262::getParameter(const Parameter parameter, float &v
case Modulation::LrFhss: case Modulation::LrFhss:
return getLrFhssParameter(parameter, value); return getLrFhssParameter(parameter, value);
default: default:
break;
}
// Shouldn't be reachable, return failsafe value // Shouldn't be reachable, return failsafe value
return Sx1262::ParameterStatus::Unavailable; return Sx1262::ParameterStatus::Unavailable;
}
} }
tt::hal::radio::Unit Sx1262::getParameterUnit(const Parameter parameter) const { tt::hal::radio::Unit Sx1262::getParameterUnit(const Parameter parameter) const {
@ -285,9 +260,11 @@ tt::hal::radio::Unit Sx1262::getParameterUnit(const Parameter parameter) const {
case NarrowGrid: case NarrowGrid:
return Unit(Unit::Name::None); return Unit(Unit::Name::None);
default: default:
break;
}
TT_LOG_W(TAG, "Tried to get unit for unsupported parameter \"%s\"", toString(parameter)); TT_LOG_W(TAG, "Tried to get unit for unsupported parameter \"%s\"", toString(parameter));
return Unit(Unit::Name::None); return Unit(Unit::Name::None);
}
} }
void Sx1262::registerDio1Isr() { void Sx1262::registerDio1Isr() {
@ -376,13 +353,6 @@ int Sx1262::doBegin(const Modulation modulation) {
return -1; return -1;
} }
rc = radio.setRxBoostedGainMode(boostedGain, true);
if (rc != RADIOLIB_ERR_NONE) {
TT_LOG_E(TAG, "Setting RX boosted gain to %s failed with code %hi", boostedGain ? "true" : "false", rc);
setState(State::Error);
return -1;
}
registerDio1Isr(); registerDio1Isr();
return 0; return 0;
} }

View File

@ -52,16 +52,13 @@ private:
float bitRate = 0.0; float bitRate = 0.0;
float frequencyDeviation = 0.0; float frequencyDeviation = 0.0;
bool narrowGrid = false; bool narrowGrid = false;
bool boostedGain = false;
void registerDio1Isr(); void registerDio1Isr();
void unregisterDio1Isr(); void unregisterDio1Isr();
ParameterStatus setBaseParameter(const Parameter parameter, const float value);
ParameterStatus setLoraParameter(const Parameter parameter, const float value); ParameterStatus setLoraParameter(const Parameter parameter, const float value);
ParameterStatus setFskParameter(const Parameter parameter, const float value); ParameterStatus setFskParameter(const Parameter parameter, const float value);
ParameterStatus setLrFhssParameter(const Parameter parameter, const float value); ParameterStatus setLrFhssParameter(const Parameter parameter, const float value);
ParameterStatus getBaseParameter(const Parameter parameter, float &value) const;
ParameterStatus getLoraParameter(const Parameter parameter, float &value) const; ParameterStatus getLoraParameter(const Parameter parameter, float &value) const;
ParameterStatus getFskParameter(const Parameter parameter, float &value) const; ParameterStatus getFskParameter(const Parameter parameter, float &value) const;
ParameterStatus getLrFhssParameter(const Parameter parameter, float &value) const; ParameterStatus getLrFhssParameter(const Parameter parameter, float &value) const;

View File

@ -81,8 +81,6 @@ char *const toString(RadioParameter p) {
switch (p) { switch (p) {
case RADIO_POWER: case RADIO_POWER:
return "Power"; return "Power";
case RADIO_BOOSTEDGAIN:
return "RX Boosted Gain";
case RADIO_FREQUENCY: case RADIO_FREQUENCY:
return "Center Frequency"; return "Center Frequency";
case RADIO_BANDWIDTH: case RADIO_BANDWIDTH:
@ -90,7 +88,7 @@ char *const toString(RadioParameter p) {
case RADIO_SPREADFACTOR: case RADIO_SPREADFACTOR:
return "Spread Factor"; return "Spread Factor";
case RADIO_CODINGRATE: case RADIO_CODINGRATE:
return "Coding Rate"; return "Coding Rate Denominator";
case RADIO_SYNCWORD: case RADIO_SYNCWORD:
return "Sync Word"; return "Sync Word";
case RADIO_PREAMBLES: case RADIO_PREAMBLES:
@ -561,6 +559,9 @@ static ParameterInput* makeLoraInput(RadioHandle handle, const RadioParameter pa
static constexpr float bw_values[] = {7.8, 10.4, 15.6, 20.8, 31.25, 41.7, 62.5, 125.0, 250.0, 500.0, SliderSelectParameterInput::SELECT_END}; static constexpr float bw_values[] = {7.8, 10.4, 15.6, 20.8, 31.25, 41.7, 62.5, 125.0, 250.0, 500.0, SliderSelectParameterInput::SELECT_END};
// LoRa is standardized, so we get to use fancy inputs // LoRa is standardized, so we get to use fancy inputs
switch (param) { switch (param) {
case RADIO_POWER: //no break
case RADIO_FREQUENCY:
return new NumericParameterInput(handle, param, container, row);
case RADIO_BANDWIDTH: case RADIO_BANDWIDTH:
return new SliderSelectParameterInput(handle, param, container, row, bw_values, "%.1f"); return new SliderSelectParameterInput(handle, param, container, row, bw_values, "%.1f");
case RADIO_SPREADFACTOR: case RADIO_SPREADFACTOR:
@ -576,6 +577,7 @@ static ParameterInput* makeLoraInput(RadioHandle handle, const RadioParameter pa
} }
} }
static ParameterInput* makeLrFhssInput(RadioHandle handle, const RadioParameter param, lv_obj_t* container, int row) { static ParameterInput* makeLrFhssInput(RadioHandle handle, const RadioParameter param, lv_obj_t* container, int row) {
switch (param) {; switch (param) {;
case RADIO_NARROWGRID: case RADIO_NARROWGRID:
@ -585,22 +587,7 @@ static ParameterInput* makeLrFhssInput(RadioHandle handle, const RadioParameter
} }
} }
static ParameterInput* makeBaseInput(RadioHandle handle, const RadioParameter param, lv_obj_t* container, int row) {
switch (param) {
case RADIO_POWER: //no break
case RADIO_FREQUENCY:
return new NumericParameterInput(handle, param, container, row);
case RADIO_BOOSTEDGAIN:
return new FlagParameterInput(handle, param, container, row);
default:
return nullptr;
}
}
static ParameterInput* makeParameterInput(RadioHandle handle, const RadioParameter param, const Modulation modulation, lv_obj_t* container, int row) { static ParameterInput* makeParameterInput(RadioHandle handle, const RadioParameter param, const Modulation modulation, lv_obj_t* container, int row) {
auto base_input = makeBaseInput(handle, param, container, row);
if (base_input) return base_input;
switch (modulation) { switch (modulation) {
case MODULATION_LORA: case MODULATION_LORA:
return makeLoraInput(handle, param, container, row); return makeLoraInput(handle, param, container, row);
@ -710,7 +697,7 @@ public:
lv_obj_align(container, LV_ALIGN_TOP_MID, 0, 0); lv_obj_align(container, LV_ALIGN_TOP_MID, 0, 0);
const int grid_row_size = 40; const int grid_row_size = 40;
const int grid_col_size = 60; const int grid_col_size = 140;
static constexpr size_t row_dsc_last = RADIO_NARROWGRID + 1; static constexpr size_t row_dsc_last = RADIO_NARROWGRID + 1;
static lv_coord_t col_dsc[] = {LV_GRID_FR(1), LV_GRID_FR(1), grid_col_size, LV_GRID_TEMPLATE_LAST}; static lv_coord_t col_dsc[] = {LV_GRID_FR(1), LV_GRID_FR(1), grid_col_size, LV_GRID_TEMPLATE_LAST};
static lv_coord_t row_dsc[row_dsc_last] = {0}; static lv_coord_t row_dsc[row_dsc_last] = {0};

View File

@ -35,7 +35,6 @@ public:
enum class Parameter { enum class Parameter {
Power, Power,
BoostedGain,
Frequency, Frequency,
Bandwidth, Bandwidth,
SpreadFactor, SpreadFactor,
@ -45,7 +44,7 @@ public:
FrequencyDeviation, FrequencyDeviation,
DataRate, DataRate,
AddressWidth, AddressWidth,
NarrowGrid, NarrowGrid
}; };
enum class ParameterStatus { enum class ParameterStatus {

View File

@ -96,7 +96,7 @@ static void make_scrollable(lv_obj_t* obj) {
lv_group_add_obj(group, obj); lv_group_add_obj(group, obj);
// Apply style to scrollbar to make it visible if focused // Apply style to scrollbar to make it visible if focused
apply_scroll_styles(obj); apply_scroll_style(obj);
} }
static void child_added_event_handler(lv_event_t* e) { static void child_added_event_handler(lv_event_t* e) {

View File

@ -25,7 +25,6 @@ enum Modulation {
enum RadioParameter { enum RadioParameter {
RADIO_POWER, RADIO_POWER,
RADIO_BOOSTEDGAIN,
RADIO_FREQUENCY, RADIO_FREQUENCY,
RADIO_BANDWIDTH, RADIO_BANDWIDTH,
RADIO_SPREADFACTOR, RADIO_SPREADFACTOR,

View File

@ -236,8 +236,6 @@ static RadioParameter fromCpp(tt::hal::radio::RadioDevice::Parameter parameter)
switch (parameter) { switch (parameter) {
case tt::hal::radio::RadioDevice::Parameter::Power: case tt::hal::radio::RadioDevice::Parameter::Power:
return RADIO_POWER; return RADIO_POWER;
case tt::hal::radio::RadioDevice::Parameter::BoostedGain:
return RADIO_BOOSTEDGAIN;
case tt::hal::radio::RadioDevice::Parameter::Frequency: case tt::hal::radio::RadioDevice::Parameter::Frequency:
return RADIO_FREQUENCY; return RADIO_FREQUENCY;
case tt::hal::radio::RadioDevice::Parameter::Bandwidth: case tt::hal::radio::RadioDevice::Parameter::Bandwidth:
@ -268,8 +266,6 @@ static tt::hal::radio::RadioDevice::Parameter toCpp(RadioParameter parameter) {
switch (parameter) { switch (parameter) {
case RADIO_POWER: case RADIO_POWER:
return tt::hal::radio::RadioDevice::Parameter::Power; return tt::hal::radio::RadioDevice::Parameter::Power;
case RADIO_BOOSTEDGAIN:
return tt::hal::radio::RadioDevice::Parameter::BoostedGain;
case RADIO_FREQUENCY: case RADIO_FREQUENCY:
return tt::hal::radio::RadioDevice::Parameter::Frequency; return tt::hal::radio::RadioDevice::Parameter::Frequency;
case RADIO_BANDWIDTH: case RADIO_BANDWIDTH: