Bettyhacks.com

German - BettyHacks.com => Software => Thema gestartet von: JimBeam am 05. Feb 2009, 22:33

Titel: Kleine Unschönheit in infrared.c
Beitrag von: JimBeam am 05. Feb 2009, 22:33
Hallo Leute,

erst mal vielen Dank an alle, die hier mitarbeiten/mitgearbeitet haben !!!! Ist viel Arbeit reingeflossen... Und das Ergebnis kann sich sehen lassen! Bisher kann ich zwar nur das beurteilen was ich hier sehe ('ne eBay-Betty ist unterwegs), aber das ist schon ziemlich beeindruckend.

Wenn ich meine Betty habe, werde ich mich etwas mehr mit dem SCART Adapter beschäftigen - ich bin recht firm in der 8051 Programmierung. Mal sehen, was mir da so alles einfällt - falls jemand ne Idee hat: her damit! Erst mal werde ich aber mal mit der bestehenden Firmware rumspielen.

So, nun zu der "Unschönheit" - was ich hier habe ist eigentlich Makulatur, aber ich muß es einfach loswerden  8)

Die Makro-Aufrufe von doKey(_x, _y) in der Funktion getCode() enden alle mit einem Semikolon, d.h. in Zeile 193 wird aus

  doKey(KEY_A, 0);

dann nach der Expansion

  if(KEY_A) return keyMap[0]; else ;

Ja, ich weiß: Pedant... ::) und es schadet so ja auch nicht... aber ich mag nun mal keine Redundanz...  ;D
Na ja, also in meiner Version hier habe ich im Makro das Ende, also "; else" weggemacht...

Andreas
Titel: Re: Kleine Unschönheit in infrared.c
Beitrag von: Ge0rG am 05. Feb 2009, 23:39
Es ist sogar noch viel schlimmer  :P

Die Funktion kopiert die Logik von getKeynum() und lässt sich unter deren Verwendung auf einen Vierzeiler reduzieren:
unsigned long getCode(void)
{
int keynum = getKeynum();
if (keynum < 42)
return keyMap[keynum];
else
return 0xFFFFFFFF;
}


Das Makro kann dann auch vorzeitig entlassen werden ;)
Titel: Re: Kleine Unschönheit in infrared.c
Beitrag von: JimBeam am 06. Feb 2009, 14:01
So weit bin ich noch nicht im Quellcode vorgedrungen - habe erst seit gestern überhaupt Kenntnis von dieser Site bzw. der Existenz von Boop...

Ich habe nur in diesem Teil der Software mal "rumgestöbert", um zu sehen ob man nicht mehr als 4 FB's reinbekommt. Sollte relativ einfach sein, wenn man z.B. die Taste 'D' zum Durchblättern mehrerer Seiten mit jeweils 3 Einträgen (auswählbar dann mit A..C) benutzen würde. Oder man nimmt nur die 'A' Taste zum Aufruf eines Menüs, in dem man mit den Cursortasten die gewünschte FB auswählt. Ist natürlich in beiden Fällen mindestens ein Tastendruck mehr als jetzt, dafür könnte man aber theoretisch beliebig viele FBs gleichzeitig haben - quasi eine "X in 1" Universalfernbedienung (wobei X durchaus groß wählbar ist...). Platz ist ja noch genug, sind ja erst 120k von 1MB verbraten.

Na ja, wenn meine Betty da ist, werde ich mal etwas daran rumspielen. ;D

Andreas