internal static InterfaceRadio GetInterfaceRadio(Base.WlanClient client, Guid interfaceId) { if (interfaceId == Guid.Empty) { throw new ArgumentException(nameof(interfaceId)); } using (var container = new DisposableContainer <Base.WlanClient>(client)) { var capability = Base.GetInterfaceCapability(container.Content.Handle, interfaceId); var states = Base.GetPhyRadioStates(container.Content.Handle, interfaceId); // The underlying collection is array. if ((capability.interfaceType == WLAN_INTERFACE_TYPE.wlan_interface_type_invalid) || (capability.dwNumberOfSupportedPhys != states.Count())) { return(null); } var radioSets = Enumerable.Zip( capability.dot11PhyTypes, states.OrderBy(x => x.dwPhyIndex), (x, y) => new RadioSet( type: PhyTypeConverter.Convert(x), softwareOn: ConvertToNullableBoolean(y.dot11SoftwareRadioState), hardwareOn: ConvertToNullableBoolean(y.dot11HardwareRadioState))); return(new InterfaceRadio( id: interfaceId, radioSets: radioSets)); } }
private static IEnumerable <RadioSet> EnumerateInterfaceRadioSets(Base.WlanClient client, Guid interfaceId) { var capability = Base.GetInterfaceCapability(client.Handle, interfaceId); var states = Base.GetPhyRadioStates(client.Handle, interfaceId); // The underlying collection is array. if ((capability.interfaceType == WLAN_INTERFACE_TYPE.wlan_interface_type_invalid) || (capability.dwNumberOfSupportedPhys != states.Count())) { return(Enumerable.Empty <RadioSet>()); } return(Enumerable.Zip( capability.dot11PhyTypes, states.OrderBy(x => x.dwPhyIndex), (x, y) => new RadioSet( type: PhyTypeConverter.Convert(x), hardwareOn: ConvertToNullableBoolean(y.dot11HardwareRadioState), softwareOn: ConvertToNullableBoolean(y.dot11SoftwareRadioState)))); bool?ConvertToNullableBoolean(DOT11_RADIO_STATE source) { switch (source) { case DOT11_RADIO_STATE.dot11_radio_state_on: return(true); case DOT11_RADIO_STATE.dot11_radio_state_off: return(false); default: return(null); } } }
private static IEnumerable <RadioSet> EnumerateInterfaceRadioSets(Base.WlanClient client, Guid interfaceId) { var capability = Base.GetInterfaceCapability(client.Handle, interfaceId); var states = Base.GetPhyRadioStates(client.Handle, interfaceId); // The underlying collection is array. if ((capability.interfaceType == WLAN_INTERFACE_TYPE.wlan_interface_type_invalid) || (capability.dwNumberOfSupportedPhys != states.Count()) || (capability.dot11PhyTypes?.Any() is not true)) // This value may be null. { return(Enumerable.Empty <RadioSet>()); } return(Enumerable.Zip( capability.dot11PhyTypes, states.OrderBy(x => x.dwPhyIndex), (x, y) => new RadioSet( type: PhyTypeConverter.Convert(x), hardwareOn: ConvertToNullableBoolean(y.dot11HardwareRadioState), softwareOn: ConvertToNullableBoolean(y.dot11SoftwareRadioState))));