/*
* Handles an event from the Gaze Point data stream.
*/
void OnGazeDataEvent(TX_HANDLE hGazeDataBehavior)
{
	float data[5]   = { 0, 0, 0, 0, 0 };
	int iResult;

	TX_GAZEPOINTDATAEVENTPARAMS eventParams;
	if (txGetGazePointDataEventParams(hGazeDataBehavior, &eventParams) == TX_RESULT_OK) 
	{
		/* Every time there is an event, send a package*/
		//TCP	Preparing data package = #bytes, BehaviorType, X, Y, Timestamp
		data[0] = 16; // Number of following bytes (4 values * 4 bytes / value)
		data[1] = eventParams.Timestamp; // Seconds since the System Boot Time
		data[2] = 1;  // Behavior Type, 1 for Gaze
		data[3] = eventParams.X;
		data[4] = eventParams.Y;

		printf("Gaze Data: (%.1f, %.1f) time %.0f ms\n", eventParams.X, eventParams.Y, eventParams.Timestamp);

		if (streaming)
		{
			for (int a = 0; a < 5; a++) //Up tp a < number of elements
			{
				SendFloatClientSocket(clientSocket, data[a]);
			}
		}
	}
	else 
	{
		printf("Failed to interpret gaze data event packet.\n");
	}
}
Пример #2
0
void TX_CALLCONVENTION ofxTobiiEyeX::HandleEvent(TX_CONSTHANDLE hAsyncData, TX_USERPARAM param)
{
	TX_HANDLE hEvent = TX_EMPTY_HANDLE;
	TX_HANDLE hBehavior = TX_EMPTY_HANDLE;

	txGetAsyncDataContent(hAsyncData, &hEvent);
	
	if (txGetEventBehavior(hEvent, &hBehavior, TX_BEHAVIORTYPE_GAZEPOINTDATA) == TX_RESULT_OK)
	{
		if (txGetGazePointDataEventParams(hBehavior, &smGazePointDataEventParams) != TX_RESULT_OK)
		{
			ofLogError(smAddonName, "Failed to interpret gaze data event packet.");
		}
	}
	
	if (txGetEventBehavior(hEvent, &hBehavior, TX_BEHAVIORTYPE_EYEPOSITIONDATA) == TX_RESULT_OK)
	{
		if (txGetEyePositionDataEventParams(hBehavior, &smEyePositionEventParams) != TX_RESULT_OK)
		{
			ofLogError(smAddonName, "Failed to interpret eye position event packet.");
		}
	}

	if (txGetEventBehavior(hEvent, &hBehavior, TX_BEHAVIORTYPE_FIXATIONDATA) == TX_RESULT_OK)
	{
		if (txGetFixationDataEventParams(hBehavior, &smFixationEventParams) != TX_RESULT_OK)
		{
			ofLogError(smAddonName, "Failed to interpret fixation event packet.");
		}
	}

	txReleaseObject(&hBehavior);
	txReleaseObject(&hEvent);
}
/*
 * Handles an event from the Gaze Point data stream.
 */
void OnGazeDataEvent(TX_HANDLE hGazeDataBehavior)
{
	TX_GAZEPOINTDATAEVENTPARAMS eventParams;
	if (txGetGazePointDataEventParams(hGazeDataBehavior, &eventParams) == TX_RESULT_OK) {
		printf("Gaze Data: (%.1f, %.1f) timestamp %.0f ms\n", eventParams.X, eventParams.Y, eventParams.Timestamp);
	} else {
		printf("Failed to interpret gaze data event packet.\n");
	}
}
Пример #4
0
/* 
 * Handles an event from the Gaze Point data stream.
 */
void eyeXHost::OnGazeDataEvent(TX_HANDLE hGazeDataBehavior) {
	
	TX_GAZEPOINTDATAEVENTPARAMS eventParams;
	if (txGetGazePointDataEventParams(hGazeDataBehavior, &eventParams) == TX_RESULT_OK) {
		gazePoint.set(eventParams.X, eventParams.Y);
	} else {
		cout << "Failed to interpret gaze data event packet" << "\n";
	}
}
Пример #5
0
void OnGazeDataEvent(TX_HANDLE hGazeDataBehavior)
{
	if (txGetGazePointDataEventParams(hGazeDataBehavior, &lastGazeData) == TX_RESULT_OK)
	{
		gazeAvailable = true;
	} else
	{
		gazeAvailable = false;
	}
}
Пример #6
0
/*
 * Handles an event from the Gaze Point data stream.
 */
void OnGazeDataEvent(TX_HANDLE hGazeDataBehavior)
{
	TX_GAZEPOINTDATAEVENTPARAMS eventParams;
	if (txGetGazePointDataEventParams(hGazeDataBehavior, &eventParams) == TX_RESULT_OK) {
		//mexPrintf("Pushing in Gaze Data: (%.1f, %.1f) Timestamp %.0f ms\n", eventParams.X, eventParams.Y, eventParams.Timestamp);
		q_push (eventParams, lastKnownEyePositionData);	
	} else {
		mexPrintf("Failed to interpret gaze data event packet.\n");
	}
}
Пример #7
0
void Tobii::OnGazePointDataEvent(TX_HANDLE hGazeDataBehavior)
{
	TX_GAZEPOINTDATAEVENTPARAMS eventParams;
	if (txGetGazePointDataEventParams(hGazeDataBehavior, &eventParams) == TX_RESULT_OK && BothEyesOpen()) {
		gazeLoc.x = eventParams.X;
		gazeLoc.y = eventParams.Y;


	}
}
Пример #8
0
/*
 * Handles an event from the Gaze Point data stream.
 */
void OnGazeDataEvent(TX_HANDLE hGazeDataBehavior)
{
	JNIEnv * env;

	TX_GAZEPOINTDATAEVENTPARAMS eventParams;
	if (txGetGazePointDataEventParams(hGazeDataBehavior, &eventParams) == TX_RESULT_OK) {
		// printf("Gaze Data: (%.1f, %.1f) timestamp %.0f ms\n", eventParams.X, eventParams.Y, eventParams.Timestamp);
		if (jvm->AttachCurrentThread((void **)&env, NULL) >= 0) 
		{
     			env->CallVoidMethod(hookObj, newEyeDataProc, (jboolean)TRUE, (jint)eventParams.X,(jint)eventParams.Y,(jint)leftEyeX,(jint)leftEyeY);
		}
	} else {
		printf("Failed to interpret gaze data event packet.\n");
	}
}
Пример #9
0
/*
 * Handles an event from the Gaze Point data stream.
 */
void OnGazeDataEvent(TX_HANDLE hGazeDataBehavior)
{
	TX_GAZEPOINTDATAEVENTPARAMS eventParams;
	if (txGetGazePointDataEventParams(hGazeDataBehavior, &eventParams) == TX_RESULT_OK) {
		if (openForData == true) {
			//mexPrintf("Pushing in Gaze Data: (%.1f, %.1f) Timestamp %.0f ms\n", eventParams.X, eventParams.Y, eventParams.Timestamp);
			q_push (eventParams, lastKnownEyePositionData);	
		} else {
			//mexPrintf("Continuing to push data packet, despite currently being queried.\n");
			//q_push (eventParams, lastKnownEyePositionData);
			mexPrintf("Suppressing push of data packet, because currently being queried.\n");
		}		
	} else {
		mexPrintf("Failed to interpret gaze data event packet.\n");
	}
}