From 4e9ee773f17a596abbb4a509e55ce3f144b6aad4 Mon Sep 17 00:00:00 2001 From: Zhiping Jiang Date: Mon, 25 Apr 2022 17:41:00 +0800 Subject: [PATCH] simplify address settings --- plugin-echoprobe/EchoProbeInitiator.cxx | 51 +++++-------------------- plugin-echoprobe/EchoProbePlugin.cxx | 4 ++ plugin-echoprobe/EchoProbeResponder.cxx | 23 ++++------- 3 files changed, 21 insertions(+), 57 deletions(-) diff --git a/plugin-echoprobe/EchoProbeInitiator.cxx b/plugin-echoprobe/EchoProbeInitiator.cxx index 35f533a..ee45fe9 100644 --- a/plugin-echoprobe/EchoProbeInitiator.cxx +++ b/plugin-echoprobe/EchoProbeInitiator.cxx @@ -11,9 +11,6 @@ void EchoProbeInitiator::startJob(const EchoProbeParameters ¶metersV) { this->parameters = parametersV; - if (parameters.workingMode == MODE_EchoProbeInitiator) { - nic->getFrontEnd()->setDestinationMACAddressFilter(std::vector>{PicoScenesFrameBuilder::magicIntel123456}); - } unifiedEchoProbeWork(); } @@ -75,7 +72,7 @@ void EchoProbeInitiator::unifiedEchoProbeWork() { auto nextSF = sf_value; auto connectionEstablished = false; for (auto i = 0; i < parameters.tx_max_retry; i++) { - if (auto[rxframe, ackframe, retryPerTx, rtDelay] = this->transmitAndSyncRxUnified(fp, 1); rxframe) { + if (auto [rxframe, ackframe, retryPerTx, rtDelay] = this->transmitAndSyncRxUnified(fp, 1); rxframe) { LoggingService::info_print("EchoProbe responder confirms the channel changes.\n"); if (shiftSF) frontEnd->setSamplingRate(nextSF); if (shiftCF) frontEnd->setCarrierFrequency(nextCF); @@ -86,7 +83,7 @@ void EchoProbeInitiator::unifiedEchoProbeWork() { if (shiftSF) frontEnd->setSamplingRate(nextSF); if (shiftCF) frontEnd->setCarrierFrequency(nextCF); std::this_thread::sleep_for(std::chrono::milliseconds(*parameters.delay_after_cf_change_ms)); - if (auto[rxframe, ackframe, retryPerTx, rtDelay] = this->transmitAndSyncRxUnified(fp, 1); rxframe) { + if (auto [rxframe, ackframe, retryPerTx, rtDelay] = this->transmitAndSyncRxUnified(fp, 1); rxframe) { LoggingService::info_print("EchoProbe responder confirms the channel changes.\n"); if (shiftSF) frontEnd->setSamplingRate(nextSF); if (shiftCF) frontEnd->setCarrierFrequency(nextCF); @@ -124,7 +121,7 @@ void EchoProbeInitiator::unifiedEchoProbeWork() { } else if (workingMode == MODE_EchoProbeInitiator) { fp = buildBasicFrame(taskId, EchoProbeRequestFrameType, sessionId); fp->addSegment(std::make_shared(makeRequestSegment(sessionId))); - auto[rxframe, ackframe, retryPerTx, rtDelay] = this->transmitAndSyncRxUnified(fp); + auto [rxframe, ackframe, retryPerTx, rtDelay] = this->transmitAndSyncRxUnified(fp); tx_count += retryPerTx; total_tx_count += retryPerTx; if (rxframe && ackframe) { @@ -279,41 +276,13 @@ std::shared_ptr EchoProbeInitiator::buildBasicFrame(uint fp->addExtraInfo(); } - fp->setDestinationAddress(parameters.inj_target_mac_address->data()); - if (isIntelMVMTypeNIC(nic->getDeviceType())) { - fp->setSourceAddress(nic->getFrontEnd()->getMacAddressPhy().data()); - fp->set3rdAddress(nic->getFrontEnd()->getMacAddressPhy().data()); - if (parameters.inj_for_intel5300.value_or(false)) { - fp->setDestinationAddress(PicoScenesFrameBuilder::magicIntel123456.data()); - fp->setSourceAddress(PicoScenesFrameBuilder::magicIntel123456.data()); - fp->set3rdAddress(nic->getFrontEnd()->getMacAddressPhy().data()); - fp->setChannelCoding(ChannelCodingEnum::BCC); // IWL5300 doesn't support LDPC coding. - } - } else if (nic->getDeviceType() == PicoScenesDeviceType::QCA9300) { - auto macNIC = std::dynamic_pointer_cast(nic); - fp->setSourceAddress(macNIC->getFrontEnd()->getMacAddressPhy().data()); - fp->set3rdAddress(macNIC->getMacAddressDev().data()); - if (parameters.inj_for_intel5300.value_or(false)) { - fp->setDestinationAddress(PicoScenesFrameBuilder::magicIntel123456.data()); - fp->setSourceAddress(PicoScenesFrameBuilder::magicIntel123456.data()); - fp->set3rdAddress(macNIC->getFrontEnd()->getMacAddressPhy().data()); - fp->setForceSounding(false); - } - } else if (nic->getDeviceType() == PicoScenesDeviceType::USRP) { - fp->setSourceAddress(nic->getFrontEnd()->getMacAddressPhy().data()); - fp->set3rdAddress(nic->getFrontEnd()->getMacAddressPhy().data()); - if (parameters.inj_for_intel5300.value_or(false)) { - fp->setDestinationAddress(PicoScenesFrameBuilder::magicIntel123456.data()); - fp->setSourceAddress(PicoScenesFrameBuilder::magicIntel123456.data()); - fp->set3rdAddress(nic->getFrontEnd()->getMacAddressPhy().data()); - fp->setForceSounding(false); - fp->setChannelCoding(ChannelCodingEnum::BCC); // IWL5300 doesn't support LDPC coding. - } - } else if (nic->getDeviceType() == PicoScenesDeviceType::IWL5300) { - auto macNIC = std::dynamic_pointer_cast(nic); - fp->setDestinationAddress(PicoScenesFrameBuilder::magicIntel123456.data()); - fp->setSourceAddress(PicoScenesFrameBuilder::magicIntel123456.data()); - fp->set3rdAddress(macNIC->getFrontEnd()->getMacAddressPhy().data()); + fp->setSourceAddress(PicoScenesFrameBuilder::magicIntel123456.data()); + fp->setDestinationAddress(PicoScenesFrameBuilder::magicIntel123456.data()); + fp->set3rdAddress(nic->getFrontEnd()->getMacAddressPhy().data()); + + if (parameters.inj_for_intel5300.value_or(false)) { + fp->setForceSounding(false); + fp->setChannelCoding(ChannelCodingEnum::BCC); // IWL5300 doesn't support LDPC coding. } return fp; diff --git a/plugin-echoprobe/EchoProbePlugin.cxx b/plugin-echoprobe/EchoProbePlugin.cxx index e955ed5..d725c52 100644 --- a/plugin-echoprobe/EchoProbePlugin.cxx +++ b/plugin-echoprobe/EchoProbePlugin.cxx @@ -84,10 +84,14 @@ void EchoProbePlugin::parseAndExecuteCommands(const std::string &commandString) nic->startRxService(); } else if (modeString.find("responder") != std::string::npos) { parameters.workingMode = MODE_EchoProbeResponder; + nic->getFrontEnd()->setDestinationMACAddressFilter(std::vector>{PicoScenesFrameBuilder::magicIntel123456}); + nic->getFrontEnd()->setSourceMACAddressFilter(std::vector>{PicoScenesFrameBuilder::magicIntel123456}); nic->startRxService(); nic->startTxService(); } else if (modeString.find("initiator") != std::string::npos) { parameters.workingMode = MODE_EchoProbeInitiator; + nic->getFrontEnd()->setDestinationMACAddressFilter(std::vector>{PicoScenesFrameBuilder::magicIntel123456}); + nic->getFrontEnd()->setSourceMACAddressFilter(std::vector>{PicoScenesFrameBuilder::magicIntel123456}); nic->startRxService(); nic->startTxService(); } else diff --git a/plugin-echoprobe/EchoProbeResponder.cxx b/plugin-echoprobe/EchoProbeResponder.cxx index 18eb586..958a5e7 100644 --- a/plugin-echoprobe/EchoProbeResponder.cxx +++ b/plugin-echoprobe/EchoProbeResponder.cxx @@ -72,9 +72,6 @@ void EchoProbeResponder::handle(const ModularPicoScenesRxFrame &rxframe) { void EchoProbeResponder::startJob(const EchoProbeParameters ¶metersV) { this->parameters = parametersV; - if (parameters.workingMode == MODE_EchoProbeResponder) { - nic->getFrontEnd()->setDestinationMACAddressFilter(std::vector>{PicoScenesFrameBuilder::magicIntel123456}); - } } std::vector EchoProbeResponder::makeReplies(const ModularPicoScenesRxFrame &rxframe, const EchoProbeRequest &epReq) { @@ -119,19 +116,13 @@ std::vector EchoProbeResponder::makeRepliesForEchoProbeR frameBuilder.setPicoScenesFrameType(EchoProbeReplyFrameType); frameBuilder.setTxParameters(nic->getUserSpecifiedTxParameters()); - frameBuilder.setDestinationAddress(rxframe.standardHeader.addr3.data()); - if (nic->getDeviceType() == PicoScenesDeviceType::QCA9300 || nic->getDeviceType() == PicoScenesDeviceType::IWLMVM_AX200 || nic->getDeviceType() == PicoScenesDeviceType::IWLMVM_AX210) { - auto macNIC = std::dynamic_pointer_cast(nic); - frameBuilder.setSourceAddress(nic->getFrontEnd()->getMacAddressPhy().data()); - frameBuilder.set3rdAddress(macNIC->getMacAddressDev().data()); - } - if (nic->getDeviceType() == PicoScenesDeviceType::IWL5300) { - frameBuilder.setDestinationAddress(PicoScenesFrameBuilder::magicIntel123456.data()); - frameBuilder.setSourceAddress(PicoScenesFrameBuilder::magicIntel123456.data()); - frameBuilder.set3rdAddress(PicoScenesFrameBuilder::broadcastFFMAC.data()); - } else if (nic->getDeviceType() == PicoScenesDeviceType::USRP) { - frameBuilder.setSourceAddress(nic->getFrontEnd()->getMacAddressPhy().data()); - frameBuilder.set3rdAddress(nic->getFrontEnd()->getMacAddressPhy().data()); + frameBuilder.setSourceAddress(PicoScenesFrameBuilder::magicIntel123456.data()); + frameBuilder.setDestinationAddress(PicoScenesFrameBuilder::magicIntel123456.data()); + frameBuilder.set3rdAddress(nic->getFrontEnd()->getMacAddressPhy().data()); + + if (parameters.inj_for_intel5300.value_or(false)) { + frameBuilder.setForceSounding(false); + frameBuilder.setChannelCoding(ChannelCodingEnum::BCC); // IWL5300 doesn't support LDPC coding. } frameBuilder.setTaskId(rxframe.PicoScenesHeader->taskId); frameBuilder.setTxId(rxframe.PicoScenesHeader->txId);