Byte-Muster erfassen mit Cycle-Byte

Bei einigen MCU-Herstellern bleibt das Ereignismuster für jedes Auftreten desselben Ereignisses identisch. Bestimmte MCU-Modelle – wie etwa in Geräten von ZiQi (MTK) – verwenden jedoch ein Cycle-Byte. Das bedeutet, dass dasselbe Ereignis jedes Mal mit einem unterschiedlichen Byte innerhalb der Sequenz übertragen wird.

Byte-Muster verstehen

Bei der Beobachtung der von der MCU an Android gesendeten Daten – sei es über den Live-Monitor oder durch eine Aufzeichnung (Capture) – wird die Struktur der Nachricht insbesondere bei diesem Modell (ZiQi 9109) deutlich. Das Muster setzt sich aus folgenden Elementen zusammen:

0xAAKopf
0x??Länge der nachfolgenden Bytes
0x??Cycle-Byte
...Eigentliche Daten
0x??Prüfsumme
0x55End-Byte

Das zweite Byte ist das Cycle-Byte. Es ändert sich mit jedem aufeinanderfolgenden Ereignis und durchläuft den Bereich von 0x00 bis 0xFF.

Folglich ist die vollständige Byte-Sequenz nicht zwangsläufig identisch, selbst wenn dieselbe Taste gedrückt oder dasselbe Ereignis wiederholt ausgelöst wird.

Herausfiltern von Leerlaufdaten (Idle Data)

Bevor die benötigten Daten aufgezeichnet werden, sollten Leerlaufereignisse und anderer unerwünschter Datenverkehr herausgefiltert werden.

Dieser Teil des Prozesses kann etwas mühsam sein, da dasselbe Ereignis mehrfach erfasst werden kann, wobei jedes Auftreten ein anderes Cycle-Byte enthält. Glücklicherweise ist es nicht erforderlich, jede Variante des Ereignisses zu erfassen; es genügt, das erste Auftreten aufzuzeichnen.

Bei diesem Leerlaufereignis der Länge 0x10 wurden neben dem Zyklus-Byte (0x28 und 0x29) und den Prüfsummen (0xA8 und 0xA5) tatsächlich noch einige weitere Bytes hervorgehoben, die ebenfalls variieren.

Unterbrechen Sie die Aufzeichnung sofort nach Erfassung der ersten Bytes, um das Aufnahmefenster nicht zu überlasten, und fügen Sie das entsprechende Ereignis der Filterliste hinzu. Beim Bearbeiten des Byte-Musters lassen sich die Bytes, die normalerweise variieren würden – in diesem Fall die oben hervorgehobenen Bytes –, so konfigurieren, dass sie jeden beliebigen Wert akzeptieren.

Gehen Sie zu den Filtern, bearbeiten Sie das neu erfasste Muster sowie das Byte-Muster, wählen Sie nacheinander die variierenden Bytes aus, aktivieren Sie die erweiterten Optionen und ändern Sie die Vergleichsoperation auf „MATCH_ANY“.

Auf diese Weise ignorieren der Filter und der Musterabgleich (Pattern Matcher) das sich ändernde Zyklus-Byte und können das korrekte Signal unabhängig von dessen Wert identifizieren. Die Filter sollten wie auf dem folgenden Screenshot aussehen:

Wiederholen Sie die vorherigen Schritte, bis während der Aufzeichnung kein Rauschen mehr auftritt.

Aufzeichnen eines Knopfes

Sobald der Filter konfiguriert ist und keine unerwünschten Bytes mehr aufgezeichnet werden – das heißt, wenn Sie die Aufzeichnung starten und keine neuen Bytes abgefangen werden –, können Sie einen Knopfdruck auslösen.

Aufgrund der Nachrichtenstruktur muss auch das Byte-Muster so angepasst werden, dass es für das Zyklus-Byte und die Prüfsumme jeden beliebigen Wert akzeptiert. Führen Sie dazu im Mapper dieselben Schritte aus wie zuvor bei den Filtern.