diff --git a/meson.build b/meson.build index 2dd00986..16ab880d 100644 --- a/meson.build +++ b/meson.build @@ -463,6 +463,7 @@ cs7000_src = ['platform/drivers/NVM/nvmem_CS7000.c', 'platform/drivers/stubs/cps_io_stub.c', 'platform/drivers/baseband/AK2365A.c', 'platform/drivers/baseband/SKY72310.c', + 'platform/drivers/baseband/HR_C6000.cpp', 'platform/drivers/baseband/HR_Cx000.cpp', 'platform/drivers/baseband/HR_C6000_CS7000.cpp', 'platform/drivers/baseband/radio_CS7000.cpp', diff --git a/platform/drivers/baseband/radio_CS7000.cpp b/platform/drivers/baseband/radio_CS7000.cpp index ba49a85a..f111a6e6 100644 --- a/platform/drivers/baseband/radio_CS7000.cpp +++ b/platform/drivers/baseband/radio_CS7000.cpp @@ -244,14 +244,25 @@ void radio_enableTx() { case OPMODE_FM: { - TxAudioSource source = TxAudioSource::MIC; + // WARNING: HR_C6000 quirk! + // If the CTCSS tone is disabled immediately after TX stop, the IC + // stops outputting demodulated audio until a reset. This may be + // something related to the "tail tone elimination" function. To + // overcome this, the CTCSS tone is enabled/disabled before starting + // a new transmission. + if(config->txToneEn) + C6000.setTxCtcss(config->txTone, 0x20); + else + C6000.disableCtcss(); + FmConfig cfg = (config->bandwidth == BW_12_5) ? FmConfig::BW_12p5kHz : FmConfig::BW_25kHz; - C6000.startAnalogTx(source, cfg | FmConfig::PREEMPH_EN); + C6000.startAnalogTx(TxAudioSource::MIC, cfg | FmConfig::PREEMPH_EN); } break; case OPMODE_M17: + C6000.disableCtcss(); C6000.startAnalogTx(TxAudioSource::LINE_IN, FmConfig::BW_25kHz); break;