[Unzap] Abschaltcodes

Stefan Uhl s.uhl at gmx.net
Wed Oct 15 22:12:25 CEST 2008


* Tilman Baumann <tilman at baumann.name> [081015 20:52]:
> Am 15.10.2008 um 19:23 schrieb Alexander Neumann:
> 
> Na immerhin koennte man den Code so nachladen. Per USB, IR, Seriell  
> oder von Speicherkarte.

Das sollte man immer können, egal, wie man ihn repräsentiert.

> Ich finde die Sache mit Meta Code zumindest mal wuenschenswert. Und es  
> wuerde das Teilen von Code mit anderen Projekten massiv vereinfachen.

Naja, je komplizierter die Beschreibung, desto weniger potentielle
Beitragende verstehen sie...

Zum Austausch mit anderen Projekten ist es auch irrelevant, wie wir die
Codes intern repräsentieren, parsen und senden. Dazu sollte man die
Definition der Yaml-Dateien festklopfen. Was man beim Übersetzen daraus
macht ist was ganz anderes. Ich denke zumindest in diesen Dateien wäre
eine Fragmentierung in Blocks sinnvoll. In was man die dann übersetzt
ist eine andere Sache. Da kommts auf die Größe des Parsers auch nicht
an :-)

Wenn man das Parsen und Senden einfach haben will könnte man auch
folgendes machen:

Aufteilen des Codes in Header und Body.

Im Header steht: l: Länge des Headers in Byte. Der Body beginnt l/2
Worte später (passend gerundet) mit den Frequenzangaben. Dann für jeden 
Codeabschnitt ein Byte mit 2Bit Typ und 6bit Anzahl zu sendender Pulse+Pausen.

00xxxxxx raw. Zum Senden schaufelt man einfach die xxxxxx folgenden
         Worte des Bodys in die Sendelogik.
01xxxxxx pwm. Die ersten vier Worte sind pulse0, pause0, pulse1, pause1.
         Dann schickt man f"ur jedes der nachfolgenden xxxxxx Bits
         entweder das erste Tupel, oder das zweite.
10xxxxxx nrz. Vier Worte: 00, 01, 10, 11. Man guckt sich 2 Bit an,
         sendet bei 00 und 11 den entsprechenden wert, bei 01 sendet 
         man 01 10 und bei 10 sendet man 01. Dann schiebt man das ganze
         um 1 Bit nach links (oder rechts, je nach Implementation...)
         Das ist etwas trickreicher, da"s der Anfang paßt und daß man
         den Übergang von einem Byte zum nächsten hinkriegt. Das macht
         man solange, bis xxxxxx Pulse gesendet sind.
11xxxxxx seltsamer kram. Vier Worte: 00, 01, 10, 11. Man guckt sich 2
         Bits an, sendet den entsprechenden Wert und schiebt 2 Bit zur
         Seite. bis man xxxxxx Pulse gesendet hat. Damit kriegt man auch
         Codes mit mehr als zwei Zeiten hin...

Roher Code braucht dann nur 1 Wort Header, analysierte Codes kriegt man
schon ganz nett klein, obwohl man keinerlei Wiederhollogik und so
verwendet... Jeder Wechsel des Codetyps kostet 1 (raw) oder 9 Byte.

Alexander: Was meinst du? Ist bei sowas der Parser klein genug? 


Stefan



More information about the unzap mailing list