1 package jp.osdn.gokigen.thetathoughtshutter.brainwave
3 import android.util.Log
4 import jp.osdn.gokigen.thetathoughtshutter.bluetooth.connection.eeg.MindWaveConnection
7 class BrainwaveDataHolder(maxBufferSize: Int = 16000) : IBrainwaveDataReceiver
11 private val TAG = BrainwaveDataHolder::class.java.simpleName
14 private var valueBuffer: IntArray
15 private var currentSummaryData = BrainwaveSummaryData()
16 private var maxBufferSize = 0
17 private var currentPosition = 0
18 private var bufferIsFull = false
22 this.maxBufferSize = maxBufferSize
23 valueBuffer = IntArray(maxBufferSize)
26 override fun receivedRawData(value: Int)
28 //Log.v(TAG, " receivedRawData() : $value");
31 valueBuffer[currentPosition] = value
33 if (currentPosition == maxBufferSize)
45 override fun receivedSummaryData(data: ByteArray?)
49 // Log.v(TAG, " receivedSummaryData() : ${data.size} bytes.")
50 if (!currentSummaryData.update(data))
53 Log.v(TAG, " FAIL : PARSE EEG SUMMARY DATA (" + data.size + ")")
58 val attention = currentSummaryData.getAttention()
59 val mediation = currentSummaryData.getMediation()
60 Log.v(TAG, " ATTENTION : $attention MEDIATION : $mediation")
69 fun getSummaryData(): BrainwaveSummaryData
71 return currentSummaryData
74 fun getValues(size: Int): IntArray?
76 var replyData: IntArray? = null
78 var endPosition = currentPosition - 1
79 if (currentPosition > size) {
80 return Arrays.copyOfRange(valueBuffer, endPosition - size, endPosition)
83 return Arrays.copyOfRange(valueBuffer, 0, endPosition)
85 if (currentPosition == 0) {
86 endPosition = maxBufferSize - 1
87 return Arrays.copyOfRange(valueBuffer, endPosition - size, endPosition)
89 val remainSize = size - (currentPosition - 1)
90 val size0: IntArray = Arrays.copyOfRange(valueBuffer, 0, currentPosition - 1)
91 val size1: IntArray = Arrays.copyOfRange(
93 maxBufferSize - 1 - remainSize, maxBufferSize - 1
95 replyData = IntArray(size)
96 System.arraycopy(size1, 0, replyData, 0, size1.size)
97 System.arraycopy(size0, 0, replyData, size1.size, size0.size)
98 } catch (e: Exception) {