private static void DevicePoll_Received(List <C4UFX.CANMessage> responses) { StatusUpdate?.Invoke("Querying names (1/3)..."); foreach (C4UFX.CANMessage response in responses) { FndTnd address = CANInterface.IdToFndTnd(response.ID); if (address.FromDevice > 0) { Node currentNode = allResponses.First(x => x.NodeId == address.FromNode); byte fromNode = CANInterface.IdToFndTnd(response.ID).FromNode; byte fromDevice = CANInterface.IdToFndTnd(response.ID).FromDevice; Device newDevice; switch ((Signatures)response.Data[2]) { case Signatures.MechanicalSwitch: newDevice = new MechanicalSwitch(fromNode, fromDevice); break; case Signatures.StatusLED: newDevice = new StatusLED(fromNode, fromDevice); break; case Signatures.InfraredInput: newDevice = new InfraredInput(fromNode, fromDevice); break; case Signatures.DimmerOut: newDevice = new DimmerOut(fromNode, fromDevice); break; case Signatures.LatLong: newDevice = new LatLong(fromNode, fromDevice); break; case Signatures.TimerEvent: newDevice = new TimerEvent(fromNode, fromDevice); break; case Signatures.Scene: newDevice = new Scene(fromNode, fromDevice); break; case Signatures.RealTimeClock: newDevice = new RealTimeClock(fromNode, fromDevice); break; default: newDevice = new UnknownDevice(fromNode, fromDevice); break; } currentNode.Devices.Add(newDevice); } } Dictionary <byte, List <byte> > sendList = new Dictionary <byte, List <byte> >(); foreach (Node node in allResponses) { if (sendList.Keys.Contains(node.NodeId)) { break; } sendList.Add(node.NodeId, new List <byte>()); for (byte i = 1; i < 127; i++) { sendList[node.NodeId].Add(i); } } CANPing poll = new CANPing(Commands.CmdSysEName1, sendList); poll.ResponseReceived += Name1Poll_Received; PongsReceived?.Invoke(allResponses, false); }
public PropertiesForm(DimmerOut light) { InitializeComponent(); this.light = light; }