Extended MaximInterface

Dependents:   mbed_DS28EC20_GPIO

Revision:
6:a8c83a2e6fa4
Parent:
0:f77ad7f72d04
--- a/Devices/DS2413.cpp	Fri Jan 19 10:25:02 2018 -0600
+++ b/Devices/DS2413.cpp	Wed Jan 23 13:11:04 2019 -0600
@@ -40,10 +40,7 @@
   uint_least8_t val;
   const error_code result = pioAccessRead(val);
   if (!result) {
-    status.pioAInputState = (val & 0x1) == 0x1;
-    status.pioAOutputState = (val & 0x2) == 0x2;
-    status.pioBInputState = (val & 0x4) == 0x4;
-    status.pioBOutputState = (val & 0x8) == 0x8;
+    status = val;
   }
   return result;
 }
@@ -77,7 +74,7 @@
   error_code result = selectRom(*master);
   if (!result) {
     uint_least8_t block[] = {0x5A, val, static_cast<uint_least8_t>(val ^ 0xFF)};
-    result = master->writeBlock(block, sizeof(block) / sizeof(block[0]));
+    result = master->writeBlock(block);
     if (!result) {
       result = master->readByte(block[0]);
       if (!result && block[0] != 0xAA) {
@@ -97,10 +94,8 @@
       switch (condition) {
       case CommunicationError:
         return "Communication Error";
-
-      default:
-        return defaultErrorMessage(condition);
       }
+      return defaultErrorMessage(condition);
     }
   } instance;
   return instance;
@@ -109,8 +104,9 @@
 error_code writePioAOutputState(DS2413 & ds2413, bool pioAState) {
   DS2413::Status status;
   error_code result = ds2413.readStatus(status);
-  if (!result && pioAState != status.pioAOutputState) {
-    result = ds2413.writeOutputState(pioAState, status.pioBOutputState);
+  if (!result && pioAState != status[DS2413::PioAOutputState]) {
+    result =
+        ds2413.writeOutputState(pioAState, status[DS2413::PioBOutputState]);
   }
   return result;
 }
@@ -118,8 +114,9 @@
 error_code writePioBOutputState(DS2413 & ds2413, bool pioBState) {
   DS2413::Status status;
   error_code result = ds2413.readStatus(status);
-  if (!result && pioBState != status.pioBOutputState) {
-    result = ds2413.writeOutputState(status.pioAOutputState, pioBState);
+  if (!result && pioBState != status[DS2413::PioBOutputState]) {
+    result =
+        ds2413.writeOutputState(status[DS2413::PioAOutputState], pioBState);
   }
   return result;
 }