com.dalsemi.onewire.container
Class OneWireContainer33

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

public class OneWireContainer33
extends OneWireContainer

1-Wire® container for the '1K-Bit protected 1-Wire EEPROM with SHA-1 Engine' family type 33 (hex), Dallas Semiconductor part number: DS1961S,DS2432.

Features

The memory can also be accessed through the objects that are returned from the getMemoryBanks method.

The following is a list of the MemoryBank instances that are returned:

Example 1

Display some features of isMACValid where owd is an instanceof OneWireContainer33 and bank is an instanceof PagedMemoryBank:
 
  byte[] read_buf  = new byte [bank.getPageLength()];
  byte[] extra_buf = new byte [bank.getExtraInfoLength()];
  byte[] challenge = new byte [8];

  // read a page (use the most verbose and secure method)
  if (bank.hasPageAutoCRC())
  {
     System.out.println("Using device generated CRC");

     if (bank.hasExtraInfo())
     {
        bank.readPageCRC(pg, false, read_buf, 0, extra_buf);

        owd.getChallenge(challenge);
        owd.getSecret(secret);
        sernum = owd.getAddress();
        macvalid = owd.isMACValid(bank.getStartPhysicalAddress()+pg*bank.getPageLength(),
                                  sernum,read_buf,extra_buf,challenge,secret);
     }
     else
        bank.readPageCRC(pg, false, read_buf, 0);
  }
  else
  {
     if (bank.hasExtraInfo())
        bank.readPage(pg, false, read_buf, 0, extra_buf);
     else
        bank.readPage(pg, false, read_buf, 0);
  }
  

Version:
0.00, 19 Dec 2000

Constructor Summary
OneWireContainer33()
          Constructor OneWireContainer33
OneWireContainer33(DSPortAdapter sourceAdapter, byte[] newAddress)
          Create a container with a provided adapter object and the address of the iButton or 1-Wire device.
OneWireContainer33(DSPortAdapter sourceAdapter, long newAddress)
          Create a container with a provided adapter object and the address of the iButton or 1-Wire device.
OneWireContainer33(DSPortAdapter sourceAdapter, String newAddress)
          Create a container with a provided adapter object and the address of the iButton or 1-Wire device.
 
Method Summary
 void computeNextSecret(int addr, byte[] nextsecret, byte[] partialsecret, byte[] mac)
          Compute Next Secret
 String getAlternateNames()
          Retrieve the alternate Dallas Semiconductor part numbers or names.
 void getChallenge(byte[] get)
          Get the challenge of this device as an array of bytes.
 String getDescription()
          Retrieve a short description of the function of the iButton type.
 int getMaxSpeed()
          Returns the maximum speed this iButton can communicate at.
 Enumeration getMemoryBanks()
          Get an enumeration of memory bank instances that implement one or more of the following interfaces: MemoryBank, PagedMemoryBank, and OTPMemoryBank.
 String getName()
          Retrieve the Dallas Semiconductor part number of the iButton as a string.
 void getSecret(byte[] get)
          Get the secret of this device as an array of bytes.
 boolean isContainerSecretSet()
          Get the current status of the secret.
static boolean isMACValid(int addr, byte[] SerNum, byte[] memory, byte[] mac, byte[] challenge, byte[] secret)
          Authenticates page data given a MAC.
 boolean isPageOneEPROMmode()
          Get the status of page zero, if it is in EPROM mode.
 boolean isSecretWriteProtected()
          Get the status of the secret, if it is write protected.
 boolean isWriteProtectAllSet()
          Get the status of all the pages, if they are write protected.
 boolean isWriteProtectPageZeroSet()
          Get the status of page zero, if it is write protected.
 boolean loadFirstSecret(byte[] data)
          Load First Secret
 void setChallenge(byte[] challengeset)
          Sets the challenge for the Read Authenticate Page
 void setContainerSecret(byte[] secretset)
          Sets the bus master secret for this DS2432.
 void setEPROMModePageOne()
          Sets the DS2432 in EPROM mode for page 1.
 void setupContainer(DSPortAdapter sourceAdapter, byte[] newAddress)
          Provide this container the adapter object used to access this device and provide the address of this iButton or 1-Wire device.
 void setupContainer(DSPortAdapter sourceAdapter, long newAddress)
          Provide this container the adapter object used to access this device and provide the address of this iButton or 1-Wire device.
 void setupContainer(DSPortAdapter sourceAdapter, String newAddress)
          Provide this container the adapter object used to access this device and provide the address of this iButton or 1-Wire device.
 void writeProtectAll()
          Write protect pages 0 to 3
 void writeProtectPageZero()
          Write protect page 0 only.
 void writeProtectSecret()
          Write protects the secret for the DS2432.
 
Methods inherited from class com.dalsemi.onewire.container.OneWireContainer
doSpeed, getAdapter, getAddress, getAddressAsLong, getAddressAsString, isAlarming, isPresent, setSpeed
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

OneWireContainer33

public OneWireContainer33()
Constructor OneWireContainer33

OneWireContainer33

public OneWireContainer33(DSPortAdapter sourceAdapter,
                          byte[] newAddress)
Create a container with a provided adapter object and the address of the iButton or 1-Wire device.
Parameters:
sourceAdapter - adapter object required to communicate with this iButton.
newAddress - address of this 1-Wire device

OneWireContainer33

public OneWireContainer33(DSPortAdapter sourceAdapter,
                          long newAddress)
Create a container with a provided adapter object and the address of the iButton or 1-Wire device.
Parameters:
sourceAdapter - adapter object required to communicate with this iButton.
newAddress - address of this 1-Wire device

OneWireContainer33

public OneWireContainer33(DSPortAdapter sourceAdapter,
                          String newAddress)
Create a container with a provided adapter object and the address of the iButton or 1-Wire device.
Parameters:
sourceAdapter - adapter object required to communicate with this iButton.
newAddress - address of this 1-Wire device
Method Detail

setupContainer

public void setupContainer(DSPortAdapter sourceAdapter,
                           byte[] newAddress)
Provide this container the adapter object used to access this device and provide the address of this iButton or 1-Wire device.
Overrides:
setupContainer in class OneWireContainer
Parameters:
sourceAdapter - adapter object required to communicate with this iButton.
newAddress - address of this 1-Wire device

setupContainer

public void setupContainer(DSPortAdapter sourceAdapter,
                           long newAddress)
Provide this container the adapter object used to access this device and provide the address of this iButton or 1-Wire device.
Overrides:
setupContainer in class OneWireContainer
Parameters:
sourceAdapter - adapter object required to communicate with this iButton.
newAddress - address of this 1-Wire device

setupContainer

public void setupContainer(DSPortAdapter sourceAdapter,
                           String newAddress)
Provide this container the adapter object used to access this device and provide the address of this iButton or 1-Wire device.
Overrides:
setupContainer in class OneWireContainer
Parameters:
sourceAdapter - adapter object required to communicate with this iButton.
newAddress - address of this 1-Wire device

getName

public String getName()
Retrieve the Dallas Semiconductor part number of the iButton as a string. For example 'DS1992'.
Overrides:
getName in class OneWireContainer
Returns:
string represetation of the iButton name.

getAlternateNames

public String getAlternateNames()
Retrieve the alternate Dallas Semiconductor part numbers or names. A 'family' of MicroLAN devices may have more than one part number depending on packaging.
Overrides:
getAlternateNames in class OneWireContainer
Returns:
the alternate names for this iButton or 1-Wire device

getDescription

public String getDescription()
Retrieve a short description of the function of the iButton type.
Overrides:
getDescription in class OneWireContainer
Returns:
string represetation of the function description.

getMaxSpeed

public int getMaxSpeed()
Returns the maximum speed this iButton can communicate at.
Overrides:
getMaxSpeed in class OneWireContainer
Returns:
max. communication speed.

getMemoryBanks

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

setContainerSecret

public void setContainerSecret(byte[] secretset)
Sets the bus master secret for this DS2432.
Parameters:
secretset - Secret for this DS2432.

setChallenge

public void setChallenge(byte[] challengeset)
Sets the challenge for the Read Authenticate Page
Parameters:
challengeset - Challenge for all the memory banks.

getSecret

public void getSecret(byte[] get)
Get the secret of this device as an array of bytes.
Parameters:
get - array of bytes containing the iButton secret

getChallenge

public void getChallenge(byte[] get)
Get the challenge of this device as an array of bytes.
Parameters:
get - array of bytes containing the iButton challenge

isContainerSecretSet

public boolean isContainerSecretSet()
                             throws OneWireIOException,
                                    OneWireException
Get the current status of the secret.
Returns:
boolean telling if the secret is set
Throws:
OneWireIOException -  
OneWireException -  

isSecretWriteProtected

public boolean isSecretWriteProtected()
                               throws OneWireIOException,
                                      OneWireException
Get the status of the secret, if it is write protected.
Returns:
boolean telling if the secret is write protected.
Throws:
OneWireIOException -  
OneWireException -  

isPageOneEPROMmode

public boolean isPageOneEPROMmode()
                           throws OneWireIOException,
                                  OneWireException
Get the status of page zero, if it is in EPROM mode.
Returns:
boolean telling if page zero is in EPROM mode.
Throws:
OneWireIOException -  
OneWireException -  

isWriteProtectAllSet

public boolean isWriteProtectAllSet()
                             throws OneWireIOException,
                                    OneWireException
Get the status of all the pages, if they are write protected.
Returns:
boolean telling if all the pages are write protected.
Throws:
OneWireIOException -  
OneWireException -  

isWriteProtectPageZeroSet

public boolean isWriteProtectPageZeroSet()
                                  throws OneWireIOException,
                                         OneWireException
Get the status of page zero, if it is write protected.
Returns:
boolean telling if page zero is write protected.
Throws:
OneWireIOException -  
OneWireException -  

writeProtectSecret

public void writeProtectSecret()
                        throws OneWireIOException,
                               OneWireException
Write protects the secret for the DS2432.

writeProtectAll

public void writeProtectAll()
                     throws OneWireIOException,
                            OneWireException
Write protect pages 0 to 3

setEPROMModePageOne

public void setEPROMModePageOne()
                         throws OneWireIOException,
                                OneWireException
Sets the DS2432 in EPROM mode for page 1.

writeProtectPageZero

public void writeProtectPageZero()
                          throws OneWireIOException,
                                 OneWireException
Write protect page 0 only.

computeNextSecret

public void computeNextSecret(int addr,
                              byte[] nextsecret,
                              byte[] partialsecret,
                              byte[] mac)
                       throws OneWireIOException,
                              OneWireException
Compute Next Secret
Parameters:
addr - address of page to use for the next secret computation.
nextsecret - new secret for this DS2432.
parialsecret - the data to put into the scrathpad in computing next secret.

loadFirstSecret

public boolean loadFirstSecret(byte[] data)
                        throws OneWireIOException,
                               OneWireException
Load First Secret
Returns:
boolean saying if first secret was loaded
Throws:
OneWireIOException -  
OneWireException -  

isMACValid

public static boolean isMACValid(int addr,
                                 byte[] SerNum,
                                 byte[] memory,
                                 byte[] mac,
                                 byte[] challenge,
                                 byte[] secret)
                          throws OneWireException,
                                 OneWireIOException
Authenticates page data given a MAC.
Parameters:
addr - address of the data to be read
memory - the memory read from the page
mac - the MAC calculated for this function given back as the extra info
challenge - the 8 bytes of the scratch pad used in calculating the mac
Throws:
OneWireIOException -  
OneWireException -