diff --git a/src/ve/ucv/ciens/ccg/networkdata/MotorEvent.java b/src/ve/ucv/ciens/ccg/networkdata/MotorEvent.java new file mode 100644 index 0000000..5cdcfc9 --- /dev/null +++ b/src/ve/ucv/ciens/ccg/networkdata/MotorEvent.java @@ -0,0 +1,37 @@ +package ve.ucv.ciens.ccg.networkdata; + +import java.io.Serializable; + +public class MotorEvent implements Serializable{ + private static final long serialVersionUID = 9989L; + + public enum motor_t {NONE, MOTOR_A, MOTOR_B, MOTOR_C, MOTOR_AC}; + + private motor_t motor; + private byte power; + + public MotorEvent(){ + motor = motor_t.NONE; + power = 0; + } + + public void setMotor(motor_t motor){ + this.motor = motor; + } + + public void setPower(byte power) throws IllegalArgumentException{ + if(power > 100 || power < -100){ + throw new IllegalArgumentException("Motor power must be a number between -100 and 100"); + }else{ + this.power = power; + } + } + + public motor_t getMotor(){ + return this.motor; + } + + public byte getPower(){ + return this.power; + } +} diff --git a/src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java b/src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java index 6b37a43..d078110 100644 --- a/src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java +++ b/src/ve/ucv/ciens/ccg/nxtar/NxtARCore.java @@ -97,7 +97,7 @@ public class NxtARCore implements ApplicationListener, NetworkConnectionListener frameMonitor = VideoFrameMonitor.getInstance(); mcastEnabler.enableMulticast(); udpThread = ServiceDiscoveryThread.getInstance(); - videoThread = VideoStreamingThread.getInstance().setToaster(toaster); + videoThread = VideoStreamingThread.getInstance()/*.setToaster(toaster)*/; //robotThread = RobotControlThread.getInstance().setToaster(toaster); udpThread.start(); @@ -138,8 +138,10 @@ public class NxtARCore implements ApplicationListener, NetworkConnectionListener sprite = new Sprite(region); sprite.setSize(0.9f, 0.9f * sprite.getWidth() / sprite.getHeight()); - sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2); - sprite.setPosition(-sprite.getWidth()/2, -sprite.getHeight()/2); + /*sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2); + sprite.setPosition(-sprite.getWidth()/2, -sprite.getHeight()/2);*/ + sprite.setOrigin(0, 0); + sprite.setPosition(-sprite.getWidth()/2, (-sprite.getHeight()/3)); sprite.rotate90(true); batch.setProjectionMatrix(camera.combined); diff --git a/src/ve/ucv/ciens/ccg/nxtar/network/VideoStreamingThread.java b/src/ve/ucv/ciens/ccg/nxtar/network/VideoStreamingThread.java index f163f29..32170ce 100644 --- a/src/ve/ucv/ciens/ccg/nxtar/network/VideoStreamingThread.java +++ b/src/ve/ucv/ciens/ccg/nxtar/network/VideoStreamingThread.java @@ -18,15 +18,12 @@ package ve.ucv.ciens.ccg.nxtar.network; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; import java.net.DatagramPacket; import java.net.DatagramSocket; -import java.net.ServerSocket; import java.net.Socket; import ve.ucv.ciens.ccg.networkdata.VideoFrameDataMessage; import ve.ucv.ciens.ccg.nxtar.interfaces.NetworkConnectionListener; -import ve.ucv.ciens.ccg.nxtar.interfaces.Toaster; import ve.ucv.ciens.ccg.nxtar.utils.ProjectConstants; import com.badlogic.gdx.Gdx; @@ -36,21 +33,21 @@ public class VideoStreamingThread extends Thread { private static final String TAG = "NXTAR_CORE_VIDEOTHREAD"; private static final String CLASS_NAME = VideoStreamingThread.class.getSimpleName(); - private enum ProtocolState_t {WAIT_FOR_START, SEND_CONTINUE, RECEIVE_DATA, SEND_ACK_NEXT, SEND_ACK_WAIT, PAUSED, END_STREAM}; + //private enum ProtocolState_t {WAIT_FOR_START, SEND_CONTINUE, RECEIVE_DATA, SEND_ACK_NEXT, SEND_ACK_WAIT, PAUSED, END_STREAM}; private NetworkConnectionListener netListener; - private ServerSocket server; + //private ServerSocket server; private DatagramSocket socket; - private Toaster toaster; - private ProtocolState_t protocolState; + //private Toaster toaster; + //private ProtocolState_t protocolState; private boolean protocolStarted; - private boolean pauseProtocol; - private boolean endProtocol; + /*private boolean pauseProtocol; + private boolean endProtocol;*/ private boolean done; private Object protocolPauseMonitor; private Socket client; - private ObjectInputStream reader; - private ObjectOutputStream writer; + //private ObjectInputStream reader; + //private ObjectOutputStream writer; private VideoFrameMonitor frameMonitor; private long then; private long now; @@ -62,18 +59,18 @@ public class VideoStreamingThread extends Thread { fps = 0; netListener = null; - toaster = null; + //toaster = null; protocolStarted = false; - endProtocol = false; - pauseProtocol = false; + /*endProtocol = false; + pauseProtocol = false;*/ done = false; - protocolState = ProtocolState_t.WAIT_FOR_START; + //protocolState = ProtocolState_t.WAIT_FOR_START; protocolPauseMonitor = new Object(); frameMonitor = VideoFrameMonitor.getInstance(); try{ - server = new ServerSocket(ProjectConstants.SERVER_TCP_PORT_1); - socket = new DatagramSocket(ProjectConstants.SERVER_TCP_PORT_2); + //server = new ServerSocket(ProjectConstants.SERVER_TCP_PORT_1); + socket = new DatagramSocket(ProjectConstants.SERVER_TCP_PORT_1); }catch(IOException io){ Gdx.app.error(TAG, CLASS_NAME + ".VideoStreamingThread() :: Error creating server: " + io.getMessage(), io); } @@ -87,26 +84,26 @@ public class VideoStreamingThread extends Thread { return SingletonHolder.INSTANCE; } - public VideoStreamingThread setToaster(Toaster toaster){ + /*public VideoStreamingThread setToaster(Toaster toaster){ this.toaster = toaster; return this; - } + }*/ public void addNetworkConnectionListener(NetworkConnectionListener listener){ netListener = listener; } - private void toast(String message){ + /*private void toast(String message){ if(toaster != null) toaster.showShortToast(message); - } + }*/ public void startStreaming(){ if(!protocolStarted){ Gdx.app.debug(TAG, CLASS_NAME + ".startStreaming() :: Requesting protocol start."); synchronized(protocolPauseMonitor){ protocolStarted = true; - protocolState = ProtocolState_t.SEND_CONTINUE; + //protocolState = ProtocolState_t.SEND_CONTINUE; protocolPauseMonitor.notifyAll(); } } @@ -115,7 +112,7 @@ public class VideoStreamingThread extends Thread { public void pauseStreaming(){ if(protocolStarted){ Gdx.app.debug(TAG, CLASS_NAME + ".pauseStreaming() :: Requesting protocol pause."); - pauseProtocol = true; + //pauseProtocol = true; }else return; } @@ -124,7 +121,7 @@ public class VideoStreamingThread extends Thread { if(protocolStarted){ Gdx.app.debug(TAG, CLASS_NAME + ".resumeStreaming() :: Requesting protocol resume."); synchronized(protocolPauseMonitor){ - pauseProtocol = false; + //pauseProtocol = false; protocolPauseMonitor.notifyAll(); } }else @@ -134,7 +131,7 @@ public class VideoStreamingThread extends Thread { public void finishStreaming(){ if(protocolStarted){ Gdx.app.debug(TAG, CLASS_NAME + ".finishStreaming() :: Requesting protocol end."); - endProtocol = true; + //endProtocol = true; }else return; } @@ -312,7 +309,7 @@ public class VideoStreamingThread extends Thread { Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Thread finished."); }*/ - private void receiveImage(){ + /*private void receiveImage(){ Object tmpMessage; VideoFrameDataMessage dataMessage; @@ -337,7 +334,7 @@ public class VideoStreamingThread extends Thread { }else{ Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Received something unknown."); } - } + }*/ private int byteArray2Int(byte[] array){ int number = 0; @@ -418,26 +415,28 @@ public class VideoStreamingThread extends Thread { public void run(){ int frames = 0; // Listen on the server socket until a client successfully connects. - do{ + /*do{ try{ Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Listening for client."); client = server.accept(); if(netListener != null) netListener.networkStreamConnected(THREAD_NAME); - writer = new ObjectOutputStream(client.getOutputStream()); + //writer = new ObjectOutputStream(client.getOutputStream()); reader = new ObjectInputStream(client.getInputStream()); toast("Client connected"); }catch(IOException io){ Gdx.app.error(TAG, CLASS_NAME + ".run() :: Error accepting client: " + io.getMessage(), io); client = null; } - }while(client != null && !client.isConnected()); + }while(client != null && !client.isConnected());*/ then = System.currentTimeMillis(); while(!done){ //receiveImage(); Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Receiving."); + if(netListener != null) + netListener.networkStreamConnected(THREAD_NAME); receiveUdp(); frames++; now = System.currentTimeMillis();