    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 power levels. The power level indicates the output
    020 * power value of a radio when transmitting data.
    021 */
    022public enum PowerLevel {
    023
    024        // Enumeration entries
    025        LEVEL_LOWEST(0x00, "Lowest"),
    026        LEVEL_LOW(0x01, "Low"),
    027        LEVEL_MEDIUM(0x02, "Medium"),
    028        LEVEL_HIGH(0x03, "High"),
    029        LEVEL_HIGHEST(0x04, "Highest"),
    030        LEVEL_UNKNOWN(0xFF, "Unknown");
    031
    032        // Variables
    033        private final int value;
    034
    035        private final String description;
    036
    037        private final static HashMap<Integer, PowerLevel> lookupTable = new HashMap<Integer, PowerLevel>();
    038
    039        static {
    040                for (PowerLevel powerLevel:values())
    041                        lookupTable.put(powerLevel.getValue(), powerLevel);
    042        }
    043
    044        /**
    045         * Class constructor. Instantiates a new {@code PowerLevel} enumeration
    046         * entry with the given parameters.
    047         *
    048         * @param value Power level value
    049         * @param description Power level description.
    050         */
    051        private PowerLevel(int value, String description) {
    052                this.value = value;
    053                this.description = description;
    054        }
    055
    056        /**
    057         * Returns the power level value.
    058         *
    059         * @return The power level value.
    060         */
    061        public int getValue() {
    062                return value;
    063        }
    064
    065        /**
    066         * Returns the power level description.
    067         *
    068         * @return The power level description.
    069         */
    070        public String getDescription() {
    071                return description;
    072        }
    073
    074        /**
    075         * Returns the {@code PowerLevel} entry associated to the given value.
    076         *
    077         * @param value Value of the {@code PowerLevel} to retrieve.
    078         *
    079         * @return The {@code PowerLevel} entry associated to the given value,
    080         *         {@code #LEVEL_UNKNOWN} if the value could not be found in the
    081         *         list.
    082         */
    083        public static PowerLevel get(int value) {
    084                PowerLevel powerLevel = lookupTable.get(value);
    085                if (powerLevel != null)
    086                        return powerLevel;
    087                return LEVEL_UNKNOWN;
    088        }
    089
    090        /*
    091         * (non-Javadoc)
    092         * @see java.lang.Enum#toString()
    093         */
    094        @Override
    095        public String toString() {
    096                return HexUtils.byteToHexString((byte)value) + ": " + description;
    097        }
    098}