From 7fe319f141c698a0c9c604a2ee9a2e5389473ce3 Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Thu, 4 Mar 2021 19:13:35 +0100 Subject: [PATCH] remote desktop speed increase --- Makefile | 2 +- ili9341.c | 9 +++------ import.sh | 2 ++ main.c | 25 ++++++++++++------------- nanovna.h | 2 +- ui.c | 25 ++++++++++++------------- ui_sa.c | 1 + 7 files changed, 32 insertions(+), 34 deletions(-) create mode 100644 import.sh diff --git a/Makefile b/Makefile index b961841..46e76b6 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ ifeq ($(TARGET),) TARGET = F072 else - TARGET=F303 + TARGET = F303 endif # Compiler options here. diff --git a/ili9341.c b/ili9341.c index 1a36e4e..b91a55d 100644 --- a/ili9341.c +++ b/ili9341.c @@ -561,15 +561,13 @@ void ili9341_fill(int x, int y, int w, int h) dmaStreamSetMemory0(dmatx, &background_color); dmaStreamSetMode(dmatx, txdmamode | STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD); - dmaStreamFlush(w * h); #ifdef __REMOTE_DESKTOP__ if (auto_capture) { send_region("fill", x,y,w,h); - spi_buffer[0] = background_color; - send_buffer((uint8_t *)spi_buffer, 2); - osalThreadSleepMilliseconds(2); + send_buffer((uint8_t *)&background_color, 2); } #endif + dmaStreamFlush(w * h); } // Copy spi_buffer to region @@ -582,14 +580,13 @@ void ili9341_bulk(int x, int y, int w, int h) dmaStreamSetMemory0(dmatx, spi_buffer); dmaStreamSetMode(dmatx, txdmamode | STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD | STM32_DMA_CR_MINC); - dmaStreamFlush(w * h); #ifdef __REMOTE_DESKTOP__ if (auto_capture) { send_region("bulk", x,y,w,h); send_buffer((uint8_t *)spi_buffer, w*h*2); - osalThreadSleepMilliseconds(2); } #endif + dmaStreamFlush(w * h); } #endif diff --git a/import.sh b/import.sh new file mode 100644 index 0000000..6dc52ed --- /dev/null +++ b/import.sh @@ -0,0 +1,2 @@ +#! /bin/sh +git merge --squash DiSlord-V4-SI4463 diff --git a/main.c b/main.c index 996207f..a7f00ce 100644 --- a/main.c +++ b/main.c @@ -897,24 +897,23 @@ VNA_SHELL_FUNCTION(cmd_capture) void send_region(const char *t, int x, int y, int w, int h) { - shell_printf("%s\r\n", t); - streamPut(shell_stream, (((uint16_t) x) & 0xff)); - streamPut(shell_stream, (((uint16_t)x>>8) & 0xff)); - streamPut(shell_stream, (((uint16_t) y) & 0xff)); - streamPut(shell_stream, (((uint16_t)y>>8) & 0xff)); - streamPut(shell_stream, (((uint16_t) w) & 0xff)); - streamPut(shell_stream, (((uint16_t)w>>8) & 0xff)); - streamPut(shell_stream, (((uint16_t) h) & 0xff)); - streamPut(shell_stream, (((uint16_t)h>>8) & 0xff)); + shell_printf(t); + struct { + char new_str[2]; + uint16_t x; + uint16_t y; + uint16_t w; + uint16_t h; + } region={"\r\n", x,y,w,h}; + streamWrite(shell_stream, (void*)®ion, sizeof(region)); } void send_buffer(uint8_t * buf, int s) { - for (int i = 0; i < s; i++) { - streamPut(shell_stream, *buf++); - } - shell_printf("ch> \r\n"); + streamWrite(shell_stream, (void*) buf, s); + streamWrite(shell_stream, (void*)"ch> \r\n", 6); } + #if 0 VNA_SHELL_FUNCTION(cmd_gamma) { diff --git a/nanovna.h b/nanovna.h index 1719de3..d10957b 100644 --- a/nanovna.h +++ b/nanovna.h @@ -897,7 +897,7 @@ typedef struct setting int attack; // KM_ATTACK < 20000 int32_t slider_position; - freq_t slider_span; + int64_t slider_span; uint32_t rbw_x10; uint32_t vbw_x10; diff --git a/ui.c b/ui.c index d496e29..629d7d2 100644 --- a/ui.c +++ b/ui.c @@ -1989,15 +1989,16 @@ void set_keypad_value(int v) void check_frequency_slider(freq_t slider_freq) { - if ( (maxFreq - minFreq) < (freq_t)setting.slider_span ) { + if ( (maxFreq - minFreq) < setting.slider_span ) { setting.slider_span = maxFreq - minFreq; // absolute mode with max step size } freq_t half_span = setting.slider_span >> 1; - if (minFreq + (freq_t)half_span > slider_freq) { - setting.slider_position -= (minFreq + half_span - slider_freq) / (setting.slider_span / (MENU_FORM_WIDTH-8)); // reposition if needed + int temp = (setting.slider_span / (MENU_FORM_WIDTH-8)); + if (minFreq + half_span > slider_freq) { + setting.slider_position -= (minFreq + half_span - slider_freq) / temp; // reposition if needed } - if (maxFreq < slider_freq + (freq_t)half_span) { - setting.slider_position += (slider_freq + half_span - maxFreq) / (setting.slider_span /(MENU_FORM_WIDTH-8)); // reposition if needed + if (maxFreq < slider_freq + half_span) { + setting.slider_position += (slider_freq + half_span - maxFreq) / temp; // reposition if needed } } @@ -2028,7 +2029,7 @@ menu_select_touch(int i, int pos) if (touch_x != prev_touch_x /* - 1 || prev_touch_x + 1 < touch_x */ ) { keypad_mode = keypad; fetch_numeric_target(); - volatile int new_slider = (int)touch_x - LCD_WIDTH/2; // Can have negative outcome + int new_slider = touch_x - LCD_WIDTH/2; // Can have negative outcome if (new_slider < - (MENU_FORM_WIDTH-8)/2) new_slider = -(MENU_FORM_WIDTH-8)/2; if (new_slider > (MENU_FORM_WIDTH-8)/2) @@ -2044,9 +2045,7 @@ menu_select_touch(int i, int pos) } } if (mode == SL_MOVE ) { - uistat.value = uistat.value - setting.slider_position * ((int)setting.slider_span/(MENU_FORM_WIDTH-8)) + new_slider * ((int)setting.slider_span/(MENU_FORM_WIDTH-8)); - if (uistat.value < 0) - uistat.value = 0; + uistat.value+= (int)(setting.slider_span/(MENU_FORM_WIDTH-8))*(new_slider - setting.slider_position); if (uistat.value < minFreq) uistat.value = minFreq; if (uistat.value > maxFreq) @@ -2125,7 +2124,6 @@ menu_select_touch(int i, int pos) if (dt > BUTTON_DOWN_LONG_TICKS || do_exit) { selection = -1; draw_menu(); - redraw_request = 0; // Remove request to redraw grid return; } if (menu_is_form(menu) && MT_MASK(menu[i].type) == MT_KEYPAD && keypad == KM_LOWOUTLEVEL) { @@ -2151,10 +2149,12 @@ menu_select_touch(int i, int pos) } else if (menu_is_form(menu) && MT_MASK(menu[i].type) == MT_KEYPAD && keypad == KM_CENTER) { switch (pos) { case 0: - step = -(int)setting.slider_span; + step = setting.slider_span; + step =-step; break; case 1: - step = -(int)setting.slider_span/10; + step = setting.slider_span/10; + step =-step; break; case 2: goto nogo; @@ -2761,7 +2761,6 @@ ui_process_keypad(void) ui_mode_menu(); //Reactivate menu after keypad selection = -1; ensure_selection(); - // redraw_request = 0; // Clear all draw requests redraw_request = REDRAW_BATTERY; // Only redraw battery } else { ui_mode_normal(); diff --git a/ui_sa.c b/ui_sa.c index a06a999..b2b7bf9 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -668,6 +668,7 @@ static UI_FUNCTION_CALLBACK(menu_config_cb) show_version(); break; } + ui_mode_normal(); redraw_frame(); request_to_redraw_grid(); }