Skip to content

Commit ea53094

Browse files
committed
C++ API to configure logging
1 parent 83288b3 commit ea53094

File tree

6 files changed

+54
-16
lines changed

6 files changed

+54
-16
lines changed

src/DriverCommon.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#define I2C_END true // wether to send a stop bit at the end of the transmission
2020

2121
#ifdef __cplusplus
22+
#include "Utils/AudioDriverLogger.h"
23+
2224
namespace audio_driver {
2325
#endif
2426

src/Utils/AudioDriverLogger.h

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
2+
#pragma once
3+
4+
#include "etc.h"
5+
#include "Logger.h"
6+
#include "Print.h"
7+
8+
// define supported log levels
9+
enum class AudioDriverLogLevel {Debug=0, Info, Warning, Error};
10+
11+
/***
12+
* C++ API to configure logging
13+
*/
14+
class AudioDriverLoggerClass {
15+
public:
16+
void setLogLevel(AudioDriverLogLevel level){
17+
LOGLEVEL_AUDIODRIVER = (int) level;
18+
}
19+
void setOutput(Print& out) {
20+
setAudioDriverLogOutput(&out);
21+
}
22+
bool begin(Print& out, AudioDriverLogLevel level) {
23+
setLogLevel(level);
24+
setOutput(out);
25+
return true;
26+
}
27+
void end(){
28+
setAudioDriverLogOutput(nullptr);
29+
}
30+
};
31+
32+
static AudioDriverLoggerClass AudioDriverLogger;

src/Utils/Logger.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,54 +5,53 @@
55
#include <stdarg.h>
66

77
// Default log level is warning
8-
int LOGLEVEL_AUDIODRIVER = AudioDriverWarning;
8+
int LOGLEVEL_AUDIODRIVER = 2;
99

1010
void AD_LOGD(const char* fmr, ...) {
11-
if (LOGLEVEL_AUDIODRIVER <= AudioDriverDebug) { // LOGLEVEL_AUDIODRIVER = Debug
11+
if (LOGLEVEL_AUDIODRIVER <= 0) { // LOGLEVEL_AUDIODRIVER = Debug
1212
char log_buffer[AD_LOGLENGTH+1];
1313
strcpy(log_buffer, "Debug: ");
1414
va_list arg;
1515
va_start(arg, fmr);
1616
vsnprintf(log_buffer+9, AD_LOGLENGTH-9, fmr, arg);
1717
va_end(arg);
18-
logStr(log_buffer);
18+
audioDriverLogStr(log_buffer);
1919
}
2020
}
2121

2222
void AD_LOGI(const char* fmr, ...) {
23-
if (LOGLEVEL_AUDIODRIVER <= AudioDriverInfo) { // LOGLEVEL_AUDIODRIVER = Info, Debug
23+
if (LOGLEVEL_AUDIODRIVER <= 1) { // LOGLEVEL_AUDIODRIVER = Info, Debug
2424
char log_buffer[AD_LOGLENGTH+1];
2525
strcpy(log_buffer, "Info: ");
2626
va_list arg;
2727
va_start(arg, fmr);
2828
vsnprintf(log_buffer+9,AD_LOGLENGTH-9, fmr, arg);
2929
va_end(arg);
30-
logStr(log_buffer);
30+
audioDriverLogStr(log_buffer);
3131
}
3232
}
3333

3434
void AD_LOGW(const char* fmr, ...) {
35-
if (LOGLEVEL_AUDIODRIVER <= AudioDriverWarning) { // LOGLEVEL_AUDIODRIVER = Warning, Info, Debug
35+
if (LOGLEVEL_AUDIODRIVER <= 2) { // LOGLEVEL_AUDIODRIVER = Warning, Info, Debug
3636
char log_buffer[AD_LOGLENGTH+1];
3737
strcpy(log_buffer, "Warning: ");
3838
va_list arg;
3939
va_start(arg, fmr);
4040
vsnprintf(log_buffer+9,AD_LOGLENGTH-9, fmr, arg);
4141
va_end(arg);
42-
logStr(log_buffer);
42+
audioDriverLogStr(log_buffer);
4343
}
4444
}
4545

4646
void AD_LOGE(const char* fmr, ...) {
47-
if (LOGLEVEL_AUDIODRIVER <= AudioDriverError) { // for all levels
47+
if (LOGLEVEL_AUDIODRIVER <= 3) { // for all levels
4848
char log_buffer[AD_LOGLENGTH+1];
4949
strcpy(log_buffer, "Error: ");
5050
va_list arg;
5151
va_start(arg, fmr);
5252
vsnprintf(log_buffer+9,AD_LOGLENGTH-9, fmr, arg);
5353
va_end(arg);
54-
logStr(log_buffer);
54+
audioDriverLogStr(log_buffer);
5555
}
56-
5756
}
5857

src/Utils/Logger.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// logging methods that can be called from C and C++
12
#pragma once
23

34
// maximum size of log string
@@ -10,9 +11,6 @@
1011
extern "C" {
1112
#endif
1213

13-
// define supported log levels
14-
enum AudioDriverLogLevels {AudioDriverDebug, AudioDriverInfo, AudioDriverWarning, AudioDriverError};
15-
1614
// define default log level
1715
extern int LOGLEVEL_AUDIODRIVER;
1816

src/Utils/etc.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
#include "Arduino.h"
22
#include "Utils/etc.h"
33

4+
Print *p_audio_driver_log_output = &Serial;
5+
46
/// Arcuino c++ println function
5-
void logStr(const char* msg){
6-
Serial.println(msg);
7+
void audioDriverLogStr(const char* msg){
8+
if (p_audio_driver_log_output) p_audio_driver_log_output->println(msg);
9+
}
10+
11+
void setAudioDriverLogOutput(void *out){
12+
p_audio_driver_log_output = (Print*) out;
713
}

src/Utils/etc.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
#ifdef __cplusplus
2525
extern "C" {
2626
#endif
27-
void logStr(const char* msg);
27+
void audioDriverLogStr(const char* msg);
28+
void setAudioDriverLogOutput(void *out);
2829
#ifndef ARDUINO
2930
void pinMode(int, int);
3031
void digitalWrite(int, int);

0 commit comments

Comments
 (0)