#pragma once
#include <Windows.h>
#include <tchar.h>
#include "myOpenCV.h"
#define 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;
// メッセージ一覧
enum class ECTMSG {
QUIT = WM_QUIT,
CALIB_START = WM_USER,
CALIB_END,
};
// アプリケーション状態
enum class APP_STATUS {
BOOT, IDLE, CALIB, EXEC
};
// キャリブレーション結果
enum class CALIB_STATUS {
DONE, FAIL, ERR
};
// 刺激ページ
enum class STIM_PAGE {
OPENING, CALIB, CALIB_COMPLETE, CALIB_FAILED, START, STOP, NEXT, BACK, WHITE
};
class ECTrainer
{
// プロセス一覧(初期化順) GUI先頭, SCNCAM->ALIVE->EYETR
enum class PROC { GUI, REST, IMGPROC, STIM, SCNCAM, ALIVE, EYETR, BITAL, WORKER, NUM };
BaseProcess* _pProcs[(int)PROC::NUM];
Marker* _pMarker;
HINSTANCE _hInstance;
bool _AppRunning; // 実行中フラグ
std::wstring _MovieToShow; // 再生する動画ファイル
// スレッド開始点
static DWORD WINAPI ThreadEntry(LPVOID lpParameter);
public:
static const int RINGBUFSIZE = 4;
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; } // インスタンスハンドル
bool IsAppRun() { return _AppRunning; } // アプリケーション実行中かどうか
// アプリケーションを停止
void StopApp();
// メッセージボックス表示
void MsgBox(LPCWSTR msg, UINT icon = 0);
void SetMovieToShow(std::wstring file) { _MovieToShow = file; }
std::wstring GetMovieToShow() { return _MovieToShow; }
};