AFBR-S50 API Reference Manual  v1.6.5
AFBR-S50 Time-of-Flight Sensor SDK for Embedded Software
argus_def.h
Go to the documentation of this file.
1 /*************************************************************************/
38 #ifndef ARGUS_DEF_H
39 #define ARGUS_DEF_H
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43 
44 /*!***************************************************************************
45  * Include files
46  *****************************************************************************/
47 #include "argus_status.h"
48 #include "argus_version.h"
49 #include "utility/fp_def.h"
50 #include "utility/time.h"
51 #include <assert.h>
52 #include <stdbool.h>
53 #include <stddef.h>
54 #include <stdint.h>
55 #include <string.h>
56 
57 /*!***************************************************************************
58  * @addtogroup argus_api
59  * @{
60  *****************************************************************************/
61 
62 /*!***************************************************************************
63  * @brief Maximum number of phases per measurement cycle.
64  * @details The actual phase number is defined in the register configuration.
65  * However the software does only support a fixed value of 4 yet.
66  *****************************************************************************/
67 #define ARGUS_PHASECOUNT 4
68 
69 /*!***************************************************************************
70  * @brief The device pixel field size in x direction (long edge).
71  *****************************************************************************/
72 #define ARGUS_PIXELS_X 8
73 
74 /*!***************************************************************************
75  * @brief The device pixel field size in y direction (short edge).
76  *****************************************************************************/
77 #define ARGUS_PIXELS_Y 4
78 
79 /*!***************************************************************************
80  * @brief The total device pixel count.
81  *****************************************************************************/
82 #define ARGUS_PIXELS ((ARGUS_PIXELS_X)*(ARGUS_PIXELS_Y))
83 
84 /*!***************************************************************************
85  * @brief A flag indicating that the device is a extended range device.
86  *****************************************************************************/
87 #define MODULE_EXTENDED_FLAG (0x40U)
88 
89 /*!***************************************************************************
90  * @brief The AFBR-S50 module types.
91  *****************************************************************************/
93 {
96 
102 
108 
114 
120 
126 
132 
138 
144 
150 
156 
162 
168 
170 
171 /*!***************************************************************************
172  * @brief The AFBR-S50 laser configurations.
173  *****************************************************************************/
174 typedef enum argus_laser_type_t
175 {
178 
181 
184 
187 
190 
193 
195 
196 /*!***************************************************************************
197  * @brief The AFBR-S50 chip versions.
198  *****************************************************************************/
200 {
203 
206 
209 
212 
215 
218 
220 
221 /*!***************************************************************************
222  * @brief The measurement mode flags.
223  * @details The measurement mode flags that can be combined to a measurement
224  * mode, e.g. high speed short range mode. See #argus_mode_t for
225  * a complete list of available measurement modes.
226  *
227  * - Bit 0: Short Range Mode
228  * - Bit 1: Long Range Mode
229  * - Bit 2: High Speed Mode
230  * - Bit 3: High Precision Mode
231  * - Bit 7: Laser Class 2 Mode
232  *
233  * Note that the Long and Short Range Flags are mutual exclusive but
234  * any of those 2 must be set. Thus the value 0 is invalid!
235  *
236  * All other flags enhance the base configurations, e.g.
237  * - the High Speed flag create the high speed mode,
238  * - the High Precision flag create the high precision mode and
239  * - the Laser Class 2 flag extends the laser output to laser class 2
240  * of the selected base measurement mode.
241  *****************************************************************************/
242 typedef enum argus_mode_flags_t
243 {
246 
249 
252 
255 
258 
260 
261 /*!***************************************************************************
262  * @brief The measurement modes.
263  * @details The measurement modes are composed in binary from of the flags
264  * define in #argus_mode_flags_t, i.e. each bit has a special meaning:
265  *
266  * - Bit 0: Short Range Mode
267  * - Bit 1: Long Range Mode
268  * - Bit 2: High Speed Mode
269  * - Bit 3: High Precision Mode (Short Range Mode only)
270  * - Bit 7: Laser Class 2 (Type-B devices only)
271  *
272  * Note that the Long and Short Range Bits are mutual exclusive but any
273  * of those 2 must be set. Thus the value 0 is invalid!
274  *****************************************************************************/
275 typedef enum argus_mode_t
276 {
280 
284 
288 
292 
296 
300 
304 
308 
312 
316 
317 } argus_mode_t;
318 
320 typedef struct argus_hnd_t argus_hnd_t;
321 
322 /*!***************************************************************************
323  * @brief Measurement Ready API callback function.
324  *
325  * @details Invoked by the API whenever a measurement cycle is finished and
326  * new data is ready to be evaluated via the #Argus_EvaluateData API
327  * function.
328  * The callback is passed to the API via the #Argus_TriggerMeasurement
329  * or #Argus_StartMeasurementTimer API functions.
330  * The API passes the status of the currently finished measurement
331  * cycle to the callback as first parameters. The second parameter is
332  * a pointer the API handle structure. The latter is used to identify
333  * the calling instance of the API in case of multiple devices.
334  * Further it can be passed to the #Argus_EvaluateData function.
335  *
336  * @warning Since the callback is called from an interrupt context, the
337  * callback execution must return as fast as possible. The usual task
338  * in the callback is to post an event to the main thread to inform it
339  * about the new data and that is must call the #Argus_EvaluateData
340  * function.
341  *
342  * @param status The module status that caused the callback. #STATUS_OK if
343  * everything was as expected.
344  *
345  * @param hnd The API handle pointer to the calling instance. Identifies the
346  * instance of the API that was invoking the callback and thus the
347  * instance that must call the #Argus_EvaluateData for.
348  *
349  * @return Returns the \link #status_t status\endlink (#STATUS_OK on success).
350  *****************************************************************************/
352 
354 #ifdef __cplusplus
355 } // extern "C"
356 #endif
357 #endif /* ARGUS_DEF_H */
ARGUS_MODE_HIGH_SPEED_LONG_RANGE_LASER_CLASS_2
@ ARGUS_MODE_HIGH_SPEED_LONG_RANGE_LASER_CLASS_2
Definition: argus_def.h:310
AFBR_S50SV85K_V1
@ AFBR_S50SV85K_V1
Definition: argus_def.h:131
argus_mode_t
argus_mode_t
The measurement modes.
Definition: argus_def.h:275
hnd
argus_hnd_t * hnd
Definition: main.c:100
LASER_H_V1
@ LASER_H_V1
Definition: argus_def.h:180
ADS0032_V1A
@ ADS0032_V1A
Definition: argus_def.h:205
ADS0032_V1D
@ ADS0032_V1D
Definition: argus_def.h:214
argus_status.h
This file is part of the AFBR-S50 API.
AFBR_S50MV85G_V2
@ AFBR_S50MV85G_V2
Definition: argus_def.h:107
ADS0032_NONE
@ ADS0032_NONE
Definition: argus_def.h:202
ARGUS_MODE_HIGH_PRECISION_SHORT_RANGE
@ ARGUS_MODE_HIGH_PRECISION_SHORT_RANGE
Definition: argus_def.h:294
ARGUS_MODE_SHORT_RANGE_LASER_CLASS_2
@ ARGUS_MODE_SHORT_RANGE_LASER_CLASS_2
Definition: argus_def.h:298
ADS0032_V1E
@ ADS0032_V1E
Definition: argus_def.h:217
ADS0032_V1B
@ ADS0032_V1B
Definition: argus_def.h:208
ARGUS_MODE_HIGH_SPEED_SHORT_RANGE
@ ARGUS_MODE_HIGH_SPEED_SHORT_RANGE
Definition: argus_def.h:286
ARGUS_MODE_SHORT_RANGE
@ ARGUS_MODE_SHORT_RANGE
Definition: argus_def.h:278
AFBR_S50SX85K_V1
@ AFBR_S50SX85K_V1
Definition: argus_def.h:161
MODULE_EXTENDED_FLAG
#define MODULE_EXTENDED_FLAG
A flag indicating that the device is a extended range device.
Definition: argus_def.h:87
argus_chip_version_t
argus_chip_version_t
The AFBR-S50 chip versions.
Definition: argus_def.h:199
ARGUS_MODE_FLAG_LASER_CLASS_2
@ ARGUS_MODE_FLAG_LASER_CLASS_2
Definition: argus_def.h:257
AFBR_S50MV68B_V1
@ AFBR_S50MV68B_V1
Definition: argus_def.h:119
argus_hnd_t
struct argus_hnd_t argus_hnd_t
Definition: argus_def.h:320
LASER_R_V1
@ LASER_R_V1
Definition: argus_def.h:186
ARGUS_MODE_FLAG_SHORT_RANGE
@ ARGUS_MODE_FLAG_SHORT_RANGE
Definition: argus_def.h:245
AFBR_S50LX85D_V1
@ AFBR_S50LX85D_V1
Definition: argus_def.h:143
AFBR_S50MV85G_V3
@ AFBR_S50MV85G_V3
Definition: argus_def.h:137
ARGUS_MODE_LONG_RANGE
@ ARGUS_MODE_LONG_RANGE
Definition: argus_def.h:282
time.h
This file is part of the AFBR-S50 API.
LASER_H_V2X
@ LASER_H_V2X
Definition: argus_def.h:189
AFBR_S50MV85G_V1
@ AFBR_S50MV85G_V1
Definition: argus_def.h:101
argus_measurement_ready_callback_t
status_t(* argus_measurement_ready_callback_t)(status_t status, argus_hnd_t *hnd)
Measurement Ready API callback function.
Definition: argus_def.h:351
LASER_H_V2
@ LASER_H_V2
Definition: argus_def.h:183
AFBR_S50LV85D_V1
@ AFBR_S50LV85D_V1
Definition: argus_def.h:113
fp_def.h
This file is part of the AFBR-S50 API.
ARGUS_MODE_HIGH_PRECISION_SHORT_RANGE_LASER_CLASS_2
@ ARGUS_MODE_HIGH_PRECISION_SHORT_RANGE_LASER_CLASS_2
Definition: argus_def.h:314
ARGUS_MODE_LONG_RANGE_LASER_CLASS_2
@ ARGUS_MODE_LONG_RANGE_LASER_CLASS_2
Definition: argus_def.h:302
argus_version.h
This file is part of the AFBR-S50 API.
ARGUS_MODE_FLAG_HIGH_PRECISION
@ ARGUS_MODE_FLAG_HIGH_PRECISION
Definition: argus_def.h:254
LASER_R_V1X
@ LASER_R_V1X
Definition: argus_def.h:192
ARGUS_MODE_HIGH_SPEED_LONG_RANGE
@ ARGUS_MODE_HIGH_SPEED_LONG_RANGE
Definition: argus_def.h:290
MODULE_NONE
@ MODULE_NONE
Definition: argus_def.h:95
argus_module_version_t
argus_module_version_t
The AFBR-S50 module types.
Definition: argus_def.h:92
ADS0032_V1C
@ ADS0032_V1C
Definition: argus_def.h:211
AFBR_S50MX85G_V1
@ AFBR_S50MX85G_V1
Definition: argus_def.h:167
ARGUS_MODE_FLAG_HIGH_SPEED
@ ARGUS_MODE_FLAG_HIGH_SPEED
Definition: argus_def.h:251
AFBR_S50MX85I_V1
@ AFBR_S50MX85I_V1
Definition: argus_def.h:155
LASER_NONE
@ LASER_NONE
Definition: argus_def.h:177
status
static status_t status
Definition: argus_xtalk_cal_cli.c:140
AFBR_S50MX68B_V1
@ AFBR_S50MX68B_V1
Definition: argus_def.h:149
status_t
int32_t status_t
Type used for all status and error return values.
Definition: argus_status.h:70
argus_mode_flags_t
argus_mode_flags_t
The measurement mode flags.
Definition: argus_def.h:242
ARGUS_MODE_FLAG_LONG_RANGE
@ ARGUS_MODE_FLAG_LONG_RANGE
Definition: argus_def.h:248
argus_laser_type_t
argus_laser_type_t
The AFBR-S50 laser configurations.
Definition: argus_def.h:174
AFBR_S50MV85I_V1
@ AFBR_S50MV85I_V1
Definition: argus_def.h:125
ARGUS_MODE_HIGH_SPEED_SHORT_RANGE_LASER_CLASS_2
@ ARGUS_MODE_HIGH_SPEED_SHORT_RANGE_LASER_CLASS_2
Definition: argus_def.h:306