vlx lib

Committer:
vijaynvr
Date:
Sun Feb 08 14:26:51 2015 +0000
Revision:
0:bc9f26b5dadf
working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vijaynvr 0:bc9f26b5dadf 1 /*******************************************************************************
vijaynvr 0:bc9f26b5dadf 2 ################################################################################
vijaynvr 0:bc9f26b5dadf 3 # (C) STMicroelectronics 2014
vijaynvr 0:bc9f26b5dadf 4 #
vijaynvr 0:bc9f26b5dadf 5 # This program is free software; you can redistribute it and/or modify it under
vijaynvr 0:bc9f26b5dadf 6 # the terms of the GNU General Public License version 2 and only version 2 as
vijaynvr 0:bc9f26b5dadf 7 # published by the Free Software Foundation.
vijaynvr 0:bc9f26b5dadf 8 #
vijaynvr 0:bc9f26b5dadf 9 # This program is distributed in the hope that it will be useful, but WITHOUT
vijaynvr 0:bc9f26b5dadf 10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
vijaynvr 0:bc9f26b5dadf 11 # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
vijaynvr 0:bc9f26b5dadf 12 # details.
vijaynvr 0:bc9f26b5dadf 13 #
vijaynvr 0:bc9f26b5dadf 14 # You should have received a copy of the GNU General Public License along with
vijaynvr 0:bc9f26b5dadf 15 # this program; if not, write to the Free Software Foundation, Inc.,
vijaynvr 0:bc9f26b5dadf 16 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
vijaynvr 0:bc9f26b5dadf 17 #
vijaynvr 0:bc9f26b5dadf 18 #------------------------------------------------------------------------------
vijaynvr 0:bc9f26b5dadf 19 # Imaging Division
vijaynvr 0:bc9f26b5dadf 20 ################################################################################
vijaynvr 0:bc9f26b5dadf 21 ********************************************************************************/
vijaynvr 0:bc9f26b5dadf 22
vijaynvr 0:bc9f26b5dadf 23 /*!
vijaynvr 0:bc9f26b5dadf 24 *\file ranging_driver.h
vijaynvr 0:bc9f26b5dadf 25 *\brief Application-level functions used for configuration and operation during ranging.
vijaynvr 0:bc9f26b5dadf 26 */
vijaynvr 0:bc9f26b5dadf 27
vijaynvr 0:bc9f26b5dadf 28 #ifndef RANGING_DRIVER
vijaynvr 0:bc9f26b5dadf 29 #define RANGING_DRIVER
vijaynvr 0:bc9f26b5dadf 30
vijaynvr 0:bc9f26b5dadf 31 #include "common_driver.h"
vijaynvr 0:bc9f26b5dadf 32
vijaynvr 0:bc9f26b5dadf 33 //-----------------------------------------------------------------------------
vijaynvr 0:bc9f26b5dadf 34 // constant definitions
vijaynvr 0:bc9f26b5dadf 35 //-----------------------------------------------------------------------------
vijaynvr 0:bc9f26b5dadf 36
vijaynvr 0:bc9f26b5dadf 37 #define ECE_FACTOR (85/100) //0.85
vijaynvr 0:bc9f26b5dadf 38 #define ECE_FACTOR_M 85 //ECE factor Molecular
vijaynvr 0:bc9f26b5dadf 39 #define ECE_FACTOR_D 100 //ECE factor Denominator
vijaynvr 0:bc9f26b5dadf 40
vijaynvr 0:bc9f26b5dadf 41 // register addresses
vijaynvr 0:bc9f26b5dadf 42 #define SYSRANGE_START 0x18
vijaynvr 0:bc9f26b5dadf 43 #define SYSRANGE_THRESH_HIGH 0x19
vijaynvr 0:bc9f26b5dadf 44 #define SYSRANGE_THRESH_LOW 0x1A
vijaynvr 0:bc9f26b5dadf 45 #define SYSRANGE_INTERMEASUREMENT_PERIOD 0x1B
vijaynvr 0:bc9f26b5dadf 46 #define SYSRANGE_MAX_CONVERGENCE_TIME 0x1C
vijaynvr 0:bc9f26b5dadf 47 #define SYSRANGE_CROSSTALK_COMPENSATION_RATE 0x1E
vijaynvr 0:bc9f26b5dadf 48 #define SYSRANGE_CROSSTALK_COMPENSATION_RANGE 0x20
vijaynvr 0:bc9f26b5dadf 49 #define SYSRANGE_CROSSTALK_VALID_HEIGHT 0x21
vijaynvr 0:bc9f26b5dadf 50 #define SYSRANGE_EARLY_CONVERGENCE_ESTIMATE 0x22
vijaynvr 0:bc9f26b5dadf 51 #define SYSRANGE_PART_TO_PART_RANGE_OFFSET 0x24
vijaynvr 0:bc9f26b5dadf 52 #define SYSRANGE_RANGE_IGNORE_VALID_HEIGHT 0x25
vijaynvr 0:bc9f26b5dadf 53 #define SYSRANGE_RANGE_IGNORE_THRESHOLD 0x26
vijaynvr 0:bc9f26b5dadf 54 #define SYSRANGE_EMITTER_BLOCK_THRESHOLD 0x28
vijaynvr 0:bc9f26b5dadf 55 #define SYSRANGE_MAX_AMBIENT_LEVEL_THRESH 0x2A
vijaynvr 0:bc9f26b5dadf 56 #define SYSRANGE_MAX_AMBIENT_LEVEL_MULT 0x2C
vijaynvr 0:bc9f26b5dadf 57 #define SYSRANGE_RANGE_CHECK_ENABLES 0x2D
vijaynvr 0:bc9f26b5dadf 58 #define SYSRANGE_VHV_RECALIBRATE 0x2E
vijaynvr 0:bc9f26b5dadf 59 #define SYSRANGE_VHV_REPEAT_RATE 0x31
vijaynvr 0:bc9f26b5dadf 60
vijaynvr 0:bc9f26b5dadf 61 #define RESULT_RANGE_STATUS 0x4D
vijaynvr 0:bc9f26b5dadf 62 #define RESULT_RANGE_VAL 0x62
vijaynvr 0:bc9f26b5dadf 63 #define RESULT_RANGE_SIGNAL_RATE 0x66
vijaynvr 0:bc9f26b5dadf 64
vijaynvr 0:bc9f26b5dadf 65 // SYSRANGE_START
vijaynvr 0:bc9f26b5dadf 66 #define RANGE_START_SINGLESHOT 0x01 // bit 0 set / bit 1 clear
vijaynvr 0:bc9f26b5dadf 67 #define RANGE_START_CONTINUOUS 0x03 // bit 0 set / bit 1 set
vijaynvr 0:bc9f26b5dadf 68 #define RANGE_CONTINUOUS_MODE 0x02 // bit 0 clear / bit 1 set
vijaynvr 0:bc9f26b5dadf 69 #define RANGE_STOP 0x00 // bit 0 set / bit 1 don't care
vijaynvr 0:bc9f26b5dadf 70
vijaynvr 0:bc9f26b5dadf 71 // RESULT_RANGE_STATUS bit masks
vijaynvr 0:bc9f26b5dadf 72 #define RANGE_DEVICE_READY 0x01
vijaynvr 0:bc9f26b5dadf 73 #define RANGE_ERROR_CODE 0xF0 // covers bits [7:4]
vijaynvr 0:bc9f26b5dadf 74
vijaynvr 0:bc9f26b5dadf 75 // SYSRANGE_RANGE_CHECK_ENABLES bit masks
vijaynvr 0:bc9f26b5dadf 76 #define RANGE_EARLY_CONVERGENCE_ENABLE 0x01
vijaynvr 0:bc9f26b5dadf 77 #define RANGE_EARLY_CONVERGENCE_DISABLE 0xFE
vijaynvr 0:bc9f26b5dadf 78 #define RANGE_RANGE_IGNORE_ENABLE 0x02
vijaynvr 0:bc9f26b5dadf 79 #define RANGE_RANGE_IGNORE_DISABLE 0xFD
vijaynvr 0:bc9f26b5dadf 80 #define RANGE_MAX_AMBIENT_ENABLE 0x04
vijaynvr 0:bc9f26b5dadf 81 #define RANGE_MAX_AMBIENT_DISABLE 0xFB
vijaynvr 0:bc9f26b5dadf 82 #define RANGE_EMITTER_BLOCK_ENABLE 0x08
vijaynvr 0:bc9f26b5dadf 83 #define RANGE_EMITTER_BLOCK_DISABLE 0xF7
vijaynvr 0:bc9f26b5dadf 84 #define RANGE_SIGNAL_TO_NOISE_ENABLE 0x10
vijaynvr 0:bc9f26b5dadf 85 #define RANGE_SIGNAL_TO_NOISE_DISABLE 0xEF
vijaynvr 0:bc9f26b5dadf 86
vijaynvr 0:bc9f26b5dadf 87 #define USER_CONV_CTRL_RETURN_THRESHOLD_FINE 0xB8
vijaynvr 0:bc9f26b5dadf 88
vijaynvr 0:bc9f26b5dadf 89 #define VERNIER_MEASUREMENTS 0x0109
vijaynvr 0:bc9f26b5dadf 90 #define VERNIER_RIPPLE_AVE_SAMPLE_PERIOD 0x010A
vijaynvr 0:bc9f26b5dadf 91
vijaynvr 0:bc9f26b5dadf 92
vijaynvr 0:bc9f26b5dadf 93 /**
vijaynvr 0:bc9f26b5dadf 94 * @brief This data type defines range measurement data.
vijaynvr 0:bc9f26b5dadf 95 */
vijaynvr 0:bc9f26b5dadf 96 typedef struct
vijaynvr 0:bc9f26b5dadf 97 {
vijaynvr 0:bc9f26b5dadf 98 int32_t range_mm;
vijaynvr 0:bc9f26b5dadf 99 /**< range distance measurement (mm). */
vijaynvr 0:bc9f26b5dadf 100
vijaynvr 0:bc9f26b5dadf 101 float_t signalRate_mcps;
vijaynvr 0:bc9f26b5dadf 102 /**< signal rate (MCPS), which is effectively a measure of target reflectance.*/
vijaynvr 0:bc9f26b5dadf 103
vijaynvr 0:bc9f26b5dadf 104 uint32_t errorStatus;
vijaynvr 0:bc9f26b5dadf 105 /**< Error status of the current measurement. \n
vijaynvr 0:bc9f26b5dadf 106 * No Error := 0. \n
vijaynvr 0:bc9f26b5dadf 107 * Refer to product sheets for other error codes. */
vijaynvr 0:bc9f26b5dadf 108 }sensor_RangeData;
vijaynvr 0:bc9f26b5dadf 109
vijaynvr 0:bc9f26b5dadf 110
vijaynvr 0:bc9f26b5dadf 111 /*!
vijaynvr 0:bc9f26b5dadf 112 *\brief Device setup, for Ranging operations, with parameters that require the system mode to be STARTed before being applied.
vijaynvr 0:bc9f26b5dadf 113 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 114 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 115 */
vijaynvr 0:bc9f26b5dadf 116 sensor_error range_set_dynamic_config(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 117
vijaynvr 0:bc9f26b5dadf 118 /*!
vijaynvr 0:bc9f26b5dadf 119 *\brief Set Mode and Operation commands in the sysrange_start register.
vijaynvr 0:bc9f26b5dadf 120 *
vijaynvr 0:bc9f26b5dadf 121 * Possible combinations are : \n
vijaynvr 0:bc9f26b5dadf 122 *
vijaynvr 0:bc9f26b5dadf 123 * RANGE_START_SINGLESHOT 0x01 # bit 0 set / bit 1 clear \n
vijaynvr 0:bc9f26b5dadf 124 * RANGE_START_CONTINUOUS 0x03 # bit 0 set / bit 1 set \n
vijaynvr 0:bc9f26b5dadf 125 * RANGE_STOP 0x01 # bit 0 set / bit 1 don't care \n
vijaynvr 0:bc9f26b5dadf 126 *
vijaynvr 0:bc9f26b5dadf 127 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 128 *\param[in] mode Mode select/operation command to be written to the SYSRANGE_START register.
vijaynvr 0:bc9f26b5dadf 129 *
vijaynvr 0:bc9f26b5dadf 130 *\retval Boolean. Return True if a valid command is applied, otherwise False.
vijaynvr 0:bc9f26b5dadf 131 */
vijaynvr 0:bc9f26b5dadf 132 sensor_error range_set_systemMode(uint8_t device_base_address, int32_t mode);
vijaynvr 0:bc9f26b5dadf 133
vijaynvr 0:bc9f26b5dadf 134 /*!
vijaynvr 0:bc9f26b5dadf 135 *\brief Report status of Range mode-select and Stop/Start.
vijaynvr 0:bc9f26b5dadf 136 *
vijaynvr 0:bc9f26b5dadf 137 * Range_Start_Singleshot \n
vijaynvr 0:bc9f26b5dadf 138 * Range_Start_Continuous \n
vijaynvr 0:bc9f26b5dadf 139 * Range_Stop \n
vijaynvr 0:bc9f26b5dadf 140 *
vijaynvr 0:bc9f26b5dadf 141 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 142 *\retval Integer. Returns the contents of the SYSRANGE_START register.
vijaynvr 0:bc9f26b5dadf 143 */
vijaynvr 0:bc9f26b5dadf 144 uint8_t range_get_systemMode(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 145
vijaynvr 0:bc9f26b5dadf 146 /*!
vijaynvr 0:bc9f26b5dadf 147 *\brief Report basic result from last ranging operation.
vijaynvr 0:bc9f26b5dadf 148 *
vijaynvr 0:bc9f26b5dadf 149 * Accessing Result_Range_Val register \n
vijaynvr 0:bc9f26b5dadf 150 *
vijaynvr 0:bc9f26b5dadf 151 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 152 *\retval 8-bit Integer. Returns the result of the last successfully completed ranging operation, by reading the RESULT_RANGE_VAL register.
vijaynvr 0:bc9f26b5dadf 153 */
vijaynvr 0:bc9f26b5dadf 154 uint8_t range_get_result(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 155
vijaynvr 0:bc9f26b5dadf 156 /*!
vijaynvr 0:bc9f26b5dadf 157 *\brief Report signal rate from last ranging operation.
vijaynvr 0:bc9f26b5dadf 158 * Reads the RESULT_RANGE_SIGNAL_RATE register.
vijaynvr 0:bc9f26b5dadf 159 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 160 *\retval a uint32_t in 9.7 format.
vijaynvr 0:bc9f26b5dadf 161 */
vijaynvr 0:bc9f26b5dadf 162 uint32_t range_get_signal_rate(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 163
vijaynvr 0:bc9f26b5dadf 164 /*!
vijaynvr 0:bc9f26b5dadf 165 *\brief Report all results from last ranging operation.
vijaynvr 0:bc9f26b5dadf 166 *
vijaynvr 0:bc9f26b5dadf 167 * Report all results data associated with a ranging operation. \n\n
vijaynvr 0:bc9f26b5dadf 168 *
vijaynvr 0:bc9f26b5dadf 169 * Result_range_val \n
vijaynvr 0:bc9f26b5dadf 170 * Result_range_stray \n
vijaynvr 0:bc9f26b5dadf 171 * Result_range_raw \n
vijaynvr 0:bc9f26b5dadf 172 * Result_range_return_rate \n
vijaynvr 0:bc9f26b5dadf 173 * Result_range_reference_rate \n
vijaynvr 0:bc9f26b5dadf 174 * Result_range_Return_VCSEL_count \n
vijaynvr 0:bc9f26b5dadf 175 * Result_range_Reference_VCSEL_count \n
vijaynvr 0:bc9f26b5dadf 176 * Result_range_Return_AMB_count \n
vijaynvr 0:bc9f26b5dadf 177 * Result_range_Reference_AMB_count \n
vijaynvr 0:bc9f26b5dadf 178 * Result_range_Return_Conv_time \n
vijaynvr 0:bc9f26b5dadf 179 * Result_range_Reference_Conv_time \n
vijaynvr 0:bc9f26b5dadf 180 *
vijaynvr 0:bc9f26b5dadf 181 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 182 *
vijaynvr 0:bc9f26b5dadf 183 *\retval List. Returns a list of all the results data, from the last successfully completed ranging operation.
vijaynvr 0:bc9f26b5dadf 184 */
vijaynvr 0:bc9f26b5dadf 185 sensor_error range_get_full_result(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 186
vijaynvr 0:bc9f26b5dadf 187 /*!
vijaynvr 0:bc9f26b5dadf 188 *\brief Set min/max range thresholds (1 to 254mm) in SYSRANGE_THRESH_LOW & SYSRANGE_THRESH_HIGH registers.
vijaynvr 0:bc9f26b5dadf 189 *
vijaynvr 0:bc9f26b5dadf 190 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 191 *\param[in] low_threshold Ranging low threshold to be written to the SYSRANGE_THRESH_LOW register (default = 0mm.)
vijaynvr 0:bc9f26b5dadf 192 *\param[in] high_threshold Ranging high threshold to be written to the SYSRANGE_THRESH_HIGH register (default = 255mm.)
vijaynvr 0:bc9f26b5dadf 193 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 194 */
vijaynvr 0:bc9f26b5dadf 195 sensor_error Range_Set_Thresholds(uint8_t device_base_address, int32_t low_threshold, int32_t high_threshold);
vijaynvr 0:bc9f26b5dadf 196
vijaynvr 0:bc9f26b5dadf 197 /*!
vijaynvr 0:bc9f26b5dadf 198 *\brief Set ranging high threshold in the SYSRANGE_THRESH_HIGH register.
vijaynvr 0:bc9f26b5dadf 199 *
vijaynvr 0:bc9f26b5dadf 200 * Range : 0-255 mm \n
vijaynvr 0:bc9f26b5dadf 201 *
vijaynvr 0:bc9f26b5dadf 202 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 203 *\param[in] threshold Ranging high threshold to be written to the SYSRANGE_THRESH_HIGH register(0-255mm).
vijaynvr 0:bc9f26b5dadf 204 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 205 */
vijaynvr 0:bc9f26b5dadf 206 sensor_error range_set_high_threshold(uint8_t device_base_address, uint8_t threshold);
vijaynvr 0:bc9f26b5dadf 207
vijaynvr 0:bc9f26b5dadf 208 /*!
vijaynvr 0:bc9f26b5dadf 209 *\brief Report ranging high threshold from the SYSRANGE_THRESH_HIGH register.
vijaynvr 0:bc9f26b5dadf 210 *
vijaynvr 0:bc9f26b5dadf 211 * Range : 0-255 mm \n
vijaynvr 0:bc9f26b5dadf 212 *
vijaynvr 0:bc9f26b5dadf 213 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 214 *\retval Integer. Returns the contents of the SYSRANGE_THRESH_HIGH register.
vijaynvr 0:bc9f26b5dadf 215 */
vijaynvr 0:bc9f26b5dadf 216 uint8_t range_get_high_threshold(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 217
vijaynvr 0:bc9f26b5dadf 218 /*!
vijaynvr 0:bc9f26b5dadf 219 *\brief Set ranging low threshold in the SYSRANGE_THRESH_LOW register.
vijaynvr 0:bc9f26b5dadf 220 *
vijaynvr 0:bc9f26b5dadf 221 * Range : 0-255 mm \n
vijaynvr 0:bc9f26b5dadf 222 *
vijaynvr 0:bc9f26b5dadf 223 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 224 *\param[in] threshold Ranging low threshold to be written to the SYSRANGE_THRESH_LOW register.
vijaynvr 0:bc9f26b5dadf 225 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 226 */
vijaynvr 0:bc9f26b5dadf 227 sensor_error range_set_low_threshold(uint8_t device_base_address, uint8_t threshold);
vijaynvr 0:bc9f26b5dadf 228
vijaynvr 0:bc9f26b5dadf 229 /*!
vijaynvr 0:bc9f26b5dadf 230 *\brief Report ranging low threshold from the SYSRANGE_THRESH_LOW register.
vijaynvr 0:bc9f26b5dadf 231 *
vijaynvr 0:bc9f26b5dadf 232 * Range : 0-255 mm \n
vijaynvr 0:bc9f26b5dadf 233 *
vijaynvr 0:bc9f26b5dadf 234 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 235 *\retval Integer. Returns the contents of the SYSRANGE_THRESH_LOW register.
vijaynvr 0:bc9f26b5dadf 236 */
vijaynvr 0:bc9f26b5dadf 237 uint8_t range_get_low_threshold(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 238
vijaynvr 0:bc9f26b5dadf 239 /*!
vijaynvr 0:bc9f26b5dadf 240 *\brief Set ranging intermeasurement period in the SYSRANGE_INTERMEASUREMENT_PERIOD register.
vijaynvr 0:bc9f26b5dadf 241 *
vijaynvr 0:bc9f26b5dadf 242 * Time delay between measurements in continuous ranging mode. Range 10ms - 2.55secs (1 code = 10ms. Code 0 = 10ms.).\n
vijaynvr 0:bc9f26b5dadf 243 * Min (default) value stored in NVM.
vijaynvr 0:bc9f26b5dadf 244 *
vijaynvr 0:bc9f26b5dadf 245 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 246 *\param[in] intermeasurement_period Time delay in ms between measurements in continuous-ranging mode. <0-2550ms>
vijaynvr 0:bc9f26b5dadf 247 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 248 */
vijaynvr 0:bc9f26b5dadf 249 sensor_error range_set_interMeasurement_period(uint8_t device_base_address, uint16_t intermeasurement_period);
vijaynvr 0:bc9f26b5dadf 250
vijaynvr 0:bc9f26b5dadf 251 /*!
vijaynvr 0:bc9f26b5dadf 252 *\brief Report ranging intermeasurement period from the SYSRANGE_INTERMEASUREMENT_PERIOD register.
vijaynvr 0:bc9f26b5dadf 253 *
vijaynvr 0:bc9f26b5dadf 254 * Range 10ms-2.55s, 1 code = 10 ms, code 0 = 10ms. \n
vijaynvr 0:bc9f26b5dadf 255 *
vijaynvr 0:bc9f26b5dadf 256 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 257 *\retval Integer. Returns the range inter measurement period in ms.
vijaynvr 0:bc9f26b5dadf 258 */
vijaynvr 0:bc9f26b5dadf 259 uint16_t range_get_interMeasurement_period(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 260
vijaynvr 0:bc9f26b5dadf 261 /*!
vijaynvr 0:bc9f26b5dadf 262 *\brief Set ranging maximum convergence time in the SYSRANGE_MAX_CONVERGENCE_TIME register.
vijaynvr 0:bc9f26b5dadf 263 *
vijaynvr 0:bc9f26b5dadf 264 * Maximum time to run measurements in ranging modes. \n
vijaynvr 0:bc9f26b5dadf 265 *
vijaynvr 0:bc9f26b5dadf 266 * Range 0-50ms, 1 code = 1 ms \n
vijaynvr 0:bc9f26b5dadf 267 *
vijaynvr 0:bc9f26b5dadf 268 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 269 *\param[in] max_convergence_time Maximum time to run measurements in ranging modes (max = 50ms).
vijaynvr 0:bc9f26b5dadf 270 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 271 */
vijaynvr 0:bc9f26b5dadf 272 sensor_error range_set_max_convergence_time(uint8_t device_base_address, int32_t max_convergence_time);
vijaynvr 0:bc9f26b5dadf 273
vijaynvr 0:bc9f26b5dadf 274 /*!
vijaynvr 0:bc9f26b5dadf 275 *\brief Report ranging maximum convergence time from the SYSRANGE_MAX_CONVERGENCE_TIME register.
vijaynvr 0:bc9f26b5dadf 276 *
vijaynvr 0:bc9f26b5dadf 277 * Range 0-50ms, 1 code = 1 ms \n
vijaynvr 0:bc9f26b5dadf 278 *
vijaynvr 0:bc9f26b5dadf 279 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 280 *\retval Integer. Returns the contents of the SYSRANGE_MAX_CONVERGENCE_TIME register.
vijaynvr 0:bc9f26b5dadf 281 */
vijaynvr 0:bc9f26b5dadf 282
vijaynvr 0:bc9f26b5dadf 283 uint8_t range_get_max_convergence_time(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 284
vijaynvr 0:bc9f26b5dadf 285 /*!
vijaynvr 0:bc9f26b5dadf 286 *\brief Set ranging crosstalk compensation rate in the SYSRANGE_CROSSTALK_COMPENSATION_RATE register.
vijaynvr 0:bc9f26b5dadf 287 *
vijaynvr 0:bc9f26b5dadf 288 * User-controlled crosstalk compensation rate, in MHz. \n
vijaynvr 0:bc9f26b5dadf 289 *
vijaynvr 0:bc9f26b5dadf 290 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 291 *\param[in] crosstalk_compensation_rate User-controlled crosstalk compensation rate, in ranging modes.
vijaynvr 0:bc9f26b5dadf 292 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 293 */
vijaynvr 0:bc9f26b5dadf 294 sensor_error range_set_crosstalk_compensation_rate(uint8_t device_base_address, int32_t crosstalk_compensation_rate);
vijaynvr 0:bc9f26b5dadf 295
vijaynvr 0:bc9f26b5dadf 296 /*!
vijaynvr 0:bc9f26b5dadf 297 *\brief Report ranging crosstalk compensation rate (MHz) from the SYSRANGE_CROSSTALK_COMPENSATION_RATE register.
vijaynvr 0:bc9f26b5dadf 298 *
vijaynvr 0:bc9f26b5dadf 299 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 300 *\retval Integer. Returns the contents of the SYSRANGE_CROSSTALK_COMPENSATION_RATE register.
vijaynvr 0:bc9f26b5dadf 301 */
vijaynvr 0:bc9f26b5dadf 302 int32_t range_get_crosstalk_compensation_rate(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 303
vijaynvr 0:bc9f26b5dadf 304 /*!
vijaynvr 0:bc9f26b5dadf 305 *\brief Set ranging crosstalk compensation range in the SYSRANGE_CROSSTALK_COMPENSATION_RANGE register.
vijaynvr 0:bc9f26b5dadf 306 *
vijaynvr 0:bc9f26b5dadf 307 * User-controlled crosstalk compensation range, in mm. \n
vijaynvr 0:bc9f26b5dadf 308 *
vijaynvr 0:bc9f26b5dadf 309 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 310 *\param[in] crosstalk_compensation_range User-controlled crosstalk compensation range, in ranging modes.
vijaynvr 0:bc9f26b5dadf 311 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 312 */
vijaynvr 0:bc9f26b5dadf 313 sensor_error range_set_crosstalk_compensation_range(uint8_t device_base_address, int32_t crosstalk_compensation_range);
vijaynvr 0:bc9f26b5dadf 314
vijaynvr 0:bc9f26b5dadf 315 /*!
vijaynvr 0:bc9f26b5dadf 316 *\brief Report ranging crosstalk compensation range (mm) from the SYSRANGE_CROSSTALK_COMPENSATION_RANGE register.
vijaynvr 0:bc9f26b5dadf 317 *
vijaynvr 0:bc9f26b5dadf 318 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 319 *\retval Integer. Returns the contents of the SYSRANGE_CROSSTALK_COMPENSATION_RANGE register.
vijaynvr 0:bc9f26b5dadf 320 */
vijaynvr 0:bc9f26b5dadf 321 uint8_t range_get_crosstalk_compensation_range(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 322
vijaynvr 0:bc9f26b5dadf 323 /*!
vijaynvr 0:bc9f26b5dadf 324 *\brief Set ranging crosstalk valid height in the SYSRANGE_CROSSTALK_VALID_HEIGHT register.
vijaynvr 0:bc9f26b5dadf 325 *
vijaynvr 0:bc9f26b5dadf 326 * Minimum range at which to apply crosstalk compensation, in mm. \n
vijaynvr 0:bc9f26b5dadf 327 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 328 *\param[in] crosstalk_valid_height Minimum range at which to apply crosstalk compensation, in ranging modes.
vijaynvr 0:bc9f26b5dadf 329 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 330 */
vijaynvr 0:bc9f26b5dadf 331 sensor_error range_set_crosstalk_valid_height(uint8_t device_base_address, int32_t crosstalk_valid_height);
vijaynvr 0:bc9f26b5dadf 332
vijaynvr 0:bc9f26b5dadf 333 /*!
vijaynvr 0:bc9f26b5dadf 334 *\brief Report ranging crosstalk valid height from the SYSRANGE_CROSSTALK_VALID_HEIGHT register.
vijaynvr 0:bc9f26b5dadf 335 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 336 *\retval Integer. Returns the contents of the SYSRANGE_CROSSTALK_VALID_HEIGHT register.
vijaynvr 0:bc9f26b5dadf 337 */
vijaynvr 0:bc9f26b5dadf 338 uint8_t range_get_crosstalk_valid_height(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 339
vijaynvr 0:bc9f26b5dadf 340 /*!
vijaynvr 0:bc9f26b5dadf 341 *\brief Set ranging ECE (early convergence estimate) Threshold in the SYSRANGE_EARLY_CONVERGENCE_ESTIMATE' register.
vijaynvr 0:bc9f26b5dadf 342 *
vijaynvr 0:bc9f26b5dadf 343 * User-set limit below which a ranging operation is aborted. \n
vijaynvr 0:bc9f26b5dadf 344 * An estimate of convergence time is performed 1ms into a ranging operation. If the return rate is below this user-set limit, the ranging operation is aborted to save power. \n
vijaynvr 0:bc9f26b5dadf 345 *
vijaynvr 0:bc9f26b5dadf 346 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 347 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 348 */
vijaynvr 0:bc9f26b5dadf 349 sensor_error range_set_early_convergence_estimate_threshold(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 350
vijaynvr 0:bc9f26b5dadf 351 /*!
vijaynvr 0:bc9f26b5dadf 352 *\brief Report ranging early convergence estimate from the SYSRANGE_EARLY_CONVERGENCE_ESTIMATE register.
vijaynvr 0:bc9f26b5dadf 353 *
vijaynvr 0:bc9f26b5dadf 354 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 355 *\retval Integer. Returns the contents of the SYSRANGE_EARLY_CONVERGENCE_ESTIMATE register.
vijaynvr 0:bc9f26b5dadf 356 */
vijaynvr 0:bc9f26b5dadf 357 uint8_t range_get_early_convergence_estimate_threshold(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 358
vijaynvr 0:bc9f26b5dadf 359 uint32_t range_get_vernier_ave_total_time(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 360
vijaynvr 0:bc9f26b5dadf 361 /*!
vijaynvr 0:bc9f26b5dadf 362 *\brief read convergence count threshold from USER_CONV_CTRL_RETURN_THRESHOLD_FINE register.
vijaynvr 0:bc9f26b5dadf 363 *
vijaynvr 0:bc9f26b5dadf 364 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 365 *\retval Integer. Returns the formated reading of the USER_CONV_CTRL_RETURN_THRESHOLD_FINE register.
vijaynvr 0:bc9f26b5dadf 366 */
vijaynvr 0:bc9f26b5dadf 367 uint32_t range_get_converg_ctrl_rtn_thresh_fine(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 368
vijaynvr 0:bc9f26b5dadf 369 /*!
vijaynvr 0:bc9f26b5dadf 370 *\brief Set Ranging Ignore Valid Height threshold in the SYSRANGE_RANGE_IGNORE_VALID_HEIGHT register.
vijaynvr 0:bc9f26b5dadf 371 *
vijaynvr 0:bc9f26b5dadf 372 * Default : 256 \n
vijaynvr 0:bc9f26b5dadf 373 *
vijaynvr 0:bc9f26b5dadf 374 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 375 *\param[in] ignore_valid_height User-set limit
vijaynvr 0:bc9f26b5dadf 376 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 377 */
vijaynvr 0:bc9f26b5dadf 378 sensor_error range_set_ignore_valid_height(uint8_t device_base_address, int32_t ignore_valid_height);
vijaynvr 0:bc9f26b5dadf 379
vijaynvr 0:bc9f26b5dadf 380 /*!
vijaynvr 0:bc9f26b5dadf 381 *\brief Report ranging ignore valid height threshold from the SYSRANGE_RANGE_IGNORE_VALID_HEIGHT register.
vijaynvr 0:bc9f26b5dadf 382 *
vijaynvr 0:bc9f26b5dadf 383 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 384 *\retval Integer. Returns the contents of the SYSRANGE_RANGE_IGNORE_VALID_HEIGHT register.
vijaynvr 0:bc9f26b5dadf 385 */
vijaynvr 0:bc9f26b5dadf 386 uint8_t range_get_ignore_valid_height(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 387
vijaynvr 0:bc9f26b5dadf 388 /*!
vijaynvr 0:bc9f26b5dadf 389 *\brief Set Range Ignore Threshold in the SYSRANGE_RANGE_IGNORE_THRESHOLD register.
vijaynvr 0:bc9f26b5dadf 390 *
vijaynvr 0:bc9f26b5dadf 391 * Minimum acceptable count rate of VCSEL counts on the return array. \n
vijaynvr 0:bc9f26b5dadf 392 *
vijaynvr 0:bc9f26b5dadf 393 * Default : 2. \n
vijaynvr 0:bc9f26b5dadf 394 *
vijaynvr 0:bc9f26b5dadf 395 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 396 *\param[in] range_ignore_threshold Minimum acceptable count rate of VCSEL counts on the return array. in Mcps 9.7 format.
vijaynvr 0:bc9f26b5dadf 397 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 398 */
vijaynvr 0:bc9f26b5dadf 399 sensor_error range_set_range_ignore_threshold(uint8_t device_base_address, uint32_t range_ignore_threshold);
vijaynvr 0:bc9f26b5dadf 400
vijaynvr 0:bc9f26b5dadf 401 /*!
vijaynvr 0:bc9f26b5dadf 402 *\brief Report Range Ignore Threshold from the SYSRANGE_RANGE_IGNORE_THRESHOLD register. in Mcps 9.7 format.
vijaynvr 0:bc9f26b5dadf 403 *
vijaynvr 0:bc9f26b5dadf 404 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 405 *\retval Integer. Returns the contents of the SYSRANGE_RANGE_IGNORE_THRESHOLD register.
vijaynvr 0:bc9f26b5dadf 406 */
vijaynvr 0:bc9f26b5dadf 407 uint32_t range_get_range_ignore_threshold(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 408
vijaynvr 0:bc9f26b5dadf 409 /*!
vijaynvr 0:bc9f26b5dadf 410 *\brief Set Emitter Block Threshold in the SYSRANGE_EMITTER_BLOCK_THRESHOLD register.
vijaynvr 0:bc9f26b5dadf 411 *
vijaynvr 0:bc9f26b5dadf 412 * Maximum Reference Array VCSEL returns allowed before reporting that the emitter is blocked. \n
vijaynvr 0:bc9f26b5dadf 413 * MHz, 9.7 format \n
vijaynvr 0:bc9f26b5dadf 414 *
vijaynvr 0:bc9f26b5dadf 415 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 416 *\param[in] emitter_block_threshold Minimum acceptable count rate of VCSEL counts on the return array.
vijaynvr 0:bc9f26b5dadf 417 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 418 */
vijaynvr 0:bc9f26b5dadf 419 sensor_error range_set_emitter_block_threshold(uint8_t device_base_address, int32_t emitter_block_threshold);
vijaynvr 0:bc9f26b5dadf 420
vijaynvr 0:bc9f26b5dadf 421 /*!
vijaynvr 0:bc9f26b5dadf 422 *\brief Report Emitter Block Threshold from the SYSRANGE_EMITTER_BLOCK_THRESHOLD register.
vijaynvr 0:bc9f26b5dadf 423 *
vijaynvr 0:bc9f26b5dadf 424 * MHz, 9.7 format \n
vijaynvr 0:bc9f26b5dadf 425 *
vijaynvr 0:bc9f26b5dadf 426 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 427 *\retval Integer. Returns the contents of the SYSRANGE_EMITTER_BLOCK_THRESHOLD register.
vijaynvr 0:bc9f26b5dadf 428 */
vijaynvr 0:bc9f26b5dadf 429 uint8_t range_get_emitter_block_threshold(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 430
vijaynvr 0:bc9f26b5dadf 431 /**
vijaynvr 0:bc9f26b5dadf 432 * @brief Function to set the SNR threshold.
vijaynvr 0:bc9f26b5dadf 433 *
vijaynvr 0:bc9f26b5dadf 434 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 435 *\param[in] snrThresh
vijaynvr 0:bc9f26b5dadf 436 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 437 */
vijaynvr 0:bc9f26b5dadf 438 sensor_error range_set_snr_thresh(uint8_t device_base_address, float_t snrThresh);
vijaynvr 0:bc9f26b5dadf 439
vijaynvr 0:bc9f26b5dadf 440 /**
vijaynvr 0:bc9f26b5dadf 441 * @brief Function to get the SNR threshold.
vijaynvr 0:bc9f26b5dadf 442 *
vijaynvr 0:bc9f26b5dadf 443 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 444 *\retval Float. Returns the SNR threshold.
vijaynvr 0:bc9f26b5dadf 445 */
vijaynvr 0:bc9f26b5dadf 446 float_t range_get_snr_thresh(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 447
vijaynvr 0:bc9f26b5dadf 448
vijaynvr 0:bc9f26b5dadf 449 /*!
vijaynvr 0:bc9f26b5dadf 450 *\brief Set Range Check Enables in the SYSRANGE_RANGE_CHECK_ENABLES register.
vijaynvr 0:bc9f26b5dadf 451 *
vijaynvr 0:bc9f26b5dadf 452 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 453 *\param[in] range_check_enables
vijaynvr 0:bc9f26b5dadf 454 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 455 */
vijaynvr 0:bc9f26b5dadf 456 sensor_error range_set_range_check_enables(uint8_t device_base_address, int32_t range_check_enables);
vijaynvr 0:bc9f26b5dadf 457
vijaynvr 0:bc9f26b5dadf 458 /*!
vijaynvr 0:bc9f26b5dadf 459 *\brief Report Range Check Enables from the SYSRANGE_RANGE_CHECK_ENABLES register.
vijaynvr 0:bc9f26b5dadf 460 *
vijaynvr 0:bc9f26b5dadf 461 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 462 *\retval Integer. Returns the contents of the SYSRANGE_RANGE_CHECK_ENABLES register.
vijaynvr 0:bc9f26b5dadf 463 */
vijaynvr 0:bc9f26b5dadf 464 uint8_t range_get_range_check_enables(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 465
vijaynvr 0:bc9f26b5dadf 466 /*!
vijaynvr 0:bc9f26b5dadf 467 *\brief Set Range Check Enables in the SYSRANGE_VHV_RECALIBRATE register.
vijaynvr 0:bc9f26b5dadf 468 *
vijaynvr 0:bc9f26b5dadf 469 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 470 *\param[in] VHV_Recalibrate
vijaynvr 0:bc9f26b5dadf 471 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 472 */
vijaynvr 0:bc9f26b5dadf 473 sensor_error range_set_vhv_recalibrate(uint8_t device_base_address, int32_t VHV_Recalibrate);
vijaynvr 0:bc9f26b5dadf 474
vijaynvr 0:bc9f26b5dadf 475 /*!
vijaynvr 0:bc9f26b5dadf 476 *\brief Report Range Check Enables from the SYSRANGE_VHV_RECALIBRATE register.
vijaynvr 0:bc9f26b5dadf 477 *
vijaynvr 0:bc9f26b5dadf 478 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 479 *\retval Integer.
vijaynvr 0:bc9f26b5dadf 480 */
vijaynvr 0:bc9f26b5dadf 481 uint8_t range_get_vhv_recalibrate(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 482
vijaynvr 0:bc9f26b5dadf 483 /*!
vijaynvr 0:bc9f26b5dadf 484 *\brief Set VHV Repeat Rate.
vijaynvr 0:bc9f26b5dadf 485 *
vijaynvr 0:bc9f26b5dadf 486 * Repeat rate of autoVHV task \n
vijaynvr 0:bc9f26b5dadf 487 * measurements, 0 = off, 255 = after every 255 measurements \n
vijaynvr 0:bc9f26b5dadf 488 *
vijaynvr 0:bc9f26b5dadf 489 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 490 *\param[in] VHV_repeat_rate Repeat rate of autoVHV task
vijaynvr 0:bc9f26b5dadf 491 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 492 */
vijaynvr 0:bc9f26b5dadf 493 sensor_error range_set_vhv_repeat_rate(uint8_t device_base_address, int32_t VHV_repeat_rate);
vijaynvr 0:bc9f26b5dadf 494
vijaynvr 0:bc9f26b5dadf 495 /*!
vijaynvr 0:bc9f26b5dadf 496 *\brief Report VHV Repeat Rate.
vijaynvr 0:bc9f26b5dadf 497 *
vijaynvr 0:bc9f26b5dadf 498 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 499 *\retval Integer. Repeat rate of autoVHV task, in measurements. 0 = off, 255 = after every 255 measurements.
vijaynvr 0:bc9f26b5dadf 500 */
vijaynvr 0:bc9f26b5dadf 501 uint8_t range_get_vhv_repeat_rate(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 502
vijaynvr 0:bc9f26b5dadf 503 /*!
vijaynvr 0:bc9f26b5dadf 504 *\brief Report contents of the RESULT_RANGE_STATUS register.
vijaynvr 0:bc9f26b5dadf 505 *
vijaynvr 0:bc9f26b5dadf 506 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 507 *\retval Integer
vijaynvr 0:bc9f26b5dadf 508 */
vijaynvr 0:bc9f26b5dadf 509 int32_t range_get_result_status(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 510
vijaynvr 0:bc9f26b5dadf 511 /*!
vijaynvr 0:bc9f26b5dadf 512 *\brief Report result_range_device_ready status in the RESULT_RANGE_STATUS register.
vijaynvr 0:bc9f26b5dadf 513 *
vijaynvr 0:bc9f26b5dadf 514 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 515 *\retval Boolean. Return True if the result_range_device_ready bit in the RESULT_RANGE_STATUS register is set, otherwise False.
vijaynvr 0:bc9f26b5dadf 516 */
vijaynvr 0:bc9f26b5dadf 517 bool_t range_get_device_ready(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 518
vijaynvr 0:bc9f26b5dadf 519 /*!
vijaynvr 0:bc9f26b5dadf 520 *\brief Report result_range_error_codes status.
vijaynvr 0:bc9f26b5dadf 521 *
vijaynvr 0:bc9f26b5dadf 522 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 523 *\retval Integer. Return True if the result_range_error_codes bit in the RESULT_RANGE_STATUS register is set, otherwise False.
vijaynvr 0:bc9f26b5dadf 524 */
vijaynvr 0:bc9f26b5dadf 525 uint8_t range_get_result_error_codes(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 526
vijaynvr 0:bc9f26b5dadf 527 /*!
vijaynvr 0:bc9f26b5dadf 528 *\brief Set the ECE Factor Molecular and Demoninator.
vijaynvr 0:bc9f26b5dadf 529 *
vijaynvr 0:bc9f26b5dadf 530 * (< 1.00 for maximum detection, > 1.00 for minimizing red glow)
vijaynvr 0:bc9f26b5dadf 531 *
vijaynvr 0:bc9f26b5dadf 532 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 533 *\param[in] ECE_Factor_M
vijaynvr 0:bc9f26b5dadf 534 *\param[in] ECE_Factor_D
vijaynvr 0:bc9f26b5dadf 535 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 536 */
vijaynvr 0:bc9f26b5dadf 537 sensor_error range_set_ece_factor(uint8_t device_base_address, uint32_t ECE_Factor_M, uint32_t ECE_Factor_D);
vijaynvr 0:bc9f26b5dadf 538
vijaynvr 0:bc9f26b5dadf 539 /*!
vijaynvr 0:bc9f26b5dadf 540 *\brief Store the ECE Margin Molecular and Demoninator to provided variables.
vijaynvr 0:bc9f26b5dadf 541 *
vijaynvr 0:bc9f26b5dadf 542 * (< 1.00 for maximum detection, > 1.00 for minimizing red glow)
vijaynvr 0:bc9f26b5dadf 543 *
vijaynvr 0:bc9f26b5dadf 544 *\param[in] pece_factor_m pointer to ECE_Factor_M variable
vijaynvr 0:bc9f26b5dadf 545 *\param[in] pece_factor_d pointer to ECE_Factor_D variable
vijaynvr 0:bc9f26b5dadf 546 *\retval sensor_error.
vijaynvr 0:bc9f26b5dadf 547 */
vijaynvr 0:bc9f26b5dadf 548 sensor_error range_get_ece_factor(uint32_t *pece_factor_m, uint32_t *pece_factor_d);
vijaynvr 0:bc9f26b5dadf 549
vijaynvr 0:bc9f26b5dadf 550
vijaynvr 0:bc9f26b5dadf 551 /*!
vijaynvr 0:bc9f26b5dadf 552 *\brief Set System Interrupt Config GPIO for Ranging operations.
vijaynvr 0:bc9f26b5dadf 553
vijaynvr 0:bc9f26b5dadf 554 Returns True if a command is successfully applied to the SYSTEM_INTERRUPT_CONFIG_GPIO register, otherwise False. \n
vijaynvr 0:bc9f26b5dadf 555 Possible settings are : \n
vijaynvr 0:bc9f26b5dadf 556 CONFIG_GPIO_INTERRUPT_DISABLED = 0x00 \n
vijaynvr 0:bc9f26b5dadf 557 CONFIG_GPIO_INTERRUPT_LEVEL_LOW = 0x01 \n
vijaynvr 0:bc9f26b5dadf 558 CONFIG_GPIO_INTERRUPT_LEVEL_HIGH = 0x02 \n
vijaynvr 0:bc9f26b5dadf 559 CONFIG_GPIO_INTERRUPT_OUT_OF_WINDOW = 0x03 \n
vijaynvr 0:bc9f26b5dadf 560 CONFIG_GPIO_INTERRUPT_NEW_SAMPLE_READY = 0x04 \n
vijaynvr 0:bc9f26b5dadf 561 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 562 *\param[in] Ranging_GPIO_interrupt_config
vijaynvr 0:bc9f26b5dadf 563 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 564 */
vijaynvr 0:bc9f26b5dadf 565 sensor_error range_set_system_interrupt_config_gpio(uint8_t device_base_address, uint8_t Ranging_GPIO_interrupt_config);
vijaynvr 0:bc9f26b5dadf 566
vijaynvr 0:bc9f26b5dadf 567 /*!
vijaynvr 0:bc9f26b5dadf 568 *\brief Report System Interrupt Config GPIO Ranging.
vijaynvr 0:bc9f26b5dadf 569
vijaynvr 0:bc9f26b5dadf 570 Returns the ranging-only portion of the SYSTEM_INTERRUPT_CONFIG_GPIO register. \n
vijaynvr 0:bc9f26b5dadf 571 Possible returns are : \n
vijaynvr 0:bc9f26b5dadf 572 CONFIG_GPIO_INTERRUPT_DISABLED = 0x00 \n
vijaynvr 0:bc9f26b5dadf 573 CONFIG_GPIO_INTERRUPT_LEVEL_LOW = 0x01 \n
vijaynvr 0:bc9f26b5dadf 574 CONFIG_GPIO_INTERRUPT_LEVEL_HIGH = 0x02 \n
vijaynvr 0:bc9f26b5dadf 575 CONFIG_GPIO_INTERRUPT_OUT_OF_WINDOW = 0x03 \n
vijaynvr 0:bc9f26b5dadf 576 CONFIG_GPIO_INTERRUPT_NEW_SAMPLE_READY = 0x04 \n
vijaynvr 0:bc9f26b5dadf 577 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 578 *\retval Integer
vijaynvr 0:bc9f26b5dadf 579 */
vijaynvr 0:bc9f26b5dadf 580 uint8_t range_get_system_interrupt_config_gpio(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 581
vijaynvr 0:bc9f26b5dadf 582 /*!
vijaynvr 0:bc9f26b5dadf 583 *\brief Clear Ranging System Interrupt.
vijaynvr 0:bc9f26b5dadf 584 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 585 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 586 */
vijaynvr 0:bc9f26b5dadf 587 sensor_error range_set_system_interrupt_clear(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 588
vijaynvr 0:bc9f26b5dadf 589
vijaynvr 0:bc9f26b5dadf 590 sensor_error Get_Range_History_Buffer(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 591
vijaynvr 0:bc9f26b5dadf 592 /*!
vijaynvr 0:bc9f26b5dadf 593 *\brief Report GPIO Interrupt Result Status for a Ranging operation.
vijaynvr 0:bc9f26b5dadf 594
vijaynvr 0:bc9f26b5dadf 595 Returns the Ranging-only portion of the RESULT_INTERRUPT_STATUS_GPIO register. \n
vijaynvr 0:bc9f26b5dadf 596 Possible returns are : \n
vijaynvr 0:bc9f26b5dadf 597 0: No threshold events reported \n
vijaynvr 0:bc9f26b5dadf 598 1: Level Low threshold event \n
vijaynvr 0:bc9f26b5dadf 599 2: Level High threshold event \n
vijaynvr 0:bc9f26b5dadf 600 3: Out Of Window threshold event \n
vijaynvr 0:bc9f26b5dadf 601 4: New Sample Ready threshold event \n
vijaynvr 0:bc9f26b5dadf 602 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 603 *\retval Integer
vijaynvr 0:bc9f26b5dadf 604 */
vijaynvr 0:bc9f26b5dadf 605 uint8_t range_get_result_interrupt_status_gpio(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 606
vijaynvr 0:bc9f26b5dadf 607 /*!
vijaynvr 0:bc9f26b5dadf 608 *\brief Set history buffer to range mode and enable.
vijaynvr 0:bc9f26b5dadf 609 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 610 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 611 */
vijaynvr 0:bc9f26b5dadf 612 sensor_error range_set_history_buffer_mode_enable(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 613
vijaynvr 0:bc9f26b5dadf 614
vijaynvr 0:bc9f26b5dadf 615 /**
vijaynvr 0:bc9f26b5dadf 616 * @brief Function to return the Maximum range reported by the
vijaynvr 0:bc9f26b5dadf 617 * sensor.
vijaynvr 0:bc9f26b5dadf 618 */
vijaynvr 0:bc9f26b5dadf 619 uint32_t range_get_upper_limit(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 620
vijaynvr 0:bc9f26b5dadf 621 /**
vijaynvr 0:bc9f26b5dadf 622 * @brief Function to return the Minimum range reported by the
vijaynvr 0:bc9f26b5dadf 623 * sensor.
vijaynvr 0:bc9f26b5dadf 624 */
vijaynvr 0:bc9f26b5dadf 625 uint32_t range_get_lower_limit(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 626
vijaynvr 0:bc9f26b5dadf 627 #endif
vijaynvr 0:bc9f26b5dadf 628
vijaynvr 0:bc9f26b5dadf 629