INSAT Mini Project

Dependencies:   ST_INTERFACES X_NUCLEO_COMMON

Fork of X_NUCLEO_6180XA1 by ST

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