Library to communicate with Maxim OneWire protocol devices Modified timings and IRQ overrides
Fork of Onewire by
Diff: Onewire.cpp
- Revision:
- 6:d2452e9b169b
- Parent:
- 5:45b6a39002f1
- Child:
- 7:0a87f8c2d9e6
--- 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;
