Skip to content

Adding advance example and documentation #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Aug 21, 2020
59 changes: 59 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,62 @@ If desired timestamps can be prefixed to the debug message. Timestamp output can

# How-To-Use Advanced
Normally all debug output is redirected to the primary serial output of each board (`Serial`). In case you want to redirect the output to another output stream you can make use of `setDebugOutputStream(&Serial2)`.

# Documentation
### Debug :
Arduino_DebugUtils Object that will be used for calling member functions.

### Debug.setDebugLevel(int const debug_level) :
Parameter debug_level in order of lowest to highest priority are : `DBG_NONE`, `DBG_ERROR`, `DBG_WARNING`, `DBG_INFO` (default), `DBG_DEBUG`, and `DBG_VERBOSE`.

Return type: void.

Example:
```
Debug.setDebugLevel(DBG_VERBOSE);
```
### Debug.setDebugOutputStream(Stream * stream) :
By default, Output Stream is Serial. In advanced cases other objects could be other serial ports (if available), or can be a Software Serial object.

Return type: void.

Example:
```
SoftwareSerial mySerial(10, 11); // RX, TX
Debug.setDebugOutputStream(&mySerial);
```
### Debug.timestampOn() :
Calling this function switches on the timestamp in the `Debug.print()` function call;
By default, printing timestamp is off, unless turned on using this function call.

Return type: void.

Example:
```
Debug.timestampOn();
Debug.print(DBG_VERBOSE, "i = %d", i); //Output looks like : [ 21007 ] i = 21
```

### Debug.timestampOff() :
Calling this function switches off the timestamp in the `Debug.print()` function call;

Return type: void.

Example:
```
Debug.timestampOff();
Debug.print(DBG_VERBOSE, "i = %d", i); //Output looks like : i = 21
```


### Debug.print(int const debug_level, const char * fmt, ...);
This function prints the message if parameter `debug_level` in the `Debug.print(debug_level, ...)` function call belongs to the range: DBG_ERROR <= debug_level <= (<DBG_LEVEL> that has been set using `setDebugLevel()` function).

Return type: void.

Example:
```
Debug.setDebugLevel(DBG_VERBOSE);
int i = 0;
Debug.print(DBG_VERBOSE, "DBG_VERBOSE i = %d", i);
```
29 changes: 29 additions & 0 deletions examples/Arduino_Debug_Advance/Arduino_Debug_Advance.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
Advanced Debug can be helpful in embedded applications when
there are more that two microcontrollers connected serially
or a wireless sensor like XBee is connected to the serial port
that will send data wirelessly to other XBee node.

In boards like Arduino Nano, UNO, MEGA only one serial port is available,
therefore additional Software Serial ports can be made using SoftwareSerial
*/

#include "Arduino_DebugUtils.h"
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
mySerial.begin(9600);
Debug.setDebugOutputStream(&mySerial);
Debug.setDebugLevel(DBG_VERBOSE);
Debug.timestampOn();
}

int i = 0;

void loop() {
Debug.print(DBG_VERBOSE, "i = %d", i);
i++;
delay(1000);
}