~aleteoryx/muditaos

eedf73eaac95b01ed66cb4d8a8ed1b9f1bd15bee — Lukasz Skrzypczak 5 years ago e9d2aaf
[EGD-5299] PR comments

Deleted commented-out digital filter calls. Moved QEEC to factory.
Added selection for echo cancellation strength.
M module-bsp/board/rt1051/bsp/audio/CodecMAX98090.cpp => module-bsp/board/rt1051/bsp/audio/CodecMAX98090.cpp +0 -5
@@ 130,8 130,6 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
            i2cAddr.subAddress       = MAX98090_REG_PLAYBACK_QUICK_SETUP;
            i2c->Write(i2cAddr, (uint8_t *)&q_playback_setup, 1);

            SetupEarspeakerEqualizer();

        } break;

        case bsp::AudioDevice::OutputPath::Loudspeaker: {


@@ 151,8 149,6 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
            i2cAddr.subAddress                       = MAX98090_REG_OUTPUT_ENABLE;
            i2c->Write(i2cAddr, (uint8_t *)&outputenable, 1);

            SetupLoudspeakerEqualizer();

        } break;

        case bsp::AudioDevice::OutputPath::LoudspeakerMono: {


@@ 168,7 164,6 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
            i2cAddr.subAddress                       = MAX98090_REG_OUTPUT_ENABLE;
            i2c->Write(i2cAddr, (uint8_t *)&outputenable, 1);

            SetupLoudspeakerEqualizer();
        } break;

        default:

M module-cellular/Modem/TS0710/TS0710.cpp => module-cellular/Modem/TS0710/TS0710.cpp +38 -0
@@ 271,8 271,10 @@ TS0710::ConfState TS0710::AudioConfProcedure()
        return ConfState ::Failure;
    }
    else if (ret.response[0].compare("+QDAI: 1,0,0,3,0,1,1,1") == 0) {
        parser->cmd(at::AT::QRXGAIN);
        parser->cmd(at::AT::CLVL);
        parser->cmd(at::AT::QMIC);
        SetupEchoCalceller(EchoCancellerStrength::Aggressive);
        return ConfState ::Success;
    }
    else {


@@ 557,3 559,39 @@ void TS0710::ExitSleepMode(void)
{
    return pv_cellular->ExitSleep();
}

void TS0710::SetupEchoCalceller(EchoCancellerStrength strength)
{
    switch (strength) {
    case EchoCancellerStrength::LeastAggressive:
        // Aggressive settings
        parser->cmd(at::factory(at::AT::QEEC) + "0,2048");
        parser->cmd(at::factory(at::AT::QEEC) + "5,14");
        parser->cmd(at::factory(at::AT::QEEC) + "10,140");
        parser->cmd(at::factory(at::AT::QEEC) + "21,16000");
        parser->cmd(at::factory(at::AT::QEEC) + "22,300");
        parser->cmd(at::factory(at::AT::QEEC) + "24,450");
        parser->cmd(at::factory(at::AT::QEEC) + "33,640");
        break;
    case EchoCancellerStrength::Medium:
        // Aggressive settings
        parser->cmd(at::factory(at::AT::QEEC) + "0,2048");
        parser->cmd(at::factory(at::AT::QEEC) + "5,14");
        parser->cmd(at::factory(at::AT::QEEC) + "10,160");
        parser->cmd(at::factory(at::AT::QEEC) + "21,19000");
        parser->cmd(at::factory(at::AT::QEEC) + "22,600");
        parser->cmd(at::factory(at::AT::QEEC) + "24,600");
        parser->cmd(at::factory(at::AT::QEEC) + "33,768");
        break;
    case EchoCancellerStrength::Aggressive:
        // Aggressive settings
        parser->cmd(at::factory(at::AT::QEEC) + "0,2048");
        parser->cmd(at::factory(at::AT::QEEC) + "5,14");
        parser->cmd(at::factory(at::AT::QEEC) + "10,160");
        parser->cmd(at::factory(at::AT::QEEC) + "21,25000");
        parser->cmd(at::factory(at::AT::QEEC) + "22,12000");
        parser->cmd(at::factory(at::AT::QEEC) + "24,768");
        parser->cmd(at::factory(at::AT::QEEC) + "33,896");
        break;
    };
}
\ No newline at end of file

M module-cellular/Modem/TS0710/TS0710.h => module-cellular/Modem/TS0710/TS0710.h +9 -0
@@ 283,6 283,15 @@ class TS0710

    DLC_channel::Callback_t controlCallback = nullptr;
    std::queue<uint8_t> RXFifo;

    enum class EchoCancellerStrength
    {
        LeastAggressive,
        Medium,
        Aggressive
    };
    void SetupEchoCalceller(EchoCancellerStrength strength);

  public:
    enum class ConfState
    {

M module-cellular/at/Commands.hpp => module-cellular/at/Commands.hpp +4 -2
@@ 132,6 132,7 @@ namespace at
        QRXGAIN, /// Set Downlink Gains of RX
        CLVL,    /// Loudspeaker Volume Level Selection
        QMIC,    /// Set Uplink Gains of MIC
        QEEC,    /// Echo cancellation parameters
    };

    // below timeouts are defined in Quectel_EC25&EC21_AT_Commands_Manual_V1.3.pdf


@@ 232,9 233,10 @@ namespace at
            {AT::QICSGP, {"AT+QICSGP", default_timeout}},
            {AT::QIACT, {"AT+QIACT", 150000ms}},
            {AT::QIDEACT, {"AT+QIDEACT", 40000ms}},
            {AT::QRXGAIN, {"AT+QRXGAIN=65535", default_timeout}},
            {AT::QRXGAIN, {"AT+QRXGAIN=40000", default_timeout}},
            {AT::CLVL, {"AT+CLVL=3", default_timeout}},
            {AT::QMIC, {"AT+QMIC=15000,15000", default_timeout}}};
            {AT::QMIC, {"AT+QMIC=15000,15000", default_timeout}},
            {AT::QEEC, {"AT+QEEC=", default_timeout}}};

        if (fact.count(at) != 0u) {
            return fact.at(at);