VEML6070: Adding back documentation

Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
This commit is contained in:
Abhishek Malik 2017-05-18 15:35:46 -07:00
parent b4bc15201b
commit a56b83fa37
2 changed files with 106 additions and 23 deletions

View File

@ -39,35 +39,62 @@ extern "C" {
#define VEML6070_SEQ1_DATA_BUF_REG 0x39 // read only #define VEML6070_SEQ1_DATA_BUF_REG 0x39 // read only
#define VEML6070_SEQ2_DATA_BUF_REG 0x38 // read only #define VEML6070_SEQ2_DATA_BUF_REG 0x38 // read only
typedef enum { typedef enum {
HALF_T = 0, HALF_T = 0,
ONE_T, ONE_T,
TWO_T, TWO_T,
FOUR_T } veml6070_integration_time_t; FOUR_T } veml6070_integration_time_t;
/** /**
* @file veml6070.h * @file veml6070.h
* @library veml6070 * @library veml6070
* @brief C API for the VEML6070 Vishay UV Sensor * @brief C API for the VEML6070 Vishay UV Sensor
* *
* @include veml6070.c * @include veml6070.c
*/ */
typedef struct _veml6070_context { typedef struct _veml6070_context {
mraa_i2c_context i2c_seq1; mraa_i2c_context i2c_seq1;
mraa_i2c_context i2c_seq2; mraa_i2c_context i2c_seq2;
uint8_t address_seq1; uint8_t address_seq1;
uint8_t address_seq2; uint8_t address_seq2;
uint8_t i2c_bus_number; uint8_t i2c_bus_number;
} *veml6070_context; } *veml6070_context;
veml6070_context veml6070_init(uint8_t bus); /**
* VEML6070 Initialization function
*
* @param bus I2C bus to use
* @param address I2C address to use
*
* @return device context pointer
*/
veml6070_context veml6070_init(uint8_t bus);
void veml6070_close(veml6070_context dev); /**
* VEML6070 Close function
*
* @param dev veml6070_context pointer
*/
void veml6070_close(veml6070_context dev);
int16_t veml6070_get_uv_intensity(veml6070_context dev); /**
* Function to get the UV values
*
* @param dev veml6070_context pointer
* @return int16_t UV value
*/
int16_t veml6070_get_uv_intensity(veml6070_context dev);
upm_result_t veml6070_set_integration_time(veml6070_context dev, veml6070_integration_time_t time); /**
* Function to set the integration time of the sensor
*
* @param dev veml6070_context pointer
* @param time veml6070_integration_time_t
*
* @return upm_result_t
*/
upm_result_t veml6070_set_integration_time(veml6070_context dev, veml6070_integration_time_t time);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -27,7 +27,45 @@
#include "veml6070.h" #include "veml6070.h"
namespace upm { namespace upm {
/**
* @defgroup veml6070 libupm-veml6070
* @ingroup vishay i2c light
*/
/**
* @library veml6070
* @sensor veml6070
* @comname Vishay VEML6070 UV Sensor
* @type other
* @man Vishay
* @web http://www.vishay.com/docs/84277/veml6070.pdf
* @con i2c
* @kit other
*
* @brief API for the Vishay VEML6070 UV Sensor
*
* VEML6070 is an advanced ultraviolet (UV) light sensor with
* I2C protocol interface and designed by the CMOS process.
* It is easily operated via a simple I2C command. The active
* acknowledge (ACK) feature with threshold windows setting
* allows the UV sensor to send out a UVI alert message.
* Under a strong solar UVI condition, the smart ACK signal
* can be easily implemented by the software programming.
* VEML6070 incorporates a photodiode, amplifiers, and
* analog / digital circuits into a single chip. VEML6070's
* adoption of FiltronTM UV technology provides the best
* spectral sensitivity to cover UV spectrum sensing. It has an
* excellent temperature compensation and a robust refresh
* rate setting that does not use an external RC low pass filter.
* VEML6070 has linear sensitivity to solar UV light and is
* easily adjusted by an external resistor. Software shutdown
* mode is provided, which reduces power consumption to be
* less than 1 uA. VEML6070's operating voltage ranges from
* 2.7 V to 5.5 V.
*
* @image html veml6070.jpg
* @snippet veml6070.cxx Interesting
*/
class VEML6070 { class VEML6070 {
public: public:
@ -43,8 +81,26 @@ namespace upm {
*/ */
~VEML6070(); ~VEML6070();
/**
* Function to get the UV value.
*
* @return int16_t UV value
*/
int getUVIntensity(); int getUVIntensity();
/**
* Function to allow the user to set the intergration time
* for the sensor.
* Integration time:
* Bit Setting | Description | RSet
* IT1 IT0 | | 300 k-ohms | 600 k-ohms
* 0 0 | 1/2T | 62.5 ms | 125 ms
* 0 1 | 1T | 125 ms | 250 ms
* 1 0 | 2T | 250 ms | 500 ms
* 1 1 | 4T | 500 ms | 1000 ms
*
* @param time veml6070_integration_time_t
*/
void setIntegrationTime(veml6070_integration_time_t time); void setIntegrationTime(veml6070_integration_time_t time);
private: private: