private bool StartMonitorForServer(BrainHatServerStatus status) { ActiveClient = ServersMonitor.GetHatClient(HostName); if (ActiveClient != null) { DataProcessor = new BrainflowDataProcessor(HostName, status.BoardId, status.SampleRate); SetBandPowerCalculator(); BlinkDetector.GetData = DataProcessor.GetRawChunk; BlinkDetector.GetStdDevMedians = DataProcessor.GetStdDevianMedians; ActiveClient.RawDataReceived += DataProcessor.AddDataToProcessor; SeekingAlpha.GetBandPower = DataProcessor.GetBandPower; DataProcessor.NewSample += BlinkDetector.OnNewSample; _ = Task.Run(async() => { await DataProcessor.StartDataProcessorAsync(); await DataProcessor.StartBandPowerMonitorAsync(); await ActiveClient.StartReadingFromLslAsync(); }); return(true); } return(false); }
private async Task RunStatusMonitorAsync(CancellationToken token) { try { while (!token.IsCancellationRequested) { string eth0, wlan0, hostName; GetNetworkProperties(out eth0, out wlan0, out hostName); BrainHatServerStatus status = new BrainHatServerStatus() { HostName = hostName, Eth0Address = eth0, Wlan0Address = wlan0, TimeStamp = DateTimeOffset.UtcNow, }; StatusUpdate?.Invoke(this, new BrainHatStatusEventArgs(status)); await Task.Delay(2000); } } catch (OperationCanceledException) { } catch (Exception e) { Log?.Invoke(this, new LogEventArgs(this, "RunStatusMonitorAsync", e, LogLevel.ERROR)); } }
private void UpdateStatusUi(BrainHatServerStatus status) { if (LslBroadcast == null) { return; } // update the UI groupBoxRunStatus.Invoke(new Action(() => { labelRunStatus.Text = (DataLatencyTimer.Elapsed.TotalSeconds < 0.5) ? Properties.Resources.ReadingData : Properties.Resources.ReadingDataNot; labelDataStatus.Text = status.IsStreaming ? Properties.Resources.StreamRunning : Properties.Resources.StreamStopped; if (status.IsStreaming) { if (DataLatencyTimer.Elapsed.TotalSeconds < .5) { pictureBoxStatus.Image = Properties.Resources.greenLight; } else { pictureBoxStatus.Image = Properties.Resources.redLight; } } else { if (BrainflowBoard != null && BrainflowBoard.UserPausedStream) { pictureBoxStatus.Image = Properties.Resources.yellowLight; } else { pictureBoxStatus.Image = Properties.Resources.redLight; } } string srbStatus = ""; switch (status.CytonSRB1) { case SrbSet.Unknown: srbStatus = $"{Properties.Resources.SRB1} {Properties.Resources.Unknown}"; break; case SrbSet.Disconnected: srbStatus = $"{Properties.Resources.SRB1} {Properties.Resources.Disconnected}"; break; case SrbSet.Connected: srbStatus = $"{Properties.Resources.SRB1} {Properties.Resources.Connected}"; break; } if ((BrainhatBoardIds)status.BoardId == BrainhatBoardIds.CYTON_DAISY_BOARD) { switch (status.DaisySRB1) { case SrbSet.Unknown: srbStatus = $"Daisy {Properties.Resources.SRB1} {Properties.Resources.Unknown}"; break; case SrbSet.Disconnected: srbStatus = $"Daisy {Properties.Resources.SRB1} {Properties.Resources.Disconnected}"; break; case SrbSet.Connected: srbStatus = $"Daisy {Properties.Resources.SRB1} {Properties.Resources.Connected}"; break; } } labelSrbStatus.Text = srbStatus; })); }