001/**
002 * Copyright (c) 2014-2015 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.io;
013
014import java.util.HashMap;
015
016/**
017 * Enumerates the possible values of a {@code IOLine} configured as digital 
018 * I/O.
019 * 
020 * @see IOLine
021 */
022public enum IOValue {
023
024        // Enumeration types.
025        LOW(4, "Low"),
026        HIGH(5, "High");
027        
028        // Variables.
029        private final static HashMap <Integer, IOValue> lookupTable = new HashMap<Integer, IOValue>();
030        
031        private final int id;
032        
033        private final String name;
034        
035        static {
036                for (IOValue ioValue:values())
037                        lookupTable.put(ioValue.getID(), ioValue);
038        }
039        
040        /**
041         * Class constructor. Instantiates a new {@code IOValue} enumeration entry 
042         * with the given parameters.
043         * 
044         * @param id IO value ID.
045         * @param name IO value name.
046         */
047        private IOValue(int id, String name) {
048                this.id = id;
049                this.name = name;
050        }
051        
052        /**
053         * Returns the ID of the IO value.
054         * 
055         * @return The ID of the IO value.
056         */
057        public int getID() {
058                return id;
059        }
060        
061        /**
062         * Returns the name of the IO value.
063         * 
064         * @return The name of the IO value.
065         */
066        public String getName() {
067                return name;
068        }
069        
070        /**
071         * Returns the {@code IOValue} associated to the provided value ID.
072         * 
073         * @param valueID The ID of the {@code IOValue} to retrieve.
074         * 
075         * @return The {@code IOValue} associated to the provided value ID.
076         */
077        public static IOValue getIOValue(int valueID) {
078                if (lookupTable.containsKey(valueID))
079                        return lookupTable.get(valueID);
080                return null;
081        }
082        
083        /*
084         * (non-Javadoc)
085         * @see java.lang.Enum#toString()
086         */
087        @Override
088        public String toString() {
089                return name;
090        }
091}