From d49a107c7e5f713d4591a0af110f6025f6976420 Mon Sep 17 00:00:00 2001 From: jgromes Date: Thu, 15 Apr 2021 19:34:53 +0200 Subject: [PATCH] Added SPI readout check bitmask --- src/Module.cpp | 4 ++-- src/Module.h | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Module.cpp b/src/Module.cpp index 372ef419..48f03211 100644 --- a/src/Module.cpp +++ b/src/Module.cpp @@ -206,7 +206,7 @@ int16_t Module::SPIgetRegValue(uint8_t reg, uint8_t msb, uint8_t lsb) { return(maskedValue); } -int16_t Module::SPIsetRegValue(uint8_t reg, uint8_t value, uint8_t msb, uint8_t lsb, uint8_t checkInterval) { +int16_t Module::SPIsetRegValue(uint8_t reg, uint8_t value, uint8_t msb, uint8_t lsb, uint8_t checkInterval, uint8_t checkMask) { if((msb > 7) || (lsb > 7) || (lsb > msb)) { return(ERR_INVALID_BIT_RANGE); } @@ -223,7 +223,7 @@ int16_t Module::SPIsetRegValue(uint8_t reg, uint8_t value, uint8_t msb, uint8_t uint8_t readValue = 0x00; while(Module::micros() - start < (checkInterval * 1000)) { readValue = SPIreadRegister(reg); - if(readValue == newValue) { + if((readValue & checkMask) == (newValue & checkMask)) { // check passed, we can stop the loop return(ERR_NONE); } diff --git a/src/Module.h b/src/Module.h index 685a2eb5..d81c4213 100644 --- a/src/Module.h +++ b/src/Module.h @@ -238,9 +238,11 @@ class Module { \param checkInterval Number of milliseconds between register writing and verification reading. Some registers need up to 10ms to process the change. + \param checkMask Mask of bits to check, only bits set to 1 will be verified. + \returns \ref status_codes */ - int16_t SPIsetRegValue(uint8_t reg, uint8_t value, uint8_t msb = 7, uint8_t lsb = 0, uint8_t checkInterval = 2); + int16_t SPIsetRegValue(uint8_t reg, uint8_t value, uint8_t msb = 7, uint8_t lsb = 0, uint8_t checkInterval = 2, uint8_t checkMask = 0xFF); /*! \brief SPI burst read method.