示例#1
0
        public static TypeACSettings ParseAC(byte[] ies)
        {

            var informationElements = BuildInformationElements(ies);
            var settings = new TypeACSettings();
            bool returnNull = true;

            foreach (var informationElement in informationElements)
            {
                switch (informationElement.ItsNumber)
                {
                    case 45: //HT Capabilities
                        ParseHTCapabilities(informationElement, settings);
                        returnNull = false;
                        break;
                    case 61: //HT Information
                        ParseHTOperation(informationElement, settings);
                        returnNull = false;
                        break;
                    case 191: //VHT Capabilities
                        ParseVHTCapabilities(informationElement, settings);
                        break;
                    case 192: //VHT Operation
                        ParseVHTOperation(informationElement, settings);
                        break;
                }
            }

            return returnNull ? null : settings;
        }
示例#2
0
        public static TypeACSettings ParseAC(byte[] ies)
        {
            var  informationElements = BuildInformationElements(ies);
            var  settings            = new TypeACSettings();
            bool returnNull          = true;

            foreach (var informationElement in informationElements)
            {
                switch (informationElement.ItsNumber)
                {
                case 45:     //HT Capabilities
                    ParseHTCapabilities(informationElement, settings);
                    returnNull = false;
                    break;

                case 61:     //HT Information
                    ParseHTOperation(informationElement, settings);
                    returnNull = false;
                    break;

                case 191:     //VHT Capabilities
                    ParseVHTCapabilities(informationElement, settings);
                    break;

                case 192:     //VHT Operation
                    ParseVHTOperation(informationElement, settings);
                    break;
                }
            }

            return(returnNull ? null : settings);
        }
示例#3
0
        private static void ParseVHTCapabilities(InformationElement ie, TypeACSettings settings)
        {
            settings.Capabilities = new TypeACSettings.VHTCapabilities();

            var capabilities = new byte[4];

            Array.Copy(ie.ItsData, 0, capabilities, 0, 4);

            var supportedMCS = new byte[8];

            Array.Copy(ie.ItsData, 4, supportedMCS, 0, 8);

            var supportedChannelWidth = (capabilities[0] & 0x0C) >> 2;

            switch (supportedChannelWidth)
            {
            case 1:
                settings.Capabilities.Supports160Mhz = true;
                break;

            case 2:
                settings.Capabilities.Supports80Plus80Mhz = true;
                settings.Capabilities.Supports160Mhz      = true;
                break;
            }

            settings.Capabilities.ShortGi160MHz = (capabilities[0] & 0x40) == 0x40;
            settings.Capabilities.ShortGi80MHz  = (capabilities[0] & 0x20) == 0x20;

            settings.Capabilities.MaxRecieveRate  = BitConverter.ToUInt16(supportedMCS, 2);
            settings.Capabilities.MaxTransmitRate = BitConverter.ToUInt16(supportedMCS, 6);
        }
示例#4
0
        private static void ParseVHTOperation(InformationElement ie, TypeACSettings settings)
        {
            settings.Operations = new TypeACSettings.VHTOperations();

            var operations = new byte[4];

            Array.Copy(ie.ItsData, 0, operations, 0, 3);

            var basicMCSSet = new byte[8];

            Array.Copy(ie.ItsData, 3, basicMCSSet, 0, 2);

            settings.Operations.ChannelWidth =
                (TypeACSettings.VHTOperations.VHTChannelWidth)Enum.Parse(
                    typeof(TypeACSettings.VHTOperations.VHTChannelWidth),
                    operations[0].ToString(CultureInfo.InvariantCulture)
                    );
        }
示例#5
0
        private static void ParseVHTCapabilities(InformationElement ie, TypeACSettings settings)
        {
            settings.Capabilities = new TypeACSettings.VHTCapabilities();

            var capabilities = new byte[4];
            Array.Copy(ie.ItsData, 0, capabilities, 0, 4);

            var supportedMCS = new byte[8];
            Array.Copy(ie.ItsData, 4, supportedMCS, 0, 8);

            var supportedChannelWidth = ( capabilities[0] & 0x0C ) >> 2;

            switch (supportedChannelWidth)
            {
                case 1:
                    settings.Capabilities.Supports160Mhz = true;
                    break;
                case 2:
                    settings.Capabilities.Supports80Plus80Mhz = true;
                    settings.Capabilities.Supports160Mhz = true;
                    break;
            }

            settings.Capabilities. ShortGi160MHz = (capabilities[0] & 0x40) == 0x40;
            settings.Capabilities.ShortGi80MHz = (capabilities[0] & 0x20) == 0x20;

            settings.Capabilities.MaxRecieveRate = BitConverter.ToUInt16(supportedMCS, 2);
            settings.Capabilities.MaxTransmitRate = BitConverter.ToUInt16(supportedMCS, 6);
        }
示例#6
0
        private static void ParseVHTOperation(InformationElement ie, TypeACSettings settings)
        {
            settings.Operations = new TypeACSettings.VHTOperations();

            var operations = new byte[4];
            Array.Copy(ie.ItsData, 0, operations, 0, 3);

            var basicMCSSet = new byte[8];
            Array.Copy(ie.ItsData, 3, basicMCSSet, 0, 2);

            settings.Operations.ChannelWidth = 
                (TypeACSettings.VHTOperations.VHTChannelWidth) Enum.Parse(
                    typeof(TypeACSettings.VHTOperations.VHTChannelWidth), 
                    operations[0].ToString(CultureInfo.InvariantCulture)
                    );
        }