diff --git a/components/led_strip/led_strip.h b/components/led_strip/led_strip.h index f1ec881a7..3051c1cae 100644 --- a/components/led_strip/led_strip.h +++ b/components/led_strip/led_strip.h @@ -38,21 +38,12 @@ struct led_color_t { }; struct led_strip_t { - const enum rgb_led_type_t rgb_led_type; + enum rgb_led_type_t rgb_led_type; // should be const, but workaround needed for initialization uint32_t led_strip_length; // RMT peripheral settings rmt_channel_t rmt_channel; - - /* - * Interrupt table is located in soc.h - * As of 11/27/16, reccomended interrupts are: - * 9, 12, 13, 17, 18, 19, 20, 21 or 23 - * Ensure that the same interrupt number isn't used twice - * across all libraries - */ - int rmt_interrupt_num; - + gpio_num_t gpio; // Must be less than GPIO_NUM_33 struct led_color_t *led_strip_working; diff --git a/components/led_strip/led_vu.c b/components/led_strip/led_vu.c index 643ecdaff..59ca0defd 100644 --- a/components/led_strip/led_vu.c +++ b/components/led_strip/led_vu.c @@ -28,19 +28,18 @@ static const char *TAG = "led_vu"; -#define LED_VU_STACK_SIZE (3*1024) +#define LED_VU_STACK_SIZE (3*1024) #define LED_VU_PEAK_HOLD 6U #define LED_VU_DEFAULT_GPIO 22 -#define LED_VU_RMT_INTR_NUM 20 - #define LED_VU_DEFAULT_LENGTH 19 #define LED_VU_MAX_LENGTH 255 #define max(a,b) (((a) > (b)) ? (a) : (b)) struct led_strip_t* led_display = NULL; +static EXT_RAM_ATTR struct led_strip_t led_strip_config; static EXT_RAM_ATTR struct { int gpio; @@ -92,7 +91,7 @@ void led_vu_init() strip.vu_odd = strip.length - 1; // create driver configuration - struct led_strip_t led_strip_config = { .rgb_led_type = RGB_LED_TYPE_WS2812, .rmt_interrupt_num = LED_VU_RMT_INTR_NUM }; + led_strip_config.rgb_led_type = RGB_LED_TYPE_WS2812; led_strip_config.access_semaphore = xSemaphoreCreateBinary(); led_strip_config.led_strip_length = strip.length; led_strip_config.led_strip_working = heap_caps_malloc(strip.length * sizeof(struct led_color_t), MALLOC_CAP_8BIT); @@ -104,7 +103,7 @@ void led_vu_init() bool led_init_ok = led_strip_init(&led_strip_config); if (led_init_ok) { led_display = &led_strip_config; - ESP_LOGI(TAG, "led_vu using gpio:%d length:%d on channek:%d", strip.gpio, strip.length, led_strip_config.rmt_channel); + ESP_LOGI(TAG, "led_vu using gpio:%d length:%d on channel:%d", strip.gpio, strip.length, led_strip_config.rmt_channel); } else { ESP_LOGE(TAG, "led_vu init failed"); goto done;