INSAT Mini Project

Dependencies:   ST_INTERFACES X_NUCLEO_COMMON

Fork of X_NUCLEO_6180XA1 by ST

Committer:
gallonm
Date:
Thu Sep 17 10:41:21 2015 +0200
Revision:
4:a5abf7757947
Parent:
3:454541a079f4
Child:
7:2dc81120c917
First compile of Init function and ReadID function

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gallonm 1:1de1ea2994d9 1 /**
gallonm 1:1de1ea2994d9 2 ******************************************************************************
gallonm 1:1de1ea2994d9 3 * @file vl6180x_class.h
gallonm 1:1de1ea2994d9 4 * @author AST / EST
gallonm 1:1de1ea2994d9 5 * @version V0.0.1
gallonm 1:1de1ea2994d9 6 * @date 14-April-2015
gallonm 1:1de1ea2994d9 7 * @brief Header file for component VL6180X
gallonm 1:1de1ea2994d9 8 ******************************************************************************
gallonm 1:1de1ea2994d9 9 * @attention
gallonm 1:1de1ea2994d9 10 *
gallonm 1:1de1ea2994d9 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
gallonm 1:1de1ea2994d9 12 *
gallonm 1:1de1ea2994d9 13 * Redistribution and use in source and binary forms, with or without modification,
gallonm 1:1de1ea2994d9 14 * are permitted provided that the following conditions are met:
gallonm 1:1de1ea2994d9 15 * 1. Redistributions of source code must retain the above copyright notice,
gallonm 1:1de1ea2994d9 16 * this list of conditions and the following disclaimer.
gallonm 1:1de1ea2994d9 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
gallonm 1:1de1ea2994d9 18 * this list of conditions and the following disclaimer in the documentation
gallonm 1:1de1ea2994d9 19 * and/or other materials provided with the distribution.
gallonm 1:1de1ea2994d9 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
gallonm 1:1de1ea2994d9 21 * may be used to endorse or promote products derived from this software
gallonm 1:1de1ea2994d9 22 * without specific prior written permission.
gallonm 1:1de1ea2994d9 23 *
gallonm 1:1de1ea2994d9 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
gallonm 1:1de1ea2994d9 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
gallonm 1:1de1ea2994d9 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
gallonm 1:1de1ea2994d9 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
gallonm 1:1de1ea2994d9 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
gallonm 1:1de1ea2994d9 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
gallonm 1:1de1ea2994d9 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
gallonm 1:1de1ea2994d9 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
gallonm 1:1de1ea2994d9 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
gallonm 1:1de1ea2994d9 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
gallonm 1:1de1ea2994d9 34 *
gallonm 1:1de1ea2994d9 35 ******************************************************************************
gallonm 1:1de1ea2994d9 36 */
gallonm 1:1de1ea2994d9 37
gallonm 1:1de1ea2994d9 38 #ifndef __VL6180X_CLASS_H
gallonm 1:1de1ea2994d9 39 #define __VL6180X_CLASS_H
gallonm 1:1de1ea2994d9 40
gallonm 1:1de1ea2994d9 41 /* Includes ------------------------------------------------------------------*/
gallonm 1:1de1ea2994d9 42 #include "RangeSensor.h"
gallonm 1:1de1ea2994d9 43 #include "LightSensor.h"
gallonm 4:a5abf7757947 44 #include "DevI2C.h" //temporaneo fino alla creazione della classe x_nucleo_6180xa1
gallonm 1:1de1ea2994d9 45 #include "vl6180x_api.h"
gallonm 1:1de1ea2994d9 46 #include "vl6180x_cfg.h"
gallonm 1:1de1ea2994d9 47 #include "vl6180x_def.h"
gallonm 1:1de1ea2994d9 48 #include "vl6180x_types.h"
gallonm 1:1de1ea2994d9 49 #include "vl6180x_platform.h"
gallonm 1:1de1ea2994d9 50 #include "vl6180x_appcfg.h"
gallonm 1:1de1ea2994d9 51
gallonm 4:a5abf7757947 52 /** default device address */
gallonm 4:a5abf7757947 53 #define DEFAULT_DEVICE_ADDRESS 0x29
gallonm 4:a5abf7757947 54 /** default value ECE factor Molecular */
gallonm 4:a5abf7757947 55 #define DEF_ECE_FACTOR_M 85
gallonm 4:a5abf7757947 56 /** default value ECE factor Denominator */
gallonm 4:a5abf7757947 57 #define DEF_ECE_FACTOR_D 100
gallonm 4:a5abf7757947 58 /** default value ALS integration time */
gallonm 4:a5abf7757947 59 #define DEF_INT_PEFRIOD 100
gallonm 4:a5abf7757947 60 /** default value ALS gain */
gallonm 4:a5abf7757947 61 #define DEF_ALS_GAIN 1
gallonm 4:a5abf7757947 62 /** default value ALS scaler */
gallonm 4:a5abf7757947 63 #define DEF_ALS_SCALER 1
gallonm 4:a5abf7757947 64 /** default value for DMAX Enbale */
gallonm 4:a5abf7757947 65 #define DEF_DMAX_ENABLE 1
gallonm 4:a5abf7757947 66 /** default ambient tuning factor %x1000 */
gallonm 4:a5abf7757947 67 #define DEF_AMBIENT_TUNING 80
gallonm 4:a5abf7757947 68
gallonm 4:a5abf7757947 69 /*
gallonm 4:a5abf7757947 70 typedef struct
gallonm 4:a5abf7757947 71 {
gallonm 4:a5abf7757947 72 struct VL6180xDevData_t Data;
gallonm 4:a5abf7757947 73 uint8_t I2cAddr;
gallonm 4:a5abf7757947 74 uint8_t DevID;
gallonm 4:a5abf7757947 75
gallonm 4:a5abf7757947 76 unsigned Present;
gallonm 4:a5abf7757947 77 unsigned Ready;
gallonm 4:a5abf7757947 78 }MyVL6180xDev_t;
gallonm 4:a5abf7757947 79 */
gallonm 4:a5abf7757947 80
gallonm 1:1de1ea2994d9 81 /* Classes -------------------------------------------------------------------*/
gallonm 1:1de1ea2994d9 82 /** Class representing a VL6180X sensor component
gallonm 1:1de1ea2994d9 83 */
gallonm 1:1de1ea2994d9 84 class VL6180X : public RangeSensor, public LightSensor {
gallonm 1:1de1ea2994d9 85 public:
gallonm 1:1de1ea2994d9 86 /** Constructor
gallonm 1:1de1ea2994d9 87 * @param[in] i2c device I2C to be used for communication
gallonm 4:a5abf7757947 88 * @param[in] device address, 0x29 by default
gallonm 1:1de1ea2994d9 89 */
gallonm 4:a5abf7757947 90 VL6180X(DevI2C &i2c, uint8_t DevAddr=DEFAULT_DEVICE_ADDRESS) : RangeSensor(), LightSensor(), dev_i2c(i2c)
gallonm 4:a5abf7757947 91 {
gallonm 4:a5abf7757947 92 MyDeviceAddress=DevAddr;
gallonm 4:a5abf7757947 93 RangeLight_id=0;
gallonm 4:a5abf7757947 94 //MyDevice.I2cAddr=DevAddr;
gallonm 4:a5abf7757947 95 //MyDevice.DeviID=0;
gallonm 4:a5abf7757947 96 //MyDevice.Present=0;
gallonm 4:a5abf7757947 97 //MyDevice.Ready=0;
gallonm 4:a5abf7757947 98 //oppure MyVL6180xDev_t MyDevice={DevAddr, 0, 0, 0};
gallonm 4:a5abf7757947 99 }
gallonm 1:1de1ea2994d9 100
gallonm 1:1de1ea2994d9 101 /** Destructor
gallonm 1:1de1ea2994d9 102 */
gallonm 4:a5abf7757947 103 /*virtual ~VL6180X()
gallonm 4:a5abf7757947 104 {
gallonm 4:a5abf7757947 105 // delete[] memory allocated
gallonm 4:a5abf7757947 106 VL6180x_SetupGPIOx(MyDevice, 0, 0, 0);
gallonm 4:a5abf7757947 107 } */
gallonm 4:a5abf7757947 108
gallonm 4:a5abf7757947 109 // funzione che setta il paremetro DevID: SetDevID(int n)
gallonm 4:a5abf7757947 110 // funzione che setta il parametro Present: SetPresent(int n)
gallonm 4:a5abf7757947 111 // funzione che setta il parametro Ready: SetReady(int n)
gallonm 4:a5abf7757947 112 // funzione che modifica lo slave address: SetI2CAddress(VL6180xDev_t MyDevice, uint8_t NewAddress))
gallonm 1:1de1ea2994d9 113
gallonm 1:1de1ea2994d9 114 /*** Interface Methods ***/
gallonm 4:a5abf7757947 115 // nel momento in cui creo la classe x_nucleo_6180xa1, all'interno definisco un oggetto VL6180xDev_t MyDevice
gallonm 4:a5abf7757947 116 // definisco una funzione Init() che chiama a sua volta la seguente funzione Init() e gli passo MyDevice
gallonm 4:a5abf7757947 117 /*virtual*/ int Init() //par:void *init_struct
gallonm 4:a5abf7757947 118 {
gallonm 4:a5abf7757947 119 return VL6180x_InitData(MyDevice); // a questa funzione devo passare il parametro di Init()
gallonm 1:1de1ea2994d9 120 }
gallonm 3:454541a079f4 121
gallonm 4:a5abf7757947 122 // nel momento in cui creo la classe x_nucleo_6180xa1, all'interno definisco un oggetto uint_t *RangeLight_id
gallonm 4:a5abf7757947 123 // definisco una funzione ReadID() che chiama a sua volta la seguente funzione ReadID() e gli passo RangeLight_id
gallonm 4:a5abf7757947 124 /*virtual*/ int ReadID() //par:uint8_t *rl_id
gallonm 4:a5abf7757947 125 {
gallonm 4:a5abf7757947 126 return VL6180X_ReadID(&RangeLight_id); // a questa funzione devo passare il parametro di ReadID()
gallonm 1:1de1ea2994d9 127 }
gallonm 4:a5abf7757947 128
gallonm 3:454541a079f4 129 /*
gallonm 3:454541a079f4 130 virtual int GetRange(int *piData) {
gallonm 3:454541a079f4 131 return VL6180X_GetRange(piData);
gallonm 1:1de1ea2994d9 132 }
gallonm 1:1de1ea2994d9 133
gallonm 3:454541a079f4 134 virtual int GetLight(int *piData) {
gallonm 3:454541a079f4 135 return VL6180X_GetLight(piData);
gallonm 3:454541a079f4 136 }
gallonm 3:454541a079f4 137 */
gallonm 1:1de1ea2994d9 138
gallonm 4:a5abf7757947 139 /* Initialization functions */
gallonm 4:a5abf7757947 140 int VL6180x_InitData(VL6180xDev_t dev);
gallonm 4:a5abf7757947 141 /*static*/ int _DMax_InitData(VL6180xDev_t dev);
gallonm 4:a5abf7757947 142 void _DMax_OneTimeInit(VL6180xDev_t dev);
gallonm 4:a5abf7757947 143 /*static*/ uint32_t _DMax_RawValueAtRateKCps(VL6180xDev_t dev, int32_t rate);
gallonm 4:a5abf7757947 144 uint32_t VL6180x_SqrtUint32(uint32_t num);
gallonm 4:a5abf7757947 145
gallonm 4:a5abf7757947 146 /* IO read funcitons */
gallonm 4:a5abf7757947 147 int VL6180X_ReadID(uint8_t *rl_id);
gallonm 4:a5abf7757947 148 int VL6180X_IO_Read(uint8_t *pBuffer, uint8_t RegisterAddress, uint16_t NumByteToRead);
gallonm 4:a5abf7757947 149
gallonm 4:a5abf7757947 150 /* Write and read functions from I2C */
gallonm 4:a5abf7757947 151 int VL6180x_WrByte(VL6180xDev_t dev, uint16_t index, uint8_t data);
gallonm 4:a5abf7757947 152 int VL6180x_WrWord(VL6180xDev_t dev, uint16_t index, uint16_t data);
gallonm 4:a5abf7757947 153 int VL6180x_WrDWord(VL6180xDev_t dev, uint16_t index, uint32_t data);
gallonm 4:a5abf7757947 154 int VL6180x_RdByte(VL6180xDev_t dev, uint16_t index, uint8_t *data);
gallonm 4:a5abf7757947 155 int VL6180x_RdWord(VL6180xDev_t dev, uint16_t index, uint16_t *data);
gallonm 4:a5abf7757947 156 int VL6180x_RdDWord(VL6180xDev_t dev, uint16_t index, uint32_t *data);
gallonm 4:a5abf7757947 157 int VL6180x_I2CWrite(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToWrite);
gallonm 4:a5abf7757947 158 int VL6180x_I2CRead(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToRead);
gallonm 4:a5abf7757947 159
gallonm 4:a5abf7757947 160
gallonm 4:a5abf7757947 161
gallonm 3:454541a079f4 162 private:
gallonm 3:454541a079f4 163 /*** Methods ***/
gallonm 4:a5abf7757947 164
gallonm 3:454541a079f4 165
gallonm 3:454541a079f4 166
gallonm 1:1de1ea2994d9 167
gallonm 1:1de1ea2994d9 168 /*** Instance Variables ***/
gallonm 1:1de1ea2994d9 169 /* IO Device */
gallonm 4:a5abf7757947 170 //temporaneo
gallonm 4:a5abf7757947 171 DevI2C &dev_i2c; // creo questa variabile in x_nucleo_6180xa1.h allo stesso modo e poi passo al costruttore del MyDevice il suo indirizzo
gallonm 4:a5abf7757947 172 //MyVL6180xDev_t MyDevice; in sostituzione di VL6180xDev_t sotto
gallonm 3:454541a079f4 173
gallonm 4:a5abf7757947 174 /* VL6180X Device */
gallonm 4:a5abf7757947 175 uint8_t MyDeviceAddress;
gallonm 4:a5abf7757947 176 //temporanei
gallonm 4:a5abf7757947 177 VL6180xDev_t MyDevice; // creo questa variabile in x_nucleo_6180xa1.h allo stesso modo e poi passo alla funzione Init()
gallonm 4:a5abf7757947 178 uint8_t RangeLight_id; // creo questa variabile in x_nucleo_6180xa1.h allo stesso modo e poi passo alla funzione ReadID() il suo indirizzo
gallonm 1:1de1ea2994d9 179
gallonm 1:1de1ea2994d9 180 };
gallonm 1:1de1ea2994d9 181
gallonm 4:a5abf7757947 182 #endif // __VL6180X_CLASS_H