INSAT Mini Project
Dependencies: ST_INTERFACES X_NUCLEO_COMMON
Fork of X_NUCLEO_6180XA1 by
Diff: Components/VL6180X/vl6180x_class.h
- Revision:
- 16:0d4776564733
- Parent:
- 15:454710d17358
- Child:
- 18:c98aa73dc4a5
--- a/Components/VL6180X/vl6180x_class.h Tue Oct 20 16:44:28 2015 +0200 +++ b/Components/VL6180X/vl6180x_class.h Tue Oct 27 15:25:11 2015 +0100 @@ -54,38 +54,38 @@ in case of invalid data range_mm=0xFFFFFFFF and lux=0xFFFFFFFF */ typedef struct MeasureData { - int32_t range_mm; - uint32_t lux; - uint32_t range_error; - uint32_t als_error; - uint32_t int_error; + uint32_t range_mm; + uint32_t lux; + uint32_t range_error; + uint32_t als_error; + uint32_t int_error; }MeasureData_t; /* sensor operating modes */ typedef enum { - range_single_shot_polling=1, - als_single_shot_polling, - range_continuous_polling, - 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, + range_single_shot_polling=1, + als_single_shot_polling, + range_continuous_polling, + 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, }OperatingMode; /** default device address */ @@ -103,183 +103,183 @@ * @param[in] gpio1 pin * @param[in] device address, 0x29 by default */ - VL6180X(DevI2C &i2c, DigitalOut &pin, PinName pin_gpio1, uint8_t DevAddr=DEFAULT_DEVICE_ADDRESS) : RangeSensor(), LightSensor(), dev_i2c(i2c), gpio0(&pin), interrupt_measure(pin_gpio1) - { - MyDevice.I2cAddr=DevAddr; - MyDevice.Present=0; - MyDevice.Ready=0; - Device=&MyDevice;; - expgpio0=NULL; - } + VL6180X(DevI2C &i2c, DigitalOut &pin, PinName pin_gpio1, uint8_t DevAddr=DEFAULT_DEVICE_ADDRESS) : RangeSensor(), LightSensor(), dev_i2c(i2c), gpio0(&pin), interrupt_measure(pin_gpio1) + { + MyDevice.I2cAddr=DevAddr; + MyDevice.Present=0; + MyDevice.Ready=0; + Device=&MyDevice;; + expgpio0=NULL; + } - VL6180X(DevI2C &i2c, STMPE1600DigiOut &pin, PinName pin_gpio1, uint8_t DevAddr=DEFAULT_DEVICE_ADDRESS) : RangeSensor(), LightSensor(), dev_i2c(i2c), expgpio0(&pin), interrupt_measure(pin_gpio1) - { - MyDevice.I2cAddr=DevAddr; - MyDevice.Present=0; - MyDevice.Ready=0; - Device=&MyDevice; - gpio0=NULL; - } + VL6180X(DevI2C &i2c, STMPE1600DigiOut &pin, PinName pin_gpio1, uint8_t DevAddr=DEFAULT_DEVICE_ADDRESS) : RangeSensor(), LightSensor(), dev_i2c(i2c), expgpio0(&pin), interrupt_measure(pin_gpio1) + { + MyDevice.I2cAddr=DevAddr; + MyDevice.Present=0; + MyDevice.Ready=0; + Device=&MyDevice; + gpio0=NULL; + } /** Destructor */ //~VL6180X(){} /* turns on the sensor */ - void VL6180x_On(void) - { - if(gpio0) - *gpio0=1; - else if(expgpio0) - *expgpio0=1; - } + void VL6180x_On(void) + { + if(gpio0) + *gpio0=1; + else if(expgpio0) + *expgpio0=1; + } - /* turns off the sensor */ + /* turns off the sensor */ void VL6180x_Off(void) - { - if(gpio0) - *gpio0=0; - else if(expgpio0) - *expgpio0=0; - } + { + if(gpio0) + *gpio0=0; + else if(expgpio0) + *expgpio0=0; + } - 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); + 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 */ + /* handling functions of the interrupt_measure */ - /** Attach a function to call when an interrupt is detected, i.e. measurement is ready - * - * @param[in] fptr A pointer to a void function, or 0 to set as none - */ - void AttachInterruptMeasureDetectionIRQ(void (*fptr)(void)) - { - interrupt_measure.rise(fptr); - } + /** Attach a function to call when an interrupt is detected, i.e. measurement is ready + * + * @param[in] fptr A pointer to a void function, or 0 to set as none + */ + void AttachInterruptMeasureDetectionIRQ(void (*fptr)(void)) + { + interrupt_measure.rise(fptr); + } - /** Enable interrupt measure IRQ - */ - void EnableInterruptMeasureDetectionIRQ(void) - { - interrupt_measure.enable_irq(); - } + /** Enable interrupt measure IRQ + */ + void EnableInterruptMeasureDetectionIRQ(void) + { + interrupt_measure.enable_irq(); + } - /** Disable interrupt measure IRQ - */ - void DisableInterruptMeasureDetectionIRQ(void) - { - interrupt_measure.disable_irq(); - } + /** Disable interrupt measure IRQ + */ + void DisableInterruptMeasureDetectionIRQ(void) + { + interrupt_measure.disable_irq(); + } - int HandleIRQ(OperatingMode operating_mode, MeasureData_t *Data); + int HandleIRQ(OperatingMode operating_mode, MeasureData_t *Data); - unsigned Present() - { - return Device->Present; - } + unsigned Present() + { + return Device->Present; + } - /* Wrapper functions */ - int WaitDeviceBooted() - { - return VL6180x_WaitDeviceBooted(Device); - } + /* Wrapper functions */ + int WaitDeviceBooted() + { + return VL6180x_WaitDeviceBooted(Device); + } - int Init() + int Init() { return VL6180x_InitData(Device); } - int SetupGPIO1(uint8_t InitFunction, int ActiveHigh) - { - return VL6180x_SetupGPIO1(Device, InitFunction, ActiveHigh); - } + int SetupGPIO1(uint8_t InitFunction, int ActiveHigh) + { + return VL6180x_SetupGPIO1(Device, InitFunction, ActiveHigh); + } - int Prepare() - { - return VL6180x_Prepare(Device); - } + int Prepare() + { + return VL6180x_Prepare(Device); + } - int RangeStartContinuousMode() - { - return VL6180x_RangeStartContinuousMode(Device); - } + int RangeStartContinuousMode() + { + return VL6180x_RangeStartContinuousMode(Device); + } - int RangeStartSingleShot() - { - return VL6180x_RangeStartSingleShot(Device); - } + int RangeStartSingleShot() + { + return VL6180x_RangeStartSingleShot(Device); + } - int RangeSetMaxConvergenceTime(uint8_t MaxConTime_msec) - { - return VL6180x_RangeSetMaxConvergenceTime(Device, MaxConTime_msec); - } + int RangeSetMaxConvergenceTime(uint8_t MaxConTime_msec) + { + return VL6180x_RangeSetMaxConvergenceTime(Device, MaxConTime_msec); + } - int RangePollMeasurement(VL6180x_RangeData_t *pRangeData) - { - return VL6180x_RangePollMeasurement(Device, pRangeData); - } + int RangePollMeasurement(VL6180x_RangeData_t *pRangeData) + { + return VL6180x_RangePollMeasurement(Device, pRangeData); + } - int RangeGetMeasurementIfReady(VL6180x_RangeData_t *pRangeData) - { - return VL6180x_RangeGetMeasurementIfReady(Device, pRangeData); - } + int RangeGetMeasurementIfReady(VL6180x_RangeData_t *pRangeData) + { + return VL6180x_RangeGetMeasurementIfReady(Device, pRangeData); + } - int RangeGetMeasurement(VL6180x_RangeData_t *pRangeData) - { - return VL6180x_RangeGetMeasurement(Device, pRangeData); - } + int RangeGetMeasurement(VL6180x_RangeData_t *pRangeData) + { + return VL6180x_RangeGetMeasurement(Device, pRangeData); + } - int GetRange(int32_t *piData) - { - return VL6180x_RangeGetResult(Device, piData); - } + int GetRange(int32_t *piData) + { + return VL6180x_RangeGetResult(Device, piData); + } - int RangeConfigInterrupt(uint8_t ConfigGpioInt) - { - return VL6180x_RangeConfigInterrupt(Device, ConfigGpioInt); - } + int RangeConfigInterrupt(uint8_t ConfigGpioInt) + { + return VL6180x_RangeConfigInterrupt(Device, ConfigGpioInt); + } - int RangeGetInterruptStatus(uint8_t *pIntStatus) - { - return VL6180x_RangeGetInterruptStatus(Device, pIntStatus); - } + int RangeGetInterruptStatus(uint8_t *pIntStatus) + { + return VL6180x_RangeGetInterruptStatus(Device, pIntStatus); + } - int AlsPollMeasurement(VL6180x_AlsData_t *pAlsData) - { - return VL6180x_AlsPollMeasurement(Device, pAlsData); - } + int AlsPollMeasurement(VL6180x_AlsData_t *pAlsData) + { + return VL6180x_AlsPollMeasurement(Device, pAlsData); + } - int AlsGetMeasurement(VL6180x_AlsData_t *pAlsData) - { - return VL6180x_AlsGetMeasurement(Device, pAlsData); - } + int AlsGetMeasurement(VL6180x_AlsData_t *pAlsData) + { + return VL6180x_AlsGetMeasurement(Device, pAlsData); + } - int AlsConfigInterrupt(uint8_t ConfigGpioInt) - { - return VL6180x_AlsConfigInterrupt(Device, ConfigGpioInt); - } + int AlsConfigInterrupt(uint8_t ConfigGpioInt) + { + return VL6180x_AlsConfigInterrupt(Device, ConfigGpioInt); + } - int AlsSetIntegrationPeriod(uint16_t period_ms) - { + int AlsSetIntegrationPeriod(uint16_t period_ms) + { return VL6180x_AlsSetIntegrationPeriod(Device, period_ms); - } + } - int AlsSetInterMeasurementPeriod(uint16_t intermeasurement_period_ms) - { + int AlsSetInterMeasurementPeriod(uint16_t intermeasurement_period_ms) + { return VL6180x_AlsSetInterMeasurementPeriod(Device, intermeasurement_period_ms); } int AlsSetAnalogueGain(uint8_t gain) - { - return VL6180x_AlsSetAnalogueGain(Device, gain); - } + { + return VL6180x_AlsSetAnalogueGain(Device, gain); + } - int AlsSetThresholds(uint8_t low, uint8_t high) - { - return VL6180x_AlsSetThresholds(Device, low, high); - } + int AlsSetThresholds(uint8_t low, uint8_t high) + { + return VL6180x_AlsSetThresholds(Device, low, high); + } int AlsGetInterruptStatus(uint8_t *pIntStatus) { @@ -287,231 +287,231 @@ } int StaticInit() - { - return VL6180x_StaticInit(Device); - } + { + return VL6180x_StaticInit(Device); + } - int RangeWaitDeviceReady(int MaxLoop ) - { - return VL6180x_RangeWaitDeviceReady(Device, MaxLoop); - } + int RangeWaitDeviceReady(int MaxLoop ) + { + return VL6180x_RangeWaitDeviceReady(Device, MaxLoop); + } - int RangeSetInterMeasPeriod(uint32_t InterMeasTime_msec) - { - return VL6180x_RangeSetInterMeasPeriod(Device, InterMeasTime_msec); - } + int RangeSetInterMeasPeriod(uint32_t InterMeasTime_msec) + { + return VL6180x_RangeSetInterMeasPeriod(Device, InterMeasTime_msec); + } - int UpscaleSetScaling(uint8_t scaling) - { - return VL6180x_UpscaleSetScaling(Device, scaling); - } + int UpscaleSetScaling(uint8_t scaling) + { + return VL6180x_UpscaleSetScaling(Device, scaling); + } - int UpscaleGetScaling() - { - return VL6180x_UpscaleGetScaling(Device); - } + int UpscaleGetScaling() + { + return VL6180x_UpscaleGetScaling(Device); + } - uint16_t GetUpperLimit() - { - return VL6180x_GetUpperLimit(Device); - } + uint16_t GetUpperLimit() + { + return VL6180x_GetUpperLimit(Device); + } - int RangeSetThresholds(uint16_t low, uint16_t high, int SafeHold) - { - return VL6180x_RangeSetThresholds(Device, low, high, SafeHold); - } + int RangeSetThresholds(uint16_t low, uint16_t high, int SafeHold) + { + return VL6180x_RangeSetThresholds(Device, low, high, SafeHold); + } - int RangeGetThresholds(uint16_t *low, uint16_t *high) - { - return VL6180x_RangeGetThresholds(Device, low, high); - } + int RangeGetThresholds(uint16_t *low, uint16_t *high) + { + return VL6180x_RangeGetThresholds(Device, low, high); + } - int RangeSetRawThresholds(uint8_t low, uint8_t high) - { - return VL6180x_RangeSetRawThresholds(Device, low, high); - } + int RangeSetRawThresholds(uint8_t low, uint8_t high) + { + return VL6180x_RangeSetRawThresholds(Device, low, high); + } - int RangeSetEceFactor(uint16_t FactorM, uint16_t FactorD) - { - return VL6180x_RangeSetEceFactor(Device, FactorM, FactorD); - } + int RangeSetEceFactor(uint16_t FactorM, uint16_t FactorD) + { + return VL6180x_RangeSetEceFactor(Device, FactorM, FactorD); + } - int RangeSetEceState(int enable) - { - return VL6180x_RangeSetEceState(Device, enable); - } + int RangeSetEceState(int enable) + { + return VL6180x_RangeSetEceState(Device, enable); + } - int FilterSetState(int state) - { - return VL6180x_FilterSetState(Device, state); - } + int FilterSetState(int state) + { + return VL6180x_FilterSetState(Device, state); + } - int FilterGetState() - { - return VL6180x_FilterGetState(Device); - } + int FilterGetState() + { + return VL6180x_FilterGetState(Device); + } - int DMaxSetState(int state) - { - return VL6180x_DMaxSetState(Device, state); - } + int DMaxSetState(int state) + { + return VL6180x_DMaxSetState(Device, state); + } - int DMaxGetState() - { - return VL6180x_DMaxGetState(Device); - } + int DMaxGetState() + { + return VL6180x_DMaxGetState(Device); + } - int RangeSetSystemMode(uint8_t mode) - { - return VL6180x_RangeSetSystemMode(Device, mode); - } + int RangeSetSystemMode(uint8_t mode) + { + return VL6180x_RangeSetSystemMode(Device, mode); + } - int8_t GetOffsetCalibrationData() - { - return VL6180x_GetOffsetCalibrationData(Device); - } + int8_t GetOffsetCalibrationData() + { + return VL6180x_GetOffsetCalibrationData(Device); + } - void SetOffsetCalibrationData(int8_t offset) - { - return VL6180x_SetOffsetCalibrationData(Device, offset); - } + void SetOffsetCalibrationData(int8_t offset) + { + return VL6180x_SetOffsetCalibrationData(Device, offset); + } - int SetXTalkCompensationRate(FixPoint97_t Rate) - { - return VL6180x_SetXTalkCompensationRate(Device, Rate); - } + int SetXTalkCompensationRate(FixPoint97_t Rate) + { + return VL6180x_SetXTalkCompensationRate(Device, Rate); + } - int AlsWaitDeviceReady(int MaxLoop) - { - return VL6180x_AlsWaitDeviceReady(Device, MaxLoop); - } + int AlsWaitDeviceReady(int MaxLoop) + { + return VL6180x_AlsWaitDeviceReady(Device, MaxLoop); + } - int AlsSetSystemMode(uint8_t mode) - { - return VL6180x_AlsSetSystemMode(Device, mode); - } + int AlsSetSystemMode(uint8_t mode) + { + return VL6180x_AlsSetSystemMode(Device, mode); + } - int SetGroupParamHold(int Hold) - { - return VL6180x_SetGroupParamHold(Device, Hold); - } + int SetGroupParamHold(int Hold) + { + return VL6180x_SetGroupParamHold(Device, Hold); + } - int SetI2CAddress(int NewAddr) - { - int status; + int SetI2CAddress(int NewAddr) + { + int status; - status=VL6180x_SetI2CAddress(Device, NewAddr); - if(!status) - Device->I2cAddr=NewAddr; - return status; - } + status=VL6180x_SetI2CAddress(Device, NewAddr); + if(!status) + Device->I2cAddr=NewAddr; + return status; + } - int SetupGPIOx(int pin, uint8_t IntFunction, int ActiveHigh) - { - return VL6180x_SetupGPIOx(Device, pin, IntFunction, ActiveHigh); - } + int SetupGPIOx(int pin, uint8_t IntFunction, int ActiveHigh) + { + return VL6180x_SetupGPIOx(Device, pin, IntFunction, ActiveHigh); + } - int SetGPIOxPolarity(int pin, int active_high) - { - return VL6180x_SetGPIOxPolarity(Device, pin, active_high); - } + int SetGPIOxPolarity(int pin, int active_high) + { + return VL6180x_SetGPIOxPolarity(Device, pin, active_high); + } - int SetGPIOxFunctionality(int pin, uint8_t functionality) - { - return VL6180x_SetGPIOxFunctionality(Device, pin, functionality); - } + int SetGPIOxFunctionality(int pin, uint8_t functionality) + { + return VL6180x_SetGPIOxFunctionality(Device, pin, functionality); + } - int DisableGPIOxOut(int pin) - { - return VL6180x_DisableGPIOxOut(Device, pin); - } + int DisableGPIOxOut(int pin) + { + return VL6180x_DisableGPIOxOut(Device, pin); + } - int GetInterruptStatus(uint8_t *status) - { - return VL6180x_GetInterruptStatus(Device, status); - } + int GetInterruptStatus(uint8_t *status) + { + return VL6180x_GetInterruptStatus(Device, status); + } - int ClearInterrupt(uint8_t IntClear) - { - return VL6180x_ClearInterrupt(Device, IntClear ); - } + int ClearInterrupt(uint8_t IntClear) + { + return VL6180x_ClearInterrupt(Device, IntClear ); + } - int GetLight(uint32_t *piData) - { - return VL6180x_AlsGetLux(Device, piData); - } + int GetLight(uint32_t *piData) + { + return VL6180x_AlsGetLux(Device, piData); + } - int AlsStartContinuousMode() - { - return VL6180x_AlsSetSystemMode(Device, MODE_START_STOP|MODE_CONTINUOUS); - } + 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 ); - int VL6180x_SetupGPIO1(VL6180xDev_t dev, uint8_t IntFunction, int ActiveHigh); - int VL6180x_Prepare(VL6180xDev_t dev); - int VL6180x_RangeStartContinuousMode(VL6180xDev_t dev); - int VL6180x_RangeStartSingleShot(VL6180xDev_t dev); - int VL6180x_RangeSetMaxConvergenceTime(VL6180xDev_t dev, uint8_t MaxConTime_msec); - int VL6180x_RangePollMeasurement(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData); - int VL6180x_RangeGetMeasurementIfReady(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData); - int VL6180x_RangeGetMeasurement(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData); - int VL6180x_RangeGetResult(VL6180xDev_t dev, int32_t *pRange_mm); - int VL6180x_RangeConfigInterrupt(VL6180xDev_t dev, uint8_t ConfigGpioInt); - int VL6180x_RangeGetInterruptStatus(VL6180xDev_t dev, uint8_t *pIntStatus); - int VL6180x_AlsPollMeasurement(VL6180xDev_t dev, VL6180x_AlsData_t *pAlsData); - int VL6180x_AlsGetMeasurement(VL6180xDev_t dev, VL6180x_AlsData_t *pAlsData); - int VL6180x_AlsConfigInterrupt(VL6180xDev_t dev, uint8_t ConfigGpioInt); - int VL6180x_AlsSetIntegrationPeriod(VL6180xDev_t dev, uint16_t period_ms); - int VL6180x_AlsSetInterMeasurementPeriod(VL6180xDev_t dev, uint16_t intermeasurement_period_ms); - int VL6180x_AlsSetAnalogueGain(VL6180xDev_t dev, uint8_t gain); - int VL6180x_AlsSetThresholds(VL6180xDev_t dev, uint8_t low, uint8_t high); - int VL6180x_AlsGetInterruptStatus(VL6180xDev_t dev, uint8_t *pIntStatus); - int VL6180x_StaticInit(VL6180xDev_t dev); - int VL6180x_RangeWaitDeviceReady(VL6180xDev_t dev, int MaxLoop ); - int VL6180x_RangeSetInterMeasPeriod(VL6180xDev_t dev, uint32_t InterMeasTime_msec); - int VL6180x_UpscaleSetScaling(VL6180xDev_t dev, uint8_t scaling); - int VL6180x_UpscaleGetScaling(VL6180xDev_t dev); - uint16_t VL6180x_GetUpperLimit(VL6180xDev_t dev); - int VL6180x_RangeSetThresholds(VL6180xDev_t dev, uint16_t low, uint16_t high, int SafeHold); - int VL6180x_RangeGetThresholds(VL6180xDev_t dev, uint16_t *low, uint16_t *high); - int VL6180x_RangeSetRawThresholds(VL6180xDev_t dev, uint8_t low, uint8_t high); - int VL6180x_RangeSetEceFactor(VL6180xDev_t dev, uint16_t FactorM, uint16_t FactorD); - int VL6180x_RangeSetEceState(VL6180xDev_t dev, int enable ); - int VL6180x_FilterSetState(VL6180xDev_t dev, int state); - int VL6180x_FilterGetState(VL6180xDev_t dev); - int VL6180x_DMaxSetState(VL6180xDev_t dev, int state); - int VL6180x_DMaxGetState(VL6180xDev_t dev); - int VL6180x_RangeSetSystemMode(VL6180xDev_t dev, uint8_t mode); - int8_t VL6180x_GetOffsetCalibrationData(VL6180xDev_t dev); - void VL6180x_SetOffsetCalibrationData(VL6180xDev_t dev, int8_t offset); - int VL6180x_SetXTalkCompensationRate(VL6180xDev_t dev, FixPoint97_t Rate); - int VL6180x_AlsWaitDeviceReady(VL6180xDev_t dev, int MaxLoop ); - int VL6180x_AlsSetSystemMode(VL6180xDev_t dev, uint8_t mode); - int VL6180x_SetGroupParamHold(VL6180xDev_t dev, int Hold); - int VL6180x_SetI2CAddress(VL6180xDev_t dev, uint8_t NewAddr); - int VL6180x_SetupGPIOx(VL6180xDev_t dev, int pin, uint8_t IntFunction, int ActiveHigh); - int VL6180x_SetGPIOxPolarity(VL6180xDev_t dev, int pin, int active_high); - int VL6180x_SetGPIOxFunctionality(VL6180xDev_t dev, int pin, uint8_t functionality); - int VL6180x_DisableGPIOxOut(VL6180xDev_t dev, int pin); - int VL6180x_GetInterruptStatus(VL6180xDev_t dev, uint8_t *status); - int VL6180x_ClearInterrupt(VL6180xDev_t dev, uint8_t IntClear ); + private: + /* api.h functions */ + int VL6180x_WaitDeviceBooted(VL6180xDev_t dev); + int VL6180x_InitData(VL6180xDev_t dev ); + int VL6180x_SetupGPIO1(VL6180xDev_t dev, uint8_t IntFunction, int ActiveHigh); + int VL6180x_Prepare(VL6180xDev_t dev); + int VL6180x_RangeStartContinuousMode(VL6180xDev_t dev); + int VL6180x_RangeStartSingleShot(VL6180xDev_t dev); + int VL6180x_RangeSetMaxConvergenceTime(VL6180xDev_t dev, uint8_t MaxConTime_msec); + int VL6180x_RangePollMeasurement(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData); + int VL6180x_RangeGetMeasurementIfReady(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData); + int VL6180x_RangeGetMeasurement(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData); + int VL6180x_RangeGetResult(VL6180xDev_t dev, int32_t *pRange_mm); + int VL6180x_RangeConfigInterrupt(VL6180xDev_t dev, uint8_t ConfigGpioInt); + int VL6180x_RangeGetInterruptStatus(VL6180xDev_t dev, uint8_t *pIntStatus); + int VL6180x_AlsPollMeasurement(VL6180xDev_t dev, VL6180x_AlsData_t *pAlsData); + int VL6180x_AlsGetMeasurement(VL6180xDev_t dev, VL6180x_AlsData_t *pAlsData); + int VL6180x_AlsConfigInterrupt(VL6180xDev_t dev, uint8_t ConfigGpioInt); + int VL6180x_AlsSetIntegrationPeriod(VL6180xDev_t dev, uint16_t period_ms); + int VL6180x_AlsSetInterMeasurementPeriod(VL6180xDev_t dev, uint16_t intermeasurement_period_ms); + int VL6180x_AlsSetAnalogueGain(VL6180xDev_t dev, uint8_t gain); + int VL6180x_AlsSetThresholds(VL6180xDev_t dev, uint8_t low, uint8_t high); + int VL6180x_AlsGetInterruptStatus(VL6180xDev_t dev, uint8_t *pIntStatus); + int VL6180x_StaticInit(VL6180xDev_t dev); + int VL6180x_RangeWaitDeviceReady(VL6180xDev_t dev, int MaxLoop ); + int VL6180x_RangeSetInterMeasPeriod(VL6180xDev_t dev, uint32_t InterMeasTime_msec); + int VL6180x_UpscaleSetScaling(VL6180xDev_t dev, uint8_t scaling); + int VL6180x_UpscaleGetScaling(VL6180xDev_t dev); + uint16_t VL6180x_GetUpperLimit(VL6180xDev_t dev); + int VL6180x_RangeSetThresholds(VL6180xDev_t dev, uint16_t low, uint16_t high, int SafeHold); + int VL6180x_RangeGetThresholds(VL6180xDev_t dev, uint16_t *low, uint16_t *high); + int VL6180x_RangeSetRawThresholds(VL6180xDev_t dev, uint8_t low, uint8_t high); + int VL6180x_RangeSetEceFactor(VL6180xDev_t dev, uint16_t FactorM, uint16_t FactorD); + int VL6180x_RangeSetEceState(VL6180xDev_t dev, int enable ); + int VL6180x_FilterSetState(VL6180xDev_t dev, int state); + int VL6180x_FilterGetState(VL6180xDev_t dev); + int VL6180x_DMaxSetState(VL6180xDev_t dev, int state); + int VL6180x_DMaxGetState(VL6180xDev_t dev); + int VL6180x_RangeSetSystemMode(VL6180xDev_t dev, uint8_t mode); + int8_t VL6180x_GetOffsetCalibrationData(VL6180xDev_t dev); + void VL6180x_SetOffsetCalibrationData(VL6180xDev_t dev, int8_t offset); + int VL6180x_SetXTalkCompensationRate(VL6180xDev_t dev, FixPoint97_t Rate); + int VL6180x_AlsWaitDeviceReady(VL6180xDev_t dev, int MaxLoop ); + int VL6180x_AlsSetSystemMode(VL6180xDev_t dev, uint8_t mode); + int VL6180x_SetGroupParamHold(VL6180xDev_t dev, int Hold); + int VL6180x_SetI2CAddress(VL6180xDev_t dev, uint8_t NewAddr); + int VL6180x_SetupGPIOx(VL6180xDev_t dev, int pin, uint8_t IntFunction, int ActiveHigh); + int VL6180x_SetGPIOxPolarity(VL6180xDev_t dev, int pin, int active_high); + int VL6180x_SetGPIOxFunctionality(VL6180xDev_t dev, int pin, uint8_t functionality); + int VL6180x_DisableGPIOxOut(VL6180xDev_t dev, int pin); + int VL6180x_GetInterruptStatus(VL6180xDev_t dev, uint8_t *status); + int VL6180x_ClearInterrupt(VL6180xDev_t dev, uint8_t IntClear ); - /* Other functions defined in api.c */ - int VL6180x_RangeStaticInit(VL6180xDev_t dev); - int VL6180x_UpscaleRegInit(VL6180xDev_t dev); - int VL6180x_UpscaleStaticInit(VL6180xDev_t dev); - int VL6180x_AlsGetLux(VL6180xDev_t dev, lux_t *pLux); - int _UpscaleInitPatch0(VL6180xDev_t dev); - int VL6180x_RangeGetDeviceReady(VL6180xDev_t dev, int * Ready); - int VL6180x_RangeSetEarlyConvergenceEestimateThreshold(VL6180xDev_t dev); - int32_t _GetAveTotalTime(VL6180xDev_t dev); - int32_t _filter_Start(VL6180xDev_t dev, uint16_t m_trueRange_mm, uint16_t m_rawRange_mm, uint32_t m_rtnSignalRate, uint32_t m_rtnAmbientRate, uint16_t errorCode); - int _filter_GetResult(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData); - int _GetRateResult(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData); - int _DMax_InitData(VL6180xDev_t dev); + /* Other functions defined in api.c */ + int VL6180x_RangeStaticInit(VL6180xDev_t dev); + int VL6180x_UpscaleRegInit(VL6180xDev_t dev); + int VL6180x_UpscaleStaticInit(VL6180xDev_t dev); + int VL6180x_AlsGetLux(VL6180xDev_t dev, lux_t *pLux); + int _UpscaleInitPatch0(VL6180xDev_t dev); + int VL6180x_RangeGetDeviceReady(VL6180xDev_t dev, int * Ready); + int VL6180x_RangeSetEarlyConvergenceEestimateThreshold(VL6180xDev_t dev); + int32_t _GetAveTotalTime(VL6180xDev_t dev); + int32_t _filter_Start(VL6180xDev_t dev, uint16_t m_trueRange_mm, uint16_t m_rawRange_mm, uint32_t m_rtnSignalRate, uint32_t m_rtnAmbientRate, uint16_t errorCode); + int _filter_GetResult(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData); + int _GetRateResult(VL6180xDev_t dev, VL6180x_RangeData_t *pRangeData); + int _DMax_InitData(VL6180xDev_t dev); /* Read function of the ID device */ int ReadID(); @@ -523,41 +523,41 @@ 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_UpdateByte(VL6180xDev_t dev, uint16_t index, uint8_t AndData, uint8_t OrData); + 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; + int IsPresent() + { + int status; - status=ReadID(); + status=ReadID(); if(status) - printf("Failed to read ID device! Device not present!\n\r"); //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); + printf("Failed to read ID device! Device not present!\n\r"); //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); /* IO Device */