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