⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shaibuttonuser18.java

📁 这是一个以JAVA编写的程序,本人还没有试过,是一个简单的温度控制系统
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/*--------------------------------------------------------------------------- * Copyright (C) 1999-2001 Dallas Semiconductor Corporation, All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * Except as contained in this notice, the name of Dallas Semiconductor * shall not be used except as stated in the Dallas Semiconductor * Branding Policy. *--------------------------------------------------------------------------- */package com.dalsemi.onewire.application.sha;import com.dalsemi.onewire.adapter.DSPortAdapter;import com.dalsemi.onewire.container.OneWireContainer18;import com.dalsemi.onewire.adapter.OneWireIOException;import com.dalsemi.onewire.OneWireException;import com.dalsemi.onewire.utils.IOHelper;import java.io.IOException;/** * <P>Class representing DS1963S (or DS2421), family-code 0x18, SHA iButtons as a user * token in SHA Transactions.</P> * * @see SHATransaction * @see SHAiButtonCopr * @see SHAiButtonUser33 * * @version 1.00 * @author  SKH */public class SHAiButtonUser18   extends SHAiButtonUser{   /**    * Reference to the OneWireContainer    */   protected OneWireContainer18 ibc = null;   /**    * <P>No default constructor for user apps.  At bare minimum, you need    * a reference to a <code>SHAiButtonCopr</code> before you can construct a    * <code>SHAiButtonUser</code>.</P>    *    * @see #SHAiButtonUser18(SHAiButtonCopr,OneWireContainer18,boolean,byte[])    * @see #SHAiButtonUser18(SHAiButtonCopr,OneWireContainer18)    * @see #SHAiButtonUser18(SHAiButtonCopr)    */   protected SHAiButtonUser18()   {;}   /**    * <P>Initialize a DS1963S as a fresh user iButton for a given SHA service.    * This constructor not only creates the service file for the user iButton    * using the TMEX file structure, but it also installs the master    * authentication secret and binds it to the iButton (making it unique for    * a particular button).  Optionally, the device can be formatted before    * the service file is installed.</P>    *    * @param copr The SHAiButtonCopr to which the user object is tied.  This    *        Coprocessor contains the necessary binding code and service    *        filename, necessary for both locating a user and recreating his    *        unique secret.    * @param owc The DS1963S iButton that this object will refer to.    * @param formatDevice If <code>true</code>, the TMEX filesystem will be    *        formatted before the account service file is created.    * @param authSecret The master authentication secret for the systm.    *    * @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'.    * @throws OneWireException on a communication or setup error with the 1-Wire    *         adapter    *    * @see #SHAiButtonUser18(SHAiButtonCopr,OneWireContainer18)    * @see #SHAiButtonUser18(SHAiButtonCopr)    */   public SHAiButtonUser18(SHAiButtonCopr copr, OneWireContainer18 owc,                           boolean formatDevice, byte[] authSecret)      throws OneWireException, OneWireIOException   {      //setup service filename      this(copr);      //hold container reference      this.ibc = owc;      //and address      this.address = owc.getAddress();      if(!createServiceFile(owc, strServiceFilename, formatDevice))         throw new OneWireException("Failed to create service file.");      //save a copy of the binding code      copr.getBindCode(this.fullBindCode,0);      System.arraycopy(this.fullBindCode,4,                       this.fullBindCode,12, 3);      //setup the fullBindCode with rest of info      this.fullBindCode[4] = (byte)this.accountPageNumber;      System.arraycopy(this.address,0,                       this.fullBindCode,5,7);      if(!owc.installMasterSecret(accountPageNumber,                                  authSecret,                                  accountPageNumber&7))         throw new OneWireException("Install Master Secret failed");      //not in critical path, so getBindBlah() is okay.      if(!owc.bindSecretToiButton(accountPageNumber,                                  copr.getBindData(), this.fullBindCode,                                  accountPageNumber&7))         throw new OneWireException("Bind Secret to iButton failed");      //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\      if(DEBUG)      {         IOHelper.writeLine("------------------------------------");         IOHelper.writeLine("Initialized User");         IOHelper.writeLine("address");         IOHelper.writeBytesHex(owc.getAddress());         IOHelper.writeLine("serviceFilename: " + strServiceFilename);         IOHelper.writeLine("accountPageNumber: " + accountPageNumber);         IOHelper.writeLine("authSecret");         IOHelper.writeBytesHex(authSecret);         IOHelper.writeLine("bindData");         IOHelper.writeBytesHex(copr.bindData);         IOHelper.writeLine("bindCode");         IOHelper.writeBytesHex(copr.bindCode);         IOHelper.writeLine("------------------------------------");      }      //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\   }   /**    * <P>Initialize a DS1963S as a fresh user iButton for a given SHA service.    * This constructor not only creates the service file for the user iButton    * using the TMEX file structure, but it also installs the master    * authentication secret and binds it to the iButton (making it unique for    * a particular button).  Optionally, the device can be formatted before    * the service file is installed.</P>    *    * @param coprBindData The Coprocessor Bind Data, used to create a unique    *        secret for this user token.    * @param coprBindCode The Coprocessor Bind Code without the user-specific    *        information, used to create a unique secret for this user token.    * @param fileName The file name for the account info.    * @param fileNameExt The file extenstion for the account info    * @param owc The DS1963S iButton that this object will refer to.    * @param formatDevice If <code>true</code>, the TMEX filesystem will be    *        formatted before the account service file is created.    * @param authSecret The master authentication secret for the systm.    *    * @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'.    * @throws OneWireException on a communication or setup error with the 1-Wire    *         adapter    *    * @see #SHAiButtonUser18(SHAiButtonCopr,OneWireContainer18)    * @see #SHAiButtonUser18(SHAiButtonCopr)    */   public SHAiButtonUser18(byte[] coprBindData, byte[] coprBindCode,                           byte[] fileName, int fileNameExt,                           OneWireContainer18 owc,                           boolean formatDevice, byte[] authSecret)      throws OneWireException, OneWireIOException   {      //hold container reference      this.ibc = owc;      //and address      this.address = owc.getAddress();      System.arraycopy(fileName, 0, this.serviceFile, 0, 4);      //create string representation of service filename      this.strServiceFilename = new String(fileName) + "."                                + (int)fileNameExt;      if(!createServiceFile(owc, strServiceFilename, formatDevice))         throw new OneWireException("Failed to create service file.");      //save a copy of the binding code      System.arraycopy(coprBindCode, 0, this.fullBindCode, 0, 7);      System.arraycopy(this.fullBindCode,4,                       this.fullBindCode,12, 3);      //setup the fullBindCode with rest of info      this.fullBindCode[4] = (byte)this.accountPageNumber;      System.arraycopy(this.address,0,                       this.fullBindCode,5,7);      if(!owc.installMasterSecret(accountPageNumber,                                  authSecret,                                  accountPageNumber&7))         throw new OneWireException("Install Master Secret failed");      //not in critical path, so getBindBlah() is okay.      if(!owc.bindSecretToiButton(accountPageNumber,                                  coprBindData, this.fullBindCode,                                  accountPageNumber&7))         throw new OneWireException("Bind Secret to iButton failed");      //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\      if(DEBUG)      {         IOHelper.writeLine("------------------------------------");         IOHelper.writeLine("Initialized User");         IOHelper.writeLine("address");         IOHelper.writeBytesHex(owc.getAddress());         IOHelper.writeLine("serviceFilename: " + strServiceFilename);         IOHelper.writeLine("accountPageNumber: " + accountPageNumber);         IOHelper.writeLine("authSecret");         IOHelper.writeBytesHex(authSecret);         IOHelper.writeLine("bindCode");         IOHelper.writeBytesHex(coprBindCode);         IOHelper.writeLine("------------------------------------");      }      //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\   }   /**    * <P>Creates a valid SHAiButtonUser object.  If the service file,    * whose name is taken from the <code>SHAiButtonCopr</code>, is not    * found on the user iButton, a OneWireException is thrown with the    * message "Invalid SHA user".</P>    *    * @param copr The SHAiButtonCopr to which the user object is tied.  This    *        Coprocessor contains the necessary binding code and service    *        filename, necessary for both locating a user and recreating his    *        unique secret.    * @param owc The DS1963S iButton that this object will refer to.    *    * @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'.    * @throws OneWireException on a communication or setup error with the 1-Wire    *         adapter    *    * @see #SHAiButtonUser18(SHAiButtonCopr,OneWireContainer18,boolean,byte[])    * @see #SHAiButtonUser18(SHAiButtonCopr)    */   public SHAiButtonUser18(SHAiButtonCopr copr, OneWireContainer18 owc)      throws OneWireException, OneWireIOException   {      //setup service filename      this(copr);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -