Loesungsansatz fuer Libaries?

28/10/2007 - 20:22 von Olaf Kaluza | Report spam
Ich bin gerade dabei Funktionen die ich immer wieder fuer meine
Microcontroller verwende in Libaries zusammenzufassen.

Das funktioniert bei Hardware unabhaengigen Sachen wie z.b:

unsigned char crc7 (char *data, unsigned char length);

sehr gut.


Es funktioniert auch noch ganz gut mit soetwas:

void lcdg_printf(char *fmt, ...);

Ich muss der Libary dann noch eine Funktion zur Verfuegung stellen
welche in der Lage ist ein Pixel auf einem LCD zu zeichnen und kann sie
danach fuer verschiedene LCDs und auch verschiedene Microcontroller
problemlos verwenden.


Wuenschenswert waere es aber auch wenn ich sehr hardwarenahe Sachen
zu einer Libary zusammenfassen koennte.
Ein Beispiel dafuer waere soetwas:

void sed1530_setpixel(unsigned char x, unsigned char y, unsigned char color);

Das ist eine Funktion welche ein Pixel auf ein angeschlossenes LCD mit
einem bestimmten LCD-Controller zeichnet. So koennte ich allein durch
austausch der Libary sofort ein anderes LCD ansteuern.
Das Problem ist aber diese LCDs nicht immer am selben Pin eines
Controllers angeschlossen sind.
Hat jemand eine Idee wie ich der Libary elegant mitteilen kann welche
Portleitungen sie benutzen soll ohne die Kapselung der Funktionalitaet
zu sehr aufzubrechen?
Es waere ja kein Problem wenn die Libary einfach die Bereitstellung
von Funktionen zum Hardwarezugriff erwartet, aber das waere dann
soviel das der Sinn der ganzen Sache in Frage gestellt wird.

Olaf
 

Lesen sie die antworten

#1 Roland Damm
28/10/2007 - 22:16 | Warnen spam
Moin,

Olaf Kaluza schrub:

Hat jemand eine Idee wie ich der Libary elegant mitteilen kann
welche Portleitungen sie benutzen soll ohne die Kapselung der
Funktionalitaet zu sehr aufzubrechen?
Es waere ja kein Problem wenn die Libary einfach die
Bereitstellung von Funktionen zum Hardwarezugriff erwartet,
aber das waere dann soviel das der Sinn der ganzen Sache in
Frage gestellt wird.



Kann eine Library nicht eigene 'globale' Variablen haben? Dann
müsste die lib eine Initialisierungsfunktion haben, in der wie
Werte übergeben werden und die diese Werte in die lib-globalen
Variablen eintràgt. Alle lib-Funktionen halten sich dann an die
Werte dieser Variablen.

CU Rollo

Ähnliche fragen