diff --git a/openrtx/include/protocols/M17/M17Modulator.hpp b/openrtx/include/protocols/M17/M17Modulator.hpp index 05b3a22a..de5feff7 100644 --- a/openrtx/include/protocols/M17/M17Modulator.hpp +++ b/openrtx/include/protocols/M17/M17Modulator.hpp @@ -83,6 +83,13 @@ public: */ void stop(); + /** + * Invert baseband signal phase before output. + * + * @param status: if set to true signal phase is inverted. + */ + void invertPhase(const bool status); + private: /** @@ -113,6 +120,7 @@ private: streamId outStream; ///< Baseband output stream ID. pathId outPath; ///< Baseband output path ID. bool txRunning; ///< Transmission running. + bool invPhase; ///< Invert signal phase #if defined(PLATFORM_MD3x0) || defined(PLATFORM_MDUV3x0) PwmCompensator pwmComp; diff --git a/openrtx/src/protocols/M17/M17Modulator.cpp b/openrtx/src/protocols/M17/M17Modulator.cpp index bc0e2ab7..14fd422b 100644 --- a/openrtx/src/protocols/M17/M17Modulator.cpp +++ b/openrtx/src/protocols/M17/M17Modulator.cpp @@ -141,6 +141,12 @@ void M17Modulator::stop() #endif } +void M17Modulator::invertPhase(const bool status) +{ + invPhase = status; +} + + void M17Modulator::symbolsToBaseband() { memset(idleBuffer, 0x00, M17_FRAME_SAMPLES * sizeof(stream_sample_t)); @@ -156,8 +162,8 @@ void M17Modulator::symbolsToBaseband() elem = M17::rrc_48k(elem * M17_RRC_GAIN) - M17_RRC_OFFSET; #if defined(PLATFORM_MD3x0) || defined(PLATFORM_MDUV3x0) elem = pwmComp(elem); - elem *= -1.0f; // Invert signal phase #endif + if(invPhase) elem = 0.0f - elem; // Invert signal phase idleBuffer[i] = static_cast< int16_t >(elem); } }