diff options
author | JF <jf@codingfield.com> | 2020-10-27 21:55:18 +0100 |
---|---|---|
committer | JF <jf@codingfield.com> | 2020-10-27 21:55:18 +0100 |
commit | 7de43a16608e599369867cb3cfa7d5776a5b6380 (patch) | |
tree | 1750edfed02f547102e468eca485caab3b08e98d /src/drivers/TwiMaster.h | |
parent | 5983e33b8d7702800dc91a3229b9a7cee75eb006 (diff) | |
parent | c5bf09d21b2ed8e2435ec625e351594f58713924 (diff) |
Fix conflicts
Diffstat (limited to 'src/drivers/TwiMaster.h')
-rw-r--r-- | src/drivers/TwiMaster.h | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/drivers/TwiMaster.h b/src/drivers/TwiMaster.h index 9b6b5070..52e39098 100644 --- a/src/drivers/TwiMaster.h +++ b/src/drivers/TwiMaster.h @@ -10,6 +10,7 @@ namespace Pinetime { public: enum class Modules { TWIM1 }; enum class Frequencies {Khz100, Khz250, Khz400}; + enum class ErrorCodes {NoError, TransactionFailed}; struct Parameters { uint32_t frequency; uint8_t pinSda; @@ -19,15 +20,19 @@ namespace Pinetime { TwiMaster(const Modules module, const Parameters& params); void Init(); - void Read(uint8_t deviceAddress, uint8_t registerAddress, uint8_t* buffer, size_t size); - void Write(uint8_t deviceAddress, uint8_t registerAddress, const uint8_t* data, size_t size); + ErrorCodes Read(uint8_t deviceAddress, uint8_t registerAddress, uint8_t* buffer, size_t size); + ErrorCodes Write(uint8_t deviceAddress, uint8_t registerAddress, const uint8_t* data, size_t size); void Sleep(); void Wakeup(); private: - void Read(uint8_t deviceAddress, uint8_t* buffer, size_t size, bool stop); - void Write(uint8_t deviceAddress, const uint8_t* data, size_t size, bool stop); + ErrorCodes ReadWithRetry(uint8_t deviceAddress, uint8_t registerAddress, uint8_t* buffer, size_t size); + ErrorCodes WriteWithRetry(uint8_t deviceAddress, uint8_t registerAddress, const uint8_t* data, size_t size); + + ErrorCodes Read(uint8_t deviceAddress, uint8_t* buffer, size_t size, bool stop); + ErrorCodes Write(uint8_t deviceAddress, const uint8_t* data, size_t size, bool stop); + void FixHwFreezed(); NRF_TWIM_Type* twiBaseAddress; SemaphoreHandle_t mutex; const Modules module; @@ -35,7 +40,8 @@ namespace Pinetime { static constexpr uint8_t maxDataSize{8}; static constexpr uint8_t registerSize{1}; uint8_t internalBuffer[maxDataSize + registerSize]; - + uint32_t txStartedCycleCount = 0; + static constexpr uint32_t HwFreezedDelay{161000}; }; } }
\ No newline at end of file |