Exemple #1
0
        private async Task RunWifiScan()
        {
            await _wifiScanner.ScanForNetworks();

            WiFiNetworkReport report = _wifiScanner.WiFiAdapter.NetworkReport;

            Geolocator geolocator = new Geolocator()
            {
                DesiredAccuracy = PositionAccuracy.High
            };
            Geoposition position = await geolocator.GetGeopositionAsync();

            var locationWifiGpsData = new WifiGpsDetail()
            {
                Accuracy       = position.Coordinate.Accuracy,
                Altitude       = position.Coordinate.Point.Position.Altitude,
                LocationStatus = geolocator.LocationStatus,
                Latitude       = position.Coordinate.Point.Position.Latitude,
                Longitude      = position.Coordinate.Point.Position.Longitude,
                TimeStamp      = position.Coordinate.Timestamp
            };

            foreach (var availableNetwork in report.AvailableNetworks)
            {
                WifiSignal wifiSignal = new WifiSignal()
                {
                    BeaconInterval = availableNetwork.BeaconInterval,
                    Bssid          = availableNetwork.Bssid,
                    ChannelCenterFrequencyInKilohertz = availableNetwork.ChannelCenterFrequencyInKilohertz,
                    IsWiFiDirect = availableNetwork.IsWiFiDirect,
                    NetworkKind  = availableNetwork.NetworkKind.ToString(),
                    NetworkRssiInDecibelMilliwatts = availableNetwork.NetworkRssiInDecibelMilliwatts,
                    PhyKind          = availableNetwork.PhyKind.ToString(),
                    SecuritySettings = availableNetwork.SecuritySettings.NetworkEncryptionType.ToString(),
                    SignalBars       = availableNetwork.SignalBars,
                    Ssid             = availableNetwork.Ssid,
                    Uptime           = availableNetwork.Uptime,
                    VenueName        = VenueName,
                    ScanTime         = _wifiScanner.scanTime
                };

                AddWifiScanResultsToWifiScannerDatabase(wifiSignal, locationWifiGpsData);
            }
        }
Exemple #2
0
        private void AddWifiScanResultsToWifiScannerDatabase(WifiSignal wifiSignal, WifiGpsDetail gpsSignal)
        {
            using (SqliteConnection database = new SqliteConnection("Filename = WiFiScanner.db"))
            {
                database.Open();

                //create if table doesn't exist
                CreateVenueTableInWifiScannerDatabaseIfNotExists(RemoveWhiteSpace(VenueName));

                //check if VenueName / Bssid / Ssid exists already
                using (SqliteCommand sqlCheckExistingWifiSignalCommand = new SqliteCommand())
                {
                    sqlCheckExistingWifiSignalCommand.Connection  = database;
                    sqlCheckExistingWifiSignalCommand.CommandText = "SELECT count(*) FROM " + RemoveWhiteSpace(VenueName) + " " +
                                                                    "WHERE VenueName = @VenueName " +
                                                                    "AND Bssid = @Bssid " +
                                                                    "AND Ssid = @Ssid";
                    sqlCheckExistingWifiSignalCommand.Parameters.AddWithValue("@VenueName", wifiSignal.VenueName); //string TEXT
                    sqlCheckExistingWifiSignalCommand.Parameters.AddWithValue("@Bssid", wifiSignal.Bssid);         //string TEXT
                    sqlCheckExistingWifiSignalCommand.Parameters.AddWithValue("@Ssid", wifiSignal.Ssid);           //string TEXT
                    int count = Convert.ToInt32(sqlCheckExistingWifiSignalCommand.ExecuteScalar());                //check for existing record
                    if (count == 0)
                    {
                        using (SqliteCommand insertCommand = new SqliteCommand())
                        {
                            insertCommand.Connection  = database;
                            insertCommand.CommandText = "INSERT INTO " + RemoveWhiteSpace(VenueName) + " " +
                                                        "(" +
                                                        //"BeaconInterval, " +
                                                        "Bssid, " +
                                                        //"ChannelCenterFrequencyInKilohertz, " +
                                                        //"IsWiFiDirect, " +
                                                        //"NetworkKind, " +
                                                        "NetworkRssiInDecibelMilliwatts, " +
                                                        //"PhyKind, " +
                                                        //"SecuritySettings, " +
                                                        //"SignalBars, " +
                                                        "Ssid, " +
                                                        "Uptime, " +
                                                        "ScanCount, " +
                                                        "VenueName, " +
                                                        "ScanTime, " +
                                                        "Accuracy, " +
                                                        "Altitude, " +
                                                        "LocationStatus, " +
                                                        "Latitude, " +
                                                        "Longitude, " +
                                                        "TimeStamp" +
                                                        ")" +
                                                        "VALUES " +
                                                        "(" +
                                                        //"@BeaconInterval," +
                                                        "@Bssid," +
                                                        //"@ChannelCenterFrequencyInKilohertz," +
                                                        //"@IsWiFiDirect," +
                                                        //"@NetworkKind," +
                                                        "@NetworkRssiInDecibelMilliwatts," +
                                                        //"@PhyKind," +
                                                        //"@SecuritySettings," +
                                                        //"@SignalBars," +
                                                        "@Ssid," +
                                                        "@Uptime," +
                                                        "@ScanCount, " +
                                                        "@VenueName," +
                                                        "@ScanTime," +
                                                        "@Accuracy," +
                                                        "@Altitude," +
                                                        "@LocationStatus," +
                                                        "@Latitude," +
                                                        "@Longitude," +
                                                        "@TimeStamp" +
                                                        ")";
                            ////insertCommand.Parameters.AddWithValue("@BeaconInterval", wifiSignal.BeaconInterval.Ticks); //long INTEGER
                            insertCommand.Parameters.AddWithValue("@Bssid", wifiSignal.Bssid); //string TEXT
                            //insertCommand.Parameters.AddWithValue("@ChannelCenterFrequencyInKilohertz", wifiSignal.ChannelCenterFrequencyInKilohertz); //double REAL
                            //insertCommand.Parameters.AddWithValue("@IsWiFiDirect", (wifiSignal.IsWiFiDirect) ? 1 : 0); //bool INTEGER
                            //insertCommand.Parameters.AddWithValue("@NetworkKind", wifiSignal.NetworkKind); //string TEXT
                            insertCommand.Parameters.AddWithValue("@NetworkRssiInDecibelMilliwatts", wifiSignal.NetworkRssiInDecibelMilliwatts); //double REAL
                            //insertCommand.Parameters.AddWithValue("@PhyKind", wifiSignal.PhyKind); //string TEXT
                            //insertCommand.Parameters.AddWithValue("@SecuritySettings", wifiSignal.SecuritySettings); //string TEXT
                            //insertCommand.Parameters.AddWithValue("@SignalBars", wifiSignal.SignalBars); //byte INTEGER
                            insertCommand.Parameters.AddWithValue("@Ssid", wifiSignal.Ssid);                                              //string TEXT
                            insertCommand.Parameters.AddWithValue("@Uptime", wifiSignal.Uptime.Ticks);                                    //long INTEGER
                            insertCommand.Parameters.AddWithValue("@ScanCount", (long)count);                                             //long INTEGER
                            insertCommand.Parameters.AddWithValue("@VenueName", wifiSignal.VenueName);                                    //string TEXT
                            insertCommand.Parameters.AddWithValue("@ScanTime", wifiSignal.ScanTime.ToString("yyyy-MM-dd HH:mm"));         //string TEXT
                            insertCommand.Parameters.AddWithValue("@Accuracy", gpsSignal.Accuracy);                                       //double REAL
                            insertCommand.Parameters.AddWithValue("@Altitude", gpsSignal.Altitude);                                       //double REAL
                            insertCommand.Parameters.AddWithValue("@LocationStatus", gpsSignal.GetLocationStatus());                      //string TEXT
                            insertCommand.Parameters.AddWithValue("@Latitude", gpsSignal.Latitude);                                       //double REAL
                            insertCommand.Parameters.AddWithValue("@Longitude", gpsSignal.Longitude);                                     //double REAL
                            insertCommand.Parameters.AddWithValue("@TimeStamp", gpsSignal.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss.fff")); //string TEXT

                            try
                            {
                                insertCommand.ExecuteNonQuery();
                            }
                            catch (SqliteException e)
                            {
                                throw new Exception("SQL table INSERT not performed" + count.ToString());
                            }
                        }
                    }
                    database.Close(); database.Dispose();
                }

                Output.ItemsSource = ReadWifiScannerDatabase;
            }
        }