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; }
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); }
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); }
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) ); }
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); }
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) ); }