public TalkbackHandler(UDPDuplex behringer, GpioController controller, TalkbackSetting talkbackSetting) { this.talkbackSetting = talkbackSetting; this.behringer = behringer; this.controller = controller; var talkbackPathBuilder = new StringBuilder(); talkbackPathBuilder.Append("/ch/"); talkbackPathBuilder.Append(talkbackSetting.channel.ToString("D2")); talkbackPathBuilder.Append("/mix/"); talkbackPathBuilder.Append(talkbackSetting.bus.ToString("D2")); talkbackPathBuilder.Append("/tap"); talkbackPath = talkbackPathBuilder.ToString(); try { controller.OpenPin(talkbackSetting.gpio, PinMode.InputPullUp); controller.RegisterCallbackForPinValueChangedEvent(talkbackSetting.gpio, PinEventTypes.Falling, TalkbackEnabled); controller.RegisterCallbackForPinValueChangedEvent(talkbackSetting.gpio, PinEventTypes.Rising, TalkbackDisabled); } catch (Exception e) { log.Info(e, $"Could not connect to pin {talkbackSetting.gpio}"); throw; } }
public DcaHandler(UDPDuplex behringer, GpioController controller, DcaSetting dcaSetting) { this.dcaSetting = dcaSetting; this.behringer = behringer; this.controller = controller; var dcaPathBuilder = new StringBuilder(); dcaPathBuilder.Append("/dca/"); dcaPathBuilder.Append(dcaSetting.dca.ToString("D1")); dcaPathBuilder.Append("/fader"); dcaPath = dcaPathBuilder.ToString(); try { controller.OpenPin(dcaSetting.gpio, PinMode.InputPullUp); controller.RegisterCallbackForPinValueChangedEvent(dcaSetting.gpio, PinEventTypes.Falling, dcaDown); controller.RegisterCallbackForPinValueChangedEvent(dcaSetting.gpio, PinEventTypes.Rising, dcaUp); } catch (Exception e) { log.Info(e, $"Could not connect to pin {dcaSetting.gpio}"); throw; } }
public MuteHandler(UDPDuplex behringer, GpioController controller, MuteSetting muteSetting) { this.muteSetting = muteSetting; this.behringer = behringer; this.controller = controller; var mutePathBuilder = new StringBuilder(); mutePathBuilder.Append("/ch/"); mutePathBuilder.Append(muteSetting.channel.ToString("D2")); mutePathBuilder.Append("/mix/on"); mutePath = mutePathBuilder.ToString(); try { controller.OpenPin(muteSetting.gpio, PinMode.InputPullUp); controller.RegisterCallbackForPinValueChangedEvent(muteSetting.gpio, PinEventTypes.Falling, MuteEnabled); controller.RegisterCallbackForPinValueChangedEvent(muteSetting.gpio, PinEventTypes.Rising, MuteDisabled); } catch (Exception e) { log.Info(e, $"Could not connect to pin {muteSetting.gpio}"); throw; } }
public TallyHandler(UDPDuplex behringer, GpioController controller, TallySetting tallySetting) { var levelPathBuilder = new StringBuilder(); levelPathBuilder.Append("/ch/"); levelPathBuilder.Append(tallySetting.channel.ToString("D2")); levelPathBuilder.Append("/mix/fader"); levelPath = levelPathBuilder.ToString(); var mutePathBuilder = new StringBuilder(); mutePathBuilder.Append("/ch/"); mutePathBuilder.Append(tallySetting.channel.ToString("D2")); mutePathBuilder.Append("/mix/on"); mutePath = mutePathBuilder.ToString(); level = 0; muted = true; this.tallySetting = tallySetting; this.behringer = behringer; this.controller = controller; try { controller.OpenPin(tallySetting.gpio, PinMode.Output); } catch (Exception e) { log.Info(e, $"Could not connect to pin {tallySetting.gpio}"); throw; } behringer.OscPacketCallback += Callback; ForceUpdate(); }
protected override Task ExecuteAsync(CancellationToken cancellationToken) { /** * Callback handle that will handle * every message recieved from Behringer X Air */ return(Task.Run(() => { try { log.LogInformation($"Connected to Behringer IP: {host} Port: {port} over UDP"); behringer = new UDPDuplex(host, port, clientPort, callback); log.LogInformation($"Connecting to GpioController"); GpioController controller = new GpioController(PinNumberingScheme.Logical); log.LogInformation($"Starting Background Thread for keepalive"); new Thread(() => KeepAlive()) { IsBackground = true }.Start(); if (tallySettings is List <TallySetting> ) { foreach (var tallySetting in tallySettings) { var handler = new TallyHandler(behringer, controller, tallySetting); tallyHandlers.Add(handler); } } if (muteSettings is List <MuteSetting> ) { foreach (var muteSetting in muteSettings) { var handler = new MuteHandler(behringer, controller, muteSetting); muteHandlers.Add(handler); } } if (muteGroupSettings is List <MuteGroupSetting> ) { foreach (var muteGroupSetting in muteGroupSettings) { var handler = new MuteGroupHandler(behringer, controller, muteGroupSetting); muteGroupHandlers.Add(handler); } } if (talkbackSettings is List <TalkbackSetting> ) { foreach (var talkbackSetting in talkbackSettings) { var handler = new TalkbackHandler(behringer, controller, talkbackSetting); talkbackHandlers.Add(handler); } } if (dcaSettings is List <DcaSetting> ) { foreach (var dcaSetting in dcaSettings) { var handler = new DcaHandler(behringer, controller, dcaSetting); dcaHandlers.Add(handler); } } } catch (Exception e) { log.LogError(e, "BehringerService crashed while running"); throw; } cancellationToken.WaitHandle.WaitOne(); try { foreach (var handler in tallyHandlers) { handler.Close(); } foreach (var handler in muteHandlers) { handler.Close(); } foreach (var handler in muteHandlers) { handler.Close(); } foreach (var handler in talkbackHandlers) { handler.Close(); } foreach (var handler in dcaHandlers) { handler.Close(); } log.LogInformation("UDP connection closed."); behringer.Close(); } catch (Exception e) { log.LogError(e, "BehringerService crashed while terminating"); throw; } })); }