vlx lib
als_driver.h@0:bc9f26b5dadf, 2015-02-08 (annotated)
- Committer:
- vijaynvr
- Date:
- Sun Feb 08 14:26:51 2015 +0000
- Revision:
- 0:bc9f26b5dadf
working
Who changed what in which revision?
User | Revision | Line number | New 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 |