/// <summary> /// Creates a Link_Detected.Indication message /// </summary> /// <param name="srcID">The local node ID</param> /// <param name="dstID">The destination MIHF ID</param> /// <param name="BSSID">The link's BSSID (the MAC of the access point).</param> /// <param name="SSID">The link's SSID.</param> /// <param name="linkQuality">The link quality for the specified link.</param> /// <param name="rssi">The RSSI (Received Signal Strength Indication) for this link.</param> /// <param name="maxRate">The max transfer rate on this connection.</param> /// <returns>A fully encoded, ready to be sent Message representing a LinkDetected indication</returns> public static Message Link_Detected_Indication_MsgBuilder(ID srcID, ID dstID, byte[] BSSID, byte[] SSID, uint linkQuality, int rssi, int maxRate) { Message m = new Message(); m.MIHHeader = new MIHHeader(); m.MIHHeader.MID = new MessageID(MessageID.ServiceIdentifier.EVENT_SERVICE, MessageID.OperationCode.INDICATION, 1); m.MIHHeader.VersionValue = 1; //byte[] hessid = new byte[entry.dot11Bssid.Length + 1]; string hessid = Utilities.PhysicalAddressToString(new PhysicalAddress(BSSID)); //hessid[0] = BitConverter.GetBytes(entry.dot11Bssid.Length)[0]; //for (int i = 0; i < entry.dot11Bssid.Length; i++) // hessid[1 + i] = entry.dot11Bssid[i]; Link_Det_Info linkDetInfo = new Link_Det_Info( new Link_Tuple_Id( new Link_Id(Link_Type.Wireless_IEEE80211, new Link_Addr(Link_Addr.Address_Type.OTHER_L2_ADDR, new string(Encoding.ASCII.GetChars(SSID)))), new Link_Addr(Link_Addr.Address_Type.MAC_ADDR, Utilities.PhysicalAddressToString(new PhysicalAddress(BSSID)))), new OctetString(new String(Encoding.ASCII.GetChars(SSID))), new OctetString(hessid), linkQuality, rssi, 0, (int)((double)(maxRate) * 8) / 1024, new Link_MIHCap_Flag(true, true, true), new Net_Caps(false, false, false, false, false, false, false, true, false, true)); m.Payload = new Payload(srcID, dstID, Serialization.SerializeToTLV(TLV_VALUES.TLV_LINK_DET_INFO, linkDetInfo.ByteVal)); m.MIHHeader.PayloadLength = (ushort)m.Payload.PayloadValue.Length; return m; }
public static byte[] TLVLinkDetectedInfo(Link_Det_Info linkDetInfo) { return Serialization.SerializeToTLV(TLV_VALUES.TLV_LINK_DET_INFO, linkDetInfo.ByteVal); }
/// <summary> /// Standard constructor. /// </summary> /// <param name="lInfo"></param> public Link_Detected(Link_Det_Info lInfo) { this.Info = lInfo; }