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.models; 013 014import java.util.HashMap; 015 016import com.digi.xbee.api.utils.HexUtils; 017 018/** 019 * Enumerates the different association indication status. 020 */ 021public enum AssociationIndicationStatus { 022 023 // Enumeration entries 024 SUCCESSFULLY_JOINED(0x00, "Successfully formed or joined a network."), 025 AS_TIMEOUT(0x01, "Active Scan Timeout."), 026 AS_NO_PANS_FOUND(0x02, "Active Scan found no PANs."), 027 AS_ASSOCIATION_NOT_ALLOED(0x03, "Active Scan found PAN, but the CoordinatorAllowAssociation bit is not set."), 028 AS_BEACONS_NOT_SUPPORTED(0x04, "Active Scan found PAN, but Coordinator and End Device are not configured to support beacons."), 029 AS_ID_DOESNT_MATCH(0x05, "Active Scan found PAN, but the Coordinator ID parameter does not match the ID parameter of the End Device."), 030 AS_CHANNEL_DOESNT_MATCH(0x06, "Active Scan found PAN, but the Coordinator CH parameter does not match the CH parameter of the End Device."), 031 ENERGY_SCAN_TIMEOUT(0x07, "Energy Scan Timeout."), 032 COORDINATOR_START_REQUEST_FAILED(0x08, "Coordinator start request failed."), 033 COORDINATOR_INVALID_PARAMETER(0x09, "Coordinator could not start due to invalid parameter."), 034 COORDINATOR_REALIGNMENT(0x0A, "Coordinator Realignment is in progress."), 035 AR_NOT_SENT(0x0B, "Association Request not sent."), 036 AR_TIMED_OUT(0x0C, "Association Request timed out - no reply was received."), 037 AR_INVALID_PARAMETER(0x0D, "Association Request had an Invalid Parameter."), 038 AR_CHANNEL_ACCESS_FAILURE(0x0E, "Association Request Channel Access Failure. Request was not transmitted - CCA failure."), 039 AR_COORDINATOT_ACK_WASNT_RECEIVED(0x0F, "Remote Coordinator did not send an ACK after Association Request was sent."), 040 AR_COORDINATOT_DIDNT_REPLY(0x10, "Remote Coordinator did not reply to the Association Request, but an ACK was received after sending the request."), 041 SYNCHRONIZATION_LOST(0x12, "Sync-Loss - Lost synchronization with a Beaconing Coordinator."), 042 DISSASOCIATED(0x13, " Disassociated - No longer associated to Coordinator."), 043 NO_PANS_FOUND(0x21, "Scan found no PANs."), 044 NO_PANS_WITH_ID_FOUND(0x22, "Scan found no valid PANs based on current SC and ID settings."), 045 NJ_EXPIRED(0x23, "Valid Coordinator or Routers found, but they are not allowing joining (NJ expired)."), 046 NO_JOINABLE_BEACONS_FOUND(0x24, "No joinable beacons were found."), 047 UNEXPECTED_STATE(0x25, "Unexpected state, node should not be attempting to join at this time."), 048 JOIN_FAILED(0x27, "Node Joining attempt failed (typically due to incompatible security settings)."), 049 COORDINATOR_START_FAILED(0x2A, "Coordinator Start attempt failed."), 050 CHECKING_FOR_COORDINATOR(0x2B, "Checking for an existing coordinator."), 051 NETWORK_LEAVE_FAILED(0x2C, "Attempt to leave the network failed."), 052 DEVICE_DIDNT_RESPOND(0xAB, "Attempted to join a device that did not respond."), 053 UNSECURED_KEY_RECEIVED(0xAC, "Secure join error - network security key received unsecured."), 054 KEY_NOT_RECEIVED(0xAD, "Secure join error - network security key not received."), 055 INVALID_SECURITY_KEY(0xAF, "Secure join error - joining device does not have the right preconfigured link key."), 056 SCANNING_NETWORK(0xFF, "Scanning for a network/Attempting to associate."); 057 058 // Variables 059 private final int value; 060 061 private final String description; 062 063 private final static HashMap<Integer, AssociationIndicationStatus> lookupTable = new HashMap<Integer, AssociationIndicationStatus>(); 064 065 static { 066 for (AssociationIndicationStatus associationIndicationStatus:values()) 067 lookupTable.put(associationIndicationStatus.getValue(), associationIndicationStatus); 068 } 069 070 /** 071 * Class constructor. Instantiates a new {@code AssociationIndicationStatus} 072 * enumeration entry with the given parameters. 073 * 074 * @param value Association indication status value. 075 * @param description Association indication status description. 076 */ 077 AssociationIndicationStatus(int value, String description) { 078 this.value = value; 079 this.description = description; 080 } 081 082 /** 083 * Returns the association indication status value. 084 * 085 * @return The association indication status value. 086 */ 087 public int getValue() { 088 return value; 089 } 090 091 /** 092 * Returns the association indication status description. 093 * 094 * @return The association indication status description. 095 */ 096 public String getDescription() { 097 return description; 098 } 099 100 /** 101 * Returns the {@code AssociationIndicationStatus} associated to the 102 * given value. 103 * 104 * @param value Value of the association indication status to retrieve. 105 * @return The association indication status of the associated value, {@code null} 106 * if it could not be found in the table. 107 */ 108 public static AssociationIndicationStatus get(int value) { 109 return lookupTable.get(value); 110 } 111 112 /* 113 * (non-Javadoc) 114 * @see java.lang.Enum#toString() 115 */ 116 @Override 117 public String toString() { 118 return HexUtils.byteToHexString((byte)value) + ": " + description; 119 } 120}