Class OneWireContainer42

  • All Implemented Interfaces:
    OneWireSensor, SwitchContainer, TemperatureContainer

    public class OneWireContainer42
    extends OneWireContainer
    implements TemperatureContainer, SwitchContainer

    1-Wire® container for a 1-Wire programmable resolution digital thermometer with "sequence detect" and PIO, the DS28EA00. This container encapsulates the functionality of the iButton family type 42 (hex)

    Features

    • Standard and Overdrive 1-Wire speed
    • Improved 1-Wire interface with hysteresis and glitch filter
    • Two general-purpose IO pins
    • Chain function sharing the IO pins to detect physical sequence of devices in network
    • Can be powered from data line. Power supply range is 3.0V to 5.5V
    • Measures temperatures from -40 C to +85 C
    • @htmlonly ± @endhtmlonly 0.5 C accuracy from -10 C to +85 C
    • @htmlonly ± @endhtmlonly 2 C accuracy from -40 C to +85 C
    • Thermometer resolution is user-selectable from 9 to 12 bits
    • Converts temperature to 12-bit digital word in 750ms (max.)
    • User-definable nonvolatile (NV) alarm threshold settings/user bytes
    • Alarm search command to quickly identify devices whose temperature is outside of programmed limits
    • Software-compatible and pin-compatible with the DS28EA00

    Usage

    See the temperature usage example in TemperatureContainer for temperature specific operations.
    See the switch usage example in SwitchContainer for switch specific operations.

    DataSheet

    http://www.maxim-ic.com/DS28EA00
    See Also:
    TemperatureContainer
    • Field Detail

      • WRITE_SCRATCHPAD_COMMAND

        public static final byte WRITE_SCRATCHPAD_COMMAND
        DS28EA00 writes data to scratchpad command
        See Also:
        Constant Field Values
      • READ_SCRATCHPAD_COMMAND

        public static final byte READ_SCRATCHPAD_COMMAND
        DS28EA00 reads data from scratchpad command
        See Also:
        Constant Field Values
      • COPY_SCRATCHPAD_COMMAND

        public static final byte COPY_SCRATCHPAD_COMMAND
        DS28EA00 copies data from scratchpad to E-squared memory command
        See Also:
        Constant Field Values
      • CONVERT_TEMPERATURE_COMMAND

        public static final byte CONVERT_TEMPERATURE_COMMAND
        DS28EA00 converts temperature command
        See Also:
        Constant Field Values
      • RECALL_E2MEMORY_COMMAND

        public static final byte RECALL_E2MEMORY_COMMAND
        DS28EA00 recalls E-squared memory command
        See Also:
        Constant Field Values
      • READ_POWER_SUPPLY_COMMAND

        public static final byte READ_POWER_SUPPLY_COMMAND
        DS28EA00 read power supply command. This command is used to determine if external power is supplied.
        See Also:
        Constant Field Values
      • RESOLUTION_12_BIT

        public static final byte RESOLUTION_12_BIT
        DS28EA00 12-bit resolution constant for CONFIG byte
        See Also:
        Constant Field Values
      • RESOLUTION_11_BIT

        public static final byte RESOLUTION_11_BIT
        DS28EA00 11-bit resolution constant for CONFIG byte
        See Also:
        Constant Field Values
      • RESOLUTION_10_BIT

        public static final byte RESOLUTION_10_BIT
        DS28EA00 10-bit resolution constant for CONFIG byte
        See Also:
        Constant Field Values
      • RESOLUTION_9_BIT

        public static final byte RESOLUTION_9_BIT
        DS28EA00 9-bit resolution constant for CONFIG byte
        See Also:
        Constant Field Values
      • PIO_ACCESS_READ

        public static final byte PIO_ACCESS_READ
        PIO Access read command
        See Also:
        Constant Field Values
      • PIO_ACCESS_WRITE

        public static final byte PIO_ACCESS_WRITE
        PIO Access read command
        See Also:
        Constant Field Values
    • Method Detail

      • getName

        public java.lang.String getName()
        Retrieves the Maxim Integrated Products part number of this OneWireContainer42 as a String. For example 'DS28EA00'.
        Overrides:
        getName in class OneWireContainer
        Returns:
        this OneWireContainer42 name
      • getAlternateNames

        public java.lang.String getAlternateNames()
        Retrieves the alternate Maxim Integrated Products part numbers or names. A 'family' of 1-Wire Network devices may have more than one part number depending on packaging. There can also be nicknames such as 'Crypto iButton'.
        Overrides:
        getAlternateNames in class OneWireContainer
        Returns:
        this OneWireContainer42 alternate names
      • getDescription

        public java.lang.String getDescription()
        Retrieves a short description of the function of this device OneWireContainer42 type.
        Overrides:
        getDescription in class OneWireContainer
        Returns:
        OneWireContainer42 functional description
      • doTemperatureConvert

        public void doTemperatureConvert​(byte[] state)
                                  throws OneWireIOException,
                                         OneWireException
        Performs a temperature conversion on state information.
        Specified by:
        doTemperatureConvert in interface TemperatureContainer
        Parameters:
        state - byte array with device state information
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer42. 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:
        getTemperature(byte[])
      • getTemperature

        public double getTemperature​(byte[] state)
                              throws OneWireIOException
        Gets the temperature value in Celsius from the state data retrieved from the readDevice() method.
        Specified by:
        getTemperature in interface TemperatureContainer
        Parameters:
        state - byte array with device state information for this OneWireContainer42
        Returns:
        temperature in Celsius from the last doTemperatureConvert()
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer42. 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'.
        See Also:
        doTemperatureConvert(byte[])
      • getTemperatureAlarm

        public double getTemperatureAlarm​(int alarmType,
                                          byte[] state)
        Gets the specified temperature alarm value in Celsius from the state data retrieved from the readDevice() method.
        Specified by:
        getTemperatureAlarm in interface TemperatureContainer
        Parameters:
        alarmType - valid value: ALARM_HIGH or ALARM_LOW
        state - byte array with device state information
        Returns:
        temperature alarm trip values in Celsius for this OneWireContainer42
        See Also:
        hasTemperatureAlarms(), setTemperatureAlarm(int, double, byte[])
      • readDevice

        public byte[] readDevice()
                          throws OneWireIOException,
                                 OneWireException
        Retrieves this OneWireContainer42 state information. The state information is returned as a byte array. Pass this byte array to the 'get' and 'set' methods. If the device state needs to be changed, then call the writeDevice() to finalize the changes.
        Specified by:
        readDevice in interface OneWireSensor
        Returns:
        OneWireContainer42 state information. Device state looks like this:
           0 : temperature LSB
           1 : temperature MSB
           2 : trip high
           3 : trip low
           4 : configuration register (for resolution)
           5 : reserved
           6 : reserved
           7 : reserved
           8 : an 8 bit CRC of the previous 8 bytes
           9 : PIO Status bit assignment to write (this is a "don't care" for a read)
           10: PIO Status bit assignment to read
         
         PIO Status Bit Assignment from PIO Access Write [A5H]:
           b7-b2 = all ones      
           b1=PIOB Pin State     
           b0=PIOA Pin State   
         
         PIO Status Bit Assignment from PIO Access Read [F5H]:
           b7-b4 = Complement of b3 to b0     
           b3= PIOB Output Latch State   
           b2=PIOB Pin State     
           b1=PIOA Output Latch State   
           b0= PIOA Pin State
         
                 
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer42. 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:
        writeDevice(byte[])
      • writeDevice

        public void writeDevice​(byte[] state)
                         throws OneWireIOException,
                                OneWireException
        Writes to this OneWireContainer42 state information that have been changed by 'set' methods. Only the device's "changed" state information is written to the part. This is done by referencing a field information appended to the state data.
        Specified by:
        writeDevice in interface OneWireSensor
        Parameters:
        state - byte array with device state information from a previous readDevice()
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer42. 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:
        readDevice()
      • readScratchpad

        public byte[] readScratchpad()
                              throws OneWireIOException,
                                     OneWireException
        Reads the Scratchpad of the DS28EA00.
        Returns:
        9-byte buffer representing the scratchpad
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer42. 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 void writeScratchpad​(byte[] data)
                             throws OneWireIOException,
                                    OneWireException
        Writes to the Scratchpad of the DS28EA00.
        Parameters:
        data - data to be written to the scratchpad. First byte of data must be the temperature High Trip Point, the second byte must be the temperature Low Trip Point, and the third must be the Resolution (configuration register).
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer42. 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
        java.lang.IllegalArgumentException - when data is of invalid length
      • copyScratchpad

        public void copyScratchpad()
                            throws OneWireIOException,
                                   OneWireException
        Copies the Scratchpad to the E-squared memory of the DS28EA00.
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer42. 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
      • recallE2

        public byte[] recallE2()
                        throws OneWireIOException,
                               OneWireException
        Recalls the DS28EA00 temperature trigger values (ALARM_HIGH and ALARM_LOW) and the configuration register to the scratchpad and reads the scratchpad.
        Returns:
        byte array representing data in the device's scratchpad.
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer42. 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
      • isExternalPowerSupplied

        public boolean isExternalPowerSupplied()
                                        throws OneWireIOException,
                                               OneWireException
        Reads the way power is supplied to the DS28EA00.
        Returns:
        true for external power,
        false for parasite power
        Throws:
        OneWireIOException - on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer42. 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
      • convertToFahrenheit

        public float convertToFahrenheit​(float celsiusTemperature)
        Deprecated.
        Replace with call to com.dalsemi.onewire.utils.Convert.toFahrenheit()
        Converts a temperature reading from Celsius to Fahrenheit.
        Parameters:
        celsiusTemperature - temperature value in Celsius
        Returns:
        the Fahrenheit conversion of the supplied temperature
        See Also:
        Convert.toFahrenheit(double)
      • getNumberChannels

        public int getNumberChannels​(byte[] state)
        Gets the number of channels supported by this switch. Channel specific methods will use a channel number specified by an integer from [0 to (getNumberChannels(byte[]) - 1)]. Note that all devices of the same family will not necessarily have the same number of channels.
        Specified by:
        getNumberChannels in interface SwitchContainer
        Parameters:
        state - current state of the device returned from readDevice()
        Returns:
        the number of channels for this device
        See Also:
        OneWireSensor.readDevice()
      • isHighSideSwitch

        public boolean isHighSideSwitch()
        Checks if the channels of this switch are 'high side' switches. This indicates that when 'on' or true, the switch output is connect to the 1-Wire data. If this method returns false then when the switch is 'on' or true, the switch is connected to ground.
        Specified by:
        isHighSideSwitch in interface SwitchContainer
        Returns:
        true if the switch is a 'high side' switch, false if the switch is a 'low side' switch
        See Also:
        getLatchState(int,byte[])
      • hasLevelSensing

        public boolean hasLevelSensing()
        Checks if the channels of this switch support level sensing. If this method returns true then the method getLevel(int,byte[]) can be used.
        Specified by:
        hasLevelSensing in interface SwitchContainer
        Returns:
        true if channels support level sensing
        See Also:
        getLevel(int,byte[])
      • hasSmartOn

        public boolean hasSmartOn()
        Checks if the channels of this switch support 'smart on'. Smart on is the ability to turn on a channel such that only 1-Wire device on this channel are awake and ready to do an operation. This greatly reduces the time to discover the device down a branch. If this method returns true then the method setLatchState(int,boolean,boolean,byte[]) can be used with the doSmart parameter true.
        Specified by:
        hasSmartOn in interface SwitchContainer
        Returns:
        true if channels support 'smart on'
        See Also:
        setLatchState(int,boolean,boolean,byte[])
      • onlySingleChannelOn

        public boolean onlySingleChannelOn()
        Checks if the channels of this switch require that only one channel is on at any one time. If this method returns true then the method setLatchState(int,boolean,boolean,byte[]) will not only affect the state of the given channel but may affect the state of the other channels as well to insure that only one channel is on at a time.
        Specified by:
        onlySingleChannelOn in interface SwitchContainer
        Returns:
        true if only one channel can be on at a time.
        See Also:
        setLatchState(int,boolean,boolean,byte[])
      • getLevel

        public boolean getLevel​(int channel,
                                byte[] state)
        Checks the sensed level on the indicated channel. To avoid an exception, verify that this switch has level sensing with the hasLevelSensing(). Level sensing means that the device can sense the logic level on its PIO pin.
        Specified by:
        getLevel in interface SwitchContainer
        Parameters:
        channel - channel to execute this operation, in the range [0 to (getNumberChannels(byte[]) - 1)]
        state - current state of the device returned from readDevice()
        Returns:
        true if level sensed is 'high' and false if level sensed is 'low'
        See Also:
        OneWireSensor.readDevice(), hasLevelSensing()
      • getLatchState

        public boolean getLatchState​(int channel,
                                     byte[] state)
        Checks the latch state of the indicated channel.
        Specified by:
        getLatchState in interface SwitchContainer
        Parameters:
        channel - channel to execute this operation, in the range [0 to (getNumberChannels(byte[]) - 1)]
        state - current state of the device returned from readDevice()
        Returns:
        true if channel latch is 'on' or conducting and false if channel latch is 'off' and not conducting. Note that the actual output when the latch is 'on' is returned from the isHighSideSwitch() method.
        See Also:
        OneWireSensor.readDevice(), isHighSideSwitch(), setLatchState(int,boolean,boolean,byte[])
      • getSensedActivity

        public boolean getSensedActivity​(int channel,
                                         byte[] state)
                                  throws OneWireException
        This method always returns false for the DS28EA00 (no activity sensing). Checks if the indicated channel has experienced activity. This occurs when the level on the PIO pins changes. To clear the activity that is reported, call clearActivity(). To avoid an exception, verify that this device supports activity sensing by calling the method hasActivitySensing().
        Specified by:
        getSensedActivity in interface SwitchContainer
        Parameters:
        channel - channel to execute this operation, in the range [0 to (getNumberChannels(byte[]) - 1)]
        state - current state of the device returned from readDevice()
        Returns:
        true if activity was detected and false if no activity was detected
        Throws:
        OneWireException - if this device does not have activity sensing
        See Also:
        hasActivitySensing(), clearActivity()
      • setLatchState

        public void setLatchState​(int channel,
                                  boolean latchState,
                                  boolean doSmart,
                                  byte[] state)
        Sets the latch state of the indicated channel. The method writeDevice() must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call to writeDevice().
        Specified by:
        setLatchState in interface SwitchContainer
        Parameters:
        channel - channel to execute this operation, in the range [0 to (getNumberChannels(byte[]) - 1)]
        latchState - true to set the channel latch 'on' (conducting) and false to set the channel latch 'off' (not conducting). Note that the actual output when the latch is 'on' is returned from the isHighSideSwitch() method.
        doSmart - If latchState is 'on'/true then doSmart indicates if a 'smart on' is to be done. To avoid an exception check the capabilities of this device using the hasSmartOn() method.
        state - current state of the device returned from readDevice()
        See Also:
        hasSmartOn(), getLatchState(int,byte[]), OneWireSensor.writeDevice(byte[])
      • setLatchState

        public void setLatchState​(byte set,
                                  byte[] state)
        Sets the latch state for all of the channels. The method writeDevice() must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call to writeDevice().
        Parameters:
        set - the state to set all of the channels, in the range [0 to (getNumberChannels(byte[]) - 1)]
        state - current state of the device returned from readDevice()
        See Also:
        getLatchState(int,byte[]), OneWireSensor.writeDevice(byte[])
      • readRegister

        public byte[] readRegister()
                            throws OneWireIOException,
                                   OneWireException
        This method does nothing for the DS28EA00.
        Returns:
        1-Wire device register mask
        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
      • writeRegister

        public void writeRegister​(byte[] register)
                           throws OneWireIOException,
                                  OneWireException
        This method does nothing for the DS28EA00.
        Parameters:
        register - 1-Wire device sensor state
        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