eprintf mit irq
Revision 4:5138a20c4989, committed 2011-07-21
- Comitter:
- est2fe
- Date:
- Thu Jul 21 07:38:51 2011 +0000
- Parent:
- 3:de07cab9fc01
- Child:
- 5:8d716aa183dc
- Commit message:
- V03.2
Changed in this revision
eprintf.c | Show annotated file Show diff for this revision Revisions of this file |
eprintf.h | Show annotated file Show diff for this revision Revisions of this file |
--- 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!
--- a/eprintf.h Thu Jul 21 07:26:22 2011 +0000 +++ b/eprintf.h Thu Jul 21 07:38:51 2011 +0000 @@ -1,9 +1,12 @@ #ifndef __EPRINTF_H__ #define __EPRINTF_H__ -#include "extdef.h" -#include "globals.h" +//#include "extdef.h" +//#include "globals.h" #include "rbuf.h" +#include "mbed.h" +#include <stdarg.h> + #define TASK_EPRINTF_ID 2 #define TASK_EPRINTF_PRIO 5 @@ -32,16 +35,9 @@ // Spoolbuffergroesse fuer eprintf #define SB_GROESSE 1024 - // Timeout für LockResource und TestResource in [us] + // Timeout für LockResource und TestResource in [us] #define TO_LockResource 1000 -EXTDEF rbuf_t *printbuf; - -int letzter_Fehler; - -char cb [SB_GROESSE]; // Der Spoolbuffer zum PC -static int eprintf_fehlerzaehler = 0; - void TX_irq_eprintf (void); int eprintf (char *format, ...); void task_eprintf_verarbeitung (void);