From e6ebea1269d20e89706e36bdd7d224aac5937691 Mon Sep 17 00:00:00 2001 From: DiSlord Date: Thu, 13 May 2021 22:17:49 +0300 Subject: [PATCH] Add more serial speed settings Use direct store serial speed Add usart_cfg command --- main.c | 16 ++++++++++++++-- nanovna.h | 14 +------------- ui_sa.c | 37 ++++++++++++++----------------------- 3 files changed, 29 insertions(+), 38 deletions(-) diff --git a/main.c b/main.c index 75c1cd8..a6cf428 100644 --- a/main.c +++ b/main.c @@ -866,7 +866,7 @@ config_t config = { .touch_cal = { 278, 513, 115, 154 }, // 4 inch panel #endif ._mode = _MODE_USB, - ._serial_speed = USART_SPEED_SETTING(SERIAL_DEFAULT_BITRATE), + ._serial_speed = SERIAL_DEFAULT_BITRATE, .lcd_palette = LCD_DEFAULT_PALETTE, #ifdef TINYSA4 #endif @@ -1617,6 +1617,17 @@ VNA_SHELL_FUNCTION(cmd_threads) #endif #ifdef ENABLE_USART_COMMAND +VNA_SHELL_FUNCTION(cmd_usart_cfg) +{ + if (argc != 1) goto result; + uint32_t speed = my_atoui(argv[0]); + if (speed < 300) speed = 300; + config._serial_speed = speed; + shell_update_speed(); +result: + shell_printf("Serial: %u baud\r\n", config._serial_speed); +} + VNA_SHELL_FUNCTION(cmd_usart) { uint32_t time = 2000; // 200ms wait answer by default @@ -1680,6 +1691,7 @@ static const VNAShellCommand commands[] = {"marker" , cmd_marker , 0}, #ifdef ENABLE_USART_COMMAND {"usart" , cmd_usart , CMD_WAIT_MUTEX}, + {"usart_cfg" , cmd_usart_cfg , CMD_WAIT_MUTEX}, #endif {"capture" , cmd_capture , CMD_WAIT_MUTEX}, #ifdef __REMOTE_DESKTOP__ @@ -1817,7 +1829,7 @@ static bool shell_check_connect(void){ // Update Serial connection speed and settings void shell_update_speed(void){ // Update Serial speed settings - SerialConfig s_config = {USART_GET_SPEED(config._serial_speed), 0, USART_CR2_STOP1_BITS, 0 }; + SerialConfig s_config = {config._serial_speed, 0, USART_CR2_STOP1_BITS, 0 }; sdStop(&SD1); sdStart(&SD1, &s_config); // USART config } diff --git a/nanovna.h b/nanovna.h index 9e291cd..3993157 100644 --- a/nanovna.h +++ b/nanovna.h @@ -722,22 +722,10 @@ extern int display_test(void); // // Shell config functions and macros // Serial connect definitions not used if Serial mode disabled -// Minimum speed - USART_SPEED_MULTIPLIER -// Maximum speed - USART_SPEED_MULTIPLIER * 256 -// Can be: 19200, 38400, 57600, 76800, 115200, 230400, 460800, 921600, 1843200, 3686400 -#define USART_SPEED_MULTIPLIER 19200 -#define USART_SPEED_SETTING(speed) ((speed)/USART_SPEED_MULTIPLIER - 1) -#define USART_GET_SPEED(idx) (((idx) + 1) * USART_SPEED_MULTIPLIER) void shell_update_speed(void); void shell_reset_console(void); int shell_serial_printf(const char *fmt, ...); - -#ifdef __VNA -void set_electrical_delay(float picoseconds); -float get_electrical_delay(void); -float groupdelay_from_array(int i, float array[POINTS_COUNT][2]); -#endif // marker enum { M_NORMAL=0,M_REFERENCE=1, M_DELTA=2, M_NOISE=4, M_STORED=8, M_TRACKING=16, M_DELETE=32 // Tracking must be last. @@ -1192,7 +1180,7 @@ typedef struct properties { //sizeof(properties_t) == 0x1200 -#define CONFIG_MAGIC 0x434f4e50 /* 'CONF' */ +#define CONFIG_MAGIC 0x434f4e51 /* 'CONF' */ extern int16_t lastsaveid; //extern properties_t *active_props; diff --git a/ui_sa.c b/ui_sa.c index ae85ce3..94d0d0c 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -1911,13 +1911,15 @@ static UI_FUNCTION_ADV_CALLBACK(menu_points_acb){ #ifdef __USE_SERIAL_CONSOLE__ static UI_FUNCTION_ADV_CALLBACK(menu_serial_speed_acb) { + static const uint32_t usart_speed[] = {19200, 38400, 57600, 115200, 230400, 460800, 921600, 1843200, 2000000, 3000000}; (void)item; + uint32_t speed = usart_speed[data]; if (b){ b->icon = config._serial_speed == data ? BUTTON_ICON_GROUP_CHECKED : BUTTON_ICON_GROUP; - b->param_1.u = USART_GET_SPEED(data); + b->param_1.u = speed; return; } - config._serial_speed = data; + config._serial_speed = speed; shell_update_speed(); } @@ -2546,28 +2548,17 @@ static const menuitem_t menu_calibrate[] = #endif #ifdef __USE_SERIAL_CONSOLE__ -//19200, 38400, 57600, 74800, 115200, 230400, 460800, 921600, 1843200, 3686400 -#if 0 -const menuitem_t menu_serial_speed2[] = { - { MT_ADV_CALLBACK, USART_SPEED_SETTING( 460800), "%u", menu_serial_speed_acb }, - { MT_ADV_CALLBACK, USART_SPEED_SETTING( 921600), "%u", menu_serial_speed_acb }, - { MT_ADV_CALLBACK, USART_SPEED_SETTING(1843200), "%u", menu_serial_speed_acb }, - { MT_ADV_CALLBACK, USART_SPEED_SETTING(3686400), "%u", menu_serial_speed_acb }, - { MT_CANCEL, 0, S_LARROW" BACK", NULL }, - { MT_NONE, 0, NULL, NULL } // sentinel -}; -#endif - const menuitem_t menu_serial_speed[] = { - { MT_ADV_CALLBACK, USART_SPEED_SETTING( 19200), "%u", menu_serial_speed_acb }, - { MT_ADV_CALLBACK, USART_SPEED_SETTING( 38400), "%u", menu_serial_speed_acb }, - { MT_ADV_CALLBACK, USART_SPEED_SETTING( 57600), "%u", menu_serial_speed_acb }, -// { MT_ADV_CALLBACK, USART_SPEED_SETTING( 76800), "%u", menu_serial_speed_acb }, - { MT_ADV_CALLBACK, USART_SPEED_SETTING(115200), "%u", menu_serial_speed_acb }, - { MT_ADV_CALLBACK, USART_SPEED_SETTING(230400), "%u", menu_serial_speed_acb }, -// { MT_SUBMENU, 0, S_RARROW" MORE", menu_serial_speed2 }, - { MT_ADV_CALLBACK, USART_SPEED_SETTING( 460800), "%u", menu_serial_speed_acb }, - { MT_ADV_CALLBACK, USART_SPEED_SETTING( 921600), "%u", menu_serial_speed_acb }, + { MT_ADV_CALLBACK, 0, "%u", menu_serial_speed_acb }, + { MT_ADV_CALLBACK, 1, "%u", menu_serial_speed_acb }, + { MT_ADV_CALLBACK, 2, "%u", menu_serial_speed_acb }, + { MT_ADV_CALLBACK, 3, "%u", menu_serial_speed_acb }, + { MT_ADV_CALLBACK, 4, "%u", menu_serial_speed_acb }, + { MT_ADV_CALLBACK, 5, "%u", menu_serial_speed_acb }, + { MT_ADV_CALLBACK, 6, "%u", menu_serial_speed_acb }, + { MT_ADV_CALLBACK, 7, "%u", menu_serial_speed_acb }, + { MT_ADV_CALLBACK, 8, "%u", menu_serial_speed_acb }, + { MT_ADV_CALLBACK, 9, "%u", menu_serial_speed_acb }, { MT_CANCEL, 0, S_LARROW" BACK", NULL }, { MT_NONE, 0, NULL, NULL } // sentinel };