Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

Revision:
142:85b71cfd617e
Parent:
139:f0e0a7976846
--- a/RomId/RomCommands.cpp	Fri Feb 17 21:54:14 2017 +0000
+++ b/RomId/RomCommands.cpp	Tue Aug 13 14:42:37 2019 +0000
@@ -46,7 +46,8 @@
             SkipRomCmd = 0xCC,
             ResumeCmd = 0xA5,
             OverdriveSkipRomCmd = 0x3C,
-            OverdriveMatchRomCmd = 0x69
+            OverdriveMatchRomCmd = 0x69,
+            AlarmSearchCmd = 0xEC
         };
         
         void SearchState::reset()
@@ -239,6 +240,27 @@
 
         OneWireMaster::CmdResult OWSearch(OneWireMaster & master, SearchState & searchState)
         {
+            return OWSearchAll(master, searchState, false);
+        }
+        
+        OneWireMaster::CmdResult OWAlarmSearch(OneWireMaster & master, SearchState & searchState)
+        {
+            return OWSearchAll(master, searchState, true);
+        }
+        
+        OneWireMaster::CmdResult OWFirstAlarm(OneWireMaster & master, SearchState & searchState)
+        {
+            searchState.reset();
+            return OWAlarmSearch(master, searchState);
+        }
+        
+        OneWireMaster::CmdResult OWNextAlarm(OneWireMaster & master, SearchState & searchState)
+        {
+            return OWAlarmSearch(master, searchState);
+        }
+
+        OneWireMaster::CmdResult OWSearchAll(OneWireMaster & master, SearchState & searchState, bool alarmSearch)
+        {
             uint8_t id_bit_number;
             uint8_t last_zero, rom_byte_number;
             uint8_t id_bit, cmp_id_bit;
@@ -267,7 +289,12 @@
                 }
 
                 // issue the search command 
-                master.OWWriteByte(SearchRomCmd);
+                if(alarmSearch){
+                    master.OWWriteByte(AlarmSearchCmd);
+                }
+                else{
+                    master.OWWriteByte(SearchRomCmd);
+                }
 
                 // loop to do the search
                 do