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.
Dependents: Check_VL6180XA1_ToF
Fork of X_NUCLEO_6180XA1 by
Diff: Components/VL6180X/vl6180x_class.h
- 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 */
