Class OneWireContainer33


  • public class OneWireContainer33
    extends OneWireContainer

    1-Wire® container for the '1K-Bit protected 1-Wire EEPROM with SHA-1 Engine' family type 33 (hex), Maxim Integrated Products part number: DS1961S,DS2432.

    Features

    • 1128 bits of 5V EEPROM memory partitioned into four pages of 256 bits, a 64-bit write-only secret and up to 5 general purpose read/write registers.
    • On-chip 512-bit SHA-1 engine to compute 160-bit Message Authentication Codes (MAC) and to generate secrets.
    • Write access requires knowledge of the secret and the capability of computing and transmitting a 160-bit MAC as authorization.
    • Secret and data memory can be write-protected (all or page 0 only) or put in EPROM-emulation mode ("write to 0", page0)
    • unique, fatory-lasered and tested 64-bit registration number (8-bit family code + 48-bit serial number + 8-bit CRC tester) assures absolute traceability because no two parts are alike.
    • Built-in multidrop controller ensures compatibility with other 1-Wire net products.
    • Reduces control, address, data and power to a single data pin.
    • Directly connects to a single port pin of a microprocessor and communicates at up to 16.3k bits per second.
    • Overdrive mode boosts communication speed to 142k bits per second.
    • 8-bit family code specifies DS2432 communication requirements to reader.
    • Presence detector acknowledges when reader first applies voltage.
    • Low cost 6-lead TSOC surface mount package, or solder-bumped chip scale package.
    • Reads and writes over a wide voltage range of 2.8V to 5.25V from -40C to +85C.

    The memory can also be accessed through the objects that are returned from the getMemoryBanks method.

    The following is a list of the MemoryBank instances that are returned:
    • Page Zero with write protection
      • Implements MemoryBank, PagedMemoryBank
      • Size 32 starting at physical address 0
      • Features Read/Write general-purpose non-volatile
      • Page 1 page of length 32 bytes giving 29 bytes Packet data payload
      • Page Features page-device-CRC and write protection.
    • Page One with EPROM mode and write protection
      • Implements MemoryBank, PagedMemoryBank
      • Size 32 starting at physical address 32
      • Features Read/Write general-purpose non-volatile
      • Page 1 page of length 32 bytes giving 29 bytes Packet data payload
      • Page Features page-device-CRC, EPROM mode and write protection.
    • Page Two and Three with write protection
      • Implements MemoryBank, PagedMemoryBank
      • Size 64 starting at physical address 64
      • Features Read/Write general-purpose non-volatile
      • Pages 2 pages of length 32 bytes giving 29 bytes Packet data payload
      • Page Features page-device-CRC and write protection.
    • Status Page that contains the secret and the status.
      • Implements MemoryBank, PagedMemoryBank
      • Size 24 starting at physical address 128
      • Page Features Contains secret and status for the iButton.

    Example 1

    Display some features of isMACValid where owd is an instanceof OneWireContainer33 and bank is an instanceof PagedMemoryBank:
      
      byte[] read_buf  = new byte [bank.getPageLength()];
      byte[] extra_buf = new byte [bank.getExtraInfoLength()];
      byte[] challenge = new byte [8];
    
      // read a page (use the most verbose and secure method)
      if (bank.hasPageAutoCRC())
      {
         System.out.println("Using device generated CRC");
    
         if (bank.hasExtraInfo())
         {
            bank.readPageCRC(pg, false, read_buf, 0, extra_buf);
    
            owd.getChallenge(challenge,0);
            owd.getContainerSecret(secret, 0);
            sernum = owd.getAddress();
            macvalid = owd.isMACValid(bank.getStartPhysicalAddress()+pg*bank.getPageLength(),
                                      sernum,read_buf,extra_buf,challenge,secret);
         }
         else
            bank.readPageCRC(pg, false, read_buf, 0);
      }
      else
      {
         if (bank.hasExtraInfo())
            bank.readPage(pg, false, read_buf, 0, extra_buf);
         else
            bank.readPage(pg, false, read_buf, 0);
      }
     
     

    DataSheet

    http://pdfserv.maxim-ic.com/arpdf/DS2432.pdf
    See Also:
    SHAiButtonUser33
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected boolean container_check
      Flag to indicate if the status has been checked.
      protected static byte[] ffBlock
      block of 0xFF's used for faster read pre-fill of 1-Wire blocks
      protected boolean secretProtected
      Flag to indicate if the secret is write protected.
      protected boolean secretSet
      Flag to indicate if the secret has been set.
      protected boolean setAdapter
      Flag to indicate if the adapter has been specified.
      protected static byte[] zeroBlock
      block of 0xFF's used for faster erase of blocks
    • Constructor Summary

      Constructors 
      Constructor Description
      OneWireContainer33()
      Default Constructor OneWireContainer33.
      OneWireContainer33​(DSPortAdapter sourceAdapter, byte[] newAddress)
      Create a container with a provided adapter object and the address of the iButton or 1-Wire device.
      OneWireContainer33​(DSPortAdapter sourceAdapter, long newAddress)
      Create a container with a provided adapter object and the address of the iButton or 1-Wire device.
      OneWireContainer33​(DSPortAdapter sourceAdapter, java.lang.String newAddress)
      Create a container with a provided adapter object and the address of the iButton or 1-Wire device.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected boolean adapterSet()
      Tells whether an adapter has been set.
      boolean bindSecretToiButton​(int pageNum, byte[] bindData)
      Binds an installed secret to a DS1961S/DS2432 by using well-known binding data and the DS1961S/DS2432's unique address.
      protected boolean checkStatus()
      To check the status of the part.
      void computeNextSecret​(int pageNum)
      Compute Next Secret using the current contents of data page and scratchpad.
      void computeNextSecret​(int pageNum, byte[] partialsecret, int offset)
      Compute Next Secret
      boolean copyScratchpad​(int targetPage, int targetPageOffset)
      Copy all 8 bytes of the Sratch Pad to a certain page and offset in memory.
      boolean copyScratchpad​(int targetPage, int targetPageOffset, byte[] copy_auth, int authStart)
      Copy all 8 bytes of the Sratch Pad to a certain page and offset in memory.
      java.lang.String getAlternateNames()
      Retrieve the alternate Maxim Integrated Products part numbers or names.
      void getChallenge​(byte[] get, int offset)
      Get the challenge of this device as an array of bytes.
      void getContainerSecret​(byte[] secretBuf, int offset)
      Get the secret of this device as an array of bytes.
      java.lang.String getDescription()
      Retrieve a short description of the function of the iButton type.
      int getMaxSpeed()
      Returns the maximum speed this iButton can communicate at.
      MemoryBankSHAEE getMemoryBankForPage​(int page)
      Returns the instance of the memory bank for a particular page
      java.util.Enumeration<MemoryBank> getMemoryBanks()
      Get an enumeration of memory bank instances that implement one or more of the following interfaces: MemoryBank, PagedMemoryBank, and OTPMemoryBank.
      java.lang.String getName()
      Retrieve the Maxim Integrated Products part number of the iButton as a string.
      MemoryBankScratchSHAEE getScratchpadMemoryBank()
      Returns the instance of the Scratchpad memory bank.
      MemoryBankSHAEE getStatusPageMemoryBank()
      Returns the instance of the Status page memory bank.
      boolean installMasterSecret​(int page, byte[] newSecret)
      Installs a secret on a DS1961S/DS2432.
      boolean isContainerSecretSet()
      Get the current status of the secret.
      static boolean isMACValid​(int addr, byte[] SerNum, byte[] memory, byte[] mac, byte[] challenge, byte[] secret)
      Authenticates page data given a MAC.
      boolean isPageOneEPROMmode()
      Tells if page one is in EPROM mode.
      boolean isSecretWriteProtected()
      Get the status of the secret, if it is write protected.
      boolean isWriteProtectAllSet()
      Get the status of all the pages, if they are write protected.
      boolean isWriteProtectPageZeroSet()
      Get the status of page zero, if it is write protected.
      boolean loadFirstSecret​(byte[] data, int offset)
      Load First Secret
      boolean readAuthenticatedPage​(int page, byte[] pagedata, int offset, byte[] computed_mac, int macStart)
      Reads and authenticates a page.
      boolean readMemoryPage​(int page, byte[] pageData, int offset)
      Reads a page of memory..
      void readScratchpad​(byte[] scratchpad, int offset, byte[] extraInfo)
      Read from the Scratch Pad, which is a max of 8 bytes.
      boolean refreshPage​(int page)
      Refreshes all 32 bytes of data on a given page.
      boolean refreshPage​(int page, int offset)
      Refreshes a particular 8-byte set of data on a given page.
      void setChallenge​(byte[] challengeset, int offset)
      Sets the challenge for the Read Authenticate Page
      void setContainerSecret​(byte[] newSecret, int offset)
      Sets the bus master secret for this DS2432.
      void setEPROMModePageOne()
      Sets the EPROM mode for page 1.
      void setupContainer​(DSPortAdapter sourceAdapter, byte[] newAddress)
      Provide this container the adapter object used to access this device and provide the address of this iButton or 1-Wire device.
      void setupContainer​(DSPortAdapter sourceAdapter, long newAddress)
      Provide this container the adapter object used to access this device and provide the address of this iButton or 1-Wire device.
      void setupContainer​(DSPortAdapter sourceAdapter, java.lang.String newAddress)
      Provide this container the adapter object used to access this device and provide the address of this iButton or 1-Wire device.
      boolean writeDataPage​(int targetPage, byte[] pageData)
      Writes a data page to the DS1961S/DS2432.
      boolean writeDataPage​(int targetPage, byte[] pageData, int offset)
      Writes a data page to the DS1961S/DS2432.
      void writeProtectAll()
      Write protect pages 0 to 3
      void writeProtectPageZero()
      Write protect page zero only.
      void writeProtectSecret()
      Write protects the secret for the DS2432.
      boolean writeScratchpad​(int targetPage, int targetPageOffset, byte[] inputbuffer, int start, int length)
      Writes data to the scratchpad.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • secretSet

        protected boolean secretSet
        Flag to indicate if the secret has been set.
      • secretProtected

        protected boolean secretProtected
        Flag to indicate if the secret is write protected.
      • setAdapter

        protected boolean setAdapter
        Flag to indicate if the adapter has been specified.
      • container_check

        protected boolean container_check
        Flag to indicate if the status has been checked.
      • ffBlock

        protected static final byte[] ffBlock
        block of 0xFF's used for faster read pre-fill of 1-Wire blocks
      • zeroBlock

        protected static final byte[] zeroBlock
        block of 0xFF's used for faster erase of blocks
    • Constructor Detail

      • OneWireContainer33

        public OneWireContainer33()
        Default Constructor OneWireContainer33. Must call setupContainer before using.
      • OneWireContainer33

        public OneWireContainer33​(DSPortAdapter sourceAdapter,
                                  byte[] newAddress)
        Create a container with a provided adapter object and the address of the iButton or 1-Wire device.
        Parameters:
        sourceAdapter - adapter object required to communicate with this iButton.
        newAddress - address of this 1-Wire device
      • OneWireContainer33

        public OneWireContainer33​(DSPortAdapter sourceAdapter,
                                  long newAddress)
        Create a container with a provided adapter object and the address of the iButton or 1-Wire device.
        Parameters:
        sourceAdapter - adapter object required to communicate with this iButton.
        newAddress - address of this 1-Wire device
      • OneWireContainer33

        public OneWireContainer33​(DSPortAdapter sourceAdapter,
                                  java.lang.String newAddress)
        Create a container with a provided adapter object and the address of the iButton or 1-Wire device.
        Parameters:
        sourceAdapter - adapter object required to communicate with this iButton.
        newAddress - address of this 1-Wire device
    • Method Detail

      • adapterSet

        protected boolean adapterSet()
        Tells whether an adapter has been set.
        Returns:
        boolean telling weather an adapter has been set.
      • setupContainer

        public void setupContainer​(DSPortAdapter sourceAdapter,
                                   byte[] newAddress)
        Provide this container the adapter object used to access this device and provide the address of this iButton or 1-Wire device.
        Overrides:
        setupContainer in class OneWireContainer
        Parameters:
        sourceAdapter - adapter object required to communicate with this iButton.
        newAddress - address of this 1-Wire device
        See Also:
        Address
      • setupContainer

        public void setupContainer​(DSPortAdapter sourceAdapter,
                                   long newAddress)
        Provide this container the adapter object used to access this device and provide the address of this iButton or 1-Wire device.
        Overrides:
        setupContainer in class OneWireContainer
        Parameters:
        sourceAdapter - adapter object required to communicate with this iButton.
        newAddress - address of this 1-Wire device
        See Also:
        Address
      • setupContainer

        public void setupContainer​(DSPortAdapter sourceAdapter,
                                   java.lang.String newAddress)
        Provide this container the adapter object used to access this device and provide the address of this iButton or 1-Wire device.
        Overrides:
        setupContainer in class OneWireContainer
        Parameters:
        sourceAdapter - adapter object required to communicate with this iButton.
        newAddress - address of this 1-Wire device
        See Also:
        Address
      • getName

        public java.lang.String getName()
        Retrieve the Maxim Integrated Products part number of the iButton as a string. For example 'DS1992'.
        Overrides:
        getName in class OneWireContainer
        Returns:
        string representation of the iButton name.
      • getAlternateNames

        public java.lang.String getAlternateNames()
        Retrieve the alternate Maxim Integrated Products part numbers or names. A 'family' of MicroLAN devices may have more than one part number depending on packaging.
        Overrides:
        getAlternateNames in class OneWireContainer
        Returns:
        the alternate names for this iButton or 1-Wire device
      • getDescription

        public java.lang.String getDescription()
        Retrieve a short description of the function of the iButton type.
        Overrides:
        getDescription in class OneWireContainer
        Returns:
        string representation of the function description.
      • getScratchpadMemoryBank

        public MemoryBankScratchSHAEE getScratchpadMemoryBank()
        Returns the instance of the Scratchpad memory bank. Contains methods for reading/writing the Scratchpad contents. Also, methods for Load First Secret, Compute Next Secret, and Refresh Scratchpad
        Returns:
        the instance of the Scratchpad memory bank
      • getStatusPageMemoryBank

        public MemoryBankSHAEE getStatusPageMemoryBank()
        Returns the instance of the Status page memory bank.
        Returns:
        the instance of the Status page memory bank
      • getMemoryBankForPage

        public MemoryBankSHAEE getMemoryBankForPage​(int page)
        Returns the instance of the memory bank for a particular page
        Parameters:
        page - the page for the requested memory bank;
        Returns:
        the instance of the memory bank for the specified page
      • setContainerSecret

        public void setContainerSecret​(byte[] newSecret,
                                       int offset)
        Sets the bus master secret for this DS2432.
        Parameters:
        newSecret - Secret for this DS2432.
        offset - index into array to copy the secret from
      • getContainerSecret

        public void getContainerSecret​(byte[] secretBuf,
                                       int offset)
        Get the secret of this device as an array of bytes.
        Parameters:
        secretBuf - array of bytes for holding the container secret
        offset - index into array to copy the secret to
      • setChallenge

        public void setChallenge​(byte[] challengeset,
                                 int offset)
        Sets the challenge for the Read Authenticate Page
        Parameters:
        challengeset - Challenge for all the memory banks.
      • getChallenge

        public void getChallenge​(byte[] get,
                                 int offset)
        Get the challenge of this device as an array of bytes.
        Parameters:
        get - array of bytes containing the iButton challenge
      • computeNextSecret

        public void computeNextSecret​(int pageNum,
                                      byte[] partialsecret,
                                      int offset)
                               throws OneWireIOException,
                                      OneWireException
        Compute Next Secret
        Parameters:
        addr - address of page to use for the next secret computation.
        parialsecret - the data to put into the scrathpad in computing next secret.
        Throws:
        OneWireIOException
        OneWireException
      • refreshPage

        public boolean refreshPage​(int page,
                                   int offset)
                            throws OneWireException,
                                   OneWireIOException
        Refreshes a particular 8-byte set of data on a given page. This will correct any weakly-programmed EEPROM bits. This feature is only available on the DS1961S, but is safely ignored on the DS2432. The refresh consists of a Refresh Scratchpad command followed by a Load First Secret to the same offset.
        Parameters:
        page - the page number that contains the 8-bytes to refresh.
        offset - the offset into the page for the 8-bytes to refresh.
        Returns:
        true if refresh is successful.
        Throws:
        OneWireException
        OneWireIOException
      • refreshPage

        public boolean refreshPage​(int page)
                            throws OneWireException,
                                   OneWireIOException
        Refreshes all 32 bytes of data on a given page. This will correct any weakly-programmed EEPROM bits. This feature is only available on the DS1961S, but is safely ignored on the DS2432. The refresh consists of a Refresh Scratchpad command followed by a Load First Secret to the same offset, for all 8-byte offsets on the page.
        Parameters:
        page - the page number that will be refreshed.
        Returns:
        true if refresh is successful.
        Throws:
        OneWireException
        OneWireIOException
      • isMACValid

        public static boolean isMACValid​(int addr,
                                         byte[] SerNum,
                                         byte[] memory,
                                         byte[] mac,
                                         byte[] challenge,
                                         byte[] secret)
        Authenticates page data given a MAC.
        Parameters:
        addr - address of the data to be read
        memory - the memory read from the page
        mac - the MAC calculated for this function given back as the extra info
        challenge - the 3 bytes written to the scratch pad used in calculating the mac
      • installMasterSecret

        public boolean installMasterSecret​(int page,
                                           byte[] newSecret)
                                    throws OneWireIOException,
                                           OneWireException

        Installs a secret on a DS1961S/DS2432. The secret is written in partial phrases of 47 bytes (32 bytes to a memory page, 8 bytes to the scratchpad, 7 bytes are discarded (but included for compatibility with DS193S)) and is cumulative until the entire secret is processed.

        On TINI, this method will be slightly faster if the secret's length is divisible by 47. However, since secret key generation is a part of initialization, it is probably not necessary.

        Parameters:
        page - the page number used to write the partial secrets to
        secret - the entire secret, in partial phrases, to be installed
        Returns:
        true if successful
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from a 1-Wire device. This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'.
        OneWireException - on a communication or setup error with the 1-Wire adapter
        See Also:
        bindSecretToiButton(int,byte[])
      • bindSecretToiButton

        public boolean bindSecretToiButton​(int pageNum,
                                           byte[] bindData)
                                    throws OneWireIOException,
                                           OneWireException

        Binds an installed secret to a DS1961S/DS2432 by using well-known binding data and the DS1961S/DS2432's unique address. This makes the secret unique for this iButton.

        Parameters:
        page - the page number that has the master secret already installed
        bind_data - 32 bytes of binding data used to bind the iButton to the system
        Returns:
        true if successful
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from a 1-Wire device. This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'.
        OneWireException - on a communication or setup error with the 1-Wire adapter
        See Also:
        installMasterSecret(int,byte[])
      • writeDataPage

        public boolean writeDataPage​(int targetPage,
                                     byte[] pageData)
                              throws OneWireIOException,
                                     OneWireException

        Writes a data page to the DS1961S/DS2432.

        Parameters:
        page_number - page number to write
        page_data - page data to write (must be at least 32 bytes long)
        Returns:
        true if successful, false if the operation failed
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from a 1-Wire device. This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'.
        OneWireException - on a communication or setup error with the 1-Wire adapter
      • writeDataPage

        public boolean writeDataPage​(int targetPage,
                                     byte[] pageData,
                                     int offset)
                              throws OneWireIOException,
                                     OneWireException

        Writes a data page to the DS1961S/DS2432.

        Parameters:
        page_number - page number to write
        page_data - page data to write (must be at least 32 bytes long)
        offset - the offset to start copying the 32-bytes of page data.
        Returns:
        true if successful, false if the operation failed
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from a 1-Wire device. This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'.
        OneWireException - on a communication or setup error with the 1-Wire adapter
      • writeScratchpad

        public boolean writeScratchpad​(int targetPage,
                                       int targetPageOffset,
                                       byte[] inputbuffer,
                                       int start,
                                       int length)
                                throws OneWireIOException,
                                       OneWireException

        Writes data to the scratchpad. In order to write to a data page using this method, next call readScratchPad(), and then copyScratchPad(). Note that the addresses passed to this method will be the addresses the data is copied to if the copyScratchPad() method is called afterward.

        Also note that if too many bytes are written, this method will truncate the data so that only a valid number of bytes will be sent.

        Parameters:
        targetPage - the page number this data will eventually be copied to
        targetPageOffset - the offset on the page to copy this data to
        inputbuffer - the data that will be copied into the scratchpad
        start - offset into the input buffer for the data to write
        length - number of bytes to write
        Returns:
        true if successful, false on a CRC error
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from a 1-Wire device. This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'.
        OneWireException - on a communication or setup error with the 1-Wire adapter
      • readScratchpad

        public void readScratchpad​(byte[] scratchpad,
                                   int offset,
                                   byte[] extraInfo)
                            throws OneWireIOException,
                                   OneWireException
        Read from the Scratch Pad, which is a max of 8 bytes.
        Parameters:
        scratchpad - byte array to place read data into length of array is always pageLength.
        offset - offset into readBuf to pug data
        extraInfo - byte array to put extra info read into (TA1, TA2, e/s byte) Can be 'null' if extra info is not needed.
        Throws:
        OneWireIOException
        OneWireException
      • copyScratchpad

        public boolean copyScratchpad​(int targetPage,
                                      int targetPageOffset,
                                      byte[] copy_auth,
                                      int authStart)
                               throws OneWireIOException,
                                      OneWireException
        Copy all 8 bytes of the Sratch Pad to a certain page and offset in memory.
        Parameters:
        targetPage - the page to copy the data to
        targetPageOffset - the offset into the page to copy to
        copy_auth - byte[] containing write authorization
        authStart - the offset into the copy_auth array where the authorization begins.
        Throws:
        OneWireIOException
        OneWireException
      • copyScratchpad

        public boolean copyScratchpad​(int targetPage,
                                      int targetPageOffset)
                               throws OneWireIOException,
                                      OneWireException
        Copy all 8 bytes of the Sratch Pad to a certain page and offset in memory. The container secret must be set so that the container can produce the correct MAC.
        Parameters:
        targetPage - the page to copy the data to
        targetPageOffset - the offset into the page to copy to
        Throws:
        OneWireIOException
        OneWireException
      • readMemoryPage

        public boolean readMemoryPage​(int page,
                                      byte[] pageData,
                                      int offset)
                               throws OneWireIOException,
                                      OneWireException
        Reads a page of memory..
        Parameters:
        page - page number to read packet from
        pageData - byte array to place read data into
        offset - offset into readBuf to place data
        Throws:
        OneWireIOException
        OneWireException
      • readAuthenticatedPage

        public boolean readAuthenticatedPage​(int page,
                                             byte[] pagedata,
                                             int offset,
                                             byte[] computed_mac,
                                             int macStart)
                                      throws OneWireIOException,
                                             OneWireException

        Reads and authenticates a page. See readMemoryPage() for a description of page numbers and their contents. This method will also generate a signature for the selected page, used in the authentication of roving (User) iButtons.

        Parameters:
        pageNum - page number to read and authenticate
        pagedata - array for the page data.
        offset - offset to copy into the array
        computed_mac - array for the MAC returned by the device.
        macStart - offset to copy into the mac array
        Returns:
        true if successful, false if the operation failed while waiting for the DS1963S's output to alternate
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from a 1-Wire device. This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'.
        OneWireException - on a communication or setup error with the 1-Wire adapter