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