Closed BloodyRain2k closed 2 years ago
Toller Fortschitt an der App! Wegen deiner Frage zu Pull Requests, solange es sich um dieselben Commits handelt können die älteren Commits auch zuerst gemerged werden. Dadurch wird der Umfang des Neuen einfach um die schon gemergedten Commits gekürzt. Trotzdem spricht nichts dagegen einfach diesen PR zu nehmen und die anderen zu verwerfen.
Auto Connect - https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/tree/auto_connect Wenn ein Muster eingegeben wird versucht die App bereits sich zu dem dazugehoerigen Mini zu verbinden, allerdings nur einmal.
Mit den folgenden Aenderungen verbindet sich die App nach dem auf einen Flash folgenden Neustart automatisch, da beim Verbindungsverlust ein Verbindungsversuch gestartet wird. Scheitert der Verbindungsaufbau wird ein verzoegerter Versuch gestartet.
Wenn die Verbindung zum Mini verloren wurde, wird in https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/blob/88a224528c40c7659029e7695fba1093baa12ebf/Calliope%20App/Bluetooth/CalliopeBLEDiscovery.swift#L54
zuerst .autoConnect
auf false
gesetzt, definiert in https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/blob/88a224528c40c7659029e7695fba1093baa12ebf/Calliope%20App/Bluetooth/CalliopeBLEDevice.swift#L82
welche im nachhinein schlecht benannt scheint...
Die einzige Aufgabe von .autoConnect
ist es eine Verbindungsversuch Schleife in https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/blob/88a224528c40c7659029e7695fba1093baa12ebf/Calliope%20App/ViewsAndControllers/CollapsingConnectionView/ConnectionView/MatrixConnectionViewController.swift#L204
verhindern soll, da case .discoveredAll:
nach Scheitern des Versuches wieder erreicht wird aber auch gleichzeitig der einzige Punkt im MatrixConnectionViewController
ist der bei einem Verbindungsverlust erreicht wird.
.autoConnect
ist lediglich dafuer da dass nur 1 Versuch gemacht wird nachdem die Verbindung zum Mini verloren wurde, danach wird ein Verbindungsversuch in die .DispatchQueue.main
gepackt, siehe startDelayedDiscovery()
weiter unten.
Wenn erfolgreich eine Verbindung aufgebaut wurde, wird in https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/blob/88a224528c40c7659029e7695fba1093baa12ebf/Calliope%20App/Bluetooth/CalliopeBLEDiscovery.swift#L54
fuer alle gefundenen Minis .autoConnect
wieder auf true
gesetzt.
Die Funktion startDelayedDiscovery()
in https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/blob/88a224528c40c7659029e7695fba1093baa12ebf/Calliope%20App/ViewsAndControllers/CollapsingConnectionView/ConnectionView/MatrixConnectionViewController.swift#L235
nutzt die Eigenschaft .delayedDiscovery
um zu zeigen ob ein Versuch in der DispatchQueue
gesetzt wurde.
Weiterhin wird der Verbindungsversuch nur ausgeloest wenn der Muster Dialog geschlossen ist, da ein aktiver Versuch die Eingabe fuer die Dauer des Versuchs blockiert, was eher laestig als hilfreich war. Sollte der Dialog offen sein wenn der Versuch stattfinden sollte, wird einfach ein neuer mit einer kurzen Verzoegerung gestartet.
Commits https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/72413ecfae8eb199045e3d340ac77c66860d5179 https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/328105e08c7ef66a32d16c4442bdec43870b3a4f https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/9f726f485d77564db9ee4b76ce0de4bf016983e9
Roberta XML Export - https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/tree/roberta_xml Anpassungen damit die App ebenfalls die exportierten XML Dateien verarbeitet, sprich speichert, und zusaetzlich die die notwendig waren, damit MakeCode den Programmnamen aus dem Editor auslesen kann.
Es wird versucht die XMLs im Downloads Ordner zu speichern, aber es scheint so als ob der Zugriff auf diesen ausschliesslich auf Desktop-Geraeten erfragt werden kann, nicht auf den Mobil-Geraeten. Daher erfolgt ein Fallback beim Scheitern auf den Dokumente Order welcher einen per-App Ordner auf dem Geraet bereitstellt.
Leider ist mir beim Schreiben der Dokumentation ein potenzielles Problem aufgefallen. Sollte aus irgendwelchen Gruenden das Schreiben in den Dokumente Ordner ebenfalls scheitern, wird die App vermutlich in https://github.com/calliope-mini/calliope-mini-flash-app-iOS/blob/a13ea81d3797579e5e290d799a721172fc2d7c7d/Calliope%20App/ViewsAndControllers/EditorsAndPrograms/Editors/EditorViewController.swift#L210 in einer Schleife stecken bleiben. Je nach dem wie iOS sowas handhabt wird das entweder erkannt oder spaetestens "behoben" wenn der Arbeitsspeicher knapp und die App darum beendet wird. Eine Moeglichkeit diese Situation zu erreichen waere ein MakeCode Programmname der einen / enthaelt oder fuer das Dateisystem ungueltige Zeichen.
Commits https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/1b9cb5ded7bef67f689dbff895047d17eaa1c3cc https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/c9c80f639b88c5d660d1920c17a0ea0830937fb8 https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/9ed6cdb30268a7b05b759b47bfcc01e89f1a1430
Online Hilfe - https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/tree/online_help Anpassungen damit eine Online Hilfe statt der Eingebauten angezeigt wird, sofern die Verbindung zum Internet und der Seite besteht. Definiert ist die Url in https://github.com/calliope-mini/calliope-mini-flash-app-iOS/blob/d7347d20a6e0228e25d78a002cecb6649a7bac07/Calliope%20App/ViewsAndControllers/HelpScreen/HelpContentViewController.swift#L28
Weiterhin wurden in diesem Branch alle Navigationsleisten in der App ausgeblended da diese als redundant eingestuft wurden. Sollten sie doch wieder verwendung finden koennen sie nach bedarf wieder eingeblendet werden.
Commits https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/d7347d20a6e0228e25d78a002cecb6649a7bac07 https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/dc4b392b96c861325d8ad38368c042c4c7c2039d https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/428a150b79b8a7b9f2413f972cdce0c375c4a02f
Gemischtes Kein Crash mehr durch BLE Neustart des Mini https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/61d4011ba3c013245d117c61bb9d4ecb4675ad4e Kein Upload wenn keine Aenderungen vorhanden sind https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/752f7f88393235ecf482ad713846cb24f500e19a "Fix" fuer MakeCode 'Size Exceeded' wie in der Android App https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/6e439789ec28001cdcfbc382ce6c56492ced1740 Settings fuer automatisches Laden des letzten Muster bei App Neustart https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/48313f928ac265c27690e9e6feee49f23c32621e https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/b5c61f0cf99eda1eade48c1e1899e685d3939e45 https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/73aa53440625eead1586956a387baf47245c04a3 Flashen laeft weiter auch wenn aus der App gewechselt wurde https://github.com/calliope-mini/calliope-mini-flash-app-iOS/commit/ae1d359e15129fe8608992f9b3ea1ecfb871a263
Zusaetzliche Anmerkungen "Wann muessen Geraete entfernt (ignoriert) werden" Dies passiert wenn MakeCode den Mini in den "Whitelist" Modus gesetzt hat. In diesem will er sich wie jedes andere Bluetooth Geraet Koppeln. Wird nun ein Programm hochgeladen dass den Mini auf "Open" setzt, was derzeit die Standardeinstellung in MakeCode (go.calliope.cc/beta) ist, dann fuehrt dies zur Meldung dass das Geraet erst "ignoriert" werden muss. MakeCode (makecode.calliope.cc) hat meiner Erinnerung nach noch den Standard auf "Whitelist".
Programmspeichergroesse Den Tests mit dem 'Size Exceeded' Problem nach liegt der nutzbare Speicher des Mini im Speicherbereich von 0x18000 bis 0x3C000, was eine Groesse von 147'456 Byte oder 147,5 KiB ergibt. Bestaetigt wurde dies durch die Tatsache dass MakeCode (ohne den "Fix") ab ~146 KiB anfing den 'Size Exceeded' Fehler zu geben. Mit OpenRoberta ist dies kein Problem da das Groesste Programm waehrend der Tests nicht mal auf 100 KiB gekommen ist.
Dieser PR enthält jetzt alle Änderungen die den Build 2.1.5 (26) ergeben haben, bestehend aus folgenden Branches: https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/tree/auto_connect
https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/tree/background_flashing
https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/tree/online_help
https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/tree/roberta_xml
https://github.com/BloodyRain2k/calliope-mini-flash-app-iOS/tree/size_exceeded_fix
Da ich nicht weiss wie genau sich Pull Requests verhalten wäre es ratsam diesen hier zuerst zu nehmen, da sich die vorherigen dann vermutlich erübrigen da sie bereits in diesem enthalten sein sollten.
Eine ausführliche Dokumentation der Änderungen folgt in den nächsten Tagen.