INSAT Mini Project

Dependencies:   ST_INTERFACES X_NUCLEO_COMMON

Fork of X_NUCLEO_6180XA1 by ST

Revision:
46:116dadbc80f1
Parent:
44:36d12d319078
Child:
48:e799ad44dab7
--- a/Components/VL6180X/vl6180x_class.h	Tue Mar 15 16:26:36 2016 +0000
+++ b/Components/VL6180X/vl6180x_class.h	Thu May 19 14:11:25 2016 +0000
@@ -165,11 +165,6 @@
 	  *expgpio0=0;			
     }
     
-	/**
-	 * @brief       Initialize the sensor with default values
-	 * @return      0 on Success
-	 */					 
-    int InitSensor(uint8_t NewAddr);
     
 	/**
 	 * @brief       Start the measure indicated by operating mode
@@ -281,11 +276,51 @@
  *
  * @param void
  * @return     0 on success,  @a #CALIBRATION_WARNING if failed
- */		
-    virtual int Init() 
-    {
-       return VL6180x_InitData(Device);
-    }
+*/
+virtual int Init(void * NewAddr)
+{
+   int status;
+ 
+   VL6180x_Off();
+   VL6180x_On();
+   status=VL6180x_WaitDeviceBooted(Device);
+   if(status)
+      VL6180x_ErrLog("WaitDeviceBooted fail\n\r");
+   status=IsPresent();
+   if(!status)
+   {
+      Device->Present=1;
+      VL6180x_InitData(Device);
+      if(status)
+      {
+         printf("Failed to init VL6180X sensor!\n\r");
+         return status;
+      }
+      status=Prepare();
+      if(status)
+      {
+         printf("Failed to prepare VL6180X!\n\r");
+         return status;
+      }
+      if(*(uint8_t*)NewAddr!=DEFAULT_DEVICE_ADDRESS)
+      {
+         status=SetI2CAddress(*(uint8_t*)NewAddr);
+         if(status)
+         {
+            printf("Failed to change I2C address!\n\r");
+            return status;
+         }
+      }
+      else
+      {
+         printf("Invalid new address!\n\r");
+         return INVALID_PARAMS;
+      }
+      Device->Ready=1;
+   }
+   return status; 
+}
+
 
 /**
  * @brief Configure GPIO1 function and set polarity.
@@ -1138,7 +1173,7 @@
     int _DMax_InitData(VL6180xDev_t dev);
 		
     /* Read function of the ID device */
-    virtual int ReadID();
+    virtual int ReadID(uint8_t *id);
     
     /* Write and read functions from I2C */
     int VL6180x_WrByte(VL6180xDev_t dev, uint16_t index, uint8_t data);
@@ -1154,9 +1189,9 @@
 		
     int IsPresent()
     {
-       int status;
+       int status; uint8_t id;
 			
-       status=ReadID();
+       status=ReadID(&id);
        if(status)
           VL6180x_ErrLog("Failed to read ID device. Device not present!\n\r");
        return status;