|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--com.dalsemi.onewire.container.OneWireContainer | +--com.dalsemi.onewire.container.OneWireContainer33
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.
The memory can also be accessed through the objects that are returned
from the getMemoryBanks
method.
MemoryBank
,
PagedMemoryBank
MemoryBank
,
PagedMemoryBank
MemoryBank
,
PagedMemoryBank
MemoryBank
,
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,0);
owd.getContainerSecret(secret, 0);
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);
}
SHAiButtonUser33
Constructor Summary | |
OneWireContainer33()
Default 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 | |
boolean |
bindSecretToiButton(int pageNum,
byte[] bindData)
Binds an installed secret to a DS1961S/DS2432 by using well-known binding data and the DS1961S/DS2432's unique address. |
void |
computeNextSecret(int pageNum)
Compute Next Secret using the current contents of data page and scratchpad. |
void |
computeNextSecret(int pageNum,
byte[] partialsecret,
int offset)
Compute Next Secret |
boolean |
copyScratchpad(int targetPage,
int targetPageOffset)
Copy all 8 bytes of the Sratch Pad to a certain page and offset in memory. |
boolean |
copyScratchpad(int targetPage,
int targetPageOffset,
byte[] copy_auth,
int authStart)
Copy all 8 bytes of the Sratch Pad to a certain page and offset in memory. |
String |
getAlternateNames()
Retrieve the alternate Dallas Semiconductor part numbers or names. |
void |
getChallenge(byte[] get,
int offset)
Get the challenge of this device as an array of bytes. |
void |
getContainerSecret(byte[] secretBuf,
int offset)
Get the secret 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. |
MemoryBankSHAEE |
getMemoryBankForPage(int page)
Returns the instance of the memory bank for a particular page |
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. |
MemoryBankScratchSHAEE |
getScratchpadMemoryBank()
Returns the instance of the Scratchpad memory bank. |
MemoryBankSHAEE |
getStatusPageMemoryBank()
Returns the instance of the Status page memory bank. |
boolean |
installMasterSecret(int page,
byte[] newSecret)
Installs a secret on a DS1961S/DS2432. |
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()
Tells if page one 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,
int offset)
Load First Secret |
boolean |
readAuthenticatedPage(int page,
byte[] pagedata,
int offset,
byte[] computed_mac,
int macStart)
Reads and authenticates a page. |
boolean |
readMemoryPage(int page,
byte[] pageData,
int offset)
Reads a page of memory.. |
void |
readScratchpad(byte[] scratchpad,
int offset,
byte[] extraInfo)
Read from the Scratch Pad, which is a max of 8 bytes. |
boolean |
refreshPage(int page)
Refreshes all 32 bytes of data on a given page. |
boolean |
refreshPage(int page,
int offset)
Refreshes a particular 8-byte set of data on a given page. |
void |
setChallenge(byte[] challengeset,
int offset)
Sets the challenge for the Read Authenticate Page |
void |
setContainerSecret(byte[] newSecret,
int offset)
Sets the bus master secret for this DS2432. |
void |
setEPROMModePageOne()
Sets the 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. |
boolean |
writeDataPage(int targetPage,
byte[] pageData)
Writes a data page to the DS1961S/DS2432. |
boolean |
writeDataPage(int targetPage,
byte[] pageData,
int offset)
Writes a data page to the DS1961S/DS2432. |
void |
writeProtectAll()
Write protect pages 0 to 3 |
void |
writeProtectPageZero()
Write protect page zero only. |
void |
writeProtectSecret()
Write protects the secret for the DS2432. |
boolean |
writeScratchpad(int targetPage,
int targetPageOffset,
byte[] inputbuffer,
int start,
int length)
Writes data to the scratchpad. |
Methods inherited from class com.dalsemi.onewire.container.OneWireContainer |
doSpeed, equals, getAdapter, getAddress, getAddressAsLong, getAddressAsString, hashCode, isAlarming, isPresent, setSpeed, toString |
Methods inherited from class java.lang.Object |
getClass, notify, notifyAll, wait, wait, wait |
Constructor Detail |
public OneWireContainer33()
public OneWireContainer33(DSPortAdapter sourceAdapter, byte[] newAddress)
sourceAdapter
- adapter object required to communicate with
this iButton.newAddress
- address of this 1-Wire devicepublic OneWireContainer33(DSPortAdapter sourceAdapter, long newAddress)
sourceAdapter
- adapter object required to communicate with
this iButton.newAddress
- address of this 1-Wire devicepublic OneWireContainer33(DSPortAdapter sourceAdapter, String newAddress)
sourceAdapter
- adapter object required to communicate with
this iButton.newAddress
- address of this 1-Wire deviceMethod Detail |
public void setupContainer(DSPortAdapter sourceAdapter, byte[] newAddress)
setupContainer
in class OneWireContainer
sourceAdapter
- adapter object required to communicate with
this iButton.newAddress
- address of this 1-Wire devicepublic void setupContainer(DSPortAdapter sourceAdapter, long newAddress)
setupContainer
in class OneWireContainer
sourceAdapter
- adapter object required to communicate with
this iButton.newAddress
- address of this 1-Wire devicepublic void setupContainer(DSPortAdapter sourceAdapter, String newAddress)
setupContainer
in class OneWireContainer
sourceAdapter
- adapter object required to communicate with
this iButton.newAddress
- address of this 1-Wire devicepublic String getName()
getName
in class OneWireContainer
public String getAlternateNames()
getAlternateNames
in class OneWireContainer
public String getDescription()
getDescription
in class OneWireContainer
public int getMaxSpeed()
getMaxSpeed
in class OneWireContainer
public Enumeration getMemoryBanks()
MemoryBank
,
PagedMemoryBank
,
and OTPMemoryBank
.getMemoryBanks
in class OneWireContainer
Enumeration
of memory bankspublic MemoryBankScratchSHAEE getScratchpadMemoryBank()
public MemoryBankSHAEE getStatusPageMemoryBank()
public MemoryBankSHAEE getMemoryBankForPage(int page)
page
- the page for the requested memory bank;public void setContainerSecret(byte[] newSecret, int offset)
newSecret
- Secret for this DS2432.offset
- index into array to copy the secret frompublic void getContainerSecret(byte[] secretBuf, int offset)
secretBuf
- array of bytes for holding the container secretoffset
- index into array to copy the secret topublic boolean isContainerSecretSet() throws OneWireIOException, OneWireException
OneWireIOException
- OneWireException
- public boolean isSecretWriteProtected() throws OneWireIOException, OneWireException
OneWireIOException
- OneWireException
- public void setChallenge(byte[] challengeset, int offset)
challengeset
- Challenge for all the memory banks.public void getChallenge(byte[] get, int offset)
get
- array of bytes containing the iButton challengepublic boolean isWriteProtectAllSet() throws OneWireIOException, OneWireException
OneWireIOException
- OneWireException
- public void writeProtectSecret() throws OneWireIOException, OneWireException
public void writeProtectAll() throws OneWireIOException, OneWireException
public void setEPROMModePageOne() throws OneWireIOException, OneWireException
public boolean isPageOneEPROMmode() throws OneWireIOException, OneWireException
OneWireIOException
- OneWireException
- public void writeProtectPageZero() throws OneWireIOException, OneWireException
public boolean isWriteProtectPageZeroSet() throws OneWireIOException, OneWireException
OneWireIOException
- OneWireException
- public void computeNextSecret(int pageNum, byte[] partialsecret, int offset) throws OneWireIOException, OneWireException
addr
- address of page to use for the next secret computation.parialsecret
- the data to put into the scrathpad in computing next secret.public void computeNextSecret(int pageNum) throws OneWireIOException, OneWireException
addr
- address of page to use for the next secret computation.public boolean loadFirstSecret(byte[] data, int offset) throws OneWireIOException, OneWireException
OneWireIOException
- OneWireException
- public boolean refreshPage(int page, int offset) throws OneWireException, OneWireIOException
page
- the page number that contains the 8-bytes to refresh.offset
- the offset into the page for the 8-bytes to refresh.true
if refresh is successful.public boolean refreshPage(int page) throws OneWireException, OneWireIOException
page
- the page number that will be refreshed.true
if refresh is successful.public static boolean isMACValid(int addr, byte[] SerNum, byte[] memory, byte[] mac, byte[] challenge, byte[] secret)
addr
- address of the data to be readmemory
- the memory read from the pagemac
- the MAC calculated for this function given back as the extra infochallenge
- the 3 bytes written to the scratch pad used in calculating the macpublic boolean installMasterSecret(int page, byte[] newSecret) throws OneWireIOException, OneWireException
Installs a secret on a DS1961S/DS2432. The secret is written in partial phrases of 47 bytes (32 bytes to a memory page, 8 bytes to the scratchpad, 7 bytes are discarded (but included for compatibility with DS193S)) and is cumulative until the entire secret is processed.
On TINI, this method will be slightly faster if the secret's length is divisible by 47. However, since secret key generation is a part of initialization, it is probably not necessary.
page
- the page number used to write the partial secrets tosecret
- the entire secret, in partial phrases, to be installedtrue
if successfulOneWireIOException
- 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
adapterbindSecretToiButton(int,byte[])
public boolean bindSecretToiButton(int pageNum, byte[] bindData) throws OneWireIOException, OneWireException
Binds an installed secret to a DS1961S/DS2432 by using well-known binding data and the DS1961S/DS2432's unique address. This makes the secret unique for this iButton.
page
- the page number that has the master secret already installedbind_data
- 32 bytes of binding data used to bind the iButton to the systemtrue
if successfulOneWireIOException
- 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
adapterinstallMasterSecret(int,byte[])
public boolean writeDataPage(int targetPage, byte[] pageData) throws OneWireIOException, OneWireException
Writes a data page to the DS1961S/DS2432.
page_number
- page number to writepage_data
- page data to write (must be at least 32 bytes long)true
if successful, false
if the operation
failedOneWireIOException
- 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
adapterpublic boolean writeDataPage(int targetPage, byte[] pageData, int offset) throws OneWireIOException, OneWireException
Writes a data page to the DS1961S/DS2432.
page_number
- page number to writepage_data
- page data to write (must be at least 32 bytes long)offset
- the offset to start copying the 32-bytes of page data.true
if successful, false
if the operation
failedOneWireIOException
- 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
adapterpublic boolean writeScratchpad(int targetPage, int targetPageOffset, byte[] inputbuffer, int start, int length) throws OneWireIOException, OneWireException
Writes data to the scratchpad. In order to write to a data page using this method,
next call readScratchPad()
, and then copyScratchPad()
.
Note that the addresses passed to this method will be the addresses the data is
copied to if the copyScratchPad()
method is called afterward.
Also note that if too many bytes are written, this method will truncate the data so that only a valid number of bytes will be sent.
targetPage
- the page number this data will eventually be copied totargetPageOffset
- the offset on the page to copy this data toinputbuffer
- the data that will be copied into the scratchpadstart
- offset into the input buffer for the data to writelength
- number of bytes to writetrue
if successful, false
on a CRC errorOneWireIOException
- 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
adapterpublic void readScratchpad(byte[] scratchpad, int offset, byte[] extraInfo) throws OneWireIOException, OneWireException
scratchpad
- byte array to place read data into
length of array is always pageLength.offset
- offset into readBuf to pug dataextraInfo
- byte array to put extra info read into
(TA1, TA2, e/s byte)
Can be 'null' if extra info is not needed.OneWireIOException
- OneWireException
- public boolean copyScratchpad(int targetPage, int targetPageOffset, byte[] copy_auth, int authStart) throws OneWireIOException, OneWireException
targetPage
- the page to copy the data totargetPageOffset
- the offset into the page to copy tocopy_auth
- byte[] containing write authorizationauthStart
- the offset into the copy_auth array where the authorization begins.OneWireIOException
- OneWireException
- public boolean copyScratchpad(int targetPage, int targetPageOffset) throws OneWireIOException, OneWireException
targetPage
- the page to copy the data totargetPageOffset
- the offset into the page to copy toOneWireIOException
- OneWireException
- public boolean readMemoryPage(int page, byte[] pageData, int offset) throws OneWireIOException, OneWireException
page
- page number to read packet frompageData
- byte array to place read data intooffset
- offset into readBuf to place dataOneWireIOException
- OneWireException
- public boolean readAuthenticatedPage(int page, byte[] pagedata, int offset, byte[] computed_mac, int macStart) throws OneWireIOException, OneWireException
Reads and authenticates a page. See readMemoryPage()
for a description
of page numbers and their contents. This method will also generate a signature for the
selected page, used in the authentication of roving (User) iButtons.
pageNum
- page number to read and authenticatepagedata
- array for the page data.offset
- offset to copy into the arraycomputed_mac
- array for the MAC returned by the device.macStart
- offset to copy into the mac arraytrue
if successful, false
if the operation
failed while waiting for the DS1963S's output to alternateOneWireIOException
- 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
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |