Modified frequency changed event to framework
Removed the logic to send frequency
changed event to framework, on receiving
WPA_BSS_FREQ_CHANGED_FLAG attribute change.
This is because, this event is specific to
STA side functionality. Added a new frequency
changed notification handler. Send the new
frequency to framework from this handler.
Bug: 233074707
Test: Manual - Established P2P connection & confirmed from logs
that channel change event is received correctly on
framework side(used wpa_cli -i<ifname>
chan_switch 10 2412 0 2412 2412 to trigger channel switch)
Change-Id: I75d3c9ad3ab357ee0d8d9e58bf38870bb3a21e98
diff --git a/wpa_supplicant/aidl/aidl.cpp b/wpa_supplicant/aidl/aidl.cpp
index 1add3df..a7945cc 100644
--- a/wpa_supplicant/aidl/aidl.cpp
+++ b/wpa_supplicant/aidl/aidl.cpp
@@ -923,7 +923,7 @@
aidl_manager->notifyNetworkNotFound(wpa_s);
}
-void wpas_aidl_notify_bss_freq_changed(struct wpa_supplicant *wpa_s)
+void wpas_aidl_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency)
{
if (!wpa_s)
return;
@@ -932,10 +932,10 @@
if (!aidl_manager)
return;
- wpa_printf(MSG_DEBUG, "Notify %s frequency changed to %d",
- wpa_s->ifname, wpa_s->assoc_freq);
+ wpa_printf(MSG_INFO, "Notify %s frequency changed to %d",
+ wpa_s->ifname, frequency);
- aidl_manager->notifyBssFreqChanged(wpa_s);
+ aidl_manager->notifyFrequencyChanged(wpa_s, frequency);
}
void wpas_aidl_notify_ceritification(struct wpa_supplicant *wpa_s,
diff --git a/wpa_supplicant/aidl/aidl.h b/wpa_supplicant/aidl/aidl.h
index d9ab7bd..2f3c7a0 100644
--- a/wpa_supplicant/aidl/aidl.h
+++ b/wpa_supplicant/aidl/aidl.h
@@ -126,7 +126,7 @@
void wpas_aidl_notify_transition_disable(
struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid, u8 bitmap);
void wpas_aidl_notify_network_not_found(struct wpa_supplicant *wpa_s);
- void wpas_aidl_notify_bss_freq_changed(struct wpa_supplicant *wpa_s);
+ void wpas_aidl_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency);
void wpas_aidl_notify_ceritification(struct wpa_supplicant *wpa_s,
int depth, const char *subject,
const char *altsubject[],
@@ -293,7 +293,7 @@
{}
static void wpas_aidl_notify_network_not_found(struct wpa_supplicant *wpa_s)
{}
-void wpas_aidl_notify_bss_freq_changed(struct wpa_supplicant *wpa_s)
+void wpas_aidl_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency)
{}
void wpas_aidl_notify_ceritification(struct wpa_supplicant *wpa_s,
int depth, const char *subject,
diff --git a/wpa_supplicant/aidl/aidl_manager.cpp b/wpa_supplicant/aidl/aidl_manager.cpp
index ac7b8e8..da90c38 100644
--- a/wpa_supplicant/aidl/aidl_manager.cpp
+++ b/wpa_supplicant/aidl/aidl_manager.cpp
@@ -1905,7 +1905,7 @@
callWithEachStaIfaceCallback(misc_utils::charBufToString(wpa_s->ifname), func);
}
-void AidlManager::notifyBssFreqChanged(struct wpa_supplicant *wpa_group_s)
+void AidlManager::notifyFrequencyChanged(struct wpa_supplicant *wpa_group_s, int frequency)
{
if (!wpa_group_s || !wpa_group_s->parent)
return;
@@ -1913,18 +1913,15 @@
// For group notifications, need to use the parent iface for callbacks.
struct wpa_supplicant *wpa_s = getTargetP2pIfaceForGroup(wpa_group_s);
if (!wpa_s) {
- wpa_printf(MSG_INFO, "Drop BSS frequency changed event");
+ wpa_printf(MSG_INFO, "Drop frequency changed event");
return;
}
- uint32_t aidl_freq = wpa_group_s->current_bss
- ? wpa_group_s->current_bss->freq
- : wpa_group_s->assoc_freq;
-
const std::function<
ndk::ScopedAStatus(std::shared_ptr<ISupplicantP2pIfaceCallback>)>
func = std::bind(&ISupplicantP2pIfaceCallback::onGroupFrequencyChanged,
- std::placeholders::_1, misc_utils::charBufToString(wpa_group_s->ifname), aidl_freq);
+ std::placeholders::_1, misc_utils::charBufToString(wpa_group_s->ifname),
+ frequency);
callWithEachP2pIfaceCallback(misc_utils::charBufToString(wpa_s->ifname), func);
}
diff --git a/wpa_supplicant/aidl/aidl_manager.h b/wpa_supplicant/aidl/aidl_manager.h
index 6acacf5..1ed6899 100644
--- a/wpa_supplicant/aidl/aidl_manager.h
+++ b/wpa_supplicant/aidl/aidl_manager.h
@@ -143,7 +143,7 @@
struct wpa_ssid *ssid,
u8 bitmap);
void notifyNetworkNotFound(struct wpa_supplicant *wpa_s);
- void notifyBssFreqChanged(struct wpa_supplicant *wpa_s);
+ void notifyFrequencyChanged(struct wpa_supplicant *wpa_s, int frequency);
void notifyCertification(struct wpa_supplicant *wpa_s,
int depth, const char *subject,
const char *altsubject[],