summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lora_pkt_fwd/src/lora_pkt_fwd.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/lora_pkt_fwd/src/lora_pkt_fwd.c b/lora_pkt_fwd/src/lora_pkt_fwd.c
index 87eaaa0..80bd66a 100644
--- a/lora_pkt_fwd/src/lora_pkt_fwd.c
+++ b/lora_pkt_fwd/src/lora_pkt_fwd.c
@@ -374,7 +374,7 @@ void lookup_power_settings(float tx_pwr, int8_t* rf_power, int8_t* dig_gain) {
for (int i = 0; i < TEMP_LUT_SIZE_MAX; i++) {
// If the current temp is lower than the first temp or we reach the end of the table
- if ((tx_temp_lut->dig[0].temp > tx_temp_lut->temp_comp_value || i == TEMP_LUT_SIZE_MAX-1) ||
+ if ((tx_temp_lut.lut[0].temp > temp_comp_value || i == TEMP_LUT_SIZE_MAX-1) ||
(tx_temp_lut.lut[i].temp <= temp_comp_value && tx_temp_lut.lut[i+1].temp > temp_comp_value)) {
for (int j = 0; j < TX_GAIN_LUT_SIZE_MAX; j++) {
for (int h = 0; h < 4; h++) {
@@ -849,6 +849,7 @@ static int parse_SX1301_configuration(const char * conf_file) {
MSG("INFO: Loading temperature compensated LUT values\n");
for (i = 0; i < TX_GAIN_LUT_SIZE_MAX; i++) {
+ txlut.size++;
txlut.lut[i].rf_power = tx_temp_lut.base[i].rf_power;
txlut.lut[i].pa_gain = tx_temp_lut.base[i].pa_gain;
txlut.lut[i].mix_gain = tx_temp_lut.base[i].mix_gain;
@@ -856,6 +857,17 @@ static int parse_SX1301_configuration(const char * conf_file) {
txlut.lut[i].dac_gain = 3;
MSG("LUT %d RF: %d PA: %d MIX: %d DIG: %d DAC: %d\n", i, txlut.lut[i].rf_power, txlut.lut[i].pa_gain, txlut.lut[i].mix_gain, txlut.lut[i].dig_gain, txlut.lut[i].dac_gain);
}
+
+ /* all parameters parsed, submitting configuration to the HAL */
+ if (txlut.size > 0) {
+ MSG("INFO: Configuring TX LUT with %u indexes\n", txlut.size);
+ if (lgw_txgain_setconf(&txlut) != LGW_HAL_SUCCESS) {
+ MSG("ERROR: Failed to configure concentrator TX Gain LUT\n");
+ return -1;
+ }
+ } else {
+ MSG("WARNING: No TX gain LUT defined\n");
+ }
} else {
/* set configuration for tx gains */