package com.pwittchen.eegreader.tgdevice;
import android.os.Handler;
import android.os.Message;
import com.neurosky.thinkgear.TGDevice;
import com.pwittchen.eegreader.activity.contract.GenericActivitySignalContract;
import com.pwittchen.eegreader.generics.GenericApplication;
import com.pwittchen.eegreader.tgdevice.brainwaves.TGDeviceEEGPowerDelta;
import com.pwittchen.eegreader.tgdevice.brainwaves.TGDeviceEEGPowerHighAlpha;
import com.pwittchen.eegreader.tgdevice.brainwaves.TGDeviceEEGPowerHighBeta;
import com.pwittchen.eegreader.tgdevice.brainwaves.TGDeviceEEGPowerLowAlpha;
import com.pwittchen.eegreader.tgdevice.brainwaves.TGDeviceEEGPowerLowBeta;
import com.pwittchen.eegreader.tgdevice.brainwaves.TGDeviceEEGPowerLowGamma;
import com.pwittchen.eegreader.tgdevice.brainwaves.TGDeviceEEGPowerMidGamma;
import com.pwittchen.eegreader.tgdevice.brainwaves.TGDeviceEEGPowerTheta;
import com.pwittchen.eegreader.tgdevice.signals.TGDeviceAttention;
import com.pwittchen.eegreader.tgdevice.signals.TGDeviceBlink;
import com.pwittchen.eegreader.tgdevice.signals.TGDeviceEegPower;
import com.pwittchen.eegreader.tgdevice.signals.TGDeviceHeartRate;
import com.pwittchen.eegreader.tgdevice.signals.TGDeviceLowBattery;
import com.pwittchen.eegreader.tgdevice.signals.TGDeviceMeditation;
import com.pwittchen.eegreader.tgdevice.signals.TGDevicePoorSignal;
import com.pwittchen.eegreader.tgdevice.signals.TGDeviceRawCount;
import com.pwittchen.eegreader.tgdevice.signals.TGDeviceRawData;
import com.pwittchen.eegreader.tgdevice.signals.TGDeviceRawMulti;
import com.pwittchen.eegreader.tgdevice.signals.TGDeviceSleepStage;
import com.pwittchen.eegreader.tgdevice.signals.TGDeviceStateChange;
import com.pwittchen.eegreader.tgdevice.states.TGDeviceStateConnected;
import com.pwittchen.eegreader.tgdevice.states.TGDeviceStateConnecting;
import com.pwittchen.eegreader.tgdevice.states.TGDeviceStateDisconnected;
import com.pwittchen.eegreader.tgdevice.states.TGDeviceStateIdle;
import com.pwittchen.eegreader.tgdevice.states.TGDeviceStateNotFound;
import com.pwittchen.eegreader.tgdevice.states.TGDeviceStateNotPaired;
import java.util.HashMap;
import java.util.Map;
public final class TGDeviceHandler extends Handler {
private static Map<Integer, Runnable> deviceStates;
private static Map<Integer, GenericSignal> deviceSignals;
private static Map<Integer, GenericSignal> brainWaves;
private static GenericActivitySignalContract activityViewContract;
public TGDeviceHandler() {
initializeDeviceStates();
initializeDeviceSignals();
initializeBrainWaves();
}
public static Map<Integer, Runnable> getDeviceStates() {
return deviceStates;
}
public static Map<Integer, GenericSignal> getBrainWaves() {
return brainWaves;
}
private void initializeDeviceStates() {
deviceStates = new HashMap<Integer, Runnable>();
deviceStates.put(TGDevice.STATE_IDLE, new TGDeviceStateIdle());
deviceStates.put(TGDevice.STATE_CONNECTING, new TGDeviceStateConnecting());
deviceStates.put(TGDevice.STATE_CONNECTED, new TGDeviceStateConnected());
deviceStates.put(TGDevice.STATE_NOT_FOUND, new TGDeviceStateNotFound());
deviceStates.put(TGDevice.STATE_NOT_PAIRED, new TGDeviceStateNotPaired());
deviceStates.put(TGDevice.STATE_DISCONNECTED, new TGDeviceStateDisconnected());
}
private void initializeDeviceSignals() {
deviceSignals = new HashMap<Integer, GenericSignal>();
deviceSignals.put(TGDevice.MSG_STATE_CHANGE, new TGDeviceStateChange());
deviceSignals.put(TGDevice.MSG_POOR_SIGNAL, new TGDevicePoorSignal());
deviceSignals.put(TGDevice.MSG_ATTENTION, new TGDeviceAttention());
deviceSignals.put(TGDevice.MSG_MEDITATION, new TGDeviceMeditation());
deviceSignals.put(TGDevice.MSG_BLINK, new TGDeviceBlink());
deviceSignals.put(TGDevice.MSG_SLEEP_STAGE, new TGDeviceSleepStage());
deviceSignals.put(TGDevice.MSG_LOW_BATTERY, new TGDeviceLowBattery());
deviceSignals.put(TGDevice.MSG_RAW_COUNT, new TGDeviceRawCount());
deviceSignals.put(TGDevice.MSG_RAW_DATA, new TGDeviceRawData());
deviceSignals.put(TGDevice.MSG_HEART_RATE, new TGDeviceHeartRate());
deviceSignals.put(TGDevice.MSG_RAW_MULTI, new TGDeviceRawMulti());
deviceSignals.put(TGDevice.MSG_EEG_POWER, new TGDeviceEegPower());
}
private void initializeBrainWaves() {
brainWaves = new HashMap<Integer, GenericSignal>();
brainWaves.put(TGDeviceEegPower.DELTA, new TGDeviceEEGPowerDelta());
brainWaves.put(TGDeviceEegPower.THETA, new TGDeviceEEGPowerTheta());
brainWaves.put(TGDeviceEegPower.LOW_ALPHA, new TGDeviceEEGPowerLowAlpha());
brainWaves.put(TGDeviceEegPower.HIGH_ALPHA, new TGDeviceEEGPowerHighAlpha());
brainWaves.put(TGDeviceEegPower.LOW_BETA, new TGDeviceEEGPowerLowBeta());
brainWaves.put(TGDeviceEegPower.HIGH_BETA, new TGDeviceEEGPowerHighBeta());
brainWaves.put(TGDeviceEegPower.LOW_GAMMA, new TGDeviceEEGPowerLowGamma());
brainWaves.put(TGDeviceEegPower.MID_GAMMA, new TGDeviceEEGPowerMidGamma());
}
@Override
public void handleMessage(Message msg) {
if (GenericApplication.getTGDeviceUtils().getTGDevice() != null) {
if (deviceSignals.containsKey(msg.what)) {
deviceSignals.get(msg.what).message(msg).run();
}
}
}
public void setActivityViewContract(GenericActivitySignalContract activityForUiUpdates) {
this.activityViewContract = activityForUiUpdates;
}
public static GenericActivitySignalContract getActivityViewContract() {
return activityViewContract;
}
}