Implementation of 1-Wire with added Alarm Search Functionality

Dependents:   Max32630_One_Wire_Interface

Revision:
32:bce180b544ed
Parent:
27:d5aaefa252f1
Child:
33:a4c015046956
diff -r 7c684e49fa8f -r bce180b544ed OneWire_Masters/DS2465/DS2465.hpp
--- a/OneWire_Masters/DS2465/DS2465.hpp	Tue Mar 29 16:36:12 2016 -0500
+++ b/OneWire_Masters/DS2465/DS2465.hpp	Wed Mar 30 16:50:29 2016 -0500
@@ -11,12 +11,7 @@
 
 class DS2465 : public OneWireMaster, public ISha256MacCoprocessor
 {
-public:  
-  enum Direction
-  {
-    DIRECTION_WRITE_ZERO = 0,
-    DIRECTION_WRITE_ONE = 1
-  };
+public:
   
   enum PageRegion
   {
@@ -44,6 +39,17 @@
     ADDR_USER_MEM_PAGE_1 = 0xA0
   };
   
+  struct Config
+  {    
+    bool c1WS, cSPU, cPDN, cAPU;
+    
+    std::uint8_t readByte() const;
+    std::uint8_t writeByte() const;
+    
+    void reset();
+    Config() { reset(); }
+  };
+  
   DS2465(mbed::I2C & I2C_interface, std::uint8_t I2C_address);
   
   // Const member functions should not change the settings of the DS2465 or affect the state of the 1-Wire bus.
@@ -52,6 +58,8 @@
   //Misc. Functions
   OneWireMaster::CmdResult Detect(void);
   OneWireMaster::CmdResult Reset(void);                                      // Resets DS2465 (NOTE: This is NOT a 1-Wire Reset)
+  OneWireMaster::CmdResult WriteConfig(const Config & config);
+  Config CurrentConfig() const;
 
   // DS2465 Memory Commands
   OneWireMaster::CmdResult ReadMemory(std::uint8_t addr, std::uint8_t * buf, std::size_t bufLen, bool skip_set_pointer = false) const;
@@ -62,20 +70,16 @@
   // 1-Wire Master Commands
   virtual OneWireMaster::CmdResult OWInitMaster(void);
   virtual OneWireMaster::CmdResult OWReset(void);                                   // Issues a 1-Wire Reset Pulse
-  virtual OneWireMaster::CmdResult OWTouchBit(std::uint8_t & sendrecvbit, OW_LEVEL after_level);
-  virtual OneWireMaster::CmdResult OWReadByte(std::uint8_t & recvbyte, OW_LEVEL after_level);
-  virtual OneWireMaster::CmdResult OWWriteByte(std::uint8_t sendbyte, OW_LEVEL after_level);
+  virtual OneWireMaster::CmdResult OWTouchBit(std::uint8_t & sendrecvbit, OWLevel after_level);
+  virtual OneWireMaster::CmdResult OWReadByte(std::uint8_t & recvbyte, OWLevel after_level);
+  virtual OneWireMaster::CmdResult OWWriteByte(std::uint8_t sendbyte, OWLevel after_level);
   virtual OneWireMaster::CmdResult OWReadBlock(std::uint8_t *rx_buf, std::uint8_t rx_len);
   virtual OneWireMaster::CmdResult OWWriteBlock(const std::uint8_t *tran_buf, std::uint8_t tran_len);
   OneWireMaster::CmdResult OWWriteBlock(bool tx_mac, const std::uint8_t *tran_buf, std::uint8_t tran_len);
-  virtual OneWireMaster::CmdResult OWSpeed(OW_SPEED new_speed);
-  virtual OneWireMaster::CmdResult OWLevel(OW_LEVEL new_level);
-  virtual OneWireMaster::CmdResult OWSearch(RomId & romId);
+  virtual OneWireMaster::CmdResult OWSetSpeed(OWSpeed new_speed);
+  virtual OneWireMaster::CmdResult OWSetLevel(OWLevel new_level);
   
-  OneWireMaster::CmdResult ConfigurePowerDown(bool pdn_enable);
-  OneWireMaster::CmdResult ConfigureAPU(bool apu_enable);
-  OneWireMaster::CmdResult ConfigureSPU(bool spu_enable);
-  OneWireMaster::CmdResult Triplet(Direction search_direction, std::uint8_t & status);
+  virtual OneWireMaster::CmdResult OWTriplet(SearchDirection & search_direction, std::uint8_t & sbr, std::uint8_t & tsb);
   
   //DS2465 Coprocessor Commands
   OneWireMaster::CmdResult Compute_NextMasterSecret(bool swap, unsigned int pageNum, PageRegion region);
@@ -91,24 +95,14 @@
                                const std::uint8_t (&deviceScratchpad)[deviceScratchpad_len], const std::uint8_t (&SSecret_data)[SSecret_data_len]);
   
 private:
-  struct Config
-  {    
-    bool c1WS, cSPU, cPDN, cAPU;
-    
-    std::uint8_t readByte() const;
-    std::uint8_t writeByte() const;
-    
-    void reset();
-    Config() { reset(); }
-  };
   
   mbed::I2C & m_I2C_interface;
   std::uint8_t m_I2C_address;
   Config m_curConfig;
 
   OneWireMaster::CmdResult CWriteMemory(std::uint8_t addr, const std::uint8_t * buf, std::size_t bufLen) const;
-  OneWireMaster::CmdResult WriteConfig(const Config & config);
   OneWireMaster::CmdResult PollBusy(std::uint8_t * pStatus = NULL);
+  OneWireMaster::CmdResult ConfigureLevel(OWLevel level);
 };
 
 #endif