コード例 #1
0
ファイル: UdpManager.cs プロジェクト: t-l-k/IOWrapper
        public DescriptorMessage RequestDescriptor(ServiceAgent serviceAgent)
        {
            var descriptorMessage = new DescriptorMessage();

            SendUdpPacket(serviceAgent, descriptorMessage);
            if (!ReceiveUdpPacket(serviceAgent, out var response))
            {
                return(null);
            }

            return(MessagePackSerializer.Deserialize <DescriptorMessage>(response));
        }
コード例 #2
0
ファイル: DiscoveryManager.cs プロジェクト: t-l-k/IOWrapper
        private bool BuildDeviceReport(ServiceAgent serviceAgent, out DeviceReport deviceReport, out DescriptorMessage requestDescriptor)
        {
            requestDescriptor = _udpManager.RequestDescriptor(serviceAgent);

            if (requestDescriptor == null || !MessageBase.MessageType.Descriptor.Equals(requestDescriptor.Type))
            {
                deviceReport = null;
                return(false);
            }

            var deviceReportNodes = new List <DeviceReportNode>();

            if (requestDescriptor.Buttons.Count > 0)
            {
                deviceReportNodes.Add(BuildOutputNodes("Buttons", BindingCategory.Momentary, requestDescriptor.Buttons));
            }
            if (requestDescriptor.Axes.Count > 0)
            {
                deviceReportNodes.Add(BuildOutputNodes("Axes", BindingCategory.Signed, requestDescriptor.Axes));
            }
            if (requestDescriptor.Deltas.Count > 0)
            {
                deviceReportNodes.Add(BuildOutputNodes("Deltas", BindingCategory.Delta, requestDescriptor.Deltas));
            }
            if (requestDescriptor.Events.Count > 0)
            {
                deviceReportNodes.Add(BuildOutputNodes("Events", BindingCategory.Event, requestDescriptor.Events));
            }

            var descriptor = new DeviceDescriptor()
            {
                DeviceHandle   = serviceAgent.Hostname,
                DeviceInstance = 0 // Unused
            };

            deviceReport = new DeviceReport()
            {
                DeviceName       = serviceAgent.Hostname,
                DeviceDescriptor = descriptor,
                Nodes            = deviceReportNodes
            };

            return(true);
        }