mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-20 00:51:41 +00:00
code cleanup and ui route bugfix
This commit is contained in:
@@ -25,7 +25,8 @@ public class Server {
|
||||
ws.onBinaryMessage(ctx -> {
|
||||
handler.onBinaryMessage(ctx);
|
||||
});
|
||||
app.start(port);
|
||||
});
|
||||
|
||||
app.start(port);
|
||||
}
|
||||
}
|
||||
@@ -43,41 +43,42 @@ public class ServerHandler {
|
||||
}
|
||||
|
||||
void onBinaryMessage(WsBinaryMessageContext context) throws Exception {
|
||||
Map<String, Object> deserialized = objectMapper.readValue(ArrayUtils.toPrimitive(context.data()), new TypeReference<Map<String,Object>>(){});
|
||||
for (Map.Entry<String,Object> entry: deserialized.entrySet()) {
|
||||
Map<String, Object> deserialized = objectMapper.readValue(ArrayUtils.toPrimitive(context.data()), new TypeReference<Map<String, Object>>() {
|
||||
});
|
||||
for (Map.Entry<String, Object> entry : deserialized.entrySet()) {
|
||||
try {
|
||||
switch (entry.getKey()) {
|
||||
case "generalSettings": {
|
||||
for (HashMap.Entry<String,Object> e : ((HashMap<String,Object>)entry.getValue()).entrySet()){
|
||||
setField(SettingsManager.GeneralSettings,e.getKey(),e.getValue());
|
||||
for (HashMap.Entry<String, Object> e : ((HashMap<String, Object>) entry.getValue()).entrySet()) {
|
||||
setField(SettingsManager.GeneralSettings, e.getKey(), e.getValue());
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "cameraSettings": {
|
||||
HashMap camSettings = (HashMap)entry.getValue();
|
||||
CameraManager.getCurrentCamera().setFOV((Number)camSettings.get("fov"));
|
||||
HashMap camSettings = (HashMap) entry.getValue();
|
||||
CameraManager.getCurrentCamera().setFOV((Number) camSettings.get("fov"));
|
||||
CameraManager.getCurrentCamera().setStreamDivisor((Integer) camSettings.get("streamDivisor"));
|
||||
CameraManager.getCurrentCamera().setCamVideoMode((Integer) camSettings.get("resolution"),true);
|
||||
CameraManager.getCurrentCamera().setCamVideoMode((Integer) camSettings.get("resolution"), true);
|
||||
break;
|
||||
}
|
||||
case "changeCameraName":{
|
||||
case "changeCameraName": {
|
||||
// needs to be implemented
|
||||
}
|
||||
case "changePipelineName":{
|
||||
case "changePipelineName": {
|
||||
// needs to be implemented
|
||||
}
|
||||
case "duplicatePipeline":{
|
||||
case "duplicatePipeline": {
|
||||
// needs to be implemented
|
||||
}
|
||||
case "command": {
|
||||
switch ((String) entry.getValue()){
|
||||
switch ((String) entry.getValue()) {
|
||||
case "addNewPipeline":
|
||||
CameraManager.getCurrentCamera().addPipeline();
|
||||
break;
|
||||
case "deleteCurrentPipeline":
|
||||
var cam = CameraManager.getCurrentCamera();
|
||||
CameraManager.getCurrentCamera().deleteCurrentPipeline();
|
||||
CameraManager.getCurrentCamera().setCurrentPipelineIndex(cam.getCurrentPipelineIndex() -1);
|
||||
CameraManager.getCurrentCamera().setCurrentPipelineIndex(cam.getCurrentPipelineIndex() - 1);
|
||||
sendFullSettings();
|
||||
break;
|
||||
}
|
||||
@@ -86,31 +87,31 @@ public class ServerHandler {
|
||||
}
|
||||
case "currentCamera": {
|
||||
CameraManager.setCurrentCamera((String) entry.getValue());
|
||||
HashMap<String,Object> tmp = new HashMap<>();
|
||||
tmp.put("pipeline",CameraManager.getCurrentCamera().getCurrentPipeline());
|
||||
HashMap<String, Object> tmp = new HashMap<>();
|
||||
tmp.put("pipeline", CameraManager.getCurrentCamera().getCurrentPipeline());
|
||||
tmp.put("port", CameraManager.getCurrentCamera().getStreamPort());
|
||||
tmp.put("resolutionList",CameraManager.getResolutionList());
|
||||
tmp.put("resolutionList", CameraManager.getResolutionList());
|
||||
broadcastMessage(tmp);
|
||||
break;
|
||||
}
|
||||
case "currentPipeline": {
|
||||
CameraManager.getCurrentCamera().setCurrentPipelineIndex((Integer) entry.getValue());
|
||||
HashMap<String,Object> tmp = new HashMap<>();
|
||||
tmp.put("pipeline",getOrdinalPipeline());
|
||||
HashMap<String, Object> tmp = new HashMap<>();
|
||||
tmp.put("pipeline", getOrdinalPipeline());
|
||||
broadcastMessage(tmp);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
setField(CameraManager.getCurrentCamera().getCurrentPipeline(),entry.getKey(),entry.getValue());
|
||||
switch (entry.getKey()){
|
||||
case "exposure":{
|
||||
try{
|
||||
setField(CameraManager.getCurrentCamera().getCurrentPipeline(), entry.getKey(), entry.getValue());
|
||||
switch (entry.getKey()) {
|
||||
case "exposure": {
|
||||
try {
|
||||
CameraManager.getCurrentCamera().setExposure((Integer) entry.getValue());
|
||||
} catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
System.err.println("Camera Does not support exposure change");
|
||||
}
|
||||
}
|
||||
case "brightness":{
|
||||
case "brightness": {
|
||||
CameraManager.getCurrentCamera().setBrightness((Integer) entry.getValue());
|
||||
}
|
||||
}
|
||||
@@ -120,21 +121,22 @@ public class ServerHandler {
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getMessage());
|
||||
}
|
||||
broadcastMessage(deserialized,context);
|
||||
broadcastMessage(deserialized, context);
|
||||
}
|
||||
}
|
||||
|
||||
private void setField(Object obj, String fieldName, Object value) {
|
||||
try {
|
||||
Field field = obj.getClass().getField(fieldName);
|
||||
if (BeanUtils.isSimpleValueType(field.getType())){
|
||||
if (field.getType().isEnum()){
|
||||
field.set(obj,field.getType().getEnumConstants()[(Integer) value]);
|
||||
}else{
|
||||
field.set(obj,value);
|
||||
if (BeanUtils.isSimpleValueType(field.getType())) {
|
||||
if (field.getType().isEnum()) {
|
||||
field.set(obj, field.getType().getEnumConstants()[(Integer) value]);
|
||||
} else {
|
||||
field.set(obj, value);
|
||||
}
|
||||
} else if(field.getType() == List.class){
|
||||
} else if (field.getType() == List.class) {
|
||||
// if(((ParameterizedType)field.getGenericType()).getActualTypeArguments()[0] == Double.class){
|
||||
field.set(obj,value);
|
||||
field.set(obj, value);
|
||||
}
|
||||
} catch (NoSuchFieldException | IllegalAccessException ex) {
|
||||
ex.printStackTrace();
|
||||
@@ -147,7 +149,7 @@ public class ServerHandler {
|
||||
if (userToSkip != null && user.getSessionId().equals(userToSkip.getSessionId())) {
|
||||
continue;
|
||||
}
|
||||
try{
|
||||
try {
|
||||
ByteBuffer b = ByteBuffer.wrap(objectMapper.writeValueAsBytes(obj));
|
||||
user.send(b);
|
||||
} catch (JsonProcessingException e) {
|
||||
@@ -160,46 +162,49 @@ public class ServerHandler {
|
||||
broadcastMessage(obj, null);//Broadcasts the message to every user
|
||||
}
|
||||
|
||||
private static HashMap<String,Object> getOrdinalPipeline() throws CameraException, IllegalAccessException {
|
||||
HashMap<String,Object> tmp = new HashMap<>();
|
||||
for (Field f : Pipeline.class.getFields()){
|
||||
if (!f.getType().isEnum()){
|
||||
tmp.put(f.getName(),f.get(CameraManager.getCurrentCamera().getCurrentPipeline()));
|
||||
} else{
|
||||
private static HashMap<String, Object> getOrdinalPipeline() throws CameraException, IllegalAccessException {
|
||||
HashMap<String, Object> tmp = new HashMap<>();
|
||||
for (Field f : Pipeline.class.getFields()) {
|
||||
if (!f.getType().isEnum()) {
|
||||
tmp.put(f.getName(), f.get(CameraManager.getCurrentCamera().getCurrentPipeline()));
|
||||
} else {
|
||||
var i = (Enum) f.get(CameraManager.getCurrentCamera().getCurrentPipeline());
|
||||
tmp.put(f.getName(),i.ordinal());
|
||||
tmp.put(f.getName(), i.ordinal());
|
||||
}
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
private static HashMap<String,Object> getOrdinalSettings(){
|
||||
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);
|
||||
|
||||
private static HashMap<String, Object> getOrdinalSettings() {
|
||||
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;
|
||||
}
|
||||
private static HashMap<String ,Object> getOrdinalCameraSettings(){
|
||||
HashMap<String,Object> tmp = new HashMap<>();
|
||||
|
||||
private static HashMap<String, Object> getOrdinalCameraSettings() {
|
||||
HashMap<String, Object> tmp = new HashMap<>();
|
||||
try {
|
||||
var currentCamera = CameraManager.getCurrentCamera();
|
||||
tmp.put("fov",currentCamera.getFOV());
|
||||
tmp.put("streamDivisor",currentCamera.getStreamDivisor().ordinal());
|
||||
tmp.put("resolution",currentCamera.getVideoModeIndex());
|
||||
tmp.put("fov", currentCamera.getFOV());
|
||||
tmp.put("streamDivisor", currentCamera.getStreamDivisor().ordinal());
|
||||
tmp.put("resolution", currentCamera.getVideoModeIndex());
|
||||
} catch (CameraException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
public static void sendFullSettings() {
|
||||
//General settings
|
||||
Map<String, Object> fullSettings = new HashMap<>();
|
||||
try {
|
||||
fullSettings.put("settings", getOrdinalSettings());
|
||||
fullSettings.put("cameraSettings",getOrdinalCameraSettings());
|
||||
fullSettings.put("cameraSettings", getOrdinalCameraSettings());
|
||||
fullSettings.put("cameraList", CameraManager.getAllCamerasByName().keySet());
|
||||
var currentCamera = CameraManager.getCurrentCamera();
|
||||
fullSettings.put("pipeline", getOrdinalPipeline());
|
||||
|
||||
Reference in New Issue
Block a user