Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: mbed_DS28EC20_GPIO
Diff: Devices/DS2431.cpp
- Revision:
- 6:a8c83a2e6fa4
- Parent:
- 0:f77ad7f72d04
- Child:
- 7:471901a04573
diff -r caf56f265a13 -r a8c83a2e6fa4 Devices/DS2431.cpp
--- a/Devices/DS2431.cpp Fri Jan 19 10:25:02 2018 -0600
+++ b/Devices/DS2431.cpp Wed Jan 23 13:11:04 2019 -0600
@@ -37,20 +37,13 @@
namespace MaximInterface {
-enum Command {
- WriteScratchpad = 0x0F,
- ReadScratchpad = 0xAA,
- CopyScratchpad = 0x55,
- ReadMemory = 0xF0
-};
-
error_code writeMemory(DS2431 & device, DS2431::Address targetAddress,
- const DS2431::Scratchpad & data) {
+ DS2431::Scratchpad::const_span data) {
error_code result = device.writeScratchpad(targetAddress, data);
if (result) {
return result;
}
- DS2431::Scratchpad readData;
+ DS2431::Scratchpad::array readData;
uint_least8_t esByte;
result = device.readScratchpad(readData, esByte);
if (result) {
@@ -60,38 +53,35 @@
return result;
}
-error_code DS2431::readMemory(Address beginAddress, uint_least8_t * data,
- size_t dataLen) const {
+error_code DS2431::readMemory(Address beginAddress,
+ span<uint_least8_t> data) const {
error_code owmResult = selectRom(*master);
if (owmResult) {
return owmResult;
}
- const uint_least8_t sendBlock[] = {ReadMemory, beginAddress, 0x00};
- owmResult =
- master->writeBlock(sendBlock, sizeof(sendBlock) / sizeof(sendBlock[0]));
+ const uint_least8_t sendBlock[] = {0xF0, beginAddress, 0x00};
+ owmResult = master->writeBlock(sendBlock);
if (owmResult) {
return owmResult;
}
- owmResult = master->readBlock(data, dataLen);
+ owmResult = master->readBlock(data);
return owmResult;
}
error_code DS2431::writeScratchpad(Address targetAddress,
- const Scratchpad & data) {
+ Scratchpad::const_span data) {
error_code owmResult = selectRom(*master);
if (owmResult) {
return owmResult;
}
- array<uint_least8_t, 3 + Scratchpad::csize> block = {WriteScratchpad,
- targetAddress, 0x00};
- std::copy(data.begin(), data.end(), block.begin() + 3);
- owmResult = master->writeBlock(block.data(), block.size());
+ uint_least8_t block[3 + Scratchpad::size] = {0x0F, targetAddress, 0x00};
+ std::copy(data.begin(), data.end(), block + 3);
+ owmResult = master->writeBlock(block);
if (owmResult) {
return owmResult;
}
- const uint_fast16_t calculatedCrc =
- calculateCrc16(block.data(), block.size()) ^ 0xFFFFU;
- owmResult = master->readBlock(block.data(), 2);
+ const uint_fast16_t calculatedCrc = calculateCrc16(block) ^ 0xFFFFU;
+ owmResult = master->readBlock(make_span(block, 2));
if (owmResult) {
return owmResult;
}
@@ -102,19 +92,20 @@
return owmResult;
}
-error_code DS2431::readScratchpad(Scratchpad & data, uint_least8_t & esByte) {
- typedef array<uint_least8_t, 6 + Scratchpad::csize> Block;
+error_code DS2431::readScratchpad(Scratchpad::span data,
+ uint_least8_t & esByte) {
+ typedef array<uint_least8_t, 6 + Scratchpad::size> Block;
error_code owmResult = selectRom(*master);
if (owmResult) {
return owmResult;
}
- Block block = {ReadScratchpad};
+ Block block = {0xAA};
owmResult = master->writeByte(block.front());
if (owmResult) {
return owmResult;
}
- owmResult = master->readBlock(block.data() + 1, block.size() - 1);
+ owmResult = master->readBlock(make_span(block.data() + 1, block.size() - 1));
if (owmResult) {
return owmResult;
}
@@ -122,7 +113,7 @@
uint_fast16_t receivedCrc = static_cast<uint_fast16_t>(*(--blockIt)) << 8;
receivedCrc |= *(--blockIt);
const uint_fast16_t expectedCrc =
- calculateCrc16(block.data(), block.size() - 2) ^ 0xFFFFU;
+ calculateCrc16(make_span(block.data(), block.size() - 2)) ^ 0xFFFFU;
if (expectedCrc == receivedCrc) {
Block::const_iterator blockItEnd = blockIt;
blockIt -= data.size();
@@ -134,13 +125,13 @@
return owmResult;
}
-error_code DS2431::copyScratchpad(Address targetAddress, uint_least8_t esByte) {
+error_code DS2431::copyScratchpad(Address targetAddress, uint_least8_t esByte) {
error_code owmResult = selectRom(*master);
if (owmResult) {
return owmResult;
}
- uint_least8_t block[] = {CopyScratchpad, targetAddress, 0x00};
- owmResult = master->writeBlock(block, sizeof(block) / sizeof(block[0]));
+ uint_least8_t block[] = {0x55, targetAddress, 0x00};
+ owmResult = master->writeBlock(block);
if (owmResult) {
return owmResult;
}
@@ -148,7 +139,7 @@
if (owmResult) {
return owmResult;
}
- (*sleep)(10);
+ sleep->invoke(10);
owmResult = master->setLevel(OneWireMaster::NormalLevel);
if (owmResult) {
return owmResult;