Coder Social home page Coder Social logo

Comments (2)

czietz avatar czietz commented on July 28, 2024

I think the line causing the typo is:

tinySA/ui_sa.c

Line 2655 in b062ff6

{ MT_KEYPAD | MT_LOW,KM_FAST_SPEEDUP,"PEEDUP\n\b%s", "2..20, 0=disable"},

... and the wrong display "0s" is because KM_FAST_SPEEDUP is not handled in this function:

tinySA/ui_sa.c

Lines 3111 to 3327 in b062ff6

static void fetch_numeric_target(uint8_t mode)
{
switch (mode) {
case KM_START:
uistat.freq_value = get_sweep_frequency(ST_START) + (setting.frequency_offset - FREQUENCY_SHIFT);
plot_printf(uistat.text, sizeof uistat.text, "%.3QMHz", uistat.freq_value);
break;
case KM_STOP:
uistat.freq_value = get_sweep_frequency(ST_STOP) + (setting.frequency_offset - FREQUENCY_SHIFT);
plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value);
break;
case KM_CENTER:
uistat.freq_value = get_sweep_frequency(ST_CENTER) + (setting.frequency_offset - FREQUENCY_SHIFT);
plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value);
break;
case KM_SPAN:
uistat.freq_value = get_sweep_frequency(ST_SPAN);
plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value);
break;
case KM_CW:
uistat.freq_value = get_sweep_frequency(ST_CW) + (setting.frequency_offset - FREQUENCY_SHIFT);
plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value);
break;
case KM_SCALE:
case KM_LINEAR_SCALE:
uistat.value = setting.scale;
plot_printf(uistat.text, sizeof uistat.text, "%f/", uistat.value);
break;
case KM_REFLEVEL:
uistat.value = setting.reflevel;
plot_printf(uistat.text, sizeof uistat.text, "%f", uistat.value);
break;
case KM_ATTENUATION:
uistat.value = get_attenuation();
plot_printf(uistat.text, sizeof uistat.text, "%ddB", ((int32_t)uistat.value));
break;
case KM_ACTUALPOWER:
uistat.value = get_level_offset();
plot_printf(uistat.text, sizeof uistat.text, "%ddB", ((int32_t)uistat.value));
break;
case KM_IF:
uistat.freq_value = setting.frequency_IF;
if (!setting.auto_IF)
plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value);
else
plot_printf(uistat.text, sizeof uistat.text, "AUTO");
break;
#ifdef TINYSA4
case KM_IF2:
uistat.freq_value = config.frequency_IF2;
plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value);
break;
case KM_R:
uistat.value = setting.R;
if (setting.R)
plot_printf(uistat.text, sizeof uistat.text, "%d", setting.R);
else
plot_printf(uistat.text, sizeof uistat.text, "AUTO");
break;
case KM_MOD:
if (local_modulo)
plot_printf(uistat.text, sizeof uistat.text, "%d", local_modulo);
else
plot_printf(uistat.text, sizeof uistat.text, "AUTO");
break;
case KM_CP:
uistat.value = ADF4350_modulo;
plot_printf(uistat.text, sizeof uistat.text, "%d", ADF4350_modulo);
break;
#endif
case KM_SAMPLETIME:
uistat.value = setting.step_delay;
if (uistat.value)
plot_printf(uistat.text, sizeof uistat.text, "%dus", ((int32_t)uistat.value));
else
plot_printf(uistat.text, sizeof uistat.text, "AUTO");
break;
case KM_REPEAT:
uistat.value = setting.repeat;
plot_printf(uistat.text, sizeof uistat.text, "%d", ((int32_t)uistat.value));
break;
case KM_LOWOUTLEVEL:
uistat.value = get_level(); // compensation for dB offset during low output mode
float end_level = ((int32_t)uistat.value)+setting.level_sweep;
if (end_level < level_min())
end_level = level_min();
if (end_level > level_max())
end_level = level_max();
uistat.value += setting.external_gain;
end_level += setting.external_gain;
if (setting.level_sweep != 0)
plot_printf(uistat.text, sizeof uistat.text, "%.1f to %.1fdBm", uistat.value, end_level);
else
plot_printf(uistat.text, sizeof uistat.text, "%+.1fdBm", uistat.value);
break;
case KM_HIGHOUTLEVEL:
uistat.value = get_level(); // compensation for dB offset during low output mode
uistat.value += setting.external_gain;
plot_printf(uistat.text, sizeof uistat.text, "%+.1fdBm", uistat.value);
break;
case KM_DECAY:
uistat.value = setting.decay;
plot_printf(uistat.text, sizeof uistat.text, "%d", ((int32_t)uistat.value));
break;
#ifdef __QUASI_PEAK__
case KM_ATTACK:
uistat.value = setting.attack;
plot_printf(uistat.text, sizeof uistat.text, "%d", ((int32_t)uistat.value));
break;
#endif
#ifdef __ULTRA__
case KM_ULTRA_START:
uistat.freq_value = config.ultra_threshold;
plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value );
break;
case KM_DIRECT_START:
uistat.freq_value = config.direct_start;
plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value);
break;
case KM_DIRECT_STOP:
uistat.freq_value = config.direct_stop;
plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value);
break;
#endif
#ifdef __LIMITS__
case KM_LIMIT_FREQ:
uistat.freq_value = setting.limits[current_trace][active_limit].frequency;
plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value);
break;
case KM_LIMIT_LEVEL:
uistat.value = value(setting.limits[current_trace][active_limit].level);
plot_printf(uistat.text, sizeof uistat.text, "%.1f", uistat.value);
break;
#endif
case KM_NOISE:
uistat.value = setting.noise;
plot_printf(uistat.text, sizeof uistat.text, "%d", ((int32_t)uistat.value));
break;
#ifdef TINYSA4
case KM_30MHZ:
uistat.freq_value = config.setting_frequency_30mhz;
plot_printf(uistat.text, sizeof uistat.text, "%.5QHz", uistat.freq_value);
break;
#else
case KM_10MHZ:
uistat.freq_value = config.setting_frequency_10mhz;
plot_printf(uistat.text, sizeof uistat.text, "%3.6fMHz", uistat.freq_value);
break;
#endif
case KM_EXT_GAIN:
uistat.value = setting.external_gain;
plot_printf(uistat.text, sizeof uistat.text, "%.1fdB", uistat.value);
break;
case KM_LEVELSWEEP:
uistat.value = setting.level_sweep;
plot_printf(uistat.text, sizeof uistat.text, "%.1fdB", uistat.value);
break;
case KM_SWEEP_TIME:
// if (setting.sweep_time_us < calc_min_sweep_time_us())
// uistat.value = calc_min_sweep_time_us();
// else
uistat.value = setting.sweep_time_us;
uistat.value /= (float)ONE_SECOND_TIME;
plot_printf(uistat.text, sizeof uistat.text, "%.3Fs", uistat.value);
break;
case KM_TRIGGER:
uistat.value = setting.trigger_level;
plot_printf(uistat.text, sizeof uistat.text, "%.1fdB", uistat.value);
break;
case KM_MARKER:
if (active_marker >=0) {
uistat.freq_value = markers[active_marker].frequency;
plot_printf(uistat.text, sizeof uistat.text, "%.3QHz", uistat.freq_value);
}
break;
case KM_MODULATION:
if (active_marker >=0) {
uistat.value = setting.modulation_frequency;
plot_printf(uistat.text, sizeof uistat.text, "%7.0fHz", uistat.value);
}
break;
case KM_VAR:
uistat.freq_value = setting.frequency_var;
if ( setting.frequency_var)
plot_printf(uistat.text, sizeof uistat.text, "%.4QHz", setting.frequency_var);
else
plot_printf(uistat.text, sizeof uistat.text, "AUTO");
break;
#ifdef __NOISE_FIGURE__
case KM_NF:
uistat.value = config.noise_figure;
plot_printf(uistat.text, sizeof uistat.text, "%.1fdB", uistat.value);
break;
#endif
#ifdef __USE_RTC__
case KM_RTC_TIME:
{
uint32_t tr = rtc_get_tr_bin(); // TR read first
plot_printf(uistat.text, sizeof uistat.text, "%02d:%02d:%02d",
RTC_TR_HOUR(dr),
RTC_TR_MIN(dr),
RTC_TR_SEC(dr));
}
break;
case KM_RTC_DATE:
{
uint32_t dr = rtc_get_dr_bin(); // DR read second
plot_printf(uistat.text, sizeof uistat.text, "20%02d/%02d/%02d",
RTC_DR_YEAR(dr),
RTC_DR_MONTH(dr),
RTC_DR_DAY(dr));
}
break;
#endif
}
}

However, the exact source for the firmware 1.3-347-g31eb02e (i.e. commit 31eb02e) seems not to be in this repo. (Note the additional "NOISE SOURCE" option in the FW on my device.) Thus, I cannot be sure about the source code lines.

from tinysa.

czietz avatar czietz commented on July 28, 2024

Confirmed fixed. Thank you!

However, when cherry-picking commits for this fix, I accidentally picked on that changes the ChibiOS, too. Please consider my fix as PR #29.

from tinysa.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.