001/*
002 * Copyright 2017-2019, Digi International Inc.
003 *
004 * This Source Code Form is subject to the terms of the Mozilla Public
005 * License, v. 2.0. If a copy of the MPL was not distributed with this
006 * file, you can obtain one at http://mozilla.org/MPL/2.0/.
007 *
008 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 
009 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 
010 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 
011 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 
012 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 
013 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 
014 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
015 */
016package com.digi.xbee.api;
017
018import com.digi.xbee.api.connection.IConnectionInterface;
019import com.digi.xbee.api.connection.serial.SerialPortParameters;
020import com.digi.xbee.api.exceptions.TimeoutException;
021import com.digi.xbee.api.exceptions.XBeeException;
022import com.digi.xbee.api.listeners.IIOSampleReceiveListener;
023import com.digi.xbee.api.listeners.IModemStatusReceiveListener;
024import com.digi.xbee.api.listeners.IPacketReceiveListener;
025import com.digi.xbee.api.listeners.IDataReceiveListener;
026import com.digi.xbee.api.listeners.IUserDataRelayReceiveListener;
027import com.digi.xbee.api.listeners.relay.IBluetoothDataReceiveListener;
028import com.digi.xbee.api.listeners.relay.IMicroPythonDataReceiveListener;
029import com.digi.xbee.api.models.OperatingMode;
030import com.digi.xbee.api.models.XBeeLocalInterface;
031import com.digi.xbee.api.models.XBeeMessage;
032import com.digi.xbee.api.packet.XBeePacket;
033
034/**
035 * This class represents a local XBee device.
036 * 
037 * @see CellularDevice
038 * @see DigiPointDevice
039 * @see DigiMeshDevice
040 * @see Raw802Device
041 * @see ThreadDevice
042 * @see WiFiDevice
043 * @see ZigBeeDevice
044 */
045public class XBeeDevice extends AbstractXBeeDevice {
046        
047        /**
048         * Class constructor. Instantiates a new {@code XBeeDevice} object 
049         * physically connected to the given port name and configured at the 
050         * provided baud rate.
051         * 
052         * @param port Serial port name where XBee device is attached to.
053         * @param baudRate Serial port baud rate to communicate with the device. 
054         *                 Other connection parameters will be set as default (8 
055         *                 data bits, 1 stop bit, no parity, no flow control).
056         * 
057         * @throws IllegalArgumentException if {@code baudRate < 0}.
058         * @throws NullPointerException if {@code port == null}.
059         * 
060         * @see #XBeeDevice(IConnectionInterface)
061         * @see #XBeeDevice(String, SerialPortParameters)
062         * @see #XBeeDevice(String, int, int, int, int, int)
063         */
064        public XBeeDevice(String port, int baudRate) {
065                super(port, baudRate);
066        }
067        
068        /**
069         * Class constructor. Instantiates a new {@code XBeeDevice} object 
070         * physically connected to the given port name and configured to communicate 
071         * with the provided serial settings.
072         * 
073         * @param port Serial port name where XBee device is attached to.
074         * @param baudRate Serial port baud rate to communicate with the device.
075         * @param dataBits Serial port data bits.
076         * @param stopBits Serial port data bits.
077         * @param parity Serial port data bits.
078         * @param flowControl Serial port data bits.
079         * 
080         * @throws IllegalArgumentException if {@code baudRate < 0} or
081         *                                  if {@code dataBits < 0} or
082         *                                  if {@code stopBits < 0} or
083         *                                  if {@code parity < 0} or
084         *                                  if {@code flowControl < 0}.
085         * @throws NullPointerException if {@code port == null}.
086         * 
087         * @see #XBeeDevice(IConnectionInterface)
088         * @see #XBeeDevice(String, int)
089         * @see #XBeeDevice(String, SerialPortParameters)
090         */
091        public XBeeDevice(String port, int baudRate, int dataBits, int stopBits, int parity, int flowControl) {
092                super(port, baudRate, dataBits, stopBits, parity, flowControl);
093        }
094        
095        /**
096         * Class constructor. Instantiates a new {@code XBeeDevice} object 
097         * physically connected to the given port name and configured to communicate 
098         * with the provided serial settings.
099         * 
100         * @param port Serial port name where XBee device is attached to.
101         * @param serialPortParameters Object containing the serial port parameters.
102         * 
103         * @throws NullPointerException if {@code port == null} or
104         *                              if {@code serialPortParameters == null}.
105         * 
106         * @see #XBeeDevice(IConnectionInterface)
107         * @see #XBeeDevice(String, int)
108         * @see #XBeeDevice(String, int, int, int, int, int)
109         * @see com.digi.xbee.api.connection.serial.SerialPortParameters
110         */
111        public XBeeDevice(String port, SerialPortParameters serialPortParameters) {
112                super(port, serialPortParameters);
113        }
114        
115        /**
116         * Class constructor. Instantiates a new {@code XBeeDevice} object with the 
117         * given connection interface.
118         * 
119         * @param connectionInterface The connection interface with the physical 
120         *                            XBee device.
121         * 
122         * @throws NullPointerException if {@code connectionInterface == null}.
123         * 
124         * @see #XBeeDevice(String, int)
125         * @see #XBeeDevice(String, SerialPortParameters)
126         * @see #XBeeDevice(String, int, int, int, int, int)
127         * @see com.digi.xbee.api.connection.IConnectionInterface
128         */
129        public XBeeDevice(IConnectionInterface connectionInterface) {
130                super(connectionInterface);
131        }
132        
133        @Override
134        public void open() throws XBeeException {
135                super.open();
136        }
137        
138        @Override
139        public void close() {
140                super.close();
141        }
142        
143        @Override
144        public boolean isOpen() {
145                return super.isOpen();
146        }
147        
148        @Override
149        public boolean isRemote() {
150                return false;
151        }
152        
153        @Override
154        public XBeeNetwork getNetwork() {
155                return super.getNetwork();
156        }
157        
158        @Override
159        public OperatingMode getOperatingMode() {
160                return super.getOperatingMode();
161        }
162        
163        @Override
164        public int getNextFrameID() {
165                return super.getNextFrameID();
166        }
167        
168        @Override
169        public int getReceiveTimeout() {
170                return super.getReceiveTimeout();
171        }
172        
173        @Override
174        public void setReceiveTimeout(int receiveTimeout) {
175                super.setReceiveTimeout(receiveTimeout);
176        }
177        
178        @Override
179        public void addPacketListener(IPacketReceiveListener listener) {
180                super.addPacketListener(listener);
181        }
182        
183        @Override
184        public void removePacketListener(IPacketReceiveListener listener) {
185                super.removePacketListener(listener);
186        }
187        
188        @Override
189        public void addDataListener(IDataReceiveListener listener) {
190                super.addDataListener(listener);
191        }
192        
193        @Override
194        public void removeDataListener(IDataReceiveListener listener) {
195                super.removeDataListener(listener);
196        }
197        
198        @Override
199        public void addIOSampleListener(IIOSampleReceiveListener listener) {
200                super.addIOSampleListener(listener);
201        }
202        
203        @Override
204        public void removeIOSampleListener(IIOSampleReceiveListener listener) {
205                super.removeIOSampleListener(listener);
206        }
207        
208        @Override
209        public void addModemStatusListener(IModemStatusReceiveListener listener) {
210                super.addModemStatusListener(listener);
211        }
212        
213        @Override
214        public void removeModemStatusListener(IModemStatusReceiveListener listener) {
215                super.removeModemStatusListener(listener);
216        }
217        
218        @Override
219        public void addUserDataRelayListener(IUserDataRelayReceiveListener listener) {
220                super.addUserDataRelayListener(listener);
221        }
222        
223        @Override
224        public void removeUserDataRelayListener(IUserDataRelayReceiveListener listener) {
225                super.removeUserDataRelayListener(listener);
226        }
227        
228        @Override
229        public void addBluetoothDataListener(IBluetoothDataReceiveListener listener) {
230                super.addBluetoothDataListener(listener);
231        }
232        
233        @Override
234        public void removeBluetoothDataListener(IBluetoothDataReceiveListener listener) {
235                super.removeBluetoothDataListener(listener);
236        }
237        
238        @Override
239        public void addMicroPythonDataListener(IMicroPythonDataReceiveListener listener) {
240                super.addMicroPythonDataListener(listener);
241        }
242        
243        @Override
244        public void removeMicroPythonDataListener(IMicroPythonDataReceiveListener listener) {
245                super.removeMicroPythonDataListener(listener);
246        }
247        
248        @Override
249        public void sendDataAsync(RemoteXBeeDevice remoteXBeeDevice, byte[] data) throws XBeeException {
250                super.sendDataAsync(remoteXBeeDevice, data);
251        }
252        
253        @Override
254        public void sendData(RemoteXBeeDevice remoteXBeeDevice, byte[] data) throws TimeoutException, XBeeException {
255                super.sendData(remoteXBeeDevice, data);
256        }
257        
258        @Override
259        public void sendBroadcastData(byte[] data) throws TimeoutException, XBeeException {
260                super.sendBroadcastData(data);
261        }
262        
263        @Override
264        public void sendUserDataRelay(XBeeLocalInterface destInterface, byte[] data) throws XBeeException {
265                super.sendUserDataRelay(destInterface, data);
266        }
267        
268        @Override
269        public void sendBluetoothData(byte[] data) throws XBeeException {
270                super.sendBluetoothData(data);
271        }
272        
273        @Override
274        public void sendMicroPythonData(byte[] data) throws XBeeException {
275                super.sendMicroPythonData(data);
276        }
277        
278        @Override
279        public void sendPacket(XBeePacket packet, IPacketReceiveListener packetReceiveListener) throws XBeeException {
280                super.sendPacket(packet, packetReceiveListener);
281        }
282        
283        @Override
284        public void sendPacketAsync(XBeePacket packet) throws XBeeException {
285                super.sendPacketAsync(packet);
286        }
287        
288        @Override
289        public XBeePacket sendPacket(XBeePacket packet) throws TimeoutException, XBeeException {
290                return super.sendPacket(packet);
291        }
292        
293        @Override
294        public void reset() throws TimeoutException, XBeeException {
295                softwareReset();
296        }
297        
298        @Override
299        public XBeePacket readPacket() {
300                return super.readPacket();
301        }
302        
303        @Override
304        public XBeePacket readPacket(int timeout) {
305                return super.readPacket(timeout);
306        }
307        
308        @Override
309        public XBeePacket readPacketFrom(RemoteXBeeDevice remoteXBeeDevice) {
310                return super.readPacketFrom(remoteXBeeDevice);
311        }
312        
313        @Override
314        public XBeePacket readPacketFrom(RemoteXBeeDevice remoteXBeeDevice, int timeout) {
315                return super.readPacketFrom(remoteXBeeDevice, timeout);
316        }
317        
318        @Override
319        public XBeeMessage readData() {
320                return super.readData();
321        }
322        
323        @Override
324        public XBeeMessage readData(int timeout) {
325                return super.readData(timeout);
326        }
327        
328        @Override
329        public XBeeMessage readDataFrom(RemoteXBeeDevice remoteXBeeDevice) {
330                return super.readDataFrom(remoteXBeeDevice);
331        }
332        
333        @Override
334        public XBeeMessage readDataFrom(RemoteXBeeDevice remoteXBeeDevice, int timeout) {
335                return super.readDataFrom(remoteXBeeDevice, timeout);
336        }
337        
338        @Override
339        public String toString() {
340                return super.toString();
341        }
342}