Example #1
0
        void InitWiFi()
        {
            wlan = new WlanClient();
            //foreach (WlanClient.WlanInterface wlanIface in wlan.Interfaces)
            {
                try
                {
                    drone_network = wlan.Interfaces[0].CurrentConnection.wlanAssociationAttributes;
                    Wlan.Dot11Ssid _ssid = drone_network.dot11Ssid;

                    string SSID = GetStringForSSID(_ssid);
                    this.Details.DroneWiFiName = SSID;
                }
                catch { }
            }
        }
Example #2
0
        public void checkCurrentWirelessCon()
        {
            String device1;
            String device2;

            foreach (WlanClient.WlanInterface wlanIface in client.Interfaces)
            {
                //Wlan.WlanAssociationAttributes conAttributes;
                //Wlan.Dot11Ssid ssid = conAttributes.dot11Ssid;
                String nameOfSSID = null;

                try
                {
                    Wlan.WlanAssociationAttributes conAttributes = wlanIface.CurrentConnection.wlanAssociationAttributes;
                    Wlan.Dot11Ssid ssid = conAttributes.dot11Ssid;
                    nameOfSSID = GetStringForSSID(ssid);
                    device1    = (String)list2.Items[0];
                    device2    = (String)list2.Items[1];
                }
                catch (Exception e)
                {
                    tgbtn2.Content = "Unsecured";
                    // If for some reason the device name is not populated then initialize it to NULL .
                    device1 = null;
                    device2 = null;
                    MessageBox.Show("Your computer is not connected to wireless networks! Retry");

                    log.dispatchLogMessage("MainServices: " + e.ToString());
                }
                if (device1 != null && device2 != null)
                {
                    if (nameOfSSID != device1)
                    {
                        if (nameOfSSID != device2)
                        {
                            var msg = "MainServices (checkWirelessConnection): Wireless connection is BROKEN ! Locking the system . ";
                            log.dispatchLogMessage(msg);
                            startWireless = 2;
                            LockWorkStation();
                            unregisterWlanListener();
                        }
                    }
                }
            }
        }
Example #3
0
        public IEnumerable <NetworkData> GetNetworkData()
        {
            List <NetworkData> list = new List <NetworkData>();

            //If the interface is null, return nothing
            if (_interface == null)
            {
                return(list);
            }

            IEnumerable <Wlan.WlanBssEntryN>        networkBssList       = null;
            IEnumerable <Wlan.WlanAvailableNetwork> availableNetworkList = null;

            try
            {
                networkBssList       = _interface.GetNetworkBssList();
                availableNetworkList = _interface.GetAvailableNetworkList(Wlan.WlanGetAvailableNetworkFlags.IncludeAllManualHiddenProfiles);
            }
            catch (NullReferenceException)
            {
                //Hopefully the call will succeed next time.
            }
            if ((networkBssList != null) && (availableNetworkList != null))
            {
                //Get connected to AP
                Wlan.WlanAssociationAttributes connectedAP = new Wlan.WlanAssociationAttributes();
                try
                {
                    if (_interface.CurrentConnection.isState == Wlan.WlanInterfaceState.Connected)
                    {
                        connectedAP = _interface.CurrentConnection.wlanAssociationAttributes;
                    }
                }
                catch (NullReferenceException) { /*Hopefully it will work next time*/ }

                Wlan.WlanAvailableNetwork foundNetwork = new Wlan.WlanAvailableNetwork();
                foreach (Wlan.WlanBssEntryN entry in networkBssList)
                {
                    string ssid = Encoding.ASCII.GetString(entry.BaseEntry.dot11Ssid.SSID, 0,
                                                           (int)entry.BaseEntry.dot11Ssid.SSIDLength);
                    if (FindNetwork(ssid, availableNetworkList, ref foundNetwork))
                    {
                        NetworkData item = new NetworkData(entry.BaseEntry.dot11Bssid);
                        item.IsTypeN = (entry.BaseEntry.dot11BssPhyType == Wlan.Dot11PhyType.Ht);
                        if (item.IsTypeN && entry.IEs != null && entry.IEs.Length > 0)
                        {
                            item.NSettings = IeParser.Parse(entry.IEs);
                            if (item.NSettings == null)
                            {
                                return(null);
                            }

                            //Add the extended 802.11N rates
                            item.Rates.AddRange(item.NSettings.Rates.Where(f => !item.Rates.Contains(f)));
                            item.Rates.Sort();
                        }

                        Utilities.ConvertToMbs(entry.BaseEntry.wlanRateSet.Rates, item.Rates);

                        item.IsTypeN = entry.BaseEntry.dot11BssPhyType == Wlan.Dot11PhyType.Ht;
                        int num = Utilities.ComputeRssi(entry.BaseEntry.linkQuality);
                        item.Rssi = (entry.BaseEntry.rssi > num) ? entry.BaseEntry.rssi : num;

                        // tyler's fix
                        // Sometimes there is an issue where the RSSI will become overly positive
                        // (e.g. going from -96 to +160), so subtracting 256 will fix it.
                        if (item.Rssi > 0)
                        {
                            item.Rssi -= 256;
                        }

                        item.Ssid        = ssid;
                        item.Channel     = Utilities.ConvertToChannel(entry.BaseEntry.chCenterFrequency);
                        item.NetworkType = Utilities.ConvertToString(entry.BaseEntry.dot11BssType);
                        item.Security    = Utilities.CreateSecurityString(foundNetwork.dot11DefaultAuthAlgorithm,
                                                                          foundNetwork.dot11DefaultCipherAlgorithm);
                        item.SignalQuality = foundNetwork.wlanSignalQuality;

                        //Check to see if this AP is the connected one
                        item.Connected = item.MyMacAddress.CompareToPhysicalAddress(connectedAP.Dot11Bssid);

                        list.Add(item);
                    }
                }
            }
            return(list);
        }
Example #4
0
        public void wlanConnectionChangeHandler(Wlan.WlanNotificationData notifyData, Wlan.WlanConnectionNotificationData connNotifyData)
        {
            string msg     = String.Empty;
            String device1 = String.Empty;
            String device2 = String.Empty;

            switch (notifyData.notificationSource)
            {
            case Wlan.WlanNotificationSource.ACM:

                switch ((Wlan.WlanNotificationCodeAcm)notifyData.notificationCode)
                {
                case Wlan.WlanNotificationCodeAcm.ConnectionStart:
                    msg = "ConnectionStart";
                    break;

                case Wlan.WlanNotificationCodeAcm.ConnectionComplete:
                    msg = "ConnectionComplete";
                    //WlanClient client = new WlanClient();
                    foreach (WlanClient.WlanInterface wlanIface in client.Interfaces)
                    {
                        Wlan.WlanAssociationAttributes conAttributes = wlanIface.CurrentConnection.wlanAssociationAttributes;
                        Wlan.Dot11Ssid ssid = conAttributes.dot11Ssid;
                        try
                        {
                            device1 = (String)list2.Items[0];
                            device2 = (String)list2.Items[1];
                        }
                        catch (Exception e)
                        {
                            // If for some reason the device name is not populated then initialize it to NULL .
                            device1 = null;
                            device2 = null;
                        }
                        if (device1 != null && device2 != null)
                        {
                            if (GetStringForSSID(ssid) != device1)
                            {
                                if (GetStringForSSID(ssid) != device2)
                                {
                                    msg = "MainServices (connectionChange Handler): Wireless connection is BROKEN ! Locking the system . ";
                                    log.dispatchLogMessage(msg);
                                    startWireless = 2;
                                    LockWorkStation();
                                    unregisterWlanListener();
                                }
                            }
                        }
                        break;
                    }

                    break;

                case Wlan.WlanNotificationCodeAcm.Disconnecting:
                    msg = "Disconnecting";
                    break;

                case Wlan.WlanNotificationCodeAcm.Disconnected:
                    msg = "Disconnected";
                    break;

                default:
                    msg = "unknown notificationCode =" + notifyData.notificationCode;
                    break;
                }
                //MessageBox.Show(msg + " for profile:" + connNotifyData.profileName);
                break;

            default:
                //MessageBox.Show("irrelevant notification. Ignore");
                break;
            }
        }
Example #5
0
        void tmrStatusUpdate_Tick(object sender, EventArgs e)
        {
            List <string> alert_msgs = new List <string>();

            #region 1
            if (_droneClient.IsConnected)
            {
                if (ConnectedMessageSent == false)
                {
                    Debug("Connected");
                    ConnectedMessageSent = true;
                }
            }
            #endregion

            #region // wifi signal strength
            if (wlan != null)
            {
                double signal_strength = 0.0d;

                try
                {
                    drone_network = wlan.Interfaces[0].CurrentConnection.wlanAssociationAttributes;
                    Wlan.Dot11Ssid _ssid = drone_network.dot11Ssid;
                    string         SSID  = GetStringForSSID(_ssid);
                    signal_strength = drone_network.wlanSignalQuality;

                    this.Details.DroneWiFiName      = SSID;
                    this.Details.WiFiSignalStrength = signal_strength;

                    string alert = "WARNING! WiFi signal is below 25%. Navigate back now!";

                    if (this.Details.WiFiSignalStrength < 25)
                    {
                        if (!alert_msgs.Contains(alert))
                        {
                            alert_msgs.Add(alert);
                        }
                    }
                    else
                    {
                        alert_msgs.Remove(alert);
                    }
                }
                catch { }
            }
            #endregion

            #region 2
            if (_navigationData != null)
            {
                // battery
                this.Details.BatteryLevel = (int)this._navigationData.Battery.Percentage;
                string alert = "WARNING! Battery is below 25%";

                if (this._navigationData.Battery.Percentage < 25)
                {
                    if (!alert_msgs.Contains(alert))
                    {
                        alert_msgs.Add(alert);
                    }
                }
                else
                {
                    alert_msgs.Remove(alert);
                }

                //this.attitudeControl.SetAttitudeIndicatorParameters(_navigationData.Pitch, -_navigationData.Roll);
                this.Details.Pitch = _navigationData.Pitch;
                this.Details.Roll  = -_navigationData.Roll;

                if (_navigationData.Yaw > 0)
                {
                    //this.headingControl.SetHeadingIndicatorParameters(Convert.ToInt32(_navigationData.Yaw));

                    //rotate_y.Angle = -_navigationData.Yaw;
                    this.Details.Yaw = _navigationData.Yaw;
                    //this.Details.RotateY = -_navigationData.Yaw;
                }
                else
                {
                    float y = (360 + _navigationData.Yaw);

                    //this.headingControl.SetHeadingIndicatorParameters(y);

                    this.Details.Yaw = y;
                    //this.Details.RotateY = -y;
                }

                this.Details.RotateX = -_navigationData.Pitch;
                this.Details.RotateZ = _navigationData.Roll;

                this.Details.Altitude = _navigationData.Altitude;

                UpdateAttitudeIndicator((int)_navigationData.Pitch, (int)_navigationData.Roll);

                //this.altimeterControl.SetAlimeterParameters((int)_navigationData.Altitude);

                Console.WriteLine("Pitch: {0}, Roll: {1}, Yaw: {2}", this.Details.Pitch, this.Details.Roll, this.Details.Yaw);
            }
            #endregion

            if (alert_msgs.Count > 0)
            {
                string alerts = string.Empty;
                alerts = string.Join("\r\n", alert_msgs.ToArray());
                ShowAlertStatus(alerts, true);
            }
            else
            {
                ShowAlertStatus(string.Empty, false);
            }
        }