Better u8g2 error handling and tuning to flags for perf
This commit is contained in:
parent
62e4b286db
commit
e97e1228be
@ -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.
|
||||
#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
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
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,
|
||||
|
||||
// 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
|
Loading…
x
Reference in New Issue
Block a user