About GenTL Signaling
The Coaxlink Driver implements the Signaling mechanism of a GenTL Provider.
This mechanism is briefly described hereafter. For an extensive description, refer to section 4.2 starting on page 34 of the GenICam GenTL Standard Version 1.4.
Event Registration
Source: GenTL specification
Before the GenTL Consumer can be informed about an event, the event object must be registered. After a module instance has been created in the enumeration process an event object can be created with the GCRegisterEvent() function. This function returns a unique EVENT_HANDLE which identifies the registered event object. To get information about a registered event the EventGetInfo() function can be used.
There must be only one event registered per module and event type.
(…)
After an EVENT_HANDLE is obtained the GenTL Consumer can wait for the event object to be signaled by calling the EventGetData() function. Upon delivery of an event, the event object carries data. This data is copied into a GenTL Consumer provided buffer when the call to EventGetData() was successful.
Notification and Data Retrieval
Source: GenTL specification
If the event object is signaled, data was put into the event data queue at some point in time. The EventGetData() function can be called to retrieve the actual data.
(…)
When data is read with this function the data is removed from the queue. Afterwards the GenTL Producer implementation checks whether the event data queue is empty or not. If there is more data available the event object stays signaled and next the call to EventGetData() will deliver the next queue entry. Otherwise the event object is reset to not signaled state.
(…)
The exact type of data is dependent on the event type and the GenTL Producer implementation. The data is copied into a user buffer allocated by the GenTL Consumer. The content of the event data can be queried with the EventGetDataInfo() function. The maximum size of the buffer to be filled is defined by the event type and can be queried using EVENT_INFO_DATA_SIZE_MAX after the buffer is delivered. This information can be queried using the EventGetInfo() function.