From abfa1d90789fd6264091ecd90b030f1a920380ce Mon Sep 17 00:00:00 2001 From: Max-MI115 Date: Thu, 15 Feb 2024 12:12:12 -0500 Subject: [PATCH] Adds state transition image to docs for StateServer --- docs/docs/StateServer/html/annotated.html | 114 +++ docs/docs/StateServer/html/annotated_dup.js | 6 + docs/docs/StateServer/html/classes.html | 116 +++ docs/docs/StateServer/html/doxygen_crawl.html | 34 + docs/docs/StateServer/html/functions.html | 135 ++++ .../docs/StateServer/html/functions_vars.html | 135 ++++ .../html/group___data_structures.html | 173 +++++ .../html/group___data_structures.js | 5 + docs/docs/StateServer/html/group___files.html | 186 +++++ docs/docs/StateServer/html/group___files.js | 5 + .../StateServer/html/group___handlers.html | 272 +++++++ .../docs/StateServer/html/group___handlers.js | 9 + .../html/group___init_cleanup.html | 205 +++++ .../StateServer/html/group___init_cleanup.js | 6 + .../StateServer/html/group___logging.html | 706 ++++++++++++++++++ docs/docs/StateServer/html/group___logging.js | 19 + .../StateServer/html/group___starters.html | 314 ++++++++ .../docs/StateServer/html/group___starters.js | 9 + .../StateServer/html/group___structures.html | 127 ++++ .../StateServer/html/group___structures.js | 38 + docs/docs/StateServer/html/index.html | 19 +- docs/docs/StateServer/html/index.js | 1 + docs/docs/StateServer/html/menudata.js | 8 +- docs/docs/StateServer/html/navtreedata.js | 12 +- docs/docs/StateServer/html/navtreeindex0.js | 139 +++- docs/docs/StateServer/html/search/all_0.js | 3 +- docs/docs/StateServer/html/search/all_1.js | 21 +- docs/docs/StateServer/html/search/all_10.js | 5 + docs/docs/StateServer/html/search/all_11.js | 12 + docs/docs/StateServer/html/search/all_2.js | 4 +- docs/docs/StateServer/html/search/all_3.js | 3 +- docs/docs/StateServer/html/search/all_4.js | 7 +- docs/docs/StateServer/html/search/all_5.js | 6 +- docs/docs/StateServer/html/search/all_6.js | 2 +- docs/docs/StateServer/html/search/all_7.js | 10 +- docs/docs/StateServer/html/search/all_8.js | 3 +- docs/docs/StateServer/html/search/all_9.js | 5 +- docs/docs/StateServer/html/search/all_a.js | 8 +- docs/docs/StateServer/html/search/all_b.js | 12 +- docs/docs/StateServer/html/search/all_c.js | 8 +- docs/docs/StateServer/html/search/all_d.js | 11 +- docs/docs/StateServer/html/search/all_e.js | 24 +- docs/docs/StateServer/html/search/all_f.js | 13 + .../docs/StateServer/html/search/classes_0.js | 4 + .../docs/StateServer/html/search/classes_1.js | 5 + .../StateServer/html/search/functions_1.js | 10 +- .../StateServer/html/search/functions_3.js | 6 +- .../StateServer/html/search/functions_4.js | 5 +- .../StateServer/html/search/functions_5.js | 8 +- .../StateServer/html/search/functions_6.js | 8 +- .../StateServer/html/search/functions_7.js | 18 + .../StateServer/html/search/functions_8.js | 4 + .../StateServer/html/search/functions_9.js | 7 + docs/docs/StateServer/html/search/groups_0.js | 4 +- docs/docs/StateServer/html/search/groups_1.js | 6 +- docs/docs/StateServer/html/search/groups_2.js | 3 +- docs/docs/StateServer/html/search/groups_3.js | 3 +- docs/docs/StateServer/html/search/groups_4.js | 3 +- docs/docs/StateServer/html/search/groups_5.js | 2 +- docs/docs/StateServer/html/search/groups_6.js | 3 +- docs/docs/StateServer/html/search/groups_7.js | 4 + docs/docs/StateServer/html/search/groups_8.js | 4 + docs/docs/StateServer/html/search/groups_9.js | 5 + docs/docs/StateServer/html/search/groups_a.js | 4 + docs/docs/StateServer/html/search/groups_b.js | 5 + docs/docs/StateServer/html/search/groups_c.js | 5 + docs/docs/StateServer/html/search/groups_d.js | 5 + .../StateServer/html/search/searchdata.js | 29 +- .../StateServer/html/search/variables_0.js | 5 +- .../StateServer/html/search/variables_1.js | 2 +- .../StateServer/html/search/variables_2.js | 4 + .../StateServer/html/search/variables_3.js | 4 + .../StateServer/html/search/variables_4.js | 4 + .../StateServer/html/search/variables_5.js | 8 + .../StateServer/html/search/variables_6.js | 4 + .../StateServer/html/search/variables_7.js | 6 + .../StateServer/html/search/variables_8.js | 4 + .../StateServer/html/search/variables_9.js | 6 + .../StateServer/html/search/variables_a.js | 8 + .../StateServer/html/search/variables_b.js | 8 + docs/docs/StateServer/html/sitemap.xml | 102 +++ .../html/state_transition_flowchart.png | Bin 0 -> 131989 bytes .../StateServer/html/struct_flag_data.html | 219 ++++++ .../docs/StateServer/html/struct_flag_data.js | 9 + .../html/struct_thread_safe_args.html | 445 +++++++++++ .../html/struct_thread_safe_args.js | 22 + .../StateServer/html/struct_trial_data.html | 181 +++++ .../StateServer/html/struct_trial_data.js | 7 + docs/docs/StateServer/html/topics.html | 27 +- docs/docs/StateServer/html/topics.js | 9 +- 90 files changed, 4076 insertions(+), 118 deletions(-) create mode 100644 docs/docs/StateServer/html/annotated.html create mode 100644 docs/docs/StateServer/html/annotated_dup.js create mode 100644 docs/docs/StateServer/html/classes.html create mode 100644 docs/docs/StateServer/html/functions.html create mode 100644 docs/docs/StateServer/html/functions_vars.html create mode 100644 docs/docs/StateServer/html/group___data_structures.html create mode 100644 docs/docs/StateServer/html/group___data_structures.js create mode 100644 docs/docs/StateServer/html/group___files.html create mode 100644 docs/docs/StateServer/html/group___files.js create mode 100644 docs/docs/StateServer/html/group___handlers.html create mode 100644 docs/docs/StateServer/html/group___handlers.js create mode 100644 docs/docs/StateServer/html/group___init_cleanup.html create mode 100644 docs/docs/StateServer/html/group___init_cleanup.js create mode 100644 docs/docs/StateServer/html/group___logging.html create mode 100644 docs/docs/StateServer/html/group___logging.js create mode 100644 docs/docs/StateServer/html/group___starters.html create mode 100644 docs/docs/StateServer/html/group___starters.js create mode 100644 docs/docs/StateServer/html/group___structures.html create mode 100644 docs/docs/StateServer/html/group___structures.js create mode 100644 docs/docs/StateServer/html/search/all_10.js create mode 100644 docs/docs/StateServer/html/search/all_11.js create mode 100644 docs/docs/StateServer/html/search/all_f.js create mode 100644 docs/docs/StateServer/html/search/classes_0.js create mode 100644 docs/docs/StateServer/html/search/classes_1.js create mode 100644 docs/docs/StateServer/html/search/functions_7.js create mode 100644 docs/docs/StateServer/html/search/functions_8.js create mode 100644 docs/docs/StateServer/html/search/functions_9.js create mode 100644 docs/docs/StateServer/html/search/groups_7.js create mode 100644 docs/docs/StateServer/html/search/groups_8.js create mode 100644 docs/docs/StateServer/html/search/groups_9.js create mode 100644 docs/docs/StateServer/html/search/groups_a.js create mode 100644 docs/docs/StateServer/html/search/groups_b.js create mode 100644 docs/docs/StateServer/html/search/groups_c.js create mode 100644 docs/docs/StateServer/html/search/groups_d.js create mode 100644 docs/docs/StateServer/html/search/variables_2.js create mode 100644 docs/docs/StateServer/html/search/variables_3.js create mode 100644 docs/docs/StateServer/html/search/variables_4.js create mode 100644 docs/docs/StateServer/html/search/variables_5.js create mode 100644 docs/docs/StateServer/html/search/variables_6.js create mode 100644 docs/docs/StateServer/html/search/variables_7.js create mode 100644 docs/docs/StateServer/html/search/variables_8.js create mode 100644 docs/docs/StateServer/html/search/variables_9.js create mode 100644 docs/docs/StateServer/html/search/variables_a.js create mode 100644 docs/docs/StateServer/html/search/variables_b.js create mode 100644 docs/docs/StateServer/html/state_transition_flowchart.png create mode 100644 docs/docs/StateServer/html/struct_flag_data.html create mode 100644 docs/docs/StateServer/html/struct_flag_data.js create mode 100644 docs/docs/StateServer/html/struct_thread_safe_args.html create mode 100644 docs/docs/StateServer/html/struct_thread_safe_args.js create mode 100644 docs/docs/StateServer/html/struct_trial_data.html create mode 100644 docs/docs/StateServer/html/struct_trial_data.js diff --git a/docs/docs/StateServer/html/annotated.html b/docs/docs/StateServer/html/annotated.html new file mode 100644 index 0000000..d1558cc --- /dev/null +++ b/docs/docs/StateServer/html/annotated.html @@ -0,0 +1,114 @@ + + + + + + + +StateServer: Data Structures + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
StateServer 1.0.0 +
+
Compiled `c` application to handle task state logging and timing.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+ + + + +
 CFlagData
 CThreadSafeArgsThread-safe state-data/argument structure
 CTrialData
+
+
+
+ + + + diff --git a/docs/docs/StateServer/html/annotated_dup.js b/docs/docs/StateServer/html/annotated_dup.js new file mode 100644 index 0000000..7b64e37 --- /dev/null +++ b/docs/docs/StateServer/html/annotated_dup.js @@ -0,0 +1,6 @@ +var annotated_dup = +[ + [ "FlagData", "struct_flag_data.html", "struct_flag_data" ], + [ "ThreadSafeArgs", "struct_thread_safe_args.html", "struct_thread_safe_args" ], + [ "TrialData", "struct_trial_data.html", "struct_trial_data" ] +]; \ No newline at end of file diff --git a/docs/docs/StateServer/html/classes.html b/docs/docs/StateServer/html/classes.html new file mode 100644 index 0000000..52f7e96 --- /dev/null +++ b/docs/docs/StateServer/html/classes.html @@ -0,0 +1,116 @@ + + + + + + + +StateServer: Data Structure Index + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
StateServer 1.0.0 +
+
Compiled `c` application to handle task state logging and timing.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Data Structure Index
+
+
+
F | T
+ +
+
+ + + + diff --git a/docs/docs/StateServer/html/doxygen_crawl.html b/docs/docs/StateServer/html/doxygen_crawl.html index ef9d685..c3f5ccf 100644 --- a/docs/docs/StateServer/html/doxygen_crawl.html +++ b/docs/docs/StateServer/html/doxygen_crawl.html @@ -8,18 +8,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/docs/StateServer/html/functions.html b/docs/docs/StateServer/html/functions.html new file mode 100644 index 0000000..b2f36fc --- /dev/null +++ b/docs/docs/StateServer/html/functions.html @@ -0,0 +1,135 @@ + + + + + + + +StateServer: Data Fields + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
StateServer 1.0.0 +
+
Compiled `c` application to handle task state logging and timing.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+
+
+ + + + diff --git a/docs/docs/StateServer/html/functions_vars.html b/docs/docs/StateServer/html/functions_vars.html new file mode 100644 index 0000000..dfca891 --- /dev/null +++ b/docs/docs/StateServer/html/functions_vars.html @@ -0,0 +1,135 @@ + + + + + + + +StateServer: Data Fields - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
StateServer 1.0.0 +
+
Compiled `c` application to handle task state logging and timing.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the structures/unions they belong to:
+
+
+ + + + diff --git a/docs/docs/StateServer/html/group___data_structures.html b/docs/docs/StateServer/html/group___data_structures.html new file mode 100644 index 0000000..a19bb89 --- /dev/null +++ b/docs/docs/StateServer/html/group___data_structures.html @@ -0,0 +1,173 @@ + + + + + + + +StateServer: DataStructures + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
StateServer 1.0.0 +
+
Compiled `c` application to handle task state logging and timing.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DataStructures
+
+
+ + + + + + + + +

+Functions

void initParameters (TaskParameters *params)
 Initializes task parameters with default values.
 
void printParameters (const TaskParameters *params)
 Prints task parameters to the terminal for debugging purposes.
 
+

Detailed Description

+

Function Documentation

+ +

◆ initParameters()

+ +
+
+ + + + + + + +
void initParameters (TaskParameters * params)
+
+ +

Initializes task parameters with default values.

+

This function initializes the given task parameters with default values.

+
Parameters
+ + +
paramsPointer to the TaskParameters struct to initialize.
+
+
+ +
+
+ +

◆ printParameters()

+ +
+
+ + + + + + + +
void printParameters (const TaskParameters * params)
+
+ +

Prints task parameters to the terminal for debugging purposes.

+

This function prints the given task parameters to the terminal in a human-readable format for debugging purposes.

+
Parameters
+ + +
paramsPointer to the TaskParameters struct to print.
+
+
+ +
+
+
+
+ + + + diff --git a/docs/docs/StateServer/html/group___data_structures.js b/docs/docs/StateServer/html/group___data_structures.js new file mode 100644 index 0000000..5369128 --- /dev/null +++ b/docs/docs/StateServer/html/group___data_structures.js @@ -0,0 +1,5 @@ +var group___data_structures = +[ + [ "initParameters", "group___data_structures.html#ga10dab33281aebb5b261618ab79d0f9f2", null ], + [ "printParameters", "group___data_structures.html#ga81a39c5893ca9823181ce8f54ee6284f", null ] +]; \ No newline at end of file diff --git a/docs/docs/StateServer/html/group___files.html b/docs/docs/StateServer/html/group___files.html new file mode 100644 index 0000000..f110639 --- /dev/null +++ b/docs/docs/StateServer/html/group___files.html @@ -0,0 +1,186 @@ + + + + + + + +StateServer: Parameter Files + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
StateServer 1.0.0 +
+
Compiled `c` application to handle task state logging and timing.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Parameter Files
+
+
+ +

Handling of parameter file read and write operations. +More...

+ + + + + + + + +

+Functions

void parseParameterFile (const char *filename, TaskParameters *params)
 Parses a parameter file and populates a TaskParameters struct.
 
void writeParameterFile (const char *filename, const TaskParameters *params)
 Writes task parameters to a parameter file.
 
+

Detailed Description

+

Handling of parameter file read and write operations.

+

Function Documentation

+ +

◆ parseParameterFile()

+ +
+
+ + + + + + + + + + + +
void parseParameterFile (const char * filename,
TaskParameters * params )
+
+ +

Parses a parameter file and populates a TaskParameters struct.

+
Parameters
+ + + +
filenameThe name of the parameter file.
paramsPointer to the TaskParameters struct to populate.
+
+
+ +
+
+ +

◆ writeParameterFile()

+ +
+
+ + + + + + + + + + + +
void writeParameterFile (const char * filename,
const TaskParameters * params )
+
+ +

Writes task parameters to a parameter file.

+

This function writes the given task parameters to a parameter file with the specified filename.

+
Parameters
+ + + +
filenameThe name of the parameter file to write.
paramsPointer to the TaskParameters struct containing the parameters to write.
+
+
+ +
+
+
+
+ + + + diff --git a/docs/docs/StateServer/html/group___files.js b/docs/docs/StateServer/html/group___files.js new file mode 100644 index 0000000..dac8bf4 --- /dev/null +++ b/docs/docs/StateServer/html/group___files.js @@ -0,0 +1,5 @@ +var group___files = +[ + [ "parseParameterFile", "group___files.html#ga589270ff19aa1098209a49c79129373b", null ], + [ "writeParameterFile", "group___files.html#gaed5766b3ea91d3a21ae1d85a37d30989", null ] +]; \ No newline at end of file diff --git a/docs/docs/StateServer/html/group___handlers.html b/docs/docs/StateServer/html/group___handlers.html new file mode 100644 index 0000000..ce30499 --- /dev/null +++ b/docs/docs/StateServer/html/group___handlers.html @@ -0,0 +1,272 @@ + + + + + + + +StateServer: Handler Threads + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
StateServer 1.0.0 +
+
Compiled `c` application to handle task state logging and timing.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Handler Threads
+
+
+ +

Core of the multi-threaded state_server application.
+ +More...

+ + + + + + + + + + + + + + + +

+Functions

void * clockHandler (void *arg)
 
void * outputHandler (void *arg)
 
void * inputHandler (void *arg)
 
void * stateHandler (void *arg)
 
void * controllerHandler (void *arg)
 
State transitionState (State s, Transition t, double ts, double *tl)
 Returns the updated State value based on state-transition for this state-update cycle.
 
+

Detailed Description

+

Core of the multi-threaded state_server application.
+

+

Function Documentation

+ +

◆ clockHandler()

+ +
+
+ + + + + + + +
void * clockHandler (void * arg)
+
+

Thread function for handling clock

+ +
+
+ +

◆ controllerHandler()

+ +
+
+ + + + + + + +
void * controllerHandler (void * arg)
+
+

Thread function for controller handler

+ +
+
+ +

◆ inputHandler()

+ +
+
+ + + + + + + +
void * inputHandler (void * arg)
+
+

Thread function for handling input messages etc

+ +
+
+ +

◆ outputHandler()

+ +
+
+ + + + + + + +
void * outputHandler (void * arg)
+
+

Thread function for handling output messages etc

+ +
+
+ +

◆ stateHandler()

+ +
+
+ + + + + + + +
void * stateHandler (void * arg)
+
+

Thread function for state handler

+ +
+
+ +

◆ transitionState()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
State transitionState (State s,
Transition t,
double ts,
double * tl )
+
+ +

Returns the updated State value based on state-transition for this state-update cycle.

+

This function calculates the new state based on the current state s, the transition t, and updates the time tl accordingly.

+
Parameters
+ + + + + +
sThe current state.
tThe transition.
tsThe timestamp.
tlPointer to the time to update.
+
+
+
Returns
The updated State value.
+
+ +
+State Transition Flowchart
+ +
+
+
+
+ + + + diff --git a/docs/docs/StateServer/html/group___handlers.js b/docs/docs/StateServer/html/group___handlers.js new file mode 100644 index 0000000..2ca0ba0 --- /dev/null +++ b/docs/docs/StateServer/html/group___handlers.js @@ -0,0 +1,9 @@ +var group___handlers = +[ + [ "clockHandler", "group___handlers.html#ga19d9c1506449a50b88bf4fdbe81cb232", null ], + [ "controllerHandler", "group___handlers.html#gaa2e3e21d68800d421ff39fc0c2360da2", null ], + [ "inputHandler", "group___handlers.html#ga31b98aa826b2d91ab6b16256b3d6af43", null ], + [ "outputHandler", "group___handlers.html#ga5007d76b897084fd25c18db4b1339bd1", null ], + [ "stateHandler", "group___handlers.html#ga5c4f1006b0a01f5fcdbb40a9b98b0945", null ], + [ "transitionState", "group___handlers.html#gaf8131c4ceff1d3e2b36a63d2e9e2d50f", null ] +]; \ No newline at end of file diff --git a/docs/docs/StateServer/html/group___init_cleanup.html b/docs/docs/StateServer/html/group___init_cleanup.html new file mode 100644 index 0000000..0d1059f --- /dev/null +++ b/docs/docs/StateServer/html/group___init_cleanup.html @@ -0,0 +1,205 @@ + + + + + + + +StateServer: Initialization and Cleanup + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
StateServer 1.0.0 +
+
Compiled `c` application to handle task state logging and timing.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Initialization and Cleanup
+
+
+ +

Allocate memory and deallocate it and make sure threads are closed.
+ +More...

+ + + + + + + + + + + +

+Functions

void initTrialData (TrialData *trialData)
 Initialize the trial-data-tracking structure.
 
void initThreadArgs (ThreadSafeArgs *args)
 Initialize the thread-safe argument structure.
 
void cleanupThreadArgs (ThreadSafeArgs *args)
 Clean up the thread-safe argument structure.
 
+

Detailed Description

+

Allocate memory and deallocate it and make sure threads are closed.
+

+

Function Documentation

+ +

◆ cleanupThreadArgs()

+ +
+
+ + + + + + + +
void cleanupThreadArgs (ThreadSafeArgs * args)
+
+ +

Clean up the thread-safe argument structure.

+
Parameters
+ + +
argsPointer to ThreadSafeArgs structure.
+
+
+ +
+
+ +

◆ initThreadArgs()

+ +
+
+ + + + + + + +
void initThreadArgs (ThreadSafeArgs * args)
+
+ +

Initialize the thread-safe argument structure.

+
Parameters
+ + +
argsPointer to ThreadSafeArgs structure.
+
+
+ +
+
+ +

◆ initTrialData()

+ +
+
+ + + + + + + +
void initTrialData (TrialData * trialData)
+
+ +

Initialize the trial-data-tracking structure.

+
Parameters
+ + +
trialDataPointer to TrialData structure.
+
+
+ +
+
+
+
+ + + + diff --git a/docs/docs/StateServer/html/group___init_cleanup.js b/docs/docs/StateServer/html/group___init_cleanup.js new file mode 100644 index 0000000..cad3c0d --- /dev/null +++ b/docs/docs/StateServer/html/group___init_cleanup.js @@ -0,0 +1,6 @@ +var group___init_cleanup = +[ + [ "cleanupThreadArgs", "group___init_cleanup.html#ga4858004e3fa1da0933361b45372bb8af", null ], + [ "initThreadArgs", "group___init_cleanup.html#ga70a17b5b1b3717ebd032c73863e852ef", null ], + [ "initTrialData", "group___init_cleanup.html#gae584c9cf40def7651bcf9504749aaf60", null ] +]; \ No newline at end of file diff --git a/docs/docs/StateServer/html/group___logging.html b/docs/docs/StateServer/html/group___logging.html new file mode 100644 index 0000000..5b644c6 --- /dev/null +++ b/docs/docs/StateServer/html/group___logging.html @@ -0,0 +1,706 @@ + + + + + + + +StateServer: Logging Functions + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
StateServer 1.0.0 +
+
Compiled `c` application to handle task state logging and timing.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Logging Functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

int readConfig (LoggerConfig *config)
 Read the configuration from the config.yaml file.
 
void * cursor_clock_thread_func (void *arg)
 Thread function to generate cursor data timestamps.
 
void * cursor_producer_thread_func (void *arg)
 Thread function to generate cursor data.
 
void * cursor_consumer_thread_func (void *arg)
 Thread function to consume cursor data.
 
void * state_clock_thread_func (void *arg)
 Thread function to generate state data timestamps.
 
void * state_producer_thread_func (void *arg)
 Thread function to generate state data.
 
void * state_consumer_thread_func (void *arg)
 Thread function to consume state data.
 
FILE * createCursorLog (const char *subject, uint16_t index, HeaderData *headerData, LoggerConfig *config)
 Creates a cursor log file for writing.
 
FILE * createStateLog (const char *subject, uint16_t index, HeaderData *headerData, LoggerConfig *config)
 Creates a state log file for writing.
 
FILE * openCursorLogForReading (const char *subject, uint16_t YYYY, uint8_t MM, uint8_t DD, uint16_t index, HeaderData *headerData, LoggerConfig *config)
 Opens a cursor log file for reading.
 
FILE * openStateLogForReading (const char *subject, uint16_t YYYY, uint8_t MM, uint8_t DD, uint16_t index, HeaderData *headerData, LoggerConfig *config)
 Opens a state log file for reading.
 
int readFileHeader (FILE *logFile, HeaderData *headerData)
 Reads the header data from the log file.
 
int readNextCursorDatum (FILE *cursorLogFile, CursorData *cursorData)
 Reads the next cursor datum from the cursor log file.
 
int readNextStateDatum (FILE *stateLogFile, StateData *stateData)
 Reads the next state datum from the state log file.
 
void writeCursorData (FILE *logFile, CursorData *cursorData)
 Writes cursor data to the cursor log file.
 
void writeStateData (FILE *logFile, StateData *stateData)
 Writes state data to the state log file.
 
+

Detailed Description

+

Function Documentation

+ +

◆ createCursorLog()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
FILE * createCursorLog (const char * subject,
uint16_t index,
HeaderData * headerData,
LoggerConfig * config )
+
+ +

Creates a cursor log file for writing.

+
Parameters
+ + + + + +
subjectThe subject of the log file.
indexThe index of the log file.
headerDataPointer to the header data structure.
configPointer to the logger configuration.
+
+
+
Returns
A pointer to the cursor log file if successful, NULL otherwise.
+ +
+
+ +

◆ createStateLog()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
FILE * createStateLog (const char * subject,
uint16_t index,
HeaderData * headerData,
LoggerConfig * config )
+
+ +

Creates a state log file for writing.

+
Parameters
+ + + + + +
subjectThe subject of the log file.
indexThe index of the log file.
headerDataPointer to the header data structure.
configPointer to the logger configuration.
+
+
+
Returns
A pointer to the state log file if successful, NULL otherwise.
+ +
+
+ +

◆ cursor_clock_thread_func()

+ +
+
+ + + + + + + +
void * cursor_clock_thread_func (void * arg)
+
+ +

Thread function to generate cursor data timestamps.

+
Parameters
+ + +
argPointer to the arguments structure.
+
+
+
Returns
NULL.
+ +
+
+ +

◆ cursor_consumer_thread_func()

+ +
+
+ + + + + + + +
void * cursor_consumer_thread_func (void * arg)
+
+ +

Thread function to consume cursor data.

+
Parameters
+ + +
argPointer to the arguments structure.
+
+
+
Returns
NULL.
+ +
+
+ +

◆ cursor_producer_thread_func()

+ +
+
+ + + + + + + +
void * cursor_producer_thread_func (void * arg)
+
+ +

Thread function to generate cursor data.

+
Parameters
+ + +
argPointer to the arguments structure.
+
+
+
Returns
NULL.
+ +
+
+ +

◆ openCursorLogForReading()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FILE * openCursorLogForReading (const char * subject,
uint16_t YYYY,
uint8_t MM,
uint8_t DD,
uint16_t index,
HeaderData * headerData,
LoggerConfig * config )
+
+ +

Opens a cursor log file for reading.

+
Parameters
+ + + + + + + + +
subjectThe subject of the log file.
YYYYYear.
MMMonth.
DDDay.
indexThe index of the log file.
headerDataPointer to the header data structure.
configPointer to the logger configuration.
+
+
+
Returns
A pointer to the opened cursor log file if successful, NULL otherwise.
+ +
+
+ +

◆ openStateLogForReading()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FILE * openStateLogForReading (const char * subject,
uint16_t YYYY,
uint8_t MM,
uint8_t DD,
uint16_t index,
HeaderData * headerData,
LoggerConfig * config )
+
+ +

Opens a state log file for reading.

+
Parameters
+ + + + + + + + +
subjectThe subject of the log file.
YYYYYear.
MMMonth.
DDDay.
indexThe index of the log file.
headerDataPointer to the header data structure.
configPointer to the logger configuration.
+
+
+
Returns
A pointer to the opened state log file if successful, NULL otherwise.
+ +
+
+ +

◆ readConfig()

+ +
+
+ + + + + + + +
int readConfig (LoggerConfig * config)
+
+ +

Read the configuration from the config.yaml file.

+
Parameters
+ + +
configPointer to the configuration structure.
+
+
+
Returns
1 if successful, 0 otherwise.
+ +
+
+ +

◆ readFileHeader()

+ +
+
+ + + + + + + + + + + +
int readFileHeader (FILE * logFile,
HeaderData * headerData )
+
+ +

Reads the header data from the log file.

+
Parameters
+ + + +
logFilePointer to the log file.
headerDataPointer to the header data structure.
+
+
+
Returns
1 if header was successfully read, 0 otherwise.
+ +
+
+ +

◆ readNextCursorDatum()

+ +
+
+ + + + + + + + + + + +
int readNextCursorDatum (FILE * cursorLogFile,
CursorData * cursorData )
+
+ +

Reads the next cursor datum from the cursor log file.

+
Parameters
+ + + +
cursorLogFilePointer to the cursor log file.
cursorDataPointer to store the cursor data.
+
+
+
Returns
1 if data was successfully read, 0 otherwise.
+ +
+
+ +

◆ readNextStateDatum()

+ +
+
+ + + + + + + + + + + +
int readNextStateDatum (FILE * stateLogFile,
StateData * stateData )
+
+ +

Reads the next state datum from the state log file.

+
Parameters
+ + + +
stateLogFilePointer to the state log file.
stateDataPointer to store the state data.
+
+
+
Returns
1 if data was successfully read, 0 otherwise.
+ +
+
+ +

◆ state_clock_thread_func()

+ +
+
+ + + + + + + +
void * state_clock_thread_func (void * arg)
+
+ +

Thread function to generate state data timestamps.

+
Parameters
+ + +
argPointer to the arguments structure.
+
+
+
Returns
NULL.
+ +
+
+ +

◆ state_consumer_thread_func()

+ +
+
+ + + + + + + +
void * state_consumer_thread_func (void * arg)
+
+ +

Thread function to consume state data.

+
Parameters
+ + +
argPointer to the arguments structure.
+
+
+
Returns
NULL.
+ +
+
+ +

◆ state_producer_thread_func()

+ +
+
+ + + + + + + +
void * state_producer_thread_func (void * arg)
+
+ +

Thread function to generate state data.

+
Parameters
+ + +
argPointer to the arguments structure.
+
+
+
Returns
NULL.
+ +
+
+ +

◆ writeCursorData()

+ +
+
+ + + + + + + + + + + +
void writeCursorData (FILE * logFile,
CursorData * cursorData )
+
+ +

Writes cursor data to the cursor log file.

+
Parameters
+ + + +
logFilePointer to the cursor log file.
cursorDataPointer to the cursor data.
+
+
+ +
+
+ +

◆ writeStateData()

+ +
+
+ + + + + + + + + + + +
void writeStateData (FILE * logFile,
StateData * stateData )
+
+ +

Writes state data to the state log file.

+
Parameters
+ + + +
logFilePointer to the state log file.
stateDataPointer to the state data.
+
+
+ +
+
+
+
+ + + + diff --git a/docs/docs/StateServer/html/group___logging.js b/docs/docs/StateServer/html/group___logging.js new file mode 100644 index 0000000..6404d0d --- /dev/null +++ b/docs/docs/StateServer/html/group___logging.js @@ -0,0 +1,19 @@ +var group___logging = +[ + [ "createCursorLog", "group___logging.html#ga32884b19b493d117cfb8d3f00516884c", null ], + [ "createStateLog", "group___logging.html#ga59895715a46f6b39c9860c416ce3c33b", null ], + [ "cursor_clock_thread_func", "group___logging.html#gae610374f801a208816b451cc18ebe511", null ], + [ "cursor_consumer_thread_func", "group___logging.html#ga18fb593edaa52e33a588de6f0c309c39", null ], + [ "cursor_producer_thread_func", "group___logging.html#gad9d925b1aeb7de44e1956f461f423bab", null ], + [ "openCursorLogForReading", "group___logging.html#ga57aa8270fc3b3f8c41ff0875e9f5a3cb", null ], + [ "openStateLogForReading", "group___logging.html#gad789a3d04d13705f7f484d4b9670fbe8", null ], + [ "readConfig", "group___logging.html#gaf1898537453977df6337eb90705248c6", null ], + [ "readFileHeader", "group___logging.html#gaefc0229f81ecdb28be83693094a355db", null ], + [ "readNextCursorDatum", "group___logging.html#ga907888d9f8fdb33c2e65851360cb3223", null ], + [ "readNextStateDatum", "group___logging.html#ga6a19a13ad91b65b40660d767c4539680", null ], + [ "state_clock_thread_func", "group___logging.html#gae7f4c8202c0cf8c97feb2ca99b511852", null ], + [ "state_consumer_thread_func", "group___logging.html#ga6e18fff4219966d4cc08847ad2581e8b", null ], + [ "state_producer_thread_func", "group___logging.html#ga36a43c2a341e4edeb6b43f596669d402", null ], + [ "writeCursorData", "group___logging.html#ga543fa0b54d9ac5b3bba921b0a217ae19", null ], + [ "writeStateData", "group___logging.html#ga99d5e83d2de75efe3cc1b0c59dc47bf5", null ] +]; \ No newline at end of file diff --git a/docs/docs/StateServer/html/group___starters.html b/docs/docs/StateServer/html/group___starters.html new file mode 100644 index 0000000..e57165a --- /dev/null +++ b/docs/docs/StateServer/html/group___starters.html @@ -0,0 +1,314 @@ + + + + + + + +StateServer: Startup Routines + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
StateServer 1.0.0 +
+
Compiled `c` application to handle task state logging and timing.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Startup Routines
+
+
+ +

Start the handler threads with appropriate attributes and data.
+ +More...

+ + + + + + + + + + + + + + + + + + + + +

+Functions

int startClockThread (ThreadSafeArgs *args, pthread_t *thread)
 Start the clock thread.
 
int startInputThread (ThreadSafeArgs *args, pthread_t *thread)
 Start the input thread.
 
int startOutputThread (ThreadSafeArgs *args, pthread_t *thread)
 Start the output thread.
 
int startStateThread (ThreadSafeArgs *args, pthread_t *thread)
 Start the state thread.
 
int startControllerThread (ThreadSafeArgs *args, pthread_t *thread)
 Start the controller thread.
 
void * run (void *args)
 Main function to start the server.
 
+

Detailed Description

+

Start the handler threads with appropriate attributes and data.
+

+

Function Documentation

+ +

◆ run()

+ +
+
+ + + + + + + +
void * run (void * args)
+
+ +

Main function to start the server.

+
Returns
0 if successful, otherwise 1.
+ +
+
+ +

◆ startClockThread()

+ +
+
+ + + + + + + + + + + +
int startClockThread (ThreadSafeArgs * args,
pthread_t * thread )
+
+ +

Start the clock thread.

+
Parameters
+ + + +
argsPointer to ThreadSafeArgs structure.
threadPointer to the pthread_t variable for the clock thread.
+
+
+
Returns
0 if successful, otherwise 1.
+ +
+
+ +

◆ startControllerThread()

+ +
+
+ + + + + + + + + + + +
int startControllerThread (ThreadSafeArgs * args,
pthread_t * thread )
+
+ +

Start the controller thread.

+
Parameters
+ + + +
argsPointer to ThreadSafeArgs structure.
threadPointer to the pthread_t variable for the controller thread.
+
+
+
Returns
0 if successful, otherwise 1.
+ +
+
+ +

◆ startInputThread()

+ +
+
+ + + + + + + + + + + +
int startInputThread (ThreadSafeArgs * args,
pthread_t * thread )
+
+ +

Start the input thread.

+
Parameters
+ + + +
argsPointer to ThreadSafeArgs structure.
threadPointer to the pthread_t variable for the input thread.
+
+
+
Returns
0 if successful, otherwise 1.
+ +
+
+ +

◆ startOutputThread()

+ +
+
+ + + + + + + + + + + +
int startOutputThread (ThreadSafeArgs * args,
pthread_t * thread )
+
+ +

Start the output thread.

+
Parameters
+ + + +
argsPointer to ThreadSafeArgs structure.
threadPointer to the pthread_t variable for the output thread.
+
+
+
Returns
0 if successful, otherwise 1.
+ +
+
+ +

◆ startStateThread()

+ +
+
+ + + + + + + + + + + +
int startStateThread (ThreadSafeArgs * args,
pthread_t * thread )
+
+ +

Start the state thread.

+
Parameters
+ + + +
argsPointer to ThreadSafeArgs structure.
threadPointer to the pthread_t variable for the state thread.
+
+
+
Returns
0 if successful, otherwise 1.
+ +
+
+
+
+ + + + diff --git a/docs/docs/StateServer/html/group___starters.js b/docs/docs/StateServer/html/group___starters.js new file mode 100644 index 0000000..e7701a7 --- /dev/null +++ b/docs/docs/StateServer/html/group___starters.js @@ -0,0 +1,9 @@ +var group___starters = +[ + [ "run", "group___starters.html#ga13e0589c2320246725be7d0ab94ed491", null ], + [ "startClockThread", "group___starters.html#ga0f1732be3d0bf62b097e400114da7256", null ], + [ "startControllerThread", "group___starters.html#ga712626323eec3380d5b40b4681a682b9", null ], + [ "startInputThread", "group___starters.html#ga2a464314dd1c12cbd78c4016b61858d0", null ], + [ "startOutputThread", "group___starters.html#ga0e75062128ff357311a986f42e75cab0", null ], + [ "startStateThread", "group___starters.html#gabc147d8697c11157251035908e28f3a4", null ] +]; \ No newline at end of file diff --git a/docs/docs/StateServer/html/group___structures.html b/docs/docs/StateServer/html/group___structures.html new file mode 100644 index 0000000..2086212 --- /dev/null +++ b/docs/docs/StateServer/html/group___structures.html @@ -0,0 +1,127 @@ + + + + + + + +StateServer: Data Structures + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
StateServer 1.0.0 +
+
Compiled `c` application to handle task state logging and timing.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Data Structures
+
+
+ +

Thread-safe data structure to share data between synchronized threads.
+ +More...

+ + + + + + + + + +

+Data Structures

struct  TrialData
 
struct  FlagData
 
struct  ThreadSafeArgs
 Thread-safe state-data/argument structure. More...
 
+

Detailed Description

+

Thread-safe data structure to share data between synchronized threads.
+

+
+
+ + + + diff --git a/docs/docs/StateServer/html/group___structures.js b/docs/docs/StateServer/html/group___structures.js new file mode 100644 index 0000000..d710d42 --- /dev/null +++ b/docs/docs/StateServer/html/group___structures.js @@ -0,0 +1,38 @@ +var group___structures = +[ + [ "TrialData", "struct_trial_data.html", [ + [ "current_attempts", "struct_trial_data.html#a94a644a921236ddb2addaf7cc15c8eee", null ], + [ "current_successes", "struct_trial_data.html#a020e3e3f396eca62e088a2a48127565b", null ], + [ "total_attempts", "struct_trial_data.html#a22fcd09bc8ecbf2ab6808ba7ce00c579", null ], + [ "total_successes", "struct_trial_data.html#a80956b6599bf51ceb7aeaea303d84522", null ] + ] ], + [ "FlagData", "struct_flag_data.html", [ + [ "idle", "struct_flag_data.html#a4213c3b874943dc508637c110eff5795", null ], + [ "new_parameters", "struct_flag_data.html#ac625c792a41564d4102f249d5b0ef420", null ], + [ "new_position", "struct_flag_data.html#a7c6bdb5e8124bc1bf01ce3c678b83a1c", null ], + [ "new_set", "struct_flag_data.html#a5ebc73d6443adf0da1a7ed9982336bda", null ], + [ "new_state", "struct_flag_data.html#afb07254908e8e72204da943e7034a01c", null ], + [ "new_subject", "struct_flag_data.html#a34401a68e4020419f6059692568690f4", null ] + ] ], + [ "ThreadSafeArgs", "struct_thread_safe_args.html", [ + [ "cursor", "struct_thread_safe_args.html#a119a4e370f08dea845e70b87470976fd", null ], + [ "cursor_log", "struct_thread_safe_args.html#a5fc00f7a898b930f6022be7260a87dbd", null ], + [ "flags", "struct_thread_safe_args.html#a73b99d5c8f27ebe00308f802449cdb84", null ], + [ "logging", "struct_thread_safe_args.html#ace44d00a54a671d03312f50e12bc0361", null ], + [ "mutex", "struct_thread_safe_args.html#a6c0fa031c4f9946a0908c4ff3297b473", null ], + [ "parameters", "struct_thread_safe_args.html#aed48b710a2a9089fdf36e7de36257199", null ], + [ "position", "struct_thread_safe_args.html#ae4131c65a093bd8485d7378725d85293", null ], + [ "running", "struct_thread_safe_args.html#a76cd8837eb53cb672843450f7cafd3bb", null ], + [ "sample_period", "struct_thread_safe_args.html#a48246d0f72529eddcf4655ca618229be", null ], + [ "state", "struct_thread_safe_args.html#a444fdf64bf896ac33010f7901811091b", null ], + [ "state_log", "struct_thread_safe_args.html#aa22f893e0d752a375d2847bb5c2420cf", null ], + [ "target", "struct_thread_safe_args.html#aa28c7420d51cb93ea72b586873e00889", null ], + [ "target_index", "struct_thread_safe_args.html#a58b092f85f0846b7d77b1396d394ce5f", null ], + [ "trial", "struct_thread_safe_args.html#ad46e1e1d9529c5ec1f802778bbb3ae59", null ], + [ "wake_clock_handler", "struct_thread_safe_args.html#a2d91f40c9005363fb80ba808051c38ee", null ], + [ "wake_controller_handler", "struct_thread_safe_args.html#ae480230380462e6f9630d5aadd14c9c9", null ], + [ "wake_input_handler", "struct_thread_safe_args.html#a19f27709401f00b8cb977413fa8341a8", null ], + [ "wake_output_handler", "struct_thread_safe_args.html#a624e25f62d1676bd7445481c502b1941", null ], + [ "wake_state_handler", "struct_thread_safe_args.html#a8d7db023aff7f1029e3d49cafc140e3a", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/docs/StateServer/html/index.html b/docs/docs/StateServer/html/index.html index d39397e..b34d6d7 100644 --- a/docs/docs/StateServer/html/index.html +++ b/docs/docs/StateServer/html/index.html @@ -102,20 +102,27 @@

Contents

-

+

+State Machine

+

The wrist center-out task state machine for the NHP task runs as shown by the following image generated using graphviz:
+ Figure 1: NHP wrist center-out task state machine..
+ To modify this image, you need to update the corresponding lines in state_transition_flowchart.dot in this repository and then re-run graphviz:
+

dot -Tpng state_transition_flowchart.dot -o "C:/Path/To/NML_DOXY_DOCS_REPO/state_transition_flowchart.png"
+

Compiling

To re-compile the executable bin/ui.exe use the following command:
-

gcc src/ui.c -o bin/ui.exe -Iinclude -Llib -lNetwork -lws2_32
+

gcc src/ui.c -o bin/ui.exe -Iinclude -Llib -lNetwork -lws2_32 -lDataStructures -lTaskParameters -lTiming
+

To re-compile the executable bin/test_sender.exe use the following command:

gcc src/test_sender.c -o bin/test_sender.exe -Iinclude -Llib -lNetwork -lws2_32 -lDataStructures -lTiming -lTaskParameters
+

To re-compile the executable bin/state_server.exe use the following command:

gcc src/state_server.c -o bin/state_server.exe -Iinclude -Llib -lNetwork -lws2_32 -lDataStructures -lTiming -lTaskParameters

Note about gcc

-

Note that to use gcc on a Windows 64-bit architecture, the simplest way is to download `msys2`, which will allow you to use pacman from an msys2 terminal. You can first check to see if you already have gcc installed:

(bash)
-
pacman -Q | grep mingw-w64-x86_64-gcc
+

Note that to use gcc on a Windows 64-bit architecture, the simplest way is to download `msys2`, which will allow you to use pacman from an msys2 terminal. You can first check to see if you already have gcc installed:

pacman -Q | grep mingw-w64-x86_64-gcc

If you see anything in the terminal following this command, it means you already have gcc. Otherwise, you need to install it (and probably the rest of the toolchain, such as a linker etc.):
-

(bash)
-
pacman -S mingw-w64-x86_64-toolchain
+

pacman -S mingw-w64-x86_64-toolchain

This will give several options for what you can install. If you are unsure what to do, just install all of them.
Finally, you may also want a toolchain for compiling 32-bit applications from your 64-bit Windows operating system. In that case, you can try:

(bash)
diff --git a/docs/docs/StateServer/html/index.js b/docs/docs/StateServer/html/index.js index 69f107d..5f67789 100644 --- a/docs/docs/StateServer/html/index.js +++ b/docs/docs/StateServer/html/index.js @@ -1,6 +1,7 @@ var index = [ [ "Contents", "index.html#contents", null ], + [ "State Machine", "index.html#state-machine", null ], [ "Compiling", "index.html#compiling", null ], [ "Note about gcc", "index.html#note-about-gcc", null ] ]; \ No newline at end of file diff --git a/docs/docs/StateServer/html/menudata.js b/docs/docs/StateServer/html/menudata.js index f758fe6..308ed25 100644 --- a/docs/docs/StateServer/html/menudata.js +++ b/docs/docs/StateServer/html/menudata.js @@ -24,4 +24,10 @@ */ var menudata={children:[ {text:"Main Page",url:"index.html"}, -{text:"Topics",url:"topics.html"}]} +{text:"Topics",url:"topics.html"}, +{text:"Data Structures",url:"annotated.html",children:[ +{text:"Data Structures",url:"annotated.html"}, +{text:"Data Structure Index",url:"classes.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html"}, +{text:"Variables",url:"functions_vars.html"}]}]}]} diff --git a/docs/docs/StateServer/html/navtreedata.js b/docs/docs/StateServer/html/navtreedata.js index e1c6c50..25f9a91 100644 --- a/docs/docs/StateServer/html/navtreedata.js +++ b/docs/docs/StateServer/html/navtreedata.js @@ -26,13 +26,21 @@ var NAVTREE = [ [ "StateServer", "index.html", [ [ "State Server", "index.html", "index" ], - [ "Topics", "topics.html", "topics" ] + [ "Topics", "topics.html", "topics" ], + [ "Data Structures", "annotated.html", [ + [ "Data Structures", "annotated.html", "annotated_dup" ], + [ "Data Structure Index", "classes.html", null ], + [ "Data Fields", "functions.html", [ + [ "All", "functions.html", null ], + [ "Variables", "functions_vars.html", null ] + ] ] + ] ] ] ] ]; var NAVTREEINDEX = [ -"group___callbacks.html" +"annotated.html" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/docs/docs/StateServer/html/navtreeindex0.js b/docs/docs/StateServer/html/navtreeindex0.js index de6a89b..5d9dac1 100644 --- a/docs/docs/StateServer/html/navtreeindex0.js +++ b/docs/docs/StateServer/html/navtreeindex0.js @@ -1,38 +1,117 @@ var NAVTREEINDEX0 = { -"group___callbacks.html":[1,5], -"group___callbacks.html#ga02a353afa894bb258f0bca3433e00850":[1,5,0], -"group___callbacks.html#ga38f05f14edecf66bbf8a70e228a975bd":[1,5,1], -"group___callbacks.html#gac996a0edf7f6d6736f7f2920665a453d":[1,5,2], -"group___clean_up.html":[1,2], -"group___clean_up.html#ga1af42a80836683ce46af20b6768565bb":[1,2,0], -"group___enumerations.html":[1,3,0], -"group___enumerations.html#ga48d1fdc58eca18e99d188f9457eadb32":[1,3,0,0], -"group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd":[1,3,0,2], -"group___enumerations.html#gaff502ebc7862ef8c0df94d92af545be0":[1,3,0,1], -"group___external.html":[1,4], -"group___external.html#ga48d1fdc58eca18e99d188f9457eadb32":[1,4,0], -"group___external.html#ga5b9c577313e5ddddb2f5a53596c8f8e2":[1,4,2], -"group___external.html#gaff502ebc7862ef8c0df94d92af545be0":[1,4,1], -"group___messaging.html":[1,1], -"group___messaging.html#ga00dd7fbc289ed250870a37fb306a6080":[1,1,4], -"group___messaging.html#ga199f827a3bea1e6c5b91c9fd7976074f":[1,1,3], -"group___messaging.html#ga25068958ba8c13fcde3458ae83ece136":[1,1,1], -"group___messaging.html#ga7d21378b8f3bd51fd2157930de9b139f":[1,1,2], -"group___messaging.html#ga82017dab2a76199e764ff280d806e981":[1,1,0], -"group___port_creation.html":[1,0], -"group___port_creation.html#ga26cae777cee8ec996251dab63cb40da7":[1,0,3], -"group___port_creation.html#ga3eb74aed34ee71625a337a5fa9a4f5ba":[1,0,4], -"group___port_creation.html#ga5ee93bf6ea9d1f37eedb43e05ebf0157":[1,0,2], -"group___port_creation.html#ga886364c39477e6170b570627298b8b69":[1,0,1], -"group___port_creation.html#gaea2e8433844f1fe499127f1ec0aa089b":[1,0,0], -"group___timing.html":[1,3], -"group___utility.html":[1,6], +"annotated.html":[2,0], +"classes.html":[2,1], +"functions.html":[2,2,0], +"functions_vars.html":[2,2,1], +"group___callbacks.html":[1,11], +"group___callbacks.html#ga02a353afa894bb258f0bca3433e00850":[1,11,0], +"group___callbacks.html#ga38f05f14edecf66bbf8a70e228a975bd":[1,11,1], +"group___callbacks.html#gac996a0edf7f6d6736f7f2920665a453d":[1,11,2], +"group___clean_up.html":[1,3], +"group___clean_up.html#ga1af42a80836683ce46af20b6768565bb":[1,3,0], +"group___data_structures.html":[1,13], +"group___data_structures.html#ga10dab33281aebb5b261618ab79d0f9f2":[1,13,0], +"group___data_structures.html#ga81a39c5893ca9823181ce8f54ee6284f":[1,13,1], +"group___enumerations.html":[1,9,0], +"group___enumerations.html#ga48d1fdc58eca18e99d188f9457eadb32":[1,9,0,0], +"group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd":[1,9,0,2], +"group___enumerations.html#gaff502ebc7862ef8c0df94d92af545be0":[1,9,0,1], +"group___external.html":[1,10], +"group___external.html#ga48d1fdc58eca18e99d188f9457eadb32":[1,10,0], +"group___external.html#ga5b9c577313e5ddddb2f5a53596c8f8e2":[1,10,2], +"group___external.html#gaff502ebc7862ef8c0df94d92af545be0":[1,10,1], +"group___files.html":[1,4], +"group___files.html#ga589270ff19aa1098209a49c79129373b":[1,4,0], +"group___files.html#gaed5766b3ea91d3a21ae1d85a37d30989":[1,4,1], +"group___handlers.html":[1,7], +"group___handlers.html#ga19d9c1506449a50b88bf4fdbe81cb232":[1,7,0], +"group___handlers.html#ga31b98aa826b2d91ab6b16256b3d6af43":[1,7,2], +"group___handlers.html#ga5007d76b897084fd25c18db4b1339bd1":[1,7,3], +"group___handlers.html#ga5c4f1006b0a01f5fcdbb40a9b98b0945":[1,7,4], +"group___handlers.html#gaa2e3e21d68800d421ff39fc0c2360da2":[1,7,1], +"group___handlers.html#gaf8131c4ceff1d3e2b36a63d2e9e2d50f":[1,7,5], +"group___init_cleanup.html":[1,6], +"group___init_cleanup.html#ga4858004e3fa1da0933361b45372bb8af":[1,6,0], +"group___init_cleanup.html#ga70a17b5b1b3717ebd032c73863e852ef":[1,6,1], +"group___init_cleanup.html#gae584c9cf40def7651bcf9504749aaf60":[1,6,2], +"group___logging.html":[1,0], +"group___logging.html#ga18fb593edaa52e33a588de6f0c309c39":[1,0,3], +"group___logging.html#ga32884b19b493d117cfb8d3f00516884c":[1,0,0], +"group___logging.html#ga36a43c2a341e4edeb6b43f596669d402":[1,0,13], +"group___logging.html#ga543fa0b54d9ac5b3bba921b0a217ae19":[1,0,14], +"group___logging.html#ga57aa8270fc3b3f8c41ff0875e9f5a3cb":[1,0,5], +"group___logging.html#ga59895715a46f6b39c9860c416ce3c33b":[1,0,1], +"group___logging.html#ga6a19a13ad91b65b40660d767c4539680":[1,0,10], +"group___logging.html#ga6e18fff4219966d4cc08847ad2581e8b":[1,0,12], +"group___logging.html#ga907888d9f8fdb33c2e65851360cb3223":[1,0,9], +"group___logging.html#ga99d5e83d2de75efe3cc1b0c59dc47bf5":[1,0,15], +"group___logging.html#gad789a3d04d13705f7f484d4b9670fbe8":[1,0,6], +"group___logging.html#gad9d925b1aeb7de44e1956f461f423bab":[1,0,4], +"group___logging.html#gae610374f801a208816b451cc18ebe511":[1,0,2], +"group___logging.html#gae7f4c8202c0cf8c97feb2ca99b511852":[1,0,11], +"group___logging.html#gaefc0229f81ecdb28be83693094a355db":[1,0,8], +"group___logging.html#gaf1898537453977df6337eb90705248c6":[1,0,7], +"group___messaging.html":[1,2], +"group___messaging.html#ga00dd7fbc289ed250870a37fb306a6080":[1,2,4], +"group___messaging.html#ga199f827a3bea1e6c5b91c9fd7976074f":[1,2,3], +"group___messaging.html#ga25068958ba8c13fcde3458ae83ece136":[1,2,1], +"group___messaging.html#ga7d21378b8f3bd51fd2157930de9b139f":[1,2,2], +"group___messaging.html#ga82017dab2a76199e764ff280d806e981":[1,2,0], +"group___port_creation.html":[1,1], +"group___port_creation.html#ga26cae777cee8ec996251dab63cb40da7":[1,1,3], +"group___port_creation.html#ga3eb74aed34ee71625a337a5fa9a4f5ba":[1,1,4], +"group___port_creation.html#ga5ee93bf6ea9d1f37eedb43e05ebf0157":[1,1,2], +"group___port_creation.html#ga886364c39477e6170b570627298b8b69":[1,1,1], +"group___port_creation.html#gaea2e8433844f1fe499127f1ec0aa089b":[1,1,0], +"group___starters.html":[1,8], +"group___starters.html#ga0e75062128ff357311a986f42e75cab0":[1,8,4], +"group___starters.html#ga0f1732be3d0bf62b097e400114da7256":[1,8,1], +"group___starters.html#ga13e0589c2320246725be7d0ab94ed491":[1,8,0], +"group___starters.html#ga2a464314dd1c12cbd78c4016b61858d0":[1,8,3], +"group___starters.html#ga712626323eec3380d5b40b4681a682b9":[1,8,2], +"group___starters.html#gabc147d8697c11157251035908e28f3a4":[1,8,5], +"group___structures.html":[1,5], +"group___timing.html":[1,9], +"group___utility.html":[1,12], "index.html":[0], "index.html":[], -"index.html#compiling":[0,1], +"index.html#compiling":[0,2], "index.html#contents":[0,0], -"index.html#note-about-gcc":[0,2], +"index.html#note-about-gcc":[0,3], +"index.html#state-machine":[0,1], "pages.html":[], +"struct_flag_data.html":[1,5,1], +"struct_flag_data.html#a34401a68e4020419f6059692568690f4":[1,5,1,5], +"struct_flag_data.html#a4213c3b874943dc508637c110eff5795":[1,5,1,0], +"struct_flag_data.html#a5ebc73d6443adf0da1a7ed9982336bda":[1,5,1,3], +"struct_flag_data.html#a7c6bdb5e8124bc1bf01ce3c678b83a1c":[1,5,1,2], +"struct_flag_data.html#ac625c792a41564d4102f249d5b0ef420":[1,5,1,1], +"struct_flag_data.html#afb07254908e8e72204da943e7034a01c":[1,5,1,4], +"struct_thread_safe_args.html":[1,5,2], +"struct_thread_safe_args.html#a119a4e370f08dea845e70b87470976fd":[1,5,2,0], +"struct_thread_safe_args.html#a19f27709401f00b8cb977413fa8341a8":[1,5,2,16], +"struct_thread_safe_args.html#a2d91f40c9005363fb80ba808051c38ee":[1,5,2,14], +"struct_thread_safe_args.html#a444fdf64bf896ac33010f7901811091b":[1,5,2,9], +"struct_thread_safe_args.html#a48246d0f72529eddcf4655ca618229be":[1,5,2,8], +"struct_thread_safe_args.html#a58b092f85f0846b7d77b1396d394ce5f":[1,5,2,12], +"struct_thread_safe_args.html#a5fc00f7a898b930f6022be7260a87dbd":[1,5,2,1], +"struct_thread_safe_args.html#a624e25f62d1676bd7445481c502b1941":[1,5,2,17], +"struct_thread_safe_args.html#a6c0fa031c4f9946a0908c4ff3297b473":[1,5,2,4], +"struct_thread_safe_args.html#a73b99d5c8f27ebe00308f802449cdb84":[1,5,2,2], +"struct_thread_safe_args.html#a76cd8837eb53cb672843450f7cafd3bb":[1,5,2,7], +"struct_thread_safe_args.html#a8d7db023aff7f1029e3d49cafc140e3a":[1,5,2,18], +"struct_thread_safe_args.html#aa22f893e0d752a375d2847bb5c2420cf":[1,5,2,10], +"struct_thread_safe_args.html#aa28c7420d51cb93ea72b586873e00889":[1,5,2,11], +"struct_thread_safe_args.html#ace44d00a54a671d03312f50e12bc0361":[1,5,2,3], +"struct_thread_safe_args.html#ad46e1e1d9529c5ec1f802778bbb3ae59":[1,5,2,13], +"struct_thread_safe_args.html#ae4131c65a093bd8485d7378725d85293":[1,5,2,6], +"struct_thread_safe_args.html#ae480230380462e6f9630d5aadd14c9c9":[1,5,2,15], +"struct_thread_safe_args.html#aed48b710a2a9089fdf36e7de36257199":[1,5,2,5], +"struct_trial_data.html":[1,5,0], +"struct_trial_data.html#a020e3e3f396eca62e088a2a48127565b":[1,5,0,1], +"struct_trial_data.html#a22fcd09bc8ecbf2ab6808ba7ce00c579":[1,5,0,2], +"struct_trial_data.html#a80956b6599bf51ceb7aeaea303d84522":[1,5,0,3], +"struct_trial_data.html#a94a644a921236ddb2addaf7cc15c8eee":[1,5,0,0], "topics.html":[1] }; diff --git a/docs/docs/StateServer/html/search/all_0.js b/docs/docs/StateServer/html/search/all_0.js index b9c16d4..d19b405 100644 --- a/docs/docs/StateServer/html/search/all_0.js +++ b/docs/docs/StateServer/html/search/all_0.js @@ -1,5 +1,6 @@ var searchData= [ ['about_20gcc_0',['Note about gcc',['../index.html#note-about-gcc',1,'']]], - ['addtexttolargetextbox_1',['AddTextToLargeTextBox',['../group___callbacks.html#ga02a353afa894bb258f0bca3433e00850',1,'AddTextToLargeTextBox(const char *text): ui.c'],['../group___callbacks.html#ga02a353afa894bb258f0bca3433e00850',1,'AddTextToLargeTextBox(const char *text): ui.c']]] + ['addtexttolargetextbox_1',['AddTextToLargeTextBox',['../group___callbacks.html#ga02a353afa894bb258f0bca3433e00850',1,'AddTextToLargeTextBox(const char *text): ui.c'],['../group___callbacks.html#ga02a353afa894bb258f0bca3433e00850',1,'AddTextToLargeTextBox(const char *text): ui.c']]], + ['and_20cleanup_2',['Initialization and Cleanup',['../group___init_cleanup.html',1,'']]] ]; diff --git a/docs/docs/StateServer/html/search/all_1.js b/docs/docs/StateServer/html/search/all_1.js index 73d1b56..f1a0e43 100644 --- a/docs/docs/StateServer/html/search/all_1.js +++ b/docs/docs/StateServer/html/search/all_1.js @@ -2,8 +2,21 @@ var searchData= [ ['callbacks_0',['Callbacks',['../group___callbacks.html',1,'']]], ['clean_20up_1',['Clean-Up',['../group___clean_up.html',1,'']]], - ['cleanupwinsock_2',['cleanupWinsock',['../group___clean_up.html#ga1af42a80836683ce46af20b6768565bb',1,'network.h']]], - ['compiling_3',['Compiling',['../index.html#compiling',1,'']]], - ['contents_4',['Contents',['../index.html#contents',1,'']]], - ['creation_5',['Port Creation',['../group___port_creation.html',1,'']]] + ['cleanup_2',['Initialization and Cleanup',['../group___init_cleanup.html',1,'']]], + ['cleanupthreadargs_3',['cleanupThreadArgs',['../group___init_cleanup.html#ga4858004e3fa1da0933361b45372bb8af',1,'cleanupThreadArgs(ThreadSafeArgs *args): state_server.c'],['../group___init_cleanup.html#ga4858004e3fa1da0933361b45372bb8af',1,'cleanupThreadArgs(ThreadSafeArgs *args): state_server.c']]], + ['cleanupwinsock_4',['cleanupWinsock',['../group___clean_up.html#ga1af42a80836683ce46af20b6768565bb',1,'network.h']]], + ['clockhandler_5',['clockHandler',['../group___handlers.html#ga19d9c1506449a50b88bf4fdbe81cb232',1,'clockHandler(void *arg): state_server.c'],['../group___handlers.html#ga19d9c1506449a50b88bf4fdbe81cb232',1,'clockHandler(void *arg): state_server.c']]], + ['compiling_6',['Compiling',['../index.html#compiling',1,'']]], + ['contents_7',['Contents',['../index.html#contents',1,'']]], + ['controllerhandler_8',['controllerHandler',['../group___handlers.html#gaa2e3e21d68800d421ff39fc0c2360da2',1,'controllerHandler(void *arg): state_server.c'],['../group___handlers.html#gaa2e3e21d68800d421ff39fc0c2360da2',1,'controllerHandler(void *arg): state_server.c']]], + ['createcursorlog_9',['createCursorLog',['../group___logging.html#ga32884b19b493d117cfb8d3f00516884c',1,'logger.h']]], + ['createstatelog_10',['createStateLog',['../group___logging.html#ga59895715a46f6b39c9860c416ce3c33b',1,'logger.h']]], + ['creation_11',['Port Creation',['../group___port_creation.html',1,'']]], + ['current_5fattempts_12',['current_attempts',['../struct_trial_data.html#a94a644a921236ddb2addaf7cc15c8eee',1,'TrialData']]], + ['current_5fsuccesses_13',['current_successes',['../struct_trial_data.html#a020e3e3f396eca62e088a2a48127565b',1,'TrialData']]], + ['cursor_14',['cursor',['../struct_thread_safe_args.html#a119a4e370f08dea845e70b87470976fd',1,'ThreadSafeArgs']]], + ['cursor_5fclock_5fthread_5ffunc_15',['cursor_clock_thread_func',['../group___logging.html#gae610374f801a208816b451cc18ebe511',1,'logger.h']]], + ['cursor_5fconsumer_5fthread_5ffunc_16',['cursor_consumer_thread_func',['../group___logging.html#ga18fb593edaa52e33a588de6f0c309c39',1,'logger.h']]], + ['cursor_5flog_17',['cursor_log',['../struct_thread_safe_args.html#a5fc00f7a898b930f6022be7260a87dbd',1,'ThreadSafeArgs']]], + ['cursor_5fproducer_5fthread_5ffunc_18',['cursor_producer_thread_func',['../group___logging.html#gad9d925b1aeb7de44e1956f461f423bab',1,'logger.h']]] ]; diff --git a/docs/docs/StateServer/html/search/all_10.js b/docs/docs/StateServer/html/search/all_10.js new file mode 100644 index 0000000..edf0858 --- /dev/null +++ b/docs/docs/StateServer/html/search/all_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['up_0',['Clean-Up',['../group___clean_up.html',1,'']]], + ['utilities_1',['Utilities',['../group___utility.html',1,'']]] +]; diff --git a/docs/docs/StateServer/html/search/all_11.js b/docs/docs/StateServer/html/search/all_11.js new file mode 100644 index 0000000..e117ca3 --- /dev/null +++ b/docs/docs/StateServer/html/search/all_11.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['wake_5fclock_5fhandler_0',['wake_clock_handler',['../struct_thread_safe_args.html#a2d91f40c9005363fb80ba808051c38ee',1,'ThreadSafeArgs']]], + ['wake_5fcontroller_5fhandler_1',['wake_controller_handler',['../struct_thread_safe_args.html#ae480230380462e6f9630d5aadd14c9c9',1,'ThreadSafeArgs']]], + ['wake_5finput_5fhandler_2',['wake_input_handler',['../struct_thread_safe_args.html#a19f27709401f00b8cb977413fa8341a8',1,'ThreadSafeArgs']]], + ['wake_5foutput_5fhandler_3',['wake_output_handler',['../struct_thread_safe_args.html#a624e25f62d1676bd7445481c502b1941',1,'ThreadSafeArgs']]], + ['wake_5fstate_5fhandler_4',['wake_state_handler',['../struct_thread_safe_args.html#a8d7db023aff7f1029e3d49cafc140e3a',1,'ThreadSafeArgs']]], + ['wndproc_5',['WndProc',['../group___callbacks.html#gac996a0edf7f6d6736f7f2920665a453d',1,'WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c'],['../group___callbacks.html#gac996a0edf7f6d6736f7f2920665a453d',1,'WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c']]], + ['writecursordata_6',['writeCursorData',['../group___logging.html#ga543fa0b54d9ac5b3bba921b0a217ae19',1,'logger.h']]], + ['writeparameterfile_7',['writeParameterFile',['../group___files.html#gaed5766b3ea91d3a21ae1d85a37d30989',1,'parameters.h']]], + ['writestatedata_8',['writeStateData',['../group___logging.html#ga99d5e83d2de75efe3cc1b0c59dc47bf5',1,'logger.h']]] +]; diff --git a/docs/docs/StateServer/html/search/all_2.js b/docs/docs/StateServer/html/search/all_2.js index f984001..21df25e 100644 --- a/docs/docs/StateServer/html/search/all_2.js +++ b/docs/docs/StateServer/html/search/all_2.js @@ -1,5 +1,5 @@ var searchData= [ - ['enumerations_0',['Enumerations',['../group___enumerations.html',1,'']]], - ['external_1',['External',['../group___external.html',1,'']]] + ['data_20structures_0',['Data Structures',['../group___structures.html',1,'']]], + ['datastructures_1',['DataStructures',['../group___data_structures.html',1,'']]] ]; diff --git a/docs/docs/StateServer/html/search/all_3.js b/docs/docs/StateServer/html/search/all_3.js index f50d662..f984001 100644 --- a/docs/docs/StateServer/html/search/all_3.js +++ b/docs/docs/StateServer/html/search/all_3.js @@ -1,4 +1,5 @@ var searchData= [ - ['functions_0',['Timing Functions',['../group___timing.html',1,'']]] + ['enumerations_0',['Enumerations',['../group___enumerations.html',1,'']]], + ['external_1',['External',['../group___external.html',1,'']]] ]; diff --git a/docs/docs/StateServer/html/search/all_4.js b/docs/docs/StateServer/html/search/all_4.js index 6af5699..df29fc6 100644 --- a/docs/docs/StateServer/html/search/all_4.js +++ b/docs/docs/StateServer/html/search/all_4.js @@ -1,6 +1,7 @@ var searchData= [ - ['gcc_0',['Note about gcc',['../index.html#note-about-gcc',1,'']]], - ['getcurrenttimestamp_1',['getCurrentTimestamp',['../group___enumerations.html#ga48d1fdc58eca18e99d188f9457eadb32',1,'getCurrentTimestamp(): timing.c'],['../group___external.html#ga48d1fdc58eca18e99d188f9457eadb32',1,'getCurrentTimestamp(): timing.c'],['../group___enumerations.html#ga48d1fdc58eca18e99d188f9457eadb32',1,'getCurrentTimestamp(): timing.c'],['../group___enumerations.html#ga48d1fdc58eca18e99d188f9457eadb32',1,'getCurrentTimestamp(): ui.c']]], - ['getelapsedtime_2',['getElapsedTime',['../group___enumerations.html#gaff502ebc7862ef8c0df94d92af545be0',1,'getElapsedTime(LONGLONG qstart, LONGLONG qend): timing.c'],['../group___external.html#gaff502ebc7862ef8c0df94d92af545be0',1,'getElapsedTime(LONGLONG qstart, LONGLONG qend): timing.c'],['../group___enumerations.html#gaff502ebc7862ef8c0df94d92af545be0',1,'getElapsedTime(LONGLONG qstart, LONGLONG qend): timing.c'],['../group___enumerations.html#gaff502ebc7862ef8c0df94d92af545be0',1,'getElapsedTime(LONGLONG qstart, LONGLONG qend): ui.c']]] + ['files_0',['Parameter Files',['../group___files.html',1,'']]], + ['flagdata_1',['FlagData',['../struct_flag_data.html',1,'']]], + ['flags_2',['flags',['../struct_thread_safe_args.html#a73b99d5c8f27ebe00308f802449cdb84',1,'ThreadSafeArgs']]], + ['functions_3',['Functions',['../group___logging.html',1,'Logging Functions'],['../group___timing.html',1,'Timing Functions']]] ]; diff --git a/docs/docs/StateServer/html/search/all_5.js b/docs/docs/StateServer/html/search/all_5.js index 2510e09..6af5699 100644 --- a/docs/docs/StateServer/html/search/all_5.js +++ b/docs/docs/StateServer/html/search/all_5.js @@ -1,6 +1,6 @@ var searchData= [ - ['initializeudpclientsocket_0',['initializeUDPClientSocket',['../group___port_creation.html#gaea2e8433844f1fe499127f1ec0aa089b',1,'network.h']]], - ['initializeudpserversocket_1',['initializeUDPServerSocket',['../group___port_creation.html#ga886364c39477e6170b570627298b8b69',1,'network.h']]], - ['initializewinsock_2',['initializeWinsock',['../group___port_creation.html#ga5ee93bf6ea9d1f37eedb43e05ebf0157',1,'network.h']]] + ['gcc_0',['Note about gcc',['../index.html#note-about-gcc',1,'']]], + ['getcurrenttimestamp_1',['getCurrentTimestamp',['../group___enumerations.html#ga48d1fdc58eca18e99d188f9457eadb32',1,'getCurrentTimestamp(): timing.c'],['../group___external.html#ga48d1fdc58eca18e99d188f9457eadb32',1,'getCurrentTimestamp(): timing.c'],['../group___enumerations.html#ga48d1fdc58eca18e99d188f9457eadb32',1,'getCurrentTimestamp(): timing.c'],['../group___enumerations.html#ga48d1fdc58eca18e99d188f9457eadb32',1,'getCurrentTimestamp(): ui.c']]], + ['getelapsedtime_2',['getElapsedTime',['../group___enumerations.html#gaff502ebc7862ef8c0df94d92af545be0',1,'getElapsedTime(LONGLONG qstart, LONGLONG qend): timing.c'],['../group___external.html#gaff502ebc7862ef8c0df94d92af545be0',1,'getElapsedTime(LONGLONG qstart, LONGLONG qend): timing.c'],['../group___enumerations.html#gaff502ebc7862ef8c0df94d92af545be0',1,'getElapsedTime(LONGLONG qstart, LONGLONG qend): timing.c'],['../group___enumerations.html#gaff502ebc7862ef8c0df94d92af545be0',1,'getElapsedTime(LONGLONG qstart, LONGLONG qend): ui.c']]] ]; diff --git a/docs/docs/StateServer/html/search/all_6.js b/docs/docs/StateServer/html/search/all_6.js index 214a9a1..c83772f 100644 --- a/docs/docs/StateServer/html/search/all_6.js +++ b/docs/docs/StateServer/html/search/all_6.js @@ -1,4 +1,4 @@ var searchData= [ - ['messaging_0',['Messaging',['../group___messaging.html',1,'']]] + ['handler_20threads_0',['Handler Threads',['../group___handlers.html',1,'']]] ]; diff --git a/docs/docs/StateServer/html/search/all_7.js b/docs/docs/StateServer/html/search/all_7.js index 2b63883..de4f68f 100644 --- a/docs/docs/StateServer/html/search/all_7.js +++ b/docs/docs/StateServer/html/search/all_7.js @@ -1,4 +1,12 @@ var searchData= [ - ['note_20about_20gcc_0',['Note about gcc',['../index.html#note-about-gcc',1,'']]] + ['idle_0',['idle',['../struct_flag_data.html#a4213c3b874943dc508637c110eff5795',1,'FlagData']]], + ['initialization_20and_20cleanup_1',['Initialization and Cleanup',['../group___init_cleanup.html',1,'']]], + ['initializeudpclientsocket_2',['initializeUDPClientSocket',['../group___port_creation.html#gaea2e8433844f1fe499127f1ec0aa089b',1,'network.h']]], + ['initializeudpserversocket_3',['initializeUDPServerSocket',['../group___port_creation.html#ga886364c39477e6170b570627298b8b69',1,'network.h']]], + ['initializewinsock_4',['initializeWinsock',['../group___port_creation.html#ga5ee93bf6ea9d1f37eedb43e05ebf0157',1,'network.h']]], + ['initparameters_5',['initParameters',['../group___data_structures.html#ga10dab33281aebb5b261618ab79d0f9f2',1,'parameters.h']]], + ['initthreadargs_6',['initThreadArgs',['../group___init_cleanup.html#ga70a17b5b1b3717ebd032c73863e852ef',1,'initThreadArgs(ThreadSafeArgs *args): state_server.c'],['../group___init_cleanup.html#ga70a17b5b1b3717ebd032c73863e852ef',1,'initThreadArgs(ThreadSafeArgs *args): state_server.c']]], + ['inittrialdata_7',['initTrialData',['../group___init_cleanup.html#gae584c9cf40def7651bcf9504749aaf60',1,'initTrialData(TrialData *trialData): state_server.c'],['../group___init_cleanup.html#gae584c9cf40def7651bcf9504749aaf60',1,'initTrialData(TrialData *trialData): state_server.c']]], + ['inputhandler_8',['inputHandler',['../group___handlers.html#ga31b98aa826b2d91ab6b16256b3d6af43',1,'inputHandler(void *arg): state_server.c'],['../group___handlers.html#ga31b98aa826b2d91ab6b16256b3d6af43',1,'inputHandler(void *arg): state_server.c']]] ]; diff --git a/docs/docs/StateServer/html/search/all_8.js b/docs/docs/StateServer/html/search/all_8.js index 1f909f7..b14ae61 100644 --- a/docs/docs/StateServer/html/search/all_8.js +++ b/docs/docs/StateServer/html/search/all_8.js @@ -1,4 +1,5 @@ var searchData= [ - ['originaleditwndproc_0',['OriginalEditWndProc',['../group___external.html#ga5b9c577313e5ddddb2f5a53596c8f8e2',1,'OriginalEditWndProc: ui.c'],['../group___external.html#ga5b9c577313e5ddddb2f5a53596c8f8e2',1,'OriginalEditWndProc: ui.c']]] + ['logging_0',['logging',['../struct_thread_safe_args.html#ace44d00a54a671d03312f50e12bc0361',1,'ThreadSafeArgs']]], + ['logging_20functions_1',['Logging Functions',['../group___logging.html',1,'']]] ]; diff --git a/docs/docs/StateServer/html/search/all_9.js b/docs/docs/StateServer/html/search/all_9.js index cb77a9e..4db5590 100644 --- a/docs/docs/StateServer/html/search/all_9.js +++ b/docs/docs/StateServer/html/search/all_9.js @@ -1,5 +1,6 @@ var searchData= [ - ['port_20creation_0',['Port Creation',['../group___port_creation.html',1,'']]], - ['processor_5ffrequency_1',['PROCESSOR_FREQUENCY',['../group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd',1,'PROCESSOR_FREQUENCY: timing.c'],['../group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd',1,'PROCESSOR_FREQUENCY: timing.c'],['../group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd',1,'PROCESSOR_FREQUENCY: ui.c']]] + ['machine_0',['State Machine',['../index.html#state-machine',1,'']]], + ['messaging_1',['Messaging',['../group___messaging.html',1,'']]], + ['mutex_2',['mutex',['../struct_thread_safe_args.html#a6c0fa031c4f9946a0908c4ff3297b473',1,'ThreadSafeArgs']]] ]; diff --git a/docs/docs/StateServer/html/search/all_a.js b/docs/docs/StateServer/html/search/all_a.js index c11dda1..5b4c716 100644 --- a/docs/docs/StateServer/html/search/all_a.js +++ b/docs/docs/StateServer/html/search/all_a.js @@ -1,5 +1,9 @@ var searchData= [ - ['receivecursormessage_0',['receiveCursorMessage',['../group___messaging.html#ga82017dab2a76199e764ff280d806e981',1,'network.h']]], - ['receivetargetmessage_1',['receiveTargetMessage',['../group___messaging.html#ga25068958ba8c13fcde3458ae83ece136',1,'network.h']]] + ['new_5fparameters_0',['new_parameters',['../struct_flag_data.html#ac625c792a41564d4102f249d5b0ef420',1,'FlagData']]], + ['new_5fposition_1',['new_position',['../struct_flag_data.html#a7c6bdb5e8124bc1bf01ce3c678b83a1c',1,'FlagData']]], + ['new_5fset_2',['new_set',['../struct_flag_data.html#a5ebc73d6443adf0da1a7ed9982336bda',1,'FlagData']]], + ['new_5fstate_3',['new_state',['../struct_flag_data.html#afb07254908e8e72204da943e7034a01c',1,'FlagData']]], + ['new_5fsubject_4',['new_subject',['../struct_flag_data.html#a34401a68e4020419f6059692568690f4',1,'FlagData']]], + ['note_20about_20gcc_5',['Note about gcc',['../index.html#note-about-gcc',1,'']]] ]; diff --git a/docs/docs/StateServer/html/search/all_b.js b/docs/docs/StateServer/html/search/all_b.js index 939b370..80d6aac 100644 --- a/docs/docs/StateServer/html/search/all_b.js +++ b/docs/docs/StateServer/html/search/all_b.js @@ -1,11 +1,7 @@ var searchData= [ - ['sendcursorposition_0',['sendCursorPosition',['../group___messaging.html#ga7d21378b8f3bd51fd2157930de9b139f',1,'network.h']]], - ['sendmessage_1',['sendMessage',['../group___messaging.html#ga199f827a3bea1e6c5b91c9fd7976074f',1,'network.h']]], - ['sendtargetupdate_2',['sendTargetUpdate',['../group___messaging.html#ga00dd7fbc289ed250870a37fb306a6080',1,'network.h']]], - ['server_3',['State Server',['../index.html',1,'']]], - ['setblocking_4',['setBlocking',['../group___port_creation.html#ga26cae777cee8ec996251dab63cb40da7',1,'network.h']]], - ['setnonblocking_5',['setNonBlocking',['../group___port_creation.html#ga3eb74aed34ee71625a337a5fa9a4f5ba',1,'network.h']]], - ['state_20server_6',['State Server',['../index.html',1,'']]], - ['subclassproc_7',['SubclassProc',['../group___callbacks.html#ga38f05f14edecf66bbf8a70e228a975bd',1,'SubclassProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c'],['../group___callbacks.html#ga38f05f14edecf66bbf8a70e228a975bd',1,'SubclassProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c']]] + ['opencursorlogforreading_0',['openCursorLogForReading',['../group___logging.html#ga57aa8270fc3b3f8c41ff0875e9f5a3cb',1,'logger.h']]], + ['openstatelogforreading_1',['openStateLogForReading',['../group___logging.html#gad789a3d04d13705f7f484d4b9670fbe8',1,'logger.h']]], + ['originaleditwndproc_2',['OriginalEditWndProc',['../group___external.html#ga5b9c577313e5ddddb2f5a53596c8f8e2',1,'OriginalEditWndProc: ui.c'],['../group___external.html#ga5b9c577313e5ddddb2f5a53596c8f8e2',1,'OriginalEditWndProc: ui.c']]], + ['outputhandler_3',['outputHandler',['../group___handlers.html#ga5007d76b897084fd25c18db4b1339bd1',1,'outputHandler(void *arg): state_server.c'],['../group___handlers.html#ga5007d76b897084fd25c18db4b1339bd1',1,'outputHandler(void *arg): state_server.c']]] ]; diff --git a/docs/docs/StateServer/html/search/all_c.js b/docs/docs/StateServer/html/search/all_c.js index 00a9780..006069c 100644 --- a/docs/docs/StateServer/html/search/all_c.js +++ b/docs/docs/StateServer/html/search/all_c.js @@ -1,4 +1,10 @@ var searchData= [ - ['timing_20functions_0',['Timing Functions',['../group___timing.html',1,'']]] + ['parameter_20files_0',['Parameter Files',['../group___files.html',1,'']]], + ['parameters_1',['parameters',['../struct_thread_safe_args.html#aed48b710a2a9089fdf36e7de36257199',1,'ThreadSafeArgs']]], + ['parseparameterfile_2',['parseParameterFile',['../group___files.html#ga589270ff19aa1098209a49c79129373b',1,'parameters.h']]], + ['port_20creation_3',['Port Creation',['../group___port_creation.html',1,'']]], + ['position_4',['position',['../struct_thread_safe_args.html#ae4131c65a093bd8485d7378725d85293',1,'ThreadSafeArgs']]], + ['printparameters_5',['printParameters',['../group___data_structures.html#ga81a39c5893ca9823181ce8f54ee6284f',1,'parameters.h']]], + ['processor_5ffrequency_6',['PROCESSOR_FREQUENCY',['../group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd',1,'PROCESSOR_FREQUENCY: timing.c'],['../group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd',1,'PROCESSOR_FREQUENCY: timing.c'],['../group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd',1,'PROCESSOR_FREQUENCY: ui.c']]] ]; diff --git a/docs/docs/StateServer/html/search/all_d.js b/docs/docs/StateServer/html/search/all_d.js index edf0858..e2ba0e5 100644 --- a/docs/docs/StateServer/html/search/all_d.js +++ b/docs/docs/StateServer/html/search/all_d.js @@ -1,5 +1,12 @@ var searchData= [ - ['up_0',['Clean-Up',['../group___clean_up.html',1,'']]], - ['utilities_1',['Utilities',['../group___utility.html',1,'']]] + ['readconfig_0',['readConfig',['../group___logging.html#gaf1898537453977df6337eb90705248c6',1,'logger.h']]], + ['readfileheader_1',['readFileHeader',['../group___logging.html#gaefc0229f81ecdb28be83693094a355db',1,'logger.h']]], + ['readnextcursordatum_2',['readNextCursorDatum',['../group___logging.html#ga907888d9f8fdb33c2e65851360cb3223',1,'logger.h']]], + ['readnextstatedatum_3',['readNextStateDatum',['../group___logging.html#ga6a19a13ad91b65b40660d767c4539680',1,'logger.h']]], + ['receivecursormessage_4',['receiveCursorMessage',['../group___messaging.html#ga82017dab2a76199e764ff280d806e981',1,'network.h']]], + ['receivetargetmessage_5',['receiveTargetMessage',['../group___messaging.html#ga25068958ba8c13fcde3458ae83ece136',1,'network.h']]], + ['routines_6',['Startup Routines',['../group___starters.html',1,'']]], + ['run_7',['run',['../group___starters.html#ga13e0589c2320246725be7d0ab94ed491',1,'run(void *args): state_server.c'],['../group___starters.html#ga13e0589c2320246725be7d0ab94ed491',1,'run(void *arg): state_server.c']]], + ['running_8',['running',['../struct_thread_safe_args.html#a76cd8837eb53cb672843450f7cafd3bb',1,'ThreadSafeArgs']]] ]; diff --git a/docs/docs/StateServer/html/search/all_e.js b/docs/docs/StateServer/html/search/all_e.js index 767e628..5afa98b 100644 --- a/docs/docs/StateServer/html/search/all_e.js +++ b/docs/docs/StateServer/html/search/all_e.js @@ -1,4 +1,26 @@ var searchData= [ - ['wndproc_0',['WndProc',['../group___callbacks.html#gac996a0edf7f6d6736f7f2920665a453d',1,'WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c'],['../group___callbacks.html#gac996a0edf7f6d6736f7f2920665a453d',1,'WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c']]] + ['sample_5fperiod_0',['sample_period',['../struct_thread_safe_args.html#a48246d0f72529eddcf4655ca618229be',1,'ThreadSafeArgs']]], + ['sendcursorposition_1',['sendCursorPosition',['../group___messaging.html#ga7d21378b8f3bd51fd2157930de9b139f',1,'network.h']]], + ['sendmessage_2',['sendMessage',['../group___messaging.html#ga199f827a3bea1e6c5b91c9fd7976074f',1,'network.h']]], + ['sendtargetupdate_3',['sendTargetUpdate',['../group___messaging.html#ga00dd7fbc289ed250870a37fb306a6080',1,'network.h']]], + ['server_4',['State Server',['../index.html',1,'']]], + ['setblocking_5',['setBlocking',['../group___port_creation.html#ga26cae777cee8ec996251dab63cb40da7',1,'network.h']]], + ['setnonblocking_6',['setNonBlocking',['../group___port_creation.html#ga3eb74aed34ee71625a337a5fa9a4f5ba',1,'network.h']]], + ['startclockthread_7',['startClockThread',['../group___starters.html#ga0f1732be3d0bf62b097e400114da7256',1,'startClockThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c'],['../group___starters.html#ga0f1732be3d0bf62b097e400114da7256',1,'startClockThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c']]], + ['startcontrollerthread_8',['startControllerThread',['../group___starters.html#ga712626323eec3380d5b40b4681a682b9',1,'startControllerThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c'],['../group___starters.html#ga712626323eec3380d5b40b4681a682b9',1,'startControllerThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c']]], + ['startinputthread_9',['startInputThread',['../group___starters.html#ga2a464314dd1c12cbd78c4016b61858d0',1,'startInputThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c'],['../group___starters.html#ga2a464314dd1c12cbd78c4016b61858d0',1,'startInputThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c']]], + ['startoutputthread_10',['startOutputThread',['../group___starters.html#ga0e75062128ff357311a986f42e75cab0',1,'startOutputThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c'],['../group___starters.html#ga0e75062128ff357311a986f42e75cab0',1,'startOutputThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c']]], + ['startstatethread_11',['startStateThread',['../group___starters.html#gabc147d8697c11157251035908e28f3a4',1,'startStateThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c'],['../group___starters.html#gabc147d8697c11157251035908e28f3a4',1,'startStateThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c']]], + ['startup_20routines_12',['Startup Routines',['../group___starters.html',1,'']]], + ['state_13',['state',['../struct_thread_safe_args.html#a444fdf64bf896ac33010f7901811091b',1,'ThreadSafeArgs']]], + ['state_20machine_14',['State Machine',['../index.html#state-machine',1,'']]], + ['state_20server_15',['State Server',['../index.html',1,'']]], + ['state_5fclock_5fthread_5ffunc_16',['state_clock_thread_func',['../group___logging.html#gae7f4c8202c0cf8c97feb2ca99b511852',1,'logger.h']]], + ['state_5fconsumer_5fthread_5ffunc_17',['state_consumer_thread_func',['../group___logging.html#ga6e18fff4219966d4cc08847ad2581e8b',1,'logger.h']]], + ['state_5flog_18',['state_log',['../struct_thread_safe_args.html#aa22f893e0d752a375d2847bb5c2420cf',1,'ThreadSafeArgs']]], + ['state_5fproducer_5fthread_5ffunc_19',['state_producer_thread_func',['../group___logging.html#ga36a43c2a341e4edeb6b43f596669d402',1,'logger.h']]], + ['statehandler_20',['stateHandler',['../group___handlers.html#ga5c4f1006b0a01f5fcdbb40a9b98b0945',1,'stateHandler(void *arg): state_server.c'],['../group___handlers.html#ga5c4f1006b0a01f5fcdbb40a9b98b0945',1,'stateHandler(void *arg): state_server.c']]], + ['structures_21',['Data Structures',['../group___structures.html',1,'']]], + ['subclassproc_22',['SubclassProc',['../group___callbacks.html#ga38f05f14edecf66bbf8a70e228a975bd',1,'SubclassProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c'],['../group___callbacks.html#ga38f05f14edecf66bbf8a70e228a975bd',1,'SubclassProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c']]] ]; diff --git a/docs/docs/StateServer/html/search/all_f.js b/docs/docs/StateServer/html/search/all_f.js new file mode 100644 index 0000000..346651d --- /dev/null +++ b/docs/docs/StateServer/html/search/all_f.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['target_0',['target',['../struct_thread_safe_args.html#aa28c7420d51cb93ea72b586873e00889',1,'ThreadSafeArgs']]], + ['target_5findex_1',['target_index',['../struct_thread_safe_args.html#a58b092f85f0846b7d77b1396d394ce5f',1,'ThreadSafeArgs']]], + ['threads_2',['Handler Threads',['../group___handlers.html',1,'']]], + ['threadsafeargs_3',['ThreadSafeArgs',['../struct_thread_safe_args.html',1,'']]], + ['timing_20functions_4',['Timing Functions',['../group___timing.html',1,'']]], + ['total_5fattempts_5',['total_attempts',['../struct_trial_data.html#a22fcd09bc8ecbf2ab6808ba7ce00c579',1,'TrialData']]], + ['total_5fsuccesses_6',['total_successes',['../struct_trial_data.html#a80956b6599bf51ceb7aeaea303d84522',1,'TrialData']]], + ['transitionstate_7',['transitionState',['../group___handlers.html#gaf8131c4ceff1d3e2b36a63d2e9e2d50f',1,'transitionState(State s, Transition t, double ts, double *tl): state_server.c'],['../group___handlers.html#gaf8131c4ceff1d3e2b36a63d2e9e2d50f',1,'transitionState(State s, Transition t, double ts, double *tl): state_server.c']]], + ['trial_8',['trial',['../struct_thread_safe_args.html#ad46e1e1d9529c5ec1f802778bbb3ae59',1,'ThreadSafeArgs']]], + ['trialdata_9',['TrialData',['../struct_trial_data.html',1,'']]] +]; diff --git a/docs/docs/StateServer/html/search/classes_0.js b/docs/docs/StateServer/html/search/classes_0.js new file mode 100644 index 0000000..ae07e7d --- /dev/null +++ b/docs/docs/StateServer/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['flagdata_0',['FlagData',['../struct_flag_data.html',1,'']]] +]; diff --git a/docs/docs/StateServer/html/search/classes_1.js b/docs/docs/StateServer/html/search/classes_1.js new file mode 100644 index 0000000..c83e1ae --- /dev/null +++ b/docs/docs/StateServer/html/search/classes_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['threadsafeargs_0',['ThreadSafeArgs',['../struct_thread_safe_args.html',1,'']]], + ['trialdata_1',['TrialData',['../struct_trial_data.html',1,'']]] +]; diff --git a/docs/docs/StateServer/html/search/functions_1.js b/docs/docs/StateServer/html/search/functions_1.js index f964e79..06328bc 100644 --- a/docs/docs/StateServer/html/search/functions_1.js +++ b/docs/docs/StateServer/html/search/functions_1.js @@ -1,4 +1,12 @@ var searchData= [ - ['cleanupwinsock_0',['cleanupWinsock',['../group___clean_up.html#ga1af42a80836683ce46af20b6768565bb',1,'network.h']]] + ['cleanupthreadargs_0',['cleanupThreadArgs',['../group___init_cleanup.html#ga4858004e3fa1da0933361b45372bb8af',1,'cleanupThreadArgs(ThreadSafeArgs *args): state_server.c'],['../group___init_cleanup.html#ga4858004e3fa1da0933361b45372bb8af',1,'cleanupThreadArgs(ThreadSafeArgs *args): state_server.c']]], + ['cleanupwinsock_1',['cleanupWinsock',['../group___clean_up.html#ga1af42a80836683ce46af20b6768565bb',1,'network.h']]], + ['clockhandler_2',['clockHandler',['../group___handlers.html#ga19d9c1506449a50b88bf4fdbe81cb232',1,'clockHandler(void *arg): state_server.c'],['../group___handlers.html#ga19d9c1506449a50b88bf4fdbe81cb232',1,'clockHandler(void *arg): state_server.c']]], + ['controllerhandler_3',['controllerHandler',['../group___handlers.html#gaa2e3e21d68800d421ff39fc0c2360da2',1,'controllerHandler(void *arg): state_server.c'],['../group___handlers.html#gaa2e3e21d68800d421ff39fc0c2360da2',1,'controllerHandler(void *arg): state_server.c']]], + ['createcursorlog_4',['createCursorLog',['../group___logging.html#ga32884b19b493d117cfb8d3f00516884c',1,'logger.h']]], + ['createstatelog_5',['createStateLog',['../group___logging.html#ga59895715a46f6b39c9860c416ce3c33b',1,'logger.h']]], + ['cursor_5fclock_5fthread_5ffunc_6',['cursor_clock_thread_func',['../group___logging.html#gae610374f801a208816b451cc18ebe511',1,'logger.h']]], + ['cursor_5fconsumer_5fthread_5ffunc_7',['cursor_consumer_thread_func',['../group___logging.html#ga18fb593edaa52e33a588de6f0c309c39',1,'logger.h']]], + ['cursor_5fproducer_5fthread_5ffunc_8',['cursor_producer_thread_func',['../group___logging.html#gad9d925b1aeb7de44e1956f461f423bab',1,'logger.h']]] ]; diff --git a/docs/docs/StateServer/html/search/functions_3.js b/docs/docs/StateServer/html/search/functions_3.js index 2510e09..92c70d2 100644 --- a/docs/docs/StateServer/html/search/functions_3.js +++ b/docs/docs/StateServer/html/search/functions_3.js @@ -2,5 +2,9 @@ var searchData= [ ['initializeudpclientsocket_0',['initializeUDPClientSocket',['../group___port_creation.html#gaea2e8433844f1fe499127f1ec0aa089b',1,'network.h']]], ['initializeudpserversocket_1',['initializeUDPServerSocket',['../group___port_creation.html#ga886364c39477e6170b570627298b8b69',1,'network.h']]], - ['initializewinsock_2',['initializeWinsock',['../group___port_creation.html#ga5ee93bf6ea9d1f37eedb43e05ebf0157',1,'network.h']]] + ['initializewinsock_2',['initializeWinsock',['../group___port_creation.html#ga5ee93bf6ea9d1f37eedb43e05ebf0157',1,'network.h']]], + ['initparameters_3',['initParameters',['../group___data_structures.html#ga10dab33281aebb5b261618ab79d0f9f2',1,'parameters.h']]], + ['initthreadargs_4',['initThreadArgs',['../group___init_cleanup.html#ga70a17b5b1b3717ebd032c73863e852ef',1,'initThreadArgs(ThreadSafeArgs *args): state_server.c'],['../group___init_cleanup.html#ga70a17b5b1b3717ebd032c73863e852ef',1,'initThreadArgs(ThreadSafeArgs *args): state_server.c']]], + ['inittrialdata_5',['initTrialData',['../group___init_cleanup.html#gae584c9cf40def7651bcf9504749aaf60',1,'initTrialData(TrialData *trialData): state_server.c'],['../group___init_cleanup.html#gae584c9cf40def7651bcf9504749aaf60',1,'initTrialData(TrialData *trialData): state_server.c']]], + ['inputhandler_6',['inputHandler',['../group___handlers.html#ga31b98aa826b2d91ab6b16256b3d6af43',1,'inputHandler(void *arg): state_server.c'],['../group___handlers.html#ga31b98aa826b2d91ab6b16256b3d6af43',1,'inputHandler(void *arg): state_server.c']]] ]; diff --git a/docs/docs/StateServer/html/search/functions_4.js b/docs/docs/StateServer/html/search/functions_4.js index c11dda1..e48ac92 100644 --- a/docs/docs/StateServer/html/search/functions_4.js +++ b/docs/docs/StateServer/html/search/functions_4.js @@ -1,5 +1,6 @@ var searchData= [ - ['receivecursormessage_0',['receiveCursorMessage',['../group___messaging.html#ga82017dab2a76199e764ff280d806e981',1,'network.h']]], - ['receivetargetmessage_1',['receiveTargetMessage',['../group___messaging.html#ga25068958ba8c13fcde3458ae83ece136',1,'network.h']]] + ['opencursorlogforreading_0',['openCursorLogForReading',['../group___logging.html#ga57aa8270fc3b3f8c41ff0875e9f5a3cb',1,'logger.h']]], + ['openstatelogforreading_1',['openStateLogForReading',['../group___logging.html#gad789a3d04d13705f7f484d4b9670fbe8',1,'logger.h']]], + ['outputhandler_2',['outputHandler',['../group___handlers.html#ga5007d76b897084fd25c18db4b1339bd1',1,'outputHandler(void *arg): state_server.c'],['../group___handlers.html#ga5007d76b897084fd25c18db4b1339bd1',1,'outputHandler(void *arg): state_server.c']]] ]; diff --git a/docs/docs/StateServer/html/search/functions_5.js b/docs/docs/StateServer/html/search/functions_5.js index da872cc..4d95ef0 100644 --- a/docs/docs/StateServer/html/search/functions_5.js +++ b/docs/docs/StateServer/html/search/functions_5.js @@ -1,9 +1,5 @@ var searchData= [ - ['sendcursorposition_0',['sendCursorPosition',['../group___messaging.html#ga7d21378b8f3bd51fd2157930de9b139f',1,'network.h']]], - ['sendmessage_1',['sendMessage',['../group___messaging.html#ga199f827a3bea1e6c5b91c9fd7976074f',1,'network.h']]], - ['sendtargetupdate_2',['sendTargetUpdate',['../group___messaging.html#ga00dd7fbc289ed250870a37fb306a6080',1,'network.h']]], - ['setblocking_3',['setBlocking',['../group___port_creation.html#ga26cae777cee8ec996251dab63cb40da7',1,'network.h']]], - ['setnonblocking_4',['setNonBlocking',['../group___port_creation.html#ga3eb74aed34ee71625a337a5fa9a4f5ba',1,'network.h']]], - ['subclassproc_5',['SubclassProc',['../group___callbacks.html#ga38f05f14edecf66bbf8a70e228a975bd',1,'SubclassProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c'],['../group___callbacks.html#ga38f05f14edecf66bbf8a70e228a975bd',1,'SubclassProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c']]] + ['parseparameterfile_0',['parseParameterFile',['../group___files.html#ga589270ff19aa1098209a49c79129373b',1,'parameters.h']]], + ['printparameters_1',['printParameters',['../group___data_structures.html#ga81a39c5893ca9823181ce8f54ee6284f',1,'parameters.h']]] ]; diff --git a/docs/docs/StateServer/html/search/functions_6.js b/docs/docs/StateServer/html/search/functions_6.js index 767e628..e12edc1 100644 --- a/docs/docs/StateServer/html/search/functions_6.js +++ b/docs/docs/StateServer/html/search/functions_6.js @@ -1,4 +1,10 @@ var searchData= [ - ['wndproc_0',['WndProc',['../group___callbacks.html#gac996a0edf7f6d6736f7f2920665a453d',1,'WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c'],['../group___callbacks.html#gac996a0edf7f6d6736f7f2920665a453d',1,'WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c']]] + ['readconfig_0',['readConfig',['../group___logging.html#gaf1898537453977df6337eb90705248c6',1,'logger.h']]], + ['readfileheader_1',['readFileHeader',['../group___logging.html#gaefc0229f81ecdb28be83693094a355db',1,'logger.h']]], + ['readnextcursordatum_2',['readNextCursorDatum',['../group___logging.html#ga907888d9f8fdb33c2e65851360cb3223',1,'logger.h']]], + ['readnextstatedatum_3',['readNextStateDatum',['../group___logging.html#ga6a19a13ad91b65b40660d767c4539680',1,'logger.h']]], + ['receivecursormessage_4',['receiveCursorMessage',['../group___messaging.html#ga82017dab2a76199e764ff280d806e981',1,'network.h']]], + ['receivetargetmessage_5',['receiveTargetMessage',['../group___messaging.html#ga25068958ba8c13fcde3458ae83ece136',1,'network.h']]], + ['run_6',['run',['../group___starters.html#ga13e0589c2320246725be7d0ab94ed491',1,'run(void *args): state_server.c'],['../group___starters.html#ga13e0589c2320246725be7d0ab94ed491',1,'run(void *arg): state_server.c']]] ]; diff --git a/docs/docs/StateServer/html/search/functions_7.js b/docs/docs/StateServer/html/search/functions_7.js new file mode 100644 index 0000000..1b4591c --- /dev/null +++ b/docs/docs/StateServer/html/search/functions_7.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['sendcursorposition_0',['sendCursorPosition',['../group___messaging.html#ga7d21378b8f3bd51fd2157930de9b139f',1,'network.h']]], + ['sendmessage_1',['sendMessage',['../group___messaging.html#ga199f827a3bea1e6c5b91c9fd7976074f',1,'network.h']]], + ['sendtargetupdate_2',['sendTargetUpdate',['../group___messaging.html#ga00dd7fbc289ed250870a37fb306a6080',1,'network.h']]], + ['setblocking_3',['setBlocking',['../group___port_creation.html#ga26cae777cee8ec996251dab63cb40da7',1,'network.h']]], + ['setnonblocking_4',['setNonBlocking',['../group___port_creation.html#ga3eb74aed34ee71625a337a5fa9a4f5ba',1,'network.h']]], + ['startclockthread_5',['startClockThread',['../group___starters.html#ga0f1732be3d0bf62b097e400114da7256',1,'startClockThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c'],['../group___starters.html#ga0f1732be3d0bf62b097e400114da7256',1,'startClockThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c']]], + ['startcontrollerthread_6',['startControllerThread',['../group___starters.html#ga712626323eec3380d5b40b4681a682b9',1,'startControllerThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c'],['../group___starters.html#ga712626323eec3380d5b40b4681a682b9',1,'startControllerThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c']]], + ['startinputthread_7',['startInputThread',['../group___starters.html#ga2a464314dd1c12cbd78c4016b61858d0',1,'startInputThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c'],['../group___starters.html#ga2a464314dd1c12cbd78c4016b61858d0',1,'startInputThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c']]], + ['startoutputthread_8',['startOutputThread',['../group___starters.html#ga0e75062128ff357311a986f42e75cab0',1,'startOutputThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c'],['../group___starters.html#ga0e75062128ff357311a986f42e75cab0',1,'startOutputThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c']]], + ['startstatethread_9',['startStateThread',['../group___starters.html#gabc147d8697c11157251035908e28f3a4',1,'startStateThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c'],['../group___starters.html#gabc147d8697c11157251035908e28f3a4',1,'startStateThread(ThreadSafeArgs *args, pthread_t *thread): state_server.c']]], + ['state_5fclock_5fthread_5ffunc_10',['state_clock_thread_func',['../group___logging.html#gae7f4c8202c0cf8c97feb2ca99b511852',1,'logger.h']]], + ['state_5fconsumer_5fthread_5ffunc_11',['state_consumer_thread_func',['../group___logging.html#ga6e18fff4219966d4cc08847ad2581e8b',1,'logger.h']]], + ['state_5fproducer_5fthread_5ffunc_12',['state_producer_thread_func',['../group___logging.html#ga36a43c2a341e4edeb6b43f596669d402',1,'logger.h']]], + ['statehandler_13',['stateHandler',['../group___handlers.html#ga5c4f1006b0a01f5fcdbb40a9b98b0945',1,'stateHandler(void *arg): state_server.c'],['../group___handlers.html#ga5c4f1006b0a01f5fcdbb40a9b98b0945',1,'stateHandler(void *arg): state_server.c']]], + ['subclassproc_14',['SubclassProc',['../group___callbacks.html#ga38f05f14edecf66bbf8a70e228a975bd',1,'SubclassProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c'],['../group___callbacks.html#ga38f05f14edecf66bbf8a70e228a975bd',1,'SubclassProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c']]] +]; diff --git a/docs/docs/StateServer/html/search/functions_8.js b/docs/docs/StateServer/html/search/functions_8.js new file mode 100644 index 0000000..8ea838c --- /dev/null +++ b/docs/docs/StateServer/html/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['transitionstate_0',['transitionState',['../group___handlers.html#gaf8131c4ceff1d3e2b36a63d2e9e2d50f',1,'transitionState(State s, Transition t, double ts, double *tl): state_server.c'],['../group___handlers.html#gaf8131c4ceff1d3e2b36a63d2e9e2d50f',1,'transitionState(State s, Transition t, double ts, double *tl): state_server.c']]] +]; diff --git a/docs/docs/StateServer/html/search/functions_9.js b/docs/docs/StateServer/html/search/functions_9.js new file mode 100644 index 0000000..d75c7f4 --- /dev/null +++ b/docs/docs/StateServer/html/search/functions_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['wndproc_0',['WndProc',['../group___callbacks.html#gac996a0edf7f6d6736f7f2920665a453d',1,'WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c'],['../group___callbacks.html#gac996a0edf7f6d6736f7f2920665a453d',1,'WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam): ui.c']]], + ['writecursordata_1',['writeCursorData',['../group___logging.html#ga543fa0b54d9ac5b3bba921b0a217ae19',1,'logger.h']]], + ['writeparameterfile_2',['writeParameterFile',['../group___files.html#gaed5766b3ea91d3a21ae1d85a37d30989',1,'parameters.h']]], + ['writestatedata_3',['writeStateData',['../group___logging.html#ga99d5e83d2de75efe3cc1b0c59dc47bf5',1,'logger.h']]] +]; diff --git a/docs/docs/StateServer/html/search/groups_0.js b/docs/docs/StateServer/html/search/groups_0.js index 708e3e1..97f0fa0 100644 --- a/docs/docs/StateServer/html/search/groups_0.js +++ b/docs/docs/StateServer/html/search/groups_0.js @@ -1,6 +1,4 @@ var searchData= [ - ['callbacks_0',['Callbacks',['../group___callbacks.html',1,'']]], - ['clean_20up_1',['Clean-Up',['../group___clean_up.html',1,'']]], - ['creation_2',['Port Creation',['../group___port_creation.html',1,'']]] + ['and_20cleanup_0',['Initialization and Cleanup',['../group___init_cleanup.html',1,'']]] ]; diff --git a/docs/docs/StateServer/html/search/groups_1.js b/docs/docs/StateServer/html/search/groups_1.js index f984001..e90c2f9 100644 --- a/docs/docs/StateServer/html/search/groups_1.js +++ b/docs/docs/StateServer/html/search/groups_1.js @@ -1,5 +1,7 @@ var searchData= [ - ['enumerations_0',['Enumerations',['../group___enumerations.html',1,'']]], - ['external_1',['External',['../group___external.html',1,'']]] + ['callbacks_0',['Callbacks',['../group___callbacks.html',1,'']]], + ['clean_20up_1',['Clean-Up',['../group___clean_up.html',1,'']]], + ['cleanup_2',['Initialization and Cleanup',['../group___init_cleanup.html',1,'']]], + ['creation_3',['Port Creation',['../group___port_creation.html',1,'']]] ]; diff --git a/docs/docs/StateServer/html/search/groups_2.js b/docs/docs/StateServer/html/search/groups_2.js index f50d662..21df25e 100644 --- a/docs/docs/StateServer/html/search/groups_2.js +++ b/docs/docs/StateServer/html/search/groups_2.js @@ -1,4 +1,5 @@ var searchData= [ - ['functions_0',['Timing Functions',['../group___timing.html',1,'']]] + ['data_20structures_0',['Data Structures',['../group___structures.html',1,'']]], + ['datastructures_1',['DataStructures',['../group___data_structures.html',1,'']]] ]; diff --git a/docs/docs/StateServer/html/search/groups_3.js b/docs/docs/StateServer/html/search/groups_3.js index 214a9a1..f984001 100644 --- a/docs/docs/StateServer/html/search/groups_3.js +++ b/docs/docs/StateServer/html/search/groups_3.js @@ -1,4 +1,5 @@ var searchData= [ - ['messaging_0',['Messaging',['../group___messaging.html',1,'']]] + ['enumerations_0',['Enumerations',['../group___enumerations.html',1,'']]], + ['external_1',['External',['../group___external.html',1,'']]] ]; diff --git a/docs/docs/StateServer/html/search/groups_4.js b/docs/docs/StateServer/html/search/groups_4.js index 95e9b69..11c7b5e 100644 --- a/docs/docs/StateServer/html/search/groups_4.js +++ b/docs/docs/StateServer/html/search/groups_4.js @@ -1,4 +1,5 @@ var searchData= [ - ['port_20creation_0',['Port Creation',['../group___port_creation.html',1,'']]] + ['files_0',['Parameter Files',['../group___files.html',1,'']]], + ['functions_1',['Functions',['../group___logging.html',1,'Logging Functions'],['../group___timing.html',1,'Timing Functions']]] ]; diff --git a/docs/docs/StateServer/html/search/groups_5.js b/docs/docs/StateServer/html/search/groups_5.js index 00a9780..c83772f 100644 --- a/docs/docs/StateServer/html/search/groups_5.js +++ b/docs/docs/StateServer/html/search/groups_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['timing_20functions_0',['Timing Functions',['../group___timing.html',1,'']]] + ['handler_20threads_0',['Handler Threads',['../group___handlers.html',1,'']]] ]; diff --git a/docs/docs/StateServer/html/search/groups_6.js b/docs/docs/StateServer/html/search/groups_6.js index edf0858..473f8d6 100644 --- a/docs/docs/StateServer/html/search/groups_6.js +++ b/docs/docs/StateServer/html/search/groups_6.js @@ -1,5 +1,4 @@ var searchData= [ - ['up_0',['Clean-Up',['../group___clean_up.html',1,'']]], - ['utilities_1',['Utilities',['../group___utility.html',1,'']]] + ['initialization_20and_20cleanup_0',['Initialization and Cleanup',['../group___init_cleanup.html',1,'']]] ]; diff --git a/docs/docs/StateServer/html/search/groups_7.js b/docs/docs/StateServer/html/search/groups_7.js new file mode 100644 index 0000000..64f03b5 --- /dev/null +++ b/docs/docs/StateServer/html/search/groups_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['logging_20functions_0',['Logging Functions',['../group___logging.html',1,'']]] +]; diff --git a/docs/docs/StateServer/html/search/groups_8.js b/docs/docs/StateServer/html/search/groups_8.js new file mode 100644 index 0000000..214a9a1 --- /dev/null +++ b/docs/docs/StateServer/html/search/groups_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['messaging_0',['Messaging',['../group___messaging.html',1,'']]] +]; diff --git a/docs/docs/StateServer/html/search/groups_9.js b/docs/docs/StateServer/html/search/groups_9.js new file mode 100644 index 0000000..3107d36 --- /dev/null +++ b/docs/docs/StateServer/html/search/groups_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['parameter_20files_0',['Parameter Files',['../group___files.html',1,'']]], + ['port_20creation_1',['Port Creation',['../group___port_creation.html',1,'']]] +]; diff --git a/docs/docs/StateServer/html/search/groups_a.js b/docs/docs/StateServer/html/search/groups_a.js new file mode 100644 index 0000000..8fd9991 --- /dev/null +++ b/docs/docs/StateServer/html/search/groups_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['routines_0',['Startup Routines',['../group___starters.html',1,'']]] +]; diff --git a/docs/docs/StateServer/html/search/groups_b.js b/docs/docs/StateServer/html/search/groups_b.js new file mode 100644 index 0000000..4133886 --- /dev/null +++ b/docs/docs/StateServer/html/search/groups_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['startup_20routines_0',['Startup Routines',['../group___starters.html',1,'']]], + ['structures_1',['Data Structures',['../group___structures.html',1,'']]] +]; diff --git a/docs/docs/StateServer/html/search/groups_c.js b/docs/docs/StateServer/html/search/groups_c.js new file mode 100644 index 0000000..f4a1a60 --- /dev/null +++ b/docs/docs/StateServer/html/search/groups_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['threads_0',['Handler Threads',['../group___handlers.html',1,'']]], + ['timing_20functions_1',['Timing Functions',['../group___timing.html',1,'']]] +]; diff --git a/docs/docs/StateServer/html/search/groups_d.js b/docs/docs/StateServer/html/search/groups_d.js new file mode 100644 index 0000000..edf0858 --- /dev/null +++ b/docs/docs/StateServer/html/search/groups_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['up_0',['Clean-Up',['../group___clean_up.html',1,'']]], + ['utilities_1',['Utilities',['../group___utility.html',1,'']]] +]; diff --git a/docs/docs/StateServer/html/search/searchdata.js b/docs/docs/StateServer/html/search/searchdata.js index b32a01a..056a5bf 100644 --- a/docs/docs/StateServer/html/search/searchdata.js +++ b/docs/docs/StateServer/html/search/searchdata.js @@ -1,27 +1,30 @@ var indexSectionsWithContent = { - 0: "acefgimnoprstuw", - 1: "acgirsw", - 2: "op", - 3: "cefmptu", - 4: "s" + 0: "acdefghilmnoprstuw", + 1: "ft", + 2: "acgioprstw", + 3: "cfilmnoprstw", + 4: "acdefhilmprstu", + 5: "s" }; var indexSectionNames = { 0: "all", - 1: "functions", - 2: "variables", - 3: "groups", - 4: "pages" + 1: "classes", + 2: "functions", + 3: "variables", + 4: "groups", + 5: "pages" }; var indexSectionLabels = { 0: "All", - 1: "Functions", - 2: "Variables", - 3: "Modules", - 4: "Pages" + 1: "Data Structures", + 2: "Functions", + 3: "Variables", + 4: "Modules", + 5: "Pages" }; diff --git a/docs/docs/StateServer/html/search/variables_0.js b/docs/docs/StateServer/html/search/variables_0.js index 1f909f7..595c1d2 100644 --- a/docs/docs/StateServer/html/search/variables_0.js +++ b/docs/docs/StateServer/html/search/variables_0.js @@ -1,4 +1,7 @@ var searchData= [ - ['originaleditwndproc_0',['OriginalEditWndProc',['../group___external.html#ga5b9c577313e5ddddb2f5a53596c8f8e2',1,'OriginalEditWndProc: ui.c'],['../group___external.html#ga5b9c577313e5ddddb2f5a53596c8f8e2',1,'OriginalEditWndProc: ui.c']]] + ['current_5fattempts_0',['current_attempts',['../struct_trial_data.html#a94a644a921236ddb2addaf7cc15c8eee',1,'TrialData']]], + ['current_5fsuccesses_1',['current_successes',['../struct_trial_data.html#a020e3e3f396eca62e088a2a48127565b',1,'TrialData']]], + ['cursor_2',['cursor',['../struct_thread_safe_args.html#a119a4e370f08dea845e70b87470976fd',1,'ThreadSafeArgs']]], + ['cursor_5flog_3',['cursor_log',['../struct_thread_safe_args.html#a5fc00f7a898b930f6022be7260a87dbd',1,'ThreadSafeArgs']]] ]; diff --git a/docs/docs/StateServer/html/search/variables_1.js b/docs/docs/StateServer/html/search/variables_1.js index de735c4..992a48a 100644 --- a/docs/docs/StateServer/html/search/variables_1.js +++ b/docs/docs/StateServer/html/search/variables_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['processor_5ffrequency_0',['PROCESSOR_FREQUENCY',['../group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd',1,'PROCESSOR_FREQUENCY: timing.c'],['../group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd',1,'PROCESSOR_FREQUENCY: timing.c'],['../group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd',1,'PROCESSOR_FREQUENCY: ui.c']]] + ['flags_0',['flags',['../struct_thread_safe_args.html#a73b99d5c8f27ebe00308f802449cdb84',1,'ThreadSafeArgs']]] ]; diff --git a/docs/docs/StateServer/html/search/variables_2.js b/docs/docs/StateServer/html/search/variables_2.js new file mode 100644 index 0000000..59c6b75 --- /dev/null +++ b/docs/docs/StateServer/html/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['idle_0',['idle',['../struct_flag_data.html#a4213c3b874943dc508637c110eff5795',1,'FlagData']]] +]; diff --git a/docs/docs/StateServer/html/search/variables_3.js b/docs/docs/StateServer/html/search/variables_3.js new file mode 100644 index 0000000..85eef81 --- /dev/null +++ b/docs/docs/StateServer/html/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['logging_0',['logging',['../struct_thread_safe_args.html#ace44d00a54a671d03312f50e12bc0361',1,'ThreadSafeArgs']]] +]; diff --git a/docs/docs/StateServer/html/search/variables_4.js b/docs/docs/StateServer/html/search/variables_4.js new file mode 100644 index 0000000..95d69f4 --- /dev/null +++ b/docs/docs/StateServer/html/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mutex_0',['mutex',['../struct_thread_safe_args.html#a6c0fa031c4f9946a0908c4ff3297b473',1,'ThreadSafeArgs']]] +]; diff --git a/docs/docs/StateServer/html/search/variables_5.js b/docs/docs/StateServer/html/search/variables_5.js new file mode 100644 index 0000000..8beb99e --- /dev/null +++ b/docs/docs/StateServer/html/search/variables_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['new_5fparameters_0',['new_parameters',['../struct_flag_data.html#ac625c792a41564d4102f249d5b0ef420',1,'FlagData']]], + ['new_5fposition_1',['new_position',['../struct_flag_data.html#a7c6bdb5e8124bc1bf01ce3c678b83a1c',1,'FlagData']]], + ['new_5fset_2',['new_set',['../struct_flag_data.html#a5ebc73d6443adf0da1a7ed9982336bda',1,'FlagData']]], + ['new_5fstate_3',['new_state',['../struct_flag_data.html#afb07254908e8e72204da943e7034a01c',1,'FlagData']]], + ['new_5fsubject_4',['new_subject',['../struct_flag_data.html#a34401a68e4020419f6059692568690f4',1,'FlagData']]] +]; diff --git a/docs/docs/StateServer/html/search/variables_6.js b/docs/docs/StateServer/html/search/variables_6.js new file mode 100644 index 0000000..1f909f7 --- /dev/null +++ b/docs/docs/StateServer/html/search/variables_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['originaleditwndproc_0',['OriginalEditWndProc',['../group___external.html#ga5b9c577313e5ddddb2f5a53596c8f8e2',1,'OriginalEditWndProc: ui.c'],['../group___external.html#ga5b9c577313e5ddddb2f5a53596c8f8e2',1,'OriginalEditWndProc: ui.c']]] +]; diff --git a/docs/docs/StateServer/html/search/variables_7.js b/docs/docs/StateServer/html/search/variables_7.js new file mode 100644 index 0000000..4e78480 --- /dev/null +++ b/docs/docs/StateServer/html/search/variables_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['parameters_0',['parameters',['../struct_thread_safe_args.html#aed48b710a2a9089fdf36e7de36257199',1,'ThreadSafeArgs']]], + ['position_1',['position',['../struct_thread_safe_args.html#ae4131c65a093bd8485d7378725d85293',1,'ThreadSafeArgs']]], + ['processor_5ffrequency_2',['PROCESSOR_FREQUENCY',['../group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd',1,'PROCESSOR_FREQUENCY: timing.c'],['../group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd',1,'PROCESSOR_FREQUENCY: timing.c'],['../group___enumerations.html#gaf0d7df9ec131357b6a9c13bc7cc505cd',1,'PROCESSOR_FREQUENCY: ui.c']]] +]; diff --git a/docs/docs/StateServer/html/search/variables_8.js b/docs/docs/StateServer/html/search/variables_8.js new file mode 100644 index 0000000..a9898e9 --- /dev/null +++ b/docs/docs/StateServer/html/search/variables_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['running_0',['running',['../struct_thread_safe_args.html#a76cd8837eb53cb672843450f7cafd3bb',1,'ThreadSafeArgs']]] +]; diff --git a/docs/docs/StateServer/html/search/variables_9.js b/docs/docs/StateServer/html/search/variables_9.js new file mode 100644 index 0000000..27d879f --- /dev/null +++ b/docs/docs/StateServer/html/search/variables_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['sample_5fperiod_0',['sample_period',['../struct_thread_safe_args.html#a48246d0f72529eddcf4655ca618229be',1,'ThreadSafeArgs']]], + ['state_1',['state',['../struct_thread_safe_args.html#a444fdf64bf896ac33010f7901811091b',1,'ThreadSafeArgs']]], + ['state_5flog_2',['state_log',['../struct_thread_safe_args.html#aa22f893e0d752a375d2847bb5c2420cf',1,'ThreadSafeArgs']]] +]; diff --git a/docs/docs/StateServer/html/search/variables_a.js b/docs/docs/StateServer/html/search/variables_a.js new file mode 100644 index 0000000..8b781cf --- /dev/null +++ b/docs/docs/StateServer/html/search/variables_a.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['target_0',['target',['../struct_thread_safe_args.html#aa28c7420d51cb93ea72b586873e00889',1,'ThreadSafeArgs']]], + ['target_5findex_1',['target_index',['../struct_thread_safe_args.html#a58b092f85f0846b7d77b1396d394ce5f',1,'ThreadSafeArgs']]], + ['total_5fattempts_2',['total_attempts',['../struct_trial_data.html#a22fcd09bc8ecbf2ab6808ba7ce00c579',1,'TrialData']]], + ['total_5fsuccesses_3',['total_successes',['../struct_trial_data.html#a80956b6599bf51ceb7aeaea303d84522',1,'TrialData']]], + ['trial_4',['trial',['../struct_thread_safe_args.html#ad46e1e1d9529c5ec1f802778bbb3ae59',1,'ThreadSafeArgs']]] +]; diff --git a/docs/docs/StateServer/html/search/variables_b.js b/docs/docs/StateServer/html/search/variables_b.js new file mode 100644 index 0000000..24f51fe --- /dev/null +++ b/docs/docs/StateServer/html/search/variables_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['wake_5fclock_5fhandler_0',['wake_clock_handler',['../struct_thread_safe_args.html#a2d91f40c9005363fb80ba808051c38ee',1,'ThreadSafeArgs']]], + ['wake_5fcontroller_5fhandler_1',['wake_controller_handler',['../struct_thread_safe_args.html#ae480230380462e6f9630d5aadd14c9c9',1,'ThreadSafeArgs']]], + ['wake_5finput_5fhandler_2',['wake_input_handler',['../struct_thread_safe_args.html#a19f27709401f00b8cb977413fa8341a8',1,'ThreadSafeArgs']]], + ['wake_5foutput_5fhandler_3',['wake_output_handler',['../struct_thread_safe_args.html#a624e25f62d1676bd7445481c502b1941',1,'ThreadSafeArgs']]], + ['wake_5fstate_5fhandler_4',['wake_state_handler',['../struct_thread_safe_args.html#a8d7db023aff7f1029e3d49cafc140e3a',1,'ThreadSafeArgs']]] +]; diff --git a/docs/docs/StateServer/html/sitemap.xml b/docs/docs/StateServer/html/sitemap.xml index 8a49707..ddb9fd3 100644 --- a/docs/docs/StateServer/html/sitemap.xml +++ b/docs/docs/StateServer/html/sitemap.xml @@ -4,6 +4,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> + + https://code.nml.wtf/docs/group___logging.html + https://code.nml.wtf/docs/group___port_creation.html @@ -13,6 +16,21 @@ https://code.nml.wtf/docs/group___clean_up.html + + https://code.nml.wtf/docs/group___files.html + + + https://code.nml.wtf/docs/group___structures.html + + + https://code.nml.wtf/docs/group___init_cleanup.html + + + https://code.nml.wtf/docs/group___handlers.html + + + https://code.nml.wtf/docs/group___starters.html + https://code.nml.wtf/docs/group___timing.html @@ -25,9 +43,21 @@ https://code.nml.wtf/docs/group___utility.html + + https://code.nml.wtf/docs/group___data_structures.html + https://code.nml.wtf/docs/group___enumerations.html + + https://code.nml.wtf/docs/struct_flag_data.html + + + https://code.nml.wtf/docs/struct_thread_safe_args.html + + + https://code.nml.wtf/docs/struct_trial_data.html + https://code.nml.wtf/docs/dir_d44c64559bbebec7f509842c48db8b23.html @@ -43,4 +73,76 @@ https://code.nml.wtf/docs/topics.html + + https://code.nml.wtf/docs/annotated.html + + + https://code.nml.wtf/docs/classes.html + + + https://code.nml.wtf/docs/functions.html + + + https://code.nml.wtf/docs/functions.html + + + https://code.nml.wtf/docs/functions.html + + + https://code.nml.wtf/docs/functions.html + + + https://code.nml.wtf/docs/functions.html + + + https://code.nml.wtf/docs/functions.html + + + https://code.nml.wtf/docs/functions.html + + + https://code.nml.wtf/docs/functions.html + + + https://code.nml.wtf/docs/functions.html + + + https://code.nml.wtf/docs/functions.html + + + https://code.nml.wtf/docs/functions.html + + + https://code.nml.wtf/docs/functions_vars.html + + + https://code.nml.wtf/docs/functions_vars.html + + + https://code.nml.wtf/docs/functions_vars.html + + + https://code.nml.wtf/docs/functions_vars.html + + + https://code.nml.wtf/docs/functions_vars.html + + + https://code.nml.wtf/docs/functions_vars.html + + + https://code.nml.wtf/docs/functions_vars.html + + + https://code.nml.wtf/docs/functions_vars.html + + + https://code.nml.wtf/docs/functions_vars.html + + + https://code.nml.wtf/docs/functions_vars.html + + + https://code.nml.wtf/docs/functions_vars.html + diff --git a/docs/docs/StateServer/html/state_transition_flowchart.png b/docs/docs/StateServer/html/state_transition_flowchart.png new file mode 100644 index 0000000000000000000000000000000000000000..a960229eb112bfb8fae601256aad8bb26db79fdb GIT binary patch literal 131989 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
  • %0@_dBYX5uej75U1Y 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 + + + + + + +StateServer: FlagData Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    StateServer 1.0.0 +
    +
    Compiled `c` application to handle task state logging and timing.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + + + + diff --git a/docs/docs/StateServer/html/struct_flag_data.js b/docs/docs/StateServer/html/struct_flag_data.js new file mode 100644 index 0000000..df899dd --- /dev/null +++ b/docs/docs/StateServer/html/struct_flag_data.js @@ -0,0 +1,9 @@ +var struct_flag_data = +[ + [ "idle", "struct_flag_data.html#a4213c3b874943dc508637c110eff5795", null ], + [ "new_parameters", "struct_flag_data.html#ac625c792a41564d4102f249d5b0ef420", null ], + [ "new_position", "struct_flag_data.html#a7c6bdb5e8124bc1bf01ce3c678b83a1c", null ], + [ "new_set", "struct_flag_data.html#a5ebc73d6443adf0da1a7ed9982336bda", null ], + [ "new_state", "struct_flag_data.html#afb07254908e8e72204da943e7034a01c", null ], + [ "new_subject", "struct_flag_data.html#a34401a68e4020419f6059692568690f4", null ] +]; \ No newline at end of file diff --git a/docs/docs/StateServer/html/struct_thread_safe_args.html b/docs/docs/StateServer/html/struct_thread_safe_args.html new file mode 100644 index 0000000..ed67752 --- /dev/null +++ b/docs/docs/StateServer/html/struct_thread_safe_args.html @@ -0,0 +1,445 @@ + + + + + + + +StateServer: ThreadSafeArgs Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    StateServer 1.0.0 +
    +
    Compiled `c` application to handle task state logging and timing.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ThreadSafeArgs Struct Reference
    +
    +
    + +

    Thread-safe state-data/argument structure. + More...

    + +

    #include <state_server.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    FILE * state_log
     
    FILE * cursor_log
     
    double sample_period
     
    volatile sig_atomic_t running
     
    volatile sig_atomic_t logging
     
    int target_index
     
    pthread_mutex_t mutex
     
    pthread_cond_t wake_output_handler
     
    pthread_cond_t wake_input_handler
     
    pthread_cond_t wake_state_handler
     
    pthread_cond_t wake_controller_handler
     
    pthread_cond_t wake_clock_handler
     
    FlagDataflags
     
    TrialDatatrial
     
    StateData * state
     
    CursorData * position
     
    RenderedCircleData * cursor
     
    RenderedCircleData * target [9]
     
    TaskParameters * parameters
     
    +

    Detailed Description

    +

    Thread-safe state-data/argument structure.

    +

    Field Documentation

    + +

    ◆ cursor

    + +
    +
    + + + + +
    RenderedCircleData* ThreadSafeArgs::cursor
    +
    +

    Pointer to cursor data

    + +
    +
    + +

    ◆ cursor_log

    + +
    +
    + + + + +
    FILE* ThreadSafeArgs::cursor_log
    +
    +

    Cursor log file

    + +
    +
    + +

    ◆ flags

    + +
    +
    + + + + +
    FlagData* ThreadSafeArgs::flags
    +
    +

    Pointer to flag data

    + +
    +
    + +

    ◆ logging

    + +
    +
    + + + + +
    volatile sig_atomic_t ThreadSafeArgs::logging
    +
    +

    Flag indicating whether the logs are being added to

    + +
    +
    + +

    ◆ mutex

    + +
    +
    + + + + +
    pthread_mutex_t ThreadSafeArgs::mutex
    +
    +

    Mutex for thread safety

    + +
    +
    + +

    ◆ parameters

    + +
    +
    + + + + +
    TaskParameters* ThreadSafeArgs::parameters
    +
    +

    Pointer to task parameters

    + +
    +
    + +

    ◆ position

    + +
    +
    + + + + +
    CursorData* ThreadSafeArgs::position
    +
    +

    Pointer to cursor position data

    + +
    +
    + +

    ◆ running

    + +
    +
    + + + + +
    volatile sig_atomic_t ThreadSafeArgs::running
    +
    +

    Flag indicating whether the server is running

    + +
    +
    + +

    ◆ sample_period

    + +
    +
    + + + + +
    double ThreadSafeArgs::sample_period
    +
    +

    Sampling period

    + +
    +
    + +

    ◆ state

    + +
    +
    + + + + +
    StateData* ThreadSafeArgs::state
    +
    +

    Pointer to state data

    + +
    +
    + +

    ◆ state_log

    + +
    +
    + + + + +
    FILE* ThreadSafeArgs::state_log
    +
    +

    State log file

    + +
    +
    + +

    ◆ target

    + +
    +
    + + + + +
    RenderedCircleData* ThreadSafeArgs::target[9]
    +
    +

    Array of pointers to target data

    + +
    +
    + +

    ◆ target_index

    + +
    +
    + + + + +
    int ThreadSafeArgs::target_index
    +
    +

    Index of target to send

    + +
    +
    + +

    ◆ trial

    + +
    +
    + + + + +
    TrialData* ThreadSafeArgs::trial
    +
    +

    Pointer to trial data

    + +
    +
    + +

    ◆ wake_clock_handler

    + +
    +
    + + + + +
    pthread_cond_t ThreadSafeArgs::wake_clock_handler
    +
    +

    Condition variable for waking clock handler thread

    + +
    +
    + +

    ◆ wake_controller_handler

    + +
    +
    + + + + +
    pthread_cond_t ThreadSafeArgs::wake_controller_handler
    +
    +

    Condition variable for waking controller handler thraed

    + +
    +
    + +

    ◆ wake_input_handler

    + +
    +
    + + + + +
    pthread_cond_t ThreadSafeArgs::wake_input_handler
    +
    +

    Condition variable for waking input handler thread

    + +
    +
    + +

    ◆ wake_output_handler

    + +
    +
    + + + + +
    pthread_cond_t ThreadSafeArgs::wake_output_handler
    +
    +

    Condition variable for waking output handler thread

    + +
    +
    + +

    ◆ wake_state_handler

    + +
    +
    + + + + +
    pthread_cond_t ThreadSafeArgs::wake_state_handler
    +
    +

    Condition variable for waking state handler thread

    + +
    +
    +
    +
    + + + + diff --git a/docs/docs/StateServer/html/struct_thread_safe_args.js b/docs/docs/StateServer/html/struct_thread_safe_args.js new file mode 100644 index 0000000..d5cce35 --- /dev/null +++ b/docs/docs/StateServer/html/struct_thread_safe_args.js @@ -0,0 +1,22 @@ +var struct_thread_safe_args = +[ + [ "cursor", "struct_thread_safe_args.html#a119a4e370f08dea845e70b87470976fd", null ], + [ "cursor_log", "struct_thread_safe_args.html#a5fc00f7a898b930f6022be7260a87dbd", null ], + [ "flags", "struct_thread_safe_args.html#a73b99d5c8f27ebe00308f802449cdb84", null ], + [ "logging", "struct_thread_safe_args.html#ace44d00a54a671d03312f50e12bc0361", null ], + [ "mutex", "struct_thread_safe_args.html#a6c0fa031c4f9946a0908c4ff3297b473", null ], + [ "parameters", "struct_thread_safe_args.html#aed48b710a2a9089fdf36e7de36257199", null ], + [ "position", "struct_thread_safe_args.html#ae4131c65a093bd8485d7378725d85293", null ], + [ "running", "struct_thread_safe_args.html#a76cd8837eb53cb672843450f7cafd3bb", null ], + [ "sample_period", "struct_thread_safe_args.html#a48246d0f72529eddcf4655ca618229be", null ], + [ "state", "struct_thread_safe_args.html#a444fdf64bf896ac33010f7901811091b", null ], + [ "state_log", "struct_thread_safe_args.html#aa22f893e0d752a375d2847bb5c2420cf", null ], + [ "target", "struct_thread_safe_args.html#aa28c7420d51cb93ea72b586873e00889", null ], + [ "target_index", "struct_thread_safe_args.html#a58b092f85f0846b7d77b1396d394ce5f", null ], + [ "trial", "struct_thread_safe_args.html#ad46e1e1d9529c5ec1f802778bbb3ae59", null ], + [ "wake_clock_handler", "struct_thread_safe_args.html#a2d91f40c9005363fb80ba808051c38ee", null ], + [ "wake_controller_handler", "struct_thread_safe_args.html#ae480230380462e6f9630d5aadd14c9c9", null ], + [ "wake_input_handler", "struct_thread_safe_args.html#a19f27709401f00b8cb977413fa8341a8", null ], + [ "wake_output_handler", "struct_thread_safe_args.html#a624e25f62d1676bd7445481c502b1941", null ], + [ "wake_state_handler", "struct_thread_safe_args.html#a8d7db023aff7f1029e3d49cafc140e3a", null ] +]; \ No newline at end of file diff --git a/docs/docs/StateServer/html/struct_trial_data.html b/docs/docs/StateServer/html/struct_trial_data.html new file mode 100644 index 0000000..df987dc --- /dev/null +++ b/docs/docs/StateServer/html/struct_trial_data.html @@ -0,0 +1,181 @@ + + + + + + + +StateServer: TrialData Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    StateServer 1.0.0 +
    +
    Compiled `c` application to handle task state logging and timing.
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    TrialData Struct Reference
    +
    +
    + +

    #include <state_server.h>

    + + + + + + + + + + +

    +Data Fields

    uint16_t current_attempts
     
    uint16_t current_successes
     
    uint16_t total_attempts
     
    uint16_t total_successes
     
    +

    Field Documentation

    + +

    ◆ current_attempts

    + +
    +
    + + + + +
    uint16_t TrialData::current_attempts
    +
    + +
    +
    + +

    ◆ current_successes

    + +
    +
    + + + + +
    uint16_t TrialData::current_successes
    +
    + +
    +
    + +

    ◆ total_attempts

    + +
    +
    + + + + +
    uint16_t TrialData::total_attempts
    +
    + +
    +
    + +

    ◆ total_successes

    + +
    +
    + + + + +
    uint16_t TrialData::total_successes
    +
    + +
    +
    +
    +
    + + + + diff --git a/docs/docs/StateServer/html/struct_trial_data.js b/docs/docs/StateServer/html/struct_trial_data.js new file mode 100644 index 0000000..68b438d --- /dev/null +++ b/docs/docs/StateServer/html/struct_trial_data.js @@ -0,0 +1,7 @@ +var struct_trial_data = +[ + [ "current_attempts", "struct_trial_data.html#a94a644a921236ddb2addaf7cc15c8eee", null ], + [ "current_successes", "struct_trial_data.html#a020e3e3f396eca62e088a2a48127565b", null ], + [ "total_attempts", "struct_trial_data.html#a22fcd09bc8ecbf2ab6808ba7ce00c579", null ], + [ "total_successes", "struct_trial_data.html#a80956b6599bf51ceb7aeaea303d84522", null ] +]; \ No newline at end of file diff --git a/docs/docs/StateServer/html/topics.html b/docs/docs/StateServer/html/topics.html index 86b9a87..5c6b12b 100644 --- a/docs/docs/StateServer/html/topics.html +++ b/docs/docs/StateServer/html/topics.html @@ -97,14 +97,25 @@
    Here is a list of all topics with brief descriptions:
    [detail level 12]
    - - - - - - - - + + + + + + + + + + + + + + +
     Port CreationFunctions related to initializing network ports and setting their properties
     MessagingFunctions related to formatting messages for transmission or for handling their receipt
     Clean-UpFunctions related to shutdown and cleaning up network ports etc. on application exit
     Timing FunctionsUtility functions for timing things
     Enumerations
     ExternalExternal functions and variables probably from Windows API
     CallbacksFunctions assigned to Windows Process callbacks using Windows API for GUI
     UtilitiesSub-routines used from within Windows Process callback specific cases
     Logging Functions
     Port CreationFunctions related to initializing network ports and setting their properties
     MessagingFunctions related to formatting messages for transmission or for handling their receipt
     Clean-UpFunctions related to shutdown and cleaning up network ports etc. on application exit
     Parameter FilesHandling of parameter file read and write operations
     Data StructuresThread-safe data structure to share data between synchronized threads.
    +
     Initialization and CleanupAllocate memory and deallocate it and make sure threads are closed.
    +
     Handler ThreadsCore of the multi-threaded state_server application.
    +
     Startup RoutinesStart the handler threads with appropriate attributes and data.
    +
     Timing FunctionsUtility functions for timing things
     Enumerations
     ExternalExternal functions and variables probably from Windows API
     CallbacksFunctions assigned to Windows Process callbacks using Windows API for GUI
     UtilitiesSub-routines used from within Windows Process callback specific cases
     DataStructures
    diff --git a/docs/docs/StateServer/html/topics.js b/docs/docs/StateServer/html/topics.js index d4378bf..fc9d866 100644 --- a/docs/docs/StateServer/html/topics.js +++ b/docs/docs/StateServer/html/topics.js @@ -1,10 +1,17 @@ var topics = [ + [ "Logging Functions", "group___logging.html", "group___logging" ], [ "Port Creation", "group___port_creation.html", "group___port_creation" ], [ "Messaging", "group___messaging.html", "group___messaging" ], [ "Clean-Up", "group___clean_up.html", "group___clean_up" ], + [ "Parameter Files", "group___files.html", "group___files" ], + [ "Data Structures", "group___structures.html", "group___structures" ], + [ "Initialization and Cleanup", "group___init_cleanup.html", "group___init_cleanup" ], + [ "Handler Threads", "group___handlers.html", "group___handlers" ], + [ "Startup Routines", "group___starters.html", "group___starters" ], [ "Timing Functions", "group___timing.html", "group___timing" ], [ "External", "group___external.html", "group___external" ], [ "Callbacks", "group___callbacks.html", "group___callbacks" ], - [ "Utilities", "group___utility.html", null ] + [ "Utilities", "group___utility.html", null ], + [ "DataStructures", "group___data_structures.html", "group___data_structures" ] ]; \ No newline at end of file
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    FlagData Struct Reference
    +
    +
    + +

    #include <state_server.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    sig_atomic_t new_parameters
     
    sig_atomic_t new_state
     
    sig_atomic_t new_position
     
    sig_atomic_t new_subject
     
    sig_atomic_t new_set
     
    sig_atomic_t idle
     
    +

    Field Documentation

    + +

    ◆ idle

    + +
    +
    + + + + +
    sig_atomic_t FlagData::idle
    +
    +

    Flag indicating if we are idle

    + +
    +
    + +

    ◆ new_parameters

    + +
    +
    + + + + +
    sig_atomic_t FlagData::new_parameters
    +
    +

    Flag indicating new parameters

    + +
    +
    + +

    ◆ new_position

    + +
    +
    + + + + +
    sig_atomic_t FlagData::new_position
    +
    +

    Flag indicating new position

    + +
    +
    + +

    ◆ new_set

    + +
    +
    + + + + +
    sig_atomic_t FlagData::new_set
    +
    +

    Flag indicating new set of trials

    + +
    +
    + +

    ◆ new_state

    + +
    +
    + + + + +
    sig_atomic_t FlagData::new_state
    +
    +

    Flag indicating new state

    + +
    +
    + +

    ◆ new_subject

    + +
    +
    + + + + +
    sig_atomic_t FlagData::new_subject
    +
    +

    Flag indicating new subject

    + +
    +
    +
    +