Class OneWireContainer42

java.lang.Object
com.dalsemi.onewire.container.OneWireContainer
com.dalsemi.onewire.container.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 invalid input: '&#177' @endhtmlonly 0.5 C accuracy from -10 C to +85 C
  • @htmlonly invalid input: '&#177' @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:
  • Field Details

    • WRITE_SCRATCHPAD_COMMAND

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

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

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

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

      public static final byte RECALL_E2MEMORY_COMMAND
      DS28EA00 recalls E-squared memory command
      See Also:
    • 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:
    • RESOLUTION_12_BIT

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

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

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

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

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

      public static final byte PIO_ACCESS_WRITE
      PIO Access read command
      See Also:
  • Constructor Details

  • Method Details

    • getMemoryBanks

      public Enumeration<MemoryBank> getMemoryBanks()
      Gets an enumeration of memory bank instances that implement one or more of the following interfaces: MemoryBank, PagedMemoryBank, and OTPMemoryBank.
      Overrides:
      getMemoryBanks in class OneWireContainer
      Returns:
      Enumeration of memory banks
      See Also:
    • getName

      public 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 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 String getDescription()
      Retrieves a short description of the function of this device OneWireContainer42 type.
      Overrides:
      getDescription in class OneWireContainer
      Returns:
      OneWireContainer42 functional description
    • getMaxSpeed

      public int getMaxSpeed()
      Returns the maximum speed this iButton or 1-Wire device can communicate at.
      Overrides:
      getMaxSpeed in class OneWireContainer
      Returns:
      maximum speed
      See Also:
    • hasTemperatureAlarms

      public boolean hasTemperatureAlarms()
      Checks to see if this temperature measuring device has high/low trip alarms.
      Specified by:
      hasTemperatureAlarms in interface TemperatureContainer
      Returns:
      true if this OneWireContainer42 has high/low trip alarms
      See Also:
    • hasSelectableTemperatureResolution

      public boolean hasSelectableTemperatureResolution()
      Checks to see if this device has selectable temperature resolution.
      Specified by:
      hasSelectableTemperatureResolution in interface TemperatureContainer
      Returns:
      true if this OneWireContainer42 has selectable temperature resolution
      See Also:
    • getTemperatureResolutions

      public double[] getTemperatureResolutions()
      Gets an array of available temperature resolutions in Celsius.
      Specified by:
      getTemperatureResolutions in interface TemperatureContainer
      Returns:
      byte array of available temperature resolutions in Celsius for this OneWireContainer42. The minimum resolution is returned as the first element and maximum resolution as the last element.
      See Also:
    • getTemperatureAlarmResolution

      public double getTemperatureAlarmResolution()
      Gets the temperature alarm resolution in Celsius.
      Specified by:
      getTemperatureAlarmResolution in interface TemperatureContainer
      Returns:
      temperature alarm resolution in Celsius for this OneWireContainer42
      See Also:
    • getMaxTemperature

      public double getMaxTemperature()
      Gets the maximum temperature in Celsius.
      Specified by:
      getMaxTemperature in interface TemperatureContainer
      Returns:
      maximum temperature in Celsius for this OneWireContainer42
      See Also:
    • getMinTemperature

      public double getMinTemperature()
      Gets the minimum temperature in Celsius.
      Specified by:
      getMinTemperature in interface TemperatureContainer
      Returns:
      minimum temperature in Celsius for this OneWireContainer42
      See Also:
    • 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

      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:
    • 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:
    • getTemperatureResolution

      public double getTemperatureResolution(byte[] state)
      Gets the current temperature resolution in Celsius from the state data retrieved from the readDevice() method.
      Specified by:
      getTemperatureResolution in interface TemperatureContainer
      Parameters:
      state - byte array with device state information
      Returns:
      temperature resolution in Celsius for this OneWireContainer42
      See Also:
    • setTemperatureAlarm

      public void setTemperatureAlarm(int alarmType, double alarmValue, byte[] state) throws OneWireException, OneWireIOException
      Sets the temperature alarm value in Celsius in the provided state data. Use the method writeDevice() with this data to finalize the change to the device.
      Specified by:
      setTemperatureAlarm in interface TemperatureContainer
      Parameters:
      alarmType - valid value: ALARM_HIGH or ALARM_LOW
      alarmValue - alarm trip value in Celsius
      state - byte array with device state information
      Throws:
      OneWireException - Device does not support temperature alarms
      OneWireIOException
      See Also:
    • setTemperatureResolution

      public void setTemperatureResolution(double resolution, byte[] state) throws OneWireException
      Sets the current temperature resolution in Celsius in the provided state data. Use the method writeDevice() with this data to finalize the change to the device.
      Specified by:
      setTemperatureResolution in interface TemperatureContainer
      Parameters:
      resolution - temperature resolution in Celsius. Valid values are RESOLUTION_9_BIT, RESOLUTION_10_BIT, RESOLUTION_11_BIT and RESOLUTION_12_BIT.
      state - byte array with device state information
      Throws:
      OneWireException - Device does not support selectable temperature resolution
      See Also:
    • 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

      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:
    • 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
      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
    • 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:
    • 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:
    • hasActivitySensing

      public boolean hasActivitySensing()
      Checks if the channels of this switch support activity sensing. If this method returns true then the method getSensedActivity(int,byte[]) can be used.
      Specified by:
      hasActivitySensing in interface SwitchContainer
      Returns:
      true if channels support activity sensing
      See Also:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • clearActivity

      public void clearActivity() throws OneWireException
      This method does nothing for the DS28EA00 (not needed). Clears the activity latches the next time possible. For example, on a DS2406/07, this happens the next time the status is read with readDevice().
      Specified by:
      clearActivity in interface SwitchContainer
      Throws:
      OneWireException - if this device does not support activity sensing
      See Also:
    • 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:
    • 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:
    • 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