#pragma once
#include <Windows.h>
#include <tchar.h>
#include <string>
#define TOBII_ADDR "192.168.71.50"
//#define EYEDEVICE_GLASS2
#define EYEDEVICE_NONE
class BaseProcess;
class ECTrainerGUI;
class ImageProc;
class SceneCamera;
class Stimulus;
class EyeTrack;
class TobiiREST;
class BitalMonitor;
class Worker;
class KeepAlive;
class Marker;
class DShowMovie;
// メッセージ一覧
enum class ECTMSG {
QUIT = WM_QUIT,
SOFTWARE_START = WM_USER, // ソフトウェア起動
SOFTWARE_END, // ソフトウェア終了
CALIB_START, // キャリブレーション開始
CALIB_OK, // キャリブレーション成功
CALIB_FAILED, // キャリブレーション失敗
CALIB_ERR, // キャリブレーションエラー
EXP_START, // 実験開始
EXP_STOP, // 実験停止
EXP_END, // 実験終了
EXP_NEXT, // 次の刺激に移動
MOVIE_START, // 動画再生開始
MOVIE_STOP, // 動画再生停止
MOVIE_END, // 動画再生終了
MOVIE_ERROR, // 動画エラー
FB_OK, // フィードバック:OK
FB_GOOD, // フィードバック:Good
FB_NICE, // フィードバック:Nice
FB_GREAT, // フィードバック:Great
FB_EXCELLENT, // フィードバック:Excellent
};
// アプリケーション状態
enum class APP_STATUS {
BOOT, IDLE, CALIB, STIM
};
class ECTrainer
{
// プロセス一覧(初期化順) GUI < REST << SCNCAM < ALIVE < EYETR << STIM
enum class PROC { GUI, REST, IMGPROC, SCNCAM, ALIVE, EYETR, BITAL, STIM, WORKER, NUM };
BaseProcess* _pProcs[(int)PROC::NUM];
Marker* _pMarker;
DShowMovie* _pDSMovie;
HINSTANCE _hInstance;
public:
ECTrainer(HINSTANCE hInstance);
~ECTrainer();
ECTrainerGUI* PECTrainerGUI() { return (ECTrainerGUI*)_pProcs[(int)PROC::GUI]; }
ImageProc* PImageProc() { return (ImageProc*)_pProcs[(int)PROC::IMGPROC]; }
SceneCamera* PSceneCamera() { return (SceneCamera*)_pProcs[(int)PROC::SCNCAM]; }
Stimulus* PStimulus() { return (Stimulus*)_pProcs[(int)PROC::STIM]; }
KeepAlive* PKeepAlive() { return (KeepAlive*)_pProcs[(int)PROC::ALIVE]; }
EyeTrack* PEyeTrack() { return (EyeTrack*)_pProcs[(int)PROC::EYETR]; }
TobiiREST* PTobiiREST() { return (TobiiREST*)_pProcs[(int)PROC::REST]; }
BitalMonitor* PBitalMonitor() { return (BitalMonitor*)_pProcs[(int)PROC::BITAL]; }
Worker* PWorker() { return (Worker*)_pProcs[(int)PROC::WORKER]; }
Marker* PMarker() { return _pMarker; }
// メイン処理
bool Process();
// インスタンスハンドル取得
HINSTANCE GetInstance() { return _hInstance; }
// アプリケーションを停止
void StopApp();
// メッセージボックス表示
void MsgBox(LPCWSTR msg, UINT icon = 0);
};