Skip to content

Commit

Permalink
simplify address settings
Browse files Browse the repository at this point in the history
  • Loading branch information
jiangzp committed Apr 25, 2022
1 parent 7054db4 commit 4e9ee77
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 57 deletions.
51 changes: 10 additions & 41 deletions plugin-echoprobe/EchoProbeInitiator.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@

void EchoProbeInitiator::startJob(const EchoProbeParameters &parametersV) {
this->parameters = parametersV;
if (parameters.workingMode == MODE_EchoProbeInitiator) {
nic->getFrontEnd()->setDestinationMACAddressFilter(std::vector<std::array<uint8_t, 6>>{PicoScenesFrameBuilder::magicIntel123456});
}
unifiedEchoProbeWork();
}

Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down Expand Up @@ -124,7 +121,7 @@ void EchoProbeInitiator::unifiedEchoProbeWork() {
} else if (workingMode == MODE_EchoProbeInitiator) {
fp = buildBasicFrame(taskId, EchoProbeRequestFrameType, sessionId);
fp->addSegment(std::make_shared<EchoProbeRequestSegment>(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) {
Expand Down Expand Up @@ -279,41 +276,13 @@ std::shared_ptr<PicoScenesFrameBuilder> 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<MAC80211CSIExtractableNIC>(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<MAC80211CSIExtractableNIC>(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;
Expand Down
4 changes: 4 additions & 0 deletions plugin-echoprobe/EchoProbePlugin.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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<std::array<uint8_t, 6>>{PicoScenesFrameBuilder::magicIntel123456});
nic->getFrontEnd()->setSourceMACAddressFilter(std::vector<std::array<uint8_t, 6>>{PicoScenesFrameBuilder::magicIntel123456});
nic->startRxService();
nic->startTxService();
} else if (modeString.find("initiator") != std::string::npos) {
parameters.workingMode = MODE_EchoProbeInitiator;
nic->getFrontEnd()->setDestinationMACAddressFilter(std::vector<std::array<uint8_t, 6>>{PicoScenesFrameBuilder::magicIntel123456});
nic->getFrontEnd()->setSourceMACAddressFilter(std::vector<std::array<uint8_t, 6>>{PicoScenesFrameBuilder::magicIntel123456});
nic->startRxService();
nic->startTxService();
} else
Expand Down
23 changes: 7 additions & 16 deletions plugin-echoprobe/EchoProbeResponder.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,6 @@ void EchoProbeResponder::handle(const ModularPicoScenesRxFrame &rxframe) {

void EchoProbeResponder::startJob(const EchoProbeParameters &parametersV) {
this->parameters = parametersV;
if (parameters.workingMode == MODE_EchoProbeResponder) {
nic->getFrontEnd()->setDestinationMACAddressFilter(std::vector<std::array<uint8_t, 6>>{PicoScenesFrameBuilder::magicIntel123456});
}
}

std::vector<PicoScenesFrameBuilder> EchoProbeResponder::makeReplies(const ModularPicoScenesRxFrame &rxframe, const EchoProbeRequest &epReq) {
Expand Down Expand Up @@ -119,19 +116,13 @@ std::vector<PicoScenesFrameBuilder> 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<MAC80211CSIExtractableNIC>(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);
Expand Down

0 comments on commit 4e9ee77

Please sign in to comment.