Dallas Semiconductor 1-Wire API 1.00 Alpha: Class OneWireContainer1F

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.dalsemi.onewire.container
Class OneWireContainer1F

    java.lang.Object
      |
      +--com.dalsemi.onewire.container.OneWireContainer
            |
            +--com.dalsemi.onewire.container.OneWireContainer1F

All Implemented Interfaces:
  OneWireSensor, SwitchContainer

public class OneWireContainer1F
extends OneWireContainer
implements SwitchContainer

1-Wire® container for 1-Wire(MicroLAN) Coupler, DS2409. This container encapsulates the functionality of the 1-Wire family type 1F (hex).

### Features

- Low impedance coupler to create large common-ground, multi-level MicroLAN networks
- Keeps inactive branches pulled high to 5V
- Simplifies network topology analysis by logically decoupling devices on active network segments
- Conditional search for fast event signaling
- Auxiliary 1-Wire TM line to connect a memory chip or to be used as digital input
- Programmable, general purpose open drain control output
- Operating temperature range from -40°C to +85°C
- Compact, low cost 6-pin TSOC surface mount package

Setting the latch on the DS2409 to 'on' (see `seLatchState`) connects the channel [Main(0) or Auxillary(1)] to the 1-Wire data line. Note that this is the opposite of the `DS2406` and `DS2405` which connect thier I/O lines to ground.

### Usage

  See the usage example in `SwitchContainer` for basic switch operations.

### DataSheet

  http://pdfserv.maxim-ic.com/arpdf/DS2409.pdf

Version:
  0.00, 13 Sept 2000
See Also:
  `OneWireSensor`, `SwitchContainer`, `OneWireContainer05`, `OneWireContainer12`

Field Summary
`static int` | `CHANNEL_AUX` Aux Channel number.
`static int` | `CHANNEL_MAIN` Main Channel number.

Constructor Summary
`OneWireContainer1F()` Create an empty container that is not complete until after a call to `setupContainer`.
`OneWireContainer1F(DSPortAdapter sourceAdapter, byte[] newAddress)` Create a container with the provided adapter instance and the address of the iButton or 1-Wire device.
`OneWireContainer1F(DSPortAdapter sourceAdapter, long newAddress)` Create a container with the provided adapter instance and the address of the iButton or 1-Wire device.
`OneWireContainer1F(DSPortAdapter sourceAdapter, String newAddress)` Create a container with the provided adapter instance and the address of the iButton or 1-Wire device.

Method Summary
`void` | `clearActivity()` Clears the activity latches the next time possible.
`void` | `dischargeLines(int time)` Force a power-on reset for parasitically powered 1-Wire devices connected to the main or auziliary output of the DS2409.
`String` | `getAlternateNames()` Gets the alternate Dallas Semiconductor part numbers or names.
`int` | `getControlChannelAssociation(byte[] state)` Checks the channel association of the control pin.
`int` | `getControlData(byte[] state)` Checks the control data value.
`String` | `getDescription()` Gets a short description of the function of this iButton or 1-Wire Device type.
`boolean` | `getLastSmartOnDeviceDetect()` Gets flag that indicates if a device was present when doing the last smart on.
`boolean` | `getLatchState(int channel, byte[] state)` Checks the latch state of the indicated channel.
`boolean` | `getLevel(int channel, byte[] state)` Checks the sensed level on the indicated channel.
`String` | `getName()` Gets the Dallas Semiconductor part number of the iButton or 1-Wire Device as a string.
`int` | `getNumberChannels(byte[] state)` Query to get the number of channels supported by this switch.
`boolean` | `getSensedActivity(int channel, byte[] state)` Checks if the indicated channel has experienced activity.
`boolean` | `hasActivitySensing()` Checks to see if the channels of this switch support activity sensing.
`boolean` | `hasLevelSensing()` Checks to see if the channels of this switch support level sensing.
`boolean` | `hasSmartOn()` Checks to see if the channels of this switch support 'smart on'.
`boolean` | `isHighSideSwitch()` Checks to see if the channels of this switch are 'high side' switches.
`boolean` | `isModeAuto(byte[] state)` Checks if the control I/O pin mode is automatic (see DS2409 data sheet).
`boolean` | `onlySingleChannelOn()` Checks to see if the channels of this switch require that only one channel is on at any one time.
`byte[]` | `readDevice()` Retrieves the 1-Wire device sensor state.
`void` | `setControlChannelAssociation(int channel, byte[] state)` Sets the control pin channel association.
`void` | `setControlData(boolean data, byte[] state)` Sets the control pin data to a value.
`void` | `setLatchState(int channel, boolean latchState, boolean doSmart, byte[] state)` Sets the latch state of the indicated channel.
`void` | `setModeAuto(boolean makeAuto, byte[] state)` Sets the control pin mode.
`void` | `setSpeedCheck(boolean doSpeedCheck)` Directs the container to avoid the calls to doSpeed() in methods that communicate with the Thermocron.
`void` | `writeDevice(byte[] state)` Writes the 1-Wire device sensor state that have been changed by 'set' methods.

Methods inherited from class com.dalsemi.onewire.container.OneWireContainer
`doSpeed, getAdapter, getAddress, getAddressAsLong, getAddressAsString, getMaxSpeed, getMemoryBanks, isAlarming, isPresent, setSpeed, setupContainer, setupContainer, setupContainer`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### CHANNEL_MAIN

    public static final int CHANNEL_MAIN

  Main Channel number.

### CHANNEL_AUX

    public static final int CHANNEL_AUX

  Aux Channel number.

Constructor Detail

### OneWireContainer1F

    public OneWireContainer1F()

  Create an empty container that is not complete until after a call to `setupContainer`.

  This is one of the methods to construct a container. The others are through creating a OneWireContainer with parameters.

  See Also:
    `super.setupContainer()`

### OneWireContainer1F

    public OneWireContainer1F(DSPortAdapter sourceAdapter,
                              byte[] newAddress)

  Create a container with the provided adapter instance and the address of the iButton or 1-Wire device.

  This is one of the methods to construct a container. The other is through creating a OneWireContainer with NO parameters.

  Parameters:
    `sourceAdapter` - adapter instance used to communicate with this iButton
    `newAddress` - `Address` of this 1-Wire device
  See Also:
    `OneWireContainer1F`, `utils.Address`

### OneWireContainer1F

    public OneWireContainer1F(DSPortAdapter sourceAdapter,
                              long newAddress)

  Create a container with the provided adapter instance and the address of the iButton or 1-Wire device.

  This is one of the methods to construct a container. The other is through creating a OneWireContainer with NO parameters.

  Parameters:
    `sourceAdapter` - adapter instance used to communicate with this 1-Wire device
    `newAddress` - `Address` of this 1-Wire device
  See Also:
    `OneWireContainer1F`, `utils.Address`

### OneWireContainer1F

    public OneWireContainer1F(DSPortAdapter sourceAdapter,
                              String newAddress)

  Create a container with the provided adapter instance and the address of the iButton or 1-Wire device.

  This is one of the methods to construct a container. The other is through creating a OneWireContainer with NO parameters.

  Parameters:
    `sourceAdapter` - adapter instance used to communicate with this 1-Wire device
    `newAddress` - `Address` of this 1-Wire device
  See Also:
    `OneWireContainer1F`, `utils.Address`

Method Detail

### getName

    public String getName()

  Gets the Dallas Semiconductor part number of the iButton or 1-Wire Device as a string. For example 'DS1992'.
  Overrides:
    `getName` in class `OneWireContainer`
  Returns:
    iButton or 1-Wire device name

### getAlternateNames

    public String getAlternateNames()

  Gets the alternate Dallas Semiconductor 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:
    1-Wire device alternate names

### getDescription

    public String getDescription()

  Gets a short description of the function of this iButton or 1-Wire Device type.
  Overrides:
    `getDescription` in class `OneWireContainer`
  Returns:
    device description

### setSpeedCheck

    public void setSpeedCheck(boolean doSpeedCheck)

  Directs the container to avoid the calls to doSpeed() in methods that communicate with the Thermocron. To ensure that all parts can talk to the 1-Wire bus at their desired speed, each method contains a call to `doSpeed()`. However, this is an expensive operation. If a user manages the bus speed in an application, call this method with `doSpeedCheck` as `false`. The default behavior is to call `doSpeed()`.
  Parameters:
    `doSpeedCheck` - `true` for `doSpeed()` to be called before every 1-Wire bus access, `false` to skip this expensive call
  See Also:
    `OneWireContainer.doSpeed()`

### readDevice

    public byte[] readDevice()
                      throws OneWireIOException,
                             OneWireException

  Retrieves the 1-Wire device sensor state. This state 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:
    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

### writeDevice

    public void writeDevice(byte[] state)
                     throws OneWireIOException,
                            OneWireException

  Writes the 1-Wire device sensor state that have been changed by 'set' methods. Only the state registers that changed are updated. This is done by referencing a field information appended to the state data.
  Specified by:
    `writeDevice` in interface `OneWireSensor`
  Parameters:
    `state` - 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

### dischargeLines

    public void dischargeLines(int time)
                        throws OneWireIOException,
                               OneWireException

  Force a power-on reset for parasitically powered 1-Wire devices connected to the main or auziliary output of the DS2409.

  IMPORTANT: the duration of the discharge time should be 100ms minimum.

  Parameters:
    `time` - number of milliseconds the lines are to be discharged for (minimum 100)
  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

### isHighSideSwitch

    public boolean isHighSideSwitch()

  Checks to see 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[])`

### hasActivitySensing

    public boolean hasActivitySensing()

  Checks to see 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:
    `getSensedActivity(int,byte[])`, `clearActivity()`

### hasLevelSensing

    public boolean hasLevelSensing()

  Checks to see 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 to see 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 to see 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[])`

### getNumberChannels

    public int getNumberChannels(byte[] state)

  Query to get 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. The DS2406 comes in two packages--one that has a single channel, and one that has two 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

### getLevel

    public boolean getLevel(int channel,
                            byte[] state)
                     throws OneWireException

  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

  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()`

### isModeAuto

    public boolean isModeAuto(byte[] state)

  Checks if the control I/O pin mode is automatic (see DS2409 data sheet).
  Parameters:
    `state` - current state of the device returned from `readDevice()`
  Returns:
    `true` if control mode is automatic

### getControlChannelAssociation

    public int getControlChannelAssociation(byte[] state)

  Checks the channel association of the control pin. This value only makes sense if the control mode is automatic (see `isModeAuto`).
  Parameters:
    `state` - current state of the device returned from `readDevice()`
  Returns:
    `int` the channel number that is associated with the control pin

### getControlData

    public int getControlData(byte[] state)

  Checks the control data value. This value only makes sense if the control mode is manual (see `isModeAuto`). 0 = output transistor off, 1 = output transistor on
  Parameters:
    `state` - current state of the device returned from `readDevice()`
  Returns:
    `int` the control output transistor state

### getLastSmartOnDeviceDetect

    public boolean getLastSmartOnDeviceDetect()

  Gets flag that indicates if a device was present when doing the last smart on. Note that this flag is only valid if the DS2409 flag was cleared with an ALL_LINES_OFF command and the last writeDevice performed a 'smart-on' on one of the channels.
  Returns:
    `true` if device detected on branch

### setLatchState

    public void setLatchState(int channel,
                              boolean latchState,
                              boolean doSmart,
                              byte[] state)

  Sets the latch state of the indicated channel. The method `writeDevice(byte[])` must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call to `writeDevice(byte[])`.
  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[])`

### clearActivity

    public void clearActivity()
                       throws OneWireException

  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:
    `OneWireSensor.readDevice()`, `getSensedActivity(int,byte[])`

### setModeAuto

    public void setModeAuto(boolean makeAuto,
                            byte[] state)

  Sets the control pin mode. The method `writeDevice(byte[])` must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call to `writeDevice(byte[])`.
  Parameters:
    `makeAuto` - `true` to set to auto mode, false for manual mode
    `state` - current state of the device returned from `readDevice()`

### setControlChannelAssociation

    public void setControlChannelAssociation(int channel,
                                             byte[] state)
                                      throws OneWireException

  Sets the control pin channel association. This only makes sense if the contol pin is in automatic mode. The method `writeDevice(byte[])` must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call to `writeDevice(byte[])`.
  Parameters:
    `channel` - channel to associate with control pin
    `state` - current state of the device returned from `readDevice()`
  Throws:
    `OneWireException` - when trying to set channel association in manual mode

### setControlData

    public void setControlData(boolean data,
                               byte[] state)
                        throws OneWireException

  Sets the control pin data to a value. Note this method only works if the control pin is in manual mode. The method `writeDevice(byte[])` must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call to `writeDevice(byte[])`.
  Parameters:
    `data` - `true` for on and `false` for off
    `state` - current state of the device returned from `readDevice()`
  Throws:
    `OneWireException` - when trying to set control data in automatic mode

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD