Better actual power and corrected <vbwSteps error

tinySA-v0.2
erikkaashoek 6 years ago
parent ca9f856c1e
commit e0c71046f5

@ -175,7 +175,7 @@ int search_is_greater(void);
void set_auto_attenuation(void); void set_auto_attenuation(void);
void set_auto_reflevel(void); void set_auto_reflevel(void);
int is_paused(void); int is_paused(void);
void set_power_level(int); void set_actual_power(float);
void SetGenerate(int); void SetGenerate(int);
void set_RBW(int); void set_RBW(int);
void set_drive(int d); void set_drive(int d);

@ -306,23 +306,19 @@ int GetSubtractStorage(void)
} }
extern float peakLevel; extern float peakLevel;
void set_power_level(int o) void set_actual_power(float o)
{ {
float new_offset = o - peakLevel - setting.attenuate + get_level_offset(); float new_offset = o - peakLevel + get_level_offset();
if (o != 100) { if (o == 100) new_offset = 0;
if (setting.mode == M_HIGH) if (setting.mode == M_HIGH) {
config.high_level_offset = new_offset; config.high_level_offset = new_offset;
else if (setting.mode == M_LOW) } else if (setting.mode == M_LOW) {
config.low_level_offset = new_offset; config.low_level_offset = new_offset;
#ifdef __ULTRA__ #ifdef __ULTRA__
else if (setting.mode == M_ULTRA) } else if (setting.mode == M_ULTRA) {
config.low_level_offset = new_offset; config.low_level_offset = new_offset;
#endif #endif
} }
else {
config.low_level_offset = 100;
config.high_level_offset = 100;
}
dirty = true; dirty = true;
} }
@ -1009,7 +1005,7 @@ again:
t++; t++;
if (operation_requested && break_on_operation) // output modes do not step. if (operation_requested && break_on_operation) // output modes do not step.
break; // abort break; // abort
} while (t < vbwSteps); } while (t <= vbwSteps);
return(RSSI); return(RSSI);
} }
@ -1741,9 +1737,9 @@ int test_validate(int i)
case TC_SET: case TC_SET:
if (test_case[i].pass == 0) { if (test_case[i].pass == 0) {
if (test_value != 0) if (test_value != 0)
set_power_level(test_value); set_actual_power(test_value);
} else } else
set_power_level(test_case[i].pass); set_actual_power(test_case[i].pass);
goto common; goto common;
case TC_MEASURE: case TC_MEASURE:
case TC_SIGNAL: // Validate signal case TC_SIGNAL: // Validate signal
@ -1997,7 +1993,8 @@ void self_test(int test)
void reset_calibration(void) void reset_calibration(void)
{ {
set_power_level(100); config.high_level_offset = 0;
config.low_level_offset = 0;
} }
#define CALIBRATE_RBWS 1 #define CALIBRATE_RBWS 1
@ -2009,7 +2006,7 @@ void calibrate(void)
int local_test_status; int local_test_status;
float last_peak_level; float last_peak_level;
in_selftest = true; in_selftest = true;
set_power_level(100); reset_calibration();
reset_settings(M_LOW); reset_settings(M_LOW);
int i = 11; // calibrate low mode power on 30 MHz; int i = 11; // calibrate low mode power on 30 MHz;
for (int j= 0; j < CALIBRATE_RBWS; j++ ) { for (int j= 0; j < CALIBRATE_RBWS; j++ ) {
@ -2023,7 +2020,7 @@ void calibrate(void)
ili9341_drawstring_7x13("Calibration failed", 30, 120); ili9341_drawstring_7x13("Calibration failed", 30, 120);
goto quit; goto quit;
} else { } else {
set_power_level(-22); // Should be -22.5dBm set_actual_power(-22.5); // Should be -22.5dBm
chThdSleepMilliseconds(1000); chThdSleepMilliseconds(1000);
} }
} }
@ -2048,7 +2045,7 @@ void calibrate(void)
// ili9341_drawstring_7x13("Calibration failed", 30, 120); // ili9341_drawstring_7x13("Calibration failed", 30, 120);
// goto quit; // goto quit;
// } else // } else
set_power_level(last_peak_level); set_actual_power(last_peak_level);
chThdSleepMilliseconds(1000); chThdSleepMilliseconds(1000);
} }
ili9341_set_foreground(BRIGHT_COLOR_GREEN); ili9341_set_foreground(BRIGHT_COLOR_GREEN);

@ -1779,7 +1779,7 @@ set_numeric_value(void)
set_attenuation(uistat.value); set_attenuation(uistat.value);
break; break;
case KM_ACTUALPOWER: case KM_ACTUALPOWER:
set_power_level(uistat.value); set_actual_power(uistat.value);
config_save(); config_save();
break; break;
case KM_IF: case KM_IF:

Loading…
Cancel
Save

Powered by TurnKey Linux.