001/** 002 * Copyright (c) 2014 Digi International Inc., 003 * All rights not expressly granted are reserved. 004 * 005 * This Source Code Form is subject to the terms of the Mozilla Public 006 * License, v. 2.0. If a copy of the MPL was not distributed with this file, 007 * You can obtain one at http://mozilla.org/MPL/2.0/. 008 * 009 * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343 010 * ======================================================================= 011 */ 012package com.digi.xbee.api.connection.serial; 013 014/** 015 * Helper class used to store serial connection parameters information. 016 * 017 * <p>Parameters are stored as public variables so that they can be accessed 018 * and read from any class.</p> 019 */ 020public final class SerialPortParameters { 021 022 // Constants. 023 private static final int HASH_SEED = 23; 024 025 // Variables. 026 public final int baudrate; 027 public final int dataBits; 028 public final int stopBits; 029 public final int parity; 030 public final int flowControl; 031 032 /** 033 * Class constructor. Instances a new {@code SerialPortParameters} object 034 * with the given parameters. 035 * 036 * @param baudrate Serial connection baud rate, 037 * @param dataBits Serial connection data bits. 038 * @param stopBits Serial connection stop bits. 039 * @param parity Serial connection parity. 040 * @param flowControl Serial connection flow control. 041 * 042 * @throws IllegalArgumentException if {@code baudrate < 0} or 043 * if {@code dataBits < 0} or 044 * if {@code stopBits < 0} or 045 * if {@code parity < 0} or 046 * if {@code flowControl < 0}. 047 */ 048 public SerialPortParameters(int baudrate, int dataBits, int stopBits, int parity, int flowControl) { 049 if (baudrate < 0) 050 throw new IllegalArgumentException("Baudrate cannot be less than 0."); 051 if (dataBits < 0) 052 throw new IllegalArgumentException("Number of data bits cannot be less than 0."); 053 if (stopBits < 0) 054 throw new IllegalArgumentException("Number of stop bits cannot be less than 0."); 055 if (parity < 0) 056 throw new IllegalArgumentException("Illegal parity value."); 057 if (flowControl < 0) 058 throw new IllegalArgumentException("Illegal flow control value."); 059 060 this.baudrate = baudrate; 061 this.dataBits = dataBits; 062 this.stopBits = stopBits; 063 this.parity = parity; 064 this.flowControl = flowControl; 065 } 066 067 /* 068 * (non-Javadoc) 069 * @see java.lang.Object#equals(java.lang.Object) 070 */ 071 @Override 072 public boolean equals(Object obj) { 073 if (obj instanceof SerialPortParameters) 074 return ((SerialPortParameters)obj).baudrate == baudrate 075 && ((SerialPortParameters)obj).dataBits == dataBits 076 && ((SerialPortParameters)obj).stopBits == stopBits 077 && ((SerialPortParameters)obj).parity == parity 078 && ((SerialPortParameters)obj).flowControl == flowControl; 079 else 080 return false; 081 } 082 083 /* 084 * (non-Javadoc) 085 * @see java.lang.Object#hashCode() 086 */ 087 @Override 088 public int hashCode() { 089 int hash = HASH_SEED; 090 hash = hash * (hash + baudrate); 091 hash = hash * (hash + dataBits); 092 hash = hash * (hash + stopBits); 093 hash = hash * (hash + parity); 094 hash = hash * (hash + flowControl); 095 return hash; 096 } 097 098 /* 099 * (non-Javadoc) 100 * @see java.lang.Object#toString() 101 */ 102 @Override 103 public String toString() { 104 return "Baud Rate: "+ baudrate + ", Data Bits: " + dataBits 105 + ", Stop Bits: " + stopBits + ", Parity: " + parity 106 + ", Flow Control: " + flowControl; 107 } 108}