mirror of
https://github.com/KuskoSoft/FeitCSI.git
synced 2026-08-27 14:18:34 +03:00
add support for selecting TX antenna
This commit is contained in:
parent
1975789026
commit
23c6aaee25
@ -45,6 +45,7 @@ struct Arguments
|
|||||||
uint16_t channelWidth;
|
uint16_t channelWidth;
|
||||||
uint8_t spatialStreams;
|
uint8_t spatialStreams;
|
||||||
uint8_t txPower;
|
uint8_t txPower;
|
||||||
|
uint32_t antenna;
|
||||||
uint16_t guardInterval;
|
uint16_t guardInterval;
|
||||||
uint32_t injectDelay;
|
uint32_t injectDelay;
|
||||||
uint32_t injectRepeat;
|
uint32_t injectRepeat;
|
||||||
|
|||||||
@ -63,7 +63,7 @@ void PacketInjector::injectNoHT()
|
|||||||
{
|
{
|
||||||
mcs = RATE_LEGACY_RATE_MSK & arguments.mcs;
|
mcs = RATE_LEGACY_RATE_MSK & arguments.mcs;
|
||||||
}
|
}
|
||||||
uint32_t rateNFlags = RATE_MCS_LEGACY_OFDM_MSK | mcs;
|
uint32_t rateNFlags = RATE_MCS_LEGACY_OFDM_MSK | mcs | arguments.antenna;
|
||||||
|
|
||||||
this->send(rateNFlags);
|
this->send(rateNFlags);
|
||||||
}
|
}
|
||||||
@ -78,6 +78,7 @@ void PacketInjector::injectHT()
|
|||||||
uint32_t rateNFlags =
|
uint32_t rateNFlags =
|
||||||
RATE_MCS_HT_MSK |
|
RATE_MCS_HT_MSK |
|
||||||
mcs |
|
mcs |
|
||||||
|
arguments.antenna |
|
||||||
(arguments.channelWidth == 40 ? RATE_MCS_CHAN_WIDTH_40 : 0) |
|
(arguments.channelWidth == 40 ? RATE_MCS_CHAN_WIDTH_40 : 0) |
|
||||||
(arguments.spatialStreams == 2 ? SPATIAL_STREAM : 0) |
|
(arguments.spatialStreams == 2 ? SPATIAL_STREAM : 0) |
|
||||||
(arguments.spatialStreams == 2 ? RATE_MCS_ANT_AB_MSK : 0) |
|
(arguments.spatialStreams == 2 ? RATE_MCS_ANT_AB_MSK : 0) |
|
||||||
@ -96,6 +97,7 @@ void PacketInjector::injectVHT()
|
|||||||
uint32_t rateNFlags =
|
uint32_t rateNFlags =
|
||||||
RATE_MCS_VHT_MSK |
|
RATE_MCS_VHT_MSK |
|
||||||
mcs |
|
mcs |
|
||||||
|
arguments.antenna |
|
||||||
(arguments.channelWidth == 40 ? RATE_MCS_CHAN_WIDTH_40 : 0) |
|
(arguments.channelWidth == 40 ? RATE_MCS_CHAN_WIDTH_40 : 0) |
|
||||||
(arguments.channelWidth == 80 ? RATE_MCS_CHAN_WIDTH_80 : 0) |
|
(arguments.channelWidth == 80 ? RATE_MCS_CHAN_WIDTH_80 : 0) |
|
||||||
(arguments.channelWidth == 160 ? RATE_MCS_CHAN_WIDTH_160 : 0) |
|
(arguments.channelWidth == 160 ? RATE_MCS_CHAN_WIDTH_160 : 0) |
|
||||||
@ -137,6 +139,7 @@ void PacketInjector::injectHE()
|
|||||||
RATE_MCS_HE_MSK |
|
RATE_MCS_HE_MSK |
|
||||||
RATE_MCS_LDPC_MSK |
|
RATE_MCS_LDPC_MSK |
|
||||||
mcs |
|
mcs |
|
||||||
|
arguments.antenna |
|
||||||
ltf |
|
ltf |
|
||||||
(arguments.channelWidth == 40 ? RATE_MCS_CHAN_WIDTH_40 : 0) |
|
(arguments.channelWidth == 40 ? RATE_MCS_CHAN_WIDTH_40 : 0) |
|
||||||
(arguments.channelWidth == 80 ? RATE_MCS_CHAN_WIDTH_80 : 0) |
|
(arguments.channelWidth == 80 ? RATE_MCS_CHAN_WIDTH_80 : 0) |
|
||||||
|
|||||||
23
src/main.cpp
23
src/main.cpp
@ -55,6 +55,7 @@ static struct argp_option options[] = {
|
|||||||
{"ltf", 'l', "LTF", 0, "HE LTF [2xLTF+0.8|2xLTF+1.6|4xLTF+3.2|4xLTF+0.8]"},
|
{"ltf", 'l', "LTF", 0, "HE LTF [2xLTF+0.8|2xLTF+1.6|4xLTF+3.2|4xLTF+0.8]"},
|
||||||
{"coding", 'c', "CODING", 0, "Coding scheme [LDPC|BCC]"},
|
{"coding", 'c', "CODING", 0, "Coding scheme [LDPC|BCC]"},
|
||||||
{"tx-power", 't', "TXPOWER", 0, "TX power of antenna in dBm [1-22]"},
|
{"tx-power", 't', "TXPOWER", 0, "TX power of antenna in dBm [1-22]"},
|
||||||
|
{"antenna", 'a', "ANTENNA", 0, "Transmitting antenna 1, 2 or 12 for both"},
|
||||||
{"mode", 'i', "MODE", 0, "Mode of program[measure|inject|measureinject]"},
|
{"mode", 'i', "MODE", 0, "Mode of program[measure|inject|measureinject]"},
|
||||||
{"inject-delay", 'd', "INJECTDELAY", 0, "Delay between frame injections is us"},
|
{"inject-delay", 'd', "INJECTDELAY", 0, "Delay between frame injections is us"},
|
||||||
{"inject-repeat", 'j', "INJECTREPEAT", 0, "How many times inject frame"},
|
{"inject-repeat", 'j', "INJECTREPEAT", 0, "How many times inject frame"},
|
||||||
@ -214,6 +215,27 @@ parse_opt(int key, char *arg, struct argp_state *state)
|
|||||||
args->txPower = (uint8_t)tx;
|
args->txPower = (uint8_t)tx;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case 'a':
|
||||||
|
{
|
||||||
|
int a = std::atoi(arg);
|
||||||
|
if (a == 1)
|
||||||
|
{
|
||||||
|
args->antenna = RATE_MCS_ANT_A_MSK;
|
||||||
|
}
|
||||||
|
else if (a == 2)
|
||||||
|
{
|
||||||
|
args->antenna = RATE_MCS_ANT_B_MSK;
|
||||||
|
}
|
||||||
|
else if (a == 12)
|
||||||
|
{
|
||||||
|
args->antenna = RATE_MCS_ANT_AB_MSK;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
argp_failure(state, 1, 0, "Bad transmitting antenna value. Possible values 1, 2 or 12 for both");
|
||||||
|
exit(ARGP_ERR_UNKNOWN);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 'f':
|
case 'f':
|
||||||
{
|
{
|
||||||
int f = std::atoi(arg);
|
int f = std::atoi(arg);
|
||||||
@ -270,6 +292,7 @@ int main(int argc, char *argv[])
|
|||||||
.channelWidth = 20,
|
.channelWidth = 20,
|
||||||
.spatialStreams = 1,
|
.spatialStreams = 1,
|
||||||
.txPower = 10,
|
.txPower = 10,
|
||||||
|
.antenna = RATE_MCS_ANT_A_MSK,
|
||||||
.guardInterval = 400,
|
.guardInterval = 400,
|
||||||
.injectDelay = 100000,
|
.injectDelay = 100000,
|
||||||
.injectRepeat = 0,
|
.injectRepeat = 0,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user