private async void WifiScanSummaryRequest_NotificationReceived(object sender, NotifyEventArgs e) { if (MessageProtocolFactory.ReadRequestMessagePayload(e.Data) is WifiScanSummaryRequest wifiScanSummaryRequest) { Debug.WriteLine($"Received Wi-Fi config message protocol request: '{wifiScanSummaryRequest.WifiRequestType}'"); await bluetoothLeHelper.EndNotificationListenerAsync(); bluetoothLeHelper.NotificationReceived -= WifiScanSummaryRequest_NotificationReceived; if (wifiScanSummaryRequest.ErrorCode != 0x00) { throw new InvalidOperationException($"Wi-Fi network scan failed with error code {wifiScanSummaryRequest.ErrorCode}"); } if (wifiScanSummaryRequest.NetworkCount == 0) { // Report that we're not getting anything. WifiNetworkScanReceived?.Invoke(this, new WifiScanRequestEventArgs(null, 0, 0)); } else { bluetoothLeHelper.NotificationReceived += WifiScanResultRequest_NotificationReceived; await bluetoothLeHelper.StartNotificationListenerAsync(currentService, MessageProtocolTxCharacteristicId); actualWifiNetworkCount = 0; expectedWifiNetworkCount = wifiScanSummaryRequest.NetworkCount; await SendResponseAsync(currentService, wifiScanSummaryRequest, wifiScanSummaryRequest.ErrorCode); } } }
private async void WifiScanResultRequest_NotificationReceived(object sender, NotifyEventArgs e) { if (MessageProtocolFactory.ReadRequestMessagePayload(e.Data) is WifiScanResultRequest wifiScanResultRequest) { Debug.WriteLine($"Received Wi-Fi config message protocol request: '{wifiScanResultRequest.RequestType}'"); actualWifiNetworkCount++; WifiNetworkScanReceived?.Invoke(this, new WifiScanRequestEventArgs(wifiScanResultRequest, actualWifiNetworkCount, expectedWifiNetworkCount)); await SendResponseAsync(currentService, wifiScanResultRequest, 0x00); if (actualWifiNetworkCount == expectedWifiNetworkCount) { bluetoothLeHelper.NotificationReceived -= WifiScanResultRequest_NotificationReceived; } } }