| 593 | } |
| 594 | |
| 595 | void WBLink::apply_txpower() { |
| 596 | const auto settings = m_settings->get_settings(); |
| 597 | const auto before = std::chrono::steady_clock::now(); |
| 598 | uint32_t pwr_index = (int)settings.wb_rtl8812au_tx_pwr_idx_override; |
| 599 | uint32_t pwr_mw = (int)settings.wb_tx_power_milli_watt; |
| 600 | if (m_is_armed && settings.wb_rtl8812au_tx_pwr_idx_override_armed != |
| 601 | openhd::RTL8812AU_TX_POWER_INDEX_ARMED_DISABLED) { |
| 602 | m_console->debug("Using power index special for armed"); |
| 603 | pwr_index = settings.wb_rtl8812au_tx_pwr_idx_override_armed; |
| 604 | } |
| 605 | if (m_is_armed && settings.wb_tx_power_milli_watt_armed != |
| 606 | openhd::WIFI_TX_POWER_MILLI_WATT_ARMED_DISABLED) { |
| 607 | m_console->debug("Using power mw special for armed"); |
| 608 | pwr_mw = settings.wb_tx_power_milli_watt_armed; |
| 609 | } |
| 610 | if (m_profile.is_air) { |
| 611 | if (m_broadcast_cards.at(0).type == WiFiCardType::OPENHD_RTL_88X2AU && |
| 612 | pwr_index > 50 && settings.wb_air_tx_channel_width == 40) { |
| 613 | m_console->debug("Reducing TX power to 50 tpi due to 40Mhz"); |
| 614 | pwr_index = 50; |
| 615 | } |
| 616 | } |
| 617 | openhd::wb::set_tx_power_for_all_cards(pwr_mw, pwr_index, m_broadcast_cards); |
| 618 | m_curr_tx_power_mw = pwr_mw; |
| 619 | m_curr_tx_power_idx = pwr_index; |
| 620 | const auto delta = std::chrono::steady_clock::now() - before; |
| 621 | m_console->debug("Changing tx power took {}", MyTimeHelper::R(delta)); |
| 622 | } |
| 623 | |
| 624 | #pragma clang diagnostic push |
| 625 | #pragma ide diagnostic ignored "performance-unnecessary-value-param" |