General Concept of Handshake
The communication process in the LumiScan Cam Driver application is based on the general concept of handshake. The naming convention for handshake parameters usually consists of the functionality and the names -ready or -request (Table 1).
| Address | Description |
|---|---|
|
Read-Only, controlled by our app to indicate whether the relevant functionality is allowed to be executed. |
|
Writable. It is used by user to trigger our application to execute relevant functionality. |
Some of these functions require input parameters and provide additional output results. In this case:
-
the address for the input is: <parent address>/input/<input argument name>
-
the output results can be found at <parent address>/output/<output result name>
Functionality Execution
|
To avoid repeating the entire address, in this section the invariant part containing the parent address and the variable functionality name have been replaced by XXX. Thus, the address: hdvisionsystems/lumiscan-calibration/<transform module name>/control/reset/ready will be written as XXX/ready. Accordingly, the address: hdvisionsystems/lumiscan-calibration/<transform module name>/control/request will be written as XXX/request. |
|
The above rule does not apply to addresses containing input and output, which are given only with the omission of the parent address, so in the form: XXX/input/<argument name>. Example: XXX/input/x-coordinate |
In order to execute a functionality, you need to run the following steps (see also Functionality Execution Steps):
-
Wait until XXX/ready is set to True.
-
Set corresponding input arguments:
Set <parent address>/input/<argument name>
i.e. Set XXX/input/x-coordinate to 2.0 and Set XXX/input/y-coordinate to 2.0For the corresponding input arguments of functionalities, please refer to table Table 2.
-
Set XXX/request to True.
Make sure there is only one process is accessing XXX/request at a time. The result of execution is undefined when:
-
ProcessA set XXX/request to True.
-
ProcessB set XXX/request to False without considering ProcessA.
-
Our application might therefore miss XXX/request from ProcessA.
-
-
XXX/ready changes to False.
-
Set XXX/request to False.
-
Start executing relevant functionality.
-
Execution finished.
-
XXX/ready is automatically set to True again.
-
If functionality has an output parameter, you can read the result from <parent address>/output/<output result name> (for example, <parent address>/output/x-coordinate).