Exemplo n.º 1
0
 /// <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;
     }
 }
Exemplo n.º 2
0
        /// <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;
            }
        }