Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of X_NUCLEO_6180XA1 by
Diff: Components/VL6180X/vl6180x_class.h
- Revision:
- 4:a5abf7757947
- Parent:
- 3:454541a079f4
- Child:
- 7:2dc81120c917
--- a/Components/VL6180X/vl6180x_class.h Fri Sep 11 14:39:00 2015 +0200 +++ b/Components/VL6180X/vl6180x_class.h Thu Sep 17 10:41:21 2015 +0200 @@ -41,14 +41,43 @@ /* Includes ------------------------------------------------------------------*/ #include "RangeSensor.h" #include "LightSensor.h" +#include "DevI2C.h" //temporaneo fino alla creazione della classe x_nucleo_6180xa1 #include "vl6180x_api.h" #include "vl6180x_cfg.h" #include "vl6180x_def.h" -#include "vl6180x_i2c.h" #include "vl6180x_types.h" #include "vl6180x_platform.h" #include "vl6180x_appcfg.h" +/** default device address */ +#define DEFAULT_DEVICE_ADDRESS 0x29 +/** default value ECE factor Molecular */ +#define DEF_ECE_FACTOR_M 85 +/** default value ECE factor Denominator */ +#define DEF_ECE_FACTOR_D 100 +/** default value ALS integration time */ +#define DEF_INT_PEFRIOD 100 +/** default value ALS gain */ +#define DEF_ALS_GAIN 1 +/** default value ALS scaler */ +#define DEF_ALS_SCALER 1 +/** default value for DMAX Enbale */ +#define DEF_DMAX_ENABLE 1 +/** default ambient tuning factor %x1000 */ +#define DEF_AMBIENT_TUNING 80 + +/* +typedef struct +{ + struct VL6180xDevData_t Data; + uint8_t I2cAddr; + uint8_t DevID; + + unsigned Present; + unsigned Ready; +}MyVL6180xDev_t; +*/ + /* Classes -------------------------------------------------------------------*/ /** Class representing a VL6180X sensor component */ @@ -56,21 +85,47 @@ public: /** Constructor * @param[in] i2c device I2C to be used for communication + * @param[in] device address, 0x29 by default */ - VL6180X(DevI2C &i2c) : RangeSensor(), LightSensor(), dev_i2c(i2c) {} + VL6180X(DevI2C &i2c, uint8_t DevAddr=DEFAULT_DEVICE_ADDRESS) : RangeSensor(), LightSensor(), dev_i2c(i2c) + { + MyDeviceAddress=DevAddr; + RangeLight_id=0; + //MyDevice.I2cAddr=DevAddr; + //MyDevice.DeviID=0; + //MyDevice.Present=0; + //MyDevice.Ready=0; + //oppure MyVL6180xDev_t MyDevice={DevAddr, 0, 0, 0}; + } /** Destructor */ - virtual ~VL6180X() {} + /*virtual ~VL6180X() + { + // delete[] memory allocated + VL6180x_SetupGPIOx(MyDevice, 0, 0, 0); + } */ + + // funzione che setta il paremetro DevID: SetDevID(int n) + // funzione che setta il parametro Present: SetPresent(int n) + // funzione che setta il parametro Ready: SetReady(int n) + // funzione che modifica lo slave address: SetI2CAddress(VL6180xDev_t MyDevice, uint8_t NewAddress)) /*** Interface Methods ***/ - virtual int Init(void *init_struct) { - return VL6180x_InitData(VL6180xDev_t dev); + // nel momento in cui creo la classe x_nucleo_6180xa1, all'interno definisco un oggetto VL6180xDev_t MyDevice + // definisco una funzione Init() che chiama a sua volta la seguente funzione Init() e gli passo MyDevice + /*virtual*/ int Init() //par:void *init_struct + { + return VL6180x_InitData(MyDevice); // a questa funzione devo passare il parametro di Init() } - virtual int ReadID(uint8_t *rl_id) { - return VL6180X_ReadID(rl_id); + // nel momento in cui creo la classe x_nucleo_6180xa1, all'interno definisco un oggetto uint_t *RangeLight_id + // definisco una funzione ReadID() che chiama a sua volta la seguente funzione ReadID() e gli passo RangeLight_id + /*virtual*/ int ReadID() //par:uint8_t *rl_id + { + return VL6180X_ReadID(&RangeLight_id); // a questa funzione devo passare il parametro di ReadID() } + /* virtual int GetRange(int *piData) { return VL6180X_GetRange(piData); @@ -81,18 +136,47 @@ } */ + /* Initialization functions */ + int VL6180x_InitData(VL6180xDev_t dev); + /*static*/ int _DMax_InitData(VL6180xDev_t dev); + void _DMax_OneTimeInit(VL6180xDev_t dev); + /*static*/ uint32_t _DMax_RawValueAtRateKCps(VL6180xDev_t dev, int32_t rate); + uint32_t VL6180x_SqrtUint32(uint32_t num); + + /* IO read funcitons */ + int VL6180X_ReadID(uint8_t *rl_id); + int VL6180X_IO_Read(uint8_t *pBuffer, uint8_t RegisterAddress, uint16_t NumByteToRead); + + /* Write and read functions from I2C */ + int VL6180x_WrByte(VL6180xDev_t dev, uint16_t index, uint8_t data); + int VL6180x_WrWord(VL6180xDev_t dev, uint16_t index, uint16_t data); + int VL6180x_WrDWord(VL6180xDev_t dev, uint16_t index, uint32_t data); + int VL6180x_RdByte(VL6180xDev_t dev, uint16_t index, uint8_t *data); + int VL6180x_RdWord(VL6180xDev_t dev, uint16_t index, uint16_t *data); + int VL6180x_RdDWord(VL6180xDev_t dev, uint16_t index, uint32_t *data); + int VL6180x_I2CWrite(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToWrite); + int VL6180x_I2CRead(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToRead); + + + private: /*** Methods ***/ - int VL6180X_IO_Read(uint8_t *pBuffer, uint8_t RegisterAddress, uint16 NumByteToRead); + /*** Instance Variables ***/ /* IO Device */ + //temporaneo + DevI2C &dev_i2c; // creo questa variabile in x_nucleo_6180xa1.h allo stesso modo e poi passo al costruttore del MyDevice il suo indirizzo + //MyVL6180xDev_t MyDevice; in sostituzione di VL6180xDev_t sotto - DevI2C &dev_i2c; - + /* VL6180X Device */ + uint8_t MyDeviceAddress; + //temporanei + VL6180xDev_t MyDevice; // creo questa variabile in x_nucleo_6180xa1.h allo stesso modo e poi passo alla funzione Init() + uint8_t RangeLight_id; // creo questa variabile in x_nucleo_6180xa1.h allo stesso modo e poi passo alla funzione ReadID() il suo indirizzo }; -#endif // __VL6180X_CLASS_H \ No newline at end of file +#endif // __VL6180X_CLASS_H