Removed the TCP video streaming code.
This commit is contained in:
37
src/ve/ucv/ciens/ccg/networkdata/MotorEvent.java
Normal file
37
src/ve/ucv/ciens/ccg/networkdata/MotorEvent.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
@@ -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);
|
||||||
|
@@ -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();
|
||||||
|
Reference in New Issue
Block a user