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
016/**
017 * Enumerates all the possible states of an AT Command after executing it. 
018 * {@code ATCommadResponse} objects will contain an entry of this enumerator 
019 * indicating the status of the AT Command that was executed.
020 * 
021 * @see ATCommandResponse
022 */
023public enum ATCommandStatus {
024
025        // Enumeration elements
026        OK (0, "Status OK"),
027        ERROR (1, "Status Error"),
028        INVALID_COMMAND (2, "Invalid command"), 
029        INVALID_PARAMETER (3, "Invalid parameter"),
030        TX_FAILURE (4, "TX failure"),
031        UNKNOWN (64, "Unknown status");
032        
033        // Variables
034        private final int id;
035        
036        private final String description;
037        
038        private final static HashMap<Integer, ATCommandStatus> lookupTable = new HashMap<Integer, ATCommandStatus>();
039        
040        static {
041                for (ATCommandStatus at:values())
042                        lookupTable.put(at.getId(), at);
043        }
044        
045        /**
046         * Class constructor. Instantiates a new enumeration element of type 
047         * {@code ATCommandStatus} with the given parameters.
048         * 
049         * @param id AT Command Status ID.
050         * @param description AT Command Status description.
051         */
052        ATCommandStatus(int id, String description) {
053                this.id = id;
054                this.description = description;
055        }
056        
057        /**
058         * Returns the AT Command Status ID.
059         * 
060         * @return The AT Command Status ID.
061         */
062        public int getId() {
063                return id;
064        }
065        
066        /**
067         * Returns the AT Command Status description.
068         * 
069         * @return AT Command Status description.
070         */
071        public String getDescription() {
072                return description;
073        }
074        
075        /**
076         * Returns the {@code ATCommandStatus} associated to the given ID.
077         * 
078         * @param id ID to retrieve the corresponding {@code ATCommandStatus}.
079         * 
080         * @return The {@code ATCommandStatus} associated to the given ID.
081         */
082        public static ATCommandStatus get(int id) {
083                if (lookupTable.get(id) == null)
084                        return UNKNOWN;
085                return lookupTable.get(id);
086        }
087        
088        /*
089         * (non-Javadoc)
090         * @see java.lang.Enum#toString()
091         */
092        @Override
093        public String toString() {
094                return description;
095        }
096}