Extended MaximInterface
Dependents: mbed_DS28EC20_GPIO
Diff: Links/OneWireMaster.cpp
- Revision:
- 8:211d1b8f730c
- Parent:
- 6:a8c83a2e6fa4
--- a/Links/OneWireMaster.cpp Tue Jul 24 08:33:31 2018 +0000 +++ b/Links/OneWireMaster.cpp Wed Apr 03 12:33:10 2019 +0000 @@ -35,14 +35,14 @@ namespace MaximInterface { +static const int maxBitNum = 7; + error_code OneWireMaster::writeByteSetLevel(uint_least8_t sendByte, Level afterLevel) { error_code result; - for (int idx = 0; (idx < 8) && !result; idx++) { - result = writeBit(((sendByte >> idx) & 1) == 1); - } - if (!result) { - result = setLevel(afterLevel); + for (int bitNum = 0; (bitNum <= maxBitNum) && !result; ++bitNum) { + result = writeBitSetLevel(((sendByte >> bitNum) & 1) == 1, + (bitNum == maxBitNum) ? afterLevel : NormalLevel); } return result; } @@ -51,35 +51,34 @@ Level afterLevel) { recvByte = 0; error_code result; - for (int idx = 0; idx < 8; idx++) { + for (int bitNum = 0; bitNum <= maxBitNum; ++bitNum) { bool recvBit; - result = readBit(recvBit); + result = readBitSetLevel(recvBit, + (bitNum == maxBitNum) ? afterLevel : NormalLevel); if (result) { break; } if (recvBit) { - recvByte |= (1 << idx); + recvByte |= (1 << bitNum); } } - if (!result) { - result = setLevel(afterLevel); - } return result; } -error_code OneWireMaster::writeBlock(const uint_least8_t * sendBuf, - size_t sendLen) { +error_code OneWireMaster::writeBlock(span<const uint_least8_t> sendBuf) { error_code result; - for (size_t idx = 0; (idx < sendLen) && !result; idx++) { - result = writeByte(sendBuf[idx]); + for (span<const uint_least8_t>::index_type i = 0; + i < sendBuf.size() && !result; ++i) { + result = writeByte(sendBuf[i]); } return result; } -error_code OneWireMaster::readBlock(uint_least8_t * recvBuf, size_t recvLen) { +error_code OneWireMaster::readBlock(span<uint_least8_t> recvBuf) { error_code result; - for (size_t idx = 0; (idx < recvLen) && !result; idx++) { - result = readByte(recvBuf[idx]); + for (span<uint_least8_t>::index_type i = 0; i < recvBuf.size() && !result; + ++i) { + result = readByte(recvBuf[i]); } return result; }