General Concept of Handshake
The communication process in the LumiScan CamDriver 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.
The handshake works for every operation. Most operations can also be started with a single
write to their execute node — see
Execute a Method for a comparison of the two
ways.
| 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. |
Functionality Execution
|
To avoid repeating the entire address, in this section the invariant part containing the parent address and the variable functionality name (capture, connect-camera, disconnect-camera) have been replaced by XXX. Thus, the address: hdvisionsystems/lumiscan-cam-driver/<camera name>/control/connect-camera/ready will be written as XXX/ready.
|
Accordingly, the address: hdvisionsystems/lumiscan-cam-driver/<camera name>/control/connect-camera/request will be written as XXX/request.
|
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.
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 XXX/request to True.
-
XXX/ready changes to False.
-
Set XXX/request to False.
-
Start executing relevant functionality.
-
Execution finished.
-
XXX/ready is automatically set to True again.