GoWebScan API
GoWebScanSdkDef.h
Go to the documentation of this file.
1 /**
2 * @file GoWebScanSdkDef.h
3 * @brief Essential GoWebScan declarations.
4 *
5 * @internal
6 * Copyright (C) 2017-2026 by LMI Technologies Inc.
7 * Licensed under the MIT License.
8 * Redistributed files must retain the above copyright notice.
9 */
10 #ifndef GO_WEB_SCAN_SDK_DEF_H
11 #define GO_WEB_SCAN_SDK_DEF_H
12 
13 #include <kApi/kApiDef.h>
14 
15 #if defined (GO_WEB_SCAN_EMIT)
16 # define GoWebScanFx(TYPE) kExportFx(TYPE) ///< GoWebScanSdk function declaration helper.
17 # define GoWebScanCx(TYPE) kExportCx(TYPE) ///< GoWebScanSdk dynamic function declaration helper.
18 # define GoWebScanDx(TYPE) kExportDx(TYPE) ///< GoWebScanSdk data declaration helper.
19 #elif defined (GO_WEB_SCAN_STATIC)
20 # define GoWebScanFx(TYPE) kInFx(TYPE)
21 # define GoWebScanCx(TYPE) kInCx(TYPE)
22 # define GoWebScanDx(TYPE) kInDx(TYPE)
23 #else
24 # define GoWebScanFx(TYPE) kImportFx(TYPE)
25 # define GoWebScanCx(TYPE) kImportCx(TYPE)
26 # define GoWebScanDx(TYPE) kImportDx(TYPE)
27 #endif
28 
29 
30 #define GO_WEB_SCAN_PROFILE_CAMERA_COUNT (2) ///< Count of profile cameras per sensor.
31 #define GO_WEB_SCAN_VISION_CAMERA_COUNT (2) ///< Count of vision cameras per sensor.
32 #define GO_WEB_SCAN_MAX_TRACHEID_ANGLE (179) ///< Maximum tracheid angle (degrees).
33 #define GO_WEB_SCAN_NULL_TRACHEID_ANGLE (k8U_MAX) ///< Null tracheid angle.
34 #define GO_WEB_SCAN_NULL_TRACHEID_SCATTER (0) ///< Null tracheid scatter.
35 #define GO_WEB_SCAN_NULL_TRACHEID_AREA (0) ///< Null tracheid area.
36 #define GO_WEB_SCAN_TRACHEID_AREA_EXPORT_DIV (1.5) ///< Tracheid area is divided before sending to user application.
37 #define GO_WEB_SCAN_CONCURRENCY_DEFAULT (-2) ///< Concurrency is not specified in settings.xml.
38 #define GO_WEB_SCAN_CONCURRENCY_OPTIMIZE (-1) ///< Concurrency should be optimized for the number of CPU cores.
39 #define GO_WEB_SCAN_VISION_TERRAIN_TARGET_X_RES (200) ///< Desired X resolution of profile data used for vision resampling (aka terrains) (mils).
40 #define GO_WEB_SCAN_MIN_OBJECT_Y_EXTENT (1000) ///< Minimum detection mode object width (mils).
41 #define GO_WEB_SCAN_MIN_OBJECT_GAP (500) ///< Minimum detection mode object gap (mils).
42 #define GO_WEB_SCAN_TASK_BUFFER_TIME (1000000) ///< Approximate maximum amount of time to buffer data at input to each pipe task.
43 #define GO_WEB_SCAN_SYNC_COHERENCY_DISTANCE (12000) ///< Data from different nodes should be at least this far apart before forcing drop (mils).
44 #define GO_WEB_SCAN_SYNC_COHERENCY_TIME (400000) ///< Data from different nodes should be at least this far apart before forcing drop (microseconds).
45 #define GO_WEB_SCAN_SYNC_BREAK_DISTANCE (24000) ///< Drop all data further than this amount from the current position (mils).
46 #define GO_WEB_SCAN_MAX_SYSTEM_SPEED (70000) ///< Maximum supported system speed (mils per second).
47 #define GO_WEB_SCAN_EXTENSION_WINDOW (2) ///< Maximum number of null range spot data before or after board edge along X axis.
48 #define GO_WEB_SCAN_FLATFIELD_RES_BITS (10) ///< Vision flatfield gain fractional bits preserved in integer calculations.
49 #define GO_WEB_SCAN_CAMERA_MARGIN (2000) ///< Amount of extra camera FOV (beyond nominal FOV) that can be included in results.
50 #define GO_WEB_SCAN_X_TILE_LCM (1000) ///< Least common multiple for every supported x-resolution.
51 
52 #define GO_WEB_SCAN_CAL_GAIN_WIDTH (64) ///< Width of gain images stored in calibration files.
53 #define GO_WEB_SCAN_CAL_GAIN_HEIGHT (8) ///< Height of gain images stored in calibration files.
54 #define GO_WEB_SCAN_CAL_VISION_Y_OFFSET_COUNT (2) ///< Width of y-offset array stored in calibration files.
55 #define GO_WEB_SCAN_CAL_TRIGGER_THRESHOLD (0.5) ///< At least this proportion profile dots must be valid for object detection.
56 #define GO_WEB_SCAN_CAL_TILE_Y_EXTENT (400) ///< Tile size for internal calibration calculations.
57 #define GO_WEB_SCAN_CAL_Y_MIN_GAP (1000) ///< Minimum gap between successive objects for calibration object detection (mils).
58 
59 #define GO_WEB_SCAN_UNASSIGNED_SERIAL_NUMBER (-1) ///< Serial number of unassigned node.
60 
61 #define GO_WEB_SCAN_TRACHEID_TO_PROFILE_MULTIPLIER_SEPARATE (3) ///< Separate tracheid exposure mode.
62 #define GO_WEB_SCAN_TRACHEID_TO_PROFILE_MULTIPLIER_COMBINED (2) ///< Combined profile/tracheid exposure mode.
63 
64 #define GO_WEB_SCAN_VISION_FRAME_RATE_DIVISOR (24) ///< Profile frame rate should be this value times larger than vision frame rate to prevent interference.
65 #define GO_WEB_SCAN_VISION_FRAME_RATE_DIVISOR_SEPARATE_EXPOSURES (32) ///< Vision frame rate divisor for when separate tracheid exposure is enabled. 32 profile periods contain 24 profile messages.
66 
67 #define GO_WEB_SCAN_VIEW_SPOT_COUNT_G250 (38) ///< Expected width of G250, G240, and G230 raw profile messages.
68 #define GO_WEB_SCAN_VIEW_SPOT_COUNT_G210 (15) ///< Expected width of G210 raw profile messages.
69 #define GO_WEB_SCAN_MAX_SENSOR_DATA_RATE (125) ///< Max sensor output data rate (MB/s).
70 #define GO_WEB_SCAN_RATE_LIMIT_SAFETY_FACTOR (1.5) ///< Safety factor applied to expected data rate in calculating actual limit
71 #define GO_WEB_SCAN_PROFILE_READOUT_TIME (10) ///< Camera buffer readout time in microseconds
72 
73 /**
74 * @struct GoWebScanMode
75 * @extends kValue
76 * @ingroup GoWebScanSdk
77 * @brief Represents a scan mode.
78 *
79 * The following enumerators are defined:
80 * - #GO_WEB_SCAN_MODE_UNKNOWN
81 * - #GO_WEB_SCAN_MODE_CALIBRATION
82 * - #GO_WEB_SCAN_MODE_DETECTION
83 * - #GO_WEB_SCAN_MODE_WEB
84 */
85 typedef k32s GoWebScanMode;
86 /** @name GoWebScanMode
87 *@{*/
88 #define GO_WEB_SCAN_MODE_UNKNOWN (0) ///< Mode of system is unknown.
89 #define GO_WEB_SCAN_MODE_CALIBRATION (1) ///< Mode for running and generating system calibration.
90 #define GO_WEB_SCAN_MODE_DETECTION (2) ///< Mode for detecting discrete objects.
91 #define GO_WEB_SCAN_MODE_WEB (3) ///< Mode for producing uniform resolution tiles.
92 /**@}*/
93 
94 /**
95 * @struct GoWebScanDataSource
96 * @extends kValue
97 * @ingroup GoWebScanSdk
98 * @brief Represents a type of sensor data.
99 *
100 * The following enumerators are defined:
101 * - #GO_WEB_SCAN_DATA_SOURCE_PROFILE
102 * - #GO_WEB_SCAN_DATA_SOURCE_VISION
103 * - #GO_WEB_SCAN_DATA_SOURCE_TRACHEID
104 */
105 typedef k32s GoWebScanDataSource;
106 /** @name GoWebScanDataSource
107 *@{*/
108 #define GO_WEB_SCAN_DATA_SOURCE_PROFILE (0) ///< Geometric data consisting of X and Z measurements.
109 #define GO_WEB_SCAN_DATA_SOURCE_VISION (1) ///< Raw Bayer video images.
110 #define GO_WEB_SCAN_DATA_SOURCE_TRACHEID (2) ///< Spot shape information. Consists of scatter (minor to major ratio), angle, and area.
111 /**@}*/
112 
113 #define GO_WEB_SCAN_DATA_SOURCE_COUNT (3) ///< Number of data sources.
114 
115 /**
116 * @struct GoWebScanDetectionStyle
117 * @extends kValue
118 * @ingroup GoWebScanSdk
119 * @brief Represents a style of triggering the start of an object when in detection mode.
120 * The start of an object is triggered by a minimum number of non-null profiles. The
121 * detection style can either be global, meaning the non-null profiles can be
122 * disconnected, or local, which imposes the condition than the non-null profiles
123 * are contiguous.
124 *
125 * The following enumerators are defined:
126 * - #GO_WEB_SCAN_DETECTION_STYLE_GLOBAL
127 * - #GO_WEB_SCAN_DETECTION_STYLE_LOCAL
128 */
130 /** @name GoWebScanDetectionStyle
131 *@{*/
132 #define GO_WEB_SCAN_DETECTION_STYLE_GLOBAL (0) ///< Global detection triggering.
133 #define GO_WEB_SCAN_DETECTION_STYLE_LOCAL (1) ///< Local detection triggering.
134 /**@}*/
135 
136 /**
137 * @struct GoWebScanInterpolation
138 * @extends kValue
139 * @ingroup GoWebScanSdk
140 * @brief Represents a style of interpolation used during profile resampling.
141 *
142 * The following enumerators are defined:
143 * - #GO_WEB_SCAN_INTERPOLATION_NEAREST
144 * - #GO_WEB_SCAN_INTERPOLATION_LINEAR
145 */
147 /** @name GoWebScanInterpolation
148 *@{*/
149 #define GO_WEB_SCAN_INTERPOLATION_NEAREST (0) ///< Nearest neighbour.
150 #define GO_WEB_SCAN_INTERPOLATION_LINEAR (1) ///< Linear interpolation.
151 /**@}*/
152 
153 /**
154 * @struct GoWebScanStage
155 * @extends kValue
156 * @ingroup GoWebScanSdk
157 * @brief Represents a stage in the processing pipeline.
158 *
159 * The following enumerators are defined:
160 * - #GO_WEB_SCAN_STAGE_SAMPLE
161 * - #GO_WEB_SCAN_STAGE_SYNC
162 * - #GO_WEB_SCAN_STAGE_MERGE
163 * - #GO_WEB_SCAN_STAGE_WEB
164 * - #GO_WEB_SCAN_STAGE_DETECTION
165 */
166 typedef k32s GoWebScanStage;
167 /** @name GoWebScanStage
168 *@{*/
169 #define GO_WEB_SCAN_STAGE_SAMPLE (0) ///< Resampling stage.
170 #define GO_WEB_SCAN_STAGE_SYNC (1) ///< Synchronization and matching of resampled tiles.
171 #define GO_WEB_SCAN_STAGE_MERGE (2) ///< Merging stage.
172 #define GO_WEB_SCAN_STAGE_WEB (3) ///< Web mode output stage.
173 #define GO_WEB_SCAN_STAGE_DETECTION (4) ///< Board detection stage.
174 /**@}*/
175 
176 #define GO_WEB_SCAN_STAGE_COUNT (5) ///< Number of processing stages.
177 
178 /**
179 * @struct GoWebScanMsgId
180 * @extends kValue
181 * @ingroup GoWebScanSdk
182 * @brief Represents an ID for GoWebScan message objects.
183 *
184 * The following enumerators are defined:
185 * - #GO_WEB_SCAN_MSG_ID_INPUT
186 * - #GO_WEB_SCAN_MSG_ID_NODE_TILE
187 * - #GO_WEB_SCAN_MSG_ID_SYNC_LIST
188 * - #GO_WEB_SCAN_MSG_ID_PLANE_TILE
189 * - #GO_WEB_SCAN_MSG_ID_WEB_SET
190 * - #GO_WEB_SCAN_MSG_ID_DETECTION_SET
191 */
192 typedef k32s GoWebScanMsgId;
193 /** @name GoWebScanMsgId
194 *@{*/
195 #define GO_WEB_SCAN_MSG_ID_INPUT (0) ///< Message containing raw sensor data.
196 #define GO_WEB_SCAN_MSG_ID_NODE_TILE (1) ///< Message containing resampled tiles for a node.
197 #define GO_WEB_SCAN_MSG_ID_SYNC_LIST (2) ///< Message containing list of Y-matched tiles for the system.
198 #define GO_WEB_SCAN_MSG_ID_PLANE_TILE (3) ///< Message containing resampled and merged tiles for the system
199 #define GO_WEB_SCAN_MSG_ID_WEB_SET (4) ///< Message containing set of plane tiles
200 #define GO_WEB_SCAN_MSG_ID_DETECTION_SET (5) ///< Message containing a detected board.
201 /**@}*/
202 
203 #define GO_WEB_SCAN_MSG_ID_COUNT (6) ///< Number of message IDs.
204 
205 /**
206 * @struct GoWebScanInputId
207 * @extends kValue
208 * @ingroup GoWebScanSdk
209 * @brief Represents an ID for types of input messages.
210 *
211 * The following enumerators are defined:
212 * - #GO_WEB_SCAN_INPUT_ID_PROFILE
213 * - #GO_WEB_SCAN_INPUT_ID_VISION
214 * - #GO_WEB_SCAN_INPUT_ID_TRACHEID
215 */
216 typedef k32s GoWebScanInputId;
217 /** @name GoWebScanInputId
218 *@{*/
219 #define GO_WEB_SCAN_INPUT_ID_PROFILE (0) ///< Message containing raw profile data.
220 #define GO_WEB_SCAN_INPUT_ID_VISION (1) ///< Message containing raw vision data.
221 #define GO_WEB_SCAN_INPUT_ID_TRACHEID (2) ///< Message containing raw tracheid data.
222 /**@}*/
223 
224 #define GO_WEB_SCAN_INPUT_ID_COUNT (3) ///< Number of input message IDs.
225 
226 /**
227 * @struct GoWebScanNodeTileId
228 * @extends kValue
229 * @ingroup GoWebScanSdk
230 * @brief Represents an ID for types of tile messages.
231 *
232 * The following enumerators are defined:
233 * - #GO_WEB_SCAN_NODE_TILE_ID_PRESENCE
234 * - #GO_WEB_SCAN_NODE_TILE_ID_PROFILE
235 * - #GO_WEB_SCAN_NODE_TILE_ID_TERRAIN
236 * - #GO_WEB_SCAN_NODE_TILE_ID_VISION
237 * - #GO_WEB_SCAN_NODE_TILE_ID_TRACHEID
238 */
239 typedef k32s GoWebScanNodeTileId;
240 /** @name GoWebScanNodeTileId
241 *@{*/
242 #define GO_WEB_SCAN_NODE_TILE_ID_PRESENCE (0) ///< Message containing presence tiles (used for object detection).
243 #define GO_WEB_SCAN_NODE_TILE_ID_PROFILE (1) ///< Message containing profile tiles.
244 #define GO_WEB_SCAN_NODE_TILE_ID_TERRAIN (2) ///< Message containing terrain tiles (used for vision resampling).
245 #define GO_WEB_SCAN_NODE_TILE_ID_VISION (3) ///< Message containing vision tiles.
246 #define GO_WEB_SCAN_NODE_TILE_ID_TRACHEID (4) ///< Message containing tracheid tiles.
247 /**@}*/
248 
249 #define GO_WEB_SCAN_NODE_TILE_ID_COUNT (5) ///< Number of tile message IDs.
250 
251 /**
252 * @struct GoWebScanSyncId
253 * @extends kValue
254 * @ingroup GoWebScanSdk
255 * @brief Represents an ID for types of sync list messages.
256 *
257 * The following enumerators are defined:
258 * - #GO_WEB_SCAN_SYNC_ID_PRESENCE
259 * - #GO_WEB_SCAN_SYNC_ID_PROFILE
260 * - #GO_WEB_SCAN_SYNC_ID_VISION
261 * - #GO_WEB_SCAN_SYNC_ID_TRACHEID
262 */
263 typedef k32s GoWebScanSyncId;
264 /** @name GoWebScanSyncId
265 *@{*/
266 #define GO_WEB_SCAN_SYNC_ID_PRESENCE (0) ///< Message containing presence list.
267 #define GO_WEB_SCAN_SYNC_ID_PROFILE (1) ///< Message containing profile list.
268 #define GO_WEB_SCAN_SYNC_ID_VISION (2) ///< Message containing vision list.
269 #define GO_WEB_SCAN_SYNC_ID_TRACHEID (3) ///< Message containing tracheid list.
270 /**@}*/
271 
272 #define GO_WEB_SCAN_SYNC_ID_COUNT (4) ///< Number of sync message IDs.
273 
274 /**
275 * @struct GoWebScanPlaneTileId
276 * @extends kValue
277 * @ingroup GoWebScanSdk
278 * @brief Represents an ID for types of plane tile messages.
279 *
280 * The following enumerators are defined:
281 * - #GO_WEB_SCAN_PLANE_TILE_ID_PRESENCE
282 * - #GO_WEB_SCAN_PLANE_TILE_ID_PROFILE
283 * - #GO_WEB_SCAN_PLANE_TILE_ID_VISION
284 * - #GO_WEB_SCAN_PLANE_TILE_ID_TRACHEID
285 */
286 typedef k32s GoWebScanPlaneTileId;
287 /** @name GoWebScanPlaneTileId
288 *@{*/
289 #define GO_WEB_SCAN_PLANE_TILE_ID_PRESENCE (0) ///< Message containing presence plane tile.
290 #define GO_WEB_SCAN_PLANE_TILE_ID_PROFILE (1) ///< Message containing profile plane tile.
291 #define GO_WEB_SCAN_PLANE_TILE_ID_VISION (2) ///< Message containing vision plane tile.
292 #define GO_WEB_SCAN_PLANE_TILE_ID_TRACHEID (3) ///< Message containing tracheid plane tile
293 /**@}*/
294 
295 #define GO_WEB_SCAN_PLANE_TILE_ID_COUNT (4) ///< Number of plane tile message IDs.
296 
297 /**
298 * @struct GoWebScanMsgType
299 * @extends kValue
300 * @ingroup GoWebScanSdk
301 * @brief Represents a type of GoWebScan message.
302 *
303 * The following enumerators are defined:
304 * - #GO_WEB_SCAN_MSG_TYPE_PROFILE_INPUT
305 * - #GO_WEB_SCAN_MSG_TYPE_TRACHEID_INPUT
306 * - #GO_WEB_SCAN_MSG_TYPE_VISION_INPUT
307 * - #GO_WEB_SCAN_MSG_TYPE_PROFILE_TILE
308 * - #GO_WEB_SCAN_MSG_TYPE_TRACHEID_TILE
309 * - #GO_WEB_SCAN_MSG_TYPE_VISION_TILE
310 * - #GO_WEB_SCAN_MSG_TYPE_TILE_LIST
311 * - #GO_WEB_SCAN_MSG_TYPE_SYSTEM
312 */
313 typedef k32s GoWebScanMsgType;
314 /** @name GoWebScanMsgType
315 *@{*/
316 #define GO_WEB_SCAN_MSG_TYPE_PROFILE_INPUT (0) ///< Message containing raw profile data.
317 #define GO_WEB_SCAN_MSG_TYPE_TRACHEID_INPUT (1) ///< Message containing raw tracheid data.
318 #define GO_WEB_SCAN_MSG_TYPE_VISION_INPUT (2) ///< Message containing raw vision data.
319 #define GO_WEB_SCAN_MSG_TYPE_PROFILE_TILE (3) ///< Message containing profile tiles.
320 #define GO_WEB_SCAN_MSG_TYPE_TRACHEID_TILE (4) ///< Message containing tracheid tiles.
321 #define GO_WEB_SCAN_MSG_TYPE_VISION_TILE (5) ///< Message containing vision tiles.
322 #define GO_WEB_SCAN_MSG_TYPE_TILE_LIST (6) ///< Message containing a list of tiles.
323 #define GO_WEB_SCAN_MSG_TYPE_SYSTEM (7) ///< Message containing tiles for the whole system.
324 /**@}*/
325 
326 /**
327 * @struct GoWebScanSystemPlane
328 * @extends kValue
329 * @ingroup GoWebScanSdk
330 * @brief Represents the top or bottom plane of the system.
331 *
332 * The following enumerators are defined:
333 * - #GO_WEB_SCAN_SYSTEM_PLANE_TOP
334 * - #GO_WEB_SCAN_SYSTEM_PLANE_BOTTOM
335 */
336 typedef k32s GoWebScanSystemPlane;
337 /** @name GoWebScanSystemPlane
338 *@{*/
339 #define GO_WEB_SCAN_SYSTEM_PLANE_TOP (0) ///< Top plane of the system.
340 #define GO_WEB_SCAN_SYSTEM_PLANE_BOTTOM (1) ///< Bottom plane of the system.
341 /**@}*/
342 
343 #define GO_WEB_SCAN_SYSTEM_PLANE_COUNT (2) ///< Number of system planes.
344 
345 /**
346 * @struct GoWebScanXOrientation
347 * @extends kValue
348 * @ingroup GoWebScanSdk
349 * @brief Represents the direction of the X orientation. In a left-to-right system
350 * (as viewed from the front), the zero reference is on the left and sensor
351 * indices (defined by the sensor "Name" property) increase left-to-right.
352 * In a right-to-left system, the zero reference is on the right and sensor
353 * indices increase right-to-left.
354 *
355 * The following enumerators are defined:
356 * - #GO_WEB_SCAN_X_ORIENTATION_RIGHT_TO_LEFT
357 * - #GO_WEB_SCAN_X_ORIENTATION_LEFT_TO_RIGHT
358 */
360 /** @name GoWebScanXOrientation
361 *@{*/
362 #define GO_WEB_SCAN_X_ORIENTATION_RIGHT_TO_LEFT (0) ///< Right-to-left orientation
363 #define GO_WEB_SCAN_X_ORIENTATION_LEFT_TO_RIGHT (1) ///< Left-to-right orientation
364 /**@}*/
365 
366 /**
367 * @struct GoWebScanYOrientation
368 * @extends kValue
369 * @ingroup GoWebScanSdk
370 * @brief Represents the Y-orientation of the sensors: Facing Toward (1) or Facing
371 * Away (0). The sensor logo and labels are visible when sensors are facing
372 * toward.
373 *
374 * The following enumerators are defined:
375 * - #GO_WEB_SCAN_Y_ORIENTATION_AWAY
376 * - #GO_WEB_SCAN_Y_ORIENTATION_TOWARD
377 */
379 /** @name GoWebScanYOrientation
380 *@{*/
381 #define GO_WEB_SCAN_Y_ORIENTATION_AWAY (0) ///< Orientation where sensor labels are facing away.
382 #define GO_WEB_SCAN_Y_ORIENTATION_TOWARD (1) ///< Orientation where sensor labels are facing towards.
383 /**@}*/
384 
385 /**
386 * @struct GoWebScanCalStatus
387 * @extends kValue
388 * @ingroup GoWebScanSdk
389 * @brief Represents the status of calibration processing for the system.
390 *
391 * The following enumerators are defined:
392 * - #GO_WEB_SCAN_CAL_STATUS_OK
393 * - #GO_WEB_SCAN_CAL_STATUS_WARNING
394 * - #GO_WEB_SCAN_CAL_STATUS_ERROR
395 * - #GO_WEB_SCAN_CAL_STATUS_ERROR_COLLECTION
396 * - #GO_WEB_SCAN_CAL_STATUS_ERROR_PROCESSING
397 * - #GO_WEB_SCAN_CAL_STATUS_ERROR_REPLAY
398 */
399 typedef k32s GoWebScanCalStatus;
400 /** @name GoWebScanCalStatus
401 *@{*/
402 #define GO_WEB_SCAN_CAL_STATUS_OK (1) ///< Calibration is successful.
403 #define GO_WEB_SCAN_CAL_STATUS_WARNING (1000) ///< Generic warning. The results may be marginal.
404 #define GO_WEB_SCAN_CAL_STATUS_ERROR (2000) ///< Generic error.
405 #define GO_WEB_SCAN_CAL_STATUS_ERROR_COLLECTION (2001) ///< Data collection error.
406 #define GO_WEB_SCAN_CAL_STATUS_ERROR_PROCESSING (2002) ///< Data processing error.
407 #define GO_WEB_SCAN_CAL_STATUS_ERROR_REPLAY (2003) ///< Data replay error.
408 /**@}*/
409 
410 /**
411 * @struct GoWebScanCalActivity
412 * @extends kValue
413 * @ingroup GoWebScanSdk
414 * @brief Represents a stage or activity in the system calibration processing
415 * pipeline.
416 *
417 * The following enumerators are defined:
418 * - #GO_WEB_SCAN_CAL_ACTIVITY_PROFILE
419 * - #GO_WEB_SCAN_CAL_ACTIVITY_PROFILE_Y
420 * - #GO_WEB_SCAN_CAL_ACTIVITY_PROFILE_Z
421 * - #GO_WEB_SCAN_CAL_ACTIVITY_VISION
422 * - #GO_WEB_SCAN_CAL_ACTIVITY_VISION_X
423 * - #GO_WEB_SCAN_CAL_ACTIVITY_VISION_Y
424 * - #GO_WEB_SCAN_CAL_ACTIVITY_VISION_GAIN
425 */
426 typedef k32s GoWebScanCalActivity;
427 /** @name GoWebScanCalActivity
428 *@{*/
429 #define GO_WEB_SCAN_CAL_ACTIVITY_PROFILE (0) ///< Profile calibration.
430 #define GO_WEB_SCAN_CAL_ACTIVITY_PROFILE_Y (1) ///< Profile Y-calibration.
431 #define GO_WEB_SCAN_CAL_ACTIVITY_PROFILE_Z (2) ///< Profile Z-calibration.
432 #define GO_WEB_SCAN_CAL_ACTIVITY_VISION (1000) ///< Vision calibration.
433 #define GO_WEB_SCAN_CAL_ACTIVITY_VISION_X (1001) ///< Vision X-calibration.
434 #define GO_WEB_SCAN_CAL_ACTIVITY_VISION_Y (1002) ///< Vision Y-calibration.
435 #define GO_WEB_SCAN_CAL_ACTIVITY_VISION_GAIN (1003) ///< Vision gain calibration.
436 /**@}*/
437 
438 /**
439 * @struct GoWebScanCalNodeStatus
440 * @extends kValue
441 * @ingroup GoWebScanSdk
442 * @brief Represents a type of error or warning that occurred during system
443 * calibration processing of a node.
444 *
445 * The following enumerators are defined:
446 * - #GO_WEB_SCAN_CAL_NODE_STATUS_WARNING
447 * - #GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_FRAME_LOSS
448 * - #GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_INSUFFICIENT_DATA
449 * - #GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_HIGH_INTENSITY
450 * - #GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_X_COVERAGE
451 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR
452 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_PREREQUISITE
453 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_ALGORITHM
454 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_FRAME_LOSS
455 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_INSUFFICIENT_DATA
456 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_FEATURE
457 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_NOISE
458 * - #GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_LOW_INTENSITY
459 */
461 /** @name GoWebScanCalNodeStatus
462 *@{*/
463 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING (1000) ///< Calibration warning.
464 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_FRAME_LOSS (1003) ///< Camera data lost during capture.
465 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_INSUFFICIENT_DATA (1004) ///< Insufficient data for processing.
466 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_HIGH_INTENSITY (1007) ///< Intensity too high.
467 #define GO_WEB_SCAN_CAL_NODE_STATUS_WARNING_X_COVERAGE (1008) ///< Insufficient X coverage.
468 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR (2000) ///< Calibration error.
469 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_PREREQUISITE (2001) ///< Calibration not attempted.
470 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_ALGORITHM (2002) ///< Algorithm encountered unexpected condition.
471 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_FRAME_LOSS (2003) ///< Camera data lost during capture.
472 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_INSUFFICIENT_DATA (2004) ///< Insufficient data for processing.
473 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_FEATURE (2005) ///< Feature could not be located in data.
474 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_NOISE (2006) ///< Noisy data.
475 #define GO_WEB_SCAN_CAL_NODE_STATUS_ERROR_LOW_INTENSITY (2007) ///< Intensity too low.
476 /**@}*/
477 
478 /**
479 * @struct GoWebScanMsgStamp
480 * @extends kValue
481 * @ingroup GoWebScanSdk
482 * @brief Represents a message stamp containing properties of a message.
483 */
484 typedef struct GoWebScanMsgStamp
485 {
486  k32s id[4]; ///< Message ID. This ID can be formed from the message source node's position in the system.
487  k64s time; ///< Message timestamp. In internal units approximating microseconds where the true time in us = timestamp value / 1.024.
488  k64s encoder; ///< Message encoder value (ticks).
489  k64s position; ///< Message Y-axis position (mils) calculated from encoder value and user-specified encoder resolution.
491 
492 /**
493 * @struct GoWebScanSection
494 * @extends kValue
495 * @ingroup GoWebScanSdk
496 * @brief Represents a section of output system data. This can be defined by the user
497 * to allow for routing data to separate client destinations.
498 */
499 typedef struct GoWebScanSection
500 {
501  k32s id; ///< User-defined identifier for this section.
502  GoWebScanDataSource type; ///< Data type of section.
503  k32s x0; ///< Start of section along the X-axis (length), in system coordinates (mils).
504  k32s x1; ///< End of section along the X-axis (length), in system coordinates (mils). Should be greater than X0.
506 
507 /**
508 * @struct GoWebScanLinearFunction
509 * @extends kValue
510 * @ingroup GoWebScanSdk
511 * @brief Represents coefficients of a linear fit. The fit can be applied as follows:
512 * y(x) = c1*x + c0.
513 */
515 {
516  k64f c0; ///< First coefficient of fit.
517  k64f c1; ///< Second coefficient of fit.
519 
520 /**
521 * @struct GoWebScanInputAttr
522 * @extends kValue
523 * @ingroup GoWebScanSdk
524 * @brief Represents the attributes of an input GoWebScan message object. These values are
525 * copied from the raw sensor message stamp. Refer to GoStamp in GoSdk for more details.
526 */
527 typedef struct GoWebScanInputAttr
528 {
529  k64s time; ///< Message timestamp. In internal units approximating microseconds where the true time in us = timestamp value / 1.024.
530  k64s encoder; ///< Message encoder value (ticks).
531  k64s position; ///< Message Y-axis position (mils) calculated from encoder value and user-specified encoder resolution.
532  k64s inputs; ///< Status of the message. Bit mask containing frame information. Refer to GoStamp.
534 
535 /**
536 * @struct GoWebScanTracheidValue
537 * @extends kValue
538 * @ingroup GoWebScanSdk
539 * @brief Represents integer values of the spot tracheid data. These values are calculated
540 * from the spot shape.
541 */
543 {
544  k16s angle; ///< Angle of the spot (degrees).
545  k16s scatter; ///< Minor to major ratio of the spot, scaled to [0, 255].
546  k16s area; ///< Area of the spot (pixels).
548 
549 #define GO_WEB_SCAN_TRACHEID_VALUE_SET_NULL(X) ((X)->angle = k16S_NULL, (X)->scatter = k16S_NULL, (X)->area = k16S_NULL) ///< Sets the GoWebScanTracheidValue struct to null.
550 
551 /**
552 * @struct GoWebScanTracheidPoint
553 * @extends kValue
554 * @ingroup GoWebScanSdk
555 * @brief Represents a tracheid point, which is the integer tracheid data for a spot with
556 * the X position (mils) taken from the matching profile data.
557 */
559 {
560  k16s x; ///< X range (mils).
561  k16s angle; ///< Angle of the spot (degrees).
562  k16s scatter; ///< Minor to major ratio of the spot, scaled to [0, 255].
563  k16s area; ///< Area of the spot (pixels).
565 
566 #define GO_WEB_SCAN_TRACHEID_POINT_SET_NULL(X) ((X)->x = k16S_NULL, (X)->angle = k16S_NULL, (X)->scatter = k16S_NULL, (X)->area = k16S_NULL) ///< Sets the GoWebScanTracheidPoint struct to null.
567 
568 /**
569 * @struct GoWebScanGenericPoint16s
570 * @extends kValue
571 * @ingroup GoWebScanSdk
572 * @brief Represents a generic 16s point.
573 */
575 {
576  k16s x; ///< Generic X value
578 
579 /**
580 * @struct GoWebScanObstruction
581 * @extends kValue
582 * @ingroup GoWebScanSdk
583 * @brief Represents a user-defined obstruction to ignore a zone in X and Z in the input
584 * profile data. If there are any objects that regularly appear within the field of
585 * view of the sensors, such as chain runners, the zones in which those objects
586 * appear must be identified before the system will operate correctly in Calibration,
587 * Web, or Detection modes.
588 */
589 typedef struct GoWebScanObstruction
590 {
591  k32s x0; ///< Start of obstruction zone along the X-axis (length), in sensor coordinates (mils).
592  k32s x1; ///< End of obstruction zone along the X-axis (length), in sensor coordinates (mils).
593  k32s z0; ///< Start of obstruction zone along the z-axis (height), in sensor coordinates (mils).
594  k32s z1; ///< End of obstruction zone along the z-axis (length), in sensor coordinates (mils).
596 
597 #include <GoWebScanSdk/GoWebScanSdkDef.x.h>
598 
599 #endif
k64s encoder
Message encoder value (ticks).
Definition: GoWebScanSdkDef.h:488
Represents a tracheid point, which is the integer tracheid data for a spot with the X position (mils)...
Definition: GoWebScanSdkDef.h:558
k32s id
User-defined identifier for this section.
Definition: GoWebScanSdkDef.h:501
Represents coefficients of a linear fit. The fit can be applied as follows: y(x) = c1*x + c0...
Definition: GoWebScanSdkDef.h:514
Represents a style of triggering the start of an object when in detection mode. The start of an objec...
Represents a style of interpolation used during profile resampling.
k32s x0
Start of obstruction zone along the X-axis (length), in sensor coordinates (mils).
Definition: GoWebScanSdkDef.h:591
Represents an ID for types of tile messages.
Represents an ID for types of sync list messages.
k16s angle
Angle of the spot (degrees).
Definition: GoWebScanSdkDef.h:561
Represents a type of error or warning that occurred during system calibration processing of a node...
k16s area
Area of the spot (pixels).
Definition: GoWebScanSdkDef.h:563
k16s x
Generic X value.
Definition: GoWebScanSdkDef.h:576
k64s position
Message Y-axis position (mils) calculated from encoder value and user-specified encoder resolution...
Definition: GoWebScanSdkDef.h:531
Represents a type of sensor data.
k32s x1
End of section along the X-axis (length), in system coordinates (mils). Should be greater than X0...
Definition: GoWebScanSdkDef.h:504
Represents a stage in the processing pipeline.
k16s scatter
Minor to major ratio of the spot, scaled to [0, 255].
Definition: GoWebScanSdkDef.h:562
Represents an ID for GoWebScan message objects.
k32s x1
End of obstruction zone along the X-axis (length), in sensor coordinates (mils).
Definition: GoWebScanSdkDef.h:592
Represents a scan mode.
Represents a stage or activity in the system calibration processing pipeline.
k16s area
Area of the spot (pixels).
Definition: GoWebScanSdkDef.h:546
k32s z1
End of obstruction zone along the z-axis (length), in sensor coordinates (mils).
Definition: GoWebScanSdkDef.h:594
Represents integer values of the spot tracheid data. These values are calculated from the spot shape...
Definition: GoWebScanSdkDef.h:542
Represents a message stamp containing properties of a message.
Definition: GoWebScanSdkDef.h:484
k64s time
Message timestamp. In internal units approximating microseconds where the true time in us = timestamp...
Definition: GoWebScanSdkDef.h:529
k16s scatter
Minor to major ratio of the spot, scaled to [0, 255].
Definition: GoWebScanSdkDef.h:545
k64s time
Message timestamp. In internal units approximating microseconds where the true time in us = timestamp...
Definition: GoWebScanSdkDef.h:487
k64s encoder
Message encoder value (ticks).
Definition: GoWebScanSdkDef.h:530
k64s inputs
Status of the message. Bit mask containing frame information. Refer to GoStamp.
Definition: GoWebScanSdkDef.h:532
Represents the top or bottom plane of the system.
Represents the attributes of an input GoWebScan message object. These values are copied from the raw ...
Definition: GoWebScanSdkDef.h:527
k32s z0
Start of obstruction zone along the z-axis (height), in sensor coordinates (mils).
Definition: GoWebScanSdkDef.h:593
Represents a generic 16s point.
Definition: GoWebScanSdkDef.h:574
Represents an ID for types of input messages.
Represents a user-defined obstruction to ignore a zone in X and Z in the input profile data...
Definition: GoWebScanSdkDef.h:589
Represents a type of GoWebScan message.
k64f c1
Second coefficient of fit.
Definition: GoWebScanSdkDef.h:517
GoWebScanDataSource type
Data type of section.
Definition: GoWebScanSdkDef.h:502
Represents the status of calibration processing for the system.
Represents a section of output system data. This can be defined by the user to allow for routing data...
Definition: GoWebScanSdkDef.h:499
Represents the direction of the X orientation. In a left-to-right system (as viewed from the front)...
Represents the Y-orientation of the sensors: Facing Toward (1) or Facing Away (0). The sensor logo and labels are visible when sensors are facing toward.
k32s x0
Start of section along the X-axis (length), in system coordinates (mils).
Definition: GoWebScanSdkDef.h:503
k64s position
Message Y-axis position (mils) calculated from encoder value and user-specified encoder resolution...
Definition: GoWebScanSdkDef.h:489
Represents an ID for types of plane tile messages.
k16s x
X range (mils).
Definition: GoWebScanSdkDef.h:560
k16s angle
Angle of the spot (degrees).
Definition: GoWebScanSdkDef.h:544
k64f c0
First coefficient of fit.
Definition: GoWebScanSdkDef.h:516