@@ -8,6 +8,10 @@ class DataLogger {
88 public final int OUTPUT_SOURCE_ODF = 1 ; // The OpenBCI CSV Data Format
99 public final int OUTPUT_SOURCE_BDF = 2 ; // The BDF data format http://www.biosemi.com/faq/file_format.htm
1010 private int outputDataSource;
11+ private String sessionPath = " " ;
12+ private boolean logFileIsOpen = false ;
13+ private long logFileStartTime;
14+ private long logFileMaxDurationNano = - 1 ;
1115
1216 DataLogger () {
1317 // Default to OpenBCI CSV Data Format
@@ -33,7 +37,7 @@ class DataLogger {
3337
3438 private void saveNewData () {
3539 // If data is available, save to playback file...
36- if (! sessionSettings . isLogFileOpen()) {
40+ if (! isLogFileOpen()) {
3741 return ;
3842 }
3943
@@ -54,21 +58,21 @@ class DataLogger {
5458 }
5559
5660 public void limitRecordingFileDuration () {
57- if (sessionSettings . isLogFileOpen() && outputDataSource == OUTPUT_SOURCE_ODF && sessionSettings . maxLogTimeReached()) {
61+ if (isLogFileOpen() && outputDataSource == OUTPUT_SOURCE_ODF && maxLogTimeReached()) {
5862 println (" DataLogging: Max recording duration reached for OpenBCI data format. Creating a new recording file in the session folder." );
5963 closeLogFile();
6064 openNewLogFile(directoryManager. getFileNameDateTime());
61- sessionSettings . setLogFileStartTime(System . nanoTime());
65+ setLogFileStartTime(System . nanoTime());
6266 }
6367 }
6468
6569 public void onStartStreaming () {
6670 if (outputDataSource > OUTPUT_SOURCE_NONE && eegDataSource != DATASOURCE_PLAYBACKFILE ) {
6771 // open data file if it has not already been opened
68- if (! sessionSettings . isLogFileOpen()) {
72+ if (! isLogFileOpen()) {
6973 openNewLogFile(directoryManager. getFileNameDateTime());
7074 }
71- sessionSettings . setLogFileStartTime(System . nanoTime());
75+ setLogFileStartTime(System . nanoTime());
7276 }
7377
7478 // Print BrainFlow Streamer Info here after ODF and BDF println
@@ -111,7 +115,7 @@ class DataLogger {
111115 // Do nothing...
112116 break ;
113117 }
114- sessionSettings . setLogFileIsOpen(true );
118+ setLogFileIsOpen(true );
115119 }
116120
117121 /**
@@ -159,7 +163,7 @@ class DataLogger {
159163 // Do nothing...
160164 break ;
161165 }
162- sessionSettings . setLogFileIsOpen(false );
166+ setLogFileIsOpen(false );
163167 }
164168
165169 private void closeLogFileBDF () {
@@ -188,22 +192,61 @@ class DataLogger {
188192 sessionName = s;
189193 }
190194
191- public final String getSessionName () {
195+ public String getSessionName () {
192196 return sessionName;
193197 }
198+
199+
200+ public void setSessionPath (String _path ) {
201+ sessionPath = _path;
202+ }
203+
204+ public String getSessionPath () {
205+ return sessionPath;
206+ }
207+
194208
195209 public void setBfWriterFolder (String _folderName , String _folderPath ) {
196210 fileWriterBF. setBrainFlowStreamerFolderName(_folderName, _folderPath);
197211 }
198212
199213 public void setBfWriterDefaultFolder () {
200- if (sessionSettings . getSessionPath() != " " ) {
201- sessionSettings . setSessionPath(directoryManager. getRecordingsPath() + " OpenBCISession_" + sessionName);
214+ if (getSessionPath() != " " ) {
215+ setSessionPath(directoryManager. getRecordingsPath() + " OpenBCISession_" + sessionName);
202216 }
203- fileWriterBF. setBrainFlowStreamerFolderName(sessionName, sessionSettings . getSessionPath());
217+ fileWriterBF. setBrainFlowStreamerFolderName(sessionName, getSessionPath());
204218 }
205219
206220 public String getBfWriterFilePath () {
207221 return fileWriterBF. getBrainFlowStreamerRecordingFileName();
208222 }
223+
224+
225+ private void setLogFileIsOpen (boolean _toggle ) {
226+ logFileIsOpen = _toggle;
227+ }
228+
229+ private boolean isLogFileOpen () {
230+ return logFileIsOpen;
231+ }
232+
233+ private void setLogFileStartTime (long _time ) {
234+ logFileStartTime = _time;
235+ verbosePrint(" Settings: LogFileStartTime = " + _time);
236+ }
237+
238+ public void setLogFileDurationChoice (int n ) {
239+ int fileDurationMinutes = odfFileDuration. values()[n]. getValue();
240+ logFileMaxDurationNano = fileDurationMinutes * 1000000000L * 60 ;
241+ println (" Settings: LogFileMaxDuration = " + fileDurationMinutes + " minutes" );
242+ }
243+
244+ // Only called during live mode && using OpenBCI Data Format
245+ private boolean maxLogTimeReached () {
246+ if (logFileMaxDurationNano < 0 ) {
247+ return false ;
248+ } else {
249+ return (System . nanoTime() - logFileStartTime) > (logFileMaxDurationNano);
250+ }
251+ }
209252};
0 commit comments