|
|
|
@ -10,7 +10,7 @@
@@ -10,7 +10,7 @@
|
|
|
|
|
#include "u8g2_esp32_hal.h" |
|
|
|
|
|
|
|
|
|
static const char * TAG = "u8g2_hal"; |
|
|
|
|
static const unsigned int I2C_TIMEOUT_MS = 1000; |
|
|
|
|
static const unsigned int I2C_TIMEOUT_MS = 10; |
|
|
|
|
|
|
|
|
|
static spi_device_handle_t handle_spi; // SPI handle.
|
|
|
|
|
static i2c_cmd_handle_t handle_i2c; // I2C handle.
|
|
|
|
@ -19,10 +19,11 @@ static u8g2_esp32_hal_t u8g2_esp32_hal; // HAL state data.
@@ -19,10 +19,11 @@ static u8g2_esp32_hal_t u8g2_esp32_hal; // HAL state data.
|
|
|
|
|
#undef ESP_ERROR_CHECK |
|
|
|
|
#define ESP_ERROR_CHECK(x) \ |
|
|
|
|
do { \ |
|
|
|
|
esp_err_t rc = (x); \ |
|
|
|
|
if (rc != ESP_OK) { \ |
|
|
|
|
ESP_LOGE("err", "esp_err_t = %d", rc); \ |
|
|
|
|
assert(0 && #x); \ |
|
|
|
|
esp_err_t _rc = (x); \ |
|
|
|
|
if (_rc != ESP_OK) { \ |
|
|
|
|
const char *_error_name = esp_err_to_name(_rc); \ |
|
|
|
|
ESP_LOGE(TAG, "%s failed: %s (%d)", #x, _error_name, _rc); \ |
|
|
|
|
return 0; \ |
|
|
|
|
} \ |
|
|
|
|
} while (0); |
|
|
|
|
|
|
|
|
@ -136,8 +137,11 @@ uint8_t u8g2_esp32_i2c_byte_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void
@@ -136,8 +137,11 @@ uint8_t u8g2_esp32_i2c_byte_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void
|
|
|
|
|
ESP_LOGD(TAG, "i2c_param_config %d", conf.mode); |
|
|
|
|
ESP_ERROR_CHECK(i2c_param_config(I2C_MASTER_NUM, &conf)); |
|
|
|
|
ESP_LOGD(TAG, "i2c_driver_install %d", I2C_MASTER_NUM); |
|
|
|
|
ESP_ERROR_CHECK( |
|
|
|
|
i2c_driver_install(I2C_MASTER_NUM, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0)); |
|
|
|
|
ESP_ERROR_CHECK(i2c_driver_install(I2C_MASTER_NUM, |
|
|
|
|
conf.mode, |
|
|
|
|
I2C_MASTER_RX_BUF_DISABLE, |
|
|
|
|
I2C_MASTER_TX_BUF_DISABLE, |
|
|
|
|
ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_LEVEL1)); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -167,7 +171,7 @@ uint8_t u8g2_esp32_i2c_byte_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void
@@ -167,7 +171,7 @@ uint8_t u8g2_esp32_i2c_byte_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
case U8X8_MSG_BYTE_END_TRANSFER: { |
|
|
|
|
// ESP_LOGV(TAG, "End I2C transfer. txbuf len: %d", txbuf_ptr - txbuf);
|
|
|
|
|
ESP_LOGV(TAG, "End I2C transfer. txbuf len: %d", txbuf_ptr - txbuf); |
|
|
|
|
// ESP_LOG_BUFFER_HEXDUMP(TAG, txbuf, txbuf_ptr - txbuf, ESP_LOG_VERBOSE);
|
|
|
|
|
ESP_ERROR_CHECK(i2c_master_write(handle_i2c, txbuf, txbuf_ptr - txbuf, ACK_CHECK_EN)); |
|
|
|
|
ESP_ERROR_CHECK(i2c_master_stop(handle_i2c)); |
|
|
|
@ -175,8 +179,9 @@ uint8_t u8g2_esp32_i2c_byte_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void
@@ -175,8 +179,9 @@ uint8_t u8g2_esp32_i2c_byte_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void
|
|
|
|
|
i2c_cmd_link_delete(handle_i2c); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
default: return 0; |
|
|
|
|
} |
|
|
|
|
return 0; |
|
|
|
|
return 1; |
|
|
|
|
} // u8g2_esp32_i2c_byte_cb
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -243,6 +248,7 @@ uint8_t u8g2_esp32_gpio_and_delay_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int,
@@ -243,6 +248,7 @@ uint8_t u8g2_esp32_gpio_and_delay_cb(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int,
|
|
|
|
|
|
|
|
|
|
// Delay for the number of milliseconds passed in through arg_int.
|
|
|
|
|
case U8X8_MSG_DELAY_MILLI: vTaskDelay(arg_int / portTICK_PERIOD_MS); break; |
|
|
|
|
default: return 0; |
|
|
|
|
} |
|
|
|
|
return 0; |
|
|
|
|
return 1; |
|
|
|
|
} // u8g2_esp32_gpio_and_delay_cb
|