From 3b3612c65b2de4fdb2d21945e98d1dad7e46b6d6 Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Sun, 9 Oct 2016 00:56:46 +0300
Subject: [PATCH] esp8266: Make neopixel support configurable.

To save iRAM.
---
 esp8266/espneopixel.c  | 5 +++++
 esp8266/modesp.c       | 2 ++
 esp8266/mpconfigport.h | 1 +
 3 files changed, 8 insertions(+)

diff --git a/esp8266/espneopixel.c b/esp8266/espneopixel.c
index e16c874f2..27c773106 100644
--- a/esp8266/espneopixel.c
+++ b/esp8266/espneopixel.c
@@ -5,6 +5,9 @@
 // ESP8266 work for the NeoPixelBus library: github.com/Makuna/NeoPixelBus
 // Needs to be a separate .c file to enforce ICACHE_RAM_ATTR execution.
 
+#include "py/mpconfig.h"
+#if MICROPY_ESP8266_NEOPIXEL
+
 #include "c_types.h"
 #include "eagle_soc.h"
 #include "user_interface.h"
@@ -58,3 +61,5 @@ void /*ICACHE_RAM_ATTR*/ esp_neopixel_write(uint8_t pin, uint8_t *pixels, uint32
   while((mp_hal_ticks_cpu() - startTime) < period); // Wait for last bit
   mp_hal_quiet_timing_exit(irq_state);
 }
+
+#endif // MICROPY_ESP8266_NEOPIXEL
diff --git a/esp8266/modesp.c b/esp8266/modesp.c
index e081f57da..515319c9e 100644
--- a/esp8266/modesp.c
+++ b/esp8266/modesp.c
@@ -710,7 +710,9 @@ STATIC const mp_map_elem_t esp_module_globals_table[] = {
     { MP_OBJ_NEW_QSTR(MP_QSTR_socket), (mp_obj_t)&esp_socket_type },
     { MP_OBJ_NEW_QSTR(MP_QSTR_getaddrinfo), (mp_obj_t)&esp_getaddrinfo_obj },
     #endif
+    #if MICROPY_ESP8266_NEOPIXEL
     { MP_OBJ_NEW_QSTR(MP_QSTR_neopixel_write), (mp_obj_t)&esp_neopixel_write_obj },
+    #endif
     #if MICROPY_ESP8266_APA102
     { MP_OBJ_NEW_QSTR(MP_QSTR_apa102_write), (mp_obj_t)&esp_apa102_write_obj },
     #endif
diff --git a/esp8266/mpconfigport.h b/esp8266/mpconfigport.h
index b59d6ef88..19cf9a679 100644
--- a/esp8266/mpconfigport.h
+++ b/esp8266/mpconfigport.h
@@ -91,6 +91,7 @@
 #define MICROPY_FSUSERMOUNT            (1)
 #define MICROPY_VFS_FAT                (1)
 #define MICROPY_ESP8266_APA102         (1)
+#define MICROPY_ESP8266_NEOPIXEL       (1)
 
 #define MICROPY_EVENT_POLL_HOOK {ets_event_poll();}
 #define MICROPY_VM_HOOK_COUNT (10)
-- 
GitLab