Chirp SonicLib  4.5.2
icu_gpt.h
Go to the documentation of this file.
1 
13 /*
14  Copyright 2016-2023, InvenSense, Inc. All rights reserved.
15 
16  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  DISCLAIMED.
20 
21  */
22 
23 #ifndef ICU_GPT_H_
24 #define ICU_GPT_H_
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 #include <stdint.h>
32 #include <invn/icu_interface/ch-rangefinder/structs.h>
34 #include <invn/soniclib/soniclib.h>
35 
36 #define ICU_GPT_MAX_SAMPLES (IQ_SAMPLES_MAX)
37 #define ICU_GPT_NUM_THRESHOLDS (LEN_THRESH)
38 
39 #define CH_THRESH_LEVEL_HOLDOFF (40000)
40 
42 typedef struct {
43  uint16_t ringdown_cancel_samples;
44  uint16_t static_filter_samples;
45  ch_output_type_t iq_output_format; // normal (Q,I) pairs, threshold/amp pairs, or 16-bit amp
46  uint8_t num_ranges;
47  uint8_t filter_update_interval; // update the ringdown and STR filters every N+1 samples (0=every time, 1=every
48  // 2nd...
50 
51 extern const char *icu_gpt_version; // version string in fw .c file
52 extern const uint8_t icu_gpt_fw_text[];
53 extern const uint8_t icu_gpt_fw_vec[];
54 extern const uint16_t icu_gpt_text_size;
55 extern const uint16_t icu_gpt_vec_size;
56 
57 uint16_t get_icu_gpt_fw_ram_init_addr(void);
58 uint16_t get_icu_gpt_fw_ram_init_size(void);
59 
60 const unsigned char *get_ram_icu_gpt_init_ptr(void);
61 
68 uint8_t icu_gpt_init(ch_dev_t *dev_ptr, fw_info_t **fw_info);
69 
78 uint8_t icu_gpt_algo_init(ch_dev_t *dev_ptr, InvnAlgoRangeFinderConfig *algo_cfg);
79 
101 uint8_t icu_gpt_algo_configure(ch_dev_t *dev_ptr, uint8_t meas_num, const icu_gpt_algo_config_t *algo_config_ptr,
102  const ch_thresholds_t *lib_thresh_ptr);
103 
110 void icu_gpt_algo_reset(ch_dev_t *dev_ptr, uint8_t meas_num);
111 
125 ch_output_type_t icu_gpt_algo_get_iq_output(ch_dev_t *dev_ptr, uint8_t meas_num);
126 
143 uint8_t icu_gpt_algo_set_iq_output(ch_dev_t *dev_ptr, uint8_t meas_num, ch_output_type_t output_format);
144 
154 void icu_gpt_algo_update_odr(ch_dev_t *dev_ptr, uint8_t meas_num, ch_odr_t new_odr);
155 
169 uint8_t icu_gpt_algo_get_num_targets(ch_dev_t *dev_ptr);
170 
188 uint16_t icu_gpt_algo_get_target_amplitude(ch_dev_t *dev_ptr, uint8_t target_num);
189 
212 uint32_t icu_gpt_algo_get_target_tof_us(ch_dev_t *dev_ptr, uint8_t target_num);
213 
241 uint32_t icu_gpt_algo_get_target_range(ch_dev_t *dev_ptr, uint8_t target_num, ch_range_t range_type);
242 
275 uint8_t icu_gpt_algo_set_data_output(ch_dev_t *dev_ptr, const ch_output_t *output_ptr);
276 
285 
294 
317 uint8_t icu_gpt_set_num_ranges(ch_dev_t *dev_ptr, uint8_t meas_num, uint8_t num_ranges);
318 
329 uint8_t icu_gpt_get_num_ranges(ch_dev_t *dev_ptr, uint8_t meas_num);
330 
356 uint8_t icu_gpt_set_ringdown_cancel(ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t num_samples);
357 
372 uint16_t icu_gpt_get_ringdown_cancel(ch_dev_t *dev_ptr, uint8_t meas_num);
373 
405 uint8_t icu_gpt_set_thresholds(ch_dev_t *dev_ptr, uint8_t meas_num, const ch_thresholds_t *lib_thresh_buf_ptr);
406 
429 uint8_t icu_gpt_get_thresholds(ch_dev_t *dev_ptr, uint8_t meas_num, ch_thresholds_t *lib_thresh_buf_ptr);
430 
453 uint8_t icu_gpt_set_static_filter(ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t num_samples);
454 
476 uint16_t icu_gpt_get_static_filter(ch_dev_t *dev_ptr, uint8_t meas_num);
477 
499 uint8_t icu_gpt_set_rx_holdoff(ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t num_samples);
500 
520 uint16_t icu_gpt_get_rx_holdoff(ch_dev_t *dev_ptr, uint8_t meas_num);
521 
538 uint8_t icu_gpt_set_filter_update(ch_dev_t *dev_ptr, uint8_t meas_num, uint8_t update_interval);
539 
554 uint8_t icu_gpt_get_filter_update(ch_dev_t *dev_ptr, uint8_t meas_num);
555 
556 #ifdef __cplusplus
557 }
558 #endif
559 
560 #endif /* ICU_GPT_H_ */
Internal driver types for operation with the Chirp ultrasonic sensor.
Internal definitions for TDK/Chirp ICU ultrasonic sensors.
void icu_gpt_algo_reset(ch_dev_t *dev_ptr, uint8_t meas_num)
Reset GPT Algorithm configuration.
Definition: icu_gpt.c:296
ch_output_type_t icu_gpt_algo_get_iq_output(ch_dev_t *dev_ptr, uint8_t meas_num)
Get the I/Q data output format of GPT Algorithm.
Definition: icu_gpt.c:318
uint8_t icu_gpt_set_rx_holdoff(ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t num_samples)
Set the receive holdoff sample count for a specific measurement.
Definition: icu_gpt.c:622
void icu_gpt_algo_update_odr(ch_dev_t *dev_ptr, uint8_t meas_num, ch_odr_t new_odr)
Update algo ODR.
Definition: icu_gpt.c:441
uint8_t icu_gpt_set_thresholds(ch_dev_t *dev_ptr, uint8_t meas_num, const ch_thresholds_t *lib_thresh_buf_ptr)
Set detection thresholds for a specific measurement.
Definition: icu_gpt.c:579
uint16_t icu_gpt_algo_get_target_amplitude(ch_dev_t *dev_ptr, uint8_t target_num)
Get the amplitude for a specific target detected in last measurement.
Definition: icu_gpt.c:350
uint8_t icu_gpt_algo_configure(ch_dev_t *dev_ptr, uint8_t meas_num, const icu_gpt_algo_config_t *algo_config_ptr, const ch_thresholds_t *lib_thresh_ptr)
Configure GPT Algorithm.
Definition: icu_gpt.c:275
uint16_t icu_gpt_get_static_filter(ch_dev_t *dev_ptr, uint8_t meas_num)
Get the number of static target filter samples for a measurement.
Definition: icu_gpt.c:716
uint8_t icu_gpt_algo_set_iq_output(ch_dev_t *dev_ptr, uint8_t meas_num, ch_output_type_t output_format)
Set the I/Q data output format of GPT Algorithm.
Definition: icu_gpt.c:326
uint16_t icu_gpt_get_rx_holdoff(ch_dev_t *dev_ptr, uint8_t meas_num)
Get the receive holdoff sample count for a specific measurement.
Definition: icu_gpt.c:683
uint8_t icu_gpt_algo_is_target_in_ringdown(ch_dev_t *dev_ptr)
Return if a target is detected near sensor (in the ringdown)
Definition: icu_gpt.c:517
uint8_t icu_gpt_get_thresholds(ch_dev_t *dev_ptr, uint8_t meas_num, ch_thresholds_t *lib_thresh_buf_ptr)
Get detection thresholds for a specific measurement.
Definition: icu_gpt.c:601
uint32_t icu_gpt_algo_get_target_range(ch_dev_t *dev_ptr, uint8_t target_num, ch_range_t range_type)
Get the range to a specific target detected in last measurement.
Definition: icu_gpt.c:366
uint8_t icu_gpt_set_num_ranges(ch_dev_t *dev_ptr, uint8_t meas_num, uint8_t num_ranges)
Set the max number of reported target ranges for a measurement.
Definition: icu_gpt.c:569
uint8_t icu_gpt_get_num_ranges(ch_dev_t *dev_ptr, uint8_t meas_num)
Get the max number of reported target ranges for a measurement.
Definition: icu_gpt.c:575
uint8_t icu_gpt_display_algo_thresholds(ch_dev_t *dev_ptr)
Display GPT thresholds for debug purpose.
uint16_t icu_gpt_get_ringdown_cancel(ch_dev_t *dev_ptr, uint8_t meas_num)
Get the number of ringdown cancellation samples for a measurement.
Definition: icu_gpt.c:706
uint8_t icu_gpt_init(ch_dev_t *dev_ptr, fw_info_t **fw_info)
Initialize GPT FW.
Definition: icu_gpt.c:249
uint8_t icu_gpt_algo_set_data_output(ch_dev_t *dev_ptr, const ch_output_t *output_ptr)
Set data output format and rate.
Definition: icu_gpt.c:468
uint8_t icu_gpt_set_ringdown_cancel(ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t num_samples)
Set the number of ringdown cancellation samples for a measurement.
Definition: icu_gpt.c:700
uint8_t icu_gpt_algo_get_num_targets(ch_dev_t *dev_ptr)
Get the number of targets detected in last measurement.
Definition: icu_gpt.c:338
uint8_t icu_gpt_set_static_filter(ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t num_samples)
Set the number of static target filter samples for a measurement.
Definition: icu_gpt.c:710
uint8_t icu_gpt_get_filter_update(ch_dev_t *dev_ptr, uint8_t meas_num)
Get the filter update interval for a measurement.
Definition: icu_gpt.c:726
uint8_t icu_gpt_set_filter_update(ch_dev_t *dev_ptr, uint8_t meas_num, uint8_t update_interval)
Set the filter update interval for a measurement.
Definition: icu_gpt.c:720
uint8_t icu_gpt_algo_init(ch_dev_t *dev_ptr, InvnAlgoRangeFinderConfig *algo_cfg)
Initialize GPT Algorithm.
Definition: icu_gpt.c:267
uint32_t icu_gpt_algo_get_target_tof_us(ch_dev_t *dev_ptr, uint8_t target_num)
Get the measured time-of-flight for a specific target in microseconds.
Definition: icu_gpt.c:413
SonicLib public API and support functions for TDK/InvenSense ultrasonic sensors (originally developed...
ch_range_t
Range data types.
Definition: soniclib.h:218
ch_output_type_t
Output type.
Definition: soniclib.h:308
ch_odr_t
Sensor output data rate (ODR).
Definition: soniclib.h:339
Chirp sensor device descriptor structure.
Definition: soniclib.h:732
Data output structure.
Definition: soniclib.h:464
Multiple detection threshold structure.
Definition: ch_rangefinder_types.h:42
Definition: soniclib.h:658
Algorithm configuration.
Definition: icu_gpt.h:42