SR Research Support Site
Macros | Functions
Tracker Mode functions

Macros

#define OK_RESULT   0
 
#define NO_REPLY   1000
 
#define LINK_TERMINATED_RESULT   -100
 
#define ABORT_RESULT   27
 
#define UNEXPECTED_EOL_RESULT   -1
 
#define SYNTAX_ERROR_RESULT   -2
 
#define BAD_VALUE_RESULT   -3
 
#define EXTRA_CHARACTERS_RESULT   -4
 
#define IN_DISCONNECT_MODE   16384
 
#define IN_UNKNOWN_MODE   0
 
#define IN_IDLE_MODE   1
 
#define IN_SETUP_MODE   2
 
#define IN_RECORD_MODE   4
 
#define IN_TARGET_MODE   8
 
#define IN_DRIFTCORR_MODE   16
 
#define IN_IMAGE_MODE   32
 
#define IN_USER_MENU   64
 
#define IN_PLAYBACK_MODE   256
 

Functions

INT16 eyelink_current_mode (void)
 
INT16 eyelink_tracker_mode (void)
 
INT16 eyelink_wait_for_mode_ready (UINT32 maxwait)
 
INT16 eyelink_user_menu_selection (void)
 
void set_offline_mode (void)
 

Detailed Description

Macro Definition Documentation

#define ABORT_RESULT   27

EyeLink TRACKER RETURN CODES: operation aborted (calibration)

#define BAD_VALUE_RESULT   -3

COMMAND PARSE ERRORS: value is not right for command or tracker state

#define EXTRA_CHARACTERS_RESULT   -4

COMMAND PARSE ERRORS: bad format or too many values

#define IN_DISCONNECT_MODE   16384

Tracker state bit: disconnected.

#define IN_DRIFTCORR_MODE   16

Tracker state bit: drift correction

#define IN_IDLE_MODE   1

Tracker state bit: off-line

#define IN_IMAGE_MODE   32

Tracker state bit: image-display mode

#define IN_PLAYBACK_MODE   256

Tracker state bit: tracker sending playback data

#define IN_RECORD_MODE   4

Tracker state bit: data flowing

#define IN_SETUP_MODE   2

Tracker state bit: setup or cal/val/dcorr

#define IN_TARGET_MODE   8

Tracker state bit: some mode that needs fixation targets

#define IN_UNKNOWN_MODE   0

Tracker state bit: mode fits no class (i.e setup menu)

#define IN_USER_MENU   64

Tracker state bit: user menu

#define LINK_TERMINATED_RESULT   -100

LINK RETURN CODES: can't send or link closed

#define NO_REPLY   1000

LINK RETURN CODES: no reply yet (for polling test)

#define OK_RESULT   0

LINK RETURN CODES: OK

#define SYNTAX_ERROR_RESULT   -2

COMMAND PARSE ERRORS: unknown command, unknown variable etc.

#define UNEXPECTED_EOL_RESULT   -1

COMMAND PARSE ERRORS: not enough data

Function Documentation

INT16 eyelink_current_mode ( void  )

This function tests the current tracker mode, and returns a set of flags based of what the mode is doing. The most useful flag using the EXPTSPPT toolkit is IN_USER_MENU to test if the EyeLink Abort menu has been activated.

Returns
Set of bitflags that mark mode function: IN_DISCONNECT_MODE if disconnected. IN_IDLE_MODE if off-line (Idle mode). IN_SETUP_MODE if in Setup-menu related mode. IN_RECORD_MODE if tracking is in progress. IN_PLAYBACK_MODE if currently playing back data. IN_TARGET_MODE if in mode that requires a fixation target. IN_DRIFTCORR_MODE if in drift-correction. IN_IMAGE_MODE if displaying grayscale camera image. IN_USER_MENU if displaying Abort or user-defined menu.
\b Example: See \c echo_key()

\sa \c echo_key(), \c eyelink_tracker_mode() and \c eyelink_user_menu_selection()
INT16 eyelink_tracker_mode ( void  )

Returns raw EyeLink mode numbers, defined in eyelink.h as EL_xxxx definitions.

Returns
Raw EyeLink mode, -1 if link disconnected

Example:

1 // This programs illustrates the use of track_mode_loop() function. See BROADCAST for the complete program code
2 
3 #include <eyelink.h>
4 
5 // Follow and process tracker modes
6 // Displays calibration and drift correction targets
7 // Also detects start of recording
8 // Black backgrounds would be transparent as video overlay
9 void track_mode_loop(void)
10 {
11  int oldmode = -1;
12 
13  while(eyelink_is_connected())
14  {
15  int mode = eyelink_tracker_mode();
16  unsigned key = getkey();
17 
18  if(key==27 || break_pressed() || !eyelink_is_connected())
19  return;
20  else if(key) // Echo to tracker
21  eyelink_send_keybutton(key,0,KB_PRESS);
22 
23  if(mode == oldmode)
24  continue;
25  switch(mode)
26  {
27  case EL_RECORD_MODE: // Recording mode
28  // Code for processing recording mode ;
29  break;
30  case EL_IMAGE_MODE: // Image mode
31  // Code for processing image mode ;
32  break;
33  case EL_SETUP_MENU_MODE: // Setup menu mode
34  // Code for processing setup menu mode ;
35  break;
36  case EL_CALIBRATE_MODE: // Calibration, validation, DC mode
37  case EL_VALIDATE_MODE:
38  case EL_DRIFT_CORR_MODE:
39  // Code for processing calibration, validation, dc mode ;
40  break;
41  case EL_OPTIONS_MENU_MODE: // Option menu mode
42  // Code for processing calibration mode ;
43  break;
44  default:
45  // Code for processing default case ;
46  break;
47  }
48  oldmode = mode;
49  }
50 }
See also
eyelink_current_mode() and eyelink_is_connected()
INT16 eyelink_user_menu_selection ( void  )

Checks for a user-menu selection, clears response for next call.

Returns
0 if no selection made since last call, else code of selection.

Example:

1 // This programs illustrates the use of eyelink_user_menu_selection
2 
3 #include <eyelink.h>
4 int i;
5 
6 i = eyelink_current_mode();
7 if(i & IN_USER_MENU) // handle user menu selections
8 {
9  switch(eyelink_user_menu_selection()
10  {
11  case 1: // SETUP selected
12  break;
13  case 2: // REPEAT trial
14  return REPEAT_TRIAL;
15  case 3: // SKIP trial
16  return SKIP_TRIAL;
17  case 4: // Abort experiment
18  eyelink_abort();// this cleans up by erasing menu
19  return ABORT_EXPT;
20  default: // no selection: continue
21  break;
22  }
23 }
See also
eyelink_current_mode()
INT16 eyelink_wait_for_mode_ready ( UINT32  maxwait)

After a mode-change command is given to the EyeLink tracker, an additional 5 to 30 milliseconds may be needed to complete mode setup. Call this function after mode change functions.

Remarks
If it does not return 0, assume a tracker error has occurred.
Parameters
maxwaitMaximum milliseconds to wait for the mode to change.
Returns
0 if mode switching is done, else still waiting.

Example: See eyelink_data_start()

See also
eyelink_data_start() and set_offline_mode()
void set_offline_mode ( void  )

Places EyeLink tracker in off-line (idle) mode. Wait till the tracker has finished the mode transition.

Example:

1 // This program illustrates the use of set_offline_mode() function when doing cleaning up
2 // at the end of data recording
3 
4 // Checks whether we still have the connection to the tracker
5 if(eyelink_is_connected())
6 {
7  // Places EyeLink tracker in off-line (idle) mode
8  set_offline_mode();
9  eyecmd_printf("close_data_file"); // close data file
10  eyelink_close(1); // disconnect from tracker
11 }
12 
13 // shut down system (MUST do before exiting)
14 close_eyelink_system();
See also
eyelink_abort()

Copyright ©2002-2024, SR Research Ltd.