Merge branch 'V4.3' of https://github.com/erikkaashoek/tinySA into DiSlord_browser

pull/52/head
DiSlord Live 3 years ago
commit fb4c9c5690

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="317342379697931" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-376882430462109" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
@ -17,7 +17,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="317342379697931" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-376882430462109" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

@ -471,12 +471,12 @@ const uint8_t x10x14_bits[(127-wFONT_START_CHAR)*wFONT_GET_HEIGHT*2] =
_BMP16(0b0111111110000000), // | ******** |
_BMP16(0b1111001111000000), // |**** **** |
_BMP16(0b1110000111000000), // |*** *** |
_BMP16(0b1110001111000000), // |*** **** |
_BMP16(0b1110011111000000), // |*** ***** |
_BMP16(0b1110110111000000), // |*** ** *** |
_BMP16(0b1110110111000000), // |*** ** *** |
_BMP16(0b1111100111000000), // |***** *** |
_BMP16(0b1111000111000000), // |**** *** |
_BMP16(0b1110000111000000), // |*** **** |
_BMP16(0b1110000111000000), // |*** **** |
_BMP16(0b1110000111000000), // |*** *** |
_BMP16(0b1110000111000000), // |*** *** |
_BMP16(0b1110000111000000), // |*** *** |
_BMP16(0b1110000111000000), // |*** *** |
_BMP16(0b1110000111000000), // |*** *** |
_BMP16(0b1111001111000000), // |**** **** |
_BMP16(0b0111111110000000), // | ******** |

@ -679,8 +679,8 @@ const uint8_t x7x11b_bits[] =
0b01111000, // | **** |
0b11001100, // |** ** |
0b11001100, // |** ** |
0b11011100, // |** *** |
0b11101100, // |*** ** |
0b11001100, // |** ** |
0b11001100, // |** ** |
0b11001100, // |** ** |
0b11001100, // |** ** |
0b11001100, // |** ** |

@ -237,6 +237,7 @@ caldata_recall(uint16_t id)
set_reflevel(setting.reflevel);
set_waterfall();
set_level_meter();
sweep_mode = SWEEP_ENABLE;
#ifdef __ULTRA__
ultra_start = (config.ultra_start == ULTRA_AUTO ? DEFAULT_ULTRA_THRESHOLD : config.ultra_start);
#endif

@ -109,6 +109,14 @@ int32_t scan_after_dirty = 0;
uint8_t completed = false;
uint8_t enable_after_complete = 0;
void clear_backup(void) {
uint32_t *f = &backup; // Clear backup when no valid config data
int i = USED_BACKUP_SIZE;
while (i--)
*f++ = 0;
}
#ifdef TINYSA4
static THD_WORKING_AREA(waThread1, 1224);
#else
@ -162,11 +170,19 @@ static THD_FUNCTION(Thread1, arg)
while (i--)
*t++ = *f++;
completed = sweep(true);
if (sweep_once_count>1) {
sweep_once_count--;
#ifdef __LISTEN__
if (setting.listen && markers[active_marker].enabled == M_ENABLED) {
perform(false, 0, getFrequency(markers[active_marker].index), false);
SI4432_Listen(MODE_SELECT(setting.mode));
} else
sweep_mode&=~SWEEP_ONCE;
#endif
{
completed = sweep(true);
if (sweep_once_count>1) {
sweep_once_count--;
} else
sweep_mode&=~SWEEP_ONCE;
}
} else if (sweep_mode & SWEEP_SELFTEST) {
// call from lowest level to save stack space
self_test(setting.test);
@ -176,13 +192,6 @@ static THD_FUNCTION(Thread1, arg)
} else if (sweep_mode & SWEEP_REMOTE) {
sweep_remote();
#endif
#ifdef __LISTEN__
} else if (sweep_mode & SWEEP_LISTEN) {
if (markers[active_marker].enabled == M_ENABLED) {
perform(false, 0, getFrequency(markers[active_marker].index), false);
SI4432_Listen(MODE_SELECT(setting.mode));
}
#endif
#ifdef __CALIBRATE__
} else if (sweep_mode & SWEEP_CALIBRATE) {
// call from lowest level to save stack space
@ -2671,10 +2680,7 @@ int main(void)
config.switch_offset = -5.0;
#endif
if(config_recall()) {
uint32_t *f = &backup; // Clear backup when no valid config data
int i = USED_BACKUP_SIZE;
while (i--)
*f++ = 0;
clear_backup();
}
config.cor_am = 0; // Should be removed from config
config.cor_nfm = 0;
@ -2729,7 +2735,7 @@ int main(void)
load_LCD_properties();
}
ui_mode_normal();
{
if (!(config._mode & _MODE_DONT_SAVE_STATE)) {
backup_t b;
uint32_t *f = &backup;
uint32_t *t = (uint32_t *)&b;

@ -18,7 +18,7 @@
*/
#include "ch.h"
//#ifdef TINYSA_F303
#ifdef TINYSA_F303
#ifdef TINYSA_F072
#error "Remove comment for #ifdef TINYSA_F303"
#endif
@ -26,7 +26,7 @@
#define TINYSA4
#endif
#define TINYSA4_PROTO
//#endif
#endif
#ifdef TINYSA_F072
#ifdef TINYSA_F303
@ -250,6 +250,7 @@ float my_atof(const char *p);
freq_t my_atoui(const char *p);
int shell_printf(const char *fmt, ...);
int usage_printf(const char *fmt, ...);
void clear_backup(void);
#ifdef __REMOTE_DESKTOP__
extern uint8_t remote_mouse_down;
@ -319,10 +320,10 @@ enum {
#define SWEEP_SELFTEST 0x08
#define SWEEP_REMOTE 0x10
#ifdef __LISTEN__
#define SWEEP_LISTEN 0x20
#define SWEEP_CALIBRATE_HARMONIC 0x40
//#define SWEEP_LISTEN 0x20
//#define SWEEP_FACTORY 0x20
#endif
#define SWEEP_CALIBRATE_HARMONIC 0x40
#define SWEEP_UI_MODE 0x80
extern uint8_t sweep_mode;
@ -731,9 +732,10 @@ float marker_to_value(const int i);
#define _MODE_CONNECTION_MASK 0x04
#define _MODE_SERIAL 0x04
#define _MODE_USB 0x00
// don't save state
#define _MODE_DONT_SAVE_STATE 0x08
// auto name
#define _MODE_AUTO_FILENAME 0x08
#define _MODE_AUTO_FILENAME 0x10
#pragma pack(push, 4)
typedef struct config {
@ -1164,6 +1166,7 @@ typedef struct setting
uint8_t spur_removal; // enum
uint8_t disable_correction;
int8_t normalized_trace;
uint8_t listen;
int8_t tracking; // -1...1 Can NOT convert to bool!!!!!!
uint8_t atten_step; // 0...1 !!! need convert to bool
@ -1381,7 +1384,7 @@ typedef struct properties {
//sizeof(properties_t) == 0x1200
#define CONFIG_MAGIC 0x434f4e5B /* 'CONF' */
#define CONFIG_MAGIC 0x434f4e5C /* 'CONF' */
extern int16_t lastsaveid;
//extern properties_t *active_props;

@ -978,7 +978,7 @@ VNA_SHELL_FUNCTION(cmd_z)
return;
}
if (argc == 1) {
setting.step_delay = atoi(argv[0]);
setting.step_delay = my_atoi(argv[0]);
dirty = true;
}
}
@ -990,7 +990,7 @@ VNA_SHELL_FUNCTION(cmd_n)
return;
}
if (argc == 1) {
setting.offset_delay = atoi(argv[0]);
setting.offset_delay = my_atoi(argv[0]);
dirty = true;
}
}
@ -1321,8 +1321,8 @@ again:
switch (m) {
default: goto usage;
case 's': test_output_switch = *a - '0'; break;
case 'd': test_output_drive = atoi(a); break;
case 'a': test_output_attenuate = atoi(a); break;
case 'd': test_output_drive = my_atoi(a); break;
case 'a': test_output_attenuate = my_atoi(a); break;
#ifdef TINYSA4
case 'p': test_path = *a - '0'; break;
#endif

@ -18,6 +18,7 @@
#include "si4432.h" // comment out for simulation
//#endif
#include "stdlib.h"
//#define TINYSA4
#pragma GCC push_options
#ifdef TINYSA4
@ -2795,7 +2796,7 @@ void interpolate_maximum(int m)
const INTER_TYPE y1 = ref_marker_levels[idx - 1];
const INTER_TYPE y2 = ref_marker_levels[idx + 0];
const INTER_TYPE y3 = ref_marker_levels[idx + 1];
const INTER_TYPE d = abs(delta_Hz) * 0.5 * (y1 - y3) / ((y1 - (2 * y2) + y3) + 1e-12);
const INTER_TYPE d = fabs(delta_Hz) * 0.5 * (y1 - y3) / ((y1 - (2 * y2) + y3) + 1e-12);
//const float bin = (float)idx + d;
markers[m].frequency += d;
}
@ -7450,7 +7451,6 @@ void calibrate(void)
{
int local_test_status;
int old_sweep_points = setting._sweep_points;
reset_calibration();
#ifdef TINYSA4
int old_ultra = config.ultra;
config.ultra = true;
@ -7516,6 +7516,7 @@ void calibrate(void)
#endif
#endif
reset_calibration();
in_calibration = true;
for (calibration_stage = CS_NORMAL; calibration_stage < CS_MAX ; calibration_stage++) {
for (int k = 0; k<3; k++) {
@ -7594,7 +7595,7 @@ void calibrate(void)
local_test_status = test_validate(test_case);
calibration_busy();
}
local_test_status = TS_PASS;
local_test_status = TS_PASS; // Must be forced because test_validate calculates pass band wrong
#else
// set_RBW(power_rbw[j]);
// set_sweep_points(21);
@ -7634,7 +7635,13 @@ void calibrate(void)
local_test_status = test_validate(test_case); // Validate test also sets attenuation if zero span
#endif
#endif
if (calibration_stage == CS_NORMAL && peakLevel < -40) {
if ((calibration_stage == CS_NORMAL && peakLevel < -40)
#ifdef TINYSA4
|| (calibration_stage == CS_LNA && peakLevel < -40)
|| (calibration_stage == CS_ULTRA && peakLevel < -40)
|| (calibration_stage == CS_DIRECT && peakLevel < direct_level - 10)
#endif
) {
#ifdef TINYSA4
low_level:
#endif

42
ui.c

@ -542,7 +542,7 @@ show_version(void)
ili9341_drawstring_7x13(info_about[i++], x, y+=bFONT_STR_HEIGHT+2-5);
}
lcd_set_font(FONT_NORMAL);
lcd_printf(x, y+=bFONT_STR_HEIGHT, "HW Version:%s", get_hw_version_text());
lcd_printf(x, y+=bFONT_STR_HEIGHT, "HW Version:%s (%d)", get_hw_version_text(), adc1_single_read(0));
extern const char *states[];
#define ENABLE_THREADS_COMMAND
@ -1523,10 +1523,12 @@ static UI_FUNCTION_ADV_CALLBACK(menu_curve_acb)
reset_settings(old_m);
break;
case CORRECTION_LNA:
case CORRECTION_LNA_ULTRA:
reset_settings(M_LOW);
setting.extra_lna = true;
goto common;
case CORRECTION_LOW:
case CORRECTION_LOW_ULTRA:
reset_settings(M_LOW);
common:
set_sweep_frequency(ST_SPAN, 1000000);
@ -1820,10 +1822,11 @@ static UI_FUNCTION_ADV_CALLBACK(menu_store_preset_acb)
b->param_1.u = data;
return;
}
if (data == 100) {
if (data >= 100) {
reset_settings(M_LOW); // Restore all defaults in Low mode
set_refer_output(-1);
// setting.mode = -1;
if (data == 101) clear_backup();
data = 0;
}
caldata_save(data);
@ -1956,26 +1959,13 @@ static UI_FUNCTION_ADV_CALLBACK(menu_listen_acb)
(void)data;
(void)item;
if (b){
b->icon = (sweep_mode & SWEEP_LISTEN) ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
b->icon = (setting.listen) ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
return;
}
if (sweep_mode & SWEEP_LISTEN) {
sweep_mode = SWEEP_ENABLE;
} else {
sweep_mode = SWEEP_LISTEN;
}
setting.listen = !setting.listen;
ui_mode_normal();
redraw_frame();
request_to_redraw_grid();
#if 0
if (markers[active_marker].enabled == M_ENABLED) {
do {
perform(false,0,frequencies[markers[active_marker].index], false);
SI4432_Listen(MODE_SELECT(setting.mode));
} while (ui_process_listen_lever());
}
#endif
}
#endif
#ifdef TINYSA4
@ -3210,6 +3200,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_harmonic_acb)
return;
}
set_harmonic(data);
config_save();
}
#endif
@ -3290,6 +3281,17 @@ static UI_FUNCTION_ADV_CALLBACK(menu_settings_pulse_acb){
toggle_pulse();
}
static UI_FUNCTION_ADV_CALLBACK(menu_save_state_acb){
(void)item;
(void)data;
if(b){
b->icon = (config._mode & _MODE_DONT_SAVE_STATE) ? BUTTON_ICON_NOCHECK : BUTTON_ICON_CHECK;
return;
}
config._mode ^= _MODE_DONT_SAVE_STATE;
config_save();
}
#ifdef __DRAW_LINE__
static UI_FUNCTION_ADV_CALLBACK(menu_settings_draw_line_acb){
(void)item;
@ -3628,10 +3630,11 @@ static const menuitem_t menu_load_preset[] =
{
{ MT_ADV_CALLBACK, 0, "LOAD\nSTARTUP", menu_load_preset_acb},
{ MT_ADV_CALLBACK|MT_REPEATS, DATA_STARTS_REPEATS(1,4), MT_CUSTOM_LABEL, menu_load_preset_acb},
{ MT_ADV_CALLBACK, 101, "LOAD\nDEFAULTS",menu_store_preset_acb},
{ MT_ADV_CALLBACK, _MODE_DONT_SAVE_STATE, "SAVE\nSTATE", menu_save_state_acb},
#ifdef __SD_FILE_BROWSER__
{ MT_CALLBACK, FMT_PRS_FILE, "LOAD FROM\n SD", menu_sdcard_browse_cb },
#endif
{ MT_SUBMENU, 0, "STORE" , menu_store_preset},
{ MT_NONE, 0, NULL, menu_back} // next-> menu_back
};
@ -4088,6 +4091,9 @@ static const menuitem_t menu_settings[] =
{ MT_ADV_CALLBACK,0, "PROGRESS\nBAR", menu_progress_bar_acb},
{ MT_ADV_CALLBACK, 0, "DIRECT\nMODE", menu_direct_acb},
{ MT_ADV_CALLBACK, 0, "LINEAR\nAVERAGING", menu_linear_averaging_acb},
#ifdef __HARMONIC__
{ MT_SUBMENU ,0, "HARMONIC", menu_harmonic},
#endif
{ MT_KEYPAD, KM_FREQ_CORR, "FREQ CORR\n\b%s", "Enter ppb correction"},
// { MT_SUBMENU, 0, "CALIBRATE\nHARMONIC", menu_calibrate_harmonic},
#ifdef __NOISE_FIGURE__

Loading…
Cancel
Save

Powered by TurnKey Linux.