Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
        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))));