一句话总结
WifiMonitor 负责从 wpa_supplicant 接收上报事件并通知 framework 进行相应处理
WifiMonitor 维护一个 mMonitoringMap ,保存的是当前处于 monitoring 状态的 iface
WifiMonitor 有一些 startMonitoring、 stopMonitoring 的操作,本质就是在操作这个 map
private final Map<String, Boolean> mMonitoringMap = new HashMap<>();
同时,WifiMonitor 也维护一个 mHandlerMap ,表里是 iface 对应的 handler
WifiMonitor 通过 registerHandler 和 deregisterHandler 操作为 iface 绑定用于消息发送和处理的handler
这两个方法的实质就是操作这个 map
private final Map<String, SparseArray<Set<Handler>>> mHandlerMap = new HashMap<>();
WifiMonitor 有一些 broadcast event 方法,HAL层通过实例化 WifiMonitor 对象并调用这些方法去告知framework层 WPAS 发生了哪些事件
broadcast event 方法本质上是以 mHandlerMap 中的 handler 为target发送消息
public void broadcastWpsSuccessEvent(String iface) {
sendMessage(iface, WPS_SUCCESS_EVENT);
}
ClientModeImpl 获取到实例化的 WifiMonitor 对象 并 registerHandler
说明最终的消息处理是在 ClientModeImpl 进行的
至于HAL层怎么调用 WifiMonitor 的,后面再看