mirror of
https://github.com/PhotonVision/photonvision
synced 2026-07-01 02:41:42 +00:00
simplified the msgpack object using jackson-msgpack
This commit is contained in:
68
Main/chameleon-vision.iml
Normal file
68
Main/chameleon-vision.iml
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_12">
|
||||||
|
<output url="file://$MODULE_DIR$/target/classes" />
|
||||||
|
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="library" name="Maven: io.javalin:javalin:3.4.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.31" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib:1.3.31" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.31" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.jetbrains:annotations:13.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.31" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-server:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-http:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-util:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-io:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-webapp:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-xml:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-servlet:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-security:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-server:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-common:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-api:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-client:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-client:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-servlet:9.4.19.v20190610" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.json:json:20190722" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.slf4j:slf4j-simple:1.7.26" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.msgpack:msgpack-core:0.8.18" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.msgpack:jackson-dataformat-msgpack:0.8.18" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.1.9.RELEASE" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.1.9.RELEASE" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.9.RELEASE" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.9" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.10.0.pr1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.10.0.pr1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.10.0.pr1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.cscore:cscore-java:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.cscore:cscore-jni:linuxaarch64bionic:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.cscore:cscore-jni:linuxraspbian:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.cscore:cscore-jni:linuxx86-64:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.cscore:cscore-jni:osxx86-64:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.cscore:cscore-jni:windowsx86-64:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.cameraserver:cameraserver-java:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.ntcore:ntcore-java:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.ntcore:ntcore-jni:osxx86-64:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.ntcore:ntcore-jni:linuxraspbian:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.ntcore:ntcore-jni:linuxx86-64:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.ntcore:ntcore-jni:windowsx86-64:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.wpiutil:wpiutil-java:2019.4.1-213-g56d782b" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.thirdparty.frc2020.opencv:opencv-java:3.4.7-1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.thirdparty.frc2020.opencv:opencv-jni:linuxaarch64bionic:3.4.7-1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.thirdparty.frc2020.opencv:opencv-jni:linuxraspbian:3.4.7-1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.thirdparty.frc2020.opencv:opencv-jni:linuxx86-64:3.4.7-1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.thirdparty.frc2020.opencv:opencv-jni:osxx86-64:3.4.7-1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: edu.wpi.first.thirdparty.frc2020.opencv:opencv-jni:windowsx86-64:3.4.7-1" level="project" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
10
Main/pom.xml
10
Main/pom.xml
@@ -94,11 +94,11 @@
|
|||||||
<artifactId>msgpack-core</artifactId>
|
<artifactId>msgpack-core</artifactId>
|
||||||
<version>0.8.18</version>
|
<version>0.8.18</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- <dependency>-->
|
<dependency>
|
||||||
<!-- <groupId>org.msgpack</groupId>-->
|
<groupId>org.msgpack</groupId>
|
||||||
<!-- <artifactId>msgpack</artifactId>-->
|
<artifactId>jackson-dataformat-msgpack</artifactId>
|
||||||
<!-- <version>0.6.12</version>-->
|
<version>0.8.18</version>
|
||||||
<!-- </dependency>-->
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-beans</artifactId>
|
<artifactId>spring-beans</artifactId>
|
||||||
|
|||||||
@@ -7,29 +7,37 @@ import com.chameleonvision.vision.TargetIntersection;
|
|||||||
import com.chameleonvision.vision.camera.CameraException;
|
import com.chameleonvision.vision.camera.CameraException;
|
||||||
import com.chameleonvision.settings.SettingsManager;
|
import com.chameleonvision.settings.SettingsManager;
|
||||||
import com.chameleonvision.vision.camera.CameraManager;
|
import com.chameleonvision.vision.camera.CameraManager;
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import edu.wpi.cscore.VideoException;
|
import edu.wpi.cscore.VideoException;
|
||||||
import io.javalin.websocket.*;
|
import io.javalin.websocket.*;
|
||||||
|
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
|
import org.eclipse.jetty.util.ArrayUtil;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
|
||||||
import org.msgpack.core.MessagePack;
|
import org.msgpack.core.MessagePack;
|
||||||
|
import org.msgpack.core.MessagePacker;
|
||||||
import org.msgpack.core.MessageUnpacker;
|
import org.msgpack.core.MessageUnpacker;
|
||||||
|
import org.msgpack.core.buffer.MessageBufferOutput;
|
||||||
|
import org.msgpack.jackson.dataformat.MessagePackFactory;
|
||||||
import org.msgpack.value.ImmutableArrayValue;
|
import org.msgpack.value.ImmutableArrayValue;
|
||||||
import org.msgpack.value.ImmutableValue;
|
import org.msgpack.value.ImmutableValue;
|
||||||
import org.msgpack.value.Value;
|
import org.msgpack.value.Value;
|
||||||
import org.springframework.beans.BeanUtils;
|
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
|
||||||
public class ServerHandler {
|
public class ServerHandler {
|
||||||
|
|
||||||
private static List<WsContext> users;
|
private static List<WsContext> users;
|
||||||
|
private static ObjectMapper objectMapper;
|
||||||
|
|
||||||
ServerHandler() {
|
ServerHandler() {
|
||||||
users = new ArrayList<>();
|
users = new ArrayList<>();
|
||||||
|
objectMapper = new ObjectMapper(new MessagePackFactory());
|
||||||
}
|
}
|
||||||
|
|
||||||
void onConnect(WsConnectContext context) {
|
void onConnect(WsConnectContext context) {
|
||||||
@@ -42,14 +50,10 @@ public class ServerHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void onBinaryMessage(WsBinaryMessageContext data) throws Exception {
|
void onBinaryMessage(WsBinaryMessageContext data) throws Exception {
|
||||||
MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(ArrayUtils.toPrimitive(data.data()));
|
Map<String, Object> deserialized = objectMapper.readValue(ArrayUtils.toPrimitive(data.data()), new TypeReference<Map<String,Object>>(){});
|
||||||
int length = unpacker.unpackMapHeader();
|
for (Map.Entry<String,Object> entry: deserialized.entrySet()) {
|
||||||
for (int mapIndex = 0; mapIndex < length; mapIndex++) {
|
|
||||||
String key = unpacker.unpackString(); // key
|
|
||||||
// Object value = get(unpacker.unpackValue());
|
|
||||||
ImmutableValue value = unpacker.unpackValue();
|
|
||||||
try {
|
try {
|
||||||
switch (key) {
|
switch (entry.getKey()) {
|
||||||
case "generalSettings": {
|
case "generalSettings": {
|
||||||
//change general settings using a general settings object
|
//change general settings using a general settings object
|
||||||
break;
|
break;
|
||||||
@@ -72,30 +76,27 @@ public class ServerHandler {
|
|||||||
}
|
}
|
||||||
default: {//Change pipeline values
|
default: {//Change pipeline values
|
||||||
//Two special cases for exposure and brightness changes
|
//Two special cases for exposure and brightness changes
|
||||||
if (key.equals("exposure"))
|
if (entry.getKey().equals("exposure"))
|
||||||
try {
|
try {
|
||||||
CameraManager.getCurrentCamera().setExposure(value.asIntegerValue().toInt());
|
// CameraManager.getCurrentCamera().setExposure(value.asIntegerValue().toInt());
|
||||||
} catch (VideoException e) {
|
} catch (VideoException e) {
|
||||||
System.out.println("Exposure changes is not supported on your webcam/webcam's driver");
|
System.out.println("Exposure changes is not supported on your webcam/webcam's driver");
|
||||||
}
|
}
|
||||||
else if (key.equals("brightness")) try {
|
else if (entry.getKey().equals("brightness")) try {
|
||||||
CameraManager.getCurrentCamera().setBrightness(value.asIntegerValue().toInt());
|
// CameraManager.getCurrentCamera().setBrightness(value.asIntegerValue().toInt());
|
||||||
} catch (VideoException e) {
|
} catch (VideoException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
setValue(CameraManager.getCurrentPipeline(), key, value);//All of the other assignments fields
|
// setValue(CameraManager.getCurrentPipeline(), entry.getKey(), entry.getValue());//All of the other assignments fields
|
||||||
broadcastMessage(data.data());
|
|
||||||
System.out.println(ToStringBuilder.reflectionToString(CameraManager.getCurrentPipeline()));//Print all pipeline data for debugging
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
unexpectedData(key, value);
|
// unexpectedData(key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setValue(Object obj, String fieldName, ImmutableValue value) {
|
private void setValue(Object obj, String fieldName, ImmutableValue value) {
|
||||||
@@ -149,7 +150,12 @@ public class ServerHandler {
|
|||||||
if (userToSkip != null && user.getSessionId().equals(userToSkip.getSessionId())) {
|
if (userToSkip != null && user.getSessionId().equals(userToSkip.getSessionId())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
user.send(obj);
|
try{
|
||||||
|
ByteBuffer b = ByteBuffer.wrap(objectMapper.writeValueAsBytes(obj));
|
||||||
|
user.send(b);
|
||||||
|
} catch (JsonProcessingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user