    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 the different transmit status. Transmit status field is part of
    018 * the {@code TransmitStatusPacket} indicating the status of the transmission.
    019 *
    020 * @see com.digi.xbee.api.packet.common.TransmitStatusPacket
    021 */
    022public enum XBeeTransmitStatus {
    023
    024        // Enumeration types
    025        SUCCESS (0x00, "Success"),
    026        NO_ACK (0x01, "No acknowledgement received"),
    027        CCA_FAILURE (0x02, "CCA failure"),
    028        PURGED (0x03, "Transmission purged, it was attempted before stack was up"),
    029        WIFI_PHYSICAL_ERROR (0x04, "Physical error occurred on the interface with the WiFi transceiver"),
    030        INVALID_DESTINATION (0x15, "Invalid destination endpoint"),
    031        NETWORK_ACK_FAILURE (0x21, "Network ACK Failure"),
    032        NOT_JOINED_NETWORK (0x22, "Not joined to network"),
    033        SELF_ADDRESSED (0x23, "Self-addressed"),
    034        ADDRESS_NOT_FOUND (0x24, "Address not found"),
    035        ROUTE_NOT_FOUND (0x25, "Route not found"),
    036        BROADCAST_FAILED (0x26, "Broadcast source failed to hear a neighbor relay the message"),
    037        INVALID_BINDING_TABLE_INDEX (0x2B, "Invalid binding table index"),
    038        RESOURCE_ERROR (0x2C, "Resource error lack of free buffers, timers, etc."),
    039        BROADCAST_ERROR_APS (0x2D, "Attempted broadcast with APS transmission"),
    040        BROADCAST_ERROR_APS_EE0 (0x2E, "Attempted broadcast with APS transmission, but EE=0"),
    041        RESOURCE_ERROR_BIS (0x32, "Resource error lack of free buffers, timers, etc."),
    042        PAYLOAD_TOO_LARGE (0x74, "Data payload too large"),
    043        SOCKET_CREATION_FAILED (0x76, "Attempt to create a client socket failed"),
    044        INDIRECT_MESSAGE_UNREUESTED (0x75, "Indirect message unrequested");
    045
    046        // Variables
    047        private final int id;
    048
    049        private final String description;
    050
    051        private static final HashMap<Integer, XBeeTransmitStatus> lookupTable = new HashMap<Integer, XBeeTransmitStatus>();
    052
    053        static {
    054                for (XBeeTransmitStatus ts:values())
    055                        lookupTable.put(ts.getId(), ts);
    056        }
    057
    058        /**
    059         * Class constructor. Instantiates a new {@code XBeeTransmitStatus} entry
    060         * with the given parameters.
    061         *
    062         * @param id XBee transmit status ID.
    063         * @param description XBee transmit status description.
    064         */
    065        private XBeeTransmitStatus(int id, String description) {
    066                this.id = id;
    067                this.description = description;
    068        }
    069
    070        /**
    071         * Returns the XBee transmit status ID.
    072         *
    073         * @return XBee transmit status ID.
    074         */
    075        public int getId() {
    076                return id;
    077        }
    078
    079        /**
    080         * Returns the XBee transmit status description.
    081         *
    082         * @return XBee transmit status description.
    083         */
    084        public String getDescription() {
    085                return description;
    086        }
    087
    088        /**
    089         * Returns the {@code XBeeTransmitStatus} associated to the given ID.
    090         *
    091         * @param id ID of the {@code XBeeTransmitStatus} to retrieve.
    092         *
    093         * @return The {@code XBeeTransmitStatus} associated to the given ID.
    094         */
    095        public static XBeeTransmitStatus get(int id) {
    096                return lookupTable.get(id);
    097        }
    098
    099        /*
    100         * (non-Javadoc)
    101         * @see java.lang.Enum#toString()
    102         */
    103        @Override
    104        public String toString() {
    105                if (id != 0)
    106                        return "Error: " + description;
    107                else
    108                        return description;
    109        }
    110}