Extended MaximInterface
Dependents: mbed_DS28EC20_GPIO
Diff: Utilities/RomId.hpp
- Revision:
- 6:a8c83a2e6fa4
- Parent:
- 0:f77ad7f72d04
- Child:
- 7:471901a04573
--- a/Utilities/RomId.hpp Fri Jan 19 10:25:02 2018 -0600 +++ b/Utilities/RomId.hpp Wed Jan 23 13:11:04 2019 -0600 @@ -33,36 +33,40 @@ #ifndef MaximInterface_RomId #define MaximInterface_RomId -#include "array.hpp" +#include "array_span.hpp" #include "crc.hpp" namespace MaximInterface { /// Standard container for a 1-Wire ROM ID. -typedef array<uint_least8_t, 8> RomId; +typedef array_span<uint_least8_t, 8> RomId; /// @{ /// Access the Family Code byte. -inline RomId::value_type familyCode(const RomId & romId) { - return romId.front(); +inline RomId::element familyCode(RomId::const_span romId) { + return romId[0]; } -inline void setFamilyCode(RomId & romId, RomId::value_type familyCode) { - romId.front() = familyCode; + +inline void setFamilyCode(RomId::span romId, RomId::element familyCode) { + romId[0] = familyCode; } /// @} /// @{ /// Access the CRC8 byte. -inline RomId::value_type crc8(const RomId & romId) { return romId.back(); } -inline void setCrc8(RomId & romId, RomId::value_type crc8) { - romId.back() = crc8; +inline RomId::element crc8(RomId::const_span romId) { + return *romId.last<1>().data(); +} + +inline void setCrc8(RomId::span romId, RomId::element crc8) { + *romId.last<1>().data() = crc8; } /// @} /// Check if the ROM ID is valid (Family Code and CRC8 are both valid). /// @returns True if the ROM ID is valid. -inline bool valid(const RomId & romId) { - return calculateCrc8(romId.data(), romId.size() - 1) == crc8(romId); +inline bool valid(RomId::const_span romId) { + return calculateCrc8(romId.first(romId.size() - 1)) == crc8(romId); } } // namespace MaximInterface