changed general settings naming and added general settings save in ui

This commit is contained in:
ori agranat
2019-10-15 21:00:18 +03:00
parent 91a1338022
commit cd94c9f8c0
13 changed files with 72 additions and 43 deletions

View File

@@ -148,7 +148,7 @@ public class Main {
if (ntClientModeServer != null) {
NetworkTableInstance.getDefault().startClient(ntClientModeServer);
} else {
NetworkTableInstance.getDefault().startClientTeam(SettingsManager.GeneralSettings.team_number);
NetworkTableInstance.getDefault().startClientTeam(SettingsManager.GeneralSettings.teamNumber);
}
}

View File

@@ -1,6 +1,7 @@
package com.chameleonvision.network;
import com.chameleonvision.settings.ConnectionType;
import com.chameleonvision.settings.NetworkSettings;
import com.chameleonvision.settings.Platform;
import com.chameleonvision.settings.SettingsManager;
@@ -46,7 +47,7 @@ public class NetworkManager {
e.printStackTrace();
}
var teamBytes = NetworkSettings.GetTeamNumberIPBytes(SettingsManager.GeneralSettings.team_number);
var teamBytes = NetworkSettings.GetTeamNumberIPBytes(SettingsManager.GeneralSettings.teamNumber);
if (interfaces.size() > 0) {
for (var inetface : interfaces) {
@@ -85,7 +86,7 @@ public class NetworkManager {
}
var genSettings = SettingsManager.GeneralSettings;
boolean isStatic = genSettings.connection_type.toLowerCase().equals("static");
boolean isStatic = genSettings.connectionType.equals(ConnectionType.Static);
if (isStatic) {
var splitIPAddr = genSettings.ip.split("\\.");

View File

@@ -0,0 +1,5 @@
package com.chameleonvision.settings;
public enum ConnectionType {
DHCP,Static
}

View File

@@ -1,12 +1,12 @@
package com.chameleonvision.settings;
public class GeneralSettings {
public int team_number = 1577;
public String connection_type = "DHCP";
public int teamNumber = 1577;
public ConnectionType connectionType = ConnectionType.DHCP;
public String ip = "";
public String gateway = "";
public String netmask = "";
public String hostname = "Chameleon-vision";
public String curr_camera = "";
public Integer curr_pipeline = null;
public String currentCamera = "";
public Integer currentPipeline = null;
}

View File

@@ -32,10 +32,10 @@ public class SettingsManager {
// netSettings.run();
// }
var allCameras = CameraManager.getAllCamerasByName();
if (!allCameras.containsKey(GeneralSettings.curr_camera) && allCameras.size() > 0) {
if (!allCameras.containsKey(GeneralSettings.currentCamera) && allCameras.size() > 0) {
var cam = allCameras.entrySet().stream().findFirst().get().getValue();
GeneralSettings.curr_camera = cam.name;
GeneralSettings.curr_pipeline = cam.getCurrentPipelineIndex();
GeneralSettings.currentCamera = cam.name;
GeneralSettings.currentPipeline = cam.getCurrentPipelineIndex();
}
}
@@ -49,12 +49,12 @@ public class SettingsManager {
}
public static void updateCameraSetting(String cameraName, int pipelineNumber) {
GeneralSettings.curr_camera = cameraName;
GeneralSettings.curr_pipeline = pipelineNumber;
GeneralSettings.currentCamera = cameraName;
GeneralSettings.currentPipeline = pipelineNumber;
}
public static void updatePipelineSetting(int pipelineNumber) {
GeneralSettings.curr_pipeline = pipelineNumber;
GeneralSettings.currentPipeline = pipelineNumber;
}
public static void saveSettings() {

View File

@@ -118,6 +118,7 @@ public class Camera {
cvSource = cs.putVideo(name, newVideoMode.width, newVideoMode.height);
}
ServerHandler.sendFullSettings();
}
}

View File

@@ -92,7 +92,7 @@ public class CameraManager {
public static Camera getCurrentCamera() throws CameraException {
if (AllCamerasByName.size() == 0) throw new CameraException(CameraException.CameraExceptionType.NO_CAMERA);
var curCam = AllCamerasByName.get(SettingsManager.GeneralSettings.curr_camera);
var curCam = AllCamerasByName.get(SettingsManager.GeneralSettings.currentCamera);
if (curCam == null) throw new CameraException(CameraException.CameraExceptionType.BAD_CAMERA);
return curCam;
}
@@ -100,7 +100,7 @@ public class CameraManager {
public static void setCurrentCamera(String cameraName) throws CameraException {
if (!AllCamerasByName.containsKey(cameraName))
throw new CameraException(CameraException.CameraExceptionType.BAD_CAMERA);
SettingsManager.GeneralSettings.curr_camera = cameraName;
SettingsManager.GeneralSettings.currentCamera = cameraName;
SettingsManager.updateCameraSetting(cameraName, getCurrentCamera().getCurrentPipelineIndex());
}
@@ -116,15 +116,15 @@ public class CameraManager {
}
public static List<String> getResolutionList() throws CameraException {
if (!SettingsManager.GeneralSettings.curr_camera.equals("")) {
return Arrays.stream(CameraManager.getCamera(SettingsManager.GeneralSettings.curr_camera).getAvailableVideoModes())
if (!SettingsManager.GeneralSettings.currentCamera.equals("")) {
return Arrays.stream(CameraManager.getCamera(SettingsManager.GeneralSettings.currentCamera).getAvailableVideoModes())
.map(res -> String.format("%s X %s at %s fps using %s ", res.width, res.height, res.fps, res.pixelFormat.toString())).collect(Collectors.toList());
}
throw new CameraException(CameraException.CameraExceptionType.NO_CAMERA);
}
public static VisionProcess getCurrentCameraProcess() throws CameraException{
if (!SettingsManager.GeneralSettings.curr_camera.equals("")){
return AllVisionProcessesByName.get(SettingsManager.GeneralSettings.curr_camera);
if (!SettingsManager.GeneralSettings.currentCamera.equals("")){
return AllVisionProcessesByName.get(SettingsManager.GeneralSettings.currentCamera);
}
throw new CameraException(CameraException.CameraExceptionType.NO_CAMERA);
}

View File

@@ -4,6 +4,7 @@ import com.chameleonvision.settings.SettingsManager;
import com.chameleonvision.vision.Orientation;
import com.chameleonvision.vision.Pipeline;
import com.chameleonvision.vision.camera.Camera;
import com.chameleonvision.vision.camera.CameraException;
import com.chameleonvision.web.ServerHandler;
import edu.wpi.cscore.VideoException;
import edu.wpi.first.networktables.*;
@@ -88,12 +89,13 @@ public class VisionProcess implements Runnable {
System.err.println(e.toString());
}
camera.setBrightness(pipeline.brightness);
if (SettingsManager.GeneralSettings.curr_camera.equals(cameraName)){
SettingsManager.GeneralSettings.curr_pipeline = ntPipelineIndex;
if (SettingsManager.GeneralSettings.currentCamera.equals(cameraName)){
SettingsManager.GeneralSettings.currentPipeline = ntPipelineIndex;
HashMap<String, Object> pipeChange = new HashMap<>();
pipeChange.put("curr_pipeline", ntPipelineIndex);
pipeChange.put("currentPipeline", ntPipelineIndex);
ServerHandler.broadcastMessage(pipeChange);
ServerHandler.sendFullSettings();
}
} else {
ntPipelineEntry.setNumber(camera.getCurrentPipelineIndex());
@@ -222,25 +224,27 @@ public class VisionProcess implements Runnable {
// get vision data
var pipelineResult = runVisionProcess(cameraInputMat, streamOutputMat);
updateNetworkTables(pipelineResult);
if (cameraName.equals(SettingsManager.GeneralSettings.curr_camera)) {
if (cameraName.equals(SettingsManager.GeneralSettings.currentCamera)) {
HashMap<String, Object> WebSend = new HashMap<>();
HashMap<String, Object> point = new HashMap<>();
HashMap<String, Object> calculated = new HashMap<>();
List<Double> center = new ArrayList<>();
if (pipelineResult.IsValid) {
center.add(pipelineResult.RawPoint.center.x);
center.add(pipelineResult.RawPoint.center.y);
point.put("pitch", pipelineResult.Pitch);
point.put("yaw", pipelineResult.Yaw);
calculated.put("pitch", pipelineResult.Pitch);
calculated.put("yaw", pipelineResult.Yaw);
} else {
center.add(0.0);
center.add(0.0);
point.put("pitch", 0);
point.put("yaw", 0);
calculated.put("pitch", 0);
calculated.put("yaw", 0);
}
point.put("fps", uiFps);
point.put("calculated",calculated);
point.put("rawPoint",center);
WebSend.put("point", point);
WebSend.put("raw_point", center);
// ServerHandler.broadcastMessage(WebSend);
ServerHandler.broadcastMessage(WebSend);
}
cameraProcess.updateFrame(streamOutputMat);

View File

@@ -48,8 +48,9 @@ public class ServerHandler {
try {
switch (entry.getKey()) {
case "generalSettings": {
System.out.println("asdds");
//change general settings using a general settings object
for (HashMap.Entry<String,Object> e : ((HashMap<String,Object>)entry.getValue()).entrySet()){
setField(SettingsManager.GeneralSettings,e.getKey(),e.getValue());
}
break;
}
case "cameraSettings": {
@@ -133,7 +134,7 @@ public class ServerHandler {
broadcastMessage(obj, null);//Broadcasts the message to every user
}
public static HashMap<String,Object> getOrdinalPipeline() throws CameraException, IllegalAccessException {
private static HashMap<String,Object> getOrdinalPipeline() throws CameraException, IllegalAccessException {
HashMap<String,Object> tmp = new HashMap<>();
for (Field f : Pipeline.class.getFields()){
@@ -146,12 +147,22 @@ public class ServerHandler {
}
return tmp;
}
private static HashMap<String,Object> getOrdinalSettings() throws IllegalAccessException {
HashMap<String,Object> tmp = new HashMap<>();
tmp.put("teamNumber",SettingsManager.GeneralSettings.teamNumber);
tmp.put("connectionType",SettingsManager.GeneralSettings.connectionType.ordinal());
tmp.put("ip",SettingsManager.GeneralSettings.ip);
tmp.put("gateway",SettingsManager.GeneralSettings.gateway);
tmp.put("netmask",SettingsManager.GeneralSettings.netmask);
tmp.put("hostname",SettingsManager.GeneralSettings.hostname);
return tmp;
}
public static void sendFullSettings() {
//General settings
Map<String, Object> fullSettings = new HashMap<String, Object>();
fullSettings.put("settings", SettingsManager.GeneralSettings);
fullSettings.put("cameraList", CameraManager.getAllCamerasByName().keySet());
Map<String, Object> fullSettings = new HashMap<>();
try {
fullSettings.put("settings", getOrdinalSettings());
fullSettings.put("cameraList", CameraManager.getAllCamerasByName().keySet());
var currentCamera = CameraManager.getCurrentCamera();
fullSettings.put("pipeline", getOrdinalPipeline());
fullSettings.put("pipelineList", currentCamera.getPipelines().keySet());