eprintf mit irq
Diff: eprintf.c
- Revision:
- 4:5138a20c4989
- Parent:
- 3:de07cab9fc01
- Child:
- 5:8d716aa183dc
--- a/eprintf.c Thu Jul 21 07:26:22 2011 +0000 +++ b/eprintf.c Thu Jul 21 07:38:51 2011 +0000 @@ -2,8 +2,18 @@ #define __EPRINTF_C__ #include "eprintf.h" +#include "mbos.h" -static int eprintf_fehlerzaehler = 0; +extern mbos os; +extern Serial pc; +// extern int eprintf_fehlerzaehler = 0; + +extern rbuf_t *printbuf; + +extern int letzter_Fehler; + +char cb [SB_GROESSE]; // Der Spoolbuffer zum PC +static int eprintf_fehlerzaehler = 0; void TX_irq_eprintf (void) { // Wird bei Tx-Empty oder explizit aufgerufen @@ -72,7 +82,7 @@ slen = strlen (cb); if (slen > (printbuf->buflen - printbuf->bufcnt - 2)) { - // wenn es nicht reinpasst, gleich mit Fehler zurück + // wenn es nicht reinpasst, gleich mit Fehler zurück letzter_Fehler = FEHLER_EPRINTF_STRING_ZU_GROSS; goto eprintf_end_fehler; } @@ -97,13 +107,13 @@ } } os.FreeResource (RESOURCE_EPRINTF); - TX_irq_eprintf (); // Und das erste Zeichen, falls möglich, gleich ausgeben + TX_irq_eprintf (); // Und das erste Zeichen, falls möglich, gleich ausgeben return 0; // 0 = kein Fehler eprintf_end_fehler: eprintf_fehlerzaehler++; os.FreeResource (RESOURCE_EPRINTF); - return letzter_Fehler; // Mit Fehler zurück + return letzter_Fehler; // Mit Fehler zurück } void task_eprintf_verarbeitung (void) { // Grundsaetzlich gilt: Immer nur per os warten, wenn es nichts zu tun gibt!