/// <summary> /// Disable the Soft AP for next restart. /// </summary> public static void Disable() { WirelessAPConfiguration wapconf = GetConfiguration(); wapconf.Options = WirelessAPConfiguration.ConfigurationOptions.None; wapconf.SaveConfiguration(); }
/// <summary> /// Set-up the Wireless AP settings, enable and save /// </summary> /// <returns>True if already set-up</returns> public static bool Setup() { string SoftApIP = "192.168.4.1"; NetworkInterface ni = GetInterface(); WirelessAPConfiguration wapconf = GetConfiguration(); // Check if already Enabled and return true if (wapconf.Options == (WirelessAPConfiguration.ConfigurationOptions.Enable | WirelessAPConfiguration.ConfigurationOptions.AutoStart) && ni.IPv4Address == SoftApIP) { return(true); } // Set up IP address for Soft AP ni.EnableStaticIPv4(SoftApIP, "255.255.255.0", SoftApIP); // Set Options for Network Interface // // Enable - Enable the Soft AP ( Disable to reduce power ) // AutoStart - Start Soft AP when system boots. // HiddenSSID- Hide the SSID // wapconf.Options = WirelessAPConfiguration.ConfigurationOptions.AutoStart | WirelessAPConfiguration.ConfigurationOptions.Enable; // Set the SSID for Access Point. If not set will use default "nano_xxxxxx" //wapconf.Ssid = "MySsid"; // Maximum number of simultaneous connections, reserves memory for connections wapconf.MaxConnections = 1; // To set-up Access point with no Authentication wapconf.Authentication = AuthenticationType.Open; wapconf.Password = ""; // To set up Access point with no Authentication. Password minimum 8 chars. //wapconf.Authentication = AuthenticationType.WPA2; //wapconf.Password = "******"; // Save the configuration so on restart Access point will be running. wapconf.SaveConfiguration(); return(false); }
/// <summary> /// Event handler for Stations connecting or Disconnecting /// </summary> /// <param name="NetworkIndex">The index of Network Interface raising event</param> /// <param name="e">Event argument</param> private static void NetworkChange_NetworkAPStationChanged(int NetworkIndex, NetworkAPStationEventArgs e) { Debug.WriteLine($"NetworkAPStationChanged event Index:{NetworkIndex} Connected:{e.IsConnected} Station:{e.StationIndex} "); // if connected then get information on the connecting station if (e.IsConnected) { WirelessAPConfiguration wapconf = WirelessAPConfiguration.GetAllWirelessAPConfigurations()[0]; WirelessAPStation station = wapconf.GetConnectedStations(e.StationIndex); string macString = BitConverter.ToString(station.MacAddress); Debug.WriteLine($"Station mac {macString} Rssi:{station.Rssi} PhyMode:{station.PhyModes} "); connectedCount++; // Start web server when it connects otherwise the bind to network will fail as // no connected network. Start web server when first station connects if (connectedCount == 1) { // Wait for Station to be fully connected before starting web server // other you will get a Network error Thread.Sleep(2000); server.Start(); } } else { // Station disconnected. When no more station connected then stop web server if (connectedCount > 0) { connectedCount--; if (connectedCount == 0) { server.Stop(); } } } }
/// <summary> /// Find the Wireless AP configuration /// </summary> /// <returns>Wireless AP configuration or NUll if not available</returns> public static WirelessAPConfiguration GetConfiguration() { NetworkInterface ni = GetInterface(); return(WirelessAPConfiguration.GetAllWirelessAPConfigurations()[ni.SpecificConfigId]); }