ServiceLinkListener Interface neu

master
Harald Wolff 2016-09-06 12:02:39 +02:00
parent 67b9da31b8
commit c256f9850d
2 changed files with 38 additions and 4 deletions

View File

@ -7,6 +7,7 @@ import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.List;
import org.hwo.ChkSum;
@ -15,6 +16,7 @@ import org.hwo.bitfields.BitField;
import org.hwo.interactiveobjects.InteractiveObject;
import org.hwo.io.SerialPort;
import org.hwo.io.NewSerialPort.NewSerialPort;
import org.hwo.io.NewSerialPort.NewSerialPortListener;
/* ServiceLink
*
@ -34,7 +36,7 @@ import org.hwo.io.NewSerialPort.NewSerialPort;
*/
public class ServiceLink {
public class ServiceLink implements NewSerialPortListener {
static int REQ_READ = 0x01;
static int REQ_WRITE = 0x02;
@ -187,17 +189,33 @@ public class ServiceLink {
private AsynchronServiceLinkProvider
asynchronServiceLinkProvider;
private List<ServiceLinkListener> serviceLinkListeners;
public ServiceLink(NewSerialPort serialPort)
{
this.serviceLinkListeners = new LinkedList<ServiceLinkListener>();
this.retries = 3;
this.serialPort = serialPort;
this.serialPort.setTimeOut(250);
this.serialPort.addNewSerialPortListener(this);
this.serviceRegisterCache = new ServiceRegisterCache(this);
this.asynchronServiceLinkProvider = new AsynchronServiceLinkProvider(serviceRegisterCache);
this.requestTime = new Smoother();
this.requestTime.setTn(16);
}
public void addServiceLinkListener(ServiceLinkListener listener){
serviceLinkListeners.add(listener);
}
public void removeServiceLinkListener(ServiceLinkListener listener){
serviceLinkListeners.remove(listener);
}
private void fireConnectionStateChanged(Boolean connected){
for (ServiceLinkListener l: serviceLinkListeners)
l.connectionStateChanged(connected);
}
public int getAverageRequestTime()
{
return requestTime.getWert();
@ -214,8 +232,9 @@ public class ServiceLink {
public synchronized void open() throws ServiceLinkException
{
if (serialPort != null)
if (serialPort != null){
serialPort.open();
}
throwNotOpen();
}
@ -321,10 +340,13 @@ public class ServiceLink {
}
public synchronized void setSerialPort(NewSerialPort serialPort) {
if (isOpen())
this.serialPort.close();
if (isOpen()){
this.close();
this.serialPort.removeNewSerialPortListener(this);
}
this.serialPort = serialPort;
this.serialPort.addNewSerialPortListener(this);
}
private synchronized void throwNotOpen() throws ServiceLinkException
@ -337,6 +359,11 @@ public class ServiceLink {
{
return this.serialPort.isOpen();
}
@Override
public void connectionStateChanged(NewSerialPort port, boolean connected) {
fireConnectionStateChanged(connected);
}
}

View File

@ -0,0 +1,7 @@
package org.hwo.servicelink;
public interface ServiceLinkListener {
void connectionStateChanged(Boolean connected);
}