diff --git a/Main/pom.xml b/Main/pom.xml
index 0d9b904d1..2f2659eea 100644
--- a/Main/pom.xml
+++ b/Main/pom.xml
@@ -5,7 +5,7 @@
4.0.0
org.chameleon-vision.main
chameleon-vision
- 1.1.2-BETA
+ 1.1.3-BETA
diff --git a/Main/src/main/java/com/chameleonvision/Main.java b/Main/src/main/java/com/chameleonvision/Main.java
index ead5e6834..825465612 100644
--- a/Main/src/main/java/com/chameleonvision/Main.java
+++ b/Main/src/main/java/com/chameleonvision/Main.java
@@ -105,6 +105,13 @@ public class Main {
}
public static void main(String[] args) {
+ if (CurrentPlatform.equals(Platform.UNSUPPORTED)) {
+ System.err.printf("Sorry, this platform is not supported. Give these details to the developers.\n%s\n", CurrentPlatform.toString());
+ return;
+ } else {
+ System.out.printf("Starting Chameleon Vision on platform %s\n", CurrentPlatform.toString());
+ }
+
handleArgs(args);
if (!CurrentPlatform.isRoot()) {
diff --git a/Main/src/main/java/com/chameleonvision/network/NetworkManager.java b/Main/src/main/java/com/chameleonvision/network/NetworkManager.java
index 294d041e6..c8c36d5e4 100644
--- a/Main/src/main/java/com/chameleonvision/network/NetworkManager.java
+++ b/Main/src/main/java/com/chameleonvision/network/NetworkManager.java
@@ -33,6 +33,10 @@ public class NetworkManager {
return;
}
+ if (networking == null) {
+ throw new RuntimeException("Failed to detect platform!");
+ }
+
List interfaces = new ArrayList<>();
List goodInterfaces = new ArrayList<>();
diff --git a/Main/src/main/java/com/chameleonvision/settings/Platform.java b/Main/src/main/java/com/chameleonvision/settings/Platform.java
index b4a4daf55..a018ffa73 100644
--- a/Main/src/main/java/com/chameleonvision/settings/Platform.java
+++ b/Main/src/main/java/com/chameleonvision/settings/Platform.java
@@ -2,13 +2,15 @@ package com.chameleonvision.settings;
import com.chameleonvision.util.ShellExec;
+import java.io.BufferedReader;
import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
public enum Platform {
WINDOWS_64("Windows x64"),
LINUX_64("Linux x64"),
LINUX_RASPBIAN("Linux Raspbian"),
- LINUX_TEGRA("Linux For Tegra"),
LINUX_ARM64("Linux ARM64"),
MACOS_64("Mac OS x64"),
UNSUPPORTED("Unsupported Platform");
@@ -19,12 +21,15 @@ public enum Platform {
this.value = value;
}
+ private static final String OS_NAME = System.getProperty("os.name");
+ private static final String OS_ARCH = System.getProperty("os.arch");
+
public boolean isWindows() {
return this == WINDOWS_64;
}
public boolean isLinux() {
- return this == LINUX_64 || this == LINUX_RASPBIAN || this == LINUX_ARM64 || this == LINUX_TEGRA;
+ return this == LINUX_64 || this == LINUX_RASPBIAN || this == LINUX_ARM64;
}
public boolean isMac() {
@@ -54,28 +59,39 @@ public enum Platform {
return false;
}
+ private static boolean isRaspbian() {
+ try (BufferedReader reader = Files.newBufferedReader(Paths.get("/etc/os-release"))) {
+ String value = reader.readLine();
+ return value.contains("Raspbian");
+ } catch (IOException ex) {
+ return false;
+ }
+ }
+
public static Platform getCurrentPlatform() {
- var osName = System.getProperty("os.name");
- var osArch = System.getProperty("os.arch");
-
- if (osName.contains("Windows")) {
- if (osArch.equals("amd64")) return Platform.WINDOWS_64;
- return Platform.UNSUPPORTED;
+ if (OS_NAME.contains("Windows")) {
+ if (OS_ARCH.equals("amd64")) return Platform.WINDOWS_64;
}
- if (osName.contains("Linux")) {
- if (osName.contains("Tegra")) return Platform.LINUX_TEGRA;
- if (osArch.equals("amd64")) return Platform.LINUX_64;
- if (osArch.contains("rasp")) return Platform.LINUX_RASPBIAN;
- if (osArch.contains("aarch")) return Platform.LINUX_ARM64;
- return Platform.UNSUPPORTED;
+ if (OS_NAME.contains("Linux")) {
+ if (OS_ARCH.equals("amd64")) return Platform.LINUX_64;
+ if (isRaspbian()) return Platform.LINUX_RASPBIAN;
+ if (OS_ARCH.contains("aarch")) return Platform.LINUX_ARM64;
}
- if (osName.contains("Mac")) {
- if (osArch.equals("amd64")) return Platform.MACOS_64;
- return Platform.UNSUPPORTED;
+ if (OS_NAME.contains("Mac")) {
+ if (OS_ARCH.equals("amd64")) return Platform.MACOS_64;
}
+ System.out.printf("Unknown Platform! OS: %s, Architecture: %s", OS_NAME, OS_ARCH);
return Platform.UNSUPPORTED;
}
+
+ public String toString() {
+ if (this.equals(UNSUPPORTED)) {
+ return String.format("Unknown Platform. OS: %s, Architecture: %s", OS_NAME, OS_ARCH);
+ } else {
+ return this.value;
+ }
+ }
}