zero span auto reflevel and display trigger level after setting

tinySA-v0.2
erikkaashoek 6 years ago
parent e48a37b504
commit 879ae21538

@ -121,13 +121,15 @@ const char *info_about[]={
0 // sentinel
};
extern int dirty;
bool completed = false;
static THD_WORKING_AREA(waThread1, 900);
static THD_FUNCTION(Thread1, arg)
{
(void)arg;
chRegSetThreadName("sweep");
bool completed = false;
ui_process();
while (1) {

@ -158,6 +158,7 @@ enum {
#define SWEEP_REMOTE 0x10
extern int8_t sweep_mode;
extern bool completed;
extern const char *info_about[];
// ------------------------------- sa_core.c ----------------------------------

@ -126,7 +126,7 @@ float calc_min_sweep_time(void) // Calculate minimum sweep time in mS
float t;
float a = (actualStepDelay + MEASURE_TIME)/1000.0; // in mS
if (MODE_OUTPUT(setting.mode))
t = 1000;
t = 100;
else {
if (FREQ_IS_CW())
a = (float)MINIMUM_SWEEP_TIME / 290.0; // time per step in CW mode
@ -601,8 +601,8 @@ void set_reflevel(float level)
set_trace_refpos(0, /* NGRIDY - */ level /* / get_trace_scale(0) */);
set_trace_refpos(1, /* NGRIDY - */ level /* / get_trace_scale(0) */ );
set_trace_refpos(2, /* NGRIDY - */ level /* / get_trace_scale(0) */ );
dirty = true;
redraw_request |= REDRAW_AREA | REDRAW_CAL_STATUS;
// dirty = true;
}
void round_reflevel_to_scale(void) {
@ -674,6 +674,7 @@ void set_scale(float t) {
}
#endif
// set_reflevel(setting.reflevel);
redraw_request |= REDRAW_AREA | REDRAW_CAL_STATUS;
}
@ -1456,7 +1457,7 @@ again:
float t = setting.sweep_time - calc_min_sweep_time(); // Time to delay in mS
if (t < 0)
t = 0;
t = t * 1000 / 290.0;
t = t * 1000 / 290.0; // Now in uS per point
if (MODE_OUTPUT(setting.mode) && t < 500) // Minimum wait time to prevent LO from lockup
t = 500;
while (repeats--) {
@ -1479,7 +1480,8 @@ again:
if (MODE_INPUT(setting.mode)) {
temp_t[i] = RSSI;
if (setting.average != AV_OFF)
temp_t[i] = RSSI;
if (setting.subtract_stored) {
RSSI = RSSI - stored_t[i] ;
}
@ -1597,7 +1599,8 @@ again:
}
if (old_attenuate != setting.attenuate) {
redraw_request |= REDRAW_CAL_STATUS;
dirty = true; // Must be above if(scandirty!!!!!)
PE4302_Write_Byte(setting.attenuate * 2);
// dirty = true; // Must be above if(scandirty!!!!!)
}
}
if (max_index[0] > 0)
@ -1625,6 +1628,8 @@ again:
//if (setting.scale * NGRIDY > r)
set_scale(r / NGRIDY);
set_reflevel(setting.scale*NGRIDY);
dirty = false; // Prevent reset of SI4432
redraw_request |= REDRAW_CAL_STATUS;
}
}
} else {
@ -1633,16 +1638,17 @@ again:
if (s_r < s_ref - NGRIDY || s_min > s_ref) { //Completely outside
set_reflevel(setting.scale*(floor(s_r)+1));
redraw_request |= REDRAW_CAL_STATUS;
dirty = true; // Must be above if(scandirty!!!!!)
// dirty = true; // Must be above if(scandirty!!!!!)
}else if (s_r > s_ref - 0.5 || s_min > s_ref - 8.8 ) { // maximum to high or minimum to high
set_reflevel(setting.reflevel + setting.scale);
redraw_request |= REDRAW_CAL_STATUS;
dirty = true; // Must be above if(scandirty!!!!!)
// dirty = true; // Must be above if(scandirty!!!!!)
} else if (s_min < s_ref - 10.1 && s_r < s_ref - 1.5) { // minimum to low and maximum can move up
set_reflevel(setting.reflevel - setting.scale);
redraw_request |= REDRAW_CAL_STATUS;
dirty = true; // Must be above if(scandirty!!!!!)
// dirty = true; // Must be above if(scandirty!!!!!)
}
dirty = false; // Prevent reset of SI4432
}
}
#if 1

@ -287,6 +287,8 @@ void set_10mhz(int f)
setting_frequency_10mhz = f;
}
int SI4432_frequency_changed = false;
void SI4432_Set_Frequency ( long Freq ) {
int hbsel;
long Carrier;
@ -307,6 +309,7 @@ void SI4432_Set_Frequency ( long Freq ) {
#else
SI4432_Write_3_Byte ( 0x75, Freq_Band, (Carrier>>8) & 0xFF, Carrier & 0xFF );
#endif
SI4432_frequency_changed = true;
}
int actualStepDelay = 1500;
@ -324,21 +327,28 @@ float SI4432_RSSI(uint32_t i, int s)
} else
#endif
//START_PROFILE
SI4432_Sel = s;
if (actualStepDelay)
my_microsecond_delay(actualStepDelay);
SI4432_Sel = s;
int stepdelay = actualStepDelay;
if (SI4432_frequency_changed) {
if (stepdelay < 280) {
stepdelay = 280;
}
SI4432_frequency_changed = false;
}
if (stepdelay)
my_microsecond_delay(stepdelay);
// chThdSleepMicroseconds(actualStepDelay);
i = setting.repeat;
RSSI_RAW = 0;
i = setting.repeat;
RSSI_RAW = 0;
again:
RSSI_RAW += ((unsigned int)SI4432_Read_Byte( 0x26 )) << 4 ;
i--;
if (i > 0) {
my_microsecond_delay(100);
goto again;
}
if (setting.repeat > 1)
RSSI_RAW = RSSI_RAW / setting.repeat;
RSSI_RAW += ((unsigned int)SI4432_Read_Byte( 0x26 )) << 4 ;
i--;
if (i > 0) {
my_microsecond_delay(100);
goto again;
}
if (setting.repeat > 1)
RSSI_RAW = RSSI_RAW / setting.repeat;
// if (MODE_INPUT(setting.mode) && RSSI_RAW == 0)
// SI4432_Init();
float dBm = ((float)RSSI_RAW)/32.0 + SI4432_RSSI_correction;

@ -978,7 +978,8 @@ static void menu_trigger_cb(int item, uint8_t data)
set_trigger(data);
// menu_move_back();
ui_mode_normal();
redraw_request |= REDRAW_CAL_STATUS;
redraw_request |= REDRAW_CAL_STATUS | REDRAW_AREA;
completed = true;
}
#if 0
@ -1967,6 +1968,9 @@ set_numeric_value(void)
if (setting.trigger == T_AUTO )
set_trigger(T_NORMAL);
set_trigger_level(to_dBm(uistat.value));
redraw_request |= REDRAW_CAL_STATUS | REDRAW_AREA;
completed = true;
break;
}
}

Loading…
Cancel
Save

Powered by TurnKey Linux.