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