From 45f3416816fd5d717887e3efdde4d3ce3ef2ff38 Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Thu, 26 May 2016 17:11:43 +0100
Subject: [PATCH] esp8266: Enable DHT C-level driver.

Exposed as esp.dht_readinto.  Probably should go somewhere less
port-specific.
---
 esp8266/Makefile    | 7 ++++++-
 esp8266/esp_mphal.h | 4 ++++
 esp8266/modesp.c    | 2 ++
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/esp8266/Makefile b/esp8266/Makefile
index 2d65b4bd6..9a7602702 100644
--- a/esp8266/Makefile
+++ b/esp8266/Makefile
@@ -124,6 +124,10 @@ LIB_SRC_C = $(addprefix lib/,\
 	fatfs/option/ccsbcs.c \
 	)
 
+DRIVERS_SRC_C = $(addprefix drivers/,\
+	dht/dht.c \
+        )
+
 SRC_S = \
 	gchelper.s \
 
@@ -134,10 +138,11 @@ OBJ += $(addprefix $(BUILD)/, $(SRC_S:.s=.o))
 OBJ += $(addprefix $(BUILD)/, $(STM_SRC_C:.c=.o))
 OBJ += $(addprefix $(BUILD)/, $(EXTMOD_SRC_C:.c=.o))
 OBJ += $(addprefix $(BUILD)/, $(LIB_SRC_C:.c=.o))
+OBJ += $(addprefix $(BUILD)/, $(DRIVERS_SRC_C:.c=.o))
 #OBJ += $(BUILD)/pins_$(BOARD).o
 
 # List of sources for qstr extraction
-SRC_QSTR += $(SRC_C) $(STM_SRC_C) $(EXTMOD_SRC_C)
+SRC_QSTR += $(SRC_C) $(STM_SRC_C) $(EXTMOD_SRC_C) $(DRIVERS_SRC_C)
 # Append any auto-generated sources that are needed by sources listed in SRC_QSTR
 SRC_QSTR_AUTO_DEPS +=
 
diff --git a/esp8266/esp_mphal.h b/esp8266/esp_mphal.h
index 866a5a94b..91fee2119 100644
--- a/esp8266/esp_mphal.h
+++ b/esp8266/esp_mphal.h
@@ -28,6 +28,7 @@
 #define _INCLUDED_MPHAL_H_
 
 #include "py/ringbuf.h"
+#include "xtirq.h"
 
 void mp_keyboard_interrupt(void);
 extern int interrupt_char;
@@ -62,6 +63,9 @@ void ets_event_poll(void);
 #include "osapi.h"
 #define mp_hal_delay_us_fast(us) os_delay_us(us)
 
+#define mp_hal_quiet_timing_enter() disable_irq()
+#define mp_hal_quiet_timing_exit(irq_state) enable_irq(irq_state)
+
 // C-level pin HAL
 #include "etshal.h"
 #include "gpio.h"
diff --git a/esp8266/modesp.c b/esp8266/modesp.c
index 4b0c0e466..0c6cc423e 100644
--- a/esp8266/modesp.c
+++ b/esp8266/modesp.c
@@ -34,6 +34,7 @@
 #include "py/runtime.h"
 #include "py/mperrno.h"
 #include "py/mphal.h"
+#include "drivers/dht/dht.h"
 #include "netutils.h"
 #include "queue.h"
 #include "ets_sys.h"
@@ -691,6 +692,7 @@ STATIC const mp_map_elem_t esp_module_globals_table[] = {
     #endif
     { MP_OBJ_NEW_QSTR(MP_QSTR_neopixel_write), (mp_obj_t)&esp_neopixel_write_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_apa102_write), (mp_obj_t)&esp_apa102_write_obj },
+    { MP_OBJ_NEW_QSTR(MP_QSTR_dht_readinto), (mp_obj_t)&dht_readinto_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_freemem), (mp_obj_t)&esp_freemem_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_meminfo), (mp_obj_t)&esp_meminfo_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_info), (mp_obj_t)&pyb_info_obj }, // TODO delete/rename/move elsewhere
-- 
GitLab