diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
index fc84270..47218fa 100644
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/main.c b/main.c
index 6b04a66..d63c7f9 100644
--- a/main.c
+++ b/main.c
@@ -158,7 +158,7 @@ static THD_FUNCTION(Thread1, arg)
ui_process();
// Process collected data, calculate trace coordinates and plot only if scan
// completed
- if (sweep_mode & SWEEP_ENABLE && completed) {
+ if (/* sweep_mode & SWEEP_ENABLE && */ completed) {
#ifdef __VNA__
if ((domain_mode & DOMAIN_MODE) == DOMAIN_TIME) transform_domain();
#endif
diff --git a/sa_core.c b/sa_core.c
index 355c9e3..34508c6 100644
--- a/sa_core.c
+++ b/sa_core.c
@@ -475,7 +475,7 @@ void set_trigger(float trigger)
void set_scale(float s) {
setting.scale = s;
if (setting.unit == U_VOLT || setting.unit == U_MWATT) {
- set_reflevel(9 * s);
+ set_reflevel(NGRIDY * s);
}
set_trace_scale(0, s);
set_trace_scale(1, s);
@@ -517,7 +517,12 @@ void apply_settings(void)
set_switches(setting.mode);
SI4432_SetReference(setting.refer);
update_rbw();
- if (setting.step_delay < 2){
+ if (setting.frequency_step == 0.0) {
+ if (setting.step_delay <= 1)
+ actualStepDelay = 0;
+ else
+ actualStepDelay = setting.step_delay;
+ } else if (setting.step_delay < 2){
if (actual_rbw > 200.0) actualStepDelay = 400;
else if (actual_rbw > 90.0) actualStepDelay = 500;
else if (actual_rbw > 75.0) actualStepDelay = 550;
@@ -667,23 +672,38 @@ case M_GENHIGH: // Direct output from 1
void update_rbw(void)
{
- setting.vbw = (setting.frequency_step)/1000.0;
- actual_rbw = setting.rbw;
-// float old_rbw = actual_rbw;
- if (actual_rbw == 0)
- actual_rbw = 2*setting.vbw;
- if (actual_rbw < 2.6)
- actual_rbw = 2.6;
- if (actual_rbw > 600)
- actual_rbw = 600;
+ if (setting.frequency_step > 0) {
+ setting.vbw = (setting.frequency_step)/1000.0;
+ actual_rbw = setting.rbw;
+ // float old_rbw = actual_rbw;
+ if (actual_rbw == 0)
+ actual_rbw = 2*setting.vbw;
+ if (actual_rbw < 2.6)
+ actual_rbw = 2.6;
+ if (actual_rbw > 600)
+ actual_rbw = 600;
- SI4432_Sel = MODE_SELECT(setting.mode);
- actual_rbw = SI4432_SET_RBW(actual_rbw);
+ SI4432_Sel = MODE_SELECT(setting.mode);
+ actual_rbw = SI4432_SET_RBW(actual_rbw);
- vbwSteps = ((int)(2 * setting.vbw / actual_rbw));
+ vbwSteps = ((int)(2 * setting.vbw / actual_rbw));
- if (vbwSteps < 1)
+ if (vbwSteps < 1)
+ vbwSteps = 1;
+ } else {
+ actual_rbw = setting.rbw;
+ if (actual_rbw == 0)
+ actual_rbw = 600;
+ if (actual_rbw < 2.6)
+ actual_rbw = 2.6;
+ if (actual_rbw > 600)
+ actual_rbw = 600;
+
+ SI4432_Sel = MODE_SELECT(setting.mode);
+ actual_rbw = SI4432_SET_RBW(actual_rbw);
+ setting.vbw = actual_rbw;
vbwSteps = 1;
+ }
dirty = true;
}
@@ -892,12 +912,13 @@ float perform(bool break_on_operation, int i, uint32_t f, int tracking)
if (MODE_OUTPUT(setting.mode) && setting.modulation == MO_AM) {
int p = setting.attenuate * 2 + modulation_counter;
PE4302_Write_Byte(p);
- if (modulation_counter == 10) {
+ if (modulation_counter == 4) {
modulation_counter = 0;
} else {
modulation_counter++;
}
- chThdSleepMicroseconds(250);
+ chThdSleepMicroseconds(200);
+
} else if (MODE_OUTPUT(setting.mode) && (setting.modulation == MO_NFM || setting.modulation == MO_WFM )) {
SI4432_Sel = 1;
int offset;
@@ -915,7 +936,7 @@ float perform(bool break_on_operation, int i, uint32_t f, int tracking)
modulation_counter = -2;
else
modulation_counter++;
- chThdSleepMicroseconds(250);
+ chThdSleepMicroseconds(200);
}
float RSSI = -150.0;
int t = 0;
@@ -1022,7 +1043,12 @@ again:
if (subRSSI < setting.trigger)
goto wait;
actualStepDelay = old_actual_step_delay; // Trigger happened, restore step delay
+ pause_sweep(); // Trigger once!!!!!!!
+ }
+ if (setting.trigger != -150.0 && setting.frequency_step > 0 && subRSSI > setting.trigger) {
+ pause_sweep(); // Stop scanning if above trigger
}
+
#ifdef __SPUR__
if (setting.spur == 1) { // First pass
spur_RSSI = subRSSI;
@@ -1052,11 +1078,13 @@ static bool sweep(bool break_on_operation)
{
float RSSI;
int16_t downslope = true;
+ START_PROFILE;
palClearPad(GPIOB, GPIOB_LED);
temppeakLevel = -150;
float temp_min_level = 100;
// spur_old_stepdelay = 0;
for (int i = 0; i < sweep_points; i++) {
+
RSSI = perform(break_on_operation, i, frequencies[i], setting.tracking);
// back to toplevel to handle ui operation
@@ -1180,7 +1208,7 @@ static bool sweep(bool break_on_operation)
while (t > 10) { m *= 10; t/=10; }
while (t < 1) { m /= 10; t*=10; }
t = round(t);
- set_scale(t*m / 9);
+ set_scale(t*m / NGRIDY);
set_reflevel(t*m);
}
} else {
@@ -1274,11 +1302,11 @@ static bool sweep(bool break_on_operation)
#if 0 // Auto ref level setting
int scale = setting.scale;
int rp = GetRepos();
- if (scale > 0 && peakLevel > rp && peakLevel - min_level < 8 * scale ) {
+ if (scale > 0 && peakLevel > rp && peakLevel - min_level < (NGRIDY-1) * scale ) {
set_reflevel((((int)(peakLevel/scale)) + 1) * scale);
}
- if (scale > 0 && min_level < rp - 9*scale && peakLevel - min_level < 8 * scale ) {
- int new_rp = (((int)((min_level + 9*scale)/scale)) - 1) * scale;
+ if (scale > 0 && min_level < rp - NGRIDY*scale && peakLevel - min_level < (NGRIDY-1) * scale ) {
+ int new_rp = (((int)((min_level + NGRIDY*scale)/scale)) - 1) * scale;
if (new_rp < rp)
set_reflevel(new_rp);
}
@@ -1286,6 +1314,7 @@ static bool sweep(bool break_on_operation)
#endif
}
// redraw_marker(peak_marker, FALSE);
+ STOP_PROFILE;
palSetPad(GPIOB, GPIOB_LED);
return true;
}
@@ -1454,7 +1483,7 @@ void draw_cal_status(void)
color = DEFAULT_FG_COLOR;
ili9341_set_foreground(color);
- y += YSTEP*2;
+ y += YSTEP + YSTEP/2 ;
plot_printf(buf, BLEN, "%f/",setting.scale);
ili9341_drawstring(buf, x, y);
@@ -1463,7 +1492,7 @@ void draw_cal_status(void)
else
color = BRIGHT_COLOR_GREEN;
ili9341_set_foreground(color);
- y += YSTEP*2;
+ y += YSTEP + YSTEP/2 ;
ili9341_drawstring("Attn:", x, y);
y += YSTEP;
@@ -1473,7 +1502,7 @@ void draw_cal_status(void)
if (setting.average>0) {
ili9341_set_foreground(BRIGHT_COLOR_BLUE);
- y += YSTEP*2;
+ y += YSTEP + YSTEP/2 ;
ili9341_drawstring("Calc:", x, y);
y += YSTEP;
@@ -1484,7 +1513,7 @@ void draw_cal_status(void)
#ifdef __SPUR__
if (setting.spur) {
ili9341_set_foreground(BRIGHT_COLOR_BLUE);
- y += YSTEP*2;
+ y += YSTEP + YSTEP/2 ;
ili9341_drawstring("Spur:", x, y);
y += YSTEP;
@@ -1499,7 +1528,7 @@ void draw_cal_status(void)
color = DEFAULT_FG_COLOR;
ili9341_set_foreground(color);
- y += YSTEP*2;
+ y += YSTEP + YSTEP/2 ;
ili9341_drawstring("RBW:", x, y);
y += YSTEP;
@@ -1507,15 +1536,16 @@ void draw_cal_status(void)
buf[5]=0;
ili9341_drawstring(buf, x, y);
- ili9341_set_foreground(DEFAULT_FG_COLOR);
- y += YSTEP*2;
- ili9341_drawstring("VBW:", x, y);
-
- y += YSTEP;
- plot_printf(buf, BLEN, "%dkHz",(int)setting.vbw);
- buf[5]=0;
- ili9341_drawstring(buf, x, y);
+ if (setting.frequency_step > 0) {
+ ili9341_set_foreground(DEFAULT_FG_COLOR);
+ y += YSTEP + YSTEP/2 ;
+ ili9341_drawstring("VBW:", x, y);
+ y += YSTEP;
+ plot_printf(buf, BLEN, "%dkHz",(int)setting.vbw);
+ buf[5]=0;
+ ili9341_drawstring(buf, x, y);
+ }
if (dirty)
color = BRIGHT_COLOR_RED;
else if (setting.step_delay)
@@ -1523,9 +1553,9 @@ void draw_cal_status(void)
else
color = DEFAULT_FG_COLOR;
- ili9341_set_foreground(color);
+ ili9341_set_foreground(color);
- y += YSTEP*2;
+ y += YSTEP + YSTEP/2 ;
ili9341_drawstring("Scan:", x, y);
y += YSTEP;
@@ -1545,7 +1575,7 @@ void draw_cal_status(void)
if (setting.refer >= 0) {
ili9341_set_foreground(BRIGHT_COLOR_RED);
- y += YSTEP*2;
+ y += YSTEP + YSTEP/2 ;
ili9341_drawstring("Ref:", x, y);
y += YSTEP;
@@ -1556,7 +1586,7 @@ void draw_cal_status(void)
if (setting.offset != 0.0) {
ili9341_set_foreground(BRIGHT_COLOR_RED);
- y += YSTEP*2;
+ y += YSTEP + YSTEP/2 ;
ili9341_drawstring("Amp:", x, y);
y += YSTEP;
@@ -1565,8 +1595,23 @@ void draw_cal_status(void)
ili9341_drawstring(buf, x, y);
}
+ if (setting.trigger != -150.0) {
+// if (is_paused()) {
+ ili9341_set_foreground(BRIGHT_COLOR_GREEN);
+// } else {
+// ili9341_set_foreground(BRIGHT_COLOR_RED);
+// }
+ y += YSTEP + YSTEP/2 ;
+ ili9341_drawstring("TRIG:", x, y);
+
+ y += YSTEP;
+ plot_printf(buf, BLEN, "%ddBm",(int)setting.trigger);
+ buf[5]=0;
+ ili9341_drawstring(buf, x, y);
+ }
+
ili9341_set_foreground(BRIGHT_COLOR_GREEN);
- y += YSTEP*2;
+ y += YSTEP + YSTEP/2 ;
if (MODE_LOW(setting.mode))
ili9341_drawstring_7x13("M:L", x, y);
else