001/** 002 * Copyright 2017-2024, 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 */ 085 CELLULAR(0x40, "CELLULAR"), 086 /** @since 1.2.1 */ 087 CELLULAR_CAT1_LTE_VERIZON(0x40, "XBee Cellular Cat 1 LTE Verizon"), 088 /** @since 1.2.1 */ 089 XBEE3(0x41, "XBee3"), 090 /** @since 1.2.1 */ 091 XBEE3_SMT(0x42, "XBee3 SMT"), 092 /** @since 1.2.1 */ 093 XBEE3_TH(0x43, "XBee3 TH"), 094 /** @since 1.2.1 */ 095 CELLULAR_3G(0x44, "XBee Cellular 3G"), 096 /** @since 1.2.1 */ 097 XB8X(0x45, "XB8X"), 098 /** 099 * @deprecated Abandoned. 100 * @since 1.2.1 101 */ 102 CELLULAR_LTE_VERIZON(0x46, "XBee Cellular LTE-M Verizon"), 103 /** @since 1.2.1 */ 104 CELLULAR_LTE_ATT(0x47, "XBee Cellular LTE-M AT&T"), 105 /** 106 * @deprecated Never released. 107 * @since 1.2.1 108 */ 109 CELLULAR_NBIOT_EUROPE(0x48, "XBee Cellular NBIoT Europe"), 110 /** @since 1.3.0 */ 111 CELLULAR_3_CAT1_LTE_ATT(0x49, "XBee3 Cellular Cat 1 LTE AT&T"), 112 /** 113 * @deprecated Abandoned. 114 * @since 1.3.0 115 */ 116 CELLULAR_3_LTE_M_VERIZON(0x4A, "XBee3 Cellular LTE-M Verizon"), 117 /** @since 1.3.0 */ 118 CELLULAR_3_LTE_M_ATT(0x4B, "XBee3 Cellular LTE-M AT&T (u-blox)"), 119 /** 120 * @deprecated Never released. 121 * @since 1.3.0 122 */ 123 CELLULAR_3_LTE_M_ATT_TELIT(0x4C, "XBee3 Cellular LTE-M AT&T (Telit)"), 124 /** @since 1.3.0 */ 125 CELLULAR_3_CAT1_LTE_VERIZON(0x4D, "XBee3 Cellular Cat 1 LTE Verizon"), 126 /** @since 1.3.1 */ 127 CELLULAR_3_LTE_M_TELIT(0x4E, "XBee 3 Cellular LTE-M/NB-IoT (Telit)"), 128 /** @since 1.3.1 */ 129 XBEE3_DM_LR(0x50, "XBee XR 900"), 130 /** @since 1.3.1 */ 131 XBEE3_DM_LR_868(0x51, "XBee XR 868"), 132 /** @since 1.3.1 */ 133 XBEE3_RR(0x52, "XBee RR SMT/MMT, Pro/Non-Pro"), 134 /** @since 1.3.1 */ 135 S2C_P5(0x53, "S2C P5"), 136 /** @since 1.3.1 */ 137 CELLULAR_3_GLOBAL_LTE_CAT1(0x54, "XBee 3 Cellular Global LTE Cat 1"), 138 /** @since 1.3.1 */ 139 CELLULAR_3_NA_LTE_CAT1(0x55, "XBee 3 Cellular North America LTE Cat 1"), 140 /** @since 1.3.2 */ 141 CELLULAR_3_LTE_M_LOW_POWER(0x56, "XBee 3 Cellular LTE-M/NB-IoT Low Power"), 142 /** @since 1.3.2 */ 143 XBEE3_RR_TH(0x57, "XBee RR TH Pro/Non-Pro"), 144 /** @since 1.3.2 */ 145 CELLULAR_3_GLOBAL_CAT4(0x58, "XBee 3 Cellular Global Cat 4"), 146 /** @since 1.3.2 */ 147 CELLULAR_3_NA_CAT4(0x59, "XBee 3 Cellular North America Cat 4"), 148 /** @since 1.3.2 */ 149 XBEE_XR_900_TH(0x5A, "XBee XR 900 TH"), 150 /** @since 1.3.2 */ 151 XBEE_XR_868_TH(0x5B, "XBee XR 868 TH"), 152 /** @since 1.3.2 */ 153 XBEE_BLU_MICRO_SMT(0x5C, "XBee BLU Micro and SMT"), 154 /** @since 1.3.2 */ 155 XBEE_BLU_TH(0x5D, "XBee BLU TH"); 156 157 // Variables 158 private final int value; 159 160 private final String description; 161 162 private final static HashMap<Integer, HardwareVersionEnum> lookupTable = new HashMap<Integer, HardwareVersionEnum>(); 163 164 static { 165 for (HardwareVersionEnum hv:values()) 166 lookupTable.put(hv.getValue(), hv); 167 } 168 169 /** 170 * Class constructor. Instantiates a new {@code HardwareVersion} 171 * enumeration entry with the given parameters. 172 * 173 * @param value Hardware version numeric value 174 * @param description Hardware version description. 175 */ 176 private HardwareVersionEnum(int value, String description) { 177 this.value = value; 178 this.description = description; 179 } 180 181 /** 182 * Returns the Hardware version numeric value. 183 * 184 * @return The hardware version numeric value. 185 */ 186 public int getValue() { 187 return value; 188 } 189 190 /** 191 * Returns the hardware version description. 192 * 193 * @return The hardware version description. 194 */ 195 public String getDescription() { 196 return description; 197 } 198 199 /** 200 * Returns the {@code HardwareVersionEnum} associated to the given 201 * numeric value. 202 * 203 * @param value Numeric value of the {@code HardwareVersionEnum} to 204 * retrieve. 205 * 206 * @return The {@code HardwareVersionEnum} associated to the given numeric 207 * value, {@code null} if there is not any 208 * {@code HardwareVersionEnum} associated to that value. 209 */ 210 public static HardwareVersionEnum get(int value) { 211 return lookupTable.get(value); 212 } 213 214 /* 215 * (non-Javadoc) 216 * @see java.lang.Enum#toString() 217 */ 218 @Override 219 public String toString() { 220 return String.format("0x%02X: %s", value, description); 221 } 222}