Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

Revision:
139:f0e0a7976846
Parent:
104:3f48daed532b
Child:
142:85b71cfd617e
--- a/RomId/RomCommands.cpp	Fri Dec 02 19:21:55 2016 +0000
+++ b/RomId/RomCommands.cpp	Tue Dec 13 13:31:30 2016 -0800
@@ -54,13 +54,13 @@
             last_discrepancy = 0;
             last_device_flag = false;
             last_family_discrepancy = 0;
-            romId.reset();
+            romId = RomId();
         }
 
         void SearchState::findFamily(uint8_t familyCode)
         {
             reset();
-            romId.setFamilyCode(familyCode);
+            romId.familyCode() = familyCode;
             last_discrepancy = 64;
         }
 
@@ -130,13 +130,13 @@
             // read the ROM
             if (result == OneWireMaster::Success)
             {
-                result = master.OWReadBlock(readId, RomId::byteLen);
+                result = master.OWReadBlock(readId.buffer.data(), readId.buffer.size());
             }
 
             // verify CRC8
             if (result == OneWireMaster::Success)
             {
-                if (readId.crc8Valid())
+                if (readId.valid())
                 {
                     romId = readId;
                 }
@@ -148,7 +148,7 @@
 
             return result;
         }
-          
+        
         OneWireMaster::CmdResult OWSkipRom(OneWireMaster & master)
         {
             OneWireMaster::CmdResult result;
@@ -161,26 +161,26 @@
 
             return result;
         }
-          
+        
         OneWireMaster::CmdResult OWMatchRom(OneWireMaster & master, const RomId & romId)
         {
             OneWireMaster::CmdResult result;
 
-            uint8_t buf[1 + RomId::byteLen];
+            uint8_t buf[1 + RomId::Buffer::csize];
 
             // use MatchROM
             result = master.OWReset();
             if (result == OneWireMaster::Success)
             {
                 buf[0] = MatchRomCmd;
-                std::memcpy(&buf[1], romId, RomId::byteLen);
+                std::memcpy(&buf[1], romId.buffer.data(), romId.buffer.size());
                 // send command and rom
-                result = master.OWWriteBlock(buf, 1 + RomId::byteLen);
+                result = master.OWWriteBlock(buf, 1 + romId.buffer.size());
             }
 
             return result;
         }
-          
+        
         OneWireMaster::CmdResult OWOverdriveSkipRom(OneWireMaster & master)
         {
             OneWireMaster::CmdResult result = master.OWSetSpeed(OneWireMaster::StandardSpeed);
@@ -218,12 +218,12 @@
                 {
                     master.OWSetSpeed(OneWireMaster::OverdriveSpeed);
                     // send ROM
-                    result = master.OWWriteBlock(romId, RomId::byteLen);
+                    result = master.OWWriteBlock(romId.buffer.data(), romId.buffer.size());
                 }
             }
             return result;
         }
-           
+        
         OneWireMaster::CmdResult OWResume(OneWireMaster & master)
         {
             OneWireMaster::CmdResult result;
@@ -276,7 +276,7 @@
                     // on a previous next then pick the same as last time
                     if (id_bit_number < searchState.last_discrepancy)
                     {
-                        if ((searchState.romId[rom_byte_number] & rom_byte_mask) > 0)
+                        if ((searchState.romId.buffer[rom_byte_number] & rom_byte_mask) > 0)
                         {
                             search_direction = OneWireMaster::WriteOne;
                         }
@@ -327,11 +327,11 @@
                         // with mask rom_byte_mask
                         if (search_direction == OneWireMaster::WriteOne)
                         {
-                            searchState.romId[rom_byte_number] |= rom_byte_mask;
+                            searchState.romId.buffer[rom_byte_number] |= rom_byte_mask;
                         }
                         else
                         {
-                            searchState.romId[rom_byte_number] &= (uint8_t)~rom_byte_mask;
+                            searchState.romId.buffer[rom_byte_number] &= (uint8_t)~rom_byte_mask;
                         }
 
                         // increment the byte counter id_bit_number
@@ -342,15 +342,15 @@
                         // if the mask is 0 then go to new SerialNum byte rom_byte_number and reset mask
                         if (rom_byte_mask == 0)
                         {
-                            crc8 = calculateCrc8(crc8, searchState.romId[rom_byte_number]);  // accumulate the CRC
+                            crc8 = calculateCrc8(crc8, searchState.romId.buffer[rom_byte_number]);  // accumulate the CRC
                             rom_byte_number++;
                             rom_byte_mask = 1;
                         }
                     }
-                } while (rom_byte_number < RomId::byteLen);  // loop until through all ROM bytes 0-7
+                } while (rom_byte_number < searchState.romId.buffer.size());  // loop until through all ROM bytes 0-7
 
                 // if the search was successful then
-                if (!((id_bit_number <= (RomId::byteLen * 8)) || (crc8 != 0)))
+                if (!((id_bit_number <= (searchState.romId.buffer.size() * 8)) || (crc8 != 0)))
                 {
                     // search successful so set m_last_discrepancy,m_last_device_flag,search_result
                     searchState.last_discrepancy = last_zero;