Gocator API
 All Classes Files Functions Variables Typedefs Macros Modules Pages
GoSystem.h
Go to the documentation of this file.
1 /**
2  * @file GoSystem.h
3  * @brief Declares the GoSystem class.
4  *
5  * @internal
6  * Copyright (C) 2015 by LMI Technologies Inc.
7  * Licensed under the MIT License.
8  * Redistributed files must retain the above copyright notice.
9  */
10 #ifndef GO_SDK_SYSTEM_H
11 #define GO_SDK_SYSTEM_H
12 
13 #include <GoSdk/GoSdkDef.h>
14 #include <GoSdk/GoSensor.h>
15 #include <GoSdk/GoMultiplexBank.h>
16 
17 kBeginHeader()
18 
19 /**
20  * @class GoSystem
21  * @extends kObject
22  * @ingroup GoSdk
23  * @brief Represents a system of Gocator devices.
24  *
25  * During construction, a GoSystem object uses Gocator Discovery Protocol to locate devices.
26  * Subsequently, the list of detected devices can be accessed using GoSystem_SensorCount and
27  * GoSystem_SensorAt.
28  *
29  * Immediately after construction, all sensor objects are in the <em>online</em> state. This state
30  * indicates that a sensor has been detected, but that the client has not yet established a control
31  * connection to the sensor. The only sensor functions than can be used in this state are GoSensor_State,
32  * GoSensor_Address, and GoSensor_SetAddress.
33  *
34  * Because Gocator Discovery Protocol works <em>across</em> subnets, but Gocator Control Protocol
35  * does not, it is possible for a sensor to be successfully detected but for subsequent connection
36  * attempts to fail. In this case, the GoSensor_SetAddress function can be used to reconfigure the
37  * sensor to operate on the same subnet as the client.
38  *
39  * If the client and device are configured to operate on the same subnet, the GoSystem_Connect or
40  * GoSensor_Connect functions can be used to establish control connections.
41  *
42  * @see GoSystem_Construct, GoSystem_Connect, GoSensor_State, GoSensor_Address, GoSensor_SetAddress.
43  */
44 typedef kObject GoSystem;
45 
46 /** Defines the signature for a GoSystem data/health handler.
47  *
48  * NOTE: The GoDataSet received by this function must be destroyed after use,
49  * otherwise a memory leak will result.
50  *
51  * @see GoDestroy
52 */
53 typedef kStatus (kCall* GoDataFx)(kPointer context, GoSensor system, GoDataSet data);
54 
55 /**
56  * Constructs a GoSystem object.
57  *
58  * During construction, a GoSystem object uses Gocator Discovery Protocol to locate sensors.
59  * The list of detected sensors can be accessed using the GoSystem_SensorCount and GoSystem_SensorAt
60  * functions.
61  *
62  * @public @memberof GoSystem
63  * @version Introduced in firmware 4.0.10.27
64  * @param system Receives constructed system object.
65  * @param allocator Memory allocator (or kNULL for default)
66  * @return Operation status.
67  */
68 GoFx(kStatus) GoSystem_Construct(GoSystem* system, kAlloc allocator);
69 
70 /**
71  * Establishes control connections to all sensors.
72  *
73  * A control connection is required before calling any sensor function except GoSensor_State,
74  * GoSensor_Address, or GoSensor_SetAddress.
75  *
76  * @public @memberof GoSystem
77  * @version Introduced in firmware 4.0.10.27
78  * @param system GoSystem object.
79  * @return Operation status.
80  */
81 GoFx(kStatus) GoSystem_Connect(GoSystem system);
82 
83 /**
84  * Terminates control connections to all sensors.
85  *
86  * @public @memberof GoSystem
87  * @version Introduced in firmware 4.0.10.27
88  * @param system GoSystem object.
89  * @return Operation status.
90  */
91 GoFx(kStatus) GoSystem_Disconnect(GoSystem system);
92 
93 /**
94  * Reports whether the system has changes that require a refresh.
95  *
96  * Sensors can undergo autonomous state changes that require client state to be refreshed
97  * (e.g. sensor goes offline). The GoSystem_HasChanges function can be used to determine
98  * if such changes have occurred.
99  *
100  * The GoSystem_HasChanges function does not perform communication, and consequently, will not
101  * require the caller to block for a long duration. If changes are detected, the GoSystem_Refresh
102  * function can be called to resolve the changes.
103  *
104  * This method is thread-safe.
105  *
106  * @public @memberof GoSystem
107  * @version Introduced in firmware 4.0.10.27
108  * @param system GoSystem object.
109  * @return kTRUE if the system has changes.
110  */
111 GoFx(kBool) GoSystem_HasChanges(GoSystem system);
112 
113 /**
114  * Updates client state to reflect any changes that have occurred in the sensor network.
115  *
116  * Sensors can undergo autonomous state changes that require client state to be refreshed
117  * (e.g. sensor goes offline). The GoSystem_Refresh function resynchronizes client state
118  * with the current state of the sensor network.
119  *
120  * Calling this function may destroy or modify local sensor objects. The GoSystem_HasChanges
121  * function can be used prior to calling GoSystem_Refresh, to determine whether a refresh is
122  * needed.
123  *
124  * @public @memberof GoSystem
125  * @version Introduced in firmware 4.0.10.27
126  * @param system GoSystem object.
127  * @return Operation status.
128  */
129 GoFx(kStatus) GoSystem_Refresh(GoSystem system);
130 
131 /**
132  * Reports the Gocator Protocol version implemented by this library.
133  *
134  * A Gocator Protocol version number has a major component and a minor component.
135  * If the major version implemented by this library is the same as the major
136  * version implemented by a sensor device, then communication can proceed. Otherwise,
137  * the sensor should be upgraded or a newer version of this library should be obtained.
138  * Sensors with incompatible major versions will be reported as being in the
139  * <em>incompatible</em> state upon connection.
140  *
141  * If major versions match, but the minor version implemented by this library
142  * is lower than the minor version implemented by the sensor, then some sensor features
143  * will not be accessible through this library.
144  *
145  * If major versions match, but the minor version implemented by this library
146  * is higher than the minor version implemented by the sensor, then some features
147  * exposed by this library may be unimplemented by the sensor.
148  *
149  * This method is thread-safe.
150  *
151  * @public @memberof GoSystem
152  * @version Introduced in firmware 4.0.10.27
153  * @return Protocol version implemented by this library.
154  * @see GoSensor_ProtocolVersion, GoSensor_State
155  */
157 
158 /**
159  * Reports the Gocator firmware version that was built alongside this library.
160  *
161  * A Gocator SDK version number has a major component and a minor component.
162  * If the major version implemented by this library is the same as the major
163  * version implemented by a sensor device, then communication can proceed. Otherwise,
164  * the sensor should be upgraded or a version of this library matching the sensor
165  * should be obtained.
166  *
167  * When it comes to the matter of mismatched SDK and firmware versions, so long
168  * as the protocol versions match up, they should be compatible.
169  *
170  * @public @memberof GoSystem
171  * @version Introduced in firmware 4.0.10.27
172  * @return Firmware version that was built alongside this library.
173  * @see GoSensor_FirmwareVersion, GoSystem_ProtocolVersion
174  */
176 
177 /**
178  * Sets a callback function that can be used to receive sensor data messages asynchronously.
179  *
180  * Sensor data messages can be received synchronously using the GoSystem_ReceiveData function
181  * or asynchronously by registering a callback function. If a callback function is registered,
182  * a background thread will be created to perform notifications.
183  *
184  * To unregister a previously-registered data handler, call this function using kNULL in place
185  * of the callback function argument.
186  *
187  * @public @memberof GoSystem
188  * @version Introduced in firmware 4.0.10.27
189  * @param system GoSystem object.
190  * @param function Data callback function (or kNULL to unregister).
191  * @param receiver Receiver argument for callback.
192  * @return Operation status.
193  * @see GoDataFx, GoSystem_ReceiveData, GoSystem_SetDataCapacity, GoSystem_EnableData
194  */
195 GoFx(kStatus) GoSystem_SetDataHandler(GoSystem system, GoDataFx function, kPointer receiver);
196 
197 /**
198  * Sets the maximum amount of memory that can be used to buffer received data messages.
199  *
200  * Received data messages are enqueued until they are accepted by the caller. This function
201  * determines the maximum size, in bytes, of enqueued messages. The default maximum size is 50 MB.
202  *
203  * @public @memberof GoSystem
204  * @version Introduced in firmware 4.0.10.27
205  * @param system GoSystem object.
206  * @param capacity Data queue capacity, in bytes.
207  * @return Operation status.
208  * @see GoSystem_DataCapacity
209  */
210 GoFx(kStatus) GoSystem_SetDataCapacity(GoSystem system, kSize capacity);
211 
212 /**
213  * Reports that maximum amount of memory that can be used to buffer received data messages.
214  *
215  * @public @memberof GoSystem
216  * @version Introduced in firmware 4.0.10.27
217  * @param system GoSystem object.
218  * @return Data queue capacity, in bytes.
219  * @see GoSystem_SetDataCapacity
220  */
221 GoFx(kSize) GoSystem_DataCapacity(GoSystem system);
222 
223 /**
224  * Establishes data connections to all connected sensors currently in the <em>ready</em> or <em>running</em> states.
225  *
226  * Data connections are not automatically established when sensor control connection are established.
227  * Use this function (or GoSensor_EnableData) to enable/disable data connections.
228  *
229  * @public @memberof GoSystem
230  * @version Introduced in firmware 4.0.10.27
231  * @param system GoSystem object.
232  * @param enable kTRUE to enable data connections; kFALSE to disable.
233  * @return Operation status.
234  * @see GoSystem_ReceiveData, GoSensor_EnableData
235  */
236 GoFx(kStatus) GoSystem_EnableData(GoSystem system, kBool enable);
237 
238 /**
239  * Clears any buffered data messages.
240  *
241  * When stopping and then restarting a system, it may be desirable to ensure that no messages from
242  * the previous session remain in any buffers. The GoSystem_ClearData function closes any open data
243  * channels, destroys any received messages, and then reopens data channels.
244  *
245  * @public @memberof GoSystem
246  * @version Introduced in firmware 4.0.10.27
247  * @param system GoSystem object.
248  * @return Operation status.
249  */
250 GoFx(kStatus) GoSystem_ClearData(GoSystem system);
251 
252 /**
253  * Receives a set of sensor data messages.
254  *
255  * Sensor data messages can be received synchronously using this function or asynchronously by
256  * registering a callback with the GoSystem_SetDataHandler function.
257  *
258  * NOTE: Data received with this function must be destroyed after use,
259  * otherwise a memory leak will result.
260  *
261  * @public @memberof GoSystem
262  * @version Introduced in firmware 4.0.10.27
263  * @param system GoSystem object.
264  * @param data Set of sensor data messages.
265  * @param timeout Duration to wait for messages, in microseconds.
266  * @return Operation status.
267  * @see GoDestroy, GoSystem_SetDataHandler, GoSystem_SetDataCapacity, GoSystem_EnableData
268  */
269 GoFx(kStatus) GoSystem_ReceiveData(GoSystem system, GoDataSet* data, k64u timeout);
270 
271 /**
272  * Sets a callback function that can be used to receive sensor health messages asynchronously.
273  *
274  * Sensor health messages can be received synchronously using the GoSystem_ReceiveHealth function
275  * or asynchronously by registering a callback function. If a callback function is registered,
276  * a background thread will be created to perform notifications.
277  *
278  * To unregister a previously-registered health handler, call this function using kNULL in place
279  * of the callback function argument.
280  *
281  * @public @memberof GoSystem
282  * @version Introduced in firmware 4.0.10.27
283  * @param system GoSystem object.
284  * @param function Health callback function (or kNULL to unregister).
285  * @param receiver Receiver argument, passed to callback.
286  * @return Operation status.
287  * @see GoDataFx, GoSystem_ReceiveHealth, GoSystem_SetDataCapacity, GoSystem_EnableData
288  */
289 GoFx(kStatus) GoSystem_SetHealthHandler(GoSystem system, GoDataFx function, kPointer receiver);
290 
291 /**
292  * Receives a set of sensor health messages.
293  *
294  * Sensor health messages can be received synchronously using this function or asynchronously by
295  * registering a callback with the GoSystem_SetHealthHandler function.
296  *
297  * @public @memberof GoSystem
298  * @version Introduced in firmware 4.0.10.27
299  * @param system GoSystem object.
300  * @param data Set of sensor health messages.
301  * @param timeout Duration to wait for messages, in microseconds.
302  * @return Operation status.
303  * @see GoSystem_SetHealthHandler
304  */
305 GoFx(kStatus) GoSystem_ReceiveHealth(GoSystem system, GoDataSet* data, k64u timeout);
306 
307 /**
308  * Clears any buffered health messages.
309  *
310  * @public @memberof GoSystem
311  * @version Introduced in firmware 4.0.10.27
312  * @param system GoSystem object.
313  * @return Operation status.
314  */
315 GoFx(kStatus) GoSystem_ClearHealth(GoSystem system);
316 
317 /**
318  * Starts all sensors that are currently in the <em>ready</em> state.
319  *
320  * @public @memberof GoSystem
321  * @version Introduced in firmware 4.0.10.27
322  * @param system GoSystem object.
323  * @return Operation status.
324  * @see GoSystem_Stop, GoSensor_Start, GoSensor_Stop
325  */
326 GoFx(kStatus) GoSystem_Start(GoSystem system);
327 
328 /**
329  * Starts all sensors that are currently in the <em>ready</em> state at a scheduled value.
330  *
331  * @public @memberof GoSystem
332  * @version Introduced in firmware 4.1.3.106
333  * @param system GoSystem object.
334  * @param value The value at which to start the sensor. It is in uS when time triggered and ticks when encoder triggered.
335  * @return Operation status.
336  * @see GoSystem_Stop, GoSensor_ScheduledStart, GoSensor_Stop, GoSetup_SetTriggerSource, GoSetup_TriggerSource
337  */
338 GoFx(kStatus) GoSystem_ScheduledStart(GoSystem system, k64s value);
339 
340 /**
341  * Performs alignment for sensors in the <em>ready</em> state.
342  *
343  * NOTE: This operation will result in sensor starts for the duration of the
344  * alignment. It can be canceled via GoSystem_Stop. This function's operation
345  * status does not correspond to the actual alignment result. In order to
346  * retrieve the alignment result, you must enable the data channel before calling
347  * this function, receive an alignment data message and then check its status.
348  *
349  * @public @memberof GoSystem
350  * @version Introduced in firmware 4.0.10.27
351  * @param system GoSystem object.
352  * @return Operation status.
353  * @see GoSystem_EnableData, GoSystem_ReceiveData, GoSystem_Stop
354  * @remark Calling this function will result in writing operations to flash storage. Should the process be disrupted due to power loss or other factors, the sensor may enter Rescue mode.
355  */
356 GoFx(kStatus) GoSystem_StartAlignment(GoSystem system);
357 
358 /**
359  * Performs exposure auto set for sensors in the <em>ready</em> state.
360  *
361  * NOTE: This operation will result in sensor starts for the duration of the
362  * exposure AutoSet. A successful operation status does NOT modify the configuration.
363  * You must retrieve the resulting exposure values and set it for the appropriate
364  * exposure setting. This involves enabling the data connection prior to running
365  * exposure auto set and then receiving an exposure auto set message, which
366  * you can then use to query the status and access the resulting value.
367  *
368  * @public @memberof GoSystem
369  * @version Introduced in firmware 4.0.10.27
370  * @param system GoSystem object.
371  * @return Operation status.
372  * @see GoSystem_EnableData, GoSystem_ReceiveData
373  */
374 GoFx(kStatus) GoSystem_StartExposureAutoSet(GoSystem system);
375 
376 /**
377  * Stops all connected sensors.
378  *
379  * @public @memberof GoSystem
380  * @version Introduced in firmware 4.0.10.27
381  * @param system GoSystem object.
382  * @return Operation status.
383  * @see GoSystem_Start, GoSensor_Start, GoSensor_Stop
384  */
385 GoFx(kStatus) GoSystem_Stop(GoSystem system);
386 
387 
388 /**
389  * Reboots all connected sensors.
390  *
391  * @public @memberof GoSystem
392  * @version Introduced in firmware 4.0.10.27
393  * @param system GoSystem object.
394  * @param wait kTRUE to wait for reboot complete; kFALSE to return immediately.
395  * @return Operation status.
396  */
397 GoFx(kStatus) GoSystem_Reset(GoSystem system, kBool wait);
398 
399 /**
400  * Aborts ongoing sensor communication.
401  *
402  * This method asynchronously aborts ongoing communication; the next time that any
403  * I/O operation blocks for an extended period of time, it will be terminated. This method
404  * is thread-safe.
405  *
406  * In order to resume communication, call GoSystem_Refresh or GoSystem_Connect.
407  *
408  * @public @memberof GoSystem
409  * @version Introduced in firmware 4.0.10.27
410  * @param system GoSystem object.
411  * @return Operation status.
412  */
413 GoFx(kStatus) GoSystem_Cancel(GoSystem system);
414 
415 /**
416  * Gets the number of sensors in the system.
417  *
418  * @public @memberof GoSystem
419  * @version Introduced in firmware 4.0.10.27
420  * @param system GoSystem object.
421  * @return Count of sensors in the system.
422  * @see GoSystem_SensorAt
423  */
424 GoFx(kSize) GoSystem_SensorCount(GoSystem system);
425 
426 /**
427  * Gets the sensor object at the specified index.
428  *
429  * @public @memberof GoSystem
430  * @version Introduced in firmware 4.0.10.27
431  * @param system GoSystem object.
432  * @param index Sensor index.
433  * @return Sensor object.
434  * @see GoSystem_SensorCount
435  */
436 GoFx(GoSensor) GoSystem_SensorAt(GoSystem system, kSize index);
437 
438 /**
439  * Gets the sensor object with the specified device id (serial number).
440  *
441  * @public @memberof GoSystem
442  * @version Introduced in firmware 4.0.10.27
443  * @param system GoSystem object.
444  * @param id Device identifier.
445  * @param sensor Receives sensor object.
446  * @return Operation status (kERROR_NOT_FOUND if sensor not found).
447  * @see GoSystem_SensorCount, GoSystem_SensorAt
448  */
449 GoFx(kStatus) GoSystem_FindSensorById(GoSystem system, k32u id, GoSensor* sensor);
450 
451 /**
452  * Gets the sensor object with the specified IP address.
453  *
454  * @public @memberof GoSystem
455  * @version Introduced in firmware 4.0.10.27
456  * @param system GoSystem object.
457  * @param address Pointer to sensor IP address.
458  * @param sensor Receives sensor object.
459  * @return Operation status (kERROR_NOT_FOUND if sensor not found).
460  * @see GoSystem_SensorCount, GoSystem_SensorAt
461  */
462 GoFx(kStatus) GoSystem_FindSensorByIpAddress(GoSystem system, const kIpAddress* address, GoSensor* sensor);
463 
464 /**
465  * Gets the current time stamp from the sensor network.
466  *
467  * @public @memberof GoSystem
468  * @version Introduced in firmware 4.0.10.27
469  * @param system GoSystem object.
470  * @param time Receives current time stamp(microseconds).
471  * @return Operation status (kERROR_NOT_FOUND if no sensors available).
472  * @see GoSystem_GetEncoder
473  */
474 GoFx(kStatus) GoSystem_Timestamp(GoSystem system, k64u* time);
475 
476 /**
477  * Gets the current encoder value from the sensor network.
478  *
479  * @public @memberof GoSystem
480  * @version Introduced in firmware 4.0.10.27
481  * @param system GoSystem object.
482  * @param encoder Receives current encoder value (ticks).
483  * @return Operation status (kERROR_NOT_FOUND if no sensors available).
484  * @see GoSystem_GetTime
485  */
486 GoFx(kStatus) GoSystem_Encoder(GoSystem system, k64s* encoder);
487 
488 
489 /// @cond (Gocator_1x00 || Gocator_2x00)
490 
491 /**
492  * Gets the current multiplex bank count.
493  *
494  * @public @memberof GoSystem
495  * @version Introduced in firmware 4.0.10.27
496  * @param system GoSystem object.
497  * @return The current number of defined multiplex banks.
498  */
499 GoFx(kSize) GoSystem_MultiplexBankCount(GoSystem system);
500 
501 /**
502  * Gets a multiplex bank corresponding to the given index.
503  *
504  * @public @memberof GoSystem
505  * @version Introduced in firmware 4.0.10.27
506  * @param system GoSystem object.
507  * @param index The index of the multiplex bank to retrieve.
508  * @return The multiplex bank at the given index or kNULL if an invalid index is given.
509  */
510 GoFx(GoMultiplexBank) GoSystem_MultiplexBankAt(GoSystem system, kSize index);
511 
512 /**
513  * Adds a multiplex bank with a unique ID to the system.
514  *
515  * @public @memberof GoSystem
516  * @version Introduced in firmware 4.0.10.27
517  * @param system GoSystem object.
518  * @param bank A pointer to the newly created GoMultiplexBank object.
519  * @return Operation status.
520  */
521 GoFx(kStatus) GoSystem_AddMultiplexBank(GoSystem system, GoMultiplexBank* bank);
522 
523 /**
524  * Removes a multiplex bank at the given index.
525  *
526  * @public @memberof GoSystem
527  * @version Introduced in firmware 4.0.10.27
528  * @param system GoSystem object.
529  * @param index The index of the multiplex bank to remove.
530  * @return Operation status.
531  */
532 GoFx(kStatus) GoSystem_RemoveMultiplexBank(GoSystem system, kSize index);
533 
534 /**
535  * Removes all multiplex banks.
536  *
537  * @public @memberof GoSystem
538  * @version Introduced in firmware 4.0.10.27
539  * @param system GoSystem object.
540  * @return Operation status.
541  */
542 GoFx(kStatus) GoSystem_ClearMultiplexBanks(GoSystem system);
543 
544 /**
545  * Gets the maximum sensor exposure duration in the given multiplex bank.
546  *
547  * @public @memberof GoSystem
548  * @version Introduced in firmware 4.0.10.27
549  * @param system GoSystem object.
550  * @param bank The multiplex bank to check.
551  * @return The maximum sensor exposure duration contained in the multiplexing bank.
552  */
553 GoFx(k64f) GoSystem_MaxBankExposureDuration(GoSystem system, GoMultiplexBank bank);
554 
555 /**
556  * Automatically update the single multiplexing delay and period configuration for all sensors contained in all defined multiplex banks.
557  *
558  * @public @memberof GoSystem
559  * @version Introduced in firmware 4.0.10.27
560  * @param system GoSystem object.
561  * @param period The exposure period to set among all multiplexed sensors. A value of 0.0 will result in automatic period determination.
562  * @return Operation status.
563  */
564 GoFx(kStatus) GoSystem_UpdateAllMultiplexParameters(GoSystem system, k64f period);
565 
566 /**
567  * Automatically update the multiplexing single delay configuration for all sensors contained in all defined multiplex banks.
568  *
569  * @public @memberof GoSystem
570  * @version Introduced in firmware 4.0.10.27
571  * @param system GoSystem object.
572  * @return Operation status.
573  */
574 GoFx(kStatus) GoSystem_UpdateMultiplexDelay(GoSystem system);
575 
576 /**
577  * Returns the maximum value of all multiplexed sensor's minimum multiplexing periods.
578  *
579  * @public @memberof GoSystem
580  * @version Introduced in firmware 4.0.10.27
581  * @param system GoSystem object.
582  * @return Operation status.
583  */
584 GoFx(k64f) GoSystem_MaxMinimumMultiplexPeriod(GoSystem system);
585 
586 /**
587  * Automatically update the multiplexing single period configuration for all sensors contained in all defined multiplex banks.
588  *
589  * @public @memberof GoSystem
590  * @version Introduced in firmware 4.0.10.27
591  * @param system GoSystem object.
592  * @param period The exposure period to set among all multiplexed sensors. A value of 0.0 will result in automatic period determination.
593  * @return Operation status.
594  */
595 GoFx(kStatus) GoSystem_UpdateMultiplexPeriod(GoSystem system, k64f period);
596 
597 /// @endcond
598 
599 kEndHeader()
600 #include <GoSdk/GoSystem.x.h>
601 
602 #endif
kStatus GoSystem_Disconnect(GoSystem system)
Terminates control connections to all sensors.
Represents a system of Gocator devices.
kStatus GoSystem_EnableData(GoSystem system, kBool enable)
Establishes data connections to all connected sensors currently in the ready or running states...
kStatus GoSystem_Start(GoSystem system)
Starts all sensors that are currently in the ready state.
kStatus GoSystem_UpdateMultiplexPeriod(GoSystem system, k64f period)
Automatically update the multiplexing single period configuration for all sensors contained in all de...
kStatus GoSystem_StartExposureAutoSet(GoSystem system)
Performs exposure auto set for sensors in the ready state.
kStatus GoSystem_Stop(GoSystem system)
Stops all connected sensors.
kStatus GoSystem_ClearData(GoSystem system)
Clears any buffered data messages.
kStatus GoSystem_ReceiveHealth(GoSystem system, GoDataSet *data, k64u timeout)
Receives a set of sensor health messages.
kStatus GoSystem_ReceiveData(GoSystem system, GoDataSet *data, k64u timeout)
Receives a set of sensor data messages.
kStatus GoSystem_Reset(GoSystem system, kBool wait)
Reboots all connected sensors.
kStatus GoSystem_ClearHealth(GoSystem system)
Clears any buffered health messages.
kStatus GoSystem_StartAlignment(GoSystem system)
Performs alignment for sensors in the ready state.
GoSensor GoSystem_SensorAt(GoSystem system, kSize index)
Gets the sensor object at the specified index.
Declares the GoSensor class.
GoMultiplexBank GoSystem_MultiplexBankAt(GoSystem system, kSize index)
Gets a multiplex bank corresponding to the given index.
k64f GoSystem_MaxMinimumMultiplexPeriod(GoSystem system)
Returns the maximum value of all multiplexed sensor's minimum multiplexing periods.
Represents a bank of related sensors to be used in multiplexing.
kVersion GoSystem_SdkVersion()
Reports the Gocator firmware version that was built alongside this library.
kStatus GoSystem_ClearMultiplexBanks(GoSystem system)
Removes all multiplex banks.
Essential SDK declarations.
kStatus GoSystem_Cancel(GoSystem system)
Aborts ongoing sensor communication.
kBool GoSystem_HasChanges(GoSystem system)
Reports whether the system has changes that require a refresh.
Represents a collection of data channel or health channel messages.
kStatus GoSystem_ScheduledStart(GoSystem system, k64s value)
Starts all sensors that are currently in the ready state at a scheduled value.
kSize GoSystem_SensorCount(GoSystem system)
Gets the number of sensors in the system.
kSize GoSystem_MultiplexBankCount(GoSystem system)
Gets the current multiplex bank count.
kStatus GoSystem_RemoveMultiplexBank(GoSystem system, kSize index)
Removes a multiplex bank at the given index.
kVersion GoSystem_ProtocolVersion()
Reports the Gocator Protocol version implemented by this library.
kStatus GoSystem_SetHealthHandler(GoSystem system, GoDataFx function, kPointer receiver)
Sets a callback function that can be used to receive sensor health messages asynchronously.
kStatus GoSystem_UpdateAllMultiplexParameters(GoSystem system, k64f period)
Automatically update the single multiplexing delay and period configuration for all sensors contained...
kStatus(kCall * GoDataFx)(kPointer context, GoSensor system, GoDataSet data)
Defines the signature for a GoSystem data/health handler.
Definition: GoSystem.h:53
kStatus GoSystem_SetDataCapacity(GoSystem system, kSize capacity)
Sets the maximum amount of memory that can be used to buffer received data messages.
kStatus GoSystem_Construct(GoSystem *system, kAlloc allocator)
Constructs a GoSystem object.
Declares the GoMultiplexBank class.
kStatus GoSystem_FindSensorById(GoSystem system, k32u id, GoSensor *sensor)
Gets the sensor object with the specified device id (serial number).
kSize GoSystem_DataCapacity(GoSystem system)
Reports that maximum amount of memory that can be used to buffer received data messages.
kStatus GoSystem_AddMultiplexBank(GoSystem system, GoMultiplexBank *bank)
Adds a multiplex bank with a unique ID to the system.
kStatus GoSystem_FindSensorByIpAddress(GoSystem system, const kIpAddress *address, GoSensor *sensor)
Gets the sensor object with the specified IP address.
k64f GoSystem_MaxBankExposureDuration(GoSystem system, GoMultiplexBank bank)
Gets the maximum sensor exposure duration in the given multiplex bank.
kStatus GoSystem_Encoder(GoSystem system, k64s *encoder)
Gets the current encoder value from the sensor network.
kStatus GoSystem_Timestamp(GoSystem system, k64u *time)
Gets the current time stamp from the sensor network.
Represents a Gocator sensor.
kStatus GoSystem_Refresh(GoSystem system)
Updates client state to reflect any changes that have occurred in the sensor network.
kStatus GoSystem_SetDataHandler(GoSystem system, GoDataFx function, kPointer receiver)
Sets a callback function that can be used to receive sensor data messages asynchronously.
kStatus GoSystem_Connect(GoSystem system)
Establishes control connections to all sensors.
kStatus GoSystem_UpdateMultiplexDelay(GoSystem system)
Automatically update the multiplexing single delay configuration for all sensors contained in all def...