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: MAXREFDES131_Qt_Demo MAX32630FTHR_iButton_uSD_Logger MAX32630FTHR_DS18B20_uSD_Logger MAXREFDES130_131_Demo ... more
Revision 142:85b71cfd617e, committed 2019-08-13
- Comitter:
 - mfruge
 - Date:
 - Tue Aug 13 14:42:37 2019 +0000
 - Parent:
 - 141:cf38f48a2a49
 - Commit message:
 - Added functions to ROMCommands to add Alarm Search functionality
 
Changed in this revision
| RomId/RomCommands.cpp | Show annotated file Show diff for this revision Revisions of this file | 
| RomId/RomCommands.h | Show annotated file Show diff for this revision Revisions of this file | 
--- 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
--- a/RomId/RomCommands.h	Fri Feb 17 21:54:14 2017 +0000
+++ b/RomId/RomCommands.h	Tue Aug 13 14:42:37 2019 +0000
@@ -112,6 +112,24 @@
         ///          Begin with a new search state and continue using the same search state until the last
         ///          device flag is set which indicates that all devices have been discovered.
         OneWireMaster::CmdResult OWSearch(OneWireMaster & master, SearchState & searchState);
+        
+        /// Find Alarming Devices on 1-Wire bus.
+        /// @details This command uses the Alarm Search ROM command to enumerate all 1-Wire devices with active alarms
+        ///          Begin with a new search state and continue using the same search state until the last
+        ///          device flag is set which indicates that all devices have been discovered.          
+        OneWireMaster::CmdResult OWAlarmSearch(OneWireMaster & master, SearchState & searchState);
+        
+        /// Find the first Alarming device on the 1-Wire bus.
+        /// @details This command resets the SearchState and uses the Alarm Search command to enumerate the first actively alarming device on the bus, in numerical order by ROM ID.
+        OneWireMaster::CmdResult OWFirstAlarm(OneWireMaster & master, SearchState & searchState);
+        
+        /// Find the next Alarming Device on the 1-Wire bus.
+        /// @details This command  uses the Alarm Search command to enumerate the next actively alarming device on the bus, which is determined by the current searchState.
+        OneWireMaster::CmdResult OWNextAlarm(OneWireMaster & master, SearchState & searchState);
+        
+        /// Helper function for the above search functions
+        OneWireMaster::CmdResult OWSearchAll(OneWireMaster & master, SearchState & searchState, bool alarmSearch);
+
     }
 }