Library to communicate with Maxim OneWire protocol devices Modified timings and IRQ overrides

Dependents:   RdGasUseMonitor

Fork of Onewire by Simon Barker

Revision:
1:8e9464e05ddf
Parent:
0:d961f715d82b
Child:
4:b678c7c8203c
--- a/Onewire.h	Sun Jun 23 15:17:39 2013 +0000
+++ b/Onewire.h	Sat Feb 21 17:16:16 2015 +0000
@@ -6,15 +6,31 @@
 class Onewire{
 
 public:
-  Onewire(PinName oneBus);
-  void writeBit(int bit);
+    Onewire(PinName oneBus);
+    void writeBit(int bit);
     int readBit();
     int init();
     int readByte();
     void writeByte(char data);
     unsigned char CRC(unsigned char* addr, unsigned char len);
 
+    // Clear the search state so that if will start from the beginning again.
+    void reset_search();
+    // Look for the next device. Returns 1 if a new address has been
+    // returned. A zero might mean that the bus is shorted, there are
+    // no devices, or you have already retrieved all of them.  It
+    // might be a good idea to check the CRC to make sure you didn't
+    // get garbage.  The order is deterministic. You will always get
+    // the same devices in the same order.
+    uint8_t search(uint8_t *newAddr);    
+    
 private:
-  DigitalInOut oneBus_;
+    DigitalInOut oneBus_;
+  
+    // search state
+    unsigned char _search_ROM_NO[8];
+    uint8_t _search_LastDiscrepancy;
+    uint8_t _search_LastFamilyDiscrepancy;
+    uint8_t _search_LastDeviceFlag;
 };
 #endif
\ No newline at end of file