forked from fritob/Camper-Monitor
Kühlbox: Einstellungsblock in 20-Byte-Stücken schreiben
Die Ursache, belegt statt vermutet. Im Referenzprojekt gibt es einen Bericht von genau dieser Box - einer Maentum/Plug-in Festival IceCube Dual (Gruni22/alpicool_ha_ble#20). Dort galt: Solltemperatur ändern geht, Ein- und Ausschalten nicht. Genau unser Bild. Der Grund ist nicht das Paket, sondern der Schreibvorgang. Die Box nimmt nur die 20 Nutzbytes der Standard-MTU je Schreibvorgang an. Der kurze Temperaturbefehl hat sieben Byte und geht durch, der Einstellungsblock hat 31 und wird abgelehnt. Wir haben bisher nach der ausgehandelten MTU aufgeteilt - und die ist unter iOS weit grösser als 20, also wurde nie aufgeteilt. Jetzt gilt für die Kühlbox die Grenze der Box, nicht die der Verbindung: 31 Byte gehen als 20 und 11 raus, mit der üblichen Pause dazwischen. Das mitgeschnittene Paket aus dem Bericht steht als Prüfung im Testlauf. Unsere Erzeugung trifft es byteweise - Längenbyte, Datenblock, rechte Zone, Prüfsumme -, es scheiterte also wirklich nur am Schreiben. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -96,6 +96,17 @@ enum AlpicoolProtocol {
|
||||
/// Gerät sie wieder zusammensetzen kann.
|
||||
static let chunkDelay: TimeInterval = 0.15
|
||||
|
||||
/// Wieviel die Box je Schreibvorgang annimmt.
|
||||
///
|
||||
/// Das sind die 20 Nutzbytes der Standard-MTU – unabhängig davon, was auf
|
||||
/// der Verbindung ausgehandelt wurde. Ein längerer Schreibvorgang wird von
|
||||
/// diesen Boxen abgelehnt; belegt an einer Maentum/Plug-in Festival
|
||||
/// IceCube Dual, bei der genau deshalb das Ein- und Ausschalten scheiterte,
|
||||
/// während der kurze Temperaturbefehl durchging
|
||||
/// (Gruni22/alpicool_ha_ble#20). Das Ändern der Solltemperatur geht mit
|
||||
/// sieben Byte durch, der Einstellungsblock mit 31 nicht.
|
||||
static let maxWriteSize = 20
|
||||
|
||||
/// Zerlegt ein Paket in schreibbare Stücke.
|
||||
///
|
||||
/// Ohne ausgehandelte MTU nimmt BLE nur 20 Nutzbytes je Schreibvorgang an.
|
||||
|
||||
Reference in New Issue
Block a user