MemoryBankScratch Class Reference

Inherits com::dalsemi::onewire::container::PagedMemoryBank, and com::dalsemi::onewire::container::ScratchPad.

Inherited by MemoryBankScratchEE, and MemoryBankScratchEx.

List of all members.


Detailed Description

Memory bank class for the Scratchpad section of NVRAM iButtons and 1-Wire devices.

Version:
0.00, 28 Aug 2000
Author:
DS

Public Member Functions

 MemoryBankScratch (OneWireContainer ibutton)
 Memory bank contstuctor.
String getBankDescription ()
 Query to see get a string description of the current memory bank.
boolean isGeneralPurposeMemory ()
 Query to see if the current memory bank is general purpose user memory.
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 isReadOnly ()
 Query to see if current memory bank is read only.
boolean isNonVolatile ()
 Query to see if current memory bank non-volatile.
boolean needsProgramPulse ()
 Query to see if current memory bank pages need the adapter to have a 'ProgramPulse' in order to write to the memory.
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.
int getStartPhysicalAddress ()
 Query to get the starting physical address of this bank.
int getSize ()
 Query to get the memory bank size in bytes.
int getNumberPages ()
 Query to get the number of pages in current memory bank.
int getPageLength ()
 Query to get page length in bytes in current memory bank.
int getMaxPacketDataLength ()
 Query to get Maximum data page length in bytes for a packet read or written in the current memory bank.
boolean hasPageAutoCRC ()
 Query to see if current memory bank pages can be read with the contents being verified by a device generated CRC.
boolean haveExtraInfo ()
 Query to see if current memory bank pages when read deliver extra information outside of the normal data space.
boolean hasExtraInfo ()
 Checks to see if this memory bank's pages deliver extra information outside of the normal data space, when read.
int getExtraInfoLength ()
 Query to get the length in bytes of extra information that is read when read a page in the current memory bank.
String getExtraInfoDescription ()
 Query to get a string description of what is contained in the Extra Informationed return when reading pages in the current memory bank.
void setWriteVerification (boolean doReadVerf)
 Set the write verification for the 'write()' method.
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).
void write (int startAddr, byte[] writeBuf, int offset, int len) throws OneWireIOException, OneWireException
 Write memory in the current bank.
void readPage (int page, boolean readContinue, byte[] readBuf, int offset) throws OneWireIOException, OneWireException
 Read page in the current bank with no CRC checking (device or data).
void readPage (int page, boolean readContinue, byte[] readBuf, int offset, byte[] extraInfo) throws OneWireIOException, OneWireException
 Read page with extra information in the current bank with no CRC checking (device or data).
int readPagePacket (int page, boolean readContinue, byte[] readBuf, int offset) throws OneWireIOException, OneWireException
 Read a Universal Data Packet.
int readPagePacket (int page, boolean readContinue, byte[] readBuf, int offset, byte[] extraInfo) throws OneWireIOException, OneWireException
 Read a Universal Data Packet and extra information.
void writePagePacket (int page, byte[] writeBuf, int offset, int len) throws OneWireIOException, OneWireException
 Write a Universal Data Packet.
void readPageCRC (int page, boolean readContinue, byte[] readBuf, int offset) throws OneWireIOException, OneWireException
 Read a complete memory page with CRC verification provided by the device.
void readPageCRC (int page, boolean readContinue, byte[] readBuf, int offset, byte[] extraInfo) throws OneWireIOException, OneWireException
 Read a complete memory page with CRC verification provided by the device with extra information.
void readScratchpad (byte[] readBuf, int offset, int len, byte[] extraInfo) throws OneWireIOException, OneWireException
 Read the scratchpad page of memory from a NVRAM device This method reads and returns the entire scratchpad after the byte offset regardless of the actual ending offset.
void writeScratchpad (int startAddr, byte[] writeBuf, int offset, int len) throws OneWireIOException, OneWireException
 Write to the scratchpad page of memory a NVRAM device.
void copyScratchpad (int startAddr, int len) throws OneWireIOException, OneWireException
 Copy the scratchpad page to memory.
void copyScratchpad (int startAddr, int len, boolean WriteProtect) throws OneWireIOException, OneWireException
 Copy the scratchpad page to memory.
void checkSpeed () throws OneWireIOException, OneWireException
 Check the device speed if has not been done before or if an error was detected.
void forceVerify ()
 Set the flag to indicate the next 'checkSpeed()' will force a speed set and verify 'doSpeed()'.

Static Public Attributes

static final byte WRITE_SCRATCHPAD_COMMAND = ( byte ) 0x0F
 Write Scratchpad Command.
static final byte READ_SCRATCHPAD_COMMAND = ( byte ) 0xAA
 Read Scratchpad Command.

Protected Attributes

OneWireContainer ib
 Reference to the OneWireContainer this bank resides on.
byte[] ffBlock
 block of 0xFF's used for faster read pre-fill of 1-Wire blocks
byte COPY_SCRATCHPAD_COMMAND
 Copy Scratchpad Command.
boolean doSetSpeed
 Flag to indicate that speed needs to be set.
int size
 Size of memory bank in bytes.
String bankDescription
 Memory bank descriptions.
boolean generalPurposeMemory
 Memory bank usage flags.
boolean readWrite
 Flag if memory bank is read/write.
boolean writeOnce
 Flag if memory bank is write once (EPROM).
boolean readOnly
 Flag if memory bank is read only.
boolean nonVolatile
 Flag if memory bank is non volatile (will not erase when power removed).
boolean programPulse
 Flag if memory bank needs program Pulse to write.
boolean powerDelivery
 Flag if memory bank needs power delivery to write.
int startPhysicalAddress
 Starting physical address in memory bank.
boolean writeVerification
 Flag if read back verification is enabled in 'write()'.
int numberPages
 Number of pages in memory bank.
int pageLength
 page length in memory bank
int maxPacketDataLength
 Max data length in page packet in memory bank.
boolean pageAutoCRC
 Flag if memory bank has page auto-CRC generation.
boolean extraInfo
 Flag if reading a page in memory bank provides optional extra information (counter, tamper protection, SHA-1.
int extraInfoLength
 Length of extra information when reading a page in memory bank.
String extraInfoDescription
 Extra information descriptoin when reading page in memory bank.

Constructor & Destructor Documentation

Memory bank contstuctor.

Requires reference to the OneWireContainer this memory bank resides on.


Member Function Documentation

String getBankDescription (  ) 

Query to see get a string description of the current memory bank.

Returns:
String containing the memory bank description

Implements MemoryBank.

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

Implements MemoryBank.

boolean isReadWrite (  ) 

Query to see if current memory bank is read/write.

Returns:
'true' if current memory bank is read/write

Implements MemoryBank.

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

Implements MemoryBank.

boolean isReadOnly (  ) 

Query to see if current memory bank is read only.

Returns:
'true' if current memory bank can only be read

Implements MemoryBank.

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.

Implements MemoryBank.

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'.

Implements MemoryBank.

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'.

Implements MemoryBank.

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.

Implements MemoryBank.

int getSize (  ) 

Query to get the memory bank size in bytes.

Returns:
memory bank size in bytes.

Implements MemoryBank.

int getNumberPages (  ) 

Query to get the number of pages in current memory bank.

Returns:
number of pages in current memory bank

Implements PagedMemoryBank.

int getPageLength (  ) 

Query to get page length in bytes in current memory bank.

Returns:
page length in bytes in current memory bank

Implements PagedMemoryBank.

int getMaxPacketDataLength (  ) 

Query to get Maximum data page length in bytes for a packet read or written in the current memory bank.

See the 'ReadPagePacket()' and 'WritePagePacket()' methods. This method is only usefull if the current memory bank is general purpose memory.

Returns:
max packet page length in bytes in current memory bank

Implements PagedMemoryBank.

boolean hasPageAutoCRC (  ) 

Query to see if current memory bank pages can be read with the contents being verified by a device generated CRC.

This is used to see if the 'ReadPageCRC()' can be used.

Returns:
'true' if current memory bank can be read with self generated CRC.

Implements PagedMemoryBank.

boolean haveExtraInfo (  ) 

Query to see if current memory bank pages when read deliver extra information outside of the normal data space.

Examples of this may be a redirection byte, counter, tamper protection bytes, or SHA-1 result. If this method returns true then the methods 'ReadPagePacket()' and 'readPageCRC()' with 'extraInfo' parameter can be used.

Returns:
'true' if reading the current memory bank pages provides extra information.
Deprecated:
As of 1-Wire API 0.01, replaced by hasExtraInfo()

Implements PagedMemoryBank.

boolean hasExtraInfo (  ) 

Checks to see if this memory bank's pages deliver extra information outside of the normal data space, when read.

Examples of this may be a redirection byte, counter, tamper protection bytes, or SHA-1 result. If this method returns true then the methods with an 'extraInfo' parameter can be used: readPage, readPageCRC, and readPagePacket.

Returns:
true if reading the this memory bank's pages provides extra information
See also:
readPage(int,boolean,byte[],int,byte[]) readPage(extra)

readPageCRC(int,boolean,byte[],int,byte[]) readPageCRC(extra)

readPagePacket(int,boolean,byte[],int,byte[]) readPagePacket(extra)

Since:
1-Wire API 0.01

Implements PagedMemoryBank.

int getExtraInfoLength (  ) 

Query to get the length in bytes of extra information that is read when read a page in the current memory bank.

See 'hasExtraInfo()'.

Returns:
number of bytes in Extra Information read when reading pages in the current memory bank.

Implements PagedMemoryBank.

String getExtraInfoDescription (  ) 

Query to get a string description of what is contained in the Extra Informationed return when reading pages in the current memory bank.

See 'hasExtraInfo()'.

Returns:
string describing extra information.

Implements PagedMemoryBank.

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)

Implements MemoryBank.

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
Exceptions:
OneWireIOException 
OneWireException 

Implements MemoryBank.

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
Exceptions:
OneWireIOException 
OneWireException 

Implements MemoryBank.

Reimplemented in MemoryBankScratchSHAEE.

void readPage ( int  page,
boolean  readContinue,
byte[]  readBuf,
int  offset 
) throws OneWireIOException, OneWireException

Read page 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:
page page number to read packet from
readContinue if 'true' then device read is continued without re-selecting. This can only be used if the new readPage() 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
Exceptions:
OneWireIOException 
OneWireException 

Implements PagedMemoryBank.

void readPage ( int  page,
boolean  readContinue,
byte[]  readBuf,
int  offset,
byte[]  extraInfo 
) throws OneWireIOException, OneWireException

Read page with extra information 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. See the method 'hasExtraInfo()' for a description of the optional extra information some devices have.

Parameters:
page page number to read packet from
readContinue if 'true' then device read is continued without re-selecting. This can only be used if the new readPage() 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
extraInfo byte array to put extra info read into
Exceptions:
OneWireIOException 
OneWireException 

Implements PagedMemoryBank.

int readPagePacket ( int  page,
boolean  readContinue,
byte[]  readBuf,
int  offset 
) throws OneWireIOException, OneWireException

Read a Universal Data Packet.

The Universal Data Packet always starts on page boundaries but can end anywhere in the page. The structure specifies the length of data bytes not including the length byte and the CRC16 bytes. There is one length byte. The CRC16 is first initialized to the page number. This provides a check to verify the page that was intended is being read. The CRC16 is then calculated over the length and data bytes. The CRC16 is then inverted and stored low byte first followed by the high byte. This is structure is used by this method to verify the data but is not returned, only the data payload is returned.

Parameters:
page page number to read packet from
readContinue if 'true' then device read is continued without re-selecting. This can only be used if the new readPagePacket() continious where the last one stopped and it is inside a 'beginExclusive/endExclusive' block.
readBuf byte array to put data read. Must have at least 'getMaxPacketDataLength()' elements.
offset offset into readBuf to place data
Returns:
number of data bytes read from the device and written to readBuf at the offset.
Exceptions:
OneWireIOException 
OneWireException 

Implements PagedMemoryBank.

int readPagePacket ( int  page,
boolean  readContinue,
byte[]  readBuf,
int  offset,
byte[]  extraInfo 
) throws OneWireIOException, OneWireException

Read a Universal Data Packet and extra information.

See the method 'readPagePacket()' for a description of the packet structure. See the method 'hasExtraInfo()' for a description of the optional extra information some devices have.

Parameters:
page page number to read packet from
readContinue if 'true' then device read is continued without re-selecting. This can only be used if the new readPagePacket() continious where the last one stopped and it is inside a 'beginExclusive/endExclusive' block.
readBuf byte array to put data read. Must have at least 'getMaxPacketDataLength()' elements.
offset offset into readBuf to place data
extraInfo byte array to put extra info read into
Returns:
number of data bytes read from the device and written to readBuf at the offset.
Exceptions:
OneWireIOException 
OneWireException 

Implements PagedMemoryBank.

void writePagePacket ( int  page,
byte[]  writeBuf,
int  offset,
int  len 
) throws OneWireIOException, OneWireException

Write a Universal Data Packet.

See the method 'readPagePacket()' for a description of the packet structure.

Parameters:
page page number to write packet to
writeBuf data byte array to write
offset offset into writeBuf where data to write is
len number of bytes to write
Exceptions:
OneWireIOException 
OneWireException 

Implements PagedMemoryBank.

void readPageCRC ( int  page,
boolean  readContinue,
byte[]  readBuf,
int  offset 
) throws OneWireIOException, OneWireException

Read a complete memory page with CRC verification provided by the device.

Not supported by all devices. See the method 'hasPageAutoCRC()'.

Parameters:
page page number to read
readContinue if 'true' then device read is continued without re-selecting. This can only be used if the new readPagePacket() continious where the last one stopped and it is inside a 'beginExclusive/endExclusive' block.
readBuf byte array to put data read. Must have at least 'getMaxPacketDataLength()' elements.
offset offset into readBuf to place data
Exceptions:
OneWireIOException 
OneWireException 

Implements PagedMemoryBank.

Reimplemented in MemoryBankScratchCRC, MemoryBankScratchCRCPW, and MemoryBankScratchSHAEE.

void readPageCRC ( int  page,
boolean  readContinue,
byte[]  readBuf,
int  offset,
byte[]  extraInfo 
) throws OneWireIOException, OneWireException

Read a complete memory page with CRC verification provided by the device with extra information.

Not supported by all devices. See the method 'hasPageAutoCRC()'. See the method 'hasExtraInfo()' for a description of the optional extra information.

Parameters:
page page number to read
readContinue if 'true' then device read is continued without re-selecting. This can only be used if the new readPagePacket() continious where the last one stopped and it is inside a 'beginExclusive/endExclusive' block.
readBuf byte array to put data read. Must have at least 'getMaxPacketDataLength()' elements.
offset offset into readBuf to place data
extraInfo byte array to put extra info read into
Exceptions:
OneWireIOException 
OneWireException 

Implements PagedMemoryBank.

Reimplemented in MemoryBankScratchCRC, MemoryBankScratchCRCPW, and MemoryBankScratchSHAEE.

void readScratchpad ( byte[]  readBuf,
int  offset,
int  len,
byte[]  extraInfo 
) throws OneWireIOException, OneWireException

Read the scratchpad page of memory from a NVRAM device This method reads and returns the entire scratchpad after the byte offset regardless of the actual ending offset.

Parameters:
readBuf byte array to place read data into length of array is always pageLength.
offset offset into readBuf to pug data
len length in bytes to read
extraInfo byte array to put extra info read into (TA1, TA2, e/s byte) length of array is always extraInfoLength. Can be 'null' if extra info is not needed.
Exceptions:
OneWireIOException 
OneWireException 

Implements ScratchPad.

Reimplemented in MemoryBankScratchCRC, MemoryBankScratchCRCPW, and MemoryBankScratchSHAEE.

void writeScratchpad ( int  startAddr,
byte[]  writeBuf,
int  offset,
int  len 
) throws OneWireIOException, OneWireException

Write to the scratchpad page of memory a NVRAM device.

Parameters:
startAddr starting address
writeBuf byte array containing data to write
offset offset into readBuf to place data
len length in bytes to write
Exceptions:
OneWireIOException 
OneWireException 

Implements ScratchPad.

Reimplemented in MemoryBankScratchCRCPW, MemoryBankScratchEE, MemoryBankScratchEx, MemoryBankScratchSHA, and MemoryBankScratchSHAEE.

void copyScratchpad ( int  startAddr,
int  len 
) throws OneWireIOException, OneWireException

Copy the scratchpad page to memory.

Parameters:
startAddr starting address
len length in bytes that was written already
Exceptions:
OneWireIOException 
OneWireException 

Implements ScratchPad.

Reimplemented in MemoryBankScratchCRCPW, MemoryBankScratchEE, MemoryBankScratchEx, and MemoryBankScratchSHAEE.

void copyScratchpad ( int  startAddr,
int  len,
boolean  WriteProtect 
) throws OneWireIOException, OneWireException

Copy the scratchpad page to memory.

Parameters:
startAddr starting address
len length in bytes that was written already
Exceptions:
OneWireIOException 
OneWireException 

void checkSpeed (  )  throws OneWireIOException, OneWireException

Check the device speed if has not been done before or if an error was detected.

Exceptions:
OneWireIOException 
OneWireException 

Implements ScratchPad.


Member Data Documentation

int startPhysicalAddress [protected]

Starting physical address in memory bank.

Needed for different types of memory in the same logical memory bank. This can be used to seperate them into two virtual memory banks. Example: DS2406 status page has mixed EPROM and Volatile RAM.

boolean extraInfo [protected]

Flag if reading a page in memory bank provides optional extra information (counter, tamper protection, SHA-1.

..)


The documentation for this class was generated from the following file:

Generated on Thu Aug 28 15:42:33 2008 for 1-Wire API for .NET by  doxygen 1.5.6