mirror of
https://github.com/PAMGuard/PAMGuard.git
synced 2024-11-22 07:02:29 +00:00
Fixes to NoGUI, Network send and spectrogram graphics. (#23)
* Update .project * Terminal commands * Fix network sender since it was hopelessly out of date and did not send data in the correct format. OK now, though only tested on NARW. * Fix NoGui operatoin and Network sender
This commit is contained in:
parent
a4be692d29
commit
ff048eed9f
2
.project
2
.project
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<projectDescription>
|
<projectDescription>
|
||||||
<name>PamGuard Main</name>
|
<name>PamGuard SMRUConsulting</name>
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
<projects>
|
<projects>
|
||||||
</projects>
|
</projects>
|
||||||
|
@ -54,6 +54,7 @@ import generalDatabase.DBControlUnit;
|
|||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import Array.ArrayManager;
|
import Array.ArrayManager;
|
||||||
import PamController.command.NetworkController;
|
import PamController.command.NetworkController;
|
||||||
|
import PamController.command.TerminalController;
|
||||||
import PamController.command.WatchdogComms;
|
import PamController.command.WatchdogComms;
|
||||||
import PamController.masterReference.MasterReferencePoint;
|
import PamController.masterReference.MasterReferencePoint;
|
||||||
import PamController.settings.output.xml.PamguardXMLWriter;
|
import PamController.settings.output.xml.PamguardXMLWriter;
|
||||||
@ -269,6 +270,11 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
setupPamguard();
|
setupPamguard();
|
||||||
|
|
||||||
setupGarbageCollector();
|
setupGarbageCollector();
|
||||||
|
|
||||||
|
|
||||||
|
// if (PamGUIManager.getGUIType() == PamGUIManager.NOGUI) {
|
||||||
|
// }
|
||||||
|
|
||||||
// diagnosticTimer = new Timer(1000, new DiagnosticTimer());
|
// diagnosticTimer = new Timer(1000, new DiagnosticTimer());
|
||||||
// diagnosticTimer.start();
|
// diagnosticTimer.start();
|
||||||
}
|
}
|
||||||
@ -293,7 +299,10 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
*/
|
*/
|
||||||
public static void create(int runMode) {
|
public static void create(int runMode) {
|
||||||
if (uniqueController == null) {
|
if (uniqueController == null) {
|
||||||
new PamController(runMode, null);
|
PamController pamcontroller = new PamController(runMode, null);
|
||||||
|
// I don't see any reason not have have this running with the GUI.
|
||||||
|
TerminalController tc = new TerminalController(pamcontroller);
|
||||||
|
tc.getTerminalCommands();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package PamController;
|
package PamController;
|
||||||
|
|
||||||
import PamView.GuiFrameManager;
|
import PamView.GuiFrameManager;
|
||||||
|
import PamView.NullGuiController;
|
||||||
import pamViewFX.PamGuiManagerFX;
|
import pamViewFX.PamGuiManagerFX;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -39,7 +40,7 @@ public class PamGUIManager {
|
|||||||
public static PAMControllerGUI createGUI(PamController pamController, Object object) {
|
public static PAMControllerGUI createGUI(PamController pamController, Object object) {
|
||||||
switch (guiType) {
|
switch (guiType) {
|
||||||
case NOGUI:
|
case NOGUI:
|
||||||
return null;
|
return new NullGuiController(pamController);
|
||||||
case SWING:
|
case SWING:
|
||||||
return new GuiFrameManager(pamController);
|
return new GuiFrameManager(pamController);
|
||||||
case FX:
|
case FX:
|
||||||
|
118
src/PamController/command/CommandManager.java
Normal file
118
src/PamController/command/CommandManager.java
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
package PamController.command;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import PamController.PamControlledUnit;
|
||||||
|
import PamController.PamController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interpret commands which may have come either from a terminal or from a Network
|
||||||
|
* (e.g. UDP) interface.
|
||||||
|
* @author dg50
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public abstract class CommandManager extends PamControlledUnit {
|
||||||
|
|
||||||
|
private PamController pamController;
|
||||||
|
|
||||||
|
private static String unitType = "Command Manager";
|
||||||
|
|
||||||
|
private ArrayList<ExtCommand> commandsList = new ArrayList<ExtCommand>();
|
||||||
|
|
||||||
|
public CommandManager(PamController pamController, String unitName) {
|
||||||
|
super(unitType, unitName);
|
||||||
|
this.pamController = pamController;
|
||||||
|
|
||||||
|
commandsList.add(new StartCommand());
|
||||||
|
commandsList.add(new StopCommand());
|
||||||
|
commandsList.add(new PingCommand());
|
||||||
|
commandsList.add(new StatusCommand());
|
||||||
|
commandsList.add(new SummaryCommand());
|
||||||
|
commandsList.add(new ExitCommand());
|
||||||
|
commandsList.add(new KillCommand());
|
||||||
|
commandsList.add(new HelpCommand(this));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ArrayList<ExtCommand> getCommandsList() {
|
||||||
|
return commandsList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExtCommand findCommand(String command) {
|
||||||
|
for (ExtCommand aCommand:commandsList) {
|
||||||
|
if (aCommand.getName().equals(command)) {
|
||||||
|
return aCommand;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interpret and act on a udp command string.
|
||||||
|
* @param command command string
|
||||||
|
* @return false if the command was to exit
|
||||||
|
* the program (in which case this thread will
|
||||||
|
* exit and close the port). True otherwise.
|
||||||
|
*/
|
||||||
|
public boolean interpretCommand(String command) {
|
||||||
|
//System.out.println(String.format("New UDP Command %s", command));
|
||||||
|
|
||||||
|
command = command.toLowerCase();
|
||||||
|
// strip of the first two letters if they begin pg ...
|
||||||
|
if (command.substring(0,2).equals("pg")) {
|
||||||
|
command = command.substring(2);
|
||||||
|
}
|
||||||
|
ExtCommand extCommand = findCommand(command);
|
||||||
|
if (extCommand == null) {
|
||||||
|
sendData("Cmd \"" + command + "\" Not Recognised.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (extCommand.canExecute() == false) {
|
||||||
|
sendData("Cmd \"" + command + "\" Cannot Execute.");
|
||||||
|
sendData(" Cmd return string = " + extCommand.getReturnString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
extCommand.execute();
|
||||||
|
sendData(extCommand.getReturnString());
|
||||||
|
|
||||||
|
//
|
||||||
|
// if (command.equals("pgstart")) {
|
||||||
|
// sendData("PgAck " + "pgstart");
|
||||||
|
// pamController.pamStart();
|
||||||
|
// }
|
||||||
|
// else if (command.equals("pgstop")) {
|
||||||
|
// sendData("PgAck " + "pgstop");
|
||||||
|
// pamController.pamStop();
|
||||||
|
// }
|
||||||
|
// else if (command.equals("pgping")) {
|
||||||
|
// sendData("PgAck " + "pgping");
|
||||||
|
// }
|
||||||
|
// else if (command.equals("pgstatus")) {
|
||||||
|
// sendData("PgAck Status " + pamController.getPamStatus());
|
||||||
|
// }
|
||||||
|
// else if (command.equals("pgsetrec")) {
|
||||||
|
// sendData("PgAck pgsetrec");
|
||||||
|
//
|
||||||
|
// //triggerRecording(String name, int seconds);
|
||||||
|
// }
|
||||||
|
// else if (command.equals("pgexit")) {
|
||||||
|
// sendData("Exiting PAMGUARD");
|
||||||
|
// System.exit(0);
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// else{
|
||||||
|
// sendData("PgAck " + "Cmd Not Recognised.");
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reply to data called from InterpredData
|
||||||
|
* @param dataString
|
||||||
|
* @return true if replay successful
|
||||||
|
*/
|
||||||
|
abstract public boolean sendData(String dataString);
|
||||||
|
|
||||||
|
}
|
@ -21,7 +21,11 @@ public class ExitCommand extends ExtCommand {
|
|||||||
System.exit(0);
|
System.exit(0);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHint() {
|
||||||
|
return "Exit PAMGuard, stopping detectors prior to exiting";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -107,5 +107,11 @@ public abstract class ExtCommand {
|
|||||||
this.immediate = immediate;
|
this.immediate = immediate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a hint text for the help command.
|
||||||
|
* @return hint text.
|
||||||
|
*/
|
||||||
|
public String getHint() {
|
||||||
|
return null;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
42
src/PamController/command/HelpCommand.java
Normal file
42
src/PamController/command/HelpCommand.java
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
package PamController.command;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class HelpCommand extends ExtCommand {
|
||||||
|
|
||||||
|
private CommandManager commandManager;
|
||||||
|
|
||||||
|
public HelpCommand(CommandManager commandManager) {
|
||||||
|
super("help", true);
|
||||||
|
this.commandManager = commandManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean execute() {
|
||||||
|
ArrayList<ExtCommand> commands = commandManager.getCommandsList();
|
||||||
|
String out = "Available commands are:\n";
|
||||||
|
for (ExtCommand command : commands) {
|
||||||
|
out += command.getName();
|
||||||
|
String hint = command.getHint();
|
||||||
|
if (hint != null) {
|
||||||
|
out += String.format(": %s\n", hint);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
out += "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
commandManager.sendData(out);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getReturnString() {
|
||||||
|
return super.getReturnString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHint() {
|
||||||
|
return "Get a list of available commands";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -17,5 +17,10 @@ public class KillCommand extends ExtCommand {
|
|||||||
System.exit(0);
|
System.exit(0);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHint() {
|
||||||
|
return "kill PAMguard, don't necessarily stop detectors or clean anything up";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ import SoundRecorder.trigger.RecorderTriggerData;
|
|||||||
* @author Doug Gillespie
|
* @author Doug Gillespie
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class NetworkController extends PamControlledUnit {
|
public class NetworkController extends CommandManager {
|
||||||
|
|
||||||
|
|
||||||
private PamController pamController;
|
private PamController pamController;
|
||||||
@ -44,22 +44,12 @@ public class NetworkController extends PamControlledUnit {
|
|||||||
|
|
||||||
private NetworkRecorderTrigger[] recorderTriggers;
|
private NetworkRecorderTrigger[] recorderTriggers;
|
||||||
|
|
||||||
private static String unitType = "Network Controller";
|
private static String unitName = "Network Controller";
|
||||||
|
|
||||||
private ArrayList<ExtCommand> networkCommands = new ArrayList<ExtCommand>();
|
|
||||||
|
|
||||||
public NetworkController(PamController pamController) {
|
public NetworkController(PamController pamController) {
|
||||||
super(unitType, unitType);
|
super(pamController, unitName);
|
||||||
this.pamController = pamController;
|
this.pamController = pamController;
|
||||||
|
|
||||||
networkCommands.add(new StartCommand());
|
|
||||||
networkCommands.add(new StopCommand());
|
|
||||||
networkCommands.add(new PingCommand());
|
|
||||||
networkCommands.add(new StatusCommand());
|
|
||||||
networkCommands.add(new SummaryCommand());
|
|
||||||
networkCommands.add(new ExitCommand());
|
|
||||||
networkCommands.add(new KillCommand());
|
|
||||||
|
|
||||||
listenerThread = new ListenerThread();
|
listenerThread = new ListenerThread();
|
||||||
Thread aThread = new Thread(listenerThread);
|
Thread aThread = new Thread(listenerThread);
|
||||||
aThread.start();
|
aThread.start();
|
||||||
@ -130,77 +120,8 @@ public class NetworkController extends PamControlledUnit {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Interpret and act on a udp command string.
|
|
||||||
* @param command command string
|
|
||||||
* @return false if the command was to exit
|
|
||||||
* the program (in which case this thread will
|
|
||||||
* exit and close the port). True otherwise.
|
|
||||||
*/
|
|
||||||
private boolean interpretCommand(String command) {
|
|
||||||
//System.out.println(String.format("New UDP Command %s", command));
|
|
||||||
|
|
||||||
command = command.toLowerCase();
|
|
||||||
// strip of the first two letters if they begin pg ...
|
|
||||||
if (command.substring(0,2).equals("pg")) {
|
|
||||||
command = command.substring(2);
|
|
||||||
}
|
|
||||||
ExtCommand extCommand = findCommand(command);
|
|
||||||
if (extCommand == null) {
|
|
||||||
sendData("Cmd \"" + command + "\" Not Recognised.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (extCommand.canExecute() == false) {
|
|
||||||
sendData("Cmd \"" + command + "\" Cannot Execute.");
|
|
||||||
sendData(" Cmd return string = " + extCommand.getReturnString());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
extCommand.execute();
|
|
||||||
sendData(extCommand.getReturnString());
|
|
||||||
|
|
||||||
//
|
|
||||||
// if (command.equals("pgstart")) {
|
|
||||||
// sendData("PgAck " + "pgstart");
|
|
||||||
// pamController.pamStart();
|
|
||||||
// }
|
|
||||||
// else if (command.equals("pgstop")) {
|
|
||||||
// sendData("PgAck " + "pgstop");
|
|
||||||
// pamController.pamStop();
|
|
||||||
// }
|
|
||||||
// else if (command.equals("pgping")) {
|
|
||||||
// sendData("PgAck " + "pgping");
|
|
||||||
// }
|
|
||||||
// else if (command.equals("pgstatus")) {
|
|
||||||
// sendData("PgAck Status " + pamController.getPamStatus());
|
|
||||||
// }
|
|
||||||
// else if (command.equals("pgsetrec")) {
|
|
||||||
// sendData("PgAck pgsetrec");
|
|
||||||
//
|
|
||||||
// //triggerRecording(String name, int seconds);
|
|
||||||
// }
|
|
||||||
// else if (command.equals("pgexit")) {
|
|
||||||
// sendData("Exiting PAMGUARD");
|
|
||||||
// System.exit(0);
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// else{
|
|
||||||
// sendData("PgAck " + "Cmd Not Recognised.");
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private ExtCommand findCommand(String command) {
|
public boolean sendData(String dataString) {
|
||||||
for (ExtCommand aCommand:networkCommands) {
|
|
||||||
if (aCommand.getName().equals(command)) {
|
|
||||||
return aCommand;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean sendData(String dataString) {
|
|
||||||
DatagramPacket packet = new DatagramPacket(dataString.getBytes(), dataString.length());
|
DatagramPacket packet = new DatagramPacket(dataString.getBytes(), dataString.length());
|
||||||
packet.setAddress(udpPacket.getAddress());
|
packet.setAddress(udpPacket.getAddress());
|
||||||
packet.setPort(udpPacket.getPort());
|
packet.setPort(udpPacket.getPort());
|
||||||
@ -229,6 +150,7 @@ public class NetworkController extends PamControlledUnit {
|
|||||||
return new String(udpPacket.getData(), 0, udpPacket.getLength());
|
return new String(udpPacket.getData(), 0, udpPacket.getLength());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void notifyModelChanged(int changeType) {
|
public void notifyModelChanged(int changeType) {
|
||||||
switch (changeType){
|
switch (changeType){
|
||||||
case PamControllerInterface.INITIALIZATION_COMPLETE:
|
case PamControllerInterface.INITIALIZATION_COMPLETE:
|
||||||
|
@ -13,4 +13,8 @@ public class PingCommand extends ExtCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHint() {
|
||||||
|
return "ping PAMGuard to see if it's alive";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,4 +35,9 @@ public class StartCommand extends ExtCommand {
|
|||||||
return returnString;
|
return returnString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHint() {
|
||||||
|
return "Start PAMGuard processing";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -61,4 +61,9 @@ public class StatusCommand extends ExtCommand {
|
|||||||
return watchdogComms.getModifiedWatchdogState(status);
|
return watchdogComms.getModifiedWatchdogState(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHint() {
|
||||||
|
return "Get the current PAMGuard status. 0=idle, 1=running";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,4 +15,8 @@ public class StopCommand extends ExtCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHint() {
|
||||||
|
return "Stop PAMGuard processing";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ public class SummaryCommand extends ExtCommand {
|
|||||||
lastCallTime = PamCalendar.getSessionStartTime();
|
lastCallTime = PamCalendar.getSessionStartTime();
|
||||||
}
|
}
|
||||||
long nowTime = PamCalendar.getTimeInMillis();
|
long nowTime = PamCalendar.getTimeInMillis();
|
||||||
totalString = PamCalendar.formatDateTime(lastCallTime) + "-" + PamCalendar.formatDateTime(nowTime);
|
totalString = PamCalendar.formatDBDateTime(lastCallTime) + "-" + PamCalendar.formatDBDateTime(nowTime);
|
||||||
int usedModules = 0;
|
int usedModules = 0;
|
||||||
for (int i = 0; i < nMod; i++) {
|
for (int i = 0; i < nMod; i++) {
|
||||||
aModule = pamController.getControlledUnit(i);
|
aModule = pamController.getControlledUnit(i);
|
||||||
@ -44,16 +44,14 @@ public class SummaryCommand extends ExtCommand {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
usedModules ++;
|
usedModules ++;
|
||||||
/*
|
|
||||||
strcat(moduleSummaryText, "\n");
|
|
||||||
strcat(moduleSummaryText, module->getModuleName());
|
|
||||||
strcat(moduleSummaryText, ":");
|
|
||||||
strcat(moduleSummaryText, moduleText);
|
|
||||||
*/
|
|
||||||
totalString += String.format("\n<%s>%s:%s<\\%s>", aModule.getShortUnitType(),
|
totalString += String.format("\n<%s>%s:%s<\\%s>", aModule.getShortUnitType(),
|
||||||
aModule.getUnitName(), aString, aModule.getShortUnitType());
|
aModule.getUnitName(), aString, aModule.getShortUnitType());
|
||||||
}
|
}
|
||||||
return totalString;
|
return totalString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHint() {
|
||||||
|
return "Get summary information about each running process";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
69
src/PamController/command/TerminalController.java
Normal file
69
src/PamController/command/TerminalController.java
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
package PamController.command;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
|
||||||
|
import PamController.PamController;
|
||||||
|
|
||||||
|
public class TerminalController extends CommandManager {
|
||||||
|
|
||||||
|
private BufferedReader reader;
|
||||||
|
|
||||||
|
private static String unitName = "Terminal Controller";
|
||||||
|
|
||||||
|
public TerminalController(PamController pamController) {
|
||||||
|
super(pamController, unitName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean sendData(String dataString) {
|
||||||
|
System.out.println(dataString);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pamClose() {
|
||||||
|
super.pamClose();
|
||||||
|
try {
|
||||||
|
reader.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getTerminalCommands() {
|
||||||
|
Thread t = new Thread(new TerminalTread());
|
||||||
|
t.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private class TerminalTread implements Runnable {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
readCommands();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void readCommands() {
|
||||||
|
|
||||||
|
reader = new BufferedReader(
|
||||||
|
new InputStreamReader(System.in));
|
||||||
|
try {
|
||||||
|
while (true) {
|
||||||
|
String command = reader.readLine();
|
||||||
|
if (command != null && command.length() > 0) {
|
||||||
|
interpretCommand(command);
|
||||||
|
}
|
||||||
|
// System.out.println("you typed: " + inLine);
|
||||||
|
// if (inLine.contains("exit")) {
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
System.out.println("Exiting PAMGuard, leave control thread");
|
||||||
|
}
|
||||||
|
}
|
140
src/PamView/NullGuiController.java
Normal file
140
src/PamView/NullGuiController.java
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
package PamView;
|
||||||
|
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
|
||||||
|
import PamController.PAMControllerGUI;
|
||||||
|
import PamController.PamControlledUnit;
|
||||||
|
import PamController.PamController;
|
||||||
|
import PamController.PamSettings;
|
||||||
|
import PamModel.PamModel;
|
||||||
|
import PamModel.PamModuleInfo;
|
||||||
|
import pamViewFX.pamTask.PamTaskUpdate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Null GUI controller which will get used with the -nogui options.
|
||||||
|
* @author dg50
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class NullGuiController implements PAMControllerGUI {
|
||||||
|
|
||||||
|
private PamController pamController;
|
||||||
|
|
||||||
|
public NullGuiController(PamController pamController) {
|
||||||
|
this.pamController = pamController;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pamStarted() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pamEnded() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void modelChanged(int changeType) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addControlledUnit(PamControlledUnit controlledUnit) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void showControlledUnit(PamControlledUnit unit) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeControlledUnit(PamControlledUnit controlledUnit) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTitle(String title) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getFrameNumber() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JFrame getGuiFrame() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enableGUIControl(boolean enable) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addView(PamViewInterface newView) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroyModel() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyModelChanged(int changeType) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyLoadProgress(PamTaskUpdate progress) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PamSettings getInitialSettings() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PamViewInterface initPrimaryView(PamController pamController, PamModel pamModelInterface) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasCallBack() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getModuleName(Object parentFrame, PamModuleInfo moduleInfo) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -700,8 +700,11 @@ public class PamDetectionOverlayGraphics extends PanelOverlayDraw {
|
|||||||
pamDetection.getSampleDuration() * 1000./parentDataBlock.getSampleRate(),
|
pamDetection.getSampleDuration() * 1000./parentDataBlock.getSampleRate(),
|
||||||
frequency[0], 0);
|
frequency[0], 0);
|
||||||
|
|
||||||
|
boolean isWrapped = false;
|
||||||
if (botRight.x < topLeft.x){
|
if (botRight.x < topLeft.x){
|
||||||
botRight.x = g.getClipBounds().width;
|
// this means it's wrapped.
|
||||||
|
isWrapped = true;
|
||||||
|
botRight.x += g.getClipBounds().width;
|
||||||
}
|
}
|
||||||
if (generalProjector.isViewer()) {
|
if (generalProjector.isViewer()) {
|
||||||
Coordinate3d middle = new Coordinate3d();
|
Coordinate3d middle = new Coordinate3d();
|
||||||
@ -723,8 +726,13 @@ public class PamDetectionOverlayGraphics extends PanelOverlayDraw {
|
|||||||
// Not actually drawing on a spectrogramProjector, so don't have any info on the background color
|
// Not actually drawing on a spectrogramProjector, so don't have any info on the background color
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isWrapped) {
|
||||||
|
g.drawRect((int) topLeft.x-g.getClipBounds().width, (int) topLeft.y,
|
||||||
|
(int) botRight.x - (int) topLeft.x, (int) botRight.y - (int) topLeft.y);
|
||||||
|
}
|
||||||
g.drawRect((int) topLeft.x, (int) topLeft.y,
|
g.drawRect((int) topLeft.x, (int) topLeft.y,
|
||||||
(int) botRight.x - (int) topLeft.x, (int) botRight.y - (int) topLeft.y);
|
(int) botRight.x - (int) topLeft.x, (int) botRight.y - (int) topLeft.y);
|
||||||
|
|
||||||
return new Rectangle((int) topLeft.x, (int) topLeft.y,
|
return new Rectangle((int) topLeft.x, (int) topLeft.y,
|
||||||
(int) botRight.x - (int) topLeft.x, (int) botRight.y - (int) topLeft.y);
|
(int) botRight.x - (int) topLeft.x, (int) botRight.y - (int) topLeft.y);
|
||||||
}
|
}
|
||||||
|
@ -65,12 +65,17 @@ public class RWEOverlayGraphics extends PamDetectionOverlayGraphics {
|
|||||||
int[] polyY = new int[pf.length];
|
int[] polyY = new int[pf.length];
|
||||||
int[] edgeX = new int[pf.length*2];
|
int[] edgeX = new int[pf.length*2];
|
||||||
int[] edgeY = new int[pf.length*2];
|
int[] edgeY = new int[pf.length*2];
|
||||||
|
boolean isWrapped = false;
|
||||||
for (int i = 0, j = pf.length*2-1; i < pf.length; i++, j--) {
|
for (int i = 0, j = pf.length*2-1; i < pf.length; i++, j--) {
|
||||||
double t = t0 + (double) tbin[i] * ffthop / fs * 1000.;
|
double t = t0 + (double) tbin[i] * ffthop / fs * 1000.;
|
||||||
double f = pf[i] * fs/fftLen;
|
double f = pf[i] * fs/fftLen;
|
||||||
Point2D pos = generalProjector.getCoord3d(t, f, 0).getPoint2D();
|
Point2D pos = generalProjector.getCoord3d(t, f, 0).getPoint2D();
|
||||||
polyX[i] = (int) pos.getX();
|
polyX[i] = (int) pos.getX();
|
||||||
polyY[i] = (int) pos.getY();
|
polyY[i] = (int) pos.getY();
|
||||||
|
if (polyX[i] < polyX[0]) {
|
||||||
|
isWrapped = true;
|
||||||
|
polyX[i] += g.getClipBounds().width;
|
||||||
|
}
|
||||||
edgeX[i] = edgeX[j] = polyX[i];
|
edgeX[i] = edgeX[j] = polyX[i];
|
||||||
Point2D pe = generalProjector.getCoord3d(t, highF[i]*fs/fftLen, 0).getPoint2D();
|
Point2D pe = generalProjector.getCoord3d(t, highF[i]*fs/fftLen, 0).getPoint2D();
|
||||||
edgeY[i] = (int) pe.getY();
|
edgeY[i] = (int) pe.getY();
|
||||||
@ -87,6 +92,13 @@ public class RWEOverlayGraphics extends PamDetectionOverlayGraphics {
|
|||||||
}
|
}
|
||||||
// g.drawPolyline(polyX, polyY, polyX.length);
|
// g.drawPolyline(polyX, polyY, polyX.length);
|
||||||
g.drawPolygon(edgeX, edgeY, edgeX.length);
|
g.drawPolygon(edgeX, edgeY, edgeX.length);
|
||||||
|
if (isWrapped) {
|
||||||
|
int dx = g.getClipBounds().width;
|
||||||
|
for (int i = 0; i < edgeX.length; i++) {
|
||||||
|
edgeX[i] -= dx;
|
||||||
|
}
|
||||||
|
g.drawPolygon(edgeX, edgeY, edgeX.length);
|
||||||
|
}
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -646,15 +646,17 @@ public class NetworkReceiver extends PamControlledUnit implements PamSettings, N
|
|||||||
try {
|
try {
|
||||||
objectId = ds.readInt();
|
objectId = ds.readInt();
|
||||||
moduleVersion = ds.readInt();
|
moduleVersion = ds.readInt();
|
||||||
baseData.readBaseData(ds, receivedData.getDataVersion());
|
|
||||||
// millis = ds.readLong();
|
// millis = ds.readLong();
|
||||||
// if (dataVersion2 >= 2) {
|
// if (dataVersion2 >= 2) {
|
||||||
// nanos = ds.readLong();
|
// nanos = ds.readLong();
|
||||||
// channelMap = ds.readInt();
|
// channelMap = ds.readInt();
|
||||||
// }
|
// }
|
||||||
|
baseData.readBaseData(ds, receivedData.getDataVersion());
|
||||||
dataLength = ds.readInt();
|
dataLength = ds.readInt();
|
||||||
data = new byte[dataLength];
|
data = new byte[dataLength];
|
||||||
ds.read(data);
|
int bytesRead = ds.read(data);
|
||||||
|
// System.out.printf("NetRX read %d of expected %d bytes\n", bytesRead, dataLength);
|
||||||
|
// if (1>0) return null;
|
||||||
ds.close();
|
ds.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -6,12 +6,13 @@ import java.io.IOException;
|
|||||||
|
|
||||||
import networkTransfer.NetworkObject;
|
import networkTransfer.NetworkObject;
|
||||||
import networkTransfer.receive.NetworkReceiver;
|
import networkTransfer.receive.NetworkReceiver;
|
||||||
|
import PamguardMVC.DataUnitBaseData;
|
||||||
import PamguardMVC.PamDataBlock;
|
import PamguardMVC.PamDataBlock;
|
||||||
import PamguardMVC.PamDataUnit;
|
import PamguardMVC.PamDataUnit;
|
||||||
|
|
||||||
import binaryFileStorage.BinaryDataSource;
|
import binaryFileStorage.BinaryDataSource;
|
||||||
import binaryFileStorage.BinaryObjectData;
|
import binaryFileStorage.BinaryObjectData;
|
||||||
|
import binaryFileStorage.BinaryStore;
|
||||||
import jsonStorage.JSONObjectDataSource;
|
import jsonStorage.JSONObjectDataSource;
|
||||||
|
|
||||||
//import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
|
//import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
|
||||||
@ -73,16 +74,23 @@ public class NetworkObjectPacker {
|
|||||||
short dataType1 = NetworkReceiver.NET_PAM_DATA;
|
short dataType1 = NetworkReceiver.NET_PAM_DATA;
|
||||||
BinaryDataSource binarySource = dataBlock.getBinaryDataSource();
|
BinaryDataSource binarySource = dataBlock.getBinaryDataSource();
|
||||||
int dataType2 = dataBlock.getQuickId();
|
int dataType2 = dataBlock.getQuickId();
|
||||||
|
|
||||||
BinaryObjectData packedObject = binarySource.getPackedData(dataUnit);
|
BinaryObjectData packedObject = binarySource.getPackedData(dataUnit);
|
||||||
byte[] data = packedObject.getData();
|
byte[] data = packedObject.getData();
|
||||||
int duDataLength = data.length + 20;
|
int duDataLength = data.length + 12;
|
||||||
|
DataUnitBaseData baseData = dataUnit.getBasicData();
|
||||||
|
int baseDataLength = baseData.getBaseDataBinaryLength();
|
||||||
|
duDataLength += baseDataLength;
|
||||||
|
|
||||||
|
|
||||||
// ByteOutputStream bos = new ByteOutputStream(duDataLength);
|
// ByteOutputStream bos = new ByteOutputStream(duDataLength);
|
||||||
ByteArrayOutputStream bos = new ByteArrayOutputStream(duDataLength);
|
ByteArrayOutputStream bos = new ByteArrayOutputStream(duDataLength);
|
||||||
DataOutputStream dos = new DataOutputStream(bos);
|
DataOutputStream dos = new DataOutputStream(bos);
|
||||||
try {
|
try { // these are the extra 20 bytes refered to above.
|
||||||
dos.writeInt(packedObject.getObjectType());
|
dos.writeInt(packedObject.getObjectType());
|
||||||
dos.writeInt(binarySource.getModuleVersion());
|
dos.writeInt(binarySource.getModuleVersion());
|
||||||
dos.writeLong(dataUnit.getTimeMilliseconds());
|
// dos.writeLong(dataUnit.getTimeMilliseconds());
|
||||||
|
baseData.writeBaseData(dos, BinaryStore.getCurrentFileFormat());
|
||||||
dos.writeInt(data.length);
|
dos.writeInt(data.length);
|
||||||
dos.write(data);
|
dos.write(data);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@ -131,7 +139,7 @@ public class NetworkObjectPacker {
|
|||||||
try {
|
try {
|
||||||
dos.writeInt(DATASTARTFLAG);
|
dos.writeInt(DATASTARTFLAG);
|
||||||
dos.writeInt(totalSize);
|
dos.writeInt(totalSize);
|
||||||
dos.writeShort(1); // header version
|
dos.writeShort(BinaryStore.getCurrentFileFormat()); // header version
|
||||||
dos.writeShort(buoyId1);
|
dos.writeShort(buoyId1);
|
||||||
dos.writeShort(buoyId2);
|
dos.writeShort(buoyId2);
|
||||||
dos.writeShort(dataType1);
|
dos.writeShort(dataType1);
|
||||||
|
@ -28,6 +28,7 @@ import PamController.PamGUIManager;
|
|||||||
import PamController.PamSettingManager;
|
import PamController.PamSettingManager;
|
||||||
import PamController.PamguardVersionInfo;
|
import PamController.PamguardVersionInfo;
|
||||||
import PamController.pamBuoyGlobals;
|
import PamController.pamBuoyGlobals;
|
||||||
|
import PamController.command.TerminalController;
|
||||||
import PamModel.SMRUEnable;
|
import PamModel.SMRUEnable;
|
||||||
import PamUtils.FileFunctions;
|
import PamUtils.FileFunctions;
|
||||||
import PamUtils.PamExceptionHandler;
|
import PamUtils.PamExceptionHandler;
|
||||||
@ -298,7 +299,7 @@ public class Pamguard {
|
|||||||
if(runMode == PamController.RUN_REMOTE) {
|
if(runMode == PamController.RUN_REMOTE) {
|
||||||
spashTime = 0;
|
spashTime = 0;
|
||||||
}
|
}
|
||||||
if (spashTime > 0) {
|
if (spashTime > 0 && (PamGUIManager.getGUIType() != PamGUIManager.NOGUI)) {
|
||||||
new Splash(spashTime, chosenRunMode);
|
new Splash(spashTime, chosenRunMode);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
@ -323,9 +324,11 @@ public class Pamguard {
|
|||||||
else {
|
else {
|
||||||
PamController.create(chosenRunMode);
|
PamController.create(chosenRunMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static private String writePropertyString(String key) {
|
static private String writePropertyString(String key) {
|
||||||
String property = System.getProperty(key);
|
String property = System.getProperty(key);
|
||||||
if (property == null) {
|
if (property == null) {
|
||||||
|
Loading…
Reference in New Issue
Block a user