Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use kotlin flatbuffers #484

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
plugins {
java
kotlin("jvm") version "1.8.0" apply false
}
6 changes: 3 additions & 3 deletions server/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import java.io.ByteArrayOutputStream

plugins {
kotlin("jvm") version "1.7.21"
kotlin("jvm")
application
id("com.github.johnrengelman.shadow") version "7.1.2"
id("com.diffplug.spotless") version "6.12.0"
id("com.diffplug.spotless") version "6.12.1"
id("com.github.gmazzo.buildconfig") version "3.1.0"
}

Expand Down Expand Up @@ -141,7 +141,7 @@ configure<com.diffplug.gradle.spotless.SpotlessExtension> {
// "max_line_length" to 88,
"ktlint_experimental" to "enabled"
)
val ktlintVersion = "0.47.1"
val ktlintVersion = "0.48.1"
kotlinGradle {
target("*.gradle.kts") // default target for kotlinGradle
ktlint(ktlintVersion)
Expand Down
6 changes: 3 additions & 3 deletions server/src/main/java/dev/slimevr/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ fun main(args: Array<String>) {
null,
"SlimeVR start-up error! A minimum of Java 17 is required.",
"SlimeVR: Java Runtime Mismatch",
JOptionPane.ERROR_MESSAGE
JOptionPane.ERROR_MESSAGE,
)
return
}
Expand All @@ -74,15 +74,15 @@ fun main(args: Array<String>) {
LogManager
.severe(
"SlimeVR start-up error! Required ports are busy. " +
"Make sure there is no other instance of SlimeVR Server running."
"Make sure there is no other instance of SlimeVR Server running.",
)
JOptionPane
.showMessageDialog(
null,
"SlimeVR start-up error! Required ports are busy. " +
"Make sure there is no other instance of SlimeVR Server running.",
"SlimeVR: Ports are busy",
JOptionPane.ERROR_MESSAGE
JOptionPane.ERROR_MESSAGE,
)
return
}
Expand Down
4 changes: 2 additions & 2 deletions server/src/main/java/dev/slimevr/VRServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import io.eiren.util.ann.ThreadSecure;
import io.eiren.util.collections.FastList;
import io.eiren.util.logging.LogManager;
import solarxr_protocol.datatypes.TrackerIdT;
import solarxr_protocol.datatypes.TrackerId;

import java.net.InetAddress;
import java.net.UnknownHostException;
Expand Down Expand Up @@ -366,7 +366,7 @@ public List<Tracker> getAllTrackers() {
return new FastList<>(trackers);
}

public Tracker getTrackerById(TrackerIdT id) {
public Tracker getTrackerById(TrackerId id) {
for (Tracker tracker : trackers) {
if (tracker.getTrackerNum() != id.getTrackerNum()) {
continue;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package dev.slimevr.autobone

enum class AutoBoneProcessType(val id: UByte) {
NONE(0u),
RECORD(1u),
SAVE(2u),
PROCESS(3u),
APPLY(3u),
;
companion object {
@JvmStatic
fun getById(id: UByte): AutoBoneProcessType? = byId[id]
}
}

private val byId = AutoBoneProcessType.values().associateBy { it.id }
Original file line number Diff line number Diff line change
@@ -1,27 +1,28 @@
package dev.slimevr.protocol;

import solarxr_protocol.data_feed.DataFeedConfigT;
import solarxr_protocol.data_feed.DataFeedConfig;

import java.util.ArrayList;
import java.util.List;


public class ConnectionContext {

private final List<DataFeedConfigT> dataFeedConfigList = new ArrayList<>();
private final List<DataFeedConfig> dataFeedConfigList = new ArrayList<>();

// I did it in a separate array because it was more convenient than making a
// parent object of the DataFeedConfigT
// idk if it should be a concern or not, i think it is fine tbh
// Futurabeast
/*
* FIXME: I did it in a separate array because it was more convenient than
* making a parent object of the DataFeedConfigT idk if it should be a
* concern or not, i think it is fine tbh Futurabeast
*/
private final List<Long> dataFeedTimers = new ArrayList<>();

private final List<Integer> subscribedTopics = new ArrayList<>();

private boolean useSerial = false;
private boolean useAutoBone = false;

public List<DataFeedConfigT> getDataFeedConfigList() {
public List<DataFeedConfig> getDataFeedConfigList() {
return dataFeedConfigList;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
import solarxr_protocol.data_feed.Bone;
import solarxr_protocol.data_feed.DataFeedUpdate;
import solarxr_protocol.data_feed.device_data.DeviceData;
import solarxr_protocol.data_feed.device_data.DeviceDataMaskT;
import solarxr_protocol.data_feed.device_data.DeviceDataMask;
import solarxr_protocol.data_feed.tracker.TrackerData;
import solarxr_protocol.data_feed.tracker.TrackerDataMaskT;
import solarxr_protocol.data_feed.tracker.TrackerDataMask;
import solarxr_protocol.data_feed.tracker.TrackerInfo;
import solarxr_protocol.datatypes.DeviceId;
import solarxr_protocol.datatypes.Ipv4Address;
Expand Down Expand Up @@ -65,9 +65,10 @@ public static int createHardwareInfo(FlatBufferBuilder fbb, Device device) {
public static int createTrackerId(FlatBufferBuilder fbb, Tracker tracker) {
TrackerId.startTrackerId(fbb);

TrackerId.addTrackerNum(fbb, tracker.getTrackerNum());
TrackerId.addTrackerNum(fbb, (byte) tracker.getTrackerNum());
if (tracker.getDevice() != null)
TrackerId.addDeviceId(fbb, DeviceId.createDeviceId(fbb, tracker.getDevice().getId()));
TrackerId
.addDeviceId(fbb, DeviceId.createDeviceId(fbb, (byte) tracker.getDevice().getId()));

return TrackerId.endTrackerId(fbb);
}
Expand Down Expand Up @@ -155,7 +156,7 @@ public static int createTrackerTemperature(FlatBufferBuilder fbb, Tracker tracke

public static int createTrackerData(
FlatBufferBuilder fbb,
TrackerDataMaskT mask,
TrackerDataMask mask,
Tracker tracker
) {
int trackerInfosOffset = DataFeedBuilder.createTrackerInfos(fbb, mask.getInfo(), tracker);
Expand All @@ -168,7 +169,7 @@ public static int createTrackerData(
if (trackerInfosOffset != 0)
TrackerData.addInfo(fbb, trackerInfosOffset);
if (mask.getStatus())
TrackerData.addStatus(fbb, tracker.getStatus().id + 1);
TrackerData.addStatus(fbb, (byte) (tracker.getStatus().getId() + 1));
if (mask.getPosition() && tracker.hasPosition())
TrackerData.addPosition(fbb, DataFeedBuilder.createTrackerPosition(fbb, tracker));
if (mask.getRotation() && tracker.hasRotation())
Expand Down Expand Up @@ -201,7 +202,7 @@ public static int createTrackerData(

public static int createTrackersData(
FlatBufferBuilder fbb,
DeviceDataMaskT mask,
DeviceDataMask mask,
Device device
) {
if (mask.getTrackerData() == null)
Expand All @@ -221,16 +222,19 @@ public static int createTrackersData(
return fbb.endVector();
}

/**
* @param id Unsigned byte!
*/
public static int createDeviceData(
FlatBufferBuilder fbb,
int id,
DeviceDataMaskT mask,
byte id,
DeviceDataMask mask,
Device device
) {
if (!mask.getDeviceData())
return 0;

if (device.getTrackers().size() <= 0)
if (device.getTrackers().isEmpty())
return 0;

Tracker firstTracker = device.getTrackers().get(0);
Expand All @@ -244,18 +248,19 @@ public static int createDeviceData(
return 0;

HardwareStatus.startHardwareStatus(fbb);
HardwareStatus.addErrorStatus(fbb, tracker.getStatus().id);
HardwareStatus.addErrorStatus(fbb, tracker.getStatus().getId());

// FIXME: A lot of casting in here, smells suspicious ඞ
if (tracker instanceof TrackerWithTPS)
HardwareStatus.addTps(fbb, (int) ((TrackerWithTPS) tracker).getTPS());
HardwareStatus.addTps(fbb, (byte) ((TrackerWithTPS) tracker).getTPS());

if (tracker instanceof TrackerWithBattery twb) {
HardwareStatus.addBatteryVoltage(fbb, twb.getBatteryVoltage());
HardwareStatus.addBatteryPctEstimate(fbb, (int) twb.getBatteryLevel());
HardwareStatus.addBatteryPctEstimate(fbb, (byte) twb.getBatteryLevel());
}

if (tracker instanceof TrackerWithWireless tww) {
HardwareStatus.addPing(fbb, tww.getPing());
HardwareStatus.addPing(fbb, (byte) tww.getPing());
HardwareStatus.addRssi(fbb, (short) tww.getSignalStrength());
}

Expand All @@ -279,18 +284,18 @@ public static int createDeviceData(

public static int createSyntheticTrackersData(
FlatBufferBuilder fbb,
TrackerDataMaskT trackerDataMaskT,
TrackerDataMask trackerDataMask,
List<Tracker> trackers
) {
if (trackerDataMaskT == null)
if (trackerDataMask == null)
return 0;

List<Integer> trackerOffsets = new ArrayList<>();

trackers
.forEach(
(tracker) -> trackerOffsets
.add(DataFeedBuilder.createTrackerData(fbb, trackerDataMaskT, tracker))
.add(DataFeedBuilder.createTrackerData(fbb, trackerDataMask, tracker))
);

DataFeedUpdate.startSyntheticTrackersVector(fbb, trackerOffsets.size());
Expand All @@ -300,17 +305,17 @@ public static int createSyntheticTrackersData(

public static int createDevicesData(
FlatBufferBuilder fbb,
DeviceDataMaskT deviceDataMaskT,
DeviceDataMask deviceDataMask,
List<Device> devices
) {
if (deviceDataMaskT == null)
if (deviceDataMask == null)
return 0;

int[] devicesDataOffsets = new int[devices.size()];
for (int i = 0; i < devices.size(); i++) {
for (byte i = 0; i < devices.size(); i++) {
Device device = devices.get(i);
devicesDataOffsets[i] = DataFeedBuilder
.createDeviceData(fbb, i, deviceDataMaskT, device);
.createDeviceData(fbb, i, deviceDataMask, device);
}

return DataFeedUpdate.createDevicesVector(fbb, devicesDataOffsets);
Expand Down Expand Up @@ -343,7 +348,7 @@ public static int createBonesData(
Bone.addRotationG(fbb, rotGOffset);
var headPosGOffset = Vec3f.createVec3f(fbb, headPosG.x, headPosG.y, headPosG.z);
Bone.addHeadPositionG(fbb, headPosGOffset);
Bone.addBodyPart(fbb, bi.boneType.bodyPart);
Bone.addBodyPart(fbb, bi.boneType.getBodyPart());
Bone.addBoneLength(fbb, length);

boneOffsets[i] = Bone.endBone(fbb);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package dev.slimevr.protocol.pubsub;

import solarxr_protocol.pub_sub.TopicIdT;
import solarxr_protocol.pub_sub.TopicId;

import java.util.Objects;

Expand All @@ -10,10 +10,10 @@
// because equals hashcode does not mean equals strings
public class HashedTopicId {

private final TopicIdT inner;
private final TopicId inner;
private final int hashcode;

public HashedTopicId(TopicIdT topicIdT) {
public HashedTopicId(TopicId topicIdT) {
this.inner = topicIdT;
this.hashcode = (inner.getAppName()
+ "."
Expand All @@ -22,7 +22,7 @@ public HashedTopicId(TopicIdT topicIdT) {
+ inner.getTopic()).hashCode();
}

public TopicIdT getInner() {
public TopicId getInner() {
return inner;
}

Expand Down
Loading