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 802.15.4 device. 023 * 024 * @see RemoteXBeeDevice 025 * @see RemoteDigiMeshDevice 026 * @see RemoteDigiPointDevice 027 * @see RemoteZigBeeDevice 028 */ 029public class RemoteRaw802Device extends RemoteXBeeDevice { 030 031 /** 032 * Class constructor. Instantiates a new {@code RemoteRaw802Device} object 033 * with the given local {@code Raw802Device} which contains the connection 034 * interface to be used. 035 * 036 * @param localXBeeDevice The local 802.15.4 device that will behave as 037 * connection interface to communicate with this 038 * remote 802.15.4 device. 039 * @param addr64 The 64-bit address to identify this remote 802.15.4 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 RemoteRaw802Device(Raw802Device localXBeeDevice, XBee64BitAddress addr64) { 048 super(localXBeeDevice, addr64); 049 } 050 051 /** 052 * Class constructor. Instantiates a new {@code RemoteRaw802Device} 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 802.15.4 device. 059 * @param addr64 The 64-bit address to identify this remote 802.15.4 device. 060 * @param addr16 The 16-bit address to identify this remote 802.15.4 device. 061 * It might be {@code null}. 062 * @param id The node identifier of this remote 802.15.4 device. It might be 063 * {@code null}. 064 * 065 * @throws IllegalArgumentException if {@code localXBeeDevice.isRemote() == true} or 066 * if {@code localXBeeDevice.getXBeeProtocol() != XBeeProtocol.RAW_802_15_4} 067 * @throws NullPointerException if {@code localXBeeDevice == null} or 068 * if {@code addr64 == null}. 069 * 070 * @see com.digi.xbee.api.models.XBee16BitAddress 071 * @see com.digi.xbee.api.models.XBee64BitAddress 072 */ 073 public RemoteRaw802Device(XBeeDevice localXBeeDevice, XBee64BitAddress addr64, 074 XBee16BitAddress addr16, String id) { 075 super(localXBeeDevice, addr64, addr16, id); 076 077 // Verify the local device has 802.15.4 protocol. 078 if (localXBeeDevice.getXBeeProtocol() != XBeeProtocol.RAW_802_15_4) 079 throw new IllegalArgumentException("The protocol of the local XBee device is not " + XBeeProtocol.RAW_802_15_4.getDescription() + "."); 080 } 081 082 /** 083 * Class constructor. Instantiates a new {@code RemoteRaw802Device} object 084 * with the given local {@code Raw802Device} which contains the connection 085 * interface to be used. 086 * 087 * @param localXBeeDevice The local 802.15.4 device that will behave as 088 * connection interface to communicate with this 089 * remote 802.15.4 device. 090 * @param addr16 The 16-bit address to identify this remote 802.15.4 091 * device. 092 * 093 * @throws NullPointerException if {@code localXBeeDevice == null} or 094 * if {@code addr16 == null}. 095 * 096 * @see com.digi.xbee.api.models.XBee16BitAddress 097 */ 098 public RemoteRaw802Device(Raw802Device localXBeeDevice, XBee16BitAddress addr16) { 099 super(localXBeeDevice, XBee64BitAddress.UNKNOWN_ADDRESS); 100 101 this.xbee16BitAddress = addr16; 102 } 103 104 /** 105 * Class constructor. Instantiates a new {@code RemoteRaw802Device} object 106 * interface to be used. 107 * 108 * @param localXBeeDevice The local 802.15.4 device that will behave as 109 * connection interface to communicate with this 110 * remote 802.15.4 device. 111 * @param addr16 The 16-bit address to identify this remote 802.15.4 112 * device. 113 * 114 * @throws IllegalArgumentException if {@code localXBeeDevice.getXBeeProtocol() != XBeeProtocol.RAW_802_15_4}. 115 * @throws NullPointerException if {@code localXBeeDevice == null} or 116 * if {@code addr16 == null}. 117 * 118 * @see com.digi.xbee.api.models.XBee16BitAddress 119 */ 120 public RemoteRaw802Device(XBeeDevice localXBeeDevice, XBee16BitAddress addr16) { 121 super(localXBeeDevice, XBee64BitAddress.UNKNOWN_ADDRESS); 122 123 // Verify the local device has 802.15.4 protocol. 124 if (localXBeeDevice.getXBeeProtocol() != XBeeProtocol.RAW_802_15_4) 125 throw new IllegalArgumentException("The protocol of the local XBee device is not " + XBeeProtocol.RAW_802_15_4.getDescription() + "."); 126 127 this.xbee16BitAddress = addr16; 128 } 129 130 /** 131 * Sets the XBee64BitAddress of this remote 802.15.4 device. 132 * 133 * @param addr64 The 64-bit address to be set to the device. 134 * 135 * @see com.digi.xbee.api.models.XBee64BitAddress 136 */ 137 public void set64BitAddress(XBee64BitAddress addr64) { 138 this.xbee64BitAddress = addr64; 139 } 140 141 /* 142 * (non-Javadoc) 143 * @see com.digi.xbee.api.AbstractXBeeDevice#getXBeeProtocol() 144 */ 145 @Override 146 public XBeeProtocol getXBeeProtocol() { 147 return XBeeProtocol.RAW_802_15_4; 148 } 149 150 /* 151 * (non-Javadoc) 152 * @see com.digi.xbee.api.AbstractXBeeDevice#set16BitAddress(com.digi.xbee.api.models.XBee16BitAddress) 153 */ 154 @Override 155 public void set16BitAddress(XBee16BitAddress xbee16BitAddress) throws TimeoutException, XBeeException { 156 super.set16BitAddress(xbee16BitAddress); 157 } 158 159 /* 160 * (non-Javadoc) 161 * @see com.digi.xbee.api.AbstractXBeeDevice#getAssociationIndicationStatus() 162 */ 163 @Override 164 public AssociationIndicationStatus getAssociationIndicationStatus() throws TimeoutException, XBeeException { 165 return super.getAssociationIndicationStatus(); 166 } 167}