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.
Fork of Onewire by
Diff: Onewire.cpp
- Revision:
- 6:d2452e9b169b
- Parent:
- 5:45b6a39002f1
- Child:
- 7:0a87f8c2d9e6
diff -r 45b6a39002f1 -r d2452e9b169b Onewire.cpp
--- a/Onewire.cpp Mon Sep 28 10:31:58 2015 +0000
+++ b/Onewire.cpp Mon Oct 05 14:03:29 2015 +0000
@@ -128,7 +128,12 @@
// Search Copied from Arduino code
//
-// Perform a search. If this function returns a '1' then it has
+// Perform a search.
+// Returns
+// ONEWIRE_OK if a new address has been returned.
+// ONEWIRE_SEARCH_ALL_DONE = all devices found
+// ONEWIRE_SEARCH_INIT_FAIL = failed to init
+// ONEWIRE_SEARCH_NOT_FOUND = no devices found If this function returns a '1' then it has
// enumerated the next device and you may retrieve the ROM from the
// Onewire::address variable. If there are no devices, no further
// devices, or something horrible happens in the middle of the
@@ -146,7 +151,8 @@
uint8_t Onewire::search(uint8_t *newAddr)
{
uint8_t id_bit_number = 1;
- uint8_t last_zero = 0, rom_byte_number = 0, search_result = 0;
+ uint8_t last_zero = 0, rom_byte_number = 0;
+ uint8_t search_result = ONEWIRE_SEARCH_ALL_DONE;
uint8_t id_bit = 0, cmp_id_bit = 0;
// initialize for search
@@ -162,7 +168,7 @@
_search_LastDiscrepancy = 0;
_search_LastDeviceFlag = false;
_search_LastFamilyDiscrepancy = 0;
- return false;
+ return ONEWIRE_SEARCH_INIT_FAIL;
}
// issue the search command
@@ -239,18 +245,20 @@
if (_search_LastDiscrepancy == 0)
_search_LastDeviceFlag = true;
- search_result = true;
+ search_result = ONEWIRE_OK;
}
}
// if no device found then reset counters so next 'search' will be like a first
- if (!search_result || !_search_ROM_NO[0])
+ if (!_search_ROM_NO[0])
{
_search_LastDiscrepancy = 0;
_search_LastDeviceFlag = false;
_search_LastFamilyDiscrepancy = 0;
- search_result = false;
+ search_result = ONEWIRE_SEARCH_NOT_FOUND;
}
+ if (search_result != ONEWIRE_OK)
+ return search_result;
for (int i = 0; i < ONEWIRE_ADDR_BYTES; i++)
newAddr[i] = _search_ROM_NO[i];
return search_result;
