Removed the TCP video streaming code.

This commit is contained in:
2014-01-21 12:20:38 -04:30
parent b937b93767
commit 0b790bce8f
3 changed files with 71 additions and 33 deletions

View File

@@ -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;
}
}

View File

@@ -97,7 +97,7 @@ public class NxtARCore implements ApplicationListener, NetworkConnectionListener
frameMonitor = VideoFrameMonitor.getInstance(); frameMonitor = VideoFrameMonitor.getInstance();
mcastEnabler.enableMulticast(); mcastEnabler.enableMulticast();
udpThread = ServiceDiscoveryThread.getInstance(); udpThread = ServiceDiscoveryThread.getInstance();
videoThread = VideoStreamingThread.getInstance().setToaster(toaster); videoThread = VideoStreamingThread.getInstance()/*.setToaster(toaster)*/;
//robotThread = RobotControlThread.getInstance().setToaster(toaster); //robotThread = RobotControlThread.getInstance().setToaster(toaster);
udpThread.start(); udpThread.start();
@@ -138,8 +138,10 @@ public class NxtARCore implements ApplicationListener, NetworkConnectionListener
sprite = new Sprite(region); sprite = new Sprite(region);
sprite.setSize(0.9f, 0.9f * sprite.getWidth() / sprite.getHeight()); sprite.setSize(0.9f, 0.9f * sprite.getWidth() / sprite.getHeight());
sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2); /*sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2);
sprite.setPosition(-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); sprite.rotate90(true);
batch.setProjectionMatrix(camera.combined); batch.setProjectionMatrix(camera.combined);

View File

@@ -18,15 +18,12 @@ package ve.ucv.ciens.ccg.nxtar.network;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket; import java.net.DatagramPacket;
import java.net.DatagramSocket; import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.net.Socket; import java.net.Socket;
import ve.ucv.ciens.ccg.networkdata.VideoFrameDataMessage; import ve.ucv.ciens.ccg.networkdata.VideoFrameDataMessage;
import ve.ucv.ciens.ccg.nxtar.interfaces.NetworkConnectionListener; 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 ve.ucv.ciens.ccg.nxtar.utils.ProjectConstants;
import com.badlogic.gdx.Gdx; 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 TAG = "NXTAR_CORE_VIDEOTHREAD";
private static final String CLASS_NAME = VideoStreamingThread.class.getSimpleName(); 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 NetworkConnectionListener netListener;
private ServerSocket server; //private ServerSocket server;
private DatagramSocket socket; private DatagramSocket socket;
private Toaster toaster; //private Toaster toaster;
private ProtocolState_t protocolState; //private ProtocolState_t protocolState;
private boolean protocolStarted; private boolean protocolStarted;
private boolean pauseProtocol; /*private boolean pauseProtocol;
private boolean endProtocol; private boolean endProtocol;*/
private boolean done; private boolean done;
private Object protocolPauseMonitor; private Object protocolPauseMonitor;
private Socket client; private Socket client;
private ObjectInputStream reader; //private ObjectInputStream reader;
private ObjectOutputStream writer; //private ObjectOutputStream writer;
private VideoFrameMonitor frameMonitor; private VideoFrameMonitor frameMonitor;
private long then; private long then;
private long now; private long now;
@@ -62,18 +59,18 @@ public class VideoStreamingThread extends Thread {
fps = 0; fps = 0;
netListener = null; netListener = null;
toaster = null; //toaster = null;
protocolStarted = false; protocolStarted = false;
endProtocol = false; /*endProtocol = false;
pauseProtocol = false; pauseProtocol = false;*/
done = false; done = false;
protocolState = ProtocolState_t.WAIT_FOR_START; //protocolState = ProtocolState_t.WAIT_FOR_START;
protocolPauseMonitor = new Object(); protocolPauseMonitor = new Object();
frameMonitor = VideoFrameMonitor.getInstance(); frameMonitor = VideoFrameMonitor.getInstance();
try{ try{
server = new ServerSocket(ProjectConstants.SERVER_TCP_PORT_1); //server = new ServerSocket(ProjectConstants.SERVER_TCP_PORT_1);
socket = new DatagramSocket(ProjectConstants.SERVER_TCP_PORT_2); socket = new DatagramSocket(ProjectConstants.SERVER_TCP_PORT_1);
}catch(IOException io){ }catch(IOException io){
Gdx.app.error(TAG, CLASS_NAME + ".VideoStreamingThread() :: Error creating server: " + io.getMessage(), 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; return SingletonHolder.INSTANCE;
} }
public VideoStreamingThread setToaster(Toaster toaster){ /*public VideoStreamingThread setToaster(Toaster toaster){
this.toaster = toaster; this.toaster = toaster;
return this; return this;
} }*/
public void addNetworkConnectionListener(NetworkConnectionListener listener){ public void addNetworkConnectionListener(NetworkConnectionListener listener){
netListener = listener; netListener = listener;
} }
private void toast(String message){ /*private void toast(String message){
if(toaster != null) if(toaster != null)
toaster.showShortToast(message); toaster.showShortToast(message);
} }*/
public void startStreaming(){ public void startStreaming(){
if(!protocolStarted){ if(!protocolStarted){
Gdx.app.debug(TAG, CLASS_NAME + ".startStreaming() :: Requesting protocol start."); Gdx.app.debug(TAG, CLASS_NAME + ".startStreaming() :: Requesting protocol start.");
synchronized(protocolPauseMonitor){ synchronized(protocolPauseMonitor){
protocolStarted = true; protocolStarted = true;
protocolState = ProtocolState_t.SEND_CONTINUE; //protocolState = ProtocolState_t.SEND_CONTINUE;
protocolPauseMonitor.notifyAll(); protocolPauseMonitor.notifyAll();
} }
} }
@@ -115,7 +112,7 @@ public class VideoStreamingThread extends Thread {
public void pauseStreaming(){ public void pauseStreaming(){
if(protocolStarted){ if(protocolStarted){
Gdx.app.debug(TAG, CLASS_NAME + ".pauseStreaming() :: Requesting protocol pause."); Gdx.app.debug(TAG, CLASS_NAME + ".pauseStreaming() :: Requesting protocol pause.");
pauseProtocol = true; //pauseProtocol = true;
}else }else
return; return;
} }
@@ -124,7 +121,7 @@ public class VideoStreamingThread extends Thread {
if(protocolStarted){ if(protocolStarted){
Gdx.app.debug(TAG, CLASS_NAME + ".resumeStreaming() :: Requesting protocol resume."); Gdx.app.debug(TAG, CLASS_NAME + ".resumeStreaming() :: Requesting protocol resume.");
synchronized(protocolPauseMonitor){ synchronized(protocolPauseMonitor){
pauseProtocol = false; //pauseProtocol = false;
protocolPauseMonitor.notifyAll(); protocolPauseMonitor.notifyAll();
} }
}else }else
@@ -134,7 +131,7 @@ public class VideoStreamingThread extends Thread {
public void finishStreaming(){ public void finishStreaming(){
if(protocolStarted){ if(protocolStarted){
Gdx.app.debug(TAG, CLASS_NAME + ".finishStreaming() :: Requesting protocol end."); Gdx.app.debug(TAG, CLASS_NAME + ".finishStreaming() :: Requesting protocol end.");
endProtocol = true; //endProtocol = true;
}else }else
return; return;
} }
@@ -312,7 +309,7 @@ public class VideoStreamingThread extends Thread {
Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Thread finished."); Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Thread finished.");
}*/ }*/
private void receiveImage(){ /*private void receiveImage(){
Object tmpMessage; Object tmpMessage;
VideoFrameDataMessage dataMessage; VideoFrameDataMessage dataMessage;
@@ -337,7 +334,7 @@ public class VideoStreamingThread extends Thread {
}else{ }else{
Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Received something unknown."); Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Received something unknown.");
} }
} }*/
private int byteArray2Int(byte[] array){ private int byteArray2Int(byte[] array){
int number = 0; int number = 0;
@@ -418,26 +415,28 @@ public class VideoStreamingThread extends Thread {
public void run(){ public void run(){
int frames = 0; int frames = 0;
// Listen on the server socket until a client successfully connects. // Listen on the server socket until a client successfully connects.
do{ /*do{
try{ try{
Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Listening for client."); Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Listening for client.");
client = server.accept(); client = server.accept();
if(netListener != null) if(netListener != null)
netListener.networkStreamConnected(THREAD_NAME); netListener.networkStreamConnected(THREAD_NAME);
writer = new ObjectOutputStream(client.getOutputStream()); //writer = new ObjectOutputStream(client.getOutputStream());
reader = new ObjectInputStream(client.getInputStream()); reader = new ObjectInputStream(client.getInputStream());
toast("Client connected"); toast("Client connected");
}catch(IOException io){ }catch(IOException io){
Gdx.app.error(TAG, CLASS_NAME + ".run() :: Error accepting client: " + io.getMessage(), io); Gdx.app.error(TAG, CLASS_NAME + ".run() :: Error accepting client: " + io.getMessage(), io);
client = null; client = null;
} }
}while(client != null && !client.isConnected()); }while(client != null && !client.isConnected());*/
then = System.currentTimeMillis(); then = System.currentTimeMillis();
while(!done){ while(!done){
//receiveImage(); //receiveImage();
Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Receiving."); Gdx.app.debug(TAG, CLASS_NAME + ".run() :: Receiving.");
if(netListener != null)
netListener.networkStreamConnected(THREAD_NAME);
receiveUdp(); receiveUdp();
frames++; frames++;
now = System.currentTimeMillis(); now = System.currentTimeMillis();