/// <summary> /// Process set recording command /// </summary> private async Task <string> ProcessSetRecording(UriArgParser args) { try { var enable = bool.Parse(args.GetArg("enable")); var fileName = args.GetArg("filename"); var formatType = args.GetArg("format"); if (BrainflowBoard == null) { return($"NAK?response=Board is not reading data."); } if (enable) { if (FileWriter.IsLogging) { return($"NAK?response=You must close the current recording file before starting a new one."); } FileWriterType format = FileWriterType.Bdf; switch (formatType) { case "txt": format = FileWriterType.OpenBciTxt; break; case "bdf": format = FileWriterType.Bdf; break; } var recordingDir = ConfigurationManager.AppSettings.Get("defaultDir"); var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), recordingDir); await FileWriter.StartWritingToFileAsync(path, fileName, BrainflowBoard.BoardId, BrainflowBoard.SampleRate, format, new FileHeaderInfo() { SessionName = fileName }); return($"ACK?response=File {Path.GetFileName(FileWriter.FileName)} started."); } else { if (FileWriter != null && !FileWriter.IsLogging) { return($"NAK?response=No recording in progress."); } await FileWriter.StopWritingToFileAsync(); return($"ACK?response=Recording stopped."); } } catch (Exception) { return($"NAK?response=Invalid parameters"); } }
public async Task StartWritingToFileAsync(string path, string fileNameRoot, int boardId, int sampleRate, FileWriterType format, FileHeaderInfo info) { switch (format) { case FileWriterType.OpenBciTxt: { var newWriter = new OBCIGuiFormatFileWriter(boardId, sampleRate); newWriter.Log += OnLog; FileWriter = newWriter; } break; case FileWriterType.Bdf: { var newWriter = new BDFFormatFileWriter(boardId, sampleRate); newWriter.Log += OnLog; FileWriter = newWriter; } break; } await FileWriter.StartWritingToFileAsync(path, fileNameRoot, info); }