forked from fritob/Camper-Monitor
solar-integration (aus dem separaten VanAligneiOS-Repo) und dev_watch haben unabhängige Git-Historien, decken aber überlappende und sich ergänzende Funktionen ab. Übernommen aus solar-integration: Votronic- Solar-ESP-Anbindung samt Geräterolle, die Live-Activity/Widget-Extension fürs Sperrbildschirm/Dynamic-Island/CarPlay, das Querformat-Layout für Libelle/Fahrzeug-Ansicht und Ausrichtungs-Assistent, sowie die mehreren Fahrzeuggrafik-Stile (Vanster/California). Beibehalten aus dev_watch: alle zusätzlichen Geräteprotokolle (Daly-/JBD-BMS, Alpicool- Kühlbox, WattCycle, Victron), die dort zwischenzeitlich entstanden. Die Xcode-Projektdatei wurde von Hand um die neue Widget-Extension samt SharedActivity-Gruppe erweitert (Datei-synchronisierte Gruppen, kein App-Group-Entitlement nötig). Build für App, Watch und Widget-Extension geprüft (Debug und Release). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
24 lines
818 B
Swift
24 lines
818 B
Swift
import ActivityKit
|
||
import Foundation
|
||
|
||
/// Inhalt der Neigungsmesser-Live-Activity.
|
||
///
|
||
/// Die App und die Widget-Extension kompilieren diese Datei je für sich in
|
||
/// ihr eigenes Modul – sie darf deshalb nicht von `Shared/` abhängen, sonst
|
||
/// müsste die Extension auch Bluetooth- und WatchConnectivity-Code mitbauen.
|
||
/// Werte wie `isLevel` und `instruction` kommen darum schon fertig berechnet
|
||
/// aus `LevelState` an, die Extension zeigt nur an.
|
||
struct LevelActivityAttributes: ActivityAttributes {
|
||
struct ContentState: Codable, Hashable {
|
||
var pitch: Double?
|
||
var roll: Double?
|
||
var isLevel: Bool
|
||
var instruction: String?
|
||
var isCalibrated: Bool
|
||
var updatedAt: Date
|
||
}
|
||
|
||
/// Name des Neigungsmessers, wie in der App vergeben.
|
||
var deviceName: String
|
||
}
|