Fabio Brembilla / X_NUCLEO_6180XA1

Dependencies:   X_NUCLEO_COMMON

Fork of X_NUCLEO_6180XA1 by ST

Revision:
14:0effa0bbf192
Parent:
12:71d589e6fd2c
Child:
15:454710d17358
--- a/Components/VL6180X/vl6180x_class.h	Tue Oct 13 14:32:54 2015 +0200
+++ b/Components/VL6180X/vl6180x_class.h	Mon Oct 19 13:54:17 2015 +0200
@@ -50,7 +50,8 @@
 //#include "vl6180x_appcfg.h"
 #include "STMPE1600_class.h"
 
-/* data struct containing range measure, light measure and type of error provided to the user */	
+/* data struct containing range measure, light measure and type of error provided to the user
+   in case of invalid data range_mm=0xFFFFFFFF and lux=0xFFFFFFFF */	
 typedef struct MeasureData 
 {
 	int32_t range_mm;
@@ -69,20 +70,24 @@
 	als_continuous_polling,
 	range_continuous_interrupt,
 	als_continuous_interrupt,
+	interleaved_mode_interrupt,
+	range_continuous_polling_low_threshold,
+	range_continuous_polling_high_threshold,
+	range_continuous_polling_out_of_window,
+	als_continuous_polling_low_threshold,
+	als_continuous_polling_high_threshold,
+	als_continuous_polling_out_of_window,
+	range_continuous_interrupt_low_threshold,
+	range_continuous_interrrupt_high_threshold,
+	range_continuous_interrupt_out_of_window,
+	als_continuous_interrupt_low_threshold,
+	als_continuous_interrupt_high_threshold,
+	als_continuous_interrupt_out_of_window,
+	//interleaved con soglie
 	range_continuous_als_single_shot,
 	range_single_shot_als_continuous,
-	interleaved_mode,
 }OperatingMode;
 
-/* type of sensor measurement */
-typedef enum
-{
-  range_measure=1,
-	light_measure,
-	light_range_measure,
-}MeasureType;
-
-
 /** default device address */
 #define DEFAULT_DEVICE_ADDRESS		0x29
 
@@ -119,59 +124,25 @@
    /** Destructor
     */
     //~VL6180X(){} 		 
-		 
-		 void VL6180x_On(void) {
+		
+    /* turns on the sensor */		 
+		void VL6180x_On(void)
+		{
 			if (gpio0) *gpio0=1;
 			else if (expgpio0) *expgpio0=1;
 		} 
 		
-    void VL6180x_Off(void) {
+		/* turns off the sensor */
+    void VL6180x_Off(void) 
+		{
 			if (gpio0) *gpio0=0;
 			else if (expgpio0) *expgpio0=0;			
 		}
- 
-		int IsPresent()
-		{
-			 int status;
-			
-			 status=ReadID();
-       if(status)
-				 printf("Failed to read ID device! Device not present!\n"); //FIXME da sistemare la funzione di stampa errore ErrLog da platform.h
-			 return status;
-		}
 		
-		int InitSensor(uint8_t NewAddr);	
-		
-		int StartMeasurement(OperatingMode operating_mode, void (*fptr)(void), MeasureData_t *Data); 
-		
-		int GetRangeError(MeasureData_t *Data, VL6180x_RangeData_t RangeData);
-		
-		int GetAlsError(MeasureData_t *Data, VL6180x_AlsData_t AlsData);
-		
-		int RangeMeasPollSingleShot(MeasureData_t *Data);
-		
-		int AlsMeasPollSingleShot(MeasureData_t *Data);
-				
-		int AlsStartContinuousMode()
-		{
-			 return VL6180x_AlsSetSystemMode(Device, MODE_START_STOP|MODE_CONTINUOUS);
-		}
-		
-		int RangeMeasPollContinuousMode(MeasureData_t *Data);
-		
-		int AlsMeasPollContinuousMode(MeasureData_t *Data);
-		
-		int GetRangeMeasContinuousMode(MeasureData_t *Data);
-		
-		int GetAlsMeasContinuousMode(MeasureData_t *Data);
-		
-		int RangeMeasIntContinuousMode(void (*fptr)(void));
-		
-		int AlsMeasIntContinuousMode(void (*fptr)(void));
-		
-		int InterleavedMode(void (*fptr)(void));
-		
-		int StartInterleavedMode();
+		int InitSensor(uint8_t NewAddr);
+		int StartMeasurement(OperatingMode operating_mode, void (*fptr)(void), MeasureData_t *Data, uint16_t low, uint16_t high);
+		int GetMeasurement(OperatingMode operating_mode, MeasureData_t *Data);		
+		int StopMeasurement(OperatingMode operating_mode);
 
 		/* handling functions of the interrupt_measure */
 		
@@ -198,7 +169,7 @@
 		  interrupt_measure.disable_irq();
 	  }
 		
-		void HandleIRQ(MeasureType measure_type, MeasureData_t *Data); // FIXME sistemare la sequenza delle funzioni completandola con i print degli errori
+		int HandleIRQ(OperatingMode operating_mode, MeasureData_t *Data);
 		
 		/* Wrapper functions */	
 		int WaitDeviceBooted()
@@ -461,7 +432,12 @@
 		   return VL6180x_AlsGetLux(Device, piData);
 	  }
 		
+		int AlsStartContinuousMode()
+		{
+			 return VL6180x_AlsSetSystemMode(Device, MODE_START_STOP|MODE_CONTINUOUS);
+		}
 		
+private:		
 		/* api.h functions */
 		int VL6180x_WaitDeviceBooted(VL6180xDev_t dev);
 		int VL6180x_InitData(VL6180xDev_t dev );
@@ -541,10 +517,40 @@
 		int VL6180x_UpdateByte(VL6180xDev_t dev, uint16_t index, uint8_t AndData, uint8_t OrData);
     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);
+		
+		
+		int IsPresent()
+		{
+			 int status;
+			
+			 status=ReadID();
+       if(status)
+				 printf("Failed to read ID device! Device not present!\n"); //FIXME da sistemare la funzione di stampa errore ErrLog da platform.h
+			 return status;
+		}	
+		int StopRangeMeasurement(OperatingMode operating_mode);
+		int StopAlsMeasurement(OperatingMode operating_mode);
+		int GetRangeMeas(OperatingMode operating_mode, MeasureData_t *Data);	
+		int GetAlsMeas(OperatingMode operating_mode, MeasureData_t *Data);
+		int GetRangeAlsMeas(MeasureData_t *Data);
+		int RangeSetLowThreshold(uint16_t threshold);
+		int RangeSetHighThreshold(uint16_t threshold);
+		int AlsSetLowThreshold(uint16_t threshold);	
+		int AlsSetHighThreshold(uint16_t threshold);
+		int GetRangeError(MeasureData_t *Data, VL6180x_RangeData_t RangeData);
+		int GetAlsError(MeasureData_t *Data, VL6180x_AlsData_t AlsData);
+		int RangeMeasPollSingleShot(MeasureData_t *Data);
+		int AlsMeasPollSingleShot(MeasureData_t *Data);		
+		int RangeMeasPollContinuousMode();	
+		int AlsMeasPollContinuousMode();
+		int AlsGetMeasurementIfReady(VL6180xDev_t dev, VL6180x_AlsData_t *pAlsData);
+		int RangeMeasIntContinuousMode(void (*fptr)(void));
+		int AlsMeasIntContinuousMode(void (*fptr)(void));
+		int InterleavedMode(void (*fptr)(void));
+		int StartInterleavedMode();
+		int VL6180x_AlsGetThresholds(VL6180xDev_t dev, uint16_t *low, uint16_t *high);
 
 		
-
-private:
     /* IO Device */
     DevI2C &dev_i2c;
     /* Digital out pin */