c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Timo Sandmann
Datum: Di, 21.03.2006 21:22:22
In-reply-to:
<BCF016D5ED5AC34FBB655D109519ABCF083DC7@xxxxxxxxxxxxxxxxxxxx>
Hallo,
> Ich habe einen Patch eingereicht, mit dem man die
> Zifferntasten mehrfach nutzen kann.
>
> Herr Benz bat nun darum das bevor er aufgenommen wird, dieses
> hier zu diskutieren.
>
> Meine Idee, ist abhängig vom Screen den Tsten
> unterschiedliche Funktionen geben zu können.
die Idee gefällt mir sehr gut, nur finde ich den Code mit den
verschachtelten switches etwas unübersichtlich. Was vielleicht auch eine
(IMHO übersichtlichere) Möglichkeit wäre:
- Es gibt für jeden Screen eine Funktion void actual_display_action(uint8
key), in der steht, was bei den Tasten 0-9 zu tun ist.
- Es gibt einen Zeiger auf diesen Funktionstyp, der immer auf die Funktion
zeigt, "deren" Display gerade angezeigt wird.
- Es gibt eine weitere Konstante wie DISPLAY_SCREEN_TOGGLE, z.B.
DISPLAY_ACTION, die benutzt wird, um der Funktion rc5_screen_set()
mitzuteilen, dass eine Zifferntaste, die displayspezifisch verwendet werden
soll, gedrückt wurde.
- RC5_CODE_X wird jeweils rc5_screen_set, {DISPLAY_ACTION, X } zugewiesen.
- Der zweite Parameter (bei rc5_screen_set() bisher ungenutzt) ist die
gedrückte Taste.
- In rc5_screen_set() setze ich im Fall von !DISPLAY_ACTION den o.a. Zeiger
auf die Funktion für's "neue" Display.
- Im Fall von DISPLAY_ACTION rufe ich actual_display_action(par->value2)
auf.
So das wäre mein erster Einfall dazu. Das ganze ist vielleicht ein bisschen
mehr Code, aber ich fände es strukturierter / übersichtlicher.
Mit freundlichen Grüßen
Timo Sandmann