Add retry support to I2CInterface
Enhance the I2CInterface class hierarchy to support retrying failed I2C
operations.
Add an optional parameter to i2c::create() to specify the maximum number
of retries to perform for an I2C operation. Default to 0 retries so
that existing code will not be affected.
Testing:
* Tested each modified function
* When I2C operation succeeds
* When I2C operation fails
* When no retries are done
* When retries are done
* When retried operation succeeds
* When retried operation fails
* See complete test plan at
https://gist.github.com/smccarney/8d203a40d9984402ac495dc3d689c12d
Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
Change-Id: I2b0e782e5caaafa9908ef5625687377b959b38ff
diff --git a/tools/i2c/i2c_interface.hpp b/tools/i2c/i2c_interface.hpp
index 10ee00a..77b3d7b 100644
--- a/tools/i2c/i2c_interface.hpp
+++ b/tools/i2c/i2c_interface.hpp
@@ -194,11 +194,13 @@
* @param[in] busId - The i2c bus ID
* @param[in] devAddr - The device address of the i2c
* @param[in] initialState - Initial state of the I2CInterface object
+ * @param[in] maxRetries - Maximum number of times to retry an I2C operation
*
* @return The unique_ptr holding the I2CInterface
*/
std::unique_ptr<I2CInterface> create(
uint8_t busId, uint8_t devAddr,
- I2CInterface::InitialState initialState = I2CInterface::InitialState::OPEN);
+ I2CInterface::InitialState initialState = I2CInterface::InitialState::OPEN,
+ int maxRetries = 0);
} // namespace i2c