X-Git-Url: http://git.rot13.org/?p=simavr;a=blobdiff_plain;f=simavr%2Fsim%2Fsim_avr.h;fp=simavr%2Fsim%2Fsim_avr.h;h=80f734188328f7393e31aa44c47f56670c607865;hp=db41e419cfa9d200ab05edb79e172346f55e4296;hb=4a345c29fe62858693a226a3f6adbef1021236b1;hpb=77c0525fa53ac81daaf277593767cc5659e2e43e diff --git a/simavr/sim/sim_avr.h b/simavr/sim/sim_avr.h index db41e41..80f7341 100644 --- a/simavr/sim/sim_avr.h +++ b/simavr/sim/sim_avr.h @@ -61,20 +61,6 @@ enum { #define AVR_DATA_TO_IO(v) ((v) - 32) #define AVR_IO_TO_DATA(v) ((v) + 32) -/** - * Logging macros and associated log levels. - * The current log level is kept in avr->log. - */ -enum { - LOG_ERROR = 1, - LOG_WARNING, - LOG_TRACE, -}; -#define AVR_LOG(avr, level, ...) \ - do { \ - if (avr->log >= level) \ - fprintf(stdout, __VA_ARGS__); \ - } while(0) /* * Core states. @@ -375,6 +361,24 @@ void avr_callback_run_gdb(avr_t * avr); void avr_callback_sleep_raw(avr_t * avr, avr_cycle_count_t howLong); void avr_callback_run_raw(avr_t * avr); +/** + * Logging macros and associated log levels. + * The current log level is kept in avr->log. + */ +enum { + LOG_ERROR = 1, + LOG_WARNING, + LOG_TRACE, +}; +typedef void (*logger_t)(avr_t* avr, const int level, const char * format, ... ); +extern logger_t global_logger; +#ifndef AVR_LOG +#define AVR_LOG(avr, level, ...) \ + do { \ + global_logger( avr, level, __VA_ARGS__); \ + } while(0) +#endif + #ifdef __cplusplus }; #endif