From 7188755e6ee1f7435db564dac587c19d0e0c5ced Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Sun, 23 May 2021 13:13:11 +0200 Subject: [PATCH 1/5] Solved error in marker search --- sa_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sa_core.c b/sa_core.c index 452cfc0..fef5423 100644 --- a/sa_core.c +++ b/sa_core.c @@ -2152,7 +2152,7 @@ int index_of_frequency(freq_t f) // Search which index in the frequency tab return -1; if (f > frequencies[sweep_points-1]) return -1; - int i = (f + (f_step >> 1)) / f_step; + int i = ((f - frequencies[0] ) + (f_step >> 1)) / f_step; return i; #if 0 // int R = (sizeof frequencies)/sizeof(int) - 1; From 0691b85fa32c6f820c8aafa9a2422b6489721ab8 Mon Sep 17 00:00:00 2001 From: DiSlord Date: Sun, 16 May 2021 19:06:30 +0300 Subject: [PATCH 2/5] Remove --- NANOVNA_STM32_F072/mcuconf.h | 250 ----------------------------------- 1 file changed, 250 deletions(-) diff --git a/NANOVNA_STM32_F072/mcuconf.h b/NANOVNA_STM32_F072/mcuconf.h index 99f4609..241b42d 100644 --- a/NANOVNA_STM32_F072/mcuconf.h +++ b/NANOVNA_STM32_F072/mcuconf.h @@ -17,254 +17,6 @@ #ifndef MCUCONF_H #define MCUCONF_H -#ifdef TINYSA_F303 - -/* - * STM32F3xx drivers configuration. - * The following settings override the default settings present in - * the various device driver implementation headers. - * Note that the settings for each driver only have effect if the whole - * driver is enabled in halconf.h. - * - * IRQ priorities: - * 15...0 Lowest...Highest. - * - * DMA priorities: - * 0...3 Lowest...Highest. - */ - -#define STM32F3xx_MCUCONF - -/* - * HAL driver system settings. - */ -#define STM32_NO_INIT FALSE -#define STM32_PVD_ENABLE FALSE -#define STM32_PLS STM32_PLS_LEV0 -#if 0 // 72MHz -#define STM32_HSI_ENABLED FALSE -#define STM32_HSE_ENABLED TRUE -#define STM32_SW STM32_SW_PLL -#define STM32_PLLSRC STM32_PLLSRC_HSE -#define STM32_PREDIV_VALUE 1 -#define STM32_PLLMUL_VALUE 9 -#define STM32_USBPRE STM32_USBPRE_DIV1P5 -#else -#define STM32_HSI_ENABLED TRUE // 48MHz -#define STM32_HSE_ENABLED FALSE -#define STM32_SW STM32_SW_PLL -#define STM32_PLLSRC STM32_PLLSRC_HSI -#define STM32_PREDIV_VALUE 1 -#define STM32_PLLMUL_VALUE 12 // prediv HSI always 2 -#define STM32_USBPRE STM32_USBPRE_DIV1 -#endif -#define STM32_HPRE STM32_HPRE_DIV1 -#define STM32_PPRE1 STM32_PPRE1_DIV2 -// Set SPI1 more faster use PPRE2 max speed -#define STM32_PPRE2 STM32_PPRE2_DIV1 -#define STM32_MCOSEL STM32_MCOSEL_PLLDIV2 -#define STM32_ADC12PRES STM32_ADC12PRES_DIV2 -//#define STM32_ADC34PRES STM32_ADC34PRES_DIV1 -#define STM32_USART1SW STM32_USART1SW_PCLK -//#define STM32_USART2SW STM32_USART2SW_PCLK -//#define STM32_USART3SW STM32_USART3SW_PCLK -#define STM32_I2C1SW STM32_I2C1SW_SYSCLK -//#define STM32_I2C2SW STM32_I2C2SW_SYSCLK -#define STM32_TIM1SW STM32_TIM1SW_PCLK2 -#define STM32_TIM8SW STM32_TIM8SW_PCLK2 -#define STM32_USB_CLOCK_REQUIRED TRUE - -/* - * RTC driver system settings for stm32f303 - */ - -#ifndef VNA_USE_LSE -// Use 40kHz LSI -#define STM32_LSE_ENABLED FALSE -#define STM32_LSI_ENABLED TRUE -#define STM32_RTCSEL STM32_RTCSEL_LSI -#define STM32_RTC_PRESA_VALUE 40 -#define STM32_RTC_PRESS_VALUE 1000 -#else -// Use 32768Hz LSE -#define STM32_LSE_ENABLED TRUE -#define STM32_LSI_ENABLED FALSE -#define STM32_RTCSEL STM32_RTCSEL_LSE -#define STM32_RTC_PRESA_VALUE 32 -#define STM32_RTC_PRESS_VALUE 1024 -#define STM32_LSEDRV (3 << 3) -#endif - -/* - * ADC driver system settings. - */ -#define STM32_ADC_USE_ADC1 TRUE -#define STM32_ADC_USE_ADC2 TRUE -#define STM32_ADC_USE_ADC3 FALSE -#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(1, 1) -#define STM32_ADC_ADC2_DMA_STREAM STM32_DMA_STREAM_ID(2, 1) -//#define STM32_ADC_ADC3_DMA_STREAM STM32_DMA_STREAM_ID(2, 5) -//#define STM32_ADC_ADC4_DMA_STREAM STM32_DMA_STREAM_ID(2, 2) -#define STM32_ADC_ADC12_DMA_PRIORITY 2 -//#define STM32_ADC_ADC34_DMA_PRIORITY 2 -#define STM32_ADC_ADC12_IRQ_PRIORITY 2 -//#define STM32_ADC_ADC34_IRQ_PRIORITY 5 -#define STM32_ADC_ADC12_DMA_IRQ_PRIORITY 2 -//#define STM32_ADC_ADC34_DMA_IRQ_PRIORITY 5 -//#define STM32_ADC_ADC12_CLOCK_MODE ADC_CCR_CKMODE_ADCCK -//#define STM32_ADC_ADC12_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV2 -#define STM32_ADC_ADC12_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV1 -//#define STM32_ADC_ADC34_CLOCK_MODE ADC_CCR_CKMODE_AHB_DIV1 -#define STM32_ADC_DUAL_MODE FALSE - -/* - * CAN driver system settings. - */ -#define STM32_CAN_USE_CAN1 FALSE -#define STM32_CAN_CAN1_IRQ_PRIORITY 11 - -/* - * DAC driver system settings. - */ -#define STM32_DAC_DUAL_MODE FALSE -#define STM32_DAC_USE_DAC1_CH1 TRUE -#define STM32_DAC_USE_DAC1_CH2 TRUE -#define STM32_DAC_DAC1_CH1_IRQ_PRIORITY 10 -#define STM32_DAC_DAC1_CH2_IRQ_PRIORITY 10 -#define STM32_DAC_DAC1_CH1_DMA_PRIORITY 2 -#define STM32_DAC_DAC1_CH2_DMA_PRIORITY 2 - -/* - * EXT driver system settings. - */ -#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI16_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI17_IRQ_PRIORITY 3 -#define STM32_EXT_EXTI21_22_IRQ_PRIORITY 3 - -#define STM32_DISABLE_EXTI2122_HANDLER TRUE - -/* - * GPT driver system settings. - */ -#define STM32_GPT_USE_TIM1 FALSE -#define STM32_GPT_USE_TIM2 FALSE -#define STM32_GPT_USE_TIM3 TRUE -#define STM32_GPT_USE_TIM4 TRUE -#define STM32_GPT_TIM1_IRQ_PRIORITY 2 -#define STM32_GPT_TIM2_IRQ_PRIORITY 2 -#define STM32_GPT_TIM3_IRQ_PRIORITY 2 -#define STM32_GPT_TIM4_IRQ_PRIORITY 2 - -/* - * I2C driver system settings. - */ -#define STM32_I2C_USE_I2C1 TRUE -#define STM32_I2C_USE_I2C2 FALSE -#define STM32_I2C_BUSY_TIMEOUT 50 -#define STM32_I2C_I2C1_IRQ_PRIORITY 3 -#define STM32_I2C_I2C2_IRQ_PRIORITY 3 -#define STM32_I2C_USE_DMA TRUE -#define STM32_I2C_I2C1_DMA_PRIORITY 1 -#define STM32_I2C_I2C2_DMA_PRIORITY 1 -#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure") - -/* - * I2S driver system settings. - */ -#define STM32_I2S_USE_SPI1 FALSE -#define STM32_I2S_USE_SPI2 FALSE -#define STM32_I2S_SPI1_MODE (STM32_I2S_MODE_MASTER | \ - STM32_I2S_MODE_RX) -#define STM32_I2S_SPI2_MODE (STM32_I2S_MODE_SLAVE | \ - STM32_I2S_MODE_RX ) -#define STM32_I2S_SPI1_IRQ_PRIORITY 2 -#define STM32_I2S_SPI2_IRQ_PRIORITY 2 -#define STM32_I2S_SPI1_DMA_PRIORITY 1 -#define STM32_I2S_SPI2_DMA_PRIORITY 1 -#define STM32_I2S_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) -#define STM32_I2S_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3) -#define STM32_I2S_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4) -#define STM32_I2S_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5) -#define STM32_I2S_DMA_ERROR_HOOK(i2sp) osalSysHalt("DMA failure") - -/* - * ICU driver system settings. - */ -#define STM32_ICU_USE_TIM1 FALSE -#define STM32_ICU_USE_TIM2 FALSE -#define STM32_ICU_USE_TIM3 FALSE -#define STM32_ICU_TIM1_IRQ_PRIORITY 3 -#define STM32_ICU_TIM2_IRQ_PRIORITY 3 -#define STM32_ICU_TIM3_IRQ_PRIORITY 3 - -/* - * PWM driver system settings. - */ -#define STM32_PWM_USE_ADVANCED FALSE -#define STM32_PWM_USE_TIM1 FALSE -#define STM32_PWM_USE_TIM2 FALSE -#define STM32_PWM_USE_TIM3 FALSE -#define STM32_PWM_TIM1_IRQ_PRIORITY 3 -#define STM32_PWM_TIM2_IRQ_PRIORITY 3 -#define STM32_PWM_TIM3_IRQ_PRIORITY 3 - -/* - * SERIAL driver system settings. - */ -#define STM32_SERIAL_USE_USART1 TRUE -#define STM32_SERIAL_USE_USART2 FALSE -#define STM32_SERIAL_USART1_PRIORITY 3 -#define STM32_SERIAL_USART2_PRIORITY 3 - -/* - * SPI driver system settings. - */ -#define STM32_SPI_USE_SPI1 FALSE -#define STM32_SPI_USE_SPI2 FALSE -#define STM32_SPI_USE_SPI3 FALSE -#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) -#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3) -#define STM32_SPI_SPI1_DMA_PRIORITY 1 -#define STM32_SPI_SPI2_DMA_PRIORITY 1 -#define STM32_SPI_SPI1_IRQ_PRIORITY 2 -#define STM32_SPI_SPI2_IRQ_PRIORITY 2 -#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure") - -/* - * ST driver system settings. - */ -#define STM32_ST_IRQ_PRIORITY 2 -#define STM32_ST_USE_TIMER 2 - -/* - * UART driver system settings. - */ -#define STM32_UART_USE_USART1 FALSE -#define STM32_UART_USE_USART2 FALSE -#define STM32_UART_USART1_IRQ_PRIORITY 3 -#define STM32_UART_USART2_IRQ_PRIORITY 3 -#define STM32_UART_USART1_DMA_PRIORITY 0 -#define STM32_UART_USART2_DMA_PRIORITY 0 -#define STM32_UART_USART3_DMA_PRIORITY 0 -#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure") - -/* - * USB driver system settings. - */ -#define STM32_USB_USE_USB1 TRUE -#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE -#define STM32_USB_USB1_LP_IRQ_PRIORITY 3 - -/* - * WDG driver system settings. - */ -#define STM32_WDG_USE_IWDG FALSE - -#else - /* * STM32F0xx drivers configuration. * The following settings override the default settings present in @@ -473,6 +225,4 @@ */ #define STM32_WDG_USE_IWDG FALSE -#endif - #endif /* MCUCONF_H */ From da28f02423ffa5da83a4db1ef9677928001c939e Mon Sep 17 00:00:00 2001 From: DiSlord Date: Sun, 23 May 2021 16:02:28 +0300 Subject: [PATCH 3/5] Pin names --- NANOVNA_STM32_F303/board.h | 56 +++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/NANOVNA_STM32_F303/board.h b/NANOVNA_STM32_F303/board.h index 84461c1..4c3cb8b 100644 --- a/NANOVNA_STM32_F303/board.h +++ b/NANOVNA_STM32_F303/board.h @@ -260,7 +260,7 @@ */ #define VAL_GPIOB_MODER (PIN_MODE_ANALOG(GPIOB_XN) | \ PIN_MODE_ANALOG(GPIOB_YN) | \ - PIN_MODE_OUTPUT(2) | \ + PIN_MODE_OUTPUT(GPIO_LCD_RESET) | \ PIN_MODE_ALTERNATE(GPIOB_SPI_SCLK) | \ PIN_MODE_ALTERNATE(GPIOB_SPI_MISO) | \ PIN_MODE_ALTERNATE(GPIOB_SPI_MOSI) | \ @@ -274,12 +274,12 @@ PIN_MODE_OUTPUT(13) | \ PIN_MODE_OUTPUT(14) | \ PIN_MODE_OUTPUT(15)) -#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(0) | \ - PIN_OTYPE_PUSHPULL(1) | \ - PIN_OTYPE_PUSHPULL(2) | \ - PIN_OTYPE_PUSHPULL(3) | \ - PIN_OTYPE_PUSHPULL(4) | \ - PIN_OTYPE_PUSHPULL(5) | \ +#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_XN) | \ + PIN_OTYPE_PUSHPULL(GPIOB_YN) | \ + PIN_OTYPE_PUSHPULL(GPIO_LCD_RESET) | \ + PIN_OTYPE_PUSHPULL(GPIOB_SPI_SCLK) | \ + PIN_OTYPE_PUSHPULL(GPIOB_SPI_MISO) | \ + PIN_OTYPE_PUSHPULL(GPIOB_SPI_MOSI) | \ PIN_OTYPE_PUSHPULL(6) | \ PIN_OTYPE_PUSHPULL(GPIO_SD_CD) | \ PIN_OTYPE_PUSHPULL(8) | \ @@ -292,12 +292,12 @@ PIN_OTYPE_PUSHPULL(15)) #define VAL_GPIOB_OSPEEDR (PIN_PUPDR_FLOATING(GPIOB_XN) | \ PIN_PUPDR_FLOATING(GPIOB_YN) | \ - PIN_OSPEED_100M(2) | \ - PIN_OSPEED_100M(3) | \ - PIN_OSPEED_100M(4) | \ - PIN_OSPEED_100M(5) | \ + PIN_OSPEED_100M(GPIO_LCD_RESET) | \ + PIN_OSPEED_100M(GPIOB_SPI_SCLK) | \ + PIN_OSPEED_100M(GPIOB_SPI_MISO) | \ + PIN_OSPEED_100M(GPIOB_SPI_MOSI) | \ PIN_OSPEED_100M(6) | \ - PIN_OSPEED_2M(GPIO_SD_CD) | \ + PIN_OSPEED_100M(GPIO_SD_CD) | \ PIN_OSPEED_100M(8) | \ PIN_OSPEED_100M(9) | \ PIN_OSPEED_100M(10) | \ @@ -306,12 +306,12 @@ PIN_OSPEED_100M(13) | \ PIN_OSPEED_100M(14) | \ PIN_OSPEED_2M(15)) -#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(0) | \ - PIN_PUPDR_PULLUP(1) | \ - PIN_PUPDR_PULLUP(2) | \ - PIN_PUPDR_PULLUP(3) | \ - PIN_PUPDR_PULLUP(4) | \ - PIN_PUPDR_PULLUP(5) | \ +#define VAL_GPIOB_PUPDR (PIN_PUPDR_PULLUP(GPIOB_XN) | \ + PIN_PUPDR_PULLUP(GPIOB_YN) | \ + PIN_PUPDR_PULLUP(GPIO_LCD_RESET) | \ + PIN_PUPDR_PULLUP(GPIOB_SPI_SCLK) | \ + PIN_PUPDR_PULLUP(GPIOB_SPI_MISO) | \ + PIN_PUPDR_PULLUP(GPIOB_SPI_MOSI) | \ PIN_PUPDR_PULLUP(6) | \ PIN_PUPDR_PULLUP(GPIO_SD_CD) | \ PIN_PUPDR_PULLUP(8) | \ @@ -322,12 +322,12 @@ PIN_PUPDR_PULLUP(13) | \ PIN_PUPDR_PULLUP(14) | \ PIN_PUPDR_PULLUP(15)) -#define VAL_GPIOB_ODR (PIN_ODR_HIGH(0) | \ - PIN_ODR_HIGH(1) | \ - PIN_ODR_HIGH(2) | \ - PIN_ODR_HIGH(3) | \ - PIN_ODR_HIGH(4) | \ - PIN_ODR_HIGH(5) | \ +#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_XN) | \ + PIN_ODR_HIGH(GPIOB_YN) | \ + PIN_ODR_HIGH(GPIO_LCD_RESET) | \ + PIN_ODR_HIGH(GPIOB_SPI_SCLK) | \ + PIN_ODR_HIGH(GPIOB_SPI_MISO) | \ + PIN_ODR_HIGH(GPIOB_SPI_MOSI) | \ PIN_ODR_HIGH(6) | \ PIN_ODR_HIGH(GPIO_SD_CD) | \ PIN_ODR_HIGH(8) | \ @@ -338,12 +338,12 @@ PIN_ODR_HIGH(13) | \ PIN_ODR_HIGH(14) | \ PIN_ODR_HIGH(15)) -#define VAL_GPIOB_AFRL (PIN_AFIO_AF(0, 0) | \ - PIN_AFIO_AF(1, 0) | \ - PIN_AFIO_AF(2, 0) | \ +#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_XN, 0) | \ + PIN_AFIO_AF(GPIOB_YN, 0) | \ + PIN_AFIO_AF(GPIO_LCD_RESET, 0) | \ PIN_AFIO_AF(GPIOB_SPI_SCLK, 5) | \ - PIN_AFIO_AF(GPIOB_SPI_MOSI, 5) | \ PIN_AFIO_AF(GPIOB_SPI_MISO, 5) | \ + PIN_AFIO_AF(GPIOB_SPI_MOSI, 5) | \ PIN_AFIO_AF(6, 0) | \ PIN_AFIO_AF(GPIO_SD_CD, 0)) #define VAL_GPIOB_AFRH (PIN_AFIO_AF(8, 0) | \ From d27ad33dc22d863946b9298c8154ab2fc0ad0ba6 Mon Sep 17 00:00:00 2001 From: DiSlord Date: Sun, 23 May 2021 16:04:03 +0300 Subject: [PATCH 4/5] Code style Code cleanup Implement custom jog step feature --- main.c | 10 +- nanovna.h | 87 +++---------- sa_core.c | 1 + ui.c | 382 +++++------------------------------------------------- ui_sa.c | 102 ++++++++------- 5 files changed, 112 insertions(+), 470 deletions(-) diff --git a/main.c b/main.c index d228c74..5ee8256 100644 --- a/main.c +++ b/main.c @@ -28,13 +28,10 @@ #include #include -extern freq_t minFreq; -extern freq_t maxFreq; freq_t frequencyStart; freq_t frequencyStop; int32_t frequencyExtra; -#define START_MIN minFreq -#define STOP_MAX maxFreq + /* * Shell settings */ @@ -936,10 +933,7 @@ static const marker_t def_markers[MARKERS_MAX] = { void load_LCD_properties(void) { //Magic add on caldata_save -//current_props.magic = CONFIG_MAGIC; -// current_props._setting.frequency0 = 0; // start = 0Hz -// current_props._setting.frequency1 = 350000000; // end = 350MHz -// current_props._setting.frequency_IF= 433800000, +//setting.magic = CONFIG_MAGIC; setting._sweep_points = POINTS_COUNT; setting.trace_scale = 10.0; setting.trace_refpos = 0; diff --git a/nanovna.h b/nanovna.h index 328cb8a..aea920d 100644 --- a/nanovna.h +++ b/nanovna.h @@ -148,27 +148,30 @@ typedef uint32_t freq_t; typedef int32_t long_t; extern bool has_esd; -#define CORRECTION_POINTS 10 // Frequency dependent level correction table entries -#define CORRECTION_LOW 0 -#define CORRECTION_HIGH 1 -#define CORRECTION_SIZE 2 + #define CORRECTION_POINTS 10 // Frequency dependent level correction table entries + #define CORRECTION_LOW 0 + #define CORRECTION_HIGH 1 + #define CORRECTION_SIZE 2 #endif #ifdef TINYSA4 typedef uint64_t freq_t; typedef int64_t long_t; -#define CORRECTION_POINTS 20 // Frequency dependent level correction table entries -#define CORRECTION_LOW 0 -#define CORRECTION_LNA 1 -#define CORRECTION_LOW_OUT 2 -#define CORRECTION_HIGH 3 -#define CORRECTION_SIZE 4 - #endif - - + #define CORRECTION_POINTS 20 // Frequency dependent level correction table entries + #define CORRECTION_LOW 0 + #define CORRECTION_LNA 1 + #define CORRECTION_LOW_OUT 2 + #define CORRECTION_HIGH 3 + #define CORRECTION_SIZE 4 +#endif typedef float measurement_t[TRACES_MAX][POINTS_COUNT]; extern measurement_t measured; #endif +extern freq_t minFreq; +extern freq_t maxFreq; +#define START_MIN minFreq +#define STOP_MAX maxFreq + extern const char TINYSA_VERSION[]; #ifdef __REMOTE_DESKTOP__ @@ -178,63 +181,6 @@ extern int16_t mouse_y; extern uint8_t mouse_down; #endif -#ifdef __VNA__ -// Minimum frequency set -#define START_MIN 50000 -// Maximum frequency set -#define STOP_MAX 2700000000U -// Frequency offset (sin_cos table in dsp.c generated for this offset, if change need create new table) -#define FREQUENCY_OFFSET 5000 -// Speed of light const -#define SPEED_OF_LIGHT 299792458 -// pi const -#define VNA_PI 3.14159265358979323846 - -#define POINTS_COUNT 101 -extern float measured[2][POINTS_COUNT][2]; - -#define CAL_LOAD 0 -#define CAL_OPEN 1 -#define CAL_SHORT 2 -#define CAL_THRU 3 -#define CAL_ISOLN 4 - -#define CALSTAT_LOAD (1<<0) -#define CALSTAT_OPEN (1<<1) -#define CALSTAT_SHORT (1<<2) -#define CALSTAT_THRU (1<<3) -#define CALSTAT_ISOLN (1<<4) -#define CALSTAT_ES (1<<5) -#define CALSTAT_ER (1<<6) -#define CALSTAT_ET (1<<7) -#define CALSTAT_ED CALSTAT_LOAD -#define CALSTAT_EX CALSTAT_ISOLN -#define CALSTAT_APPLY (1<<8) -#define CALSTAT_INTERPOLATED (1<<9) - -#define ETERM_ED 0 /* error term directivity */ -#define ETERM_ES 1 /* error term source match */ -#define ETERM_ER 2 /* error term refrection tracking */ -#define ETERM_ET 3 /* error term transmission tracking */ -#define ETERM_EX 4 /* error term isolation */ - -#define DOMAIN_MODE (1<<0) -#define DOMAIN_FREQ (0<<0) -#define DOMAIN_TIME (1<<0) -#define TD_FUNC (0b11<<1) -#define TD_FUNC_BANDPASS (0b00<<1) -#define TD_FUNC_LOWPASS_IMPULSE (0b01<<1) -#define TD_FUNC_LOWPASS_STEP (0b10<<1) -#define TD_WINDOW (0b11<<3) -#define TD_WINDOW_NORMAL (0b00<<3) -#define TD_WINDOW_MINIMUM (0b01<<3) -#define TD_WINDOW_MAXIMUM (0b10<<3) - -#define FFT_SIZE 256 - -void cal_collect(int type); -void cal_done(void); -#endif #define MAX_FREQ_TYPE 5 enum stimulus_type { ST_START=0, ST_STOP, ST_CENTER, ST_SPAN, ST_CW, ST_DUMMY // Last is used in marker ops @@ -1053,6 +999,7 @@ typedef struct setting freq_t frequency_step; freq_t frequency0; freq_t frequency1; + freq_t frequency_var; freq_t frequency_IF; freq_t frequency_offset; #define FREQUENCY_SHIFT 100000000 // 100MHz upconversion maximum diff --git a/sa_core.c b/sa_core.c index fef5423..dc0e873 100644 --- a/sa_core.c +++ b/sa_core.c @@ -203,6 +203,7 @@ void reset_settings(int m) drive_dBm = (float *) (setting.mode == M_GENHIGH && config.high_out_adf4350 ? adf_drive_dBm : si_drive_dBm); #endif update_min_max_freq(); + setting.frequency_var = 0; sweep_mode |= SWEEP_ENABLE; setting.unit_scale_index = 0; setting.unit_scale = 1; diff --git a/ui.c b/ui.c index bd16950..0b11ad3 100644 --- a/ui.c +++ b/ui.c @@ -21,7 +21,6 @@ #include "hal.h" #include "chprintf.h" #include "nanovna.h" -//#include #include #include @@ -90,12 +89,6 @@ enum { UI_NORMAL, UI_MENU, UI_KEYPAD }; -#ifdef __VNA__ -enum { - KM_START, KM_STOP, KM_CENTER, KM_SPAN, KM_CW, KM_SCALE, KM_REFPOS, KM_EDELAY, KM_VELOCITY_FACTOR, KM_SCALEDELAY -}; -#endif - #define NUMINPUT_LEN 12 static uint8_t ui_mode = UI_NORMAL; static uint8_t keypad_mode; @@ -729,6 +722,7 @@ static UI_FUNCTION_CALLBACK(menu_marker_op_cb) static UI_FUNCTION_CALLBACK(menu_markers_reset_cb) { (void)item; + (void)data; markers_reset(); } @@ -953,114 +947,6 @@ menu_invoke(int item) draw_menu(); } -#ifdef __VNA__ -// Key names -#define KP_0 0 -#define KP_1 1 -#define KP_2 2 -#define KP_3 3 -#define KP_4 4 -#define KP_5 5 -#define KP_6 6 -#define KP_7 7 -#define KP_8 8 -#define KP_9 9 -#define KP_PERIOD 10 -#define KP_MINUS 11 -#define KP_X1 12 -#define KP_K 13 -#define KP_M 14 -#define KP_G 15 -#define KP_BS 16 -#define KP_INF 17 -#define KP_DB 18 -#define KP_PLUSMINUS 19 -#define KP_KEYPAD 20 -#define KP_N 21 -#define KP_P 22 - -typedef struct { - uint8_t x:4; - uint8_t y:4; - int8_t c; -} keypads_t; - -static const keypads_t *keypads; - -static const keypads_t keypads_freq[] = { - { 1, 3, KP_PERIOD }, - { 0, 3, KP_0 }, - { 0, 2, KP_1 }, - { 1, 2, KP_2 }, - { 2, 2, KP_3 }, - { 0, 1, KP_4 }, - { 1, 1, KP_5 }, - { 2, 1, KP_6 }, - { 0, 0, KP_7 }, - { 1, 0, KP_8 }, - { 2, 0, KP_9 }, - { 3, 0, KP_G }, - { 3, 1, KP_M }, - { 3, 2, KP_K }, - { 3, 3, KP_X1 }, - { 2, 3, KP_BS }, - { 0, 0, -1 } -}; - -static const keypads_t keypads_scale[] = { - { 1, 3, KP_PERIOD }, - { 0, 3, KP_0 }, - { 0, 2, KP_1 }, - { 1, 2, KP_2 }, - { 2, 2, KP_3 }, - { 0, 1, KP_4 }, - { 1, 1, KP_5 }, - { 2, 1, KP_6 }, - { 0, 0, KP_7 }, - { 1, 0, KP_8 }, - { 2, 0, KP_9 }, - { 3, 3, KP_X1 }, - { 2, 3, KP_BS }, - { 0, 0, -1 } -}; - -static const keypads_t keypads_time[] = { - { 1, 3, KP_PERIOD }, - { 0, 3, KP_0 }, - { 0, 2, KP_1 }, - { 1, 2, KP_2 }, - { 2, 2, KP_3 }, - { 0, 1, KP_4 }, - { 1, 1, KP_5 }, - { 2, 1, KP_6 }, - { 0, 0, KP_7 }, - { 1, 0, KP_8 }, - { 2, 0, KP_9 }, - { 3, 1, KP_N }, - { 3, 2, KP_P }, - { 3, 3, KP_MINUS }, - { 2, 3, KP_BS }, - { 0, 0, -1 } -}; - -static const keypads_t * const keypads_mode_tbl[] = { - keypads_freq, // start - keypads_freq, // stop - keypads_freq, // center - keypads_freq, // span - keypads_freq, // cw freq - keypads_scale, // scale - keypads_scale, // refpos - keypads_time, // electrical delay - keypads_scale, // velocity factor - keypads_time // scale of delay -}; - -static const char * const keypad_mode_label[] = { - "START", "STOP", "CENTER", "SPAN", "CW FREQ", "SCALE", "REFPOS", "EDELAY", "VELOCITY%", "DELAY" -}; -#endif - static const char * const keypad_scale_text[] = {"0", "1", "2", "5", "10", "20" , "50", "100", "200", "500"}; //static const int keypad_scale_value[] = { 1, 2, 5, 10, 20 , 50, 100, 200, 500}; @@ -1187,83 +1073,6 @@ draw_numeric_area_frame(void) draw_numeric_input(""); } -#ifdef __VNA__ -static void -menu_item_modify_attribute(const menuitem_t *menu, int item, - uint16_t *fg, uint16_t *bg) -{ - if (menu == menu_trace && item < TRACES_MAX) { - if (trace[item].enabled) - *bg = config.trace_color[item]; - } else if (menu == menu_marker_sel) { - if (item < 4) { - if (markers[item].enabled) { - *bg = LCD_MENU_TEXT_COLOR; - *fg = config.menu_normal_color; - } - } else if (item == 5) { - if (uistat.marker_delta) { - *bg = LCD_MENU_TEXT_COLOR; - *fg = config.menu_normal_color; - } - } - } else if (menu == menu_marker_search) { - if (item == 4 && uistat.marker_tracking) { - *bg = LCD_MENU_TEXT_COLOR; - *fg = config.menu_normal_color; - } - } else if (menu == menu_marker_smith) { - - if (marker_smith_format == item) { - *bg = LCD_MENU_TEXT_COLOR; - *fg = config.menu_normal_color; - } - } else if (menu == menu_calop) { - if ((item == 0 && (cal_status & CALSTAT_OPEN)) - || (item == 1 && (cal_status & CALSTAT_SHORT)) - || (item == 2 && (cal_status & CALSTAT_LOAD)) - || (item == 3 && (cal_status & CALSTAT_ISOLN)) - || (item == 4 && (cal_status & CALSTAT_THRU))) { - domain_mode = (domain_mode & ~DOMAIN_MODE) | DOMAIN_FREQ; - *bg = LCD_MENU_TEXT_COLOR; - *fg = config.menu_normal_color; - } - } else if (menu == menu_stimulus) { - if (item == 5 /* PAUSE */ && !(sweep_mode&SWEEP_ENABLE)) { - *bg = LCD_MENU_TEXT_COLOR; - *fg = config.menu_normal_color; - } - } else if (menu == menu_cal) { - if (item == 3 /* CORRECTION */ && (cal_status & CALSTAT_APPLY)) { - *bg = LCD_MENU_TEXT_COLOR; - *fg = config.menu_normal_color; - } - } else if (menu == menu_bandwidth) { - if (item == bandwidth) { - *bg = 0x0000; - *fg = 0xffff; - } - } else if (menu == menu_transform) { - if ((item == 0 && (domain_mode & DOMAIN_MODE) == DOMAIN_TIME) - || (item == 1 && (domain_mode & TD_FUNC) == TD_FUNC_LOWPASS_IMPULSE) - || (item == 2 && (domain_mode & TD_FUNC) == TD_FUNC_LOWPASS_STEP) - || (item == 3 && (domain_mode & TD_FUNC) == TD_FUNC_BANDPASS) - ) { - *bg = LCD_MENU_TEXT_COLOR; - *fg = config.menu_normal_color; - } - } else if (menu == menu_transform_window) { - if ((item == 0 && (domain_mode & TD_WINDOW) == TD_WINDOW_MINIMUM) - || (item == 1 && (domain_mode & TD_WINDOW) == TD_WINDOW_NORMAL) - || (item == 2 && (domain_mode & TD_WINDOW) == TD_WINDOW_MAXIMUM) - ) { - *bg = LCD_MENU_TEXT_COLOR; - *fg = config.menu_normal_color; - } - } -} -#endif - #ifndef __VNA__ extern void menu_item_modify_attribute( const menuitem_t *menu, int item, ui_button_t *button); @@ -1418,9 +1227,8 @@ draw_menu_buttons(const menuitem_t *menu, int only) else text = menu[i].label; // Only keypad retrieves value - if (menu[i].type & MT_FORM && MT_MASK(menu[i].type) == MT_KEYPAD) { - keypad_mode = menu[i].data; - fetch_numeric_target(); + if (MT_MASK(menu[i].type) == MT_KEYPAD) { + fetch_numeric_target(menu[i].data); plot_printf(button.text, sizeof button.text, menu[i].label, uistat.text); text = button.text; } @@ -1556,8 +1364,7 @@ menu_select_touch(int i, int pos) if (dt > BUTTON_DOWN_LONG_TICKS) { touch_position(&touch_x, &touch_y); if (touch_x != prev_touch_x /* - 1 || prev_touch_x + 1 < touch_x */ ) { - keypad_mode = keypad; - fetch_numeric_target(); + fetch_numeric_target(keypad); int new_slider = touch_x - LCD_WIDTH/2; // Can have negative outcome if (new_slider < - (MENU_FORM_WIDTH-8)/2 - 1) new_slider = -(MENU_FORM_WIDTH-8)/2 - 1; @@ -1818,89 +1625,6 @@ leave_ui_mode() redraw_request|=REDRAW_AREA | REDRAW_FREQUENCY | REDRAW_CAL_STATUS | REDRAW_BATTERY; } -#ifdef __VNA__ -static void -fetch_numeric_target(void) -{ - switch (keypad_mode) { - case KM_START: - uistat.value = get_sweep_frequency(ST_START); - break; - case KM_STOP: - uistat.value = get_sweep_frequency(ST_STOP); - break; - case KM_CENTER: - uistat.value = get_sweep_frequency(ST_CENTER); - break; - case KM_SPAN: - uistat.value = get_sweep_frequency(ST_SPAN); - break; - case KM_CW: - uistat.value = get_sweep_frequency(ST_CW); - break; - case KM_SCALE: - uistat.value = get_trace_scale(uistat.current_trace) * 1000; - break; - case KM_REFPOS: - uistat.value = get_trace_refpos(uistat.current_trace) * 1000; - break; - case KM_EDELAY: - uistat.value = get_electrical_delay(); - break; - case KM_VELOCITY_FACTOR: - uistat.value = velocity_factor * 100; - break; - case KM_SCALEDELAY: - uistat.value = get_trace_scale(uistat.current_trace) * 1e12; - break; - } - - { - uint32_t x = uistat.value; - int n = 0; - for (; x >= 10 && n < 9; n++) - x /= 10; - uistat.digit = n; - } -// uistat.previous_value = uistat.value; -} - - -static void -set_numeric_value(void) -{ - switch (keypad_mode) { - case KM_START: - set_sweep_frequency(ST_START, uistat.value); - break; - case KM_STOP: - set_sweep_frequency(ST_STOP, uistat.value); - break; - case KM_CENTER: - set_sweep_frequency(ST_CENTER, uistat.value); - break; - case KM_SPAN: - set_sweep_frequency(ST_SPAN, uistat.value); - break; - case KM_CW: - set_sweep_frequency(ST_CW, uistat.value); - break; - case KM_SCALE: - set_trace_scale(uistat.current_trace, uistat.value / 1000.0); - break; - case KM_REFPOS: - set_trace_refpos(uistat.current_trace, uistat.value / 1000.0); - break; - case KM_EDELAY: - set_electrical_delay(uistat.value); - break; - case KM_VELOCITY_FACTOR: - velocity_factor = uistat.value/100.0; - break; - } -} -#endif - void ui_mode_menu(void) { @@ -2014,25 +1738,6 @@ step_round(freq_t v) return x * 5; } -static void -lever_zoom_span(int status) -{ - freq_t span = get_sweep_frequency(ST_SPAN); - if (uistat.auto_center_marker) { - freq_t freq = get_marker_frequency(active_marker); - search_maximum(active_marker, freq, 10 ); - if (freq != 0) - set_sweep_frequency(ST_CENTER, freq); - } - if (status & EVT_UP) { - span = step_round(span - 1); - } else if (status & EVT_DOWN) { - span = step_round(span + 1); - span = step_round(span * 3); - } - set_sweep_frequency(ST_SPAN, span); -} - static void lever_zoom_time(int status) { @@ -2051,35 +1756,30 @@ lever_zoom_time(int status) static void lever_move(int status, int mode) { - freq_t center = get_sweep_frequency(mode); - freq_t span = get_sweep_frequency(ST_SPAN); - span = step_round(span / 3); - if (status & EVT_UP) { - set_sweep_frequency(mode, center + span); - } else if (status & EVT_DOWN) { - set_sweep_frequency(mode, center - span); + freq_t freq = get_sweep_frequency(mode); + if (mode == ST_SPAN){ + if (uistat.auto_center_marker) { + freq = get_marker_frequency(active_marker); + search_maximum(active_marker, freq, 10 ); + if (freq == 0) return; + set_sweep_frequency(ST_CENTER, freq); + return; + } + if (status & EVT_UP ) freq = setting.frequency_var ? (freq + setting.frequency_var) : step_round(freq*4 + 1); + if (status & EVT_DOWN) freq = setting.frequency_var ? (freq - setting.frequency_var) : step_round(freq - 1); } + else { + freq_t span = setting.frequency_var ? setting.frequency_var : step_round(get_sweep_frequency(ST_SPAN) / 4); + if (status & EVT_UP ) freq+= span; + if (status & EVT_DOWN) freq-= span; + } + if (freq > STOP_MAX || freq < START_MIN) return; + set_sweep_frequency(mode, freq); } #define STEPRATIO 0.2 -#ifdef __VNA__ static void -lever_edelay(int status) -{ - float value = get_electrical_delay(); - float ratio = STEPRATIO; - if (value < 0) - ratio = -ratio; - if (status & EVT_UP) { - value = (1 - ratio) * value; - } else if (status & EVT_DOWN) { - value = (1 + ratio) * value; - } - set_electrical_delay(value); -} -#endif -static void -ui_process_normal(void) +ui_process_normal_lever(void) { int status = btn_check(); if (status != 0) { @@ -2089,24 +1789,13 @@ ui_process_normal(void) switch (uistat.lever_mode) { case LM_MARKER: lever_move_marker(status); break; case LM_SEARCH: lever_search_marker(status); break; - case LM_CENTER: - lever_move(status, FREQ_IS_STARTSTOP() ? ST_START : ST_CENTER); - break; + case LM_CENTER: lever_move(status, FREQ_IS_STARTSTOP() ? ST_START : ST_CENTER); break; case LM_SPAN: - if (FREQ_IS_STARTSTOP()) - lever_move(status, ST_STOP); - else { - if (FREQ_IS_CW()) - lever_zoom_time(status); - else - lever_zoom_span(status); - } - break; -#ifdef __VNA__ - case LM_EDELAY: - lever_edelay(status); + if (FREQ_IS_CW()) + lever_zoom_time(status); + else + lever_move(status, FREQ_IS_STARTSTOP() ? ST_STOP : ST_SPAN); break; -#endif } } } @@ -2129,7 +1818,7 @@ ui_process_listen_lever(void) #endif static void -ui_process_menu(void) +ui_process_menu_lever(void) { // Flag show, can close menu if user come out from it // if false user must select some thing @@ -2164,8 +1853,7 @@ ui_process_menu(void) ensure_selection(); draw_menu(); chThdSleepMilliseconds(50); // Add delay for not move so fast in menu - status = btn_wait_release(); - } while (status != 0); + } while ((status = btn_wait_release()) != 0); } } return; @@ -2318,14 +2006,14 @@ ui_process_lever(void) { switch (ui_mode) { case UI_NORMAL: - ui_process_normal(); + ui_process_normal_lever(); break; case UI_MENU: - ui_process_menu(); - break; - case UI_KEYPAD: - ui_process_keypad(); + ui_process_menu_lever(); break; +// case UI_KEYPAD: +// ui_process_keypad(); +// break; } } diff --git a/ui_sa.c b/ui_sa.c index 3de8cb1..ecbc0f9 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -430,6 +430,7 @@ enum { #endif KM_MARKER_TIME, // #35 + KM_VAR, KM_NONE // always at enum end }; @@ -437,56 +438,60 @@ static const struct { const keypads_t *keypad_type; char * name; } keypads_mode_tbl[KM_NONE] = { - {keypads_freq , "START"}, // start - {keypads_freq , "STOP"}, // stop - {keypads_freq , "CENTER"}, // center - {keypads_freq , "SPAN"}, // span - {keypads_freq , "FREQ"}, // cw freq - {keypads_plusmin_unit, "REF\nLEVEL"}, // reflevel #5 - {keypads_pos_unit , "SCALE"}, // scale - {keypads_positive , "ATTENUATE"}, // attenuation - {keypads_plusmin_unit, "ACTUAL\nPOWER"}, // actual power - {keypads_freq , "IF"}, // IF - {keypads_positive , "SAMPLE\nDELAY"}, // sample delay #10 - {keypads_plusmin , "OUTPUT\nLEVEL"}, // KM_LOWOUTLEVEL - {keypads_positive , "DECAY"}, // KM_DECAY - {keypads_positive , "NOISE\nLEVEL"}, // KM_NOISE - {keypads_freq , "FREQ"}, // KM_30MHz | KM_10MHz - {keypads_positive , "SAMPLE\nREPEAT"}, // KM_REPEA #15 - {keypads_plusmin , "EXT\nGAIN"}, // KM_EXT_GAIN - {keypads_plusmin_unit, "TRIGGER\nLEVEL"}, // KM_TRIGGER - {keypads_plusmin , "LEVEL\nSWEEP"}, // KM_LEVELSWEEP - {keypads_time , "SWEEP\nSECONDS"}, // KM_SWEEP_TIME - {keypads_positive , "OFFSET\nDELAY"}, // KM_OFFSET_DELAY #20 - {keypads_positive , "FAST\nSPEEDUP"}, // KM_FAST_SPEEDUP - {keypads_positive , "MINIMUM\nGRIDLINES"}, // KM_GRIDLINES - {keypads_freq , "MARKER\nFREQ"}, // KM_MARKER - {keypads_freq , "MODULATION\nFREQ"}, // KM_MODULATION - {keypads_plusmin , "OUTPUT\nLEVEL"}, // KM_HIGHOUTLEVEL #25 +[KM_START] = {keypads_freq , "START"}, // start +[KM_STOP] = {keypads_freq , "STOP"}, // stop +[KM_CENTER] = {keypads_freq , "CENTER"}, // center +[KM_SPAN] = {keypads_freq , "SPAN"}, // span +[KM_CW] = {keypads_freq , "FREQ"}, // cw freq +[KM_REFLEVEL] = {keypads_plusmin_unit, "REF\nLEVEL"}, // reflevel #5 +[KM_SCALE] = {keypads_pos_unit , "SCALE"}, // scale +[KM_ATTENUATION] = {keypads_positive , "ATTENUATE"}, // attenuation +[KM_ACTUALPOWER] = {keypads_plusmin_unit, "ACTUAL\nPOWER"}, // actual power +[KM_IF] = {keypads_freq , "IF"}, // IF +[KM_SAMPLETIME] = {keypads_positive , "SAMPLE\nDELAY"}, // sample delay #10 +[KM_LOWOUTLEVEL] = {keypads_plusmin , "OUTPUT\nLEVEL"}, // KM_LOWOUTLEVEL +[KM_DECAY] = {keypads_positive , "DECAY"}, // KM_DECAY +[KM_NOISE] = {keypads_positive , "NOISE\nLEVEL"}, // KM_NOISE #ifdef TINYSA4 - {keypads_plusmin , "COR\nAM"}, // KM_COR_AM - {keypads_plusmin , "COR\nWFM"}, // KM_COR_WFM - {keypads_plusmin , "COR\nNFM"}, // KM_COR_NFM - {keypads_freq , "IF2"}, // KM_IF2 - {keypads_positive , "R"}, // KM_R #30 - {keypads_positive , "MODULO"}, // KM_MOD - {keypads_positive , "CP"}, // KM_CP -#endif - {keypads_positive , "ATTACK"}, // KM_ATTACK +[KM_30MHZ] = {keypads_freq , "FREQ"}, // KM_30MHz +#else +[KM_10MHZ] = {keypads_freq , "FREQ"}, // KM_10MHz +#endif +[KM_REPEAT] = {keypads_positive , "SAMPLE\nREPEAT"}, // KM_REPEA #15 +[KM_EXT_GAIN] = {keypads_plusmin , "EXT\nGAIN"}, // KM_EXT_GAIN +[KM_TRIGGER] = {keypads_plusmin_unit, "TRIGGER\nLEVEL"}, // KM_TRIGGER +[KM_LEVELSWEEP] = {keypads_plusmin , "LEVEL\nSWEEP"}, // KM_LEVELSWEEP +[KM_SWEEP_TIME] = {keypads_time , "SWEEP\nSECONDS"}, // KM_SWEEP_TIME +[KM_OFFSET_DELAY] = {keypads_positive , "OFFSET\nDELAY"}, // KM_OFFSET_DELAY #20 +[KM_FAST_SPEEDUP] = {keypads_positive , "FAST\nSPEEDUP"}, // KM_FAST_SPEEDUP +[KM_GRIDLINES] = {keypads_positive , "MINIMUM\nGRIDLINES"}, // KM_GRIDLINES +[KM_MARKER] = {keypads_freq , "MARKER\nFREQ"}, // KM_MARKER +[KM_MODULATION] = {keypads_freq , "MODULATION\nFREQ"}, // KM_MODULATION +[KM_HIGHOUTLEVEL] = {keypads_plusmin , "OUTPUT\nLEVEL"}, // KM_HIGHOUTLEVEL #25 +#ifdef TINYSA4 +[KM_COR_AM] = {keypads_plusmin , "COR\nAM"}, // KM_COR_AM +[KM_COR_WFM] = {keypads_plusmin , "COR\nWFM"}, // KM_COR_WFM +[KM_COR_NFM] = {keypads_plusmin , "COR\nNFM"}, // KM_COR_NFM +[KM_IF2] = {keypads_freq , "IF2"}, // KM_IF2 +[KM_R] = {keypads_positive , "R"}, // KM_R #30 +[KM_MOD] = {keypads_positive , "MODULO"}, // KM_MOD +[KM_CP] = {keypads_positive , "CP"}, // KM_CP +#endif +[KM_ATTACK] = {keypads_positive , "ATTACK"}, // KM_ATTACK #ifdef TINYSA4 - {keypads_freq , "ULTRA\nSTART"}, // KM_LPF +[KM_LPF] = {keypads_freq , "ULTRA\nSTART"}, // KM_LPF #endif - {keypads_plusmin , "LEVEL"}, // KM_LEVEL +[KM_LEVEL] = {keypads_plusmin , "LEVEL"}, // KM_LEVEL #ifdef __LIMITS__ - {keypads_freq , "END\nFREQ"}, // KM_LIMIT_FREQ - {keypads_plusmin_unit , "LEVEL"}, // KM_LIMIT_LEVEL +[KM_LIMIT_FREQ] = {keypads_freq , "END\nFREQ"}, // KM_LIMIT_FREQ +[KM_LIMIT_LEVEL] = {keypads_plusmin_unit , "LEVEL"}, // KM_LIMIT_LEVEL #endif - {keypads_time , "MARKER\nTIME"}, // KM_MARKER_TIME +[KM_MARKER_TIME] = {keypads_time , "MARKER\nTIME"}, // KM_MARKER_TIME +[KM_VAR] = {keypads_freq , "JOG\nSTEP"}, // jog step }; -#if 0 // Not used +#if 0 // Not used enum { SL_GENLOW_FREQ, SL_GENHIGH_FREQ, SL_GENLOW_LEVEL, SL_GENHIGH_LEVEL }; - ui_slider_t ui_sliders [] = { { KM_CENTER, true, 0, 1000000, 0, 350000000, M_GENLOW}, @@ -2752,6 +2757,7 @@ static const menuitem_t menu_stimulus[] = { { MT_KEYPAD, KM_CENTER, "CENTER", NULL}, { MT_KEYPAD, KM_SPAN, "SPAN", NULL}, { MT_KEYPAD, KM_CW, "ZERO SPAN", NULL}, + { MT_KEYPAD, KM_VAR, "JOG STEP\n%s","0 - AUTO"}, { MT_SUBMENU,0, "RBW", menu_rbw}, { MT_ADV_CALLBACK,0, "SHIFT\nFREQ", menu_shift_acb}, { MT_CANCEL, 0, S_LARROW" BACK", NULL }, @@ -2827,9 +2833,9 @@ static void menu_item_modify_attribute( } } -static void fetch_numeric_target(void) +static void fetch_numeric_target(uint8_t mode) { - switch (keypad_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, "%3.3fMHz", uistat.freq_value / 1000000.0); @@ -2984,6 +2990,10 @@ static void fetch_numeric_target(void) plot_printf(uistat.text, sizeof uistat.text, "%7.0fHz", uistat.value); } break; + case KM_VAR: + uistat.freq_value = setting.frequency_var; + plot_printf(uistat.text, sizeof uistat.text, setting.frequency_var ? "%QHz" : " AUTO", setting.frequency_var); + break; } { @@ -2993,7 +3003,6 @@ static void fetch_numeric_target(void) x /= 10; uistat.digit = n; } -// uistat.previous_value = uistat.value; } static void @@ -3156,6 +3165,9 @@ set_numeric_value(void) dirty = true; break; #endif + case KM_VAR: + setting.frequency_var = uistat.freq_value; + break; } } From 125aba6e7cd51f6a681f14e065c82d5870a9f57b Mon Sep 17 00:00:00 2001 From: DiSlord Date: Sun, 23 May 2021 16:10:56 +0300 Subject: [PATCH 5/5] More cleanup --- nanovna.h | 5 +---- ui.c | 1 - ui_sa.c | 8 -------- 3 files changed, 1 insertion(+), 13 deletions(-) diff --git a/nanovna.h b/nanovna.h index aea920d..d9384a4 100644 --- a/nanovna.h +++ b/nanovna.h @@ -1216,12 +1216,9 @@ enum marker_smithvalue { }; typedef struct uistat { - float value; // for editing at numeric input area + float value; // for editing at numeric input area freq_t freq_value; // for editing frequencies that do not fit in float; - int8_t digit; /* 0~5 */ - int8_t digit_mode; int8_t current_trace; /* 0..3 */ -// uint32_t previous_value; uint8_t lever_mode; uint8_t marker_delta; uint8_t marker_noise; diff --git a/ui.c b/ui.c index 0b11ad3..92f2b81 100644 --- a/ui.c +++ b/ui.c @@ -28,7 +28,6 @@ #pragma GCC optimize ("Os") uistat_t uistat = { - digit: 6, current_trace: 0, lever_mode: LM_MARKER, marker_delta: FALSE, diff --git a/ui_sa.c b/ui_sa.c index ecbc0f9..fc0528a 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -2995,14 +2995,6 @@ static void fetch_numeric_target(uint8_t mode) plot_printf(uistat.text, sizeof uistat.text, setting.frequency_var ? "%QHz" : " AUTO", setting.frequency_var); break; } - - { - freq_t x = uistat.value; - int n = 0; - for (; x >= 10 && n < 9; n++) - x /= 10; - uistat.digit = n; - } } static void