diff --git a/examples/Hellschreiber/Hellschreiber_Transmit_AFSK/Hellschreiber_Transmit_AFSK.ino b/examples/Hellschreiber/Hellschreiber_Transmit_AFSK/Hellschreiber_Transmit_AFSK.ino index 79908b7d..1fdff4a2 100644 --- a/examples/Hellschreiber/Hellschreiber_Transmit_AFSK/Hellschreiber_Transmit_AFSK.ino +++ b/examples/Hellschreiber/Hellschreiber_Transmit_AFSK/Hellschreiber_Transmit_AFSK.ino @@ -90,6 +90,12 @@ void loop() { // string saved in flash hell.print(F("Flash String")); + // in AFSK mode, it is possible to invert the text colors + // use white text on black background + hell.setInversion(true); + hell.print("Inverted String"); + hell.setInversion(false); + // character hell.print('c'); diff --git a/keywords.txt b/keywords.txt index 55262f3f..236c8039 100644 --- a/keywords.txt +++ b/keywords.txt @@ -223,6 +223,7 @@ getRangingResult KEYWORD2 # Hellschreiber printGlyph KEYWORD2 +setInversion KEYWORD2 # AFSK tone KEYWORD2 diff --git a/src/protocols/Hellschreiber/Hellschreiber.cpp b/src/protocols/Hellschreiber/Hellschreiber.cpp index a284eb60..6a32f306 100644 --- a/src/protocols/Hellschreiber/Hellschreiber.cpp +++ b/src/protocols/Hellschreiber/Hellschreiber.cpp @@ -49,6 +49,10 @@ size_t HellClient::printGlyph(uint8_t* buff) { return(1); } +void HellClient::setInversion(bool invert) { + _inv = invert; +} + size_t HellClient::write(const char* str) { if(str == NULL) { return(0); @@ -295,7 +299,7 @@ int16_t HellClient::transmitDirect(uint32_t freq, uint32_t freqHz) { int16_t HellClient::standby() { #if !defined(RADIOLIB_EXCLUDE_AFSK) if(_audio != nullptr) { - return(_audio->noTone()); + return(_audio->noTone(_inv)); } #endif return(_phy->standby()); diff --git a/src/protocols/Hellschreiber/Hellschreiber.h b/src/protocols/Hellschreiber/Hellschreiber.h index 9e6913d9..59e11409 100644 --- a/src/protocols/Hellschreiber/Hellschreiber.h +++ b/src/protocols/Hellschreiber/Hellschreiber.h @@ -119,9 +119,18 @@ class HellClient { \brief Method to "print" a buffer of pixels, this is exposed to allow users to send custom characters. \param buff Buffer of pixels to send, in a 7x7 pixel array. + + \returns Always returns the number of printed glyphs (1). */ size_t printGlyph(uint8_t* buff); + /*! + \brief Invert text color. + + \param invert Whether to enable color inversion (white text on black background), or not (black text on white background) + */ + void setInversion(bool invert); + size_t write(const char* str); size_t write(uint8_t* buff, size_t len); size_t write(uint8_t b); @@ -159,6 +168,7 @@ class HellClient { uint32_t _base = 0, _baseHz = 0; uint32_t _pixelDuration = 0; + bool _inv = false; size_t printNumber(unsigned long, uint8_t); size_t printFloat(double, uint8_t);