public void UpdateFixtureData(FixtureMessage fixtureMsg) { foreach (var id in fixtureMsg.id) { var fixture = (from f in universe where f.fixtureId == id select f).FirstOrDefault(); if (fixture != null) { UpdateChannel(fixture.startChannel, fixture.numberOfChannels, fixtureMsg.data); } } }
private static void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) { try { instrumentation.MessagesReceived++; string json = System.Text.Encoding.UTF8.GetString(e.Message); fixtureMsg = JsonConvert.DeserializeObject <FixtureMessage>(json); if (!string.IsNullOrEmpty(fixtureMsg.command)) { ProcessCommand(fixtureMsg.command); return; } if (fixtureMsg.id == null) { return; } if (fixtureMsg.data == null) { universe.UpdateFixtureChannels(fixtureMsg); } else { universe.UpdateFixtureData(fixtureMsg); } dmxUpdateEvent.Set(); } catch (Exception ex) { // config.Log(ex.Message); instrumentation.Exceptions++; } }
public void UpdateFixtureChannels(FixtureMessage fixtureMsg) { if (fixtureMsg.red == null && fixtureMsg.green == null && fixtureMsg.blue == null && fixtureMsg.white == null && fixtureMsg.strobe == null) { return; } foreach (var id in fixtureMsg.id) { var fixture = (from f in universe where f.fixtureId == id select f).FirstOrDefault(); if (fixture == null) { return; } UpdateChannelData(fixtureMsg.red, fixture.redChannels, fixture); UpdateChannelData(fixtureMsg.green, fixture.greenChannels, fixture); UpdateChannelData(fixtureMsg.blue, fixture.blueChannels, fixture); UpdateChannelData(fixtureMsg.white, fixture.whiteChannels, fixture); UpdateChannelData(fixtureMsg.strobe, fixture.strobeChannels, fixture); } }