/***************************************************************************
 * Copyright (c) 2009 Digi International Inc., All Rights Reserved
 * 
 * This software contains proprietary and confidential information of Digi
 * International Inc.  By accepting transfer of this copy, Recipient agrees
 * to retain this software in confidence, to prevent disclosure to others,
 * and to make no use of this software other than that for which it was
 * delivered.  This is an unpublished copyrighted work of Digi International
 * Inc.  Except as permitted by federal law, 17 USC 117, copying is strictly
 * prohibited.
 * 
 * Restricted Rights Legend
 *
 * Use, duplication, or disclosure by the Government is subject to
 * restrictions set forth in sub-paragraph (c)(1)(ii) of The Rights in
 * Technical Data and Computer Software clause at DFARS 252.227-7031 or
 * subparagraphs (c)(1) and (2) of the Commercial Computer Software -
 * Restricted Rights at 48 CFR 52.227-19, as applicable.
 *
 * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
 *
 ***************************************************************************
 *
 * @Descr: EnumerationsXBeeDevice Class
 *
 * @History:
 *    10/01/09:   gsarabia      initial version.
 *
 ***************************************************************************/

#region Namespace Inclusions

using System;
using System.Text;

#endregion

namespace Digi.ZigBee
{
    /// <summary>Specifies the function for AD0/DIO0 Configuration.</summary>
    public enum AD0DIO0 : byte
    {
        /// <summary>Disabled.</summary>
        Disabled = 0x00,
        /// <summary>Commissioning button enabled.</summary>
        Commissioning_Button = 0x01,
        /// <summary>Analog input.</summary>
        Analog_Input = 0x02,
        /// <summary>Digital input.</summary>
        Digital_Input = 0x03,
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05
    }

    /// <summary>Specifies the function for AD1/DIO1 Configuration.</summary>
    public enum AD1DIO1 : byte
    {
        /// <summary>Disabled.</summary>
        Disabled = 0x00,  
        /// <summary>Analog input.</summary>
        Analog_Input = 0x02,
        /// <summary>Digital input.</summary>
        Digital_Input = 0x03,  
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05 
    }

    /// <summary>Specifies the function for AD2/DIO2 Configuration.</summary>
    public enum AD2DIO2 : byte
    {
        /// <summary>Disabled.</summary>
        Disabled = 0x00,  
        /// <summary>Analog input.</summary>
        Analog_Input = 0x02,
        /// <summary>Digital input.</summary>
        Digital_Input = 0x03,  
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05
    }

    /// <summary>Specifies the function for AD3/DIO3 Configuration.</summary>
    public enum AD3DIO3 : byte
    {
        /// <summary>Disabled.</summary>
        Disabled = 0x00,
        /// <summary>Analog input.</summary>
        Analog_Input = 0x02,
        /// <summary>Digital input.</summary>
        Digital_Input = 0x03, 
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05 
    }

    /// <summary>Specifies the API mode for a XBeeDevice object.</summary>
    public enum API_Mode : byte
    {
        /// <summary>API enabled.</summary>
        Enabled = 0x01,
        /// <summary>API enabled (with escaped characters).</summary>
        Enabled_With_Escaped = 0x02
    }

    /// <summary>Specifies the information regarding last node join request.</summary>
    public enum Association_Indications : byte
    {
        /// <summary>Coordinator started or Router/End Device found and joined with a parent.</summary>
        Successful_completion = 0x00,
        /// <summary>Attempted to join a device that did not respond.</summary>
        Attempted_to_join_a_device_that_did_not_respond = 0xAB,
        /// <summary>Network security key received unsecured.</summary>
        Network_security_key_received_unsecured = 0xAC,
        /// <summary>Network security key not received.</summary>
        Network_security_key_not_received = 0xAD,
        /// <summary>Joining device does not have the right preconfigured link key.</summary>
        Joining_device_does_not_have_the_right_preconfigured_link_key = 0xAF,
        /// <summary>Scan found no PANs.</summary>
        Scan_found_no_PANs = 0x21,
        /// <summary>Scan found no valid PANs based on current Scan Channels and Extended PAN ID settings.</summary>
        Scan_found_no_valid_PANs_based_on_current_Scan_Channels_and_Extended_PAN_ID_settings = 0x22,
        /// <summary>Node Join Time expired.</summary>
        Node_Join_Time_expired = 0x23,
        /// <summary>Node Joining attempt failed.</summary>
        Node_Joining_attempt_failed = 0x27,
        /// <summary>Coordinator Start attempt failed.</summary>
        Coordinator_Start_attempt_failed = 0x2A,
        /// <summary>Scanning for a Parent.</summary>
        Scanning_for_a_Parent = 0xFF,
        /// <summary>Checking for an existing coordinator.</summary>
        Checking_for_an_existing_coordinator = 0x2B
    }

    /// <summary>Specifies the Bootloader message type.</summary>
    public enum Bootloader_Type : byte
    {
        /// <summary>Acknowledged.</summary>
        Acknowledged = 0x06,
        /// <summary>No Acknowledged.</summary>
        No_Acknowledged = 0x15,
        /// <summary>No Mac Acknowledged.</summary>
        No_Mac_Acknowledged = 0x40,
        /// <summary>Query (bootloader not active on the target.</summary>
        Query = 0x51,
        /// <summary>Query Response.</summary>
        Query_Rsp = 0x52
    }

    /// <summary>Specifies the delivery status of last transmit request.</summary>
    public enum Delivery : byte
    {
        /// <summary>Success.</summary>
        Success = 0x00, 
        /// <summary>CCA Failure.</summary>
        CCA_Failure = 0x02,
        /// <summary>Invalid Destination Endpoint.</summary>
        Invalid_Destination_Endpoint = 0x15,
        /// <summary>Network ACK Failure.</summary>
        Network_ACK_Failure = 0x21,
        /// <summary>Not Joined To Network.</summary>
        Not_Joined_To_Network = 0x22,
        /// <summary>Self Addressed.</summary>
        Self_Addressed = 0x23,
        /// <summary>Address Not Found.</summary>
        Address_Not_Found = 0x24,
        /// <summary>Route Not Found.</summary>
        Route_Not_Found = 0x25,
        /// <summary>Data payload too large.</summary>
        Data_Too_Large = 0x74
    }

    /// <summary>Specifies the function for DIO4 Configuration.</summary>
    public enum DIO4 : byte
    {
        /// <summary>Disabled.</summary>
        Disabled = 0x00,  
        /// <summary>Digital input.</summary>
        Digital_Input = 0x03,  
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05
    }

    /// <summary>Specifies the function for DIO5 Configuration.</summary>
    public enum DIO5 : byte
    {
        /// <summary>Disabled.</summary>
        Disabled = 0x00, 
        /// <summary>Associated indication LED .</summary>
        Associated_LED = 0x01,
        /// <summary>Digital input  .</summary>
        Digital_Input = 0x03,
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05
    }

    /// <summary>Specifies the function for DIO6 Configuration.</summary>
    public enum DIO6 : byte
    {
        /// <summary>Disabled.</summary>
        Disabled = 0x00,  
        /// <summary>RTS flow control.</summary>
        RTS_Flow_Control = 0x01,
        /// <summary>Digital input.</summary>
        Digital_Input = 0x03,  
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05  
    }

    /// <summary>Specifies the function for DIO7 Configuration.</summary>
    public enum DIO7 : byte
    {
        /// <summary>Disabled .</summary>
        Disabled = 0x00,
        /// <summary>CTS flow vontrol.</summary>
        CTS_Flow_Control = 0x01,
        /// <summary>Digital input.</summary>
        Digital_Input = 0x03,
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05,  
        /// <summary>RS-485 transmit enable, low.</summary>
        RS485_Low = 0x06,
        /// <summary>RS-485 transmit enable, high.</summary>
        RS485_High = 0x07
    }

    /// <summary>Specifies the function for DIO8 Configuration.</summary>
    public enum DIO8 : byte
    {
        /// <summary>Disabled.</summary>
        Disabled = 0x00,
        /// <summary>Digital input.</summary>
        Digital_Input = 0x03,
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05
    }

    /// <summary>Specifies the function for DIO11 Configuration.</summary>
    public enum DIO11 : byte
    {
        /// <summary>Unmonitored digital input.</summary>
        Unmonitored = 0x00,
        /// <summary>Digital input.</summary>
        Digital_Input = 0x03,
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05
    }

    /// <summary>Specifies the function for DIO12 Configuration.</summary>
    public enum DIO12 : byte
    {
        /// <summary>Unmonitored digital input.</summary>
        Unmonitored = 0x00,
        /// <summary>Digital input.</summary>
        Digital_Input = 0x03,
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05
    }

    /// <summary>Specifies the function for DIO13 Configuration.</summary>
    public enum DIO13 : byte
    {
        /// <summary>Disabled.</summary>
        Disabled = 0x00,  
        /// <summary>Digital input.</summary>
        Digital_Input = 0x03,  
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05
    }

    /// <summary>Specifies the discovery status of last transmit request.</summary>
    public enum Discovery : byte
    {
        /// <summary>No Discovery Overhead.</summary>
        No_Discovery_Overhead = 0x00,
        /// <summary>Address Discovery.</summary>
        Address_Discovery = 0x01,
        /// <summary>Route Discovery.</summary>
        Route_Discovery = 0x02,
        /// <summary>Address & Route Discovery.</summary>
        Address_And_Route_Discovery = 0x03
    }

    /// <summary>Specifies the data bytes that need to be escaped.</summary>
    public enum Escape_Characters : byte
    {
        /// <summary>XOn.</summary>
        XOn = 0x11,
        /// <summary>XOff.</summary>
        XOff = 0x13,
        /// <summary>Escape.</summary>
        Escape = 0x7D,
        /// <summary>Frame Delimiter.</summary>
        FrameDelimiter = 0x7E
    }

    /// <summary>Specifies the firmware version of the XBeeDevice object.</summary>
    public enum Firmware : ushort
    {
        /// <summary>ZNet 2.5 Module.</summary>
        ZNet = 0x1000,
        /// <summary>ZB Module.</summary>
        ZB = 0x2000
    }

    /// <summary>Specifies the frame ID mode of the XBeeDevice object.</summary>
    public enum Frame_Id_Mode
    {
        /// <summary>Autoincrement.</summary>
        Autoincrement,
        /// <summary>Random.</summary>
        Random,
        /// <summary>Constant.</summary>
        Constant
    }

    /// <summary>Specifies which API messages will be contained in the frame.</summary>
    public enum Frame_Type : byte
    {
        /// <summary>AT command request.</summary>
        AT_Cmd_Req = 0x08,
        /// <summary>AT command queue request.</summary>
        AT_Cmd_Queue_Req = 0x09,
        /// <summary>ZigBee Tx request.</summary>
        Tx_Req = 0x10,
        /// <summary>Explicit addressing ZigBee command.</summary>
        Explicit_Tx_Req = 0x11,
        /// <summary>Remote AT command request.</summary>
        Remote_AT_Cmd_Req = 0x17,
        /// <summary>Create Source Route.</summary>
        Source_Route = 0x21,
        /// <summary>AT command response.</summary>
        AT_Cmd_Rsp = 0x88,
        /// <summary>Modem status.</summary>
        Modem_Status = 0x8A,
        /// <summary>ZigBee Tx status.</summary>
        Tx_Status = 0x8B,
        /// <summary>ZigBee Rx packet (AO=0).</summary>
        Rx_Packet = 0x90,
        /// <summary>ZigBee explicit Rx indicator (AO=1).</summary>
        Explicit_Rx_Packet = 0x91,
        /// <summary>ZigBee IO data sample Rx indicator.</summary>
        IO_Sample = 0x92,
        /// <summary>XBee sensor read indicator (AO=0).</summary>
        Sensor_Sample = 0x94,
        /// <summary>Node identification indicator (AO=0).</summary>
        Node_Ident = 0x95,
        /// <summary>Remote AT Command response.</summary>
        Remote_AT_Cmd_Rsp = 0x97,
        /// <summary>Over-the-Air Firmware Update Status.</summary>
        Firmware_Update_Status = 0xA0,
        /// <summary>Route Record Indicator.</summary>
        Route_Record = 0xA1
    }

    /// <summary>Specifies the hardware version of the XBeeDevice object.</summary>
    public enum Hardware : ushort
    {
        /// <summary>XBee Module.</summary>
        XBee = 0x1900,
        /// <summary>XBee-PRO Module.</summary>
        XBee_PRO = 0x1A00
    }

    /// <summary>Specifies the modem status in response to specific conditions.</summary>
    public enum Modem_Status : byte
    {
        /// <summary>Hardware Reset.</summary>
        Hardware_Reset = 0x00,
        /// <summary>Watchdog Reset.</summary>
        Watchdog_Reset = 0x01,
        /// <summary>Associated.</summary>
        Associated = 0x02,
        /// <summary>Disassociated.</summary>
        Disassociated = 0x03,
        /// <summary>Synchronization Lost.</summary>
        Synchronization_Lost = 0x04,
        /// <summary>Coordinator Realignment.</summary>
        Coordinator_Realignment = 0x05, 
        /// <summary>Coordinator Started.</summary>
        Coordinator_Started = 0x06
    }

    /// <summary>Specifies the module type of the XBeeDevice object.</summary>
    public enum ModuleType : ushort
    {
        /// <summary>Unspecified.</summary>
        Unspecified = 0x0000, 
        /// <summary>XBee 802.15.4.</summary>
        XBee_802154 = 0x0001, 
        /// <summary>XBee ZNet 2.5.</summary>
        XBee_ZNet25 = 0x0002,  
        /// <summary>XBee ZB.</summary>
        XBee_ZB = 0x0003,  
        /// <summary>XBee DigiMesh 900 MHz.</summary>
        XBee_DigiMesh900 = 0x0004,  
        /// <summary>XBee DigiMesh 2.4 GHz.</summary>
        XBee_DigiMesh24 = 0x0005,  
        /// <summary>XBee 868 MHz.</summary>
        XBee_868 = 0x0006,
        /// <summary>XBee DP 900.</summary>
        XBee_DP900 = 0x0007  
    }

    /// <summary>Specifies the node type of the XBeeDevice object.</summary>
    public enum Node_Type : byte
    {
        /// <summary>Coordinator.</summary>
        Coordinator = 0x00,
        /// <summary>Router.</summary>
        Router = 0x01,
        /// <summary>End Device.</summary>
        End_Device = 0x02
    }

    /// <summary>Specifies the network reset options.</summary>
    public enum Nwk_Rst_Options : byte
    {
        /// <summary>Resets network layer parameters on the node issuing the command.</summary>
        Node = 0x00,
        /// <summary>Resets network layer parameters on all nodes in the PAN.</summary>
        All_Nodes = 0x01
    }

    /// <summary>Specifies the product type of the XBeeDevice object.</summary>
    public enum ProductType : ushort
    {
        /// <summary>Unspecified.</summary>
        Unspecified = 0x0000,
        /// <summary>ConnectPort X8.</summary>
        ConnectPort_X8 = 0x0001,
        /// <summary>ConnectPort X4.</summary>
        ConnectPort_X4 = 0x0002,
        /// <summary>ConnectPort X2.</summary>
        ConnectPort_X2 = 0x0003,  
        /// <summary>Commissioning Tool.</summary>
        Commissioning_Tool = 0x0004,
        /// <summary>XBee RS-232 Adapter.</summary>
        XBee_RS232_Adapter = 0x0005,
        /// <summary>XBee RS-485 Adapter.</summary>
        XBee_RS485_Adapter = 0x0006, 
        /// <summary>XBee Sensor (1-wire) Adapter.</summary>
        XBee_Sensor_Adapter = 0x0007,
        /// <summary>XBee Wall Router.</summary>
        XBee_Wall_Router = 0x0008,
        /// <summary>XBee RS-232 Power Harvester Adapter.</summary>
        XBee_RS232_PH = 0x0009,
        /// <summary>XBee Digital IO Adapter.</summary>
        XBee_DIO_Adapter = 0x000A,
        /// <summary>XBee Analog IO Adapter.</summary>
        XBee_AIO_Adapter = 0x000B,  
        /// <summary>XStick.</summary>
        XStick = 0x000C, 
        /// <summary>XBee Sensor /L/T/H.</summary>
        XBee_Sensor_LTH = 0x000D,  
        /// <summary>XBee Sensor /L/T.</summary>
        XBee_Sensor_LT = 0x000E,
        /// <summary>XBee rpm SmartPlug.</summary>
        XBee_rpm_SmartPlug = 0x000F,
        /// <summary>XBee USB Dongle.</summary>
        XBee_USB_Dongle = 0x0010,  
        /// <summary>XBee Large Display.</summary>
        XBee_Large_Display = 0x0011,  
        /// <summary>XBee Small Display.</summary>
        XBee_Small_Display = 0x0012,  
        /// <summary>ConnectPort HCG.</summary>
        ConnectPort_HCG = 0x0013,  
        /// <summary>Embedded Gateway.</summary>
        Embedded_Gateway = 0x0014,
        /// <summary>ConnectPort X3.</summary>
        ConnectPort_X3 = 0x0015,  
        /// <summary>NET OS Device.</summary>
        NET_OS_Device = 0x0016,  
    }

    /// <summary>Specifies the function for PWM0 Configuration.</summary>
    public enum PWM0 : byte
    {
        /// <summary>Disabled.</summary>
        Disabled = 0x00, 
        /// <summary>RSSI PWM.</summary>
        RSSI_PWM = 0x01,
        /// <summary>Digital input.</summary>
        Digital_Input = 0x03,
        /// <summary>Digital output, low.</summary>
        Digital_Output_Low = 0x04,
        /// <summary>Digital output, high.</summary>
        Digital_Output_High = 0x05
    }

    /// <summary>Specifies the receive options for a receive frame.</summary>
    public enum Rx_Options : byte
    {
        /// <summary>Packet Acknowledged.</summary>
        Packet_Acknowledged = 0x01,
        /// <summary>Broadcast Packet.</summary>
        Broadcast_Packet = 0x02
    }

    /// <summary>Specifies the scan times.</summary>
    public enum Scan_Times : byte
    {
        /// <summary>15.36 ms.</summary>
        _15_36ms = 0x00,
        /// <summary>30.72 ms.</summary>
        _30_72ms = 0x01,
        /// <summary>61.44 ms.</summary>
        _61_44ms = 0x02,
        /// <summary>122.88 ms.</summary>
        _122_88ms = 0x03,
        /// <summary>245.76 ms.</summary>
        _245_76ms = 0x04,
        /// <summary>491.52 ms.</summary>
        _491_52ms = 0x05,
        /// <summary>983.04 ms.</summary>
        _983_04ms = 0x06,
        /// <summary>1966.08 ms.</summary>
        _1966_08ms = 0x07
    }

    /// <summary>Specifies the sensor type.</summary>
    public enum Sensor_Type : byte
    {
        /// <summary>A/D Sensor.</summary>
        AD = 0x01,
        /// <summary>Temperature Sensor.</summary>
        Temperature = 0x02,
        /// <summary>Water Present Sensor.</summary>
        Water_Present = 0x60
    }

    /// <summary>Specifies the sleep mode for a XBeeDevice object.</summary>
    public enum Sleep_Mode : byte
    {
        /// <summary>Sleep Disabled.</summary>
        Disabled = 0x00,
        /// <summary>Pin Sleep Enabled.</summary>
        Pin_Sleep = 0x01,
        /// <summary>Cyclic Sleep Enabled.</summary>
        Cyclic_Sleep = 0x04,
        /// <summary>Cyclic sleep, pin wake.</summary>
        Cyclic_Sleep_Pin_Wake = 0x05
    }

    /// <summary>Specifies the sleep mode for a XBeeDevice object.</summary>
    public enum Source_Event : byte
    {
        /// <summary>Push Button Event.</summary>
        Push_Button_Event = 0x01,
        /// <summary>Joining Event.</summary>
        Joining_Event = 0x02,
        /// <summary>Power Cycle Event.</summary>
        Power_Cycle_Event = 0x03
    }

    /// <summary>Specifies the status response for a command request frame.</summary>
    public enum Status_Rsp : byte
    {
        /// <summary>Ok.</summary>
        Ok = 0x00,
        /// <summary>Error.</summary>
        Error = 0x01,
        /// <summary>Invalid Command.</summary>
        Invalid_Command = 0x02,
        /// <summary>Invalid Parameter.</summary>
        Invalid_Parameter = 0x03
    }

    /// <summary>Specifies the baud rate for a XBeeDevice object.</summary>
    public enum XBee_BaudRate : byte
    {
        /// <summary>1200 bps.</summary>
        _1200 = 0x00,
        /// <summary>2400 bps.</summary>
        _2400 = 0x01,
        /// <summary>4800 bps.</summary>
        _4800 = 0x02,
        /// <summary>9600 bps.</summary>
        _9600 = 0x03,
        /// <summary>19200 bps.</summary>
        _19200 = 0x04,
        /// <summary>38400 bps.</summary>
        _38400 = 0x05, 
        /// <summary>57600 bps.</summary>
        _57600 = 0x06,
        /// <summary>115200 bps.</summary>
        _115200 = 0x07
    }

    /// <summary>Specifies the parity for a XBeeDevice object.</summary>
    public enum XBee_Parity : byte
    {
        /// <summary>No Parity.</summary>
        None = 0x00,
        /// <summary>Even Parity.</summary>
        Even = 0x01,
        /// <summary>Odd Parity.</summary>
        Odd = 0x02,
        /// <summary>Mark Parity.</summary>
        Mark = 0x03
    }

    public enum ZDP_Status : byte
    {
        /// <summary>The requested operation or transmission was completed successfully.</summary>
        Success = 0x00,
        /// <summary>The supplied request type was invalid.</summary>
        Inv_Req_Type = 0x80,
        /// <summary>The requested device did not exist on a device following a child descriptor request to a parent.</summary>
        Device_Not_Found = 0x81,
        /// <summary>The supplied endpoint was equal to 0x00 or between 0xf1 and 0xff.</summary>
        Invalid_EP = 0x82,
        /// <summary>The requested endpoint is not described by a simple descriptor.</summary>
        Not_Active = 0x83,
        /// <summary>The requested optional feature is not supported on the target device.</summary>
        Not_Supported = 0x84,
        /// <summary>A timeout has occurred with the requested operation.</summary>
        Timeout = 0x85,
        /// <summary>The end device bind request was unsuccessful due to a failure to match any suitable clusters.</summary>
        No_Match = 0x86,
        /// <summary>The unbind request was unsuccessful due to the coordinator or source device not having an entry in its binding table to unbind.</summary>
        No_Entry = 0x88,
        /// <summary>A child descriptor was not available following a discovery request to a parent.</summary>
        No_Descriptor = 0x89,
        /// <summary>The device does not have storage space to support the requested operation.</summary>
        Insufficient_Space = 0x8A,
        /// <summary>The device is not in the proper state to support the requested operation.</summary>
        Not_Permitted = 0x8B,
        /// <summary>The device does not have table space to support the operation.</summary>
        Table_Full = 0x8C,
        /// <summary>The permissions configuration table on the target indicates that the request is not authorized from this device.</summary>
        Not_Authorized = 0x8D
    }

    public enum ZDP_Type : ushort
    {
        // CLIENT SERVICES

        // Device and Service Discovery Client Services

        /// <summary>Network Address Request.</summary>
        NWK_Addr_Req = 0x0000,
        /// <summary>IEEE Address Request.</summary>
        IEEE_Addr_Req = 0x0001,
        /// <summary>Node Descriptor Request.</summary>
        Node_Desc_Req = 0x0002,
        /// <summary>Power Descriptor Request.</summary>
        Power_Desc_Req = 0x0003,
        /// <summary>Simple Descriptor Request.</summary>
        Simple_Desc_Req = 0x0004,
        /// <summary>Active EndPoints Request.</summary>
        Active_EP_Req = 0x0005,
        /// <summary>Match Descriptor Request.</summary>
        Match_Desc_Req = 0x0006,
        /// <summary>Complex Descriptor Request.</summary>
        Complex_Desc_Req = 0x0010,
        /// <summary>User Descriptor Request.</summary>
        User_Desc_Req = 0x0011,
        /// <summary>Discovery Cache Request.</summary>
        Discovery_Cache_Req = 0x0012,
        /// <summary>Device Annce.</summary>
        Device_Annce = 0x0013,
        /// <summary>User Descriptor Set.</summary>
        User_Desc_Set = 0x0014,
        /// <summary>System Server Discovery Request.</summary>
        System_Server_Discovery_Req = 0x0015,
        /// <summary>Discovery store Request.</summary>
        Discovery_store_Req = 0x0016,
        /// <summary>Node Descriptor Store Request.</summary>
        Node_Desc_Store_Req = 0x0017,
        /// <summary>Power Descriptor Store Request.</summary>
        Power_Desc_Store_Req = 0x0018,
        /// <summary>Active EndPoints Store Request.</summary>
        Active_EP_Store_Req = 0x0019,
        /// <summary>Simple Descriptor Store Request.</summary>
        Simple_Desc_Store_Req = 0x001A,
        /// <summary>Remove Node Cache Request.</summary>
        Remove_Node_Cache_Req = 0x001B,
        /// <summary>Find Node Cache Request.</summary>
        Find_Node_Cache_Req = 0x001C,
        /// <summary>Extended Simple Descriptor Request.</summary>
        Extended_Simple_Desc_Req = 0x001D,
        /// <summary>Extended Active EndPoints Request.</summary>
        Extended_Active_EP_Req = 0x001E,

        // End Device Bind, Bind, Unbind, and Bind Management Client Services

        /// <summary>End Device Bind Request.</summary>
        End_Device_Bind_Req = 0x0020,
        /// <summary>Bind Request.</summary>
        Bind_Req = 0x0021,
        /// <summary>Unbind Request.</summary>
        Unbind_Req = 0x0022,
        /// <summary>Bind Register Request.</summary>
        Bind_Register_Req = 0x0023,
        /// <summary>Replace Device Request.</summary>
        Replace_Device_Req = 0x0024,
        /// <summary>Store Backup Bind Entry Request.</summary>
        Store_Bkup_Bind_Entry_Req = 0x0025,
        /// <summary>Remove Backup Bind Entry Request.</summary>
        Remove_Bkup_Bind_Entry_Req = 0x0026,
        /// <summary>Backup Bind Table Request.</summary>
        Backup_Bind_Table_Req = 0x0027,
        /// <summary>Recover Bind Table Request.</summary>
        Recover_Bind_Table_Req = 0x0028,
        /// <summary>Backup Source Bind Request.</summary>
        Backup_Source_Bind_Req = 0x0029,
        /// <summary>Recover Source Bind Request.</summary>
        Recover_Source_Bind_Req = 0x002A,

        // Network Management Client Services

        /// <summary>Management Network Discovery Request.</summary>
        Mgmt_NWK_Disc_Req = 0x0030,
        /// <summary>Management LQI Request.</summary>
        Mgmt_Lqi_Req = 0x0031,
        /// <summary>Management Routing Request.</summary>
        Mgmt_Rtg_Req = 0x0032,
        /// <summary>Management Binding Request.</summary>
        Mgmt_Bind_Req = 0x0033,
        /// <summary>Management Leave Request.</summary>
        Mgmt_Leave_Req = 0x0034,
        /// <summary>Management Direct Join Request.</summary>
        Mgmt_Direct_Join_Req = 0x0035,
        /// <summary>Management Permit Joining Request.</summary>
        Mgmt_Permit_Joining_Req = 0x0036,
        /// <summary>Management Cache Request.</summary>
        Mgmt_Cache_Req = 0x0037,
        /// <summary>Management Network Update Request.</summary>
        Mgmt_NWK_Update_Req = 0x0038,

        // SERVER SERVICES

        // Device and Service Discovery Server

        /// <summary>Network Address Response.</summary>
        NWK_Addr_Rsp = 0x8000,
        /// <summary>IEEE Address Response.</summary>
        IEEE_Addr_Rsp = 0x8001,
        /// <summary>Node Descriptor Response.</summary>
        Node_Desc_Rsp = 0x8002,
        /// <summary>Power Descriptor Response.</summary>
        Power_Desc_Rsp = 0x8003,
        /// <summary>Simple Descriptor Response.</summary>
        Simple_Desc_Rsp = 0x8004,
        /// <summary>Active EndPoints Response.</summary>
        Active_EP_Rsp = 0x8005,
        /// <summary>Match Descriptor Response.</summary>
        Match_Desc_Rsp = 0x8006,
        /// <summary>Complex Descriptor Response.</summary>
        Complex_Desc_Rsp = 0x8010,
        /// <summary>User Descriptor Response.</summary>
        User_Desc_Rsp = 0x8011,
        /// <summary>Discovery Cache Response.</summary>
        Discovery_Cache_Rsp = 0x8012,
        /// <summary>User Descriptor Configuration.</summary>
        User_Desc_Conf = 0x8014,
        /// <summary>System Server Discovery Response.</summary>
        System_Server_Discovery_Rsp = 0x8015,
        /// <summary>Discovery store Response.</summary>
        Discovery_store_Rsp = 0x8016,
        /// <summary>Node Descriptor Store Response.</summary>
        Node_Desc_Store_Rsp = 0x8017,
        /// <summary>Power Descriptor Store Response.</summary>
        Power_Desc_Store_Rsp = 0x8018,
        /// <summary>Active EndPoints Store Response.</summary>
        Active_EP_Store_Rsp = 0x8019,
        /// <summary>Simple Descriptor Store Response.</summary>
        Simple_Desc_Store_Rsp = 0x801A,
        /// <summary>Remove Node Cache Response.</summary>
        Remove_Node_Cache_Rsp = 0x801B,
        /// <summary>Find Node Cache Response.</summary>
        Find_Node_Cache_Rsp = 0x801C,
        /// <summary>Extended Simple Descriptor Response.</summary>
        Extended_Simple_Desc_Rsp = 0x801D,
        /// <summary>Extended Active EndPoints Response.</summary>
        Extended_Active_EP_Rsp = 0x801E,

        // End Device Bind, Bind, Unbind Bind Management Server Services

        /// <summary>End Device Bind Response.</summary>
        End_Device_Bind_Rsp = 0x8020,
        /// <summary>Bind Response.</summary>
        Bind_Rsp = 0x8021,
        /// <summary>Unbind Response.</summary>
        Unbind_Rsp = 0x8022,
        /// <summary>Bind Register Response.</summary>
        Bind_Register_Rsp = 0x8023,
        /// <summary>Replace Device Response.</summary>
        Replace_Device_Rsp = 0x8024,
        /// <summary>Store Backup Bind Entry Response.</summary>
        Store_Bkup_Bind_Entry_Rsp = 0x8025,
        /// <summary>Remove Backup Bind Entry Response.</summary>
        Remove_Bkup_Bind_Entry_Rsp = 0x8026,
        /// <summary>Backup Bind Table Response.</summary>
        Backup_Bind_Table_Rsp = 0x8027,
        /// <summary>Recover Bind Table Response.</summary>
        Recover_Bind_Table_Rsp = 0x8028,
        /// <summary>Backup Source Bind Response.</summary>
        Backup_Source_Bind_Rsp = 0x8029,
        /// <summary>Recover Source Bind Response.</summary>
        Recover_Source_Bind_Rsp = 0x802A,

        // Network Management Server Services

        /// <summary>Management Network Discovery Response.</summary>
        Mgmt_NWK_Disc_Rsp = 0x8030,
        /// <summary>Management LQI Response.</summary>
        Mgmt_Lqi_Rsp = 0x8031,
        /// <summary>Management Routing Response.</summary>
        Mgmt_Rtg_Rsp = 0x8032,
        /// <summary>Management Binding Response.</summary>
        Mgmt_Bind_Rsp = 0x8033,
        /// <summary>Management Leave Response.</summary>
        Mgmt_Leave_Rsp = 0x8034,
        /// <summary>Management Direct Join Response.</summary>
        Mgmt_Direct_Join_Rsp = 0x8035,
        /// <summary>Management Permit Joining Response.</summary>
        Mgmt_Permit_Joining_Rsp = 0x8036,
        /// <summary>Management Cache Response.</summary>
        Mgmt_Cache_Rsp = 0x8037,
        /// <summary>Management Network Update Response.</summary>
        Mgmt_NWK_Update_Rsp = 0x8038,
    }
}
