Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

Revision:
77:529edb329ee0
Parent:
76:84e6c4994e29
Child:
78:0cbbac7f2016
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RomIterator.cpp	Mon May 16 10:36:30 2016 -0500
@@ -0,0 +1,55 @@
+#include "RomIterator.h"
+
+using namespace OneWire;
+
+bool ForwardSearchRomIterator::lastDevice() const
+{
+    return searchState.last_device_flag;
+}
+
+OneWireMaster::CmdResult ForwardSearchRomIterator::selectFirstDevice()
+{
+    return master().OWFirst(searchState);
+}
+
+OneWireMaster::CmdResult ForwardSearchRomIterator::selectNextDevice()
+{
+    return master().OWNext(searchState);
+}
+
+OneWireMaster::CmdResult ForwardSearchRomIterator::reselectCurrentDevice()
+{
+    return master().OWResume();
+}
+
+OneWireMaster::CmdResult ForwardSearchRomIterator::selectFirstDeviceInFamily(uint8_t familyCode)
+{
+    searchState.findFamily(familyCode);
+    return master().OWNext(searchState);
+}
+
+OneWireMaster::CmdResult ForwardSearchRomIterator::selectNextFamilyDevice()
+{
+    searchState.skipCurrentFamily();
+    return master().OWNext(searchState);
+}
+
+OneWireMaster::CmdResult SingledropRomIterator::selectDevice(const RomId & romId)
+{
+    return selectDevice();
+}
+
+OneWireMaster::CmdResult MultidropRomIterator::selectDevice(const RomId & romId)
+{
+    OneWireMaster::CmdResult result;
+    if (romId == lastRom)
+    {
+        result = master().OWResume();
+    }
+    else
+    {
+        result = master().OWMatchRom(romId);
+        lastRom = romId;
+    }
+    return result;
+}