Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

Revision:
77:529edb329ee0
Parent:
76:84e6c4994e29
Child:
78:0cbbac7f2016
diff -r 84e6c4994e29 -r 529edb329ee0 Bridge/DS28E17/DS28E17.cpp
--- a/Bridge/DS28E17/DS28E17.cpp	Sat May 14 14:27:56 2016 -0500
+++ b/Bridge/DS28E17/DS28E17.cpp	Mon May 16 10:36:30 2016 -0500
@@ -32,11 +32,9 @@
 
 #include "DS28E17.h"
 #include "Masters/OneWireMaster.h"
-#include "RomCommands.h"
 
 using OneWire::DS28E17;
 using OneWire::OneWireMaster;
-using namespace OneWire::RomCommands;
 
 
 enum Command
@@ -58,8 +56,8 @@
 
 
 //*********************************************************************
-DS28E17::DS28E17(OneWireMaster &owm)
-    : OneWireSlave(&owm)
+DS28E17::DS28E17(RandomAccessRomIterator &selector)
+    : OneWireSlave(selector)
 {
 
 }
@@ -75,7 +73,7 @@
     size_t send_cnt = 0;
     uint8_t send_block[0xff];
 
-    OneWireMaster::CmdResult ow_result = OWMatchRom(*p_owMaster, romId);
+    OneWireMaster::CmdResult ow_result = selectDevice();
 
     if (ow_result == OneWireMaster::Success)
     {
@@ -126,7 +124,7 @@
     size_t send_cnt = 0;
     uint8_t send_block[0xff];
 
-    OneWireMaster::CmdResult ow_result = OWMatchRom(*p_owMaster, romId);
+    OneWireMaster::CmdResult ow_result = selectDevice();
 
     if (ow_result == OneWireMaster::Success)
     {
@@ -174,7 +172,7 @@
     size_t send_cnt = 0;
     uint8_t send_block[0xff];
 
-    OneWireMaster::CmdResult ow_result = OWMatchRom(*p_owMaster, romId);
+    OneWireMaster::CmdResult ow_result = selectDevice();
 
     if (ow_result == OneWireMaster::Success)
     {
@@ -220,7 +218,7 @@
     size_t send_cnt = 0;
     uint8_t send_block[0xff];
 
-    OneWireMaster::CmdResult ow_result = OWMatchRom(*p_owMaster, romId);
+    OneWireMaster::CmdResult ow_result = selectDevice();
 
     if (ow_result == OneWireMaster::Success)
     {
@@ -269,7 +267,7 @@
     size_t idx = 0;
     uint8_t send_block[0xff];
 
-    OneWireMaster::CmdResult ow_result = OWMatchRom(*p_owMaster, romId);
+    OneWireMaster::CmdResult ow_result = selectDevice();
 
     if (ow_result == OneWireMaster::Success)
     {
@@ -310,7 +308,7 @@
         bridge_result = send_packet(send_block, send_cnt, status, wr_status);
         if (bridge_result == DS28E17::Success)
         {
-            ow_result = p_owMaster->OWReadBlock(read_data, nu_bytes_read);
+            ow_result = master().OWReadBlock(read_data, nu_bytes_read);
             if (ow_result == OneWireMaster::Success)
             {
                 bridge_result = DS28E17::Success;
@@ -335,7 +333,7 @@
     size_t send_cnt = 0;
     uint8_t send_block[0xff];
 
-    OneWireMaster::CmdResult ow_result = OWMatchRom(*p_owMaster, romId);
+    OneWireMaster::CmdResult ow_result = selectDevice();
 
     if (ow_result == OneWireMaster::Success)
     {
@@ -365,7 +363,7 @@
         bridge_result = send_packet(send_block, send_cnt, status);
         if (bridge_result == DS28E17::Success)
         {
-            ow_result = p_owMaster->OWReadBlock(read_data, nu_bytes_read);
+            ow_result = master().OWReadBlock(read_data, nu_bytes_read);
             if (ow_result == OneWireMaster::Success)
             {
                 bridge_result = DS28E17::Success;
@@ -386,14 +384,14 @@
 {
     DS28E17::CmdResult bridge_result = DS28E17::OperationFailure;
 
-    OneWireMaster::CmdResult ow_result = OWMatchRom(*p_owMaster, romId);
+    OneWireMaster::CmdResult ow_result = selectDevice();
 
     if (ow_result == OneWireMaster::Success)
     {
         // Send CMD and Data
         uint8_t send_block[] = { WriteConfigurationCmd, data };
 
-        ow_result = p_owMaster->OWWriteBlock(send_block, 2);
+        ow_result = master().OWWriteBlock(send_block, 2);
         if (ow_result == OneWireMaster::Success)
         {
             _i2c_speed = data & 0x03; // Save off _i2c_speed setting to be used by other functions
@@ -414,15 +412,15 @@
 {
     DS28E17::CmdResult bridge_result = DS28E17::OperationFailure;
 
-    OneWireMaster::CmdResult ow_result = OWMatchRom(*p_owMaster, romId);
+    OneWireMaster::CmdResult ow_result = selectDevice();
 
     if (ow_result == OneWireMaster::Success)
     {
         // Send CMD and receive Data
-        ow_result = p_owMaster->OWWriteByte(ReadConfigurationCmd);
+        ow_result = master().OWWriteByte(ReadConfigurationCmd);
         if (ow_result == OneWireMaster::Success)
         {
-            ow_result = p_owMaster->OWReadByte(config);
+            ow_result = master().OWReadByte(config);
             if (ow_result == OneWireMaster::Success)
             {
                 bridge_result = DS28E17::Success;
@@ -447,12 +445,12 @@
 {
     DS28E17::CmdResult bridge_result = DS28E17::OperationFailure;
 
-    OneWireMaster::CmdResult ow_result = OWMatchRom(*p_owMaster, romId);
+    OneWireMaster::CmdResult ow_result = selectDevice();
 
     if (ow_result == OneWireMaster::Success)
     {
         // Send CMD
-        ow_result = p_owMaster->OWWriteByte(EnableSleepModeCmd);
+        ow_result = master().OWWriteByte(EnableSleepModeCmd);
         if (ow_result == OneWireMaster::Success)
         {
             bridge_result = DS28E17::Success;
@@ -472,15 +470,15 @@
 {
     DS28E17::CmdResult bridge_result = DS28E17::OperationFailure;
 
-    OneWireMaster::CmdResult ow_result = OWMatchRom(*p_owMaster, romId);
+    OneWireMaster::CmdResult ow_result = selectDevice();
 
     if (ow_result == OneWireMaster::Success)
     {
         // Send CMD and receive Data
-        ow_result = p_owMaster->OWWriteByte(ReadDeviceRevisionCmd);
+        ow_result = master().OWWriteByte(ReadDeviceRevisionCmd);
         if (ow_result == OneWireMaster::Success)
         {
-            ow_result = p_owMaster->OWReadByte(rev);
+            ow_result = master().OWReadByte(rev);
             if (ow_result == OneWireMaster::Success)
             {
                 bridge_result = DS28E17::Success;
@@ -527,7 +525,7 @@
     DS28E17::CmdResult bridge_result = DS28E17::CommsWriteBlockError;
     uint32_t poll_count = 0;
 
-    OneWireMaster::CmdResult ow_result = p_owMaster->OWWriteBlock(data, data_length);
+    OneWireMaster::CmdResult ow_result = master().OWWriteBlock(data, data_length);
 
     if (ow_result == OneWireMaster::Success)
     {
@@ -535,7 +533,7 @@
         uint8_t recvbit = 0x01;
         do
         {
-            ow_result = p_owMaster->OWReadBit(recvbit);
+            ow_result = master().OWReadBit(recvbit);
         } while (recvbit && (poll_count++ < pollLimit) && (ow_result == OneWireMaster::Success));
 
         if (ow_result == OneWireMaster::Success)
@@ -545,7 +543,7 @@
                 //Read Status and write status
                 uint8_t read_block[2];
 
-                ow_result = p_owMaster->OWReadBlock(read_block, 2);
+                ow_result = master().OWReadBlock(read_block, 2);
 
                 if (ow_result == OneWireMaster::Success)
                 {
@@ -580,7 +578,7 @@
     DS28E17::CmdResult bridge_result = DS28E17::CommsWriteBlockError;
     uint32_t poll_count = 0;
 
-    OneWireMaster::CmdResult ow_result = p_owMaster->OWWriteBlock(data, data_length);
+    OneWireMaster::CmdResult ow_result = master().OWWriteBlock(data, data_length);
 
     if (ow_result == OneWireMaster::Success)
     {
@@ -588,7 +586,7 @@
         uint8_t recvbit = 0x01;
         do
         {
-            ow_result = p_owMaster->OWReadBit(recvbit);
+            ow_result = master().OWReadBit(recvbit);
         } while (recvbit && (poll_count++ < pollLimit) && (ow_result == OneWireMaster::Success));
 
         if (ow_result == OneWireMaster::Success)
@@ -596,7 +594,7 @@
             if (poll_count < pollLimit)
             {
                 //Read Status 
-                ow_result = p_owMaster->OWReadByte(status);
+                ow_result = master().OWReadByte(status);
                 if (ow_result == OneWireMaster::Success)
                 {
                     bridge_result = DS28E17::Success;