mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-01 11:25:44 +00:00
Create RedirectablePrint and NoopPrint for serial debug redirection
This commit is contained in:
parent
dda946d933
commit
eb40013ddc
13
src/RedirectablePrint.cpp
Normal file
13
src/RedirectablePrint.cpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include "RedirectablePrint.h"
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A printer that doesn't go anywhere
|
||||||
|
*/
|
||||||
|
NoopPrint noopPrint;
|
||||||
|
|
||||||
|
void RedirectablePrint::setDestination(Print *_dest)
|
||||||
|
{
|
||||||
|
assert(_dest);
|
||||||
|
dest = _dest;
|
||||||
|
}
|
34
src/RedirectablePrint.h
Normal file
34
src/RedirectablePrint.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <Print.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Printable that can be switched to squirt its bytes to a different sink.
|
||||||
|
* This class is mostly useful to allow debug printing to be redirected away from Serial
|
||||||
|
* to some other transport if we switch Serial usage (on the fly) to some other purpose.
|
||||||
|
*/
|
||||||
|
class RedirectablePrint : public Print
|
||||||
|
{
|
||||||
|
Print *dest;
|
||||||
|
|
||||||
|
public:
|
||||||
|
RedirectablePrint(Print *_dest) : dest(_dest) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a new destination
|
||||||
|
*/
|
||||||
|
void setDestination(Print *dest);
|
||||||
|
|
||||||
|
virtual size_t write(uint8_t c) { return dest->write(c); }
|
||||||
|
};
|
||||||
|
|
||||||
|
class NoopPrint : public Print
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual size_t write(uint8_t c) { return 1; }
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A printer that doesn't go anywhere
|
||||||
|
*/
|
||||||
|
extern NoopPrint noopPrint;
|
Loading…
Reference in New Issue
Block a user