private void DoTest(ElementType elementType, params bool[] inRange) { int[] rangeTestValues = { -100, 100, 200, -30000, 30000, 60000, -2000000000, 2000000000 /*, 4000000000*/ }; int TestRangesCount = rangeTestValues.Length; // bool[] inRangeValid_Complete = new bool[TestRangesCount]; inRange.CopyTo(inRangeValid_Complete, 0); // for (int i = 0; i < inRangeValid_Complete.Length; ++i) { int value = rangeTestValues[i]; try { ServiceElement.CreateNumericalServiceElement(elementType, value); if (!inRangeValid_Complete[i]) { Assert.Fail("Invalid value for ServiceElement but didn't fail: '" + elementType + "' i=" + i); } } catch (ArgumentOutOfRangeException /*expectedEx*/) { if (inRangeValid_Complete[i]) { Assert.Fail("Valid value for ServiceElement but failed: '" + elementType + "' i=" + i); } } } }
public void SequenceHoldingUInt16() { byte[] expectedDataValue = { 0x34, 0xF5 }; DoTest_HackOneSeqDeep(StackConsts.SDP_Data_Element_Type.UnsignedInteger2Bytes, expectedDataValue, new ServiceElement(ElementType.ElementSequence, ServiceElement.CreateNumericalServiceElement(ElementType.UInt16, 0xF534))); }
private void DoTest_Invalid(ElementType elementType, object value) { try { ServiceElement.CreateNumericalServiceElement(elementType, value); Assert.Fail("Value '" + value + "' should have failed with element type '" + elementType + "'"); } catch (ArgumentOutOfRangeException ex) { Code.AssertIsElementNumericalInvalidError(ex); } }
static ServiceRecord Documentation_SRB_Simple_() { ServiceRecordBuilder bldr = new ServiceRecordBuilder(); bldr.AddServiceClass(BluetoothService.SerialPort); bldr.ServiceName = "Alan's SPP service"; bldr.AddCustomAttribute(new ServiceAttribute(0x8001, ServiceElement.CreateNumericalServiceElement(ElementType.UInt16, 0xFEDC))); // ServiceRecord record = bldr.ServiceRecord; return(record); }
static void jarmhartWorkee() { // Serial port profile ServiceElement[] pSerialPortElements = new ServiceElement[2]; pSerialPortElements[0] = new ServiceElement(ElementType.Uuid16, (UInt16)0x1101); // CRASHES pSerialPortElements[1] = new ServiceElement(ElementType.UInt16, (UInt16)0x100); // -or- pSerialPortElements[1] = ServiceElement.CreateNumericalServiceElement(ElementType.UInt16, 0x100); ServiceElement Serial = new ServiceElement(ElementType.ElementSequence, pSerialPortElements); }
public void CustomOne() { // Rfcomm/StdSvcClass/SvcName ServiceRecordBuilder bldr = new ServiceRecordBuilder(); bldr.AddServiceClass(BluetoothService.SerialPort); bldr.ServiceName = "Hello World!"; ServiceAttribute attr = new ServiceAttribute( UniversalAttributeId.ServiceAvailability, ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 255)); bldr.AddCustomAttribute(attr); DoTest(ServiceRecordBuilderTests_Data.OnePlusNamePlusCustomOne, bldr); }
public void GetChannelByte_Bad_RfcommPortElementNotUint8() { var layer0 = new ServiceElement(ElementType.ElementSequence, new ServiceElement(ElementType.Uuid16, Uuid16_L2CapProto)); // L2CAP var layer1Bad = new ServiceElement(ElementType.ElementSequence, new ServiceElement(ElementType.Uuid16, Uuid16_RfcommProto), //RFCOMM ServiceElement.CreateNumericalServiceElement(ElementType.UInt16, 5)); ServiceRecord rcd = new ServiceRecord( new ServiceAttribute(UniversalAttributeId.ProtocolDescriptorList, new ServiceElement(ElementType.ElementSequence, layer0, layer1Bad))); int value = ServiceRecordHelper.GetRfcommChannelNumber(rcd); Assert.AreEqual(-1, value); }
public void GetChannelByte_Bad_PdlFirstNotL2CAP() { var layer0Bad = new ServiceElement(ElementType.ElementSequence, new ServiceElement(ElementType.Uuid16, Uuid16_Wierdo)); // not L2CAP var layer1 = new ServiceElement(ElementType.ElementSequence, new ServiceElement(ElementType.Uuid16, Uuid16_RfcommProto), ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 5)); // RFCOMM ServiceRecord rcd = new ServiceRecord( new ServiceAttribute(UniversalAttributeId.ProtocolDescriptorList, new ServiceElement(ElementType.ElementSequence, layer0Bad, layer1))); int value = ServiceRecordHelper.GetRfcommChannelNumber(rcd); Assert.AreEqual(-1, value); }
public void CustomTwoParamArray() { // Rfcomm/StdSvcClass/SvcName ServiceRecordBuilder bldr = new ServiceRecordBuilder(); bldr.AddServiceClass(BluetoothService.SerialPort); bldr.ServiceName = "Hello World!"; bldr.AddCustomAttributes( new ServiceAttribute( UniversalAttributeId.ServiceAvailability, ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 255)), new ServiceAttribute( UniversalAttributeId.ServiceInfoTimeToLive, ServiceElement.CreateNumericalServiceElement(ElementType.UInt32, 56623104)) ); DoTest(ServiceRecordBuilderTests_Data.OnePlusNamePlusCustomTwo, bldr); }
private static ServiceRecord CreateAVariousRecord() { MyFunc <ElementType, ServiceAttributeId> createId = delegate(ElementType etX) { return((ServiceAttributeId)0x4000 + checked ((byte)etX)); }; ServiceRecordBuilder bldr = new ServiceRecordBuilder(); bldr.AddServiceClass(BluetoothService.HealthDevice); bldr.ServiceName = "alan"; IList <ServiceAttribute> attrList = new List <ServiceAttribute>(); ElementType et_; #if SUPPORT_NIL et_ = ElementType.Nil; attrList.Add(new ServiceAttribute(createId(et_), new ServiceElement(et_, null))); #endif et_ = ElementType.Boolean; attrList.Add(new ServiceAttribute(createId(et_), new ServiceElement(et_, true))); ElementType[] weee = { ElementType.UInt8, ElementType.UInt16, ElementType.UInt32, //UInt64, UInt128, ElementType.Int8, ElementType.Int16, ElementType.Int32, //Int64, Int128, }; foreach (ElementType et in weee) { attrList.Add(new ServiceAttribute( createId(et), ServiceElement.CreateNumericalServiceElement(et, (uint)et))); } et_ = ElementType.Uuid16; attrList.Add(new ServiceAttribute(createId(et_), new ServiceElement(et_, (UInt16)et_))); et_ = ElementType.Uuid32; attrList.Add(new ServiceAttribute(createId(et_), new ServiceElement(et_, (UInt32)et_))); et_ = ElementType.Uuid128; attrList.Add(new ServiceAttribute(createId(et_), new ServiceElement(et_, BluetoothService.CreateBluetoothUuid((int)et_)))); bldr.AddCustomAttributes(attrList); bldr.AddCustomAttributes(ElementsAndVariableAndFixedInDeepTree1()); ServiceRecord record = bldr.ServiceRecord; return(record); }
public void CustomDuplicateTwoEnumNonGeneric() { // Note: not checking here WHEN the exception is thrown... ServiceRecordBuilder bldr = new ServiceRecordBuilder(); bldr.AddServiceClass(BluetoothService.SerialPort); bldr.ServiceName = "Hello World!"; ServiceAttribute[] array = new ServiceAttribute[] { new ServiceAttribute( UniversalAttributeId.ServiceAvailability, ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 255)), new ServiceAttribute( UniversalAttributeId.ServiceAvailability, ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 0x55)) }; System.Collections.IEnumerable eble = array; bldr.AddCustomAttributes(eble); DoTestFailsBuilderOrLater(bldr); }
public void CreateL2CapNapEmptyNetProtoList() { var netProtoList = new ServiceElement(ElementType.ElementSequence ); var layer1 = new ServiceElement(ElementType.ElementSequence, new ServiceElement(ElementType.Uuid16, Uuid16_BnepProto), ServiceElement.CreateNumericalServiceElement(ElementType.UInt16, 0x0100), //v1.0 netProtoList ); ServiceElement element = ServiceRecordHelper.CreateL2CapProtocolDescriptorListWithUpperLayers( layer1); // List_ServiceAttribute attrs = new List_ServiceAttribute(); attrs.Add(new ServiceAttribute(UniversalAttributeId.ProtocolDescriptorList, element)); ServiceRecord record = new ServiceRecord(attrs); String dump = ServiceRecordUtilities.Dump(record); Assert.AreEqual(ExpectedL2CapNapDumpEmptyNetProtoList, dump, "L2CAP NAP ProtoDL dump"); }
public void SetL2CapPort_Bad_PortElementNotUint16() { int psm = 9; // var layer0 = new ServiceElement(ElementType.ElementSequence, new ServiceElement(ElementType.Uuid16, Uuid16_L2CapProto), ServiceElement.CreateNumericalServiceElement(ElementType.UInt32, 0) ); ServiceRecord rcd = new ServiceRecord( new ServiceAttribute(UniversalAttributeId.ProtocolDescriptorList, new ServiceElement(ElementType.ElementSequence, layer0))); try { ServiceRecordHelper.SetL2CapPsmNumber(rcd, psm); Assert.Fail("should have thrown!"); } catch (InvalidOperationException ex) { Assert.IsInstanceOfType(typeof(InvalidOperationException), ex); } }
public void GetChannelElement_BadRequestProtocol() { var layer0 = new ServiceElement(ElementType.ElementSequence, new ServiceElement(ElementType.Uuid16, Uuid16_L2CapProto)); // L2CAP var layer1 = new ServiceElement(ElementType.ElementSequence, new ServiceElement(ElementType.Uuid16, Uuid16_RfcommProto), //RFCOMM ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 5) ); // RFCOMM var attr = new ServiceAttribute(UniversalAttributeId.ProtocolDescriptorList, new ServiceElement(ElementType.ElementSequence, layer0, layer1)); bool?flag; try { var e = ServiceRecordHelper.GetChannelElement(attr, (BluetoothProtocolDescriptorType)0x9999, out flag); Assert.Fail("should have thrown!"); } catch (ArgumentException ex) { Assert.AreEqual("Can only fetch RFCOMM or L2CAP element.", ex.Message, "ex.Message"); } }
static void Documentation_SRB_ToByteArray_Pbap() { ServiceRecordBuilder bldr = new ServiceRecordBuilder(); bldr.AddServiceClass(BluetoothService.PhonebookAccessPse); bldr.ServiceName = "Phonebook Access PSE"; bldr.AddBluetoothProfileDescriptor(BluetoothService.PhonebookAccess, 1, 0); // v1.0 const ushort SupportedRepositories = 0x0314; bldr.AddCustomAttribute(new ServiceAttribute(SupportedRepositories, ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 0x03))); // ServiceRecord record = bldr.ServiceRecord; // var txt = ServiceRecordUtilities.Dump(record); Console.WriteLine(txt); // var byteArr = record.ToByteArray(); var txtBA = BitConverter.ToString(byteArr); Console.WriteLine(txtBA); }
static void SetL2CapPort_(int psm, string expectedPsmAsString1, string expectedPsmAsString2) { var layer0 = new ServiceElement(ElementType.ElementSequence, new ServiceElement(ElementType.Uuid16, Uuid16_L2CapProto), ServiceElement.CreateNumericalServiceElement(ElementType.UInt16, 0) ); ServiceRecord rcd = new ServiceRecord( new ServiceAttribute(UniversalAttributeId.ProtocolDescriptorList, new ServiceElement(ElementType.ElementSequence, layer0))); ServiceRecordHelper.SetL2CapPsmNumber(rcd, psm); string expected = "AttrId: 0x0004 -- ProtocolDescriptorList" + CrLf + "ElementSequence" + CrLf + " ElementSequence" + CrLf + " Uuid16: 0x100 -- L2CapProtocol" + CrLf + " UInt16: " + expectedPsmAsString1 + CrLf + "( ( L2Cap, PSM=" + expectedPsmAsString2 + " ) )" + CrLf ; var dump = ServiceRecordUtilities.Dump(rcd); Assert.AreEqual(expected, dump); }
public void CustomTwoFromOneWithHighAttrIdAdded() { // Rfcomm/StdSvcClass/SvcName ServiceRecordBuilder bldr = new ServiceRecordBuilder(); bldr.AddServiceClass(BluetoothService.SerialPort); bldr.ServiceName = "Hello World!"; ServiceAttribute attr2 = new ServiceAttribute( 0x8000, ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 0x80)); bldr.AddCustomAttribute(attr2); ServiceAttribute attr2b = new ServiceAttribute( 0xFFFF, ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 255)); bldr.AddCustomAttribute(attr2b); ServiceAttribute attr = new ServiceAttribute( UniversalAttributeId.ServiceAvailability, ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 8)); bldr.AddCustomAttribute(attr); DoTest(ServiceRecordBuilderTests_Data.CustomTwoFromOneWithHighAttrIdAdded, bldr); }
internal static ServiceRecord CreateServiceRecord(ref Structs.BtSdkRemoteServiceAttrStru attrs, IBluesoleilApi api) { ServiceRecordBuilder bldr = new ServiceRecordBuilder(); //-- Guid sc = BluetoothService.CreateBluetoothUuid(attrs.svc_class); bldr.AddServiceClass(sc); //-- string name = ParseServiceName(ref attrs); if (name.Length != 0) { bldr.ServiceName = name; } // byte?port = null; var extras = new List <ServiceAttribute>(); Debug.Assert(attrs.status == 0, "attrs.status: 0x" + attrs.status.ToString("X")); if (attrs.ext_attributes != IntPtr.Zero) { if (sc == BluetoothService.HumanInterfaceDevice) { var hidInfo = (Structs.BtSdkRmtHidSvcExtAttrStru_HACK)Marshal.PtrToStructure( attrs.ext_attributes, typeof(Structs.BtSdkRmtHidSvcExtAttrStru_HACK)); Debug.Assert(Marshal.SizeOf(typeof(Structs.BtSdkRmtHidSvcExtAttrStru_HACK)) == Marshal.SizeOf(hidInfo), "SizeOf x2"); Debug.Assert(hidInfo.size == Marshal.SizeOf(typeof(Structs.BtSdkRmtHidSvcExtAttrStru_HACK)) + Structs.BtSdkRmtHidSvcExtAttrStru_HACK.StackMiscountsPaddingSize, "Different sizes! hidInfo.size: " + hidInfo.size + ", SizeOf(): " + Marshal.SizeOf(typeof(Structs.BtSdkRmtHidSvcExtAttrStru_HACK))); // TO-DO Human Interface (HID) record: Use "mask" field, it's undocumented, check for real life values // With test SdpCreateAHumanInputDeviceRecordsAllTwoOfThree // which adds two out of three of {DeviceReleaseNumber,DeviceSubclass,CountryCode} // mask==0. So mask apparently applies to other fields! // So we check these three values for zero // and discard them if so! Debug.WriteLine(string.Format(CultureInfo.InvariantCulture, "HID.mask: {0:X}", hidInfo.mask)); var list = new List <ServiceAttribute>(); if (hidInfo.deviceReleaseNumber != 0) { list.Add( new ServiceAttribute(HidProfileAttributeId.DeviceReleaseNumber, new ServiceElement(ElementType.UInt16, hidInfo.deviceReleaseNumber))); } if (hidInfo.deviceSubclass != 0) { list.Add( new ServiceAttribute(HidProfileAttributeId.DeviceSubclass, new ServiceElement(ElementType.UInt8, hidInfo.deviceSubclass))); } if (hidInfo.countryCode != 0) { list.Add( new ServiceAttribute(HidProfileAttributeId.CountryCode, new ServiceElement(ElementType.UInt8, hidInfo.countryCode))); } // TO-DO HID other... extras.AddRange(list); } else if (sc == BluetoothService.PnPInformation) { var deviceInfo = (Structs.BtSdkRmtDISvcExtAttrStru)Marshal.PtrToStructure( attrs.ext_attributes, typeof(Structs.BtSdkRmtDISvcExtAttrStru)); Debug.Assert(Marshal.SizeOf(typeof(Structs.BtSdkRmtDISvcExtAttrStru)) == Marshal.SizeOf(deviceInfo), "SizeOf x2"); Debug.Assert(deviceInfo.size == Marshal.SizeOf(typeof(Structs.BtSdkRmtDISvcExtAttrStru)) + Structs.BtSdkRmtDISvcExtAttrStru.StackMiscountsPaddingSize, "Different sizes! deviceInfo.size: " + deviceInfo.size + ", Marshal.SizeOf: " + Marshal.SizeOf(typeof(Structs.BtSdkRmtDISvcExtAttrStru))); // TO-DO Device Info (PnP) record: Use "mask" field, it's undocumented, check for real life values //Debug.Assert(deviceInfo.mask == 0, "Is mask field in BtSdkRmtDISvcExtAttrStru ever set!!!, is here:" + deviceInfo.mask); Debug.WriteLine(string.Format(CultureInfo.InvariantCulture, "PnP/DI.mask: {0:X}", deviceInfo.mask)); // Like above (PnP) we see mask==0 for the fields we handle // here (six of). So we check these values // for zero and discard them if so! var list = new List <ServiceAttribute>(); if (deviceInfo.spec_id != 0) { list.Add( new ServiceAttribute(DeviceIdProfileAttributeId.SpecificationId, new ServiceElement(ElementType.UInt16, deviceInfo.spec_id))); } if (deviceInfo.vendor_id != 0) { list.Add( new ServiceAttribute(DeviceIdProfileAttributeId.VendorId, new ServiceElement(ElementType.UInt16, deviceInfo.vendor_id))); } if (deviceInfo.product_id != 0) { list.Add( new ServiceAttribute(DeviceIdProfileAttributeId.ProductId, new ServiceElement(ElementType.UInt16, deviceInfo.product_id))); } if (deviceInfo.version != 0) { list.Add( new ServiceAttribute(DeviceIdProfileAttributeId.Version, new ServiceElement(ElementType.UInt16, deviceInfo.version))); } if (true /* Zero means False here!! */) { list.Add( new ServiceAttribute(DeviceIdProfileAttributeId.PrimaryRecord, new ServiceElement(ElementType.Boolean, deviceInfo.primary_record))); } if (deviceInfo.vendor_id_source != 0) { list.Add( new ServiceAttribute(DeviceIdProfileAttributeId.VendorIdSource, new ServiceElement(ElementType.UInt16, deviceInfo.vendor_id_source))); } // TO-DO URLs... extras.AddRange(list); } else { // On testing we see this never working! For one device // with an ImagingResponder record the size of 0x18 and // not 0x8 as per definition, and the port value is wrong. // And for its PhonebookAccessPse record the size is // correctly 0x8, but again the port value is wrong! // var sppInfo = (Structs.BtSdkRmtSPPSvcExtAttrStru)Marshal.PtrToStructure( attrs.ext_attributes, typeof(Structs.BtSdkRmtSPPSvcExtAttrStru)); Debug.Assert(sppInfo.size == Marshal.SizeOf(typeof(Structs.BtSdkRmtSPPSvcExtAttrStru)), "Different sizes!"); port = sppInfo.server_channel; } api.Btsdk_FreeMemory(attrs.ext_attributes); }//if (attrs.ext_attributes != NULL) // Use a different API to try and get the RFCOMM port number as // the previous API is quite rubbish at doing that!! var svcB = new Structs.BtSdkAppExtSPPAttrStru(sc); var retSpp = api.Btsdk_SearchAppExtSPPService(attrs.dev_hdl, ref svcB); if (retSpp == BtSdkError.NO_SERVICE) // error { } else if (retSpp != BtSdkError.OK) // error { Debug.WriteLine("GetSvcRcds Btsdk_SearchAppExtSPPService ret: " + BluesoleilUtils.BtSdkErrorToString(retSpp)); } else // success { if (svcB.rf_svr_chnl != 0) { byte newPort = svcB.rf_svr_chnl; if (port.HasValue) { Debug.Assert(port.Value == newPort, "port: " + port.Value + ", newPort: " + newPort); } else { port = newPort; } } if (svcB.sdp_record_handle != 0) { bldr.AddCustomAttribute(new ServiceAttribute( UniversalAttributeId.ServiceRecordHandle, ServiceElement.CreateNumericalServiceElement(ElementType.UInt32, svcB.sdp_record_handle))); } #if DEBUG Debug.Assert(svcB.service_class_128 == sc, "svcSpp.service_class_128: " + svcB.service_class_128 + ", sc: " + sc); var snSpp = BluesoleilUtils.FromNameString(svcB.svc_name, StackConsts.BTSDK_SERVICENAME_MAXLENGTH); if (snSpp == null) { Debug.Assert(name == null || name.Length == 0, "svcSpp.svc_name: null" + ", name: " + name); } else if (snSpp.Length == 1) { // SearchAppExtSPPService doesn't handle Unicode // but Btsdk_BrowseRemoteServicesEx etc does. Debug.Assert(snSpp[0] == name[0], "svcSpp.svc_name: " + snSpp + ", name: " + name); } else { Debug.Assert(snSpp == name, "svcSpp.svc_name: " + snSpp + ", bldr.ServiceName: " + name); } #endif } // if (port.HasValue) { } else { bldr.ProtocolType = BluetoothProtocolDescriptorType.None; } if (extras.Count != 0) { bldr.AddCustomAttributes(extras); } // const ServiceAttributeId FakeDescr = (ServiceAttributeId)(-1); bldr.AddCustomAttribute(new ServiceAttribute(FakeDescr, new ServiceElement(ElementType.TextString, "<partial BlueSoleil decode>"))); ServiceRecord sr = bldr.ServiceRecord; if (port.HasValue) { Debug.Assert(bldr.ProtocolType == BluetoothProtocolDescriptorType.Rfcomm, "type=" + bldr.ProtocolType); ServiceRecordHelper.SetRfcommChannelNumber(sr, port.Value); } else { bldr.ProtocolType = BluetoothProtocolDescriptorType.None; } return(sr); }
/// <inheritdoc /> internal override void StartListening(EndPoint desiredLocalListenEndPoint, bool useRandomPortFailOver) { if (IsListening) { throw new InvalidOperationException("Attempted to call StartListening when already listening."); } if (!(desiredLocalListenEndPoint is BluetoothEndPoint)) { throw new ArgumentException("Bluetooth connections can only be made from a local BluetoothEndPoint", "desiredLocalListenIPEndPoint"); } try { ServiceRecordBuilder bldr = new ServiceRecordBuilder(); bldr.AddServiceClass((desiredLocalListenEndPoint as BluetoothEndPoint).Service); if (IsDiscoverable) { bldr.AddCustomAttribute(new ServiceAttribute(NetworkCommsBTAttributeId.NetworkCommsEndPoint, ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 1))); } listenerInstance = new BluetoothListener(desiredLocalListenEndPoint as BluetoothEndPoint, bldr.ServiceRecord); listenerInstance.Start(); listenerInstance.BeginAcceptBluetoothClient(BluetoothConnectionReceivedAsync, null); } catch (SocketException) { //If the port we wanted is not available if (useRandomPortFailOver) { try { Guid service = Guid.NewGuid(); ServiceRecordBuilder bldr = new ServiceRecordBuilder(); bldr.AddServiceClass(service); if (IsDiscoverable) { bldr.AddCustomAttribute(new ServiceAttribute(NetworkCommsBTAttributeId.NetworkCommsEndPoint, ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 1))); } listenerInstance = new BluetoothListener(new BluetoothEndPoint((desiredLocalListenEndPoint as BluetoothEndPoint).Address, service), bldr.ServiceRecord); listenerInstance.Start(); listenerInstance.BeginAcceptBluetoothClient(BluetoothConnectionReceivedAsync, null); } catch (SocketException) { //If we get another socket exception this appears to be a bad IP. We will just ignore this IP if (NetworkComms.LoggingEnabled) { NetworkComms.Logger.Error("It was not possible to open a random port on " + desiredLocalListenEndPoint + ". This endPoint may not support listening or possibly try again using a different port."); } throw new CommsSetupShutdownException("It was not possible to open a random port on " + desiredLocalListenEndPoint + ". This endPoint may not support listening or possibly try again using a different port."); } } else { if (NetworkComms.LoggingEnabled) { NetworkComms.Logger.Error("It was not possible to listen on " + desiredLocalListenEndPoint.ToString() + ". This endPoint may not support listening or possibly try again using a different port."); } throw new CommsSetupShutdownException("It was not possible to listen on " + desiredLocalListenEndPoint.ToString() + ". This endPoint may not support listening or possibly try again using a different port."); } } this.LocalListenEndPoint = desiredLocalListenEndPoint; this.IsListening = true; }
public void UInt16() { byte[] expectedDataValue = { 0x34, 0xF5 }; DoTest(StackConsts.SDP_Data_Element_Type.UnsignedInteger2Bytes, expectedDataValue, true, ServiceElement.CreateNumericalServiceElement(ElementType.UInt16, 0xF534)); }
public void UInt8_Bad_TestTheTesting() { byte[] expectedDataValue = { 0xF5 }; DoTest(StackConsts.SDP_Data_Element_Type.UnsignedInteger1Byte, expectedDataValue, true, ServiceElement.CreateNumericalServiceElement(ElementType.UInt8, 99)); }
private void DoTest_Valid(ElementType elementType, object value) { ServiceElement.CreateNumericalServiceElement(elementType, value); }