From db4b0645d83b752d894c1bf494b8ed9a4e4302ee Mon Sep 17 00:00:00 2001
From: moon2 <moon2protonmail@protonmail.com>
Date: Tue, 25 Apr 2023 02:47:06 +0200
Subject: [PATCH] scope is alive again!

---
 badge23/display.c                             | 96 +++++--------------
 badge23/display.h                             |  2 +-
 badge23/espan.c                               | 11 ++-
 .../ports/esp32/boards/sdkconfig.badge23      | 56 +++++++++++
 micropython/ports/esp32/main.c                |  4 +-
 5 files changed, 89 insertions(+), 80 deletions(-)

diff --git a/badge23/display.c b/badge23/display.c
index 2b627c664c..38c7fbf7e0 100644
--- a/badge23/display.c
+++ b/badge23/display.c
@@ -9,13 +9,11 @@
 #include <stdio.h>
 #include <string.h>
 #include <math.h>
-//#include <audio.h>
 
 #include "scope.h"
 #include "esp_system.h"
 
 uint16_t *pixels;
-#include "decode_image.h"
 
 typedef struct leds_cfg {
     bool active_paddles[10];
@@ -27,20 +25,7 @@ static void display_task(TimerHandle_t aaaaa);
 
 static void _display_init() {
     GC9A01_Init();
-
-#if 0
-    uint16_t Color;
-    for(;;)
-    {
-        Color=rand();
-        GC9A01_FillRect(0,0,239,239,Color);
-        GC9A01_Update();
-        vTaskDelay(1000/portTICK_PERIOD_MS);
-    }
-#endif
-
-    //decode_image(&pixels);
-    GC9A01_Screen_Load(0,0,240,240,pixels);
+    //    GC9A01_Screen_Load(0,0,240,240,pixels);
     GC9A01_Update();
 
     /*
@@ -48,74 +33,39 @@ static void _display_init() {
     TaskHandle_t handle;
     xTaskCreate(&display_task, "Display", 4096, NULL, configMAX_PRIORITIES - 3, &handle);
     */
+    
     TimerHandle_t aa = xTimerCreate("Display", pdMS_TO_TICKS(100), pdTRUE, (void *) 0, *display_task);
     if( xTimerStart(aa, 0 ) != pdPASS )
     {
     }
 }
 
-//static void display_task(void* arg) {
-static void display_task(TimerHandle_t aaaaa) {
-    display_cfg_t  display_;
-        // printf("hewo!");
-
-    //static const int paddle_pos[10][2] = {{120, 240}, {190, 217}, {234, 157}, {234, 82}, {190, 22}, {120, 0}, {49, 22}, {5, 82}, {5, 157}, {49, 217}};
+void display_draw_scope(){
+    //display_cfg_t  display_;
     uint16_t line[240];
-    //while(true) {
-        /*
-        printf("waiting...\n");
-        xQueueReceive(display_queue, &display_, portMAX_DELAY);
-        printf("go...\n");
-
-        bool any_active = false;
-        for(int i=0; i<10; i++) {
-            any_active |= display_.active_paddles[i];
-        }
+    /*
+    printf("waiting...\n");
+    xQueueReceive(display_queue, &display_, portMAX_DELAY);
+    printf("go...\n");
+    */
+    //uint32_t t0 = esp_log_timestamp();
+    begin_scope_read();
 
-        if(any_active) {
-        */
-        // printf("hewwo!");
-        if(1) {
-            uint32_t t0 = esp_log_timestamp();
-            /*
-            for(int y=0; y<240; y++) {
-                for(int x=0; x<240; x++) {
-                    uint16_t Color=0;
-                    for(int i=0; i<10; i++) {
-                        if(display_.active_paddles[i]) {
-                            int x_d = x - paddle_pos[i][0];
-                            int y_d = y - paddle_pos[i][1];
+    for(int y=0; y<240; y++){
+        read_line_from_scope(&(line[0]), y);
+        memcpy(&ScreenBuff[y * 240], line, sizeof(line));
+    }
+    end_scope_read();
 
-                            int dist = (x_d * x_d + y_d * y_d) / 64;
-                            Color += dist;
-                        }
-                    }
-                    line[x] = Color;
-                }
-                memcpy(&ScreenBuff[y * 240], line, sizeof(line));
-            }
-            */
-            begin_scope_read();
-            for(int y=0; y<240; y++){
-                read_line_from_scope(&(line[0]), y);
-                memcpy(&ScreenBuff[y * 240], line, sizeof(line));
-            }
-            end_scope_read();
-            uint32_t td = esp_log_timestamp() - t0;
-            // printf("it took %lu\n", td);
+    //uint32_t td = esp_log_timestamp() - t0;
+    // printf("it took %lu\n", td);
 
-        } else {
-            GC9A01_Screen_Load(0,0,240,240,pixels);
-        }
-        GC9A01_Update();
-    //}
+    GC9A01_Update();
+}
+//static void display_task(void* arg) {
+static void display_task(TimerHandle_t aaaaa) {
+    display_draw_scope();
 }
 
 void display_init() { _display_init(); }
 
-void display_show(bool active_paddles[10]) {
-    display_cfg_t display = {0,};
-
-    memcpy(display.active_paddles, active_paddles, sizeof(active_paddles[0]) * 10);
-    xQueueOverwrite(display_queue, &display);
-}
diff --git a/badge23/display.h b/badge23/display.h
index cd319d1be7..f775e573f0 100644
--- a/badge23/display.h
+++ b/badge23/display.h
@@ -3,4 +3,4 @@
 #include <stdbool.h>
 
 void display_init();
-void display_show(bool active_paddles[10]);
+void display_draw_scope();
diff --git a/badge23/espan.c b/badge23/espan.c
index 5aa2eb8ed4..4b8a06c914 100644
--- a/badge23/espan.c
+++ b/badge23/espan.c
@@ -48,20 +48,23 @@ void os_app_main(void)
     ESP_ERROR_CHECK(i2c_master_init());
     ESP_LOGI(TAG, "I2C initialized successfully");
 
-    vTaskDelay(1000 / portTICK_PERIOD_MS);
-    set_global_vol_dB(0);
-
+    set_global_vol_dB(-90);
     audio_init();
     leds_init();
-    //display_init();
     captouch_init();
 
+    vTaskDelay(2000 / portTICK_PERIOD_MS);
+    //set_global_vol_dB(0);
+
     mp_hal_stdout_tx_str("task inits done\n\r");
+    display_init();
+    mp_hal_stdout_tx_str("display init done\n\r");
     while(1) {
         manual_captouch_readout(1);
         vTaskDelay((CAPTOUCH_POLLING_PERIOD) / portTICK_PERIOD_MS);
         manual_captouch_readout(0);
         vTaskDelay((CAPTOUCH_POLLING_PERIOD) / portTICK_PERIOD_MS);
+        //display_draw_scope();
     }
 
     ESP_ERROR_CHECK(i2c_driver_delete(I2C_MASTER_NUM));
diff --git a/micropython/ports/esp32/boards/sdkconfig.badge23 b/micropython/ports/esp32/boards/sdkconfig.badge23
index 7d93f2b3ee..3025075ce6 100644
--- a/micropython/ports/esp32/boards/sdkconfig.badge23
+++ b/micropython/ports/esp32/boards/sdkconfig.badge23
@@ -18,4 +18,60 @@ CONFIG_GC9A01_BUFFER_MODE=y
 # end of GC9A01 LCD Config
 
 #
+CONFIG_SOC_SPI_PERIPH_NUM=3
+CONFIG_SOC_SPI_MAX_CS_NUM=6
+CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64
+CONFIG_SOC_SPI_SUPPORT_DDRCLK=y
+CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y
+CONFIG_SOC_SPI_SUPPORT_CD_SIG=y
+CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y
+CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y
+CONFIG_SOC_SPI_PERIPH_SUPPORT_CONTROL_DUMMY_OUT=y
+CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y
+CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16
+CONFIG_SOC_SPI_SUPPORT_OCT=y
+CONFIG_SOC_MEMSPI_SRC_FREQ_120M=y
+CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y
+CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y
+CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y
+CONFIG_SOC_SPIRAM_SUPPORTED=y
+
+CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y
+CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y
+CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y
+CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y
+CONFIG_SOC_SPI_MEM_SUPPORT_OPI_MODE=y
+CONFIG_SOC_SPI_MEM_SUPPORT_TIME_TUNING=y
+CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y
+
+# CONFIG_SPI_MASTER_IN_IRAM is not set
+CONFIG_SPI_MASTER_ISR_IN_IRAM=y
+# CONFIG_SPI_SLAVE_IN_IRAM is not set
+CONFIG_SPI_SLAVE_ISR_IN_IRAM=y
+# end of SPI Configuration
+
+CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y
+CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y
+CONFIG_SOC_LEDC_CHANNEL_NUM=8
+CONFIG_SOC_LEDC_TIMER_BIT_WIDE_NUM=14
+CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y
+
+CONFIG_SOC_GPIO_PORT=1
+CONFIG_SOC_GPIO_PIN_COUNT=49
+CONFIG_SOC_GPIO_SUPPORT_RTC_INDEPENDENT=y
+CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y
+CONFIG_SOC_GPIO_VALID_GPIO_MASK=0x1FFFFFFFFFFFF
+CONFIG_SOC_GPIO_SUPPORT_SLP_SWITCH=y
+
+CONFIG_SOC_MCPWM_GROUPS=2
+CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3
+CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3
+CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2
+CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2
+CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2
+CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3
+CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y
+CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3
+CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3
+CONFIG_SOC_MCPWM_SWSYNC_CAN_PROPAGATE=y
 
diff --git a/micropython/ports/esp32/main.c b/micropython/ports/esp32/main.c
index 6a8517cbe3..31f82c22fe 100644
--- a/micropython/ports/esp32/main.c
+++ b/micropython/ports/esp32/main.c
@@ -236,11 +236,11 @@ void boardctrl_startup(void) {
 void app_main(void) {
     // Hook for a board to run code at start up.
     // This defaults to initialising NVS.
+    
     MICROPY_BOARD_STARTUP();
 
     // Create and transfer control to the MicroPython task.
-    //xTaskCreatePinnedToCore(mp_task, "mp_task", MP_TASK_STACK_SIZE / sizeof(StackType_t), NULL, MP_TASK_PRIORITY, &mp_main_task_handle, MP_TASK_COREID);
-    xTaskCreate(mp_task, "mp_task", (MP_TASK_STACK_SIZE / sizeof(StackType_t)) / 2, NULL, configMAX_PRIORITIES-3, &mp_main_task_handle);
+    xTaskCreatePinnedToCore(mp_task, "mp_task", (MP_TASK_STACK_SIZE / sizeof(StackType_t)) / 2, NULL, MP_TASK_PRIORITY, &mp_main_task_handle, MP_TASK_COREID);
     os_app_main(); // ./badge23/ entry point
 }
 
-- 
GitLab