summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Reiss <jreiss@multitech.com>2021-04-01 16:34:19 -0500
committerJason Reiss <jreiss@multitech.com>2021-04-01 16:34:19 -0500
commit22c62ff3fe0c373bf2c3ef94b1fc30dbecb086c1 (patch)
treed2b58f988801ba6233f5e192bf7df696e0f92dbf
parent991962ded29e379c417f52f19ca36f146a0d836f (diff)
downloadpacket_forwarder_mtac_full-22c62ff3fe0c373bf2c3ef94b1fc30dbecb086c1.tar.gz
packet_forwarder_mtac_full-22c62ff3fe0c373bf2c3ef94b1fc30dbecb086c1.tar.bz2
packet_forwarder_mtac_full-22c62ff3fe0c373bf2c3ef94b1fc30dbecb086c1.zip
Check if temp is below lowest table.4.0.7
-rw-r--r--lora_pkt_fwd/src/lora_pkt_fwd.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/lora_pkt_fwd/src/lora_pkt_fwd.c b/lora_pkt_fwd/src/lora_pkt_fwd.c
index a181ea7..87eaaa0 100644
--- a/lora_pkt_fwd/src/lora_pkt_fwd.c
+++ b/lora_pkt_fwd/src/lora_pkt_fwd.c
@@ -336,7 +336,6 @@ void thread_spectralscan(void);
#define TEMP_LUT_SIZE_MAX 13
-
/**
@struct lgw_tx_alt_gain_s
@brief Structure containing all gains of Tx chain
@@ -374,7 +373,9 @@ void lookup_power_settings(float tx_pwr, int8_t* rf_power, int8_t* dig_gain) {
float min_diff = 99;
for (int i = 0; i < TEMP_LUT_SIZE_MAX; i++) {
- if (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)) {
+ // 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) ||
+ (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++) {
if (tx_pwr >= tx_temp_lut.lut[i].dig_gain[j*4+h] && (tx_pwr - tx_temp_lut.lut[i].dig_gain[j*4+h]) < min_diff) {
@@ -399,8 +400,6 @@ void load_temp_lookup() {
int i;
char param_name[32]; /* used to generate variable parameter names */
- const char *str; /* used to store string value from JSON object */
- const char conf_obj_name[] = "SX1301_conf";
JSON_Value *root_val = NULL;
JSON_Object *conf_obj = NULL;
JSON_Object *conf_lut_obj = NULL;
@@ -477,11 +476,10 @@ void load_temp_lookup() {
snprintf(param_name, sizeof param_name, "LUT%i", temp); /* compose parameter path inside JSON structure */
conf_array = json_object_get_array(json_value_get_object(root_val), param_name);
if (conf_array != NULL) {
- tx_temp_lut.lut[index].temp = temp;
+ tx_temp_lut.lut[index].temp = temp;
for (int j = 0; j < 64; j++) {
/* Get lut channel configuration object from array */
- float val = (float)json_array_get_number(conf_array, j);
- tx_temp_lut.lut[index].dig_gain[j] = val;
+ tx_temp_lut.lut[index].dig_gain[j] = (float)json_array_get_number(conf_array, j);
}
index++;
}
@@ -496,7 +494,7 @@ static void update_temp_comp_value() {
/* try to open file to read */
FILE *filePointer;
- if (filePointer = fopen(temp_comp_file, "r")) {
+ if ((filePointer = fopen(temp_comp_file, "r"))) {
int bufferLength = 10;
char buffer[bufferLength];