001/** 002 * Copyright 2017-2019, Digi International Inc. 003 * 004 * This Source Code Form is subject to the terms of the Mozilla Public 005 * License, v. 2.0. If a copy of the MPL was not distributed with this 006 * file, you can obtain one at http://mozilla.org/MPL/2.0/. 007 * 008 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 009 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 010 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 011 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 012 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 013 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 014 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 015 */ 016package com.digi.xbee.api.models; 017 018import java.util.HashMap; 019 020/** 021 * Enumerates the different hardware versions of the XBee devices. 022 */ 023public enum HardwareVersionEnum { 024 025 // Enumeration entries 026 X09_009(0x01, "X09-009"), 027 X09_019(0x02, "X09-019"), 028 XH9_009(0x03, "XH9-009"), 029 XH9_019(0x04, "XH9-019"), 030 X24_009(0x05, "X24-009"), 031 X24_019(0x06, "X24-019"), 032 X09_001(0x07, "X09-001"), 033 XH9_001(0x08, "XH9-001"), 034 X08_004(0x09, "X08-004"), 035 XC09_009(0x0A, "XC09-009"), 036 XC09_038(0x0B, "XC09-038"), 037 X24_038(0x0C, "X24-038"), 038 X09_009_TX(0x0D, "X09-009-TX"), 039 X09_019_TX(0x0E, "X09-019-TX"), 040 XH9_009_TX(0x0F, "XH9-009-TX"), 041 XH9_019_TX(0x10, "XH9-019-TX"), 042 X09_001_TX(0x11, "X09-001-TX"), 043 XH9_001_TX(0x12, "XH9-001-TX"), 044 XT09B_XXX(0x13, "XT09B-xxx (Attenuator version)"), 045 XT09_XXX(0x14, "XT09-xxx"), 046 XC08_009(0x15, "XC08-009"), 047 XC08_038(0x16, "XC08-038"), 048 XB24_AXX_XX(0x17, "XB24-Axx-xx"), 049 XBP24_AXX_XX(0x18, "XBP24-Axx-xx"), 050 XB24_BXIX_XXX(0x19, "XB24-BxIx-xxx and XB24-Z7xx-xxx"), 051 XBP24_BXIX_XXX(0x1A, "XBP24-BxIx-xxx and XBP24-Z7xx-xxx"), 052 XBP09_DXIX_XXX(0x1B, "XBP09-DxIx-xxx Digi Mesh"), 053 XBP09_XCXX_XXX(0x1C, "XBP09-XCxx-xxx: S3 XSC Compatibility"), 054 XBP08_DXXX_XXX(0x1D, "XBP08-Dxx-xxx 868MHz"), 055 XBP24B(0x1E, "XBP24B: Low cost ZB PRO and PLUS S2B"), 056 XB24_WF(0x1F, "XB24-WF: XBee 802.11 (Redpine module)"), 057 AMBER_MBUS(0x20, "??????: M-Bus module made by Amber"), 058 XBP24C(0x21, "XBP24C: XBee PRO SMT Ember 357 S2C PRO"), 059 XB24C(0x22, "XB24C: XBee SMT Ember 357 S2C"), 060 XSC_GEN3(0x23, "XSC_GEN3: XBP9 XSC 24 dBm"), 061 SRD_868_GEN3(0x24, "SDR_868_GEN3: XB8 12 dBm"), 062 ABANDONATED(0x25, "Abandonated"), 063 SMT_900LP(0x26, "900LP (SMT): 900LP on 'S8 HW'"), 064 WIFI_ATHEROS(0x27, "WiFi Atheros (TH-DIP) XB2S-WF"), 065 SMT_WIFI_ATHEROS(0x28, "WiFi Atheros (SMT) XB2B-WF"), 066 SMT_475LP(0x29, "475LP (SMT): Beta 475MHz"), 067 XBEE_CELL_TH(0x2A, "XBee-Cell (TH): XBee Cellular"), 068 XLR_MODULE(0x2B, "XLR Module"), 069 XB900HP_NZ(0x2C, "XB900HP (New Zealand): XB9 NZ HW/SW"), 070 XBP24C_TH_DIP(0x2D, "XBP24C (TH-DIP): XBee PRO DIP"), 071 XB24C_TH_DIP(0x2E, "XB24C (TH-DIP): XBee DIP"), 072 XLR_BASEBOARD(0x2F, "XLR Baseboard"), 073 XBP24C_S2C_SMT(0x30, "XBee PRO SMT"), 074 SX_PRO(0x31, "SX Pro"), 075 S2D_SMT_PRO(0x32, "XBP24D: S2D SMT PRO"), 076 S2D_SMT_REG(0x33, "XB24D: S2D SMT Reg"), 077 S2D_TH_PRO(0x34, "XBP24D: S2D TH PRO"), 078 S2D_TH_REG(0x35, "XB24D: S2D TH Reg"), 079 SX(0x3E, "SX"), 080 XTR(0x3F, "XTR"), 081 /** 082 * @deprecated Use {@link #CELLULAR_CAT1_LTE_VERIZON} instead. 083 * @since 1.2.0 */ 084 CELLULAR(0x40, "CELLULAR"), 085 /** @since 1.2.1 */ 086 CELLULAR_CAT1_LTE_VERIZON(0x40, "XBee Cellular Cat 1 LTE Verizon"), 087 // TODO: Add the since annotation in the next version of the library. 088 XBEE3(0x41, "XBee3"), 089 // TODO: Add the since annotation in the next version of the library. 090 XBEE3_SMT(0x42, "XBee3 SMT"), 091 // TODO: Add the since annotation in the next version of the library. 092 XBEE3_TH(0x43, "XBee3 TH"), 093 /** @since 1.2.1 */ 094 CELLULAR_3G(0x44, "XBee Cellular 3G"), 095 // TODO: Add the since annotation in the next version of the library. 096 XB8X(0x45, "XB8X"), 097 /** @since 1.2.1 */ 098 CELLULAR_LTE_VERIZON(0x46, "XBee Cellular LTE-M Verizon"), // Abandoned 099 /** @since 1.2.1 */ 100 CELLULAR_LTE_ATT(0x47, "XBee Cellular LTE-M AT&T"), 101 /** @since 1.2.1 */ 102 CELLULAR_NBIOT_EUROPE(0x48, "XBee Cellular NBIoT Europe"), // Never released 103 /** @since 1.3.0 */ 104 CELLULAR_3_CAT1_LTE_ATT(0x49, "XBee3 Cellular Cat 1 LTE AT&T"), 105 /** @since 1.3.0 */ 106 CELLULAR_3_LTE_M_VERIZON(0x4A, "XBee3 Cellular LTE-M Verizon"), // Abandoned 107 /** @since 1.3.0 */ 108 CELLULAR_3_LTE_M_ATT(0x4B, "XBee3 Cellular LTE-M AT&T (u-blox)"), 109 /** @since 1.3.0 */ 110 CELLULAR_3_LTE_M_ATT_TELIT(0x4C, "XBee3 Cellular LTE-M AT&T (Telit)"), // Never released 111 /** @since 1.3.0 */ 112 CELLULAR_3_CAT1_LTE_VERIZON(0x4D, "XBee3 Cellular Cat 1 LTE Verizon"); 113 114 // Variables 115 private final int value; 116 117 private final String description; 118 119 private final static HashMap<Integer, HardwareVersionEnum> lookupTable = new HashMap<Integer, HardwareVersionEnum>(); 120 121 static { 122 for (HardwareVersionEnum hv:values()) 123 lookupTable.put(hv.getValue(), hv); 124 } 125 126 /** 127 * Class constructor. Instantiates a new {@code HardwareVersion} 128 * enumeration entry with the given parameters. 129 * 130 * @param value Hardware version numeric value 131 * @param description Hardware version description. 132 */ 133 private HardwareVersionEnum(int value, String description) { 134 this.value = value; 135 this.description = description; 136 } 137 138 /** 139 * Returns the Hardware version numeric value. 140 * 141 * @return The hardware version numeric value. 142 */ 143 public int getValue() { 144 return value; 145 } 146 147 /** 148 * Returns the hardware version description. 149 * 150 * @return The hardware version description. 151 */ 152 public String getDescription() { 153 return description; 154 } 155 156 /** 157 * Returns the {@code HardwareVersionEnum} associated to the given 158 * numeric value. 159 * 160 * @param value Numeric value of the {@code HardwareVersionEnum} to 161 * retrieve. 162 * 163 * @return The {@code HardwareVersionEnum} associated to the given numeric 164 * value, {@code null} if there is not any 165 * {@code HardwareVersionEnum} associated to that value. 166 */ 167 public static HardwareVersionEnum get(int value) { 168 return lookupTable.get(value); 169 } 170 171 /* 172 * (non-Javadoc) 173 * @see java.lang.Enum#toString() 174 */ 175 @Override 176 public String toString() { 177 return String.format("0x%02X: %s", value, description); 178 } 179}