    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;
    013
    014import com.digi.xbee.api.exceptions.TimeoutException;
    015import com.digi.xbee.api.exceptions.XBeeException;
    016import com.digi.xbee.api.models.AssociationIndicationStatus;
    017import com.digi.xbee.api.models.XBee16BitAddress;
    018import com.digi.xbee.api.models.XBee64BitAddress;
    019import com.digi.xbee.api.models.XBeeProtocol;
    020
    021/**
    022 * This class represents a remote ZigBee device.
    023 *
    024 * @see RemoteXBeeDevice
    025 * @see RemoteDigiMeshDevice
    026 * @see RemoteDigiPointDevice
    027 * @see RemoteRaw802Device
    028 */
    029public class RemoteZigBeeDevice extends RemoteXBeeDevice {
    030
    031        /**
    032         * Class constructor. Instantiates a new {@code RemoteZigBeeDevice} object
    033         * with the given local {@code ZigBeeDevice} which contains the connection
    034         * interface to be used.
    035         *
    036         * @param localXBeeDevice The local ZigBee device that will behave as
    037         *                        connection interface to communicate with this
    038         *                        remote ZigBee device.
    039         * @param addr64 The 64-bit address to identify this remote ZigBee device.
    040         *
    041         * @throws IllegalArgumentException if {@code localXBeeDevice.isRemote() == true}.
    042         * @throws NullPointerException if {@code localXBeeDevice == null} or
    043         *                              if {@code addr64 == null}.
    044         *
    045         * @see com.digi.xbee.api.models.XBee64BitAddress
    046         */
    047        public RemoteZigBeeDevice(ZigBeeDevice localXBeeDevice, XBee64BitAddress addr64) {
    048                super(localXBeeDevice, addr64);
    049        }
    050
    051        /**
    052         * Class constructor. Instantiates a new {@code RemoteZigBeeDevice} object
    053         * with the given local {@code XBeeDevice} which contains the connection
    054         * interface to be used.
    055         *
    056         * @param localXBeeDevice The local XBee device that will behave as
    057         *                        connection interface to communicate with this
    058         *                        remote ZigBee device.
    059         * @param addr64 The 64-bit address to identify this remote ZigBee device.
    060         *
    061         * @throws IllegalArgumentException if {@code localXBeeDevice.isRemote() == true} or
    062         *                                  if {@code localXBeeDevice.getXBeeProtocol() != XBeeProtocol.ZIGBEE}.
    063         * @throws NullPointerException if {@code localXBeeDevice == null} or
    064         *                              if {@code addr64 == null}.
    065         *
    066         * @see com.digi.xbee.api.models.XBee64BitAddress
    067         */
    068        public RemoteZigBeeDevice(XBeeDevice localXBeeDevice, XBee64BitAddress addr64) {
    069                super(localXBeeDevice, addr64);
    070
    071                // Verify the local device has ZigBee protocol.
    072                if (localXBeeDevice.getXBeeProtocol() != XBeeProtocol.ZIGBEE)
    073                        throw new IllegalArgumentException("The protocol of the local XBee device is not " + XBeeProtocol.ZIGBEE.getDescription() + ".");
    074        }
    075
    076        /**
    077         * Class constructor. Instantiates a new {@code RemoteZigBeeDevice} object
    078         * with the given local {@code XBeeDevice} which contains the connection
    079         * interface to be used.
    080         *
    081         * @param localXBeeDevice The local XBee device that will behave as
    082         *                        connection interface to communicate with this
    083         *                        remote ZigBee device.
    084         * @param addr64 The 64-bit address to identify this remote ZigBee device.
    085         * @param addr16 The 16-bit address to identify this remote ZigBee device.
    086         *               It might be {@code null}.
    087         * @param ni The node identifier of this remote ZigBee device. It might be
    088         *           {@code null}.
    089         *
    090         * @throws IllegalArgumentException if {@code localXBeeDevice.isRemote() == true} or
    091         *                                  if {@code localXBeeDevice.getXBeeProtocol() != XBeeProtocol.ZIGBEE}.
    092         * @throws NullPointerException if {@code localXBeeDevice == null} or
    093         *                              if {@code addr64 == null}.
    094         *
    095         * @see com.digi.xbee.api.models.XBee16BitAddress
    096         * @see com.digi.xbee.api.models.XBee64BitAddress
    097         */
    098        public RemoteZigBeeDevice(XBeeDevice localXBeeDevice, XBee64BitAddress addr64,
    099                        XBee16BitAddress addr16, String ni) {
    100                super(localXBeeDevice, addr64, addr16, ni);
    101
    102                // Verify the local device has ZigBee protocol.
    103                if (localXBeeDevice.getXBeeProtocol() != XBeeProtocol.ZIGBEE)
    104                        throw new IllegalArgumentException("The protocol of the local XBee device is not " + XBeeProtocol.ZIGBEE.getDescription() + ".");
    105        }
    106
    107        /*
    108         * (non-Javadoc)
    109         * @see com.digi.xbee.api.AbstractXBeeDevice#getXBeeProtocol()
    110         */
    111        @Override
    112        public XBeeProtocol getXBeeProtocol() {
    113                return XBeeProtocol.ZIGBEE;
    114        }
    115
    116        /*
    117         * (non-Javadoc)
    118         * @see com.digi.xbee.api.AbstractXBeeDevice#getAssociationIndicationStatus()
    119         */
    120        @Override
    121        public AssociationIndicationStatus getAssociationIndicationStatus() throws TimeoutException, XBeeException {
    122                return super.getAssociationIndicationStatus();
    123        }
    124
    125        /*
    126         * (non-Javadoc)
    127         * @see com.digi.xbee.api.AbstractXBeeDevice#forceDisassociate()
    128         */
    129        @Override
    130        public void forceDisassociate() throws TimeoutException, XBeeException {
    131                super.forceDisassociate();
    132        }
    133}