/// <summary> /// Load the board configuration string into the settings object /// </summary> private void LoadBoardSettings(string configString) { try { BoardSettings = new CytonBoardsImplementation(); BoardSettings.LoadFromRegistersString(configString); } catch (Exception) { BoardSettings = null; } }
/// <summary> /// Init the board session /// </summary> private async Task InitializeBoardAsync() { try { Log?.Invoke(this, new LogEventArgs(this, "InitializeBoardAsync", $"Initializaing board", LogLevel.DEBUG)); await ReleaseBoardAsync(); RequestToggleStreamingMode = false; var useBoardId = BoardId; switch ((BrainhatBoardIds)BoardId) { case BrainhatBoardIds.MENTALIUM: useBoardId = 0; break; } TheBoard = new BoardShim(useBoardId, InputParams); SampleRate = BrainhatBoardShim.GetSampleRate(BoardId); TimeStampIndex = BrainhatBoardShim.GetTimestampChannel(BoardId); TheBoard.prepare_session(); await Task.Delay(TimeSpan.FromSeconds(1)); TheBoard.config_board("s"); BoardSettings = new CytonBoardsImplementation(); if (!await LoadBoardRegistersSettings(1)) { throw new Exception("Unable to get board register settings"); } // TODO - clean up SRB1 start setting if (StartSrb1CytonSet) { await SetSrb1Async(BoardSettings.Boards[0].Channels[0], true); if (StartSrb1DaisySet && (BrainhatBoardIds)BoardId == BrainhatBoardIds.CYTON_DAISY_BOARD && BoardSettings.Boards.Count() > 1) { await SetSrb1Async(BoardSettings.Boards[1].Channels[0], true); } BoardSettings = new CytonBoardsImplementation(); if (!await LoadBoardRegistersSettings(1)) { throw new Exception("Unable to get board register settings"); } } await StartStreamingAsync(); await Task.Delay(TimeSpan.FromSeconds(5)); ConnectToBoard?.Invoke(this, new ConnectToBoardEventArgs(BoardId, SampleRate)); } catch (Exception e) { Log?.Invoke(this, new LogEventArgs(this, "InitializeBoardAsync", e, LogLevel.ERROR)); if (TheBoard != null && TheBoard.is_prepared()) { TheBoard.release_session(); } TheBoard = null; } }