Small bugs and space saving

Waterfall colors
Attennuation averaging
Removed ham bands
master
erikkaashoek 5 years ago
parent 08a6176b06
commit 1387496479

@ -2423,6 +2423,7 @@ static const VNAShellCommand commands[] =
#ifdef ENABLE_THREADS_COMMAND
{"threads" , cmd_threads , 0},
#endif
#ifdef __SINGLE_LETTER__
{ "y", cmd_y, CMD_WAIT_MUTEX },
{ "i", cmd_i, CMD_WAIT_MUTEX },
{ "v", cmd_v, CMD_WAIT_MUTEX },
@ -2437,9 +2438,10 @@ static const VNAShellCommand commands[] =
{ "o", cmd_o, CMD_WAIT_MUTEX },
{ "d", cmd_d, CMD_WAIT_MUTEX },
{ "f", cmd_f, CMD_WAIT_MUTEX },
#endif
#ifdef TINYSA4
{ "g", cmd_g, CMD_WAIT_MUTEX },
#endif
#endif
#ifdef __ADF4351__
{ "x", cmd_x, 0 },
#endif
@ -2452,7 +2454,11 @@ VNA_SHELL_FUNCTION(cmd_help)
(void)argv;
const VNAShellCommand *scp = commands;
shell_printf("Commands:");
while (scp->sc_name != NULL && scp->sc_function != cmd_y) {
while (scp->sc_name != NULL
#ifdef __SINGLE_LETTER__
&& scp->sc_function != cmd_y
#endif
) {
shell_printf(" %s", scp->sc_name);
scp++;
}
@ -3018,7 +3024,10 @@ void hard_fault_handler_c(uint32_t *sp)
#endif
shell_printf("===================================\r\n");
#else
(void)sp;
ili9341_set_background(LCD_BG_COLOR);
ili9341_set_foreground(LCD_FG_COLOR);
ili9341_drawstring("FATAL ERROR", OFFSETX, 120);
(void)sp;
#endif
while (true) {
}

@ -46,11 +46,12 @@
#define __SELFTEST__
#define __CALIBRATE__
#define __FAST_SWEEP__ // Pre-fill SI4432 RSSI buffer to get fastest sweep in zero span mode
#define __HAM_BAND__
//#define __HAM_BAND__
//#define __ULTRA__ // Add harmonics mode on low input.
#define __SPUR__ // Does spur reduction by shifting IF
//#define __USE_SERIAL_CONSOLE__ // Enable serial I/O connection (need enable HAL_USE_SERIAL as TRUE in halconf.h)
#define __SINGLE_LETTER__
#define __NICE_BIG_FONT__
#define __QUASI_PEAK__
#ifdef TINYSA3
@ -411,7 +412,7 @@ extern const uint8_t numfont16x22[];
#define bFONT_GET_DATA(ch) ( &x7x11b_bits[(ch-bFONT_START_CHAR)*bFONT_GET_HEIGHT])
#define bFONT_GET_WIDTH(ch) (8-(x7x11b_bits[(ch-bFONT_START_CHAR)*bFONT_GET_HEIGHT]&7))
#if 1 // Set to 0 to save 3kByte and loose nice font
#ifdef __NICE_BIG_FONT__
#define wFONT_START_CHAR 0x17
#define wFONT_MAX_WIDTH 12
#define wFONT_GET_HEIGHT 14

@ -39,7 +39,9 @@ static void cell_blit_bitmap(int x, int y, uint16_t w, uint16_t h, const uint8_t
static void draw_battery_status(void);
static void update_waterfall(void);
void cell_draw_test_info(int x0, int y0);
#ifndef wFONT_GET_DATA
static void cell_drawstring_size(char *str, int x, int y, int size);
#endif
static int16_t grid_offset;
static int16_t grid_width;
static freq_t grid_span;
@ -2447,7 +2449,7 @@ static void update_waterfall(void){
gamma_correct(b);
color = RGB565(r, g, b);
#else
uint16_t y = CELL_Y(index[i])* (graph_bottom == BIG_WATERFALL ? 2 : 1); // should be always in range 0 - graph_bottom *2 depends on height of scroll
uint16_t y = SMALL_WATERFALL - CELL_Y(index[i])* (graph_bottom == BIG_WATERFALL ? 2 : 1); // should be always in range 0 - graph_bottom *2 depends on height of scroll
// Calculate gradient palette for range 0 .. 192
// idx r g b
// 0 - 127 0 0

@ -18,7 +18,6 @@
#pragma GCC optimize ("Os")
static int VFO = 0;
static int points = 101; // For 's' and 'm' commands
VNA_SHELL_FUNCTION(cmd_mode)
@ -324,64 +323,6 @@ usage:
}
VNA_SHELL_FUNCTION(cmd_v)
{
if (argc != 1) {
shell_printf("%d\r\n", VFO);
return;
}
VFO = my_atoi(argv[0]) > 0 ? 1 : 0;
shell_printf("VFO %d\r\n", VFO);
}
VNA_SHELL_FUNCTION(cmd_y)
{
int rvalue;
if (argc != 1 && argc != 2) {
shell_printf("usage: y {addr(0-95)} [value(0-0xFF)]\r\n");
return;
}
rvalue = my_atoui(argv[0]);
#ifdef __SI4432__
int lvalue = 0;
SI4432_Sel = VFO;
if (argc == 2){
lvalue = my_atoui(argv[1]);
SI4432_Write_Byte(rvalue, lvalue);
} else {
lvalue = SI4432_Read_Byte(rvalue);
shell_printf("%x\r\n", lvalue);
}
#endif
}
#if 0 // not used
VNA_SHELL_FUNCTION(cmd_z)
{
static const char cmd_z_list[] = "t|r|i";
if (argc != 1) {
shell_printf("usage: z %s\r\n", cmd_z_list);
return;
}
if (argc == 1) {
#ifdef __SI4432__
SI4432_Sel = VFO;
int type = get_str_index(argv[0], cmd_z_list);
switch(type) {
case 0:
SI4432_Transmit(3);
break;
case 1:
SI4432_Receive();
break;
case 2:
SI4432_Reset();
break;
}
#endif
}
}
#endif
VNA_SHELL_FUNCTION(cmd_selftest)
{
if (argc < 1 || argc > 2) {
@ -396,6 +337,10 @@ VNA_SHELL_FUNCTION(cmd_selftest)
sweep_mode = SWEEP_SELFTEST;
}
#ifdef __SINGLE_LETTER__
static int VFO = 0;
#ifdef __ADF4351__
uint32_t xtoi(char *t)
@ -441,7 +386,6 @@ VNA_SHELL_FUNCTION(cmd_x)
}
#endif
VNA_SHELL_FUNCTION(cmd_i)
{
int rvalue;
@ -550,6 +494,68 @@ VNA_SHELL_FUNCTION(cmd_s)
points = my_atoi(argv[0]);
}
VNA_SHELL_FUNCTION(cmd_v)
{
if (argc != 1) {
shell_printf("%d\r\n", VFO);
return;
}
VFO = my_atoi(argv[0]) > 0 ? 1 : 0;
shell_printf("VFO %d\r\n", VFO);
}
VNA_SHELL_FUNCTION(cmd_y)
{
int rvalue;
if (argc != 1 && argc != 2) {
shell_printf("usage: y {addr(0-95)} [value(0-0xFF)]\r\n");
return;
}
rvalue = my_atoui(argv[0]);
#ifdef __SI4432__
int lvalue = 0;
SI4432_Sel = VFO;
if (argc == 2){
lvalue = my_atoui(argv[1]);
SI4432_Write_Byte(rvalue, lvalue);
} else {
lvalue = SI4432_Read_Byte(rvalue);
shell_printf("%x\r\n", lvalue);
}
#endif
}
#if 0 // not used
VNA_SHELL_FUNCTION(cmd_z)
{
static const char cmd_z_list[] = "t|r|i";
if (argc != 1) {
shell_printf("usage: z %s\r\n", cmd_z_list);
return;
}
if (argc == 1) {
#ifdef __SI4432__
SI4432_Sel = VFO;
int type = get_str_index(argv[0], cmd_z_list);
switch(type) {
case 0:
SI4432_Transmit(3);
break;
case 1:
SI4432_Receive();
break;
case 2:
SI4432_Reset();
break;
}
#endif
}
}
#endif
#endif
void sweep_remote(void)
{
uint32_t i;
@ -576,6 +582,7 @@ void sweep_remote(void)
sweep_mode = 0;
}
#ifdef __SINGLE_LETTER__
VNA_SHELL_FUNCTION(cmd_m)
{
(void)argc;
@ -627,6 +634,7 @@ VNA_SHELL_FUNCTION(cmd_f)
setting.test_argument = my_atoi(argv[0]);;
sweep_mode = SWEEP_SELFTEST;
}
#endif
VNA_SHELL_FUNCTION(cmd_correction)
{

@ -3084,12 +3084,14 @@ int validate_flatness(int i) {
const float atten_step[7] = { 0.0, 0.5, 1.0, 2.0, 4.0, 8.0, 16.0 };
int validate_atten(int i) {
int status = TS_PASS;
float reference_peak_level = 0.0;
test_fail_cause[i] = "Attenuator ";
// for (int j= 0; j < 64; j++ ) {
for (int j= 0; j < 7; j++ ) {
// set_attenuation(((float)j)/2.0);
set_attenuation(atten_step[j]);
// float a = ((float)j)/2.0;
float a = atten_step[j];
set_attenuation(a);
float summed_peak_level = 0;
#define ATTEN_TEST_SWEEPS 5
for (int k=0; k<ATTEN_TEST_SWEEPS; k++) {
@ -3097,24 +3099,28 @@ int validate_atten(int i) {
test_acquire(TEST_ATTEN); // Acquire test
// test_validate(TEST_ATTEN); // Validate test
float peaklevel = 0.0;
for (int k = 0 ; k < sweep_points; k++)
peaklevel += actual_t[k];
peaklevel /= sweep_points;
summed_peak_level += peakLevel;
for (int n = 0 ; n < sweep_points; n++)
peaklevel += actual_t[n];
peaklevel /= (sweep_points - 0);
summed_peak_level += peaklevel;
}
summed_peak_level /= ATTEN_TEST_SWEEPS;
if (j == 0)
reference_peak_level = summed_peak_level;
else {
// shell_printf("Attenuation %.2fdB, measured level %.2fdBm, delta %.2fdB\n\r",((float)j)/2.0, summed_peak_level, summed_peak_level - reference_peak_level);
// shell_printf("Attenuation %.2fdB, measured level %.2fdBm, delta %.2fdB\n\r",atten_step[j], summed_peak_level, summed_peak_level - reference_peak_level);
#define ATTEN_TEST_CRITERIA 3.0
if (summed_peak_level - reference_peak_level <= -ATTEN_TEST_CRITERIA || summed_peak_level - reference_peak_level >= ATTEN_TEST_CRITERIA)
return(TS_FAIL);
if (SDU1.config->usbp->state == USB_ACTIVE) shell_printf("Attenuation %.2fdB, measured level %.2fdBm, delta %.2fdB\n\r",a, summed_peak_level, summed_peak_level - reference_peak_level);
#define ATTEN_TEST_CRITERIA 1
if (summed_peak_level - reference_peak_level <= -ATTEN_TEST_CRITERIA || summed_peak_level - reference_peak_level >= ATTEN_TEST_CRITERIA) {
status = TS_FAIL;
// draw_all(true);
}
}
}
test_fail_cause[i] = "";
return(TS_PASS);
if (status == TS_PASS)
test_fail_cause[i] = "";
return(status);
}
int validate_display(int tc)

@ -1782,7 +1782,7 @@ static const menuitem_t menu_settings[] =
{
{ MT_ADV_CALLBACK | MT_LOW, 0,"LO OUTPUT", menu_lo_output_acb},
{ MT_KEYPAD, KM_ACTUALPOWER, "ACTUAL\nPOWER", NULL},
{ MT_KEYPAD | MT_LOW, KM_IF, "IF FREQ", "Set to zero for auto IF"},
{ MT_KEYPAD | MT_LOW, KM_IF, "IF FREQ", "0=auto IF"},
{ MT_SUBMENU,0, "SCAN SPEED", menu_scanning_speed},
{ MT_KEYPAD, KM_REPEAT, "SAMPLE\nREPEAT", "1..100"},
{ MT_SUBMENU | MT_LOW,0, "MIXER\nDRIVE", menu_lo_drive},

Loading…
Cancel
Save

Powered by TurnKey Linux.