VL6180x library

Fork of VL6180x_lib by Robotique FIP

Committer:
j_j205
Date:
Wed Feb 17 16:47:44 2016 +0000
Revision:
1:35a996054c44
Parent:
0:84fb42fedc5b
2/17/16 JJ

Who changed what in which revision?

UserRevisionLine numberNew contents of line
julientiron 0:84fb42fedc5b 1 /**
julientiron 0:84fb42fedc5b 2 * @file VL6180x.h
julientiron 0:84fb42fedc5b 3 * @brief Library for VL6180x time of flight range finder.
julientiron 0:84fb42fedc5b 4 * Casey Kuhns @ SparkFun Electronics
julientiron 0:84fb42fedc5b 5 * 10/29/2014
julientiron 0:84fb42fedc5b 6 * https://github.com/sparkfun/
julientiron 0:84fb42fedc5b 7 *
julientiron 0:84fb42fedc5b 8 * The VL6180x by ST micro is a time of flight range finder that
julientiron 0:84fb42fedc5b 9 * uses pulsed IR light to determine distances from object at close
julientiron 0:84fb42fedc5b 10 * range. The average range of a sensor is between 0-200mm
julientiron 0:84fb42fedc5b 11 *
julientiron 0:84fb42fedc5b 12 * In this file are the function prototypes in the VL6180x class
julientiron 0:84fb42fedc5b 13 *
julientiron 0:84fb42fedc5b 14 * Resources:
julientiron 0:84fb42fedc5b 15 * This library uses the Arduino Wire.h to complete I2C transactions.
julientiron 0:84fb42fedc5b 16 *
julientiron 0:84fb42fedc5b 17 * Development environment specifics:
julientiron 0:84fb42fedc5b 18 * IDE: Arduino 1.0.5
julientiron 0:84fb42fedc5b 19 * Hardware Platform: Arduino Pro 3.3V/8MHz
julientiron 0:84fb42fedc5b 20 * VL6180x Breakout Version: 1.0
julientiron 0:84fb42fedc5b 21 *
julientiron 0:84fb42fedc5b 22 * Some settings and initial values come from code written by Kris Winer
julientiron 0:84fb42fedc5b 23 * VL6180X_t3 Basic Example Code
julientiron 0:84fb42fedc5b 24 * by: Kris Winer
julientiron 0:84fb42fedc5b 25 * date: September 1, 2014
julientiron 0:84fb42fedc5b 26 * license: Beerware - Use this code however you'd like. If you
julientiron 0:84fb42fedc5b 27 * find it useful you can buy me a beer some time.
julientiron 0:84fb42fedc5b 28 *
julientiron 0:84fb42fedc5b 29 * This code is beerware. If you see me (or any other SparkFun employee) at the
julientiron 0:84fb42fedc5b 30 * local pub, and you've found our code helpful, please buy us a round!
julientiron 0:84fb42fedc5b 31 *
julientiron 0:84fb42fedc5b 32 * Distributed as-is; no warranty is given.
julientiron 0:84fb42fedc5b 33 */
j_j205 1:35a996054c44 34 /**
j_j205 1:35a996054c44 35 * VL6180x tof/als sensor example
j_j205 1:35a996054c44 36 *
j_j205 1:35a996054c44 37 * @code
j_j205 1:35a996054c44 38 #include "mbed.h"
j_j205 1:35a996054c44 39 #include <VL6180x.h>
j_j205 1:35a996054c44 40
j_j205 1:35a996054c44 41 const float GAIN_1 = 1.01; // Actual ALS Gain of 1.01
j_j205 1:35a996054c44 42 const float GAIN_1_25 = 1.28; // Actual ALS Gain of 1.28
j_j205 1:35a996054c44 43 const float GAIN_1_67 = 1.72; // Actual ALS Gain of 1.72
j_j205 1:35a996054c44 44 const float GAIN_2_5 = 2.6; // Actual ALS Gain of 2.60
j_j205 1:35a996054c44 45 const float GAIN_5 = 5.21; // Actual ALS Gain of 5.21
j_j205 1:35a996054c44 46 const float GAIN_10 = 10.32; // Actual ALS Gain of 10.32
j_j205 1:35a996054c44 47 const float GAIN_20 = 20; // Actual ALS Gain of 20
j_j205 1:35a996054c44 48 const float GAIN_40 = 40; // Actual ALS Gain of 40
j_j205 1:35a996054c44 49
j_j205 1:35a996054c44 50
j_j205 1:35a996054c44 51 #define VL6180X_ADDRESS 0x29
j_j205 1:35a996054c44 52
j_j205 1:35a996054c44 53 VL6180xIdentification identification;
j_j205 1:35a996054c44 54 // mbed uses 8bit addresses shift address by 1 bit left
j_j205 1:35a996054c44 55 VL6180x sensor(D14, D15, VL6180X_ADDRESS<<1);
j_j205 1:35a996054c44 56
j_j205 1:35a996054c44 57 void printIdentification(struct VL6180xIdentification *temp){
j_j205 1:35a996054c44 58 printf("Model ID = ");
j_j205 1:35a996054c44 59 printf("%d\n",temp->idModel);
j_j205 1:35a996054c44 60
j_j205 1:35a996054c44 61 printf("Model Rev = ");
j_j205 1:35a996054c44 62 printf("%d",temp->idModelRevMajor);
j_j205 1:35a996054c44 63 printf(".");
j_j205 1:35a996054c44 64 printf("%d\n",temp->idModelRevMinor);
j_j205 1:35a996054c44 65
j_j205 1:35a996054c44 66 printf("Module Rev = ");
j_j205 1:35a996054c44 67 printf("%d",temp->idModuleRevMajor);
j_j205 1:35a996054c44 68 printf(".");
j_j205 1:35a996054c44 69 printf("%d\n",temp->idModuleRevMinor);
j_j205 1:35a996054c44 70
j_j205 1:35a996054c44 71 printf("Manufacture Date = ");
j_j205 1:35a996054c44 72 printf("%d",((temp->idDate >> 3) & 0x001F));
j_j205 1:35a996054c44 73 printf("/");
j_j205 1:35a996054c44 74 printf("%d",((temp->idDate >> 8) & 0x000F));
j_j205 1:35a996054c44 75 printf("/1");
j_j205 1:35a996054c44 76 printf("%d\n",((temp->idDate >> 12) & 0x000F));
j_j205 1:35a996054c44 77 printf(" Phase: ");
j_j205 1:35a996054c44 78 printf("%d\n",(temp->idDate & 0x0007));
j_j205 1:35a996054c44 79
j_j205 1:35a996054c44 80 printf("Manufacture Time (s)= ");
j_j205 1:35a996054c44 81 printf("%d\n",(temp->idTime * 2));
j_j205 1:35a996054c44 82 printf("\n\n");
j_j205 1:35a996054c44 83 }
j_j205 1:35a996054c44 84 int main() {
j_j205 1:35a996054c44 85
j_j205 1:35a996054c44 86 wait_ms(100); // delay .1s
j_j205 1:35a996054c44 87
j_j205 1:35a996054c44 88 sensor.getIdentification(&identification); // Retrieve manufacture info from device memory
j_j205 1:35a996054c44 89 printIdentification(&identification); // Helper function to print all the Module information
j_j205 1:35a996054c44 90
j_j205 1:35a996054c44 91 if(sensor.VL6180xInit() != 0){
j_j205 1:35a996054c44 92 printf("FAILED TO INITALIZE\n"); //Initialize device and check for errors
j_j205 1:35a996054c44 93 };
j_j205 1:35a996054c44 94
j_j205 1:35a996054c44 95 sensor.VL6180xDefautSettings(); //Load default settings to get started.
j_j205 1:35a996054c44 96
j_j205 1:35a996054c44 97 wait_ms(1000); // delay 1s
j_j205 1:35a996054c44 98
j_j205 1:35a996054c44 99
j_j205 1:35a996054c44 100
j_j205 1:35a996054c44 101 while(1) {
j_j205 1:35a996054c44 102 //Get Ambient Light level and report in LUX
j_j205 1:35a996054c44 103 printf("Ambient Light Level (Lux) = ");
j_j205 1:35a996054c44 104
j_j205 1:35a996054c44 105 //Input GAIN for light levels,
j_j205 1:35a996054c44 106 // GAIN_20 // Actual ALS Gain of 20
j_j205 1:35a996054c44 107 // GAIN_10 // Actual ALS Gain of 10.32
j_j205 1:35a996054c44 108 // GAIN_5 // Actual ALS Gain of 5.21
j_j205 1:35a996054c44 109 // GAIN_2_5 // Actual ALS Gain of 2.60
j_j205 1:35a996054c44 110 // GAIN_1_67 // Actual ALS Gain of 1.72
j_j205 1:35a996054c44 111 // GAIN_1_25 // Actual ALS Gain of 1.28
j_j205 1:35a996054c44 112 // GAIN_1 // Actual ALS Gain of 1.01
j_j205 1:35a996054c44 113 // GAIN_40 // Actual ALS Gain of 40
j_j205 1:35a996054c44 114
j_j205 1:35a996054c44 115 printf("%f\n",sensor.getAmbientLight(GAIN_1) );
j_j205 1:35a996054c44 116
j_j205 1:35a996054c44 117 //Get Distance and report in mm
j_j205 1:35a996054c44 118 printf("Distance measured (mm) = ");
j_j205 1:35a996054c44 119 printf("%d\n", sensor.getDistance() );
j_j205 1:35a996054c44 120
j_j205 1:35a996054c44 121 wait_ms(500);
j_j205 1:35a996054c44 122 }
j_j205 1:35a996054c44 123 }
j_j205 1:35a996054c44 124 * @endcode
j_j205 1:35a996054c44 125 */
julientiron 0:84fb42fedc5b 126 #include "mbed.h"
julientiron 0:84fb42fedc5b 127 #ifndef VL6180x_h
julientiron 0:84fb42fedc5b 128 #define VL6180x_h
julientiron 0:84fb42fedc5b 129
julientiron 0:84fb42fedc5b 130 #define VL6180x_FAILURE_RESET -1
julientiron 0:84fb42fedc5b 131
julientiron 0:84fb42fedc5b 132 #define VL6180X_IDENTIFICATION_MODEL_ID 0x0000
julientiron 0:84fb42fedc5b 133 #define VL6180X_IDENTIFICATION_MODEL_REV_MAJOR 0x0001
julientiron 0:84fb42fedc5b 134 #define VL6180X_IDENTIFICATION_MODEL_REV_MINOR 0x0002
julientiron 0:84fb42fedc5b 135 #define VL6180X_IDENTIFICATION_MODULE_REV_MAJOR 0x0003
julientiron 0:84fb42fedc5b 136 #define VL6180X_IDENTIFICATION_MODULE_REV_MINOR 0x0004
julientiron 0:84fb42fedc5b 137 #define VL6180X_IDENTIFICATION_DATE 0x0006 //16bit value
julientiron 0:84fb42fedc5b 138 #define VL6180X_IDENTIFICATION_TIME 0x0008 //16bit value
julientiron 0:84fb42fedc5b 139
julientiron 0:84fb42fedc5b 140 #define VL6180X_SYSTEM_MODE_GPIO0 0x0010
julientiron 0:84fb42fedc5b 141 #define VL6180X_SYSTEM_MODE_GPIO1 0x0011
julientiron 0:84fb42fedc5b 142 #define VL6180X_SYSTEM_HISTORY_CTRL 0x0012
julientiron 0:84fb42fedc5b 143 #define VL6180X_SYSTEM_INTERRUPT_CONFIG_GPIO 0x0014
julientiron 0:84fb42fedc5b 144 #define VL6180X_SYSTEM_INTERRUPT_CLEAR 0x0015
julientiron 0:84fb42fedc5b 145 #define VL6180X_SYSTEM_FRESH_OUT_OF_RESET 0x0016
julientiron 0:84fb42fedc5b 146 #define VL6180X_SYSTEM_GROUPED_PARAMETER_HOLD 0x0017
julientiron 0:84fb42fedc5b 147
julientiron 0:84fb42fedc5b 148 #define VL6180X_SYSRANGE_START 0x0018
julientiron 0:84fb42fedc5b 149 #define VL6180X_SYSRANGE_THRESH_HIGH 0x0019
julientiron 0:84fb42fedc5b 150 #define VL6180X_SYSRANGE_THRESH_LOW 0x001A
julientiron 0:84fb42fedc5b 151 #define VL6180X_SYSRANGE_INTERMEASUREMENT_PERIOD 0x001B
julientiron 0:84fb42fedc5b 152 #define VL6180X_SYSRANGE_MAX_CONVERGENCE_TIME 0x001C
julientiron 0:84fb42fedc5b 153 #define VL6180X_SYSRANGE_CROSSTALK_COMPENSATION_RATE 0x001E
julientiron 0:84fb42fedc5b 154 #define VL6180X_SYSRANGE_CROSSTALK_VALID_HEIGHT 0x0021
julientiron 0:84fb42fedc5b 155 #define VL6180X_SYSRANGE_EARLY_CONVERGENCE_ESTIMATE 0x0022
julientiron 0:84fb42fedc5b 156 #define VL6180X_SYSRANGE_PART_TO_PART_RANGE_OFFSET 0x0024
julientiron 0:84fb42fedc5b 157 #define VL6180X_SYSRANGE_RANGE_IGNORE_VALID_HEIGHT 0x0025
julientiron 0:84fb42fedc5b 158 #define VL6180X_SYSRANGE_RANGE_IGNORE_THRESHOLD 0x0026
julientiron 0:84fb42fedc5b 159 #define VL6180X_SYSRANGE_MAX_AMBIENT_LEVEL_MULT 0x002C
julientiron 0:84fb42fedc5b 160 #define VL6180X_SYSRANGE_RANGE_CHECK_ENABLES 0x002D
julientiron 0:84fb42fedc5b 161 #define VL6180X_SYSRANGE_VHV_RECALIBRATE 0x002E
julientiron 0:84fb42fedc5b 162 #define VL6180X_SYSRANGE_VHV_REPEAT_RATE 0x0031
julientiron 0:84fb42fedc5b 163
julientiron 0:84fb42fedc5b 164 #define VL6180X_SYSALS_START 0x0038
julientiron 0:84fb42fedc5b 165 #define VL6180X_SYSALS_THRESH_HIGH 0x003A
julientiron 0:84fb42fedc5b 166 #define VL6180X_SYSALS_THRESH_LOW 0x003C
julientiron 0:84fb42fedc5b 167 #define VL6180X_SYSALS_INTERMEASUREMENT_PERIOD 0x003E
julientiron 0:84fb42fedc5b 168 #define VL6180X_SYSALS_ANALOGUE_GAIN 0x003F
julientiron 0:84fb42fedc5b 169 #define VL6180X_SYSALS_INTEGRATION_PERIOD 0x0040
julientiron 0:84fb42fedc5b 170
julientiron 0:84fb42fedc5b 171 #define VL6180X_RESULT_RANGE_STATUS 0x004D
julientiron 0:84fb42fedc5b 172 #define VL6180X_RESULT_ALS_STATUS 0x004E
julientiron 0:84fb42fedc5b 173 #define VL6180X_RESULT_INTERRUPT_STATUS_GPIO 0x004F
julientiron 0:84fb42fedc5b 174 #define VL6180X_RESULT_ALS_VAL 0x0050
julientiron 0:84fb42fedc5b 175 #define VL6180X_RESULT_HISTORY_BUFFER 0x0052
julientiron 0:84fb42fedc5b 176 #define VL6180X_RESULT_RANGE_VAL 0x0062
julientiron 0:84fb42fedc5b 177 #define VL6180X_RESULT_RANGE_RAW 0x0064
julientiron 0:84fb42fedc5b 178 #define VL6180X_RESULT_RANGE_RETURN_RATE 0x0066
julientiron 0:84fb42fedc5b 179 #define VL6180X_RESULT_RANGE_REFERENCE_RATE 0x0068
julientiron 0:84fb42fedc5b 180 #define VL6180X_RESULT_RANGE_RETURN_SIGNAL_COUNT 0x006C
julientiron 0:84fb42fedc5b 181 #define VL6180X_RESULT_RANGE_REFERENCE_SIGNAL_COUNT 0x0070
julientiron 0:84fb42fedc5b 182 #define VL6180X_RESULT_RANGE_RETURN_AMB_COUNT 0x0074
julientiron 0:84fb42fedc5b 183 #define VL6180X_RESULT_RANGE_REFERENCE_AMB_COUNT 0x0078
julientiron 0:84fb42fedc5b 184 #define VL6180X_RESULT_RANGE_RETURN_CONV_TIME 0x007C
julientiron 0:84fb42fedc5b 185 #define VL6180X_RESULT_RANGE_REFERENCE_CONV_TIME 0x0080
julientiron 0:84fb42fedc5b 186
julientiron 0:84fb42fedc5b 187 #define VL6180X_READOUT_AVERAGING_SAMPLE_PERIOD 0x010A
julientiron 0:84fb42fedc5b 188 #define VL6180X_FIRMWARE_BOOTUP 0x0119
julientiron 0:84fb42fedc5b 189 #define VL6180X_FIRMWARE_RESULT_SCALER 0x0120
julientiron 0:84fb42fedc5b 190 #define VL6180X_I2C_SLAVE_DEVICE_ADDRESS 0x0212
julientiron 0:84fb42fedc5b 191 #define VL6180X_INTERLEAVED_MODE_ENABLE 0x02A3
julientiron 0:84fb42fedc5b 192
julientiron 0:84fb42fedc5b 193 /**
julientiron 0:84fb42fedc5b 194 * gain settings for ALS
julientiron 0:84fb42fedc5b 195 *Data sheet shows gain values as binary list
julientiron 0:84fb42fedc5b 196 */
julientiron 0:84fb42fedc5b 197 enum vl6180x_als_gain {
julientiron 0:84fb42fedc5b 198
julientiron 0:84fb42fedc5b 199 GAIN_20 = 0, // Actual ALS Gain of 20
julientiron 0:84fb42fedc5b 200 GAIN_10, // Actual ALS Gain of 10.32
julientiron 0:84fb42fedc5b 201 GAIN_5, // Actual ALS Gain of 5.21
julientiron 0:84fb42fedc5b 202 GAIN_2_5, // Actual ALS Gain of 2.60
julientiron 0:84fb42fedc5b 203 GAIN_1_67, // Actual ALS Gain of 1.72
julientiron 0:84fb42fedc5b 204 GAIN_1_25, // Actual ALS Gain of 1.28
julientiron 0:84fb42fedc5b 205 GAIN_1 , // Actual ALS Gain of 1.01
julientiron 0:84fb42fedc5b 206 GAIN_40, // Actual ALS Gain of 40
julientiron 0:84fb42fedc5b 207
julientiron 0:84fb42fedc5b 208 };
julientiron 0:84fb42fedc5b 209 /**
julientiron 0:84fb42fedc5b 210 * VL6180xIdentification
julientiron 0:84fb42fedc5b 211 * @brief structure to hold module identification
julientiron 0:84fb42fedc5b 212 *
julientiron 0:84fb42fedc5b 213 * @param idModel Model number
julientiron 0:84fb42fedc5b 214 * @param idModelRevMajor Major revision
julientiron 0:84fb42fedc5b 215 * @param idModelRevMinor Minor revision
julientiron 0:84fb42fedc5b 216 * @param idModuleRevMajor Module Major revision
julientiron 0:84fb42fedc5b 217 * @param idModuleRevMinor Module Minor revision
julientiron 0:84fb42fedc5b 218 * @param idDate Date of manufacture
julientiron 0:84fb42fedc5b 219 * @param idTime Seconds after midnight manufacture
julientiron 0:84fb42fedc5b 220 */
julientiron 0:84fb42fedc5b 221 struct VL6180xIdentification {
julientiron 0:84fb42fedc5b 222 uint8_t idModel;
julientiron 0:84fb42fedc5b 223 uint8_t idModelRevMajor;
julientiron 0:84fb42fedc5b 224 uint8_t idModelRevMinor;
julientiron 0:84fb42fedc5b 225 uint8_t idModuleRevMajor;
julientiron 0:84fb42fedc5b 226 uint8_t idModuleRevMinor;
julientiron 0:84fb42fedc5b 227 uint16_t idDate;
julientiron 0:84fb42fedc5b 228 uint16_t idTime;
julientiron 0:84fb42fedc5b 229 };
julientiron 0:84fb42fedc5b 230
julientiron 0:84fb42fedc5b 231 class VL6180x
julientiron 0:84fb42fedc5b 232 {
julientiron 0:84fb42fedc5b 233 public:
julientiron 0:84fb42fedc5b 234 /**
julientiron 0:84fb42fedc5b 235 * VL6180x constructor
julientiron 0:84fb42fedc5b 236 *
julientiron 0:84fb42fedc5b 237 * @param sda SDA pin
julientiron 0:84fb42fedc5b 238 * @param sdl SCL pin
julientiron 0:84fb42fedc5b 239 * @param addr addr of the I2C peripheral
julientiron 0:84fb42fedc5b 240 */
julientiron 0:84fb42fedc5b 241 VL6180x(PinName sda, PinName scl, uint8_t addr);
julientiron 0:84fb42fedc5b 242 /**
julientiron 0:84fb42fedc5b 243 * VL6180x destructor
julientiron 0:84fb42fedc5b 244 */
julientiron 0:84fb42fedc5b 245 ~VL6180x();
julientiron 0:84fb42fedc5b 246 /**
julientiron 0:84fb42fedc5b 247 * Send mandatory settings as stated in ST datasheet.
julientiron 0:84fb42fedc5b 248 * http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/DM00122600.pdf (Section 1.3)
julientiron 0:84fb42fedc5b 249 * @returns 0 if ok
julientiron 0:84fb42fedc5b 250 * @returns -1 on error*/
julientiron 0:84fb42fedc5b 251 int VL6180xInit(void);
julientiron 0:84fb42fedc5b 252 /**
julientiron 0:84fb42fedc5b 253 * Use default settings from ST data sheet section 9.
julientiron 0:84fb42fedc5b 254 *
julientiron 0:84fb42fedc5b 255 * http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/DM00122600.pdf
julientiron 0:84fb42fedc5b 256 */
julientiron 0:84fb42fedc5b 257 void VL6180xDefautSettings(void);
julientiron 0:84fb42fedc5b 258 /**
julientiron 0:84fb42fedc5b 259 * Get Range distance in (mm)
julientiron 0:84fb42fedc5b 260 * @returns TOF distance in mm
julientiron 0:84fb42fedc5b 261 */
julientiron 0:84fb42fedc5b 262 uint8_t getDistance();
julientiron 0:84fb42fedc5b 263 /**
julientiron 0:84fb42fedc5b 264 * Get ALS level in Lux
julientiron 0:84fb42fedc5b 265 * @param vl6180x_als_gain gain setting for sensor
julientiron 0:84fb42fedc5b 266 * @param sdl SCL pin
julientiron 0:84fb42fedc5b 267 * @param addr addr of the I2C peripheral
julientiron 0:84fb42fedc5b 268 * @returns light level in Lux
julientiron 0:84fb42fedc5b 269 */
julientiron 0:84fb42fedc5b 270 float getAmbientLight(vl6180x_als_gain VL6180X_ALS_GAIN);
julientiron 0:84fb42fedc5b 271 /**
julientiron 0:84fb42fedc5b 272 * Load structure provided by the user with identification info
julientiron 0:84fb42fedc5b 273 * Structure example:
julientiron 0:84fb42fedc5b 274 * struct VL6180xIdentification
julientiron 0:84fb42fedc5b 275 */
julientiron 0:84fb42fedc5b 276 void getIdentification(struct VL6180xIdentification *temp);
julientiron 0:84fb42fedc5b 277
julientiron 0:84fb42fedc5b 278 /**
julientiron 0:84fb42fedc5b 279 * Change the default address of the device to allow multiple
julientiron 0:84fb42fedc5b 280 * sensors on the bus. Can use up to 127 sensors. New address
julientiron 0:84fb42fedc5b 281 * is saved in non-volatile device memory.
julientiron 0:84fb42fedc5b 282 * @param old_address current address
julientiron 0:84fb42fedc5b 283 * @param new_address desired new address
julientiron 0:84fb42fedc5b 284 * @returns new address
julientiron 0:84fb42fedc5b 285 */
julientiron 0:84fb42fedc5b 286 uint8_t changeAddress(uint8_t old_address, uint8_t new_address);
julientiron 0:84fb42fedc5b 287
julientiron 0:84fb42fedc5b 288
julientiron 0:84fb42fedc5b 289 private:
julientiron 0:84fb42fedc5b 290 //Store address given when the class is initialized.
julientiron 0:84fb42fedc5b 291 //This value can be changed by the changeAddress() function
julientiron 0:84fb42fedc5b 292 I2C m_i2c;
julientiron 0:84fb42fedc5b 293 int m_addr;
julientiron 0:84fb42fedc5b 294 /**
julientiron 0:84fb42fedc5b 295 * read 8 bit register
julientiron 0:84fb42fedc5b 296 * @param registerAddr address for register
julientiron 0:84fb42fedc5b 297 * @returns contents of register
julientiron 0:84fb42fedc5b 298 */
julientiron 0:84fb42fedc5b 299 uint8_t VL6180x_getRegister(uint16_t registerAddr);
julientiron 0:84fb42fedc5b 300 /**
julientiron 0:84fb42fedc5b 301 * read 16 bit register
julientiron 0:84fb42fedc5b 302 * @param registerAddr address for register
julientiron 0:84fb42fedc5b 303 * @param returns contents of register
julientiron 0:84fb42fedc5b 304 */
julientiron 0:84fb42fedc5b 305 uint16_t VL6180x_getRegister16bit(uint16_t registerAddr);
julientiron 0:84fb42fedc5b 306 /**
julientiron 0:84fb42fedc5b 307 * write 8 bit register
julientiron 0:84fb42fedc5b 308 * @param registerAddr address for register
julientiron 0:84fb42fedc5b 309 * @returns ERROR
julientiron 0:84fb42fedc5b 310 */
julientiron 0:84fb42fedc5b 311 void VL6180x_setRegister(uint16_t registerAddr, uint8_t data);
julientiron 0:84fb42fedc5b 312 /**
julientiron 0:84fb42fedc5b 313 * write 16 bit register
julientiron 0:84fb42fedc5b 314 * @param registerAddr address for register
julientiron 0:84fb42fedc5b 315 * @returns ERROR
julientiron 0:84fb42fedc5b 316 */
julientiron 0:84fb42fedc5b 317 void VL6180x_setRegister16bit(uint16_t registerAddr, uint16_t data);
julientiron 0:84fb42fedc5b 318 };
julientiron 0:84fb42fedc5b 319
julientiron 0:84fb42fedc5b 320 #endif