App-Namen im iOS-Projekt auf VanControl vereinheitlichen
CamperMonitor (Haupt-Repo) und VanAligneiOS (aus dem gemergten solar-integration-Branch) liefen unter zwei verschiedenen internen Namen, obwohl die App nach aussen längst einheitlich "VanControl Pro" heisst. Jetzt durchgängig VanControl: - Ordner: CamperMonitor/, CamperMonitorWatch/, CamperMonitorComplication/, VanAligneiOSWidget/ → VanControl/, VanControlWatch/, VanControlComplication/, VanControlWidget/ - Xcode-Projekt: CamperMonitor.xcodeproj → VanControl.xcodeproj, alle Targets/Schemes/Produktnamen entsprechend umbenannt - Bundle-Identifier auf Wunsch mitgeändert: de.s0.fototeddy.VanControl* (App noch nicht veröffentlicht); dabei auch die WKCompanionAppBundleIdentifier-Werte korrigiert, die noch das alte de.fritob-Präfix statt des tatsächlichen de.s0.fototeddy-Präfixes trugen - Swift-Dateien/Typen: CamperMonitorApp → VanControlApp, VanAligneiOSWidget* → VanControlWidget* - Config/*-Info.plist umbenannt, README.md/Tools/README.md/run-tests.sh auf die neuen Pfade angepasst Bewusst unverändert: firmware/vanalign und alle Bezüge auf "VanAlign" als Namen der Neigungsmesser-Hardware (eigenständiges Produkt, kein App-Name) sowie der komplette Android/-Ordner. Build (App, Watch, Debug) und Protokoll-Testlauf grün. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@@ -24,18 +24,18 @@ Die Firmware des Neigungsmessers liegt mit im Projekt, siehe
|
||||
## Bauen und installieren
|
||||
|
||||
```bash
|
||||
open /Users/fritob/GIT/Camper-Management/CamperMonitor.xcodeproj
|
||||
open /Users/fritob/GIT/Camper-Management/VanControl.xcodeproj
|
||||
```
|
||||
|
||||
Dann in Xcode:
|
||||
|
||||
1. Target `CamperMonitor` → **Signing & Capabilities** → dein Apple-Team auswählen.
|
||||
Die Bundle-ID `de.fritob.CamperMonitor` ggf. anpassen, falls sie schon vergeben ist.
|
||||
Dasselbe beim Target `CamperMonitorWatch`; dessen Bundle-ID muss die des
|
||||
1. Target `VanControl` → **Signing & Capabilities** → dein Apple-Team auswählen.
|
||||
Die Bundle-ID `de.fritob.VanControl` ggf. anpassen, falls sie schon vergeben ist.
|
||||
Dasselbe beim Target `VanControlWatch`; dessen Bundle-ID muss die des
|
||||
iPhones mit angehängtem `.watchkitapp` bleiben.
|
||||
2. iPhone per Kabel anschließen, oben als Ziel wählen, ⌘R.
|
||||
|
||||
Das Schema `CamperMonitor` baut die Watch-App mit und bettet sie ein. Dafür
|
||||
Das Schema `VanControl` baut die Watch-App mit und bettet sie ein. Dafür
|
||||
muss die watchOS-Plattform in Xcode installiert sein – sonst bricht schon das
|
||||
Übersetzen des Symbolkatalogs ab:
|
||||
|
||||
@@ -376,7 +376,7 @@ Run → Arguments* die Umgebungsvariable `CAMPER_DEMO` auf `1` setzen. Er greift
|
||||
nur in Debug-Builds.
|
||||
|
||||
Die Watch-App kennt denselben Schalter und braucht dann kein iPhone: Im Schema
|
||||
`CamperMonitorWatch` dieselbe Variable setzen. Die Neigung wandert dort
|
||||
`VanControlWatch` dieselbe Variable setzen. Die Neigung wandert dort
|
||||
langsam hin und her, sonst hätte der Ausrichtungs-Assistent nichts zu zeigen.
|
||||
|
||||
## Protokolle prüfen
|
||||
@@ -413,7 +413,7 @@ Shared/ In iPhone- und Watch-App übersetzt
|
||||
└── WatchLink/
|
||||
└── WatchLink.swift Datensatz und Befehle zwischen iPhone und Uhr
|
||||
|
||||
CamperMonitor/
|
||||
VanControl/
|
||||
├── Bluetooth/
|
||||
│ ├── BluetoothManager.swift Zentraler Scan, Verbindungen, Verlauf
|
||||
│ ├── VictronAdvertisement.swift Advertisement entschlüsseln und auswerten
|
||||
@@ -443,7 +443,7 @@ CamperMonitor/
|
||||
├── SensorSetupView.swift Assistent für die Einbaulage
|
||||
└── AddDeviceView.swift Scannen und Einrichten
|
||||
|
||||
CamperMonitorWatch/ watchOS-App
|
||||
VanControlWatch/ watchOS-App
|
||||
├── CamperWatchApp.swift Einstieg, meldet dem iPhone das Hinschauen
|
||||
├── PhoneLink.swift Gegenstelle zum iPhone
|
||||
├── WatchLevelRadio.swift Eigene Bluetooth-Verbindung zum Neigungsmesser
|
||||
@@ -458,7 +458,7 @@ CamperMonitorWatch/ watchOS-App
|
||||
└── WatchFridgeControls.swift Kühlbox stellen
|
||||
|
||||
Config/
|
||||
└── CamperMonitor-Info.plist Nur der Hintergrundbetrieb für die Uhr
|
||||
└── VanControl-Info.plist Nur der Hintergrundbetrieb für die Uhr
|
||||
```
|
||||
|
||||
## Bekannte Grenzen
|
||||
|
||||
@@ -13,7 +13,7 @@ Anschließend skaliert es auf 1024×1024 ohne Alphakanal.
|
||||
|
||||
```bash
|
||||
swiftc -O -o /tmp/make-app-icon Tools/make-app-icon.swift
|
||||
/tmp/make-app-icon logo.png CamperMonitor/Assets.xcassets/AppIcon.appiconset/AppIcon-1024.png
|
||||
/tmp/make-app-icon logo.png VanControl/Assets.xcassets/AppIcon.appiconset/AppIcon-1024.png
|
||||
```
|
||||
|
||||
Nur nötig, wenn `logo.png` sich ändert – das erzeugte Icon liegt im Repo.
|
||||
@@ -32,7 +32,7 @@ gefüllte Form, in der die Details erhalten bleiben.
|
||||
```bash
|
||||
swiftc -O -o /tmp/make-vehicle-art Tools/make-vehicle-art.swift
|
||||
sips --resampleHeight 600 heckansicht.png --out /tmp/rear.png
|
||||
/tmp/make-vehicle-art /tmp/rear.png CamperMonitor/Assets.xcassets/VansterRear.imageset/VansterRear.png
|
||||
/tmp/make-vehicle-art /tmp/rear.png VanControl/Assets.xcassets/VansterRear.imageset/VansterRear.png
|
||||
```
|
||||
|
||||
Jedes Fahrzeug-Grafikset (siehe `VehicleGraphicStyle`) hat sein eigenes
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
//
|
||||
// VanAligneiOSWidgetBundle.swift
|
||||
// VanAligneiOSWidget
|
||||
//
|
||||
// Created by Christopher Helberg on 02.09.26.
|
||||
//
|
||||
|
||||
import WidgetKit
|
||||
import SwiftUI
|
||||
|
||||
@main
|
||||
struct VanAligneiOSWidgetBundle: WidgetBundle {
|
||||
var body: some Widget {
|
||||
VanAligneiOSWidget()
|
||||
VanAligneiOSWidgetControl()
|
||||
VanAligneiOSWidgetLiveActivity()
|
||||
}
|
||||
}
|
||||
@@ -7,13 +7,13 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
AA0000000000000000000027 /* CamperMonitorWatch.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000016 /* CamperMonitorWatch.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
AA0000000000000000000042 /* CamperMonitorComplication.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000032 /* CamperMonitorComplication.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
AA0000000000000000000027 /* VanControlWatch.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000016 /* VanControlWatch.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
AA0000000000000000000042 /* VanControlComplication.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000032 /* VanControlComplication.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
AA0000000000000000000046 /* ActivityKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000053 /* ActivityKit.framework */; };
|
||||
AA0000000000000000000047 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000052 /* SwiftUI.framework */; };
|
||||
AA0000000000000000000048 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000051 /* WidgetKit.framework */; };
|
||||
AA0000000000000000000049 /* ActivityKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000053 /* ActivityKit.framework */; };
|
||||
AA0000000000000000000050 /* VanAligneiOSWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000054 /* VanAligneiOSWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
AA0000000000000000000050 /* VanControlWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000054 /* VanControlWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@@ -22,21 +22,21 @@
|
||||
containerPortal = AA0000000000000000000009 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = AA0000000000000000000022;
|
||||
remoteInfo = CamperMonitorWatch;
|
||||
remoteInfo = VanControlWatch;
|
||||
};
|
||||
AA0000000000000000000043 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = AA0000000000000000000009 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = AA0000000000000000000037;
|
||||
remoteInfo = CamperMonitorComplication;
|
||||
remoteInfo = VanControlComplication;
|
||||
};
|
||||
AA0000000000000000000063 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = AA0000000000000000000009 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = AA0000000000000000000062;
|
||||
remoteInfo = VanAligneiOSWidgetExtension;
|
||||
remoteInfo = VanControlWidgetExtension;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
dstPath = "$(CONTENTS_FOLDER_PATH)/Watch";
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
AA0000000000000000000027 /* CamperMonitorWatch.app in Embed Watch Content */,
|
||||
AA0000000000000000000027 /* VanControlWatch.app in Embed Watch Content */,
|
||||
);
|
||||
name = "Embed Watch Content";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -58,7 +58,7 @@
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 13;
|
||||
files = (
|
||||
AA0000000000000000000042 /* CamperMonitorComplication.appex in Embed Foundation Extensions */,
|
||||
AA0000000000000000000042 /* VanControlComplication.appex in Embed Foundation Extensions */,
|
||||
);
|
||||
name = "Embed Foundation Extensions";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -69,7 +69,7 @@
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 13;
|
||||
files = (
|
||||
AA0000000000000000000050 /* VanAligneiOSWidgetExtension.appex in Embed Foundation Extensions */,
|
||||
AA0000000000000000000050 /* VanControlWidgetExtension.appex in Embed Foundation Extensions */,
|
||||
);
|
||||
name = "Embed Foundation Extensions";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -77,36 +77,36 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
AA0000000000000000000001 /* CamperMonitor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CamperMonitor.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AA0000000000000000000016 /* CamperMonitorWatch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CamperMonitorWatch.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AA0000000000000000000030 /* CamperMonitor-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CamperMonitor-Info.plist"; sourceTree = "<group>"; };
|
||||
AA0000000000000000000032 /* CamperMonitorComplication.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = CamperMonitorComplication.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AA0000000000000000000045 /* CamperMonitorComplication-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CamperMonitorComplication-Info.plist"; sourceTree = "<group>"; };
|
||||
AA0000000000000000000001 /* VanControl.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = VanControl.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AA0000000000000000000016 /* VanControlWatch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = VanControlWatch.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AA0000000000000000000030 /* VanControl-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "VanControl-Info.plist"; sourceTree = "<group>"; };
|
||||
AA0000000000000000000032 /* VanControlComplication.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = VanControlComplication.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AA0000000000000000000045 /* VanControlComplication-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "VanControlComplication-Info.plist"; sourceTree = "<group>"; };
|
||||
AA0000000000000000000051 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
|
||||
AA0000000000000000000052 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
|
||||
AA0000000000000000000053 /* ActivityKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ActivityKit.framework; path = System/Library/Frameworks/ActivityKit.framework; sourceTree = SDKROOT; };
|
||||
AA0000000000000000000054 /* VanAligneiOSWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = VanAligneiOSWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AA0000000000000000000054 /* VanControlWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = VanControlWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
|
||||
AA0000000000000000000055 /* Exceptions for "VanAligneiOSWidget" folder in "VanAligneiOSWidgetExtension" target */ = {
|
||||
AA0000000000000000000055 /* Exceptions for "VanControlWidget" folder in "VanControlWidgetExtension" target */ = {
|
||||
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
|
||||
membershipExceptions = (
|
||||
Info.plist,
|
||||
);
|
||||
target = AA0000000000000000000062 /* VanAligneiOSWidgetExtension */;
|
||||
target = AA0000000000000000000062 /* VanControlWidgetExtension */;
|
||||
};
|
||||
/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
|
||||
|
||||
/* Begin PBXFileSystemSynchronizedRootGroup section */
|
||||
AA0000000000000000000002 /* CamperMonitor */ = {
|
||||
AA0000000000000000000002 /* VanControl */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
path = CamperMonitor;
|
||||
path = VanControl;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AA0000000000000000000017 /* CamperMonitorWatch */ = {
|
||||
AA0000000000000000000017 /* VanControlWatch */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
path = CamperMonitorWatch;
|
||||
path = VanControlWatch;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AA0000000000000000000018 /* Shared */ = {
|
||||
@@ -114,17 +114,17 @@
|
||||
path = Shared;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AA0000000000000000000033 /* CamperMonitorComplication */ = {
|
||||
AA0000000000000000000033 /* VanControlComplication */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
path = CamperMonitorComplication;
|
||||
path = VanControlComplication;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AA0000000000000000000056 /* VanAligneiOSWidget */ = {
|
||||
AA0000000000000000000056 /* VanControlWidget */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
exceptions = (
|
||||
AA0000000000000000000055 /* Exceptions for "VanAligneiOSWidget" folder in "VanAligneiOSWidgetExtension" target */,
|
||||
AA0000000000000000000055 /* Exceptions for "VanControlWidget" folder in "VanControlWidgetExtension" target */,
|
||||
);
|
||||
path = VanAligneiOSWidget;
|
||||
path = VanControlWidget;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AA0000000000000000000057 /* SharedActivity */ = {
|
||||
@@ -173,13 +173,13 @@
|
||||
AA0000000000000000000004 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AA0000000000000000000002 /* CamperMonitor */,
|
||||
AA0000000000000000000017 /* CamperMonitorWatch */,
|
||||
AA0000000000000000000033 /* CamperMonitorComplication */,
|
||||
AA0000000000000000000002 /* VanControl */,
|
||||
AA0000000000000000000017 /* VanControlWatch */,
|
||||
AA0000000000000000000033 /* VanControlComplication */,
|
||||
AA0000000000000000000018 /* Shared */,
|
||||
AA0000000000000000000057 /* SharedActivity */,
|
||||
AA0000000000000000000031 /* Config */,
|
||||
AA0000000000000000000056 /* VanAligneiOSWidget */,
|
||||
AA0000000000000000000056 /* VanControlWidget */,
|
||||
AA0000000000000000000059 /* Frameworks */,
|
||||
AA0000000000000000000005 /* Products */,
|
||||
);
|
||||
@@ -188,14 +188,23 @@
|
||||
AA0000000000000000000005 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AA0000000000000000000001 /* CamperMonitor.app */,
|
||||
AA0000000000000000000016 /* CamperMonitorWatch.app */,
|
||||
AA0000000000000000000032 /* CamperMonitorComplication.appex */,
|
||||
AA0000000000000000000054 /* VanAligneiOSWidgetExtension.appex */,
|
||||
AA0000000000000000000001 /* VanControl.app */,
|
||||
AA0000000000000000000016 /* VanControlWatch.app */,
|
||||
AA0000000000000000000032 /* VanControlComplication.appex */,
|
||||
AA0000000000000000000054 /* VanControlWidgetExtension.appex */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AA0000000000000000000031 /* Config */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AA0000000000000000000030 /* VanControl-Info.plist */,
|
||||
AA0000000000000000000045 /* VanControlComplication-Info.plist */,
|
||||
);
|
||||
path = Config;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AA0000000000000000000059 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -206,21 +215,12 @@
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
AA0000000000000000000031 /* Config */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AA0000000000000000000030 /* CamperMonitor-Info.plist */,
|
||||
AA0000000000000000000045 /* CamperMonitorComplication-Info.plist */,
|
||||
);
|
||||
path = Config;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
AA0000000000000000000006 /* CamperMonitor */ = {
|
||||
AA0000000000000000000006 /* VanControl */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = AA0000000000000000000011 /* Build configuration list for PBXNativeTarget "CamperMonitor" */;
|
||||
buildConfigurationList = AA0000000000000000000011 /* Build configuration list for PBXNativeTarget "VanControl" */;
|
||||
buildPhases = (
|
||||
AA0000000000000000000007 /* Sources */,
|
||||
AA0000000000000000000003 /* Frameworks */,
|
||||
@@ -235,18 +235,18 @@
|
||||
AA0000000000000000000064 /* PBXTargetDependency */,
|
||||
);
|
||||
fileSystemSynchronizedGroups = (
|
||||
AA0000000000000000000002 /* CamperMonitor */,
|
||||
AA0000000000000000000002 /* VanControl */,
|
||||
AA0000000000000000000018 /* Shared */,
|
||||
AA0000000000000000000057 /* SharedActivity */,
|
||||
);
|
||||
name = CamperMonitor;
|
||||
productName = CamperMonitor;
|
||||
productReference = AA0000000000000000000001 /* CamperMonitor.app */;
|
||||
name = VanControl;
|
||||
productName = VanControl;
|
||||
productReference = AA0000000000000000000001 /* VanControl.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
AA0000000000000000000022 /* CamperMonitorWatch */ = {
|
||||
AA0000000000000000000022 /* VanControlWatch */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = AA0000000000000000000025 /* Build configuration list for PBXNativeTarget "CamperMonitorWatch" */;
|
||||
buildConfigurationList = AA0000000000000000000025 /* Build configuration list for PBXNativeTarget "VanControlWatch" */;
|
||||
buildPhases = (
|
||||
AA0000000000000000000019 /* Sources */,
|
||||
AA0000000000000000000020 /* Frameworks */,
|
||||
@@ -259,17 +259,17 @@
|
||||
AA0000000000000000000044 /* PBXTargetDependency */,
|
||||
);
|
||||
fileSystemSynchronizedGroups = (
|
||||
AA0000000000000000000017 /* CamperMonitorWatch */,
|
||||
AA0000000000000000000017 /* VanControlWatch */,
|
||||
AA0000000000000000000018 /* Shared */,
|
||||
);
|
||||
name = CamperMonitorWatch;
|
||||
productName = CamperMonitorWatch;
|
||||
productReference = AA0000000000000000000016 /* CamperMonitorWatch.app */;
|
||||
name = VanControlWatch;
|
||||
productName = VanControlWatch;
|
||||
productReference = AA0000000000000000000016 /* VanControlWatch.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
AA0000000000000000000037 /* CamperMonitorComplication */ = {
|
||||
AA0000000000000000000037 /* VanControlComplication */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = AA0000000000000000000040 /* Build configuration list for PBXNativeTarget "CamperMonitorComplication" */;
|
||||
buildConfigurationList = AA0000000000000000000040 /* Build configuration list for PBXNativeTarget "VanControlComplication" */;
|
||||
buildPhases = (
|
||||
AA0000000000000000000034 /* Sources */,
|
||||
AA0000000000000000000035 /* Frameworks */,
|
||||
@@ -281,16 +281,16 @@
|
||||
);
|
||||
fileSystemSynchronizedGroups = (
|
||||
AA0000000000000000000018 /* Shared */,
|
||||
AA0000000000000000000033 /* CamperMonitorComplication */,
|
||||
AA0000000000000000000033 /* VanControlComplication */,
|
||||
);
|
||||
name = CamperMonitorComplication;
|
||||
productName = CamperMonitorComplication;
|
||||
productReference = AA0000000000000000000032 /* CamperMonitorComplication.appex */;
|
||||
name = VanControlComplication;
|
||||
productName = VanControlComplication;
|
||||
productReference = AA0000000000000000000032 /* VanControlComplication.appex */;
|
||||
productType = "com.apple.product-type.app-extension";
|
||||
};
|
||||
AA0000000000000000000062 /* VanAligneiOSWidgetExtension */ = {
|
||||
AA0000000000000000000062 /* VanControlWidgetExtension */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = AA0000000000000000000068 /* Build configuration list for PBXNativeTarget "VanAligneiOSWidgetExtension" */;
|
||||
buildConfigurationList = AA0000000000000000000068 /* Build configuration list for PBXNativeTarget "VanControlWidgetExtension" */;
|
||||
buildPhases = (
|
||||
AA0000000000000000000060 /* Sources */,
|
||||
AA0000000000000000000058 /* Frameworks */,
|
||||
@@ -301,12 +301,12 @@
|
||||
dependencies = (
|
||||
);
|
||||
fileSystemSynchronizedGroups = (
|
||||
AA0000000000000000000056 /* VanAligneiOSWidget */,
|
||||
AA0000000000000000000056 /* VanControlWidget */,
|
||||
AA0000000000000000000057 /* SharedActivity */,
|
||||
);
|
||||
name = VanAligneiOSWidgetExtension;
|
||||
productName = VanAligneiOSWidgetExtension;
|
||||
productReference = AA0000000000000000000054 /* VanAligneiOSWidgetExtension.appex */;
|
||||
name = VanControlWidgetExtension;
|
||||
productName = VanControlWidgetExtension;
|
||||
productReference = AA0000000000000000000054 /* VanControlWidgetExtension.appex */;
|
||||
productType = "com.apple.product-type.app-extension";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
@@ -333,7 +333,7 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = AA0000000000000000000010 /* Build configuration list for PBXProject "CamperMonitor" */;
|
||||
buildConfigurationList = AA0000000000000000000010 /* Build configuration list for PBXProject "VanControl" */;
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
@@ -348,10 +348,10 @@
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
AA0000000000000000000006 /* CamperMonitor */,
|
||||
AA0000000000000000000022 /* CamperMonitorWatch */,
|
||||
AA0000000000000000000037 /* CamperMonitorComplication */,
|
||||
AA0000000000000000000062 /* VanAligneiOSWidgetExtension */,
|
||||
AA0000000000000000000006 /* VanControl */,
|
||||
AA0000000000000000000022 /* VanControlWatch */,
|
||||
AA0000000000000000000037 /* VanControlComplication */,
|
||||
AA0000000000000000000062 /* VanControlWidgetExtension */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
@@ -422,17 +422,17 @@
|
||||
AA0000000000000000000029 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
platformFilter = ios;
|
||||
target = AA0000000000000000000022 /* CamperMonitorWatch */;
|
||||
target = AA0000000000000000000022 /* VanControlWatch */;
|
||||
targetProxy = AA0000000000000000000028 /* PBXContainerItemProxy */;
|
||||
};
|
||||
AA0000000000000000000044 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = AA0000000000000000000037 /* CamperMonitorComplication */;
|
||||
target = AA0000000000000000000037 /* VanControlComplication */;
|
||||
targetProxy = AA0000000000000000000043 /* PBXContainerItemProxy */;
|
||||
};
|
||||
AA0000000000000000000064 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = AA0000000000000000000062 /* VanAligneiOSWidgetExtension */;
|
||||
target = AA0000000000000000000062 /* VanControlWidgetExtension */;
|
||||
targetProxy = AA0000000000000000000063 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
@@ -501,10 +501,10 @@
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
DEVELOPMENT_TEAM = 6AP73NYV5W;
|
||||
DEVELOPMENT_TEAM = V5C6Q86XJR;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = "Config/CamperMonitor-Info.plist";
|
||||
INFOPLIST_FILE = "Config/VanControl-Info.plist";
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "VanControl Pro";
|
||||
INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "Zum Auslesen von Victron-Geraeten und dem Daly BMS per Bluetooth.";
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
@@ -516,7 +516,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.fritob.CamperMonitor;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.s0.fototeddy.VanControl;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
@@ -532,10 +532,10 @@
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
DEVELOPMENT_TEAM = 6AP73NYV5W;
|
||||
DEVELOPMENT_TEAM = V5C6Q86XJR;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = "Config/CamperMonitor-Info.plist";
|
||||
INFOPLIST_FILE = "Config/VanControl-Info.plist";
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "VanControl Pro";
|
||||
INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "Zum Auslesen von Victron-Geraeten und dem Daly BMS per Bluetooth.";
|
||||
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
||||
@@ -547,7 +547,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.fritob.CamperMonitor;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.s0.fototeddy.VanControl;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
@@ -562,18 +562,18 @@
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = 6AP73NYV5W;
|
||||
DEVELOPMENT_TEAM = V5C6Q86XJR;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "VanControl Pro";
|
||||
INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "Zum Auslesen des Neigungsmessers direkt an der Uhr, ohne Umweg ueber das iPhone.";
|
||||
INFOPLIST_KEY_WKCompanionAppBundleIdentifier = de.fritob.CamperMonitor;
|
||||
INFOPLIST_KEY_WKCompanionAppBundleIdentifier = de.s0.fototeddy.VanControl;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.fritob.CamperMonitor.watchkitapp;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.s0.fototeddy.VanControl.watchkitapp;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = watchos;
|
||||
SKIP_INSTALL = YES;
|
||||
@@ -594,18 +594,18 @@
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = 6AP73NYV5W;
|
||||
DEVELOPMENT_TEAM = V5C6Q86XJR;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "VanControl Pro";
|
||||
INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "Zum Auslesen des Neigungsmessers direkt an der Uhr, ohne Umweg ueber das iPhone.";
|
||||
INFOPLIST_KEY_WKCompanionAppBundleIdentifier = de.fritob.CamperMonitor;
|
||||
INFOPLIST_KEY_WKCompanionAppBundleIdentifier = de.s0.fototeddy.VanControl;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.fritob.CamperMonitor.watchkitapp;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.s0.fototeddy.VanControl.watchkitapp;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = watchos;
|
||||
SKIP_INSTALL = YES;
|
||||
@@ -624,9 +624,9 @@
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = 6AP73NYV5W;
|
||||
DEVELOPMENT_TEAM = V5C6Q86XJR;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = "Config/CamperMonitorComplication-Info.plist";
|
||||
INFOPLIST_FILE = "Config/VanControlComplication-Info.plist";
|
||||
INFOPLIST_KEY_CFBundleDisplayName = Nivellierung;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -634,7 +634,7 @@
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.fritob.CamperMonitor.watchkitapp.levelwidget;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.s0.fototeddy.VanControl.watchkitapp.levelwidget;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = watchos;
|
||||
SKIP_INSTALL = YES;
|
||||
@@ -653,9 +653,9 @@
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = 6AP73NYV5W;
|
||||
DEVELOPMENT_TEAM = V5C6Q86XJR;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = "Config/CamperMonitorComplication-Info.plist";
|
||||
INFOPLIST_FILE = "Config/VanControlComplication-Info.plist";
|
||||
INFOPLIST_KEY_CFBundleDisplayName = Nivellierung;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -663,7 +663,7 @@
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.fritob.CamperMonitor.watchkitapp.levelwidget;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.s0.fototeddy.VanControl.watchkitapp.levelwidget;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SDKROOT = watchos;
|
||||
SKIP_INSTALL = YES;
|
||||
@@ -684,10 +684,10 @@
|
||||
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = 6AP73NYV5W;
|
||||
DEVELOPMENT_TEAM = V5C6Q86XJR;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = VanAligneiOSWidget/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = VanAligneiOSWidget;
|
||||
INFOPLIST_FILE = VanControlWidget/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "VanControl Widget";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -695,7 +695,7 @@
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.fritob.CamperMonitor.VanAligneiOSWidget;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.s0.fototeddy.VanControl.VanControlWidget;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
|
||||
@@ -713,10 +713,10 @@
|
||||
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = 6AP73NYV5W;
|
||||
DEVELOPMENT_TEAM = V5C6Q86XJR;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = VanAligneiOSWidget/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = VanAligneiOSWidget;
|
||||
INFOPLIST_FILE = VanControlWidget/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "VanControl Widget";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
@@ -724,7 +724,7 @@
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.fritob.CamperMonitor.VanAligneiOSWidget;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = de.s0.fototeddy.VanControl.VanControlWidget;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
@@ -738,7 +738,7 @@
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
AA0000000000000000000010 /* Build configuration list for PBXProject "CamperMonitor" */ = {
|
||||
AA0000000000000000000010 /* Build configuration list for PBXProject "VanControl" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AA0000000000000000000012 /* Debug */,
|
||||
@@ -747,7 +747,7 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
AA0000000000000000000011 /* Build configuration list for PBXNativeTarget "CamperMonitor" */ = {
|
||||
AA0000000000000000000011 /* Build configuration list for PBXNativeTarget "VanControl" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AA0000000000000000000014 /* Debug */,
|
||||
@@ -756,7 +756,7 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
AA0000000000000000000025 /* Build configuration list for PBXNativeTarget "CamperMonitorWatch" */ = {
|
||||
AA0000000000000000000025 /* Build configuration list for PBXNativeTarget "VanControlWatch" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AA0000000000000000000023 /* Debug */,
|
||||
@@ -765,7 +765,7 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
AA0000000000000000000040 /* Build configuration list for PBXNativeTarget "CamperMonitorComplication" */ = {
|
||||
AA0000000000000000000040 /* Build configuration list for PBXNativeTarget "VanControlComplication" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AA0000000000000000000038 /* Debug */,
|
||||
@@ -774,7 +774,7 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
AA0000000000000000000068 /* Build configuration list for PBXNativeTarget "VanAligneiOSWidgetExtension" */ = {
|
||||
AA0000000000000000000068 /* Build configuration list for PBXNativeTarget "VanControlWidgetExtension" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
AA0000000000000000000066 /* Debug */,
|
||||
@@ -6,9 +6,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "AA0000000000000000000006"
|
||||
BuildableName = "CamperMonitor.app"
|
||||
BlueprintName = "CamperMonitor"
|
||||
ReferencedContainer = "container:CamperMonitor.xcodeproj">
|
||||
BuildableName = "VanControl.app"
|
||||
BlueprintName = "VanControl"
|
||||
ReferencedContainer = "container:VanControl.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
@@ -21,9 +21,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "AA0000000000000000000006"
|
||||
BuildableName = "CamperMonitor.app"
|
||||
BlueprintName = "CamperMonitor"
|
||||
ReferencedContainer = "container:CamperMonitor.xcodeproj">
|
||||
BuildableName = "VanControl.app"
|
||||
BlueprintName = "VanControl"
|
||||
ReferencedContainer = "container:VanControl.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
@@ -32,9 +32,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "AA0000000000000000000006"
|
||||
BuildableName = "CamperMonitor.app"
|
||||
BlueprintName = "CamperMonitor"
|
||||
ReferencedContainer = "container:CamperMonitor.xcodeproj">
|
||||
BuildableName = "VanControl.app"
|
||||
BlueprintName = "VanControl"
|
||||
ReferencedContainer = "container:VanControl.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
@@ -15,9 +15,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "AA0000000000000000000022"
|
||||
BuildableName = "CamperMonitorWatch.app"
|
||||
BlueprintName = "CamperMonitorWatch"
|
||||
ReferencedContainer = "container:CamperMonitor.xcodeproj">
|
||||
BuildableName = "VanControlWatch.app"
|
||||
BlueprintName = "VanControlWatch"
|
||||
ReferencedContainer = "container:VanControl.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
@@ -45,9 +45,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "AA0000000000000000000022"
|
||||
BuildableName = "CamperMonitorWatch.app"
|
||||
BlueprintName = "CamperMonitorWatch"
|
||||
ReferencedContainer = "container:CamperMonitor.xcodeproj">
|
||||
BuildableName = "VanControlWatch.app"
|
||||
BlueprintName = "VanControlWatch"
|
||||
ReferencedContainer = "container:VanControl.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
@@ -62,9 +62,9 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "AA0000000000000000000022"
|
||||
BuildableName = "CamperMonitorWatch.app"
|
||||
BlueprintName = "CamperMonitorWatch"
|
||||
ReferencedContainer = "container:CamperMonitor.xcodeproj">
|
||||
BuildableName = "VanControlWatch.app"
|
||||
BlueprintName = "VanControlWatch"
|
||||
ReferencedContainer = "container:VanControl.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 341 KiB After Width: | Height: | Size: 341 KiB |
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
|
Before Width: | Height: | Size: 253 KiB After Width: | Height: | Size: 253 KiB |
@@ -157,7 +157,7 @@ final class BluetoothManager: NSObject {
|
||||
private(set) var bluetoothStatusText = "Bluetooth wird gestartet…"
|
||||
|
||||
/// Verbindet die Live Activity des Neigungsmessers mit dem Funkgeschehen –
|
||||
/// gesetzt von `CamperMonitorApp`, damit diese Schicht nichts über
|
||||
/// gesetzt von `VanControlApp`, damit diese Schicht nichts über
|
||||
/// ActivityKit wissen muss, wenn niemand zuhört.
|
||||
var activityManager: LevelActivityManager?
|
||||
|
||||
@@ -171,7 +171,7 @@ final class BluetoothManager: NSObject {
|
||||
|
||||
// MARK: - Nur auf `queue`
|
||||
|
||||
private let queue = DispatchQueue(label: "de.fritob.CamperMonitor.bluetooth")
|
||||
private let queue = DispatchQueue(label: "de.fritob.VanControl.bluetooth")
|
||||
private var central: CBCentralManager?
|
||||
|
||||
/// Momentaufnahme der eingerichteten Geräte, damit die Funk-Queue nicht in
|
||||
@@ -9,7 +9,7 @@ import Observation
|
||||
/// CarPlay eine laufende Live Activity automatisch im Dashboard an; ein
|
||||
/// eigenes CarPlay-App-Target braucht es dafür nicht – die Inhalte kommen
|
||||
/// aber nicht von der Sperrbildschirm-Ansicht, sondern von der
|
||||
/// `.small`-Aktivitätsfamilie (siehe `VanAligneiOSWidgetLiveActivity`).
|
||||
/// `.small`-Aktivitätsfamilie (siehe `VanControlWidgetLiveActivity`).
|
||||
@Observable
|
||||
final class LevelActivityManager {
|
||||
private(set) var trackedDeviceID: UUID?
|
||||
@@ -6,7 +6,7 @@ import Foundation
|
||||
/// Nur in Debug-Builds und nur, wenn beim Start `CAMPER_DEMO=1` gesetzt ist:
|
||||
///
|
||||
/// xcrun simctl launch --terminate-running-process \
|
||||
/// booted de.fritob.CamperMonitor
|
||||
/// booted de.fritob.VanControl
|
||||
/// # mit: SIMCTL_CHILD_CAMPER_DEMO=1 davor
|
||||
///
|
||||
/// Im normalen Betrieb wird hiervon nichts ausgeführt.
|
||||
@@ -5,7 +5,7 @@ import Security
|
||||
/// UserDefaults, deshalb Keychain.
|
||||
enum KeychainStore {
|
||||
|
||||
private static let service = "de.fritob.CamperMonitor.victronKeys"
|
||||
private static let service = "de.fritob.VanControl.victronKeys"
|
||||
|
||||
static func setKey(_ hex: String?, for deviceID: UUID) {
|
||||
let account = deviceID.uuidString
|
||||
@@ -1,7 +1,7 @@
|
||||
import SwiftUI
|
||||
|
||||
@main
|
||||
struct CamperMonitorApp: App {
|
||||
struct VanControlApp: App {
|
||||
@State private var store: DeviceStore
|
||||
@State private var bluetooth: BluetoothManager
|
||||
@State private var watch: PhoneWatchLink
|
||||
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
@@ -76,7 +76,7 @@ struct LevelComplicationView: View {
|
||||
@main
|
||||
struct LevelComplication: Widget {
|
||||
var body: some WidgetConfiguration {
|
||||
StaticConfiguration(kind: "de.fritob.CamperMonitor.complication.level",
|
||||
StaticConfiguration(kind: "de.fritob.VanControl.complication.level",
|
||||
provider: LevelComplicationProvider()) { _ in
|
||||
LevelComplicationView()
|
||||
// Der Tipp landet nicht irgendwo in der App, sondern auf der
|
||||
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
@@ -4,7 +4,7 @@ import Foundation
|
||||
/// ohne Fahrzeug prüfen lassen. Eingeschaltet über `CAMPER_DEMO=1`:
|
||||
///
|
||||
/// xcrun simctl launch --terminate-running-process booted \
|
||||
/// de.fritob.CamperMonitor.watchkitapp
|
||||
/// de.fritob.VanControl.watchkitapp
|
||||
/// # mit SIMCTL_CHILD_CAMPER_DEMO=1 davor
|
||||
///
|
||||
/// Im normalen Betrieb wird hiervon nichts ausgeführt.
|
||||
@@ -46,7 +46,7 @@ final class WatchLevelRadio: NSObject {
|
||||
}
|
||||
}
|
||||
|
||||
private let queue = DispatchQueue(label: "de.fritob.CamperMonitor.watch.ble")
|
||||
private let queue = DispatchQueue(label: "de.fritob.VanControl.watch.ble")
|
||||
private var central: CBCentralManager?
|
||||
private var peripheral: CBPeripheral?
|
||||
private var session: LevelSession?
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// AppIntent.swift
|
||||
// VanAligneiOSWidget
|
||||
// VanControlWidget
|
||||
//
|
||||
// Created by Christopher Helberg on 02.09.26.
|
||||
//
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// VanAligneiOSWidget.swift
|
||||
// VanAligneiOSWidget
|
||||
// VanControlWidget.swift
|
||||
// VanControlWidget
|
||||
//
|
||||
// Created by Christopher Helberg on 02.09.26.
|
||||
//
|
||||
@@ -41,7 +41,7 @@ struct SimpleEntry: TimelineEntry {
|
||||
let configuration: ConfigurationAppIntent
|
||||
}
|
||||
|
||||
struct VanAligneiOSWidgetEntryView : View {
|
||||
struct VanControlWidgetEntryView : View {
|
||||
var entry: Provider.Entry
|
||||
|
||||
var body: some View {
|
||||
@@ -56,12 +56,12 @@ struct VanAligneiOSWidgetEntryView : View {
|
||||
}
|
||||
}
|
||||
|
||||
struct VanAligneiOSWidget: Widget {
|
||||
let kind: String = "VanAligneiOSWidget"
|
||||
struct VanControlWidget: Widget {
|
||||
let kind: String = "VanControlWidget"
|
||||
|
||||
var body: some WidgetConfiguration {
|
||||
AppIntentConfiguration(kind: kind, intent: ConfigurationAppIntent.self, provider: Provider()) { entry in
|
||||
VanAligneiOSWidgetEntryView(entry: entry)
|
||||
VanControlWidgetEntryView(entry: entry)
|
||||
.containerBackground(.fill.tertiary, for: .widget)
|
||||
|
||||
}
|
||||
@@ -83,7 +83,7 @@ extension ConfigurationAppIntent {
|
||||
}
|
||||
|
||||
#Preview(as: .systemSmall) {
|
||||
VanAligneiOSWidget()
|
||||
VanControlWidget()
|
||||
} timeline: {
|
||||
SimpleEntry(date: .now, configuration: .smiley)
|
||||
SimpleEntry(date: .now, configuration: .starEyes)
|
||||
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// VanControlWidgetBundle.swift
|
||||
// VanControlWidget
|
||||
//
|
||||
// Created by Christopher Helberg on 02.09.26.
|
||||
//
|
||||
|
||||
import WidgetKit
|
||||
import SwiftUI
|
||||
|
||||
@main
|
||||
struct VanControlWidgetBundle: WidgetBundle {
|
||||
var body: some Widget {
|
||||
VanControlWidget()
|
||||
VanControlWidgetControl()
|
||||
VanControlWidgetLiveActivity()
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// VanAligneiOSWidgetControl.swift
|
||||
// VanAligneiOSWidget
|
||||
// VanControlWidgetControl.swift
|
||||
// VanControlWidget
|
||||
//
|
||||
// Created by Christopher Helberg on 02.09.26.
|
||||
//
|
||||
@@ -9,8 +9,8 @@ import AppIntents
|
||||
import SwiftUI
|
||||
import WidgetKit
|
||||
|
||||
struct VanAligneiOSWidgetControl: ControlWidget {
|
||||
static let kind: String = "fototeddy.VanAligneiOS.VanAligneiOSWidget"
|
||||
struct VanControlWidgetControl: ControlWidget {
|
||||
static let kind: String = "fototeddy.VanControl.VanControlWidget"
|
||||
|
||||
var body: some ControlWidgetConfiguration {
|
||||
AppIntentControlConfiguration(
|
||||
@@ -30,7 +30,7 @@ struct VanAligneiOSWidgetControl: ControlWidget {
|
||||
}
|
||||
}
|
||||
|
||||
extension VanAligneiOSWidgetControl {
|
||||
extension VanControlWidgetControl {
|
||||
struct Value {
|
||||
var isRunning: Bool
|
||||
var name: String
|
||||
@@ -38,12 +38,12 @@ extension VanAligneiOSWidgetControl {
|
||||
|
||||
struct Provider: AppIntentControlValueProvider {
|
||||
func previewValue(configuration: TimerConfiguration) -> Value {
|
||||
VanAligneiOSWidgetControl.Value(isRunning: false, name: configuration.timerName)
|
||||
VanControlWidgetControl.Value(isRunning: false, name: configuration.timerName)
|
||||
}
|
||||
|
||||
func currentValue(configuration: TimerConfiguration) async throws -> Value {
|
||||
let isRunning = true // Check if the timer is running
|
||||
return VanAligneiOSWidgetControl.Value(isRunning: isRunning, name: configuration.timerName)
|
||||
return VanControlWidgetControl.Value(isRunning: isRunning, name: configuration.timerName)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// VanAligneiOSWidgetLiveActivity.swift
|
||||
// VanAligneiOSWidget
|
||||
// VanControlWidgetLiveActivity.swift
|
||||
// VanControlWidget
|
||||
//
|
||||
// Created by Christopher Helberg on 02.09.26.
|
||||
//
|
||||
@@ -87,7 +87,7 @@ private struct LevelBubbleGlyph: View {
|
||||
}
|
||||
}
|
||||
|
||||
struct VanAligneiOSWidgetLiveActivity: Widget {
|
||||
struct VanControlWidgetLiveActivity: Widget {
|
||||
var body: some WidgetConfiguration {
|
||||
ActivityConfiguration(for: LevelActivityAttributes.self) { context in
|
||||
LevelActivityContent(attributes: context.attributes, state: context.state)
|
||||
@@ -281,7 +281,7 @@ extension LevelActivityAttributes.ContentState {
|
||||
}
|
||||
|
||||
#Preview("Notification", as: .content, using: LevelActivityAttributes.preview) {
|
||||
VanAligneiOSWidgetLiveActivity()
|
||||
VanControlWidgetLiveActivity()
|
||||
} contentStates: {
|
||||
LevelActivityAttributes.ContentState.level
|
||||
LevelActivityAttributes.ContentState.tilted
|
||||
@@ -5,14 +5,14 @@ set -e
|
||||
cd "$(dirname "$0")"
|
||||
OUT=$(mktemp -d)
|
||||
swiftc -O -o "$OUT/tests" \
|
||||
CamperMonitor/Bluetooth/AESCounterMode.swift \
|
||||
CamperMonitor/Bluetooth/BitReader.swift \
|
||||
CamperMonitor/Bluetooth/VictronAdvertisement.swift \
|
||||
CamperMonitor/Bluetooth/DalyProtocol.swift \
|
||||
CamperMonitor/Bluetooth/DalyState.swift \
|
||||
CamperMonitor/Bluetooth/JBDProtocol.swift \
|
||||
CamperMonitor/Bluetooth/WattCycleProtocol.swift \
|
||||
CamperMonitor/Bluetooth/AlpicoolProtocol.swift \
|
||||
VanControl/Bluetooth/AESCounterMode.swift \
|
||||
VanControl/Bluetooth/BitReader.swift \
|
||||
VanControl/Bluetooth/VictronAdvertisement.swift \
|
||||
VanControl/Bluetooth/DalyProtocol.swift \
|
||||
VanControl/Bluetooth/DalyState.swift \
|
||||
VanControl/Bluetooth/JBDProtocol.swift \
|
||||
VanControl/Bluetooth/WattCycleProtocol.swift \
|
||||
VanControl/Bluetooth/AlpicoolProtocol.swift \
|
||||
Shared/Bluetooth/VanAlignProtocol.swift \
|
||||
Shared/Models/DeviceSnapshot.swift \
|
||||
Shared/Models/FridgeSettings.swift \
|
||||
@@ -25,6 +25,6 @@ swiftc -O -o "$OUT/tests" \
|
||||
Shared/Models/SensorOrientation.swift \
|
||||
Shared/Models/VictronCodes.swift \
|
||||
Shared/WatchLink/WatchLink.swift \
|
||||
CamperMonitor/Store/KeychainStore.swift \
|
||||
VanControl/Store/KeychainStore.swift \
|
||||
Tests/main.swift
|
||||
"$OUT/tests"
|
||||
|
||||