package it.unibg.robotic.examples.dataFlowSimpleTypesTest;
import it.unibg.robotics.jorocos.corba.CorbaOrocosSystem;
import it.unibg.robotics.jorocos.core.AbstractOrocosComponent;
import it.unibg.robotics.jorocos.core.AbstractOrocosConnection.LockPolicy;
import it.unibg.robotics.jorocos.core.AbstractOrocosSystem;
import it.unibg.robotics.jorocos.core.OrocosPortEvent;
import it.unibg.robotics.jorocos.exceptions.ConnectionToPortNotExistException;
import it.unibg.robotics.jorocos.exceptions.SystemIpAndPortAlreadyDefinedException;
import it.unibg.robotics.jorocos.exceptions.SystemNotConnectedException;
import it.unibg.robotics.jorocos.exceptions.WrongPortTypeException;
import java.util.Observable;
import java.util.Observer;
public class DataFlowSimpleTypesTestProxy implements Observer {
AbstractOrocosSystem system;
AbstractOrocosComponent dataFlowSimpleTypeTestComponent;
public DataFlowSimpleTypesTestProxy(String systemIP, String systemPort) {
try {
// create a proxy to the Orocos system and connect to it
system = CorbaOrocosSystem.getInstance(systemIP, systemPort);
system.connect();
// create a proxy to the Hello World component
dataFlowSimpleTypeTestComponent = system.getComponent("DataFlowSimpleTypesTest", false);
// create a connection to the input ports
dataFlowSimpleTypeTestComponent.createDataConnectionToInputPort("boolInputPort",
LockPolicy.LOCK_FREE, this);
dataFlowSimpleTypeTestComponent.createDataConnectionToInputPort("charInputPort",
LockPolicy.LOCK_FREE, this);
// This has been commented because the CORBA transport doesn't know the type,
// hence it crashes the Orocos system
// dataFlowSimpleTypeTestComponent.createDataConnectionToInputPort("ucharInputPort",
// LockPolicy.LOCK_FREE, this);
dataFlowSimpleTypeTestComponent.createDataConnectionToInputPort("doubleInputPort",
LockPolicy.LOCK_FREE, this);
dataFlowSimpleTypeTestComponent.createDataConnectionToInputPort("floatInputPort",
LockPolicy.LOCK_FREE, this);
dataFlowSimpleTypeTestComponent.createDataConnectionToInputPort("intInputPort",
LockPolicy.LOCK_FREE, this);
dataFlowSimpleTypeTestComponent.createDataConnectionToInputPort("uintInputPort",
LockPolicy.LOCK_FREE, this);
// These have been commented because the CORBA transport doesn't know the types,
// hence it crashes the Orocos system
// dataFlowSimpleTypeTestComponent.createDataConnectionToInputPort("longInputPort",
// LockPolicy.LOCK_FREE, this);
// dataFlowSimpleTypeTestComponent.createDataConnectionToInputPort("ulongInputPort",
// LockPolicy.LOCK_FREE, this);
dataFlowSimpleTypeTestComponent.createDataConnectionToInputPort("stringInputPort",
LockPolicy.LOCK_FREE, this);
// subsribe to the output ports with a period of 100ms
dataFlowSimpleTypeTestComponent.subscribeToDataOutputPort("boolOutputPort",
LockPolicy.LOCK_FREE, this, 100);
dataFlowSimpleTypeTestComponent.subscribeToDataOutputPort("charOutputPort",
LockPolicy.LOCK_FREE, this, 100);
// This has been commented because the CORBA transport doesn't know the type,
// hence it crashes the Orocos system
// dataFlowSimpleTypeTestComponent.subscribeToDataOutputPort("ucharOutputPort",
// LockPolicy.LOCK_FREE, this, 100);
dataFlowSimpleTypeTestComponent.subscribeToDataOutputPort("doubleOutputPort",
LockPolicy.LOCK_FREE, this, 100);
dataFlowSimpleTypeTestComponent.subscribeToDataOutputPort("floatOutputPort",
LockPolicy.LOCK_FREE, this, 100);
dataFlowSimpleTypeTestComponent.subscribeToDataOutputPort("intOutputPort",
LockPolicy.LOCK_FREE, this, 100);
dataFlowSimpleTypeTestComponent.subscribeToDataOutputPort("uintOutputPort",
LockPolicy.LOCK_FREE, this, 100);
// These have been commented because the CORBA transport doesn't know the types,
// hence it crashes the Orocos system
// dataFlowSimpleTypeTestComponent.subscribeToDataOutputPort("longOutputPort",
// LockPolicy.LOCK_FREE, this, 100);
// dataFlowSimpleTypeTestComponent.subscribeToDataOutputPort("ulongOutputPort",
// LockPolicy.LOCK_FREE, this, 100);
dataFlowSimpleTypeTestComponent.subscribeToDataOutputPort("stringOutputPort",
LockPolicy.LOCK_FREE, this, 100);
} catch (SystemIpAndPortAlreadyDefinedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemNotConnectedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WrongPortTypeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void update(Observable observable, Object event) {
if(event instanceof OrocosPortEvent){
System.out.println("Port: " + ((OrocosPortEvent)event).getPortName() +
" - Value: " + ((OrocosPortEvent)event).getValue());
}
}
public void writeOnInputPort(String name, Object value){
try {
dataFlowSimpleTypeTestComponent.writeOnPort(name, value, this);
} catch (ConnectionToPortNotExistException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WrongPortTypeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}