com.dalsemi.onewire.container
Interface MemoryBank

All Known Subinterfaces:
OTPMemoryBank, PagedMemoryBank

public interface MemoryBank

Memory bank interface class for basic memory communication with iButtons (or 1-Wire devices). This class should be implemented for each memory bank type.

Version:
0.00, 28 Aug 2000

Method Summary
 java.lang.String getBankDescription()
          Query to see get a string description of the current memory bank.
 int getSize()
          Query to get the size of the memory bank in bytes.
 int getStartPhysicalAddress()
          Query to get the starting physical address of this bank.
 boolean isGeneralPurposeMemory()
          Query to see if the current memory bank is general purpose user memory.
 boolean isNonVolatile()
          Query to see if current memory bank non-volatile.
 boolean isReadOnly()
          Query to see if current memory bank is read only.
 boolean isReadWrite()
          Query to see if current memory bank is read/write.
 boolean isWriteOnce()
          Query to see if current memory bank is write write once such as with EPROM technology.
 boolean needsPowerDelivery()
          Query to see if current memory bank pages need the adapter to have a 'PowerDelivery' feature in order to write to the memory.
 boolean needsProgramPulse()
          Query to see if current memory bank pages need the adapter to have a 'ProgramPulse' in order to write to the memory.
 void read(int startAddr, boolean readContinue, byte[] readBuf, int offset, int len)
          Read memory in the current bank with no CRC checking (device or data).
 void setWriteVerification(boolean doReadVerf)
          Set the write verification for the 'write()' method.
 void write(int startAddr, byte[] writeBuf, int offset, int len)
          Write memory in the current bank.
 

Method Detail

getBankDescription

public java.lang.String getBankDescription()
Query to see get a string description of the current memory bank.
Returns:
String containing the memory bank description

isGeneralPurposeMemory

public boolean isGeneralPurposeMemory()
Query to see if the current memory bank is general purpose user memory. If it is NOT then it is Memory-Mapped and writing values to this memory will affect the behavior of the 1-Wire device.
Returns:
'true' if current memory bank is general purpose

getSize

public int getSize()
Query to get the size of the memory bank in bytes.
Returns:
number of bytes in current memory bank

isReadWrite

public boolean isReadWrite()
Query to see if current memory bank is read/write.
Returns:
'true' if current memory bank is read/write

isWriteOnce

public boolean isWriteOnce()
Query to see if current memory bank is write write once such as with EPROM technology.
Returns:
'true' if current memory bank can only be written once

isReadOnly

public boolean isReadOnly()
Query to see if current memory bank is read only.
Returns:
'true' if current memory bank can only be read

isNonVolatile

public boolean isNonVolatile()
Query to see if current memory bank non-volatile. Memory is non-volatile if it retains its contents even when removed from the 1-Wire network.
Returns:
'true' if current memory bank non volatile.

needsProgramPulse

public boolean needsProgramPulse()
Query to see if current memory bank pages need the adapter to have a 'ProgramPulse' in order to write to the memory.
Returns:
'true' if writing to the current memory bank pages requires a 'ProgramPulse'.

needsPowerDelivery

public boolean needsPowerDelivery()
Query to see if current memory bank pages need the adapter to have a 'PowerDelivery' feature in order to write to the memory.
Returns:
'true' if writing to the current memory bank pages requires 'PowerDelivery'.

getStartPhysicalAddress

public int getStartPhysicalAddress()
Query to get the starting physical address of this bank. Physical banks are sometimes sub-divided into logical banks due to changes in attributes.
Returns:
physical starting address of this logical bank.

setWriteVerification

public void setWriteVerification(boolean doReadVerf)
Set the write verification for the 'write()' method.
Parameters:
doReadVerf - true (default) verify write in 'write' false, don't verify write (used on Write-Once bit manipulation)

read

public void read(int startAddr,
                 boolean readContinue,
                 byte[] readBuf,
                 int offset,
                 int len)
          throws OneWireIOException,
                 OneWireException
Read memory in the current bank with no CRC checking (device or data). The resulting data from this API may or may not be what is on the 1-Wire device. It is recommends that the data contain some kind of checking (CRC) like in the readPagePacket() method or have the 1-Wire device provide the CRC as in readPageCRC(). readPageCRC() however is not supported on all memory types, see 'hasPageAutoCRC()'. If neither is an option then this method could be called more then once to at least verify that the same thing is read consistantly.
Parameters:
startAddr - starting address
readContinue - if 'true' then device read is continued without re-selecting. This can only be used if the new read() continious where the last one led off and it is inside a 'beginExclusive/endExclusive' block.
readBuf - byte array to place read data into
offset - offset into readBuf to place data
len - length in bytes to read
Throws:
OneWireIOException -  
OneWireException -  

write

public void write(int startAddr,
                  byte[] writeBuf,
                  int offset,
                  int len)
           throws OneWireIOException,
                  OneWireException
Write memory in the current bank. It is recommended that when writing data that some structure in the data is created to provide error free reading back with read(). Or the method 'writePagePacket()' could be used which automatically wraps the data in a length and CRC. When using on Write-Once devices care must be taken to write into into empty space. If write() is used to write over an unlocked page on a Write-Once device it will fail. If write verification is turned off with the method 'setWriteVerification(false)' then the result will be an 'AND' of the existing data and the new data.
Parameters:
startAddr - starting address
writeBuf - byte array containing data to write
offset - offset into writeBuf to get data
len - length in bytes to write
Throws:
OneWireIOException -  
OneWireException -