Exemplo n.º 1
0
        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);
        }