INSAT Mini Project
Dependencies: ST_INTERFACES X_NUCLEO_COMMON
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