diff --git a/.idea/misc.xml b/.idea/misc.xml
index f93a571a..dc33ef20 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -9,7 +9,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/Main__Linux_.xml b/.idea/runConfigurations/Main__Linux_.xml
index fc9e596b..184b3c68 100644
--- a/.idea/runConfigurations/Main__Linux_.xml
+++ b/.idea/runConfigurations/Main__Linux_.xml
@@ -1,5 +1,7 @@
+
+
diff --git a/.idea/runConfigurations/Main__macOS_.xml b/.idea/runConfigurations/Main__macOS_.xml
index 3ec0e5db..48228a17 100644
--- a/.idea/runConfigurations/Main__macOS_.xml
+++ b/.idea/runConfigurations/Main__macOS_.xml
@@ -1,5 +1,7 @@
+
+
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index d64cd491..a4b76b95 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index a80b22ce..9355b415 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index 1aa94a42..f5feea6d 100755
--- a/gradlew
+++ b/gradlew
@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+# SPDX-License-Identifier: Apache-2.0
+#
##############################################################################
#
@@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -84,7 +86,8 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
-APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
+' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
diff --git a/gradlew.bat b/gradlew.bat
index 25da30db..9d21a218 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
diff --git a/src/main/java/airsquared/blobsaver/app/Devices.java b/src/main/java/airsquared/blobsaver/app/Devices.java
index c9073f8a..98196d56 100644
--- a/src/main/java/airsquared/blobsaver/app/Devices.java
+++ b/src/main/java/airsquared/blobsaver/app/Devices.java
@@ -35,7 +35,7 @@ public final class Devices {
private static final List iPhones = new ArrayList<>(), iPads = new ArrayList<>();
- private static final ObservableList iPhoneList, iPadList, iBridgeList = FXCollections.observableArrayList();
+ private static final ObservableList iPhoneList, iPadList, iBridgeList = FXCollections.observableArrayList(), macsList = FXCollections.observableArrayList();
private static final ObservableList iPodList = unmodifiableArrayList("iPod Touch 3", "iPod Touch 4",
"iPod Touch 5", "iPod Touch 6", "iPod Touch 7 (iPod9,1)");
@@ -43,7 +43,7 @@ public final class Devices {
private static final ObservableList AppleTVList = unmodifiableArrayList("Apple TV 2G", "Apple TV 3",
"Apple TV 3 (2013)", "Apple TV 4 (2015)", "Apple TV 4K", "Apple TV 4K (2021) (AppleTV11,1)", "Apple TV 4K (2022) (AppleTV14,1)");
- private static final ObservableList deviceTypes = unmodifiableArrayList("iPhone", "iPod", "iPad", "AppleTV", "T2 Mac");
+ private static final ObservableList deviceTypes = unmodifiableArrayList("iPhone", "iPod", "iPad", "AppleTV", "T2 Mac", "Apple Silicon Mac");
private static final Map boardConfigs = (Map) new Properties();
@@ -110,7 +110,7 @@ public static String modelToIdentifier(String deviceModel) {
}
/**
- * @return either "iPhone", "iPod", "iPad", "AppleTV", or "T2 Mac".
+ * @return either "iPhone", "iPod", "iPad", "AppleTV", "T2 Mac" or "Mac".
*/
public static String getDeviceType(String identifier) {
if (identifier.startsWith("iPhone")) {
@@ -123,6 +123,8 @@ public static String getDeviceType(String identifier) {
return "AppleTV";
} else if (identifier.startsWith("iBridge")) {
return "T2 Mac";
+ } else if (identifier.startsWith("Mac")) {
+ return "Mac";
}
throw new IllegalArgumentException("Not found: " + identifier);
}
@@ -134,6 +136,7 @@ public static ObservableList getModelsForType(String deviceType) {
case "iPad" -> iPadList;
case "AppleTV" -> AppleTVList;
case "T2 Mac" -> iBridgeList;
+ case "Apple Silicon Mac" -> macsList;
default -> FXCollections.emptyObservableList();
};
}
@@ -144,6 +147,7 @@ public static String getOSNameForType(String deviceType) {
case "iPad" -> "iOS/iPadOS";
case "AppleTV" -> "tvOS";
case "T2 Mac" -> "bridgeOS";
+ case "Mac" -> "MacOS";
default -> null;
};
}
@@ -196,5 +200,6 @@ public Object put(Object key, Object value) {
loader.load("devicemodels/iPads.properties", iPads::add);
loader.load("devicemodels/iBridges.properties", iBridgeList::add);
loader.load("devicemodels/others.properties", _ -> {});
+ loader.load("devicemodels/Macs.properties", macsList::add);
}
}
diff --git a/src/main/resources/airsquared/blobsaver/app/boardconfigs.properties b/src/main/resources/airsquared/blobsaver/app/boardconfigs.properties
index 0c91208f..b8fc6222 100644
--- a/src/main/resources/airsquared/blobsaver/app/boardconfigs.properties
+++ b/src/main/resources/airsquared/blobsaver/app/boardconfigs.properties
@@ -165,3 +165,4 @@ iBridge2,19=j185ap
iBridge2,20=j185fap
iBridge2,21=j223ap
iBridge2,22=j215ap
+Mac16,10=j773gap
\ No newline at end of file
diff --git a/src/main/resources/airsquared/blobsaver/app/devicemodels/Macs.properties b/src/main/resources/airsquared/blobsaver/app/devicemodels/Macs.properties
new file mode 100644
index 00000000..347a0f14
--- /dev/null
+++ b/src/main/resources/airsquared/blobsaver/app/devicemodels/Macs.properties
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2024 airsquared
+#
+# This file is part of blobsaver.
+#
+# blobsaver is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, version 3 of the License.
+#
+# blobsaver is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with blobsaver. If not, see .
+#
+
+Mac\ Mini\ M4=Mac16,10
\ No newline at end of file