diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-09-08 13:45:05 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-09-08 13:45:05 +1000 |
| commit | 6b9fb9edace1b0441eb8d5e9ee8e5c6ec1287554 (patch) | |
| tree | 8f4cd3d5d9eeddb015b4ec97f14e004e9e701dfb /src/drivers/i2c.cpp | |
| parent | 493a70b07c98787bf247e577d17d6b1a3e16a084 (diff) | |
| download | tangara-fw-6b9fb9edace1b0441eb8d5e9ee8e5c6ec1287554.tar.gz | |
Support retries for samd and touchwheel i2c
Diffstat (limited to 'src/drivers/i2c.cpp')
| -rw-r--r-- | src/drivers/i2c.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/drivers/i2c.cpp b/src/drivers/i2c.cpp index 75beacda..36906a50 100644 --- a/src/drivers/i2c.cpp +++ b/src/drivers/i2c.cpp @@ -65,8 +65,12 @@ I2CTransaction::~I2CTransaction() { free(buffer_); } -esp_err_t I2CTransaction::Execute(i2c_port_t port) { - return i2c_master_cmd_begin(port, handle_, kI2CTimeout); +esp_err_t I2CTransaction::Execute(int num_retries) { + esp_err_t res; + do { + res = i2c_master_cmd_begin(I2C_NUM_0, handle_, kI2CTimeout); + } while (res == ESP_ERR_TIMEOUT && num_retries-- > 0); + return res; } I2CTransaction& I2CTransaction::start() { |
