Pārlūkot izejas kodu

align source from esp8266 port

devsaurus 6 gadi atpakaļ
vecāks
revīzija
4702c1f181
2 mainītis faili ar 32 papildinājumiem un 4 dzēšanām
  1. 31 3
      components/modules/u8g2.c
  2. 1 1
      components/platform/u8x8_nodemcu_hal.c

+ 31 - 3
components/modules/u8g2.c

@@ -1,4 +1,5 @@
 // Module for binding the u8g2 library
+// Note: This file is intended to be shared between esp8266 and esp32 platform
 
 #include "module.h"
 #include "lauxlib.h"
@@ -10,9 +11,13 @@
 #include "u8g2_displays.h"
 #include "u8g2_fonts.h"
 
+#ifdef ESP_PLATFORM
+// ESP32
 #include "spi_common.h"
 
 #include "sdkconfig.h"
+#endif
+
 #ifndef CONFIG_LUA_MODULE_U8G2
 // ignore unused functions if u8g2 module will be skipped anyhow
 #pragma GCC diagnostic ignored "-Wunused-function"
@@ -616,6 +621,7 @@ static int ldisplay_i2c( lua_State *L, display_setup_fn_t setup_fn )
 
   u8g2_t *u8g2 = (u8g2_t *)ext_u8g2;
   u8x8_t *u8x8 = (u8x8_t *)u8g2;
+
   setup_fn( u8g2, U8G2_R0, u8x8_byte_nodemcu_i2c, u8x8_gpio_and_delay_nodemcu );
 
   /* prepare overlay data */
@@ -653,24 +659,45 @@ static int ldisplay_spi( lua_State *L, display_setup_fn_t setup_fn )
 {
   int stack = 0;
 
+#ifndef ESP_PLATFORM
+  // ESP8266
+  typedef struct {
+    int host;
+  } lspi_host_t;
+  lspi_host_t host_elem;
+  lspi_host_t *host = &host_elem;
+#else
+  // ESP32
   lspi_host_t *host = NULL;
+#endif
   int host_ref = LUA_NOREF;
   int cs = -1;
   int dc = -1;
   int res = -1;
   int rfb_cb_ref = LUA_NOREF;
+  int get_spi_pins;
+
 
-  if (lua_type( L, ++stack) == LUA_TUSERDATA) {
+  if (lua_type( L, ++stack ) == LUA_TUSERDATA) {
     host = (lspi_host_t *)luaL_checkudata( L, stack, "spi.master" );
     /* reference host object to avoid automatic gc */
     lua_pushvalue( L, stack );
     host_ref = luaL_ref( L, LUA_REGISTRYINDEX );
+    get_spi_pins = 1;
+  } else if (lua_type( L, stack ) == LUA_TNUMBER) {
+    host->host = luaL_checkint( L, stack );
+    get_spi_pins = 1;
+  } else {
+    get_spi_pins = 0;
+    stack--;
+  }
 
+  if (get_spi_pins) {
     cs = luaL_checkint( L, ++stack );
     dc = luaL_checkint( L, ++stack );
     res = luaL_optint( L, ++stack, -1 );
-  } else
-    stack--;
+  }
+
   if (lua_isfunction( L, ++stack )) {
     lua_pushvalue( L, stack );
     rfb_cb_ref = luaL_ref( L, LUA_REGISTRYINDEX );
@@ -687,6 +714,7 @@ static int ldisplay_spi( lua_State *L, display_setup_fn_t setup_fn )
 
   u8g2_t *u8g2 = (u8g2_t *)ext_u8g2;
   u8x8_t *u8x8 = (u8x8_t *)u8g2;
+
   setup_fn( u8g2, U8G2_R0, u8x8_byte_nodemcu_spi, u8x8_gpio_and_delay_nodemcu );
 
   /* prepare overlay data */

+ 1 - 1
components/platform/u8x8_nodemcu_hal.c

@@ -28,7 +28,7 @@ uint8_t u8x8_gpio_and_delay_nodemcu(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int,
         memset( (void *)&cfg, 0, sizeof( cfg ) );
         cfg.pin_bit_mask = 1ULL << u8x8->pins[idx];
 
-        if (idx == U8X8_PIN_I2C_CLOCK || idx == U8X8_PIN_I2C_CLOCK) {
+        if (idx == U8X8_PIN_I2C_CLOCK || idx == U8X8_PIN_I2C_DATA) {
           cfg.mode = GPIO_MODE_OUTPUT_OD;
           cfg.pull_up_en = GPIO_PULLUP_ENABLE;
         } else {