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 als_driver.h
vijaynvr 0:bc9f26b5dadf 25 *\brief Application-level methods used by VL6180X for ALS operations.
vijaynvr 0:bc9f26b5dadf 26 */
vijaynvr 0:bc9f26b5dadf 27
vijaynvr 0:bc9f26b5dadf 28 #ifndef _ALS_DRIVER
vijaynvr 0:bc9f26b5dadf 29 #define _ALS_DRIVER
vijaynvr 0:bc9f26b5dadf 30
vijaynvr 0:bc9f26b5dadf 31 #include "definitions.h"
vijaynvr 0:bc9f26b5dadf 32 #include "common_driver.h"
vijaynvr 0:bc9f26b5dadf 33
vijaynvr 0:bc9f26b5dadf 34 //-----------------------------------------------------------------------------
vijaynvr 0:bc9f26b5dadf 35 // constant definitions
vijaynvr 0:bc9f26b5dadf 36 //----------------------------------------------------------------------------
vijaynvr 0:bc9f26b5dadf 37
vijaynvr 0:bc9f26b5dadf 38 // registers addresses
vijaynvr 0:bc9f26b5dadf 39 #define IDENTIFICATION_MODEL_ID 0x00
vijaynvr 0:bc9f26b5dadf 40 #define IDENTIFICATION_FIRMWARE_REVISION_ID 0x0B
vijaynvr 0:bc9f26b5dadf 41 #define IDENTIFICATION_MODULE_REV_MAJOR 0x03
vijaynvr 0:bc9f26b5dadf 42 #define IDENTIFICATION_MODULE_REV_MINOR 0x04
vijaynvr 0:bc9f26b5dadf 43
vijaynvr 0:bc9f26b5dadf 44 #define SYSALS_START 0x38
vijaynvr 0:bc9f26b5dadf 45 #define SYSALS_THRESH_HIGH 0x3A
vijaynvr 0:bc9f26b5dadf 46 #define SYSALS_THRESH_LOW 0x3C
vijaynvr 0:bc9f26b5dadf 47 #define SYSALS_INTERMEASUREMENT_PERIOD 0x3E
vijaynvr 0:bc9f26b5dadf 48 #define SYSALS_ANALOGUE_GAIN 0x3F
vijaynvr 0:bc9f26b5dadf 49 #define SYSALS_INTEGRATION_PERIOD 0x40
vijaynvr 0:bc9f26b5dadf 50
vijaynvr 0:bc9f26b5dadf 51 #define RESULT_ALS_STATUS 0x4E
vijaynvr 0:bc9f26b5dadf 52 #define RESULT_ALS_VAL 0x50
vijaynvr 0:bc9f26b5dadf 53
vijaynvr 0:bc9f26b5dadf 54 #define INTERLEAVED_MODE_ENABLE 0x2A3
vijaynvr 0:bc9f26b5dadf 55
vijaynvr 0:bc9f26b5dadf 56
vijaynvr 0:bc9f26b5dadf 57 // SYSALS_START
vijaynvr 0:bc9f26b5dadf 58 #define ALS_START_SINGLESHOT 0x01 // bit 0 set / bit 1 clear
vijaynvr 0:bc9f26b5dadf 59 #define ALS_START_CONTINUOUS 0x03 // bit 0 set / bit 1 set
vijaynvr 0:bc9f26b5dadf 60 #define ALS_STOP 0x00 // bit 0 set / bit 1 don't care
vijaynvr 0:bc9f26b5dadf 61
vijaynvr 0:bc9f26b5dadf 62 // RESULT_ALS_STATUS
vijaynvr 0:bc9f26b5dadf 63 #define ALS_DEVICE_READY 0x01
vijaynvr 0:bc9f26b5dadf 64 #define ALS_ERROR_CODE 0xF0 // covers bits [7:4]
vijaynvr 0:bc9f26b5dadf 65 #define FW_ALS_RESULT_SCALER 0x120
vijaynvr 0:bc9f26b5dadf 66
vijaynvr 0:bc9f26b5dadf 67
vijaynvr 0:bc9f26b5dadf 68 #define DEFAULT_INTEGRATION_PERIOD 0x64
vijaynvr 0:bc9f26b5dadf 69 #define DEFAULT_LUX_RESOLUTION 0.56f
vijaynvr 0:bc9f26b5dadf 70 #define DEFAULT_ALS_SCALER 1
vijaynvr 0:bc9f26b5dadf 71 #define DEFAULT_ALS_GAIN 20
vijaynvr 0:bc9f26b5dadf 72 /**
vijaynvr 0:bc9f26b5dadf 73 * @brief This data type defines range measurment data.
vijaynvr 0:bc9f26b5dadf 74 */
vijaynvr 0:bc9f26b5dadf 75 typedef struct
vijaynvr 0:bc9f26b5dadf 76 {
vijaynvr 0:bc9f26b5dadf 77 float_t lux;
vijaynvr 0:bc9f26b5dadf 78 /**< Light measurement (Lux) */
vijaynvr 0:bc9f26b5dadf 79
vijaynvr 0:bc9f26b5dadf 80 uint32_t errorStatus;
vijaynvr 0:bc9f26b5dadf 81 /**< Error status of the current measurement. \n
vijaynvr 0:bc9f26b5dadf 82 * No Error := 0. \n
vijaynvr 0:bc9f26b5dadf 83 * Refer to product sheets for other error codes. */
vijaynvr 0:bc9f26b5dadf 84 }sensor_AlsData;
vijaynvr 0:bc9f26b5dadf 85
vijaynvr 0:bc9f26b5dadf 86
vijaynvr 0:bc9f26b5dadf 87 /*!
vijaynvr 0:bc9f26b5dadf 88 *
vijaynvr 0:bc9f26b5dadf 89 *\brief Device setup for ALS parameters. These settings can be applied at any time. The status of operation bit (bit 0) of the SYSALS_START is not important.
vijaynvr 0:bc9f26b5dadf 90 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 91 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 92 */
vijaynvr 0:bc9f26b5dadf 93 sensor_error als_set_dynamic_config(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 94
vijaynvr 0:bc9f26b5dadf 95 /*!
vijaynvr 0:bc9f26b5dadf 96 *\brief Set Mode and Operation commands in the SYSALS_START register.
vijaynvr 0:bc9f26b5dadf 97 *
vijaynvr 0:bc9f26b5dadf 98 * Possible combinations are : \n
vijaynvr 0:bc9f26b5dadf 99 * ALS_START_SINGLESHOT 0x01 (bit 0 set / bit 1 clear) \n
vijaynvr 0:bc9f26b5dadf 100 * ALS_START_CONTINUOUS 0x03 (bit 0 set / bit 1 set) \n
vijaynvr 0:bc9f26b5dadf 101 * ALS_STOP 0x01 (bit 0 set / bit 1 don't care) \n
vijaynvr 0:bc9f26b5dadf 102 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 103 *\param[in] mode Mode select/operation command to be written to the SYSALS_START register.
vijaynvr 0:bc9f26b5dadf 104 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 105 */
vijaynvr 0:bc9f26b5dadf 106 sensor_error als_set_systemMode(uint8_t device_base_address, uint8_t mode);
vijaynvr 0:bc9f26b5dadf 107
vijaynvr 0:bc9f26b5dadf 108 /*!
vijaynvr 0:bc9f26b5dadf 109 *\brief Report status of ALS mode-select and Stop/Start.
vijaynvr 0:bc9f26b5dadf 110 *
vijaynvr 0:bc9f26b5dadf 111 * Returns a reading of the SYSALS_START register. \n
vijaynvr 0:bc9f26b5dadf 112 * Possible results are : \n
vijaynvr 0:bc9f26b5dadf 113 * ALS_START_SINGLESHOT 0x01 (bit 0 set / bit 1 clear) \n
vijaynvr 0:bc9f26b5dadf 114 * ALS_START_CONTINUOUS 0x03 (bit 0 set / bit 1 set) \n
vijaynvr 0:bc9f26b5dadf 115 * ALS_STOP 0x01 (bit 0 set / bit 1 don't care) \n
vijaynvr 0:bc9f26b5dadf 116 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 117 *\retval uint8_t (unsigned, byte-wide integer)
vijaynvr 0:bc9f26b5dadf 118 */
vijaynvr 0:bc9f26b5dadf 119 uint8_t als_get_systemMode(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 120
vijaynvr 0:bc9f26b5dadf 121 /*!
vijaynvr 0:bc9f26b5dadf 122 *\brief Report 16-bit result from last ALS operation.
vijaynvr 0:bc9f26b5dadf 123 *
vijaynvr 0:bc9f26b5dadf 124 * Accesses the RESULT_ALS_VAL register, to report the latest ALS raw measurement.
vijaynvr 0:bc9f26b5dadf 125 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 126 *\retval uint16_t (unsigned, word-wide integer)
vijaynvr 0:bc9f26b5dadf 127 */
vijaynvr 0:bc9f26b5dadf 128 uint16_t als_get_result(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 129
vijaynvr 0:bc9f26b5dadf 130 /*!
vijaynvr 0:bc9f26b5dadf 131 *\brief Report 16-bit result from last ALS operation.
vijaynvr 0:bc9f26b5dadf 132 *
vijaynvr 0:bc9f26b5dadf 133 * Reads the latest ALS measurement and reports to the calling operation in LUX.
vijaynvr 0:bc9f26b5dadf 134 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 135 *\retval uint16_t (unsigned, word-wide integer)
vijaynvr 0:bc9f26b5dadf 136 */
vijaynvr 0:bc9f26b5dadf 137 uint16_t als_get_lux(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 138
vijaynvr 0:bc9f26b5dadf 139 /*!
vijaynvr 0:bc9f26b5dadf 140 *\brief Set min/max ALS thresholds (units?) in SYSALS_THRESH_LOW & SYSALS_THRESH_HIGH registers.
vijaynvr 0:bc9f26b5dadf 141 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 142 *\param[in] low_threshold Byte-wide, integer, ALS low threshold to be written to the SYSALS_THRESH_LOW register.
vijaynvr 0:bc9f26b5dadf 143 *\param[in] high_threshold Byte-wide, integer, ALS high threshold to be written to the SYSALS_THRESH_HIGH register.
vijaynvr 0:bc9f26b5dadf 144 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 145 */
vijaynvr 0:bc9f26b5dadf 146 sensor_error als_set_thresholds(uint8_t device_base_address, uint16_t low_threshold, uint16_t high_threshold);
vijaynvr 0:bc9f26b5dadf 147
vijaynvr 0:bc9f26b5dadf 148 /*!
vijaynvr 0:bc9f26b5dadf 149 *\brief Set ALS high threshold the SYSALS_THRESH_HIGH register.
vijaynvr 0:bc9f26b5dadf 150 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 151 *\param[in] threshold Word-wide, integer, ALS high threshold to be written to the SYSALS_THRESH_HIGH register.
vijaynvr 0:bc9f26b5dadf 152 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 153 */
vijaynvr 0:bc9f26b5dadf 154 sensor_error als_set_high_threshold(uint8_t device_base_address, uint16_t threshold);
vijaynvr 0:bc9f26b5dadf 155
vijaynvr 0:bc9f26b5dadf 156 /*!
vijaynvr 0:bc9f26b5dadf 157 *\brief Report ALS high threshold from the SYSALS_THRESH_HIGH register.
vijaynvr 0:bc9f26b5dadf 158 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 159 *\retval uint16_t (unsigned, word-wide integer)
vijaynvr 0:bc9f26b5dadf 160 */
vijaynvr 0:bc9f26b5dadf 161 uint16_t als_get_high_threshold(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 162
vijaynvr 0:bc9f26b5dadf 163 /*!
vijaynvr 0:bc9f26b5dadf 164 *\brief Set ALS low threshold the SYSALS_THRESH_LOW register.
vijaynvr 0:bc9f26b5dadf 165 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 166 *\param[in] threshold ALS low threshold to be written to the SYSALS_THRESH_LOW register.
vijaynvr 0:bc9f26b5dadf 167 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 168 */
vijaynvr 0:bc9f26b5dadf 169 sensor_error als_set_low_threshold(uint8_t device_base_address, uint16_t threshold);
vijaynvr 0:bc9f26b5dadf 170
vijaynvr 0:bc9f26b5dadf 171 /*!
vijaynvr 0:bc9f26b5dadf 172 *\brief Report ALS low threshold from the SYSALS_THRESH_LOW register.
vijaynvr 0:bc9f26b5dadf 173 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 174 *\retval uint16_t (unsigned, word-wide integer)
vijaynvr 0:bc9f26b5dadf 175 */
vijaynvr 0:bc9f26b5dadf 176 uint16_t als_get_low_threshold(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 177
vijaynvr 0:bc9f26b5dadf 178 /*!
vijaynvr 0:bc9f26b5dadf 179 *\brief Set ALS intermeasurement period in the SYSALS_INTERMEASUREMENT_PERIOD register.
vijaynvr 0:bc9f26b5dadf 180 *
vijaynvr 0:bc9f26b5dadf 181 * Range 10ms-2.55s, 1 code = 10 ms, code 0 = 10ms
vijaynvr 0:bc9f26b5dadf 182 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 183 *\param[in] intermeasurement_period: Time delay in ms between measurements in continuous-ALS mode.
vijaynvr 0:bc9f26b5dadf 184 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 185 */
vijaynvr 0:bc9f26b5dadf 186 sensor_error als_set_interMeasurement_period(uint8_t device_base_address, uint16_t intermeasurement_period);
vijaynvr 0:bc9f26b5dadf 187
vijaynvr 0:bc9f26b5dadf 188 /*!
vijaynvr 0:bc9f26b5dadf 189 *\brief Report ALS intermeasurement period from the SYSALS_INTERMEASUREMENT_PERIOD register.
vijaynvr 0:bc9f26b5dadf 190 *
vijaynvr 0:bc9f26b5dadf 191 * Range 0-2.55s, 1 code = 10 ms
vijaynvr 0:bc9f26b5dadf 192 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 193 *\retval an 16-bit integer as time in ms.
vijaynvr 0:bc9f26b5dadf 194 */
vijaynvr 0:bc9f26b5dadf 195 uint16_t als_get_interMeasurement_period(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 196
vijaynvr 0:bc9f26b5dadf 197 /*!
vijaynvr 0:bc9f26b5dadf 198 *\brief Set dark/light ALS analogue gains in the SYSALS_ANALOGUE_GAIN register.
vijaynvr 0:bc9f26b5dadf 199 *
vijaynvr 0:bc9f26b5dadf 200 * Light gain will be clipped to a maximum value of 7. \n
vijaynvr 0:bc9f26b5dadf 201 * Dark Gain is frozen at 4. \n
vijaynvr 0:bc9f26b5dadf 202 *
vijaynvr 0:bc9f26b5dadf 203 * [2:0] sysals_analogue_gain_light: ALS analogue gain (light channel) \n
vijaynvr 0:bc9f26b5dadf 204 * 0: ALS Gain = 20 \n
vijaynvr 0:bc9f26b5dadf 205 * 1: ALS Gain = 10 \n
vijaynvr 0:bc9f26b5dadf 206 * 2: ALS Gain = 5.0 \n
vijaynvr 0:bc9f26b5dadf 207 * 3: ALS Gain = 2.5 \n
vijaynvr 0:bc9f26b5dadf 208 * 4: ALS Gain = 1.67 \n
vijaynvr 0:bc9f26b5dadf 209 * 5: ALS Gain = 1.25 \n
vijaynvr 0:bc9f26b5dadf 210 * 6: ALS Gain = 1.0 \n
vijaynvr 0:bc9f26b5dadf 211 * 7: ALS Gain = 40 (testmode) \n
vijaynvr 0:bc9f26b5dadf 212 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 213 *\param[in] light_analogue_gain light gain
vijaynvr 0:bc9f26b5dadf 214 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 215 */
vijaynvr 0:bc9f26b5dadf 216 sensor_error als_set_analogue_gain(uint8_t device_base_address, uint8_t light_analogue_gain);
vijaynvr 0:bc9f26b5dadf 217
vijaynvr 0:bc9f26b5dadf 218 /*!
vijaynvr 0:bc9f26b5dadf 219 *\brief Report ALS analogue gain from the SYSALS_ANALOGUE_GAIN register.
vijaynvr 0:bc9f26b5dadf 220 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 221 *\retval an 8-bit integer.
vijaynvr 0:bc9f26b5dadf 222 */
vijaynvr 0:bc9f26b5dadf 223 uint8_t als_get_analogue_gain(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 224
vijaynvr 0:bc9f26b5dadf 225 /*!
vijaynvr 0:bc9f26b5dadf 226 *\brief Set ALS Integration Period in the SYSALS_INTEGRATION_PERIOD register.
vijaynvr 0:bc9f26b5dadf 227 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 228 *\param[in] integration_period Integration period for ALS mode, in ms. 1 code = 1ms [codes (0:464) == (1ms:465ms)]
vijaynvr 0:bc9f26b5dadf 229 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 230 */
vijaynvr 0:bc9f26b5dadf 231 sensor_error als_set_integration_period(uint8_t device_base_address, uint16_t integration_period);
vijaynvr 0:bc9f26b5dadf 232
vijaynvr 0:bc9f26b5dadf 233 /*!
vijaynvr 0:bc9f26b5dadf 234 *\brief Report ALS Integration Period from the SYSALS_INTEGRATION_PERIOD register.
vijaynvr 0:bc9f26b5dadf 235 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 236 *\retval a 16-bit integer.
vijaynvr 0:bc9f26b5dadf 237 */
vijaynvr 0:bc9f26b5dadf 238 uint16_t als_get_integration_period(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 239
vijaynvr 0:bc9f26b5dadf 240 /*!
vijaynvr 0:bc9f26b5dadf 241 *\brief Report ALS Result Status from RESULT_ALS_STATUS register.
vijaynvr 0:bc9f26b5dadf 242 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 243 *\retval an 8-bit integer.
vijaynvr 0:bc9f26b5dadf 244 */
vijaynvr 0:bc9f26b5dadf 245 uint8_t als_get_result_status(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 246
vijaynvr 0:bc9f26b5dadf 247 /*!
vijaynvr 0:bc9f26b5dadf 248 *\brief Report result_ALS_device_ready status in the ALS_RANGE_STATUS register.
vijaynvr 0:bc9f26b5dadf 249 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 250 *\retval True if the result_ALS_device_ready bit in the RESULT_ALS_STATUS register is set, otherwise False.
vijaynvr 0:bc9f26b5dadf 251 */
vijaynvr 0:bc9f26b5dadf 252 bool_t als_get_device_ready(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 253
vijaynvr 0:bc9f26b5dadf 254 /*!
vijaynvr 0:bc9f26b5dadf 255 *\brief Report ALS Result Error Codes from RESULT_ALS_STATUS register.
vijaynvr 0:bc9f26b5dadf 256 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 257 *\retval an 8-bit integer.
vijaynvr 0:bc9f26b5dadf 258 */
vijaynvr 0:bc9f26b5dadf 259 uint8_t als_get_result_error_codes(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 260
vijaynvr 0:bc9f26b5dadf 261 /*!
vijaynvr 0:bc9f26b5dadf 262 *\brief Enable Interleaved Mode.
vijaynvr 0:bc9f26b5dadf 263 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 264 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 265 */
vijaynvr 0:bc9f26b5dadf 266 sensor_error als_set_interleaved_mode(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 267
vijaynvr 0:bc9f26b5dadf 268 /*!
vijaynvr 0:bc9f26b5dadf 269 *\brief Disable Interleaved Mode.
vijaynvr 0:bc9f26b5dadf 270 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 271 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 272 */
vijaynvr 0:bc9f26b5dadf 273 sensor_error als_clear_interleaved_mode(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 274
vijaynvr 0:bc9f26b5dadf 275 /*!
vijaynvr 0:bc9f26b5dadf 276 *\brief Report Interleaved Mode.
vijaynvr 0:bc9f26b5dadf 277 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 278 *\retval an 8-bit integer.
vijaynvr 0:bc9f26b5dadf 279 */
vijaynvr 0:bc9f26b5dadf 280 uint8_t als_get_interleaved_mode(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 281
vijaynvr 0:bc9f26b5dadf 282 /*!
vijaynvr 0:bc9f26b5dadf 283 *\brief Set System Interrupt Config GPIO for ALS operations.
vijaynvr 0:bc9f26b5dadf 284
vijaynvr 0:bc9f26b5dadf 285 Returns True a valid command was completed successfully, otherwise False.\n
vijaynvr 0:bc9f26b5dadf 286 Possible settings are :\n
vijaynvr 0:bc9f26b5dadf 287 CONFIG_GPIO_INTERRUPT_DISABLED = 0x00 \n
vijaynvr 0:bc9f26b5dadf 288 CONFIG_GPIO_INTERRUPT_LEVEL_LOW = 0x01 \n
vijaynvr 0:bc9f26b5dadf 289 CONFIG_GPIO_INTERRUPT_LEVEL_HIGH = 0x02 \n
vijaynvr 0:bc9f26b5dadf 290 CONFIG_GPIO_INTERRUPT_OUT_OF_WINDOW = 0x03 \n
vijaynvr 0:bc9f26b5dadf 291 CONFIG_GPIO_INTERRUPT_NEW_SAMPLE_READY = 0x04 \n
vijaynvr 0:bc9f26b5dadf 292 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 293 *\param[in] ALS_GPIO_interrupt_config:
vijaynvr 0:bc9f26b5dadf 294 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 295 */
vijaynvr 0:bc9f26b5dadf 296 sensor_error als_set_system_interrupt_config_gpio(uint8_t device_base_address, uint8_t ALS_GPIO_interrupt_config);
vijaynvr 0:bc9f26b5dadf 297
vijaynvr 0:bc9f26b5dadf 298 /*!
vijaynvr 0:bc9f26b5dadf 299 *\brief Report System Interrupt Config GPIO ALS.
vijaynvr 0:bc9f26b5dadf 300
vijaynvr 0:bc9f26b5dadf 301 Returns the ALS-only portion of the SYSTEM_INTERRUPT_CONFIG_GPIO register.\n
vijaynvr 0:bc9f26b5dadf 302 Possible returns are : \n
vijaynvr 0:bc9f26b5dadf 303 CONFIG_GPIO_INTERRUPT_DISABLED = 0x00 \n
vijaynvr 0:bc9f26b5dadf 304 CONFIG_GPIO_INTERRUPT_LEVEL_LOW = 0x01 \n
vijaynvr 0:bc9f26b5dadf 305 CONFIG_GPIO_INTERRUPT_LEVEL_HIGH = 0x02 \n
vijaynvr 0:bc9f26b5dadf 306 CONFIG_GPIO_INTERRUPT_OUT_OF_WINDOW = 0x03 \n
vijaynvr 0:bc9f26b5dadf 307 CONFIG_GPIO_INTERRUPT_NEW_SAMPLE_READY = 0x04 \n
vijaynvr 0:bc9f26b5dadf 308 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 309 *\retval Integer
vijaynvr 0:bc9f26b5dadf 310 */
vijaynvr 0:bc9f26b5dadf 311 uint8_t als_get_system_interrupt_config_gpio(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 312
vijaynvr 0:bc9f26b5dadf 313 /*!
vijaynvr 0:bc9f26b5dadf 314 *\brief Report GPIO Interrupt Result Status for an ALS operation.
vijaynvr 0:bc9f26b5dadf 315
vijaynvr 0:bc9f26b5dadf 316 Returns the ALS-only portion of the RESULT_INTERRUPT_STATUS_GPIO register.\n
vijaynvr 0:bc9f26b5dadf 317 Possible returns are : \n
vijaynvr 0:bc9f26b5dadf 318 0: No threshold events reported \n
vijaynvr 0:bc9f26b5dadf 319 1: Level Low threshold event \n
vijaynvr 0:bc9f26b5dadf 320 2: Level High threshold event \n
vijaynvr 0:bc9f26b5dadf 321 3: Out Of Window threshold event \n
vijaynvr 0:bc9f26b5dadf 322 4: New Sample Ready threshold event \n
vijaynvr 0:bc9f26b5dadf 323 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 324 *\retval Integer
vijaynvr 0:bc9f26b5dadf 325 */
vijaynvr 0:bc9f26b5dadf 326 uint8_t als_get_result_interrupt_status_gpio(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 327
vijaynvr 0:bc9f26b5dadf 328
vijaynvr 0:bc9f26b5dadf 329 /*!
vijaynvr 0:bc9f26b5dadf 330 *\brief Clear ALS System Interrupt.
vijaynvr 0:bc9f26b5dadf 331 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 332 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 333 */
vijaynvr 0:bc9f26b5dadf 334 sensor_error als_set_system_interrupt_clear(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 335
vijaynvr 0:bc9f26b5dadf 336 /*!
vijaynvr 0:bc9f26b5dadf 337 *\brief Set history buffer to ALS mode and enable.
vijaynvr 0:bc9f26b5dadf 338 *\param[in] device_base_address
vijaynvr 0:bc9f26b5dadf 339 *\retval sensor_error
vijaynvr 0:bc9f26b5dadf 340 */
vijaynvr 0:bc9f26b5dadf 341 sensor_error als_set_history_buffer_mode_enable(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 342
vijaynvr 0:bc9f26b5dadf 343 sensor_error Get_ALS_History_Buffer(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 344
vijaynvr 0:bc9f26b5dadf 345 sensor_error als_set_scaler(uint8_t device_base_address, uint8_t scaler);
vijaynvr 0:bc9f26b5dadf 346
vijaynvr 0:bc9f26b5dadf 347 uint32_t als_get_scaler(uint8_t device_base_address);
vijaynvr 0:bc9f26b5dadf 348
vijaynvr 0:bc9f26b5dadf 349 #endif
vijaynvr 0:bc9f26b5dadf 350
vijaynvr 0:bc9f26b5dadf 351