Skip to content

Commit

Permalink
add 'random-mac' option for injector
Browse files Browse the repository at this point in the history
  • Loading branch information
jiangzp committed Aug 4, 2022
1 parent d187747 commit 761ca97
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 1 deletion.
10 changes: 9 additions & 1 deletion plugin-echoprobe/EchoProbeInitiator.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -276,11 +276,19 @@ std::shared_ptr<PicoScenesFrameBuilder> EchoProbeInitiator::buildBasicFrame(uint
fp->addExtraInfo();
}

fp->setSourceAddress(PicoScenesFrameBuilder::magicIntel123456.data());
auto sourceAddr = nic->getFrontEnd()->getMacAddressPhy();
if (parameters.randomMAC) {
sourceAddr[0] = SystemTools::Math::uniformRandomNumberWithinRange<uint8_t>(0, UINT8_MAX);
sourceAddr[1] = SystemTools::Math::uniformRandomNumberWithinRange<uint8_t>(0, UINT8_MAX);
}
fp->setSourceAddress(sourceAddr.data());
fp->setDestinationAddress(PicoScenesFrameBuilder::magicIntel123456.data());
fp->set3rdAddress(nic->getFrontEnd()->getMacAddressPhy().data());

if (parameters.inj_for_intel5300.value_or(false)) {
fp->setSourceAddress(PicoScenesFrameBuilder::magicIntel123456.data());
fp->setDestinationAddress(PicoScenesFrameBuilder::magicIntel123456.data());
fp->set3rdAddress(nic->getFrontEnd()->getMacAddressPhy().data());
fp->setForceSounding(false);
fp->setChannelCoding(ChannelCodingEnum::BCC); // IWL5300 doesn't support LDPC coding.
}
Expand Down
1 change: 1 addition & 0 deletions plugin-echoprobe/EchoProbeParameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class EchoProbeParameters {
std::optional<uint32_t> delayed_start_seconds;

std::optional<std::string> outputFileName;
bool randomMAC;
EchoProbeInjectionContent injectorContent;

std::optional<double> cf_begin;
Expand Down
5 changes: 5 additions & 0 deletions plugin-echoprobe/EchoProbePlugin.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ void EchoProbePlugin::initialization() {
echoProbeOptions = std::make_shared<po::options_description>("Echo Probe Options");
echoProbeOptions->add_options()
("mode", po::value<std::string>(), "Working mode [injector, logger, initiator, responder]")
("random-mac", po::value<bool>()->default_value(false), "Random MAC address for Injector or Initiator")
("output", po::value<std::string>(), "Output CSI file name w/o .csi extension");
echoProbeOptions->add(*injectionOptions).add(*echoOptions);
}
Expand Down Expand Up @@ -98,6 +99,10 @@ void EchoProbePlugin::parseAndExecuteCommands(const std::string &commandString)
throw std::invalid_argument("Unsupported --mode option value by EchoProbe plugins.");
}

if (vm.count("random-mac")) {
parameters.randomMAC = vm["random-mac"].as<bool>();
}

if (vm.count("output")) {
auto outputFileName = vm["output"].as<std::string>();
parameters.outputFileName = outputFileName;
Expand Down

0 comments on commit 761ca97

Please sign in to comment.