Files
JIMRI/java/test/jmri/jmrix/ieee802154/xbee/XBeeInterfaceScaffold.java
2026-06-17 14:00:51 +02:00

133 lines
3.2 KiB
Java

package jmri.jmrix.ieee802154.xbee;
import com.digi.xbee.api.XBeeDevice;
import com.digi.xbee.api.RemoteXBeeDevice;
import java.util.Vector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* XBeeInterfaceScaffold.java
*
* Test scaffold implementation of XBeeInterface
*
* @author Bob Jacobsen Copyright (C) 2002, 2006
* @author Paul Bender Copyright (C) 2016
*
* Use an object of this type as a XBeeTrafficController in tests
*/
public class XBeeInterfaceScaffold extends XBeeTrafficController {
private XBeeDevice localDevice;
private XBeeAdapter a;
public boolean dataSent = false; // public OK here, so long as this is a test class
public XBeeInterfaceScaffold() {
super();
// setup the mock XBee Connection.
a= new XBeeAdapter(){
@Override
public boolean isOpen(){
return true;
}
@Override
public void close(){
}
};
// Create the local device.
localDevice = new XBeeDevice(a){
@Override
public void sendData(RemoteXBeeDevice remoteXBeeDevice, byte[] data){
// set the data sent flag.
dataSent = true;
}
@Override
public void sendDataAsync(RemoteXBeeDevice remoteXBeeDevice, byte[] data){
// set the data sent flag.
dataSent = true;
}
};
}
// override some XBeeTrafficController methods for test purposes
@Override
public boolean status() {
return true;
}
@Override
public XBeeDevice getXBee() {
return localDevice;
}
/**
* record XBee messages sent, provide access for making sure they are OK
*/
public Vector<XBeeMessage> outbound = new Vector<XBeeMessage>(); // public OK here, so long as this is a test class
@Override
public void sendXBeeMessage(XBeeMessage m, XBeeListener replyTo) {
if (log.isDebugEnabled()) {
log.debug("sendXBeeMessage [{}]", m);
}
// save a copy
outbound.addElement(m);
}
// test control member functions
/**
* forward a message to the listeners, e.g. test receipt
*/
public void sendTestMessage(XBeeReply m) {
// forward a test message to XBeeListeners
if (log.isDebugEnabled()) {
log.debug("sendTestMessage [{}]", m);
}
notifyReply(m, null);
return;
}
/*
* Check number of listeners, used for testing dispose()
*/
public int numListeners() {
return cmdListeners.size();
}
/**
* Avoid error message, normal in parent
*/
@Override
protected void connectionWarn() {
}
/**
* Avoid error message, normal in parent
*/
@Override
protected void portWarn(Exception e) {
}
@Override
public void receiveLoop() {
}
@Override
protected void terminate(){
if(localDevice!=null) {
localDevice.close();
}
localDevice=null;
a = null;
}
public void dispose(){
terminate();
}
private static final Logger log = LoggerFactory.getLogger(XBeeInterfaceScaffold.class);
}