1-Wire® library for mbed. Complete 1-Wire library that supports our silicon masters along with a bit-bang master on the MAX32600MBED platform with one common interface for mbed. Slave support has also been included and more slaves will be added as time permits.

Dependents:   MAXREFDES131_Qt_Demo MAX32630FTHR_iButton_uSD_Logger MAX32630FTHR_DS18B20_uSD_Logger MAXREFDES130_131_Demo ... more

Superseded by MaximInterface.

Revision:
91:e80108bc870a
Parent:
84:708b7be59fb2
Child:
104:3f48daed532b
--- a/Masters/DS248x/DS248x.cpp	Fri Jun 17 15:24:37 2016 -0500
+++ b/Masters/DS248x/DS248x.cpp	Mon Jun 20 19:39:21 2016 +0000
@@ -88,21 +88,13 @@
     setAPU(true);
 }
 
-DS248x::DS248x(mbed::I2C & i2c_bus, uint8_t adrs)
-    :m_p_i2c_bus(&i2c_bus), m_adrs(adrs), m_i2c_owner(false)
+
+DS248x::DS248x(mbed::I2C & i2c_bus, uint8_t adrs):
+m_i2c_bus(i2c_bus), m_adrs(adrs)
 {
-
 }
 
 
-DS248x::~DS248x()
-{
-    if (m_i2c_owner)
-    {
-        delete m_p_i2c_bus;
-    }
-}
-
 OneWireMaster::CmdResult DS248x::OWInitMaster(void)
 {
     OneWireMaster::CmdResult result;
@@ -153,99 +145,6 @@
     return result;
 }
 
-OneWireMaster::CmdResult DS248x::selectChannel(uint8_t channel)
-{
-    OneWireMaster::CmdResult result;
-    uint8_t ch, ch_read;
-
-    // Channel Select (Case A)
-    //   S AD,0 [A] CHSL [A] CC [A] Sr AD,1 [A] [RR] A\ P
-    //  [] indicates from slave
-    //  CC channel value
-    //  RR channel read back
-
-    switch (channel)
-    {
-    default:
-    case 0:
-        ch = 0xF0;
-        ch_read = 0xB8;
-        break;
-    case 1:
-        ch = 0xE1;
-        ch_read = 0xB1;
-        break;
-    case 2:
-        ch = 0xD2;
-        ch_read = 0xAA;
-        break;
-    case 3:
-        ch = 0xC3;
-        ch_read = 0xA3;
-        break;
-    case 4:
-        ch = 0xB4;
-        ch_read = 0x9C;
-        break;
-    case 5:
-        ch = 0xA5;
-        ch_read = 0x95;
-        break;
-    case 6:
-        ch = 0x96;
-        ch_read = 0x8E;
-        break;
-    case 7:
-        ch = 0x87;
-        ch_read = 0x87;
-        break;
-    };
-
-    result = sendCommand(ChannelSelectCmd, ch);
-    if (result == OneWireMaster::Success)
-    {
-        result = readRegister(ChannelSelectReg, ch, true);
-        if (result == OneWireMaster::Success)
-        {
-            // check for failure due to incorrect read back of channel
-            if (ch != ch_read)
-            {
-                result = OneWireMaster::OperationFailure;
-            }
-        }
-    }
-
-    return result;
-}
-
-OneWireMaster::CmdResult DS248x::adjustOwPort(OwAdjustParam param, uint8_t val)
-{
-    OneWireMaster::CmdResult result;
-
-    uint8_t read_port_config;
-    uint8_t control_byte;
-
-    control_byte = (((param & 0x0F) << 4) | (val & 0x0F));
-
-    result = sendCommand(AdjustOwPortCmd, control_byte);
-    if (result != Success)
-    {
-        return result;
-    }
-
-    result = readRegister(PortConfigReg, read_port_config, true);
-    if (result != Success)
-    {
-        return result;
-    }
-
-    if ((control_byte & 0x0F) != read_port_config)
-    {
-        result = OneWireMaster::OperationFailure;
-    }
-
-    return result;
-}
 
 OneWireMaster::CmdResult DS248x::OWTriplet(SearchDirection & searchDirection, uint8_t & sbr, uint8_t & tsb)
 {
@@ -465,7 +364,7 @@
     result = sendCommand(SetReadPointerCmd, reg);
     if (result == Success)
     {
-        if (m_p_i2c_bus->read(m_adrs, reinterpret_cast<char *>(&buf), 1) != I2C_READ_OK)
+        if (m_i2c_bus.read(m_adrs, reinterpret_cast<char *>(&buf), 1) != I2C_READ_OK)
         {
             result = CommunicationReadError;
         }
@@ -520,7 +419,7 @@
 OneWireMaster::CmdResult DS248x::sendCommand(Command cmd) const
 {
     CmdResult result;
-    if (m_p_i2c_bus->write(m_adrs, reinterpret_cast<const char *>(&cmd), 1) == I2C_WRITE_OK)
+    if (m_i2c_bus.write(m_adrs, reinterpret_cast<const char *>(&cmd), 1) == I2C_WRITE_OK)
     {
         result = Success;
     }
@@ -535,7 +434,7 @@
 {
     CmdResult result;
     uint8_t buf[2] = { cmd, param };
-    if (m_p_i2c_bus->write(m_adrs, reinterpret_cast<const char *>(buf), 2) == I2C_WRITE_OK)
+    if (m_i2c_bus.write(m_adrs, reinterpret_cast<const char *>(buf), 2) == I2C_WRITE_OK)
     {
         result = Success;
     }