Class OneWireContainer21
- All Implemented Interfaces:
ClockContainer
,OneWireSensor
,TemperatureContainer
1-Wire® container for a Thermochron iButton, DS1921. This container encapsulates the functionality of the 1-Wire family type 21 (hex).
Features
- Logs up to 2048 consecutive temperature measurements in nonvolatile, read-only memory
- Real-Time clock with programmable alarm
- Programmable high and low temperature alarms
- Alarm violation times and durations recorded in nonvolatile, read-only memory
- Automatically 'wakes up' and logs temperature at user-programmable intervals
- 4096 bits of general-purpose read/write nonvolatile memory
- 256-bit scratchpad ensures integrity of data transfer
- On-chip 16-bit CRC generator to verify read operations
- Long-term histogram with 2@htmlonly °C @endhtmlonly resolution
Memory
The memory can be accessed through the objects that are returned from the
getMemoryBanks
method.
- Scratchpad with CRC
- Implements
MemoryBank
,PagedMemoryBank
- Size 32 starting at physical address 0
- Features Read/Write not-general-purpose volatile
- Pages 1 page of length 32 bytes
- Page Features page-device-CRC
- Extra information for each page Target address, offset, length 3
- Implements
- Main Memory
- Implements
MemoryBank
,PagedMemoryBank
- Size 512 starting at physical address 0
- Features Read/Write general-purpose non-volatile
- Pages 16 pages of length 32 bytes giving 29 bytes Packet data payload
- Page Features page-device-CRC
- Implements
- Register control
- Implements
MemoryBank
,PagedMemoryBank
- Size 32 starting at physical address 512
- Features Read/Write not-general-purpose non-volatile
- Pages 1 pages of length 32 bytes
- Page Features page-device-CRC
- Implements
- Alarm time stamps
- Implements
MemoryBank
,PagedMemoryBank
- Size 96 starting at physical address 544
- Features Read-only not-general-purpose non-volatile
- Pages 3 pages of length 32 bytes
- Page Features page-device-CRC
- Implements
- Temperature histogram
- Implements
MemoryBank
,PagedMemoryBank
- Size 128 starting at physical address 2048
- Features Read-only not-general-purpose non-volatile
- Pages 4 pages of length 32 bytes
- Page Features page-device-CRC
- Implements
- Temperature log
- Implements
MemoryBank
,PagedMemoryBank
- Size 2048 starting at physical address 4096
- Features Read-only not-general-purpose non-volatile
- Pages 64 pages of length 32 bytes
- Page Features page-device-CRC
- Implements
Usage
The code below starts a mission with the following characteristics:
- Rollover flag enabled. This means if more than 2048 samples are taken, the newer samples overwrite the oldest samples in the temperature log.
- High alarm of 28.0@htmlonly °C @endhtmlonly and a low alarm of 23.0@htmlonly °C @endhtmlonly. If the alarm is violated, the Temperature Alarm log will record when and for how long the violation occurred.
- The clock alarm enabled to Mondays at 12:30:45 pm.
- Sets the Thermocron's Real-Time Clock to the host system's clock.
- The mission will start in 2 minutes.
- A sample rate of 1 minute.
// "ID" is a byte array of size 8 with an address of a part we
// have already found with family code 12 hex
// "access" is a DSPortAdapter
OneWireContainer21 ds1921 = (OneWireContainer21) access.getDeviceContainer(ID);
ds1921.setupContainer(access,ID);
// ds1921 previously setup as a OneWireContainer21
ds1921.clearMemory();
// read the current state of the device
byte[] state = ds1921.readDevice();
// enable rollover
ds1921.setFlag(ds1921.CONTROL_REGISTER, ds1921.ROLLOVER_ENABLE_FLAG, true, state);
// set the high temperature alarm to 28 C
ds1921.setTemperatureAlarm(ds1921.ALARM_HIGH, 28.0, state);
// set the low temperature alarm to 23 C
ds1921.setTemperatureAlarm(ds1921.ALARM_LOW, 23.0, state);
// set the clock alarm to occur weekly, Mondays at 12:30:45 pm
ds1921.setClockAlarm(12, 30, 45, 2, ds1921.ONCE_PER_WEEK, state);
// set the real time clock to the system's current clock
ds1921.setClock(System.currentTimeMillis(), state);
// set the mission to start in 2 minutes
ds1921.setMissionStartDelay(2,state);
// make sure the clock is set to run
ds1921.setClockRunEnable(true, state);
// make sure the clock alarm is enabled
ds1921.setClockAlarmEnable(true, state);
// write all that information out
ds1921.writeDevice(state);
// now enable the mission with a sample rate of 1 minute
ds1921.enableMission(1);
The following code processes the temperature log:
byte[] state = ds1921.readDevice();
byte[] log = ds1921.getTemperatureLog(state);
Calendar time_stamp = ds1921.getMissionTimeStamp(state);
long time = time_stamp.getTime().getTime() + ds1921.getFirstLogOffset(state);
int sample_rate = ds1921.getSampleRate(state);
System.out.println("TEMPERATURE LOG");
for (int i=0;i < log.length;i++)
{
System.out.println("- Temperature recorded at : "+(new Date(time)));
System.out.println("- was : "+ds1921.decodeTemperature(log[i])+" C");
time += sample_rate * 60 * 1000;
}
The following code processes the alarm histories:
byte[] high_history = ds1921.getAlarmHistory(ds1921.TEMPERATURE_HIGH_ALARM);
byte[] low_history = ds1921.getAlarmHistory(ds1921.TEMPERATURE_LOW_ALARM);
int sample_rate = ds1921.getSampleRate(state);
int start_offset, violation_count;
System.out.println("ALARM HISTORY");
if (low_history.length==0)
{
System.out.println("- No violations against the low temperature alarm.");
System.out.println("-");
}
for (int i=0;i < low_history.length/4; i++)
{
start_offset = (low_history [i * 4] & 0x0ff)
| ((low_history [i * 4 + 1] << 8) & 0x0ff00)
| ((low_history [i * 4 + 2] << 16) & 0x0ff0000);
violation_count = 0x0ff & low_history[i*4+3];
System.out.println("- Low alarm started at : "+(start_offset * sample_rate));
System.out.println("- : Lasted "+(violation_count * sample_rate)+" minutes");
}
if (high_history.length==0)
{
System.out.println("- No violations against the high temperature alarm.");
System.out.println("-");
}
for (int i=0;i < high_history.length/4; i++)
{
start_offset = (high_history [i * 4] & 0x0ff)
| ((high_history [i * 4 + 1] << 8) & 0x0ff00)
| ((high_history [i * 4 + 2] << 16) & 0x0ff0000);
violation_count = 0x0ff & high_history[i*4+3];
System.out.println("- High alarm started at : "+(start_offset * sample_rate));
System.out.println("- : Lasted "+(violation_count * sample_rate)+" minutes");
}
The following code processes the temperature histogram:
double resolution = ds1921.getTemperatureResolution();
double histBinWidth = ds1921.getHistogramBinWidth();
double start = ds1921.getHistogramLowTemperature();
System.out.println("TEMPERATURE HISTOGRAM");
for (int i=0;i < histogram.length;i++)
{
System.out.println("- Histogram entry : "
+ histogram [i] + " at temperature "
+ start + " to "
+ ( start + (histBinWidth - resolution)) + " C");
start += histBinWidth;
}
Also see the usage examples in the
TemperatureContainer
and ClockContainer
interfaces.
- See the usage example in
OneWireContainer
to enumerate the MemoryBanks. - See the usage examples in
MemoryBank
andPagedMemoryBank
for bank specific operations.
DataSheet
Also visit http://www.ibutton.com/ibuttons/thermochron.html for links to more sources on the DS1921 Thermocron.- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Address of the control register.static final byte
CONTROL REGISTER FLAG: Must be enabled to allow a clear memory function.static final byte
STATUS REGISTER FLAG: Will read back true if the memory has been cleared.static final byte
CONTROL REGISTER FLAG: When DISABLED, the mission will start as soon as the sample rate is written.static final byte
STATUS REGISTER FLAG: Will read back true when a mission is in progress.static final byte
Alarm frequency setting for thesetClockAlarm()
method.static final byte
Alarm frequency setting for thesetClockAlarm()
method.static final byte
Alarm frequency setting for thesetClockAlarm()
method.static final byte
Alarm frequency setting for thesetClockAlarm()
method.static final byte
Alarm frequency setting for thesetClockAlarm()
method.static final byte
CONTROL REGISTER FLAG: When DISABLED, the real time clock will start working.static final byte
CONTROL REGISTER FLAG: When enabled, the device will begin overwriting the earlier temperature measurements when the temperature log memory becomes full.static final byte
STATUS REGISTER FLAG: Will read back true when a mission temperature conversion is in progressstatic final int
Address of the status register.static final byte
STATUS REGISTER FLAG: Will read back true if a temperature conversion of any kind is in progress.static final byte
CONTROL REGISTER FLAG: When enabled, the device will respond to conditional search command if the temperature has reached the high temperature threshold.static final byte
CONTROL REGISTER FLAG: When enabled, the device will respond to conditional search command if the temperature has reached the low temperature threshold.static final byte
High temperature alarm value for the methodsgetAlarmStatus()
,getAlarmHistory()
, andsetTemperatureAlarm()
.static final byte
STATUS REGISTER FLAG: Will read back true when the temperature during a mission reaches or exceeds the temperature high threshold.static final byte
Low temperature alarm value for the methodsgetAlarmStatus()
,getAlarmHistory()
, andsetTemperatureAlarm()
.static final byte
STATUS REGISTER FLAG: Will read back true when a temperature equal to or below the low temperature threshold was detected on a mission.static final byte
Clock alarm value for the methodsgetAlarmStatus()
andisClockAlarming()
.static final byte
STATUS REGISTER FLAG: Will read back true when a clock alarm has occurred.static final byte
CONTROL REGISTER FLAG: When enabled, the device will respond to conditional search command if a timer alarm has occurred.Fields inherited from class com.dalsemi.onewire.container.OneWireContainer
adapter, address, speed, speedFallBackOK
Fields inherited from interface com.dalsemi.onewire.container.TemperatureContainer
ALARM_HIGH, ALARM_LOW
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a newOneWireContainer
for communication with a DS1921 Thermocron iButton.OneWireContainer21
(DSPortAdapter sourceAdapter, byte[] newAddress) Creates a newOneWireContainer
for communication with a DS1921 Thermocron iButton.OneWireContainer21
(DSPortAdapter sourceAdapter, long newAddress) Creates a newOneWireContainer
for communication with a DS1921 Thermocron iButton.OneWireContainer21
(DSPortAdapter sourceAdapter, String newAddress) Creates a newOneWireContainer
for communication with a DS1921 Thermocron iButton. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Checks to see if the clock can be disabled.void
Clears the memory of any previous mission.double
decodeTemperature
(byte tempByte) Converts a temperature from the DS1921byte
encoded format to degrees Celsius.void
Ends this DS1921's running mission.void
doTemperatureConvert
(byte[] state) Performs a temperature conversion.void
enableMission
(int sampleRate) Begins this DS1921's mission.byte
encodeTemperature
(double temperature) Converts a temperature in degrees Celsius to abyte
formatted for the DS1921.byte[]
getAlarmHistory
(byte alarmBit) Returns an array containing the alarm log.boolean
getAlarmStatus
(byte alarmBit, byte[] state) Returnstrue
if the specified alarm has been triggered.getAlarmTime
(byte[] state) Gets the clock alarm time settings.Retrieves the alternate Maxim Integrated Products part numbers or names.long
getClock
(byte[] state) Extracts the Real-Time clock value in milliseconds.long
getClockAlarm
(byte[] state) Extracts the clock alarm value for the Real-Time clock.long
Gets the clock resolution in millisecondsGets a short description of the function of this iButton or 1-Wire Device type.int
getDeviceSamplesCounter
(byte[] state) Determines the total number of samples taken by this Thermocron.long
getFirstLogOffset
(byte[] state) Helps determine the times for values in a temperature log.boolean
getFlag
(int register, byte bitMask) Gets the status of the specified flag from the specified register.boolean
getFlag
(int register, byte bitMask, byte[] state) Gets the status of the specified flag from the specified register.double
This method returns the width of a histogram bin in degrees Celsius.double
Retrieves the lowest temperature of the first histogram bin in degrees Celsius.int
Returns the maximum speed this iButton device can communicate at.double
Gets the maximum temperature in Celsius.Gets an enumeration of memory bank instances that implement one or more of the following interfaces:MemoryBank
,PagedMemoryBank
, andOTPMemoryBank
.double
Gets the minimum temperature in Celsius.int
getMissionSamplesCounter
(byte[] state) Determines the number of samples taken on this mission.getMissionTimeStamp
(byte[] state) Returns the date and time that the last mission was started.getName()
Gets the Maxim Integrated Products part number of the iButton or 1-Wire Device as ajava.lang.String
.double
This method returns the high temperature of the thermochron's operating temperature range.double
This method returns the low temperature of the thermochron's operating temperature range.double
This method returns the high temperature of the thermochron's physical temperature range.double
This method returns the low temperature of the thermochron's physical temperature range.int
getSampleRate
(byte[] state) Returns the rate at which the DS1921 takes temperature samples.double
getTemperature
(byte[] state) Gets the temperature value in Celsius from thestate
data retrieved from thereadDevice()
method.double
getTemperatureAlarm
(int alarmType, byte[] state) Gets the specified temperature alarm value in Celsius from thestate
data retrieved from thereadDevice()
method.double
Gets the temperature alarm resolution in Celsius.int[]
Returns an array of at most 64 counter bins holding the DS1921 histogram data (63 bins for the DS1921L-F5X and 64 bins for the DS1921H or DS1921Z).byte[]
getTemperatureLog
(byte[] state) Returns the log of temperature measurements.double
Retrieves the resolution with which the thermochron takes temperatures in degrees Celsius.double
getTemperatureResolution
(byte[] state) Gets the current temperature resolution in Celsius from thestate
data retrieved from thereadDevice()
method.double[]
Get an array of available temperature resolutions in Celsius.boolean
Checks to see if the clock has an alarm feature.boolean
Checks to see if this device has selectable temperature resolution.boolean
Checks to see if this temperature measuring device has high/low trip alarms.boolean
isClockAlarmEnabled
(byte[] state) Checks if the clock alarm is enabled.boolean
isClockAlarming
(byte[] state) Checks if the clock alarm flag has been set.boolean
isClockRunning
(byte[] state) Checks if the device's oscillator is enabled.byte
readByte
(int memAddr) Reads a single byte from the DS1921.byte[]
Retrieves the 1-Wire device sensor state.void
setClock
(long time, byte[] state) Sets the Real-Time clock.void
setClockAlarm
(int hours, int minutes, int seconds, int day, int alarmFrequency, byte[] state) Set the DS1921's alarm clock.void
setClockAlarm
(long time, byte[] state) Sets the clock alarm.void
setClockAlarmEnable
(boolean alarmEnable, byte[] state) Enables or disables the clock alarm.void
setClockRunEnable
(boolean runEnable, byte[] state) Enables or disables the oscillator, turning the clock 'on' and 'off'.void
setFlag
(int register, byte bitMask, boolean flagValue) Sets the status of the specified flag in the specified register.void
setFlag
(int register, byte bitMask, boolean flagValue, byte[] state) Sets the status of the specified flag in the specified register.void
setMissionStartDelay
(int missionStartDelay, byte[] state) Sets the time to wait before starting the mission.void
setSpeedCheck
(boolean doSpeedCheck) Directs the container to avoid the calls to doSpeed() in methods that communicate with the Thermocron.void
setTemperatureAlarm
(int alarmType, double alarmValue, byte[] state) Sets the temperature alarm value in Celsius in the providedstate
data.void
setTemperatureResolution
(double resolution, byte[] state) Sets the current temperature resolution in Celsius in the providedstate
data.void
setupContainer
(DSPortAdapter sourceAdapter, byte[] newAddress) Provides this container with the adapter object used to access this device and the address of the iButton or 1-Wire device.void
setupContainer
(DSPortAdapter sourceAdapter, long newAddress) Provides this container with the adapter object used to access this device and the address of the iButton or 1-Wire device.void
setupContainer
(DSPortAdapter sourceAdapter, String newAddress) Provides this container with the adapter object used to access this device and the address of the iButton or 1-Wire device.void
writeByte
(int memAddr, byte source) Writes a byte of data into the DS1921's memory.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, equals, getAdapter, getAddress, getAddressAsLong, getAddressAsString, hashCode, isAlarming, isPresent, setSpeed, toString
-
Field Details
-
STATUS_REGISTER
public static final int STATUS_REGISTERAddress of the status register. Used with thegetFlag
andsetFlag
methods to set and check flags indicating the Thermochron's status. -
CONTROL_REGISTER
public static final int CONTROL_REGISTERAddress of the control register. Used with thegetFlag
andsetFlag
methods to set and check flags indicating the Thermochron's status. -
ONCE_PER_SECOND
public static final byte ONCE_PER_SECONDAlarm frequency setting for thesetClockAlarm()
method. If the DS1921 Thermocron alarm is enabled and is not alarming, it will alarm on the next Real-Time Clock second. -
ONCE_PER_MINUTE
public static final byte ONCE_PER_MINUTEAlarm frequency setting for thesetClockAlarm()
method. If the DS1921 Thermocron alarm is enabled and is not alarming, it will alarm the next time the Real-Time Clock's 'second' value is equal to the Alarm Clock's 'second' value. -
ONCE_PER_HOUR
public static final byte ONCE_PER_HOURAlarm frequency setting for thesetClockAlarm()
method. If the DS1921 Thermocron alarm is enabled and is not alarming, it will alarm the next time the Real-Time Clock's 'second' and 'minute' values are equal to the Alarm Clock's 'second' and 'minute' values. -
ONCE_PER_DAY
public static final byte ONCE_PER_DAYAlarm frequency setting for thesetClockAlarm()
method. If the DS1921 Thermocron alarm is enabled and is not alarming, it will alarm the next time the Real-Time Clock's 'second', 'minute', and 'hour' values are equal to the Alarm Clock's 'second', 'minute', and 'hour' values. -
ONCE_PER_WEEK
public static final byte ONCE_PER_WEEKAlarm frequency setting for thesetClockAlarm()
method. If the DS1921 Thermocron alarm is enabled and is not alarming, it will alarm the next time the Real-Time Clock's 'second', 'minute', 'hour', and 'day of week' values are equal to the Alarm Clock's 'second', 'minute', 'hour', and 'day of week' values -
TEMPERATURE_LOW_ALARM
public static final byte TEMPERATURE_LOW_ALARMLow temperature alarm value for the methodsgetAlarmStatus()
,getAlarmHistory()
, andsetTemperatureAlarm()
. -
TEMPERATURE_HIGH_ALARM
public static final byte TEMPERATURE_HIGH_ALARMHigh temperature alarm value for the methodsgetAlarmStatus()
,getAlarmHistory()
, andsetTemperatureAlarm()
. -
TIMER_ALARM
public static final byte TIMER_ALARMClock alarm value for the methodsgetAlarmStatus()
andisClockAlarming()
. -
TIMER_ALARM_SEARCH_FLAG
public static final byte TIMER_ALARM_SEARCH_FLAGCONTROL REGISTER FLAG: When enabled, the device will respond to conditional search command if a timer alarm has occurred. -
TEMP_HIGH_SEARCH_FLAG
public static final byte TEMP_HIGH_SEARCH_FLAGCONTROL REGISTER FLAG: When enabled, the device will respond to conditional search command if the temperature has reached the high temperature threshold. -
TEMP_LOW_SEARCH_FLAG
public static final byte TEMP_LOW_SEARCH_FLAGCONTROL REGISTER FLAG: When enabled, the device will respond to conditional search command if the temperature has reached the low temperature threshold. -
ROLLOVER_ENABLE_FLAG
public static final byte ROLLOVER_ENABLE_FLAGCONTROL REGISTER FLAG: When enabled, the device will begin overwriting the earlier temperature measurements when the temperature log memory becomes full. -
MISSION_ENABLE_FLAG
public static final byte MISSION_ENABLE_FLAGCONTROL REGISTER FLAG: When DISABLED, the mission will start as soon as the sample rate is written. -
MEMORY_CLEAR_ENABLE_FLAG
public static final byte MEMORY_CLEAR_ENABLE_FLAGCONTROL REGISTER FLAG: Must be enabled to allow a clear memory function. Must be set immediately before the command is issued. -
OSCILLATOR_ENABLE_FLAG
public static final byte OSCILLATOR_ENABLE_FLAGCONTROL REGISTER FLAG: When DISABLED, the real time clock will start working. Must be disabled for normal operation. -
TIMER_ALARM_FLAG
public static final byte TIMER_ALARM_FLAGSTATUS REGISTER FLAG: Will read back true when a clock alarm has occurred. -
TEMPERATURE_HIGH_FLAG
public static final byte TEMPERATURE_HIGH_FLAGSTATUS REGISTER FLAG: Will read back true when the temperature during a mission reaches or exceeds the temperature high threshold. -
TEMPERATURE_LOW_FLAG
public static final byte TEMPERATURE_LOW_FLAGSTATUS REGISTER FLAG: Will read back true when a temperature equal to or below the low temperature threshold was detected on a mission. -
SAMPLE_IN_PROGRESS_FLAG
public static final byte SAMPLE_IN_PROGRESS_FLAGSTATUS REGISTER FLAG: Will read back true when a mission temperature conversion is in progress -
MISSION_IN_PROGRESS_FLAG
public static final byte MISSION_IN_PROGRESS_FLAGSTATUS REGISTER FLAG: Will read back true when a mission is in progress. -
MEMORY_CLEARED_FLAG
public static final byte MEMORY_CLEARED_FLAGSTATUS REGISTER FLAG: Will read back true if the memory has been cleared. -
TEMP_CORE_BUSY_FLAG
public static final byte TEMP_CORE_BUSY_FLAGSTATUS REGISTER FLAG: Will read back true if a temperature conversion of any kind is in progress.
-
-
Constructor Details
-
OneWireContainer21
public OneWireContainer21()Creates a newOneWireContainer
for communication with a DS1921 Thermocron iButton. Note that the methodsetupContainer(DSPortAdapter,byte[])
must be called to set the correctDSPortAdapter
device address. -
OneWireContainer21
Creates a newOneWireContainer
for communication with a DS1921 Thermocron iButton.- Parameters:
sourceAdapter
- adapter object required to communicate with this iButtonnewAddress
- address of this DS1921- See Also:
-
OneWireContainer21
Creates a newOneWireContainer
for communication with a DS1921 Thermocron iButton.- Parameters:
sourceAdapter
- adapter object required to communicate with this iButtonnewAddress
- address of this DS1921- See Also:
-
OneWireContainer21
Creates a newOneWireContainer
for communication with a DS1921 Thermocron iButton.- Parameters:
sourceAdapter
- adapter object required to communicate with this iButtonnewAddress
- address of this DS1921- See Also:
-
-
Method Details
-
setupContainer
Provides this container with the adapter object used to access this device and the address of the iButton or 1-Wire device.- Overrides:
setupContainer
in classOneWireContainer
- Parameters:
sourceAdapter
- adapter object required to communicate with this iButtonnewAddress
- address of this 1-Wire device- See Also:
-
setupContainer
Provides this container with the adapter object used to access this device and the address of the iButton or 1-Wire device.- Overrides:
setupContainer
in classOneWireContainer
- Parameters:
sourceAdapter
- adapter object required to communicate with this iButtonnewAddress
- address of this 1-Wire device- See Also:
-
setupContainer
Provides this container with the adapter object used to access this device and the address of the iButton or 1-Wire device.- Overrides:
setupContainer
in classOneWireContainer
- Parameters:
sourceAdapter
- adapter object required to communicate with this iButtonnewAddress
- address of this 1-Wire device- See Also:
-
getMemoryBanks
Gets an enumeration of memory bank instances that implement one or more of the following interfaces:MemoryBank
,PagedMemoryBank
, andOTPMemoryBank
.- Overrides:
getMemoryBanks
in classOneWireContainer
- Returns:
Enumeration
of memory banks- See Also:
-
getMaxSpeed
public int getMaxSpeed()Returns the maximum speed this iButton device can communicate at.- Overrides:
getMaxSpeed
in classOneWireContainer
- Returns:
- maximum speed
- See Also:
-
getName
Gets the Maxim Integrated Products part number of the iButton or 1-Wire Device as ajava.lang.String
. For example "DS1992".- Overrides:
getName
in classOneWireContainer
- Returns:
- iButton or 1-Wire device name
-
getAlternateNames
Retrieves the alternate Maxim Integrated Products part numbers or names. A 'family' of MicroLAN devices may have more than one part number depending on packaging. There can also be nicknames such as "Crypto iButton".- Overrides:
getAlternateNames
in classOneWireContainer
- Returns:
- the alternate names for this iButton or 1-Wire device
-
getDescription
Gets a short description of the function of this iButton or 1-Wire Device type.- Overrides:
getDescription
in classOneWireContainer
- 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 todoSpeed()
. However, this is an expensive operation. If a user manages the bus speed in an application, call this method withdoSpeedCheck
asfalse
. The default behavior is to calldoSpeed()
.- Parameters:
doSpeedCheck
-true
fordoSpeed()
to be called before every 1-Wire bus access,false
to skip this expensive call- See Also:
-
getPhysicalRangeLowTemperature
public double getPhysicalRangeLowTemperature()This method returns the low temperature of the thermochron's physical temperature range. The physical range is the range of temperatures that the thermochron can record. The following is a list of physical ranges in degrees Celsius: DS1921L-F5X = physical range -40 to +85 DS1921H = physical range 15 to 46 DS1921Z = physical range -5 to 26- Returns:
- the physical range low temperature in degrees Celsius
-
getPhysicalRangeHighTemperature
public double getPhysicalRangeHighTemperature()This method returns the high temperature of the thermochron's physical temperature range. The physical range is the range of temperatures that the thermochron can record. The following is a list of physical ranges in degrees Celsius: DS1921L-F5X = physical range -40 to +85 DS1921H = physical range 15 to 46 DS1921Z = physical range -5 to 26- Returns:
- the physical range low temperature in degrees Celsius
-
getOperatingRangeLowTemperature
public double getOperatingRangeLowTemperature()This method returns the low temperature of the thermochron's operating temperature range. The operating range is the range of temperatures for which the thermochron can function properly. The following is a list of operating ranges in degrees Celsius: DS1921L-F50 = operating range -40 to +85. DS1921L-F51 = operating range -10 to +85. DS1921L-F52 = operating range -20 to +85. DS1921L-F53 = operating range -30 to +85. DS1921H = operating range -40 to +85 DS1921Z = operating range -40 to +85- Returns:
- the operating range low temperature in degrees Celsius
-
getOperatingRangeHighTemperature
public double getOperatingRangeHighTemperature()This method returns the high temperature of the thermochron's operating temperature range. The operating range is the range of temperatures for which the thermochron can function properly. The following is a list of operating ranges in degrees Celsius: DS1921L-F50 = operating range -40 to +85. DS1921L-F51 = operating range -10 to +85. DS1921L-F52 = operating range -20 to +85. DS1921L-F53 = operating range -30 to +85. DS1921H = operating range -40 to +85 DS1921Z = operating range -40 to +85- Returns:
- the operating range high temperature in degrees Celsius
-
getTemperatureResolution
public double getTemperatureResolution()Retrieves the resolution with which the thermochron takes temperatures in degrees Celsius.- Returns:
- the temperature resolution of this thermochron.
-
getHistogramLowTemperature
public double getHistogramLowTemperature()Retrieves the lowest temperature of the first histogram bin in degrees Celsius.- Returns:
- the lowest histogram bin temperature.
-
getHistogramBinWidth
public double getHistogramBinWidth()This method returns the width of a histogram bin in degrees Celsius.- Returns:
- the width of a histogram bin for this thermochron.
-
decodeTemperature
public double decodeTemperature(byte tempByte) Converts a temperature from the DS1921byte
encoded format to degrees Celsius. The raw temperature readings are unsignedbyte
values, representing a 2.0 degree accuracy.- Parameters:
tempByte
- raw DS1921 temperature reading- Returns:
- temperature in degrees Celsius
- See Also:
-
encodeTemperature
public byte encodeTemperature(double temperature) Converts a temperature in degrees Celsius to abyte
formatted for the DS1921.- Parameters:
temperature
- the temperature (Celsius) to convert- Returns:
- the temperature in raw DS1921 format
- See Also:
-
writeByte
Writes a byte of data into the DS1921's memory. Note that writing to the register page while a mission is in progress ends that mission. Also note that the preferred way to write a page is through theMemoryBank
objects returned from thegetMemoryBanks()
method.- Parameters:
memAddr
- the address for writing (in the range of 0x200-0x21F)source
- the databyte
to write- 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:
-
readByte
Reads a single byte from the DS1921. Note that the preferred manner of reading from the DS1921 Thermocron is through thereadDevice()
method or through theMemoryBank
objects returned in thegetMemoryBanks()
method.- Parameters:
memAddr
- the address to read from (in the range of 0x200-0x21F)- Returns:
- the data byte read
- 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:
-
getFlag
Gets the status of the specified flag from the specified register. This method actually communicates with the Thermocron. To improve performance if you intend to make multiple calls to this method, first call
readDevice()
and use thegetFlag(int, byte, byte[])
method instead.The DS1921 Thermocron has two sets of flags. One set belongs to the control register. When reading from the control register, valid values for
bitMask
are:TIMER_ALARM_SEARCH_FLAG
TEMP_HIGH_SEARCH_FLAG
TEMP_LOW_SEARCH_FLAG
ROLLOVER_ENABLE_FLAG
MISSION_ENABLE_FLAG
MEMORY_CLEAR_ENABLE_FLAG
OSCILLATOR_ENABLE_FLAG
When reading from the status register, valid values for
bitMask
are:TIMER_ALARM_FLAG
TEMPERATURE_HIGH_FLAG
TEMPERATURE_LOW_FLAG
SAMPLE_IN_PROGRESS_FLAG
MISSION_IN_PROGRESS_FLAG
MEMORY_CLEARED_FLAG
TEMP_CORE_BUSY_FLAG
- Parameters:
register
- address of register containing the flag (valid values areCONTROL_REGISTER
andSTATUS_REGISTER
)bitMask
- the flag to read (see above for available options)- Returns:
- the status of the flag, where
true
signifies a "1" andfalse
signifies a "0" - 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:
-
getFlag(int,byte,byte[])
readDevice()
setFlag(int,byte,boolean)
TIMER_ALARM_SEARCH_FLAG
TEMP_HIGH_SEARCH_FLAG
TEMP_LOW_SEARCH_FLAG
ROLLOVER_ENABLE_FLAG
MISSION_ENABLE_FLAG
MEMORY_CLEAR_ENABLE_FLAG
OSCILLATOR_ENABLE_FLAG
TIMER_ALARM_FLAG
TEMPERATURE_HIGH_FLAG
TEMPERATURE_LOW_FLAG
SAMPLE_IN_PROGRESS_FLAG
MISSION_IN_PROGRESS_FLAG
MEMORY_CLEARED_FLAG
TEMP_CORE_BUSY_FLAG
-
getFlag
public boolean getFlag(int register, byte bitMask, byte[] state) Gets the status of the specified flag from the specified register. This method is the preferred manner of reading the control and status flags.
For more information on valid values for the
bitMask
parameter, see thegetFlag(int,byte)
method.- Parameters:
register
- address of register containing the flag (valid values areCONTROL_REGISTER
andSTATUS_REGISTER
)bitMask
- the flag to read (seegetFlag(int,byte)
for available options)state
- current state of the device returned fromreadDevice()
- Returns:
- the status of the flag, where
true
signifies a "1" andfalse
signifies a "0" - See Also:
-
setFlag
public void setFlag(int register, byte bitMask, boolean flagValue) throws OneWireIOException, OneWireException Sets the status of the specified flag in the specified register. If a mission is in progress a
OneWireIOException
will be thrown (one cannot write to the registers while a mission is commencing). This method actually communicates with the DS1921 Thermocron. To improve performance if you intend to make multiple calls to this method, first callreadDevice()
and use thesetFlag(int,byte,boolean,byte[])
method instead.For more information on valid values for the
bitMask
parameter, see thegetFlag(int,byte)
method.- Parameters:
register
- address of register containing the flag (valid values areCONTROL_REGISTER
andSTATUS_REGISTER
)bitMask
- the flag to read (seegetFlag(int,byte)
for available options)flagValue
- new value for the flag (true
is logic "1")- 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'. In the case of the DS1921 Thermocron, this could also be due to a currently running mission.OneWireException
- on a communication or setup error with the 1-Wire adapter- See Also:
-
setFlag
public void setFlag(int register, byte bitMask, boolean flagValue, byte[] state) Sets the status of the specified flag in the specified register. If a mission is in progress a
OneWireIOException
will be thrown (one cannot write to the registers while a mission is commencing). This method is the preferred manner of setting the DS1921 status and control flags. The methodwriteDevice()
must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call towriteDevice()
.For more information on valid values for the
bitMask
parameter, see thegetFlag(int,byte)
method.- Parameters:
register
- address of register containing the flag (valid values areCONTROL_REGISTER
andSTATUS_REGISTER
)bitMask
- the flag to read (seegetFlag(int,byte)
for available options)flagValue
- new value for the flag (true
is logic "1")state
- current state of the device returned fromreadDevice()
- See Also:
-
enableMission
Begins this DS1921's mission. If a mission is already in progress, this will throw a
OneWireIOException
. The mission will wait the number of minutes specified by the mission start delay (usesetMissionStartDelay()
) before beginning.Note that this method actually communicates with the DS1921 Thermocron. No call to
writeDevice()
is required to finalize mission enabling. However, some flags (such as the mission start delay) may need to be set with a call towriteDevice()
before the mission is enabled. See the usage section above for an example of starting a mission.- Parameters:
sampleRate
- the number of minutes to wait in between temperature samples (valid values are 1 to 255)- 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'. In the case of the DS1921 Thermocron, this could also be due to a currently running mission.OneWireException
- on a communication or setup error with the 1-Wire adapter- See Also:
-
disableMission
Ends this DS1921's running mission. Note that this method actually communicates with the DS1921 Thermocron. No additional call towriteDevice(byte[])
is required.- 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:
-
setMissionStartDelay
public void setMissionStartDelay(int missionStartDelay, byte[] state) Sets the time to wait before starting the mission. The DS1921 will sleep
missionStartDelay
minutes after the mission is enabled withenableMission(int)
, then begin taking samples. Only the least significant 16 bits ofmissionStartDelay
are relevant.The method
writeDevice()
must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call towriteDevice()
.- Parameters:
missionStartDelay
- the time in minutes to delay the first samplestate
- current state of the device returned fromreadDevice()
- See Also:
-
clearMemory
Clears the memory of any previous mission. The memory must be cleared before setting up a new mission. If a mission is in progress a
OneWireIOException
is thrown.The Clear Memory command clears the Thermocron's memory at address 220h and higher. It also clears the sample rate, mission start delay, mission time stamp, and mission samples counter.
Note that this method actually communicates with the DS1921 Thermocron. No call to
writeDevice(byte[])
is necessary to finalize this activity.- 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'. In the case of the DS1921 Thermocron, this could also be due to a currently running mission.OneWireException
- on a communication or setup error with the 1-Wire adapter- See Also:
-
getAlarmTime
Gets the clock alarm time settings. The alarm settings used by the Thermocron are Hour, Minute, Second, and Day of Week. Note that not all values in the returned
java.util.Calendar
object are valid. Only four values in theCalendar
should be used. The field names for these values are:Calendar.DAY_OF_MONTH Calendar.HOUR_OF_DAY Calendar.MINUTE Calendar.SECOND
The hour is reported in 24-hour format. Use the method
getClockAlarm(byte[])
to find out the next time an alarm event will occur.- Parameters:
state
- current state of the device returned fromreadDevice()
- Returns:
- the alarm clock time and day of the week
- See Also:
-
setClockAlarm
public void setClockAlarm(int hours, int minutes, int seconds, int day, int alarmFrequency, byte[] state) Set the DS1921's alarm clock. Some of the parameters might be unimportant depending on the alarm frequency setting. For instance, if the alarm frequency setting isONCE_PER_MINUTE
, then thehour
argument is irrelevant.Valid values for
alarmFrequency
are:ONCE_PER_SECOND ONCE_PER_MINUTE ONCE_PER_HOUR ONCE_PER_DAY ONCE_PER_WEEK
The method
writeDevice()
must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call towriteDevice()
.- Parameters:
hours
- the hour of the day (0-23)minutes
- the minute setting (0-59)seconds
- the second setting (0-59)day
- the day of the week (1-7, 1==Sunday)alarmFrequency
- frequency that the alarm should occur atstate
- current state of the device returned fromreadDevice()
- See Also:
-
getSampleRate
public int getSampleRate(byte[] state) Returns the rate at which the DS1921 takes temperature samples. This rate is set when the mission is enabled (in the methodenableMission(int)
.- Parameters:
state
- current state of the device returned fromreadDevice()
- Returns:
- the time, in minutes, between temperature readings
- See Also:
-
getMissionSamplesCounter
public int getMissionSamplesCounter(byte[] state) Determines the number of samples taken on this mission. Only the last 2048 samples appear in the Thermocron's log, though all readings from the current mission are logged in the histogram.- Parameters:
state
- current state of the device returned fromreadDevice()
- Returns:
- the number of samples taken in the current mission
- See Also:
-
getDeviceSamplesCounter
public int getDeviceSamplesCounter(byte[] state) Determines the total number of samples taken by this Thermocron. This includes samples taken in past missions. It also includes 'forced' readings. A 'forced' reading refers to a reading taken when the Thermocron does not have a running mission and is instructed to read the current temperature.
The DS1921 Thermocron is tested to last for 1 million temperature readings.
- Parameters:
state
- current state of the device returned fromreadDevice()
- Returns:
- the total number of measurements taken by this Thermocron
- See Also:
-
getMissionTimeStamp
Returns the date and time that the last mission was started. The values in thejava.util.Calendar
object are fully specified. In other words, the year, month, date, hour, minute, and second are all valid in the returned object.- Parameters:
state
- current state of the device returned fromreadDevice()
- Returns:
- the date and time that the last mission was started
- See Also:
-
getFirstLogOffset
public long getFirstLogOffset(byte[] state) Helps determine the times for values in a temperature log. If rollover is enabled, temperature log entries will over-write previous entries once more than 2048 logs are written. The returned value can be added to the underlying millisecond value of
getMissionTimeStamp()
to determine the time that the 'first' log entry actually occurred.//ds1921 is a OneWireContainer21 byte[] state = ds1921.readDevice(); Calendar c = ds1921.getMissionTimeStamp(state); //find the time for the first log entry long first_entry = c.getTime().getTime(); first_entry += ds1921.getFirstLogOffset(state); . . .
Be cautious of Java's Daylight Savings Time offsets when using this function--if you use the
Date
orCalendar
class to print this out, Java may try to automatically format thejava.lang.String
to handle Daylight Savings Time, resulting in offset by 1 hour problems.- Parameters:
state
- current state of the device returned fromreadDevice()
- Returns:
- milliseconds between the beginning of the mission and the time of the
first log entry reported from
getTemperatureLog()
- See Also:
-
getTemperatureLog
Returns the log of temperature measurements. Each
byte
in the returned array is an independent sample. Use the methoddecodeTemperature(byte)
to get the double value of the encoded temperature. See the DS1921 datasheet for more on the data's encoding scheme. The array's length equals the number of measurements taken thus far. The temperature log can be read while a mission is still in progress.Note that although this method takes the device state as a parameter, this method still must communicate directly with the Thermocron to read the log.
- Parameters:
state
- current state of the device returned fromreadDevice()
- Returns:
- the DS1921's encoded temperature log
- 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:
-
getTemperatureHistogram
Returns an array of at most 64 counter bins holding the DS1921 histogram data (63 bins for the DS1921L-F5X and 64 bins for the DS1921H or DS1921Z). For the temperature histogram, the DS1921 provides bins that each consist of a 16-bit, non rolling-over binary counter that is incremented each time a temperature value acquired during a mission falls into the range of the bin. The bin to be updated is determined by cutting off the two least significant bits of the binary temperature value. For example, on a DS1921L-F5X, bin 0 will hold the counter for temperatures ranging from -40 to -38.5 (Celsius) and lower. Bin 1 is associated with the range of -38 to 36.5 and so on. The last bin, in this case bin 62, holds temperature values of 84 degrees and higher. Please see the respective DS1921H or DS1921Z datasheets for their bin arrangements. The temperature histogram can be read while a mission is still in progress.
- Returns:
- the 63 temperature counters
- 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
-
getAlarmStatus
public boolean getAlarmStatus(byte alarmBit, byte[] state) Returnstrue
if the specified alarm has been triggered. Valid values for thealarmBit
parameter are:TEMPERATURE_LOW_ALARM TEMPERATURE_HIGH_ALARM TIMER_ALARM
- Parameters:
alarmBit
- the alarm to checkstate
- current state of the device returned fromreadDevice()
- Returns:
if the specified alarm has been triggered - See Also:
-
getAlarmHistory
Returns an array containing the alarm log. The DS1921 contains two separate alarm logs. One for the high temperature alarm and one for the low temperature alarm. Each log can store up to 12 log entries and each log entry will record up to 255 consecutive alarm violations.
The returned array is not altered from its representation on the DS1921 Thermocron. It is therefore up to the caller to interpret the data. The number of logs in this alarm history is equal to the array length divided by 4, since each entry is 4 bytes. The first three bytes are the number of samples into the mission that the alarm occurred. The fourth byte is the number of consecutive samples that violated the alarm. To extract the starting offset and number of violations from the array:
byte[] data = ds1921.getAlarmHistory(OneWireContainer21.TEMPERATURE_HIGH_ALARM); int start_offset; int violation_count; . . . for (int i=0;i < data.length/4; i++) { start_offset = (data [i * 4] & 0x0ff) | ((data [i * 4 + 1] << 8) & 0x0ff00) | ((data [i * 4 + 2] << 16) & 0x0ff0000); violation_count = 0x0ff & data[i*4+3]; . . . // note: you may find it useful to multiply start_offset // by getSampleRate() in order to get the number of // minutes into the mission that the violation occurred // on. You can do the same with violation_count // to determine how long the violation lasted. }
Acceptable values for the
alarmBit
parameter are:TEMPERATURE_LOW_ALARM TEMPERATURE_HIGH_ALARM
- Parameters:
alarmBit
- the alarm log to get- Returns:
- the time/duration of the alarm (see above for the structure of the array)
- 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:
-
readDevice
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 interfaceOneWireSensor
- 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
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 interfaceOneWireSensor
- 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
-
hasTemperatureAlarms
public boolean hasTemperatureAlarms()Checks to see if this temperature measuring device has high/low trip alarms.- Specified by:
hasTemperatureAlarms
in interfaceTemperatureContainer
- Returns:
true
if thisTemperatureContainer
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 interfaceTemperatureContainer
- Returns:
true
if thisTemperatureContainer
has selectable temperature resolution- See Also:
-
getTemperatureResolutions
public double[] getTemperatureResolutions()Get an array of available temperature resolutions in Celsius.- Specified by:
getTemperatureResolutions
in interfaceTemperatureContainer
- Returns:
- byte array of available temperature resolutions in Celsius with minimum resolution 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 interfaceTemperatureContainer
- Returns:
- temperature alarm resolution in Celsius for this 1-wire device
- See Also:
-
getMaxTemperature
public double getMaxTemperature()Gets the maximum temperature in Celsius.- Specified by:
getMaxTemperature
in interfaceTemperatureContainer
- Returns:
- maximum temperature in Celsius for this 1-wire device
- See Also:
-
getMinTemperature
public double getMinTemperature()Gets the minimum temperature in Celsius.- Specified by:
getMinTemperature
in interfaceTemperatureContainer
- Returns:
- minimum temperature in Celsius for this 1-wire device
- See Also:
-
doTemperatureConvert
Performs a temperature conversion. Use thestate
information to calculate the conversion time.- Specified by:
doTemperatureConvert
in interfaceTemperatureContainer
- Parameters:
state
- byte array with device state information- 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'. In the case of the DS1921 Thermocron, this could also be due to a currently running mission.OneWireException
- on a communication or setup error with the 1-Wire adapter
-
getTemperature
public double getTemperature(byte[] state) Gets the temperature value in Celsius from thestate
data retrieved from thereadDevice()
method.- Specified by:
getTemperature
in interfaceTemperatureContainer
- Parameters:
state
- byte array with device state information- Returns:
- temperature in Celsius from the last
doTemperatureConvert()
-
getTemperatureAlarm
public double getTemperatureAlarm(int alarmType, byte[] state) Gets the specified temperature alarm value in Celsius from thestate
data retrieved from thereadDevice()
method.- Specified by:
getTemperatureAlarm
in interfaceTemperatureContainer
- Parameters:
alarmType
- valid value:ALARM_HIGH
orALARM_LOW
state
- byte array with device state information- Returns:
- temperature alarm trip values in Celsius for this 1-wire device
- See Also:
-
getTemperatureResolution
public double getTemperatureResolution(byte[] state) Gets the current temperature resolution in Celsius from thestate
data retrieved from thereadDevice()
method.- Specified by:
getTemperatureResolution
in interfaceTemperatureContainer
- Parameters:
state
- byte array with device state information- Returns:
- temperature resolution in Celsius for this 1-wire device
- See Also:
-
setTemperatureAlarm
public void setTemperatureAlarm(int alarmType, double alarmValue, byte[] state) Sets the temperature alarm value in Celsius in the providedstate
data. Use the methodwriteDevice()
with this data to finalize the change to the device.- Specified by:
setTemperatureAlarm
in interfaceTemperatureContainer
- Parameters:
alarmType
- valid value:ALARM_HIGH
orALARM_LOW
alarmValue
- alarm trip value in Celsiusstate
- byte array with device state information- See Also:
-
setTemperatureResolution
Sets the current temperature resolution in Celsius in the providedstate
data. Use the methodwriteDevice()
with this data to finalize the change to the device.- Specified by:
setTemperatureResolution
in interfaceTemperatureContainer
- Parameters:
resolution
- temperature resolution in Celsiusstate
- byte array with device state information- Throws:
OneWireException
- if the device does not support selectable temperature resolution- See Also:
-
hasClockAlarm
public boolean hasClockAlarm()Checks to see if the clock has an alarm feature.- Specified by:
hasClockAlarm
in interfaceClockContainer
- Returns:
- true if the Real-Time clock has an alarm
- See Also:
-
canDisableClock
public boolean canDisableClock()Checks to see if the clock can be disabled.- Specified by:
canDisableClock
in interfaceClockContainer
- Returns:
- true if the clock can be enabled and disabled
- See Also:
-
getClockResolution
public long getClockResolution()Gets the clock resolution in milliseconds- Specified by:
getClockResolution
in interfaceClockContainer
- Returns:
- the clock resolution in milliseconds
-
getClock
public long getClock(byte[] state) Extracts the Real-Time clock value in milliseconds.- Specified by:
getClock
in interfaceClockContainer
- Parameters:
state
- current state of the device returned fromreadDevice()
- Returns:
- the time represented in this clock in milliseconds since 1970
- See Also:
-
getClockAlarm
public long getClockAlarm(byte[] state) Extracts the clock alarm value for the Real-Time clock. In the case of the DS1921 Thermocron, this is the time that the next periodic alarm event will occur.- Specified by:
getClockAlarm
in interfaceClockContainer
- Parameters:
state
- current state of the device returned fromreadDevice()
- Returns:
- milliseconds since 1970 that the clock alarm is set to
- See Also:
-
isClockAlarming
public boolean isClockAlarming(byte[] state) Checks if the clock alarm flag has been set. This will occur when the value of the Real-Time clock equals the value of the clock alarm.- Specified by:
isClockAlarming
in interfaceClockContainer
- Parameters:
state
- current state of the device returned fromreadDevice()
- Returns:
- true if the Real-Time clock is alarming
- See Also:
-
isClockAlarmEnabled
public boolean isClockAlarmEnabled(byte[] state) Checks if the clock alarm is enabled.- Specified by:
isClockAlarmEnabled
in interfaceClockContainer
- Parameters:
state
- current state of the device returned fromreadDevice()
- Returns:
- true if clock alarm is enabled
- See Also:
-
isClockRunning
public boolean isClockRunning(byte[] state) Checks if the device's oscillator is enabled. The clock will not increment if the clock oscillator is not enabled.- Specified by:
isClockRunning
in interfaceClockContainer
- Parameters:
state
- current state of the device returned fromreadDevice()
- Returns:
- true if the clock is running
- See Also:
-
setClock
public void setClock(long time, byte[] state) Sets the Real-Time clock. The methodwriteDevice()
must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call towriteDevice()
.- Specified by:
setClock
in interfaceClockContainer
- Parameters:
time
- new value for the Real-Time clock, in milliseconds since January 1, 1970state
- current state of the device returned fromreadDevice()
- See Also:
-
setClockAlarm
Sets the clock alarm. The methodwriteDevice()
must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call towriteDevice()
. Also note that not all clock devices have alarms. Check to see if this device has alarms first by calling thehasClockAlarm()
method.- Specified by:
setClockAlarm
in interfaceClockContainer
- Parameters:
time
- - new value for the Real-Time clock alarm, in milliseconds since January 1, 1970state
- current state of the device returned fromreadDevice()
- Throws:
OneWireException
- if this device does not have clock alarms- See Also:
-
setClockRunEnable
public void setClockRunEnable(boolean runEnable, byte[] state) Enables or disables the oscillator, turning the clock 'on' and 'off'. The methodwriteDevice()
must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call towriteDevice()
. Also note that not all clock devices can disable their oscillators. Check to see if this device can disable its oscillator first by calling thecanDisableClock()
method.- Specified by:
setClockRunEnable
in interfaceClockContainer
- Parameters:
runEnable
- true to enable the clock oscillatorstate
- current state of the device returned fromreadDevice()
- See Also:
-
setClockAlarmEnable
public void setClockAlarmEnable(boolean alarmEnable, byte[] state) Enables or disables the clock alarm. The methodwriteDevice()
must be called to finalize changes to the device. Note that multiple 'set' methods can be called before one call towriteDevice()
. Also note that not all clock devices have alarms. Check to see if this device has alarms first by calling thehasClockAlarm()
method.- Specified by:
setClockAlarmEnable
in interfaceClockContainer
- Parameters:
alarmEnable
- true to enable the clock alarmstate
- current state of the device returned fromreadDevice()
- See Also:
-