private static Link_Parameters_Report ReportBuilder(ushort subType, ushort value) { //Link Identification Information Link_Addr linkAddr = new Link_Addr(Link_Addr.Address_Type.MAC_ADDR, Information.GenericInfo.PhysicalAddress.ToString()); Link_Id linkId = new Link_Id(linkType, linkAddr); Link_Tuple_Id linkTuppleId = new Link_Tuple_Id(linkId, linkAddr); Link_Tuple_Id nicTupple = new Link_Tuple_Id(linkId, linkAddr); //Specified Parameter information and report building List<Link_Param_Rpt> paramsList = new List<Link_Param_Rpt>(); Link_Param_Type linkParamType = new Link_Param_Type(Link_Param_Types.LINK_PARAM_GEN, subType); Link_Param linkParam = new Link_Param(linkParamType, value); Link_Param_Rpt reportSingle = new Link_Param_Rpt(linkParam, null); paramsList.Add(reportSingle); return new Link_Parameters_Report(nicTupple, paramsList); }
/// <summary> /// Generates a Link_Parameters_Report.Indication message, reporting the specified value of the specified parameter type. /// </summary> /// <param name="src">The source MIHF ID</param> /// <param name="dst">The destination MIHF ID</param> /// <param name="APMac">The Physical Address of the Access Point (corresponding to the active link)</param> /// <param name="networkSSID">The SSID for the active link</param> /// <param name="paramType">The type of parameter to report</param> /// <param name="value">The value of the parameter</param> /// <returns>A Link_Parameters_Report.Indication message ready to be sent.</returns> public static Message Link_Parameters_Report_Indication_MsgBuilder(ID src, ID dst, PhysicalAddress APMac, byte[] networkSSID, Link_Param_Abs_Type paramType, ushort value ) { Message m = new Message(); m.MIHHeader = new MIHHeader(); m.MIHHeader.MID = new MessageID(MessageID.ServiceIdentifier.EVENT_SERVICE, MessageID.OperationCode.INDICATION, 5); m.MIHHeader.VersionValue = 1; Link_Tuple_Id linkIdentifier = new Link_Tuple_Id( new Link_Id(Link_Type.Wireless_IEEE80211, new Link_Addr(Link_Addr.Address_Type.MAC_ADDR, Utilities.PhysicalAddressToString(APMac))), new Link_Addr(Link_Addr.Address_Type.OTHER_L2_ADDR, new String(Encoding.ASCII.GetChars(networkSSID)))); Link_Param_Rpt lpr = new Link_Param_Rpt( new Link_Param( Link_Param_Type.FromAbsType(paramType), (ushort)value, 0 /*TODO 0=LinkParamVal (choice)*/), null); List<byte[]> lprList = new List<byte[]>(); lprList.Add(lpr.ByteValue); m.Payload = new Payload(src, dst, Serialization.SerializeToTLV(TLV_VALUES.TLV_LINK_IDENTIFIER, linkIdentifier.ByteValue), Serialization.SerializeToTLV(TLV_VALUES.TLV_LINK_PARAM_REPORT_LIST, Serialization.EncodingList(lprList.ToArray()))); m.MIHHeader.PayloadLength = (ushort)m.Payload.PayloadValue.Length; return m; }