Simplified scale/refpos approach

tinySA-v0.2
erikkaashoek 6 years ago
parent 5c2d57888c
commit 9c0584abd7

@ -1704,7 +1704,7 @@ VNA_SHELL_FUNCTION(cmd_trace)
if (argc == 0) {
for (t = 0; t < TRACES_MAX; t++) {
if (trace[t].enabled) {
const char *type = get_trace_typename(t);
const char *type = unit_string[setting.unit]; // get_trace_typename(t);
const char *channel = trc_channel_name[trace[t].channel];
float scale = get_trace_scale(t);
float refpos = get_trace_refpos(t);

@ -592,13 +592,13 @@ trace_into_index(int t, int i, float array[POINTS_COUNT])
{
int y, x;
float coeff = array[i];
float refpos = NGRIDY - get_trace_refpos(t);
float v = refpos;
float scale = 1 / get_trace_scale(t);
float refpos = get_trace_refpos(t);
float v;
float scale = get_trace_scale(t);
switch (trace[t].type) {
case TRC_LOGMAG:
v-= value(coeff) * scale;
v = ( refpos - value(coeff) ) / scale;
break;
#ifdef __VNA__
case TRC_PHASE:

@ -478,13 +478,44 @@ int GetAGC(void)
void set_reflevel(float level)
{
setting.reflevel = (level / setting.scale) * setting.scale;
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));
setting.reflevel = 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) */ );
if (UNIT_IS_LINEAR(setting.unit)) { // Never negative bottom
float s = setting.scale;
if (level - NGRIDY * s < 0) {
level = level / NGRIDY;
setting.scale = level;
set_trace_scale(0, level);
set_trace_scale(1, level);
set_trace_scale(2, level);
}
}
dirty = true;
}
void set_scale(float s) {
setting.scale = s;
set_trace_scale(0, s);
set_trace_scale(1, s);
set_trace_scale(2, s);
if (UNIT_IS_LINEAR(setting.unit)) { // Never negative bottom
float r = setting.reflevel;
s = NGRIDY * s;
if (s > r) {
setting.reflevel = s;
set_trace_refpos(0, s);
set_trace_refpos(1, s);
set_trace_refpos(2, s);
}
}
// set_reflevel(setting.reflevel);
}
void set_offset(float offset)
{
@ -521,17 +552,6 @@ void set_trigger(int trigger)
// return (NGRIDY - get_trace_refpos(2)) * get_trace_scale(2);
//}
void set_scale(float s) {
setting.scale = s;
if (UNIT_IS_LINEAR(setting.unit)) { // Bottom always at zero
set_reflevel(NGRIDY * s);
}
set_trace_scale(0, s);
set_trace_scale(1, s);
set_trace_scale(2, s);
set_reflevel(setting.reflevel);
}
//int GetScale(void) {
// return get_trace_refpos(2);
//}

Loading…
Cancel
Save

Powered by TurnKey Linux.