Kevin Braun / bme280
Revision:
3:96075bee19f0
Parent:
1:d8d62aee6d5b
diff -r d8d62aee6d5b -r 96075bee19f0 veml60xx.h
--- a/veml60xx.h	Thu Apr 21 23:32:50 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-#ifndef VEML60XX_H
-#define VEML60XX_H
-
-#include "mbed.h"
-
-// I2C address
-#define VEML60_WADDR                        0x20    //i2c address write mode
-#define VEML60_RADDR                        0x21    //i2c address read mode
-
-
-// VEMP6040 and VEML6075 common register set
-#define VEML60xx_CONF_REG                   0x00    //rw Config Register 
-
-// VEML6075-only register set
-#define VEML6075_UVA_DATA_REG               0x07    //ro 16 bit UVA data Register
-#define VEML6075_DUMMY_REG                  0x08    //ro 16 bit dummy Register
-#define VEML6075_UVB_DATA_REG               0x09    //ro 16 bit UVB data Register 
-#define VEML6075_UV_COMP1_REG               0x0A    //ro 16 bit UV compensation Register 1
-#define VEML6075_UV_COMP2_REG               0x0B    //ro 16 bit UV compensation Register 2
-#define VEML6075_CHIP_ID_REG                0x0C    //ro 16 bit Chip ID Register 
-
-// VEML6040-only register set
-#define VEML6040_R_DATA_REG                 0x08    //ro 16 bit RED data
-#define VEML6040_G_DATA_REG                 0x09    //ro 16 bit GREEN data
-#define VEML6040_B_DATA_REG                 0x0A    //ro 16 bit BLUE data
-#define VEML6040_W_DATA_REG                 0x0B    //ro 16 bit WHITE data 
-
-// VEML6040 and VEML6075 common config register bits
-#define VEML60xx_CONF_BITS_IT               0x70    //VEML6075 -> 0x00 = 50mS, 0x10 = 100mS, 0x20 = 200mS, 0x30 = 400mS, 0x40 = 800mS, 0x50-0x70 = reserved
-                                                    //VEML6040 -> 0x00 = 40mS, 0x10 =  80mS, 0x20 = 160mS, 0x30 = 320mS, 0x40 = 640mS, 0x50 = 1280mS, 0x60-0x70 = reserved
-#define VEML60xx_CONF_BITS_IT_50m40m        0x00
-#define VEML60xx_CONF_BITS_IT_100m80m       0x10
-#define VEML60xx_CONF_BITS_IT_200m160m      0x20
-#define VEML60xx_CONF_BITS_IT_400m320m      0x30
-#define VEML60xx_CONF_BITS_IT_800m640m      0x40
-                                                    
-#define VEML60xx_CONF_BITS_TRIG             0x04    //0x00 = idle, 0x04 = trigger (measurement), auto returns to 0x00 note: AF == 1
-#define VEML60xx_CONF_BITS_AF               0x02    //0x00 = auto, 0x02 = force (mode)
-#define VEML60xx_CONF_BITS_SD               0x01    //0x00 = run, 0x01 = shut down
-
-// VEML6075-only config register bits
-#define VEML6075_CONF_BITS_HD               0x08    //0x00 = normal, 0x08 = high (dynamic setting)
-
-// VEML6040-only config register bits
-#define VEML6040_CONF_BITS_IT_1280m         0x50
-
-// VEML6075-only ID contents
-#define VEML6075_DEVICE_ID                  0x0026  //expected device ID
-
-// VEML6040-only ID contents
-#define VEML6040_DEVICE_ID                  0x0123  //expected device ID
-
-// VEML6075-only conversion coefficients
-#define VEML6075_UVA_COEF_A                 3.33
-#define VEML6075_UVA_COEF_B                 2.50
-#define VEML6075_UVB_COEF_C                 3.67
-#define VEML6075_UVB_COEF_D                 2.75
-
-// VEML6040-only conversion coefficients
-#define VEML6040_LUX_STEP_000               0.18
-#define VEML6040_LUX_STEP_001               0.09
-#define VEML6040_LUX_STEP_010               0.045
-#define VEML6040_LUX_STEP_011               0.0225
-#define VEML6040_LUX_STEP_100               0.01125
-#define VEML6040_LUX_STEP_101               0.005625
-
-// VEML6075-only conversion coefficients
-#define VEML6075_UVA_RESP                   0.0011
-#define VEML6075_UVB_RESP                   0.00125
-
-
-    /** 
-     * Create VEML60 controller class
-     *
-     * @param VEML class
-     *
-     */
-class veml60xx {
-
-public:
-
-    /** 
-     * Public data structure for VEML60xx data values.
-     * 
-    **/
-    typedef struct {
-        uint16_t conf_reg;  /*!< VEML60xx config register mirror */ 
-        
-        uint16_t uva_d;     /*!< VEML6075 UVA data */  
-        uint16_t dummy_d;   /*!< VEML6075 Dummy data */  
-        uint16_t uvb_d;     /*!< VEML6075 UVB data */
-        uint16_t uv_c1;     /*!< VEML6075 UV comp1 data */
-        uint16_t uv_c2;     /*!< VEML6075 UV comp2 data */
-        uint16_t id;        /*!< VEML6075 Device ID*/
-        double   uva_comp;  /*!< VEML6075 UVA compensated data */
-        double   uvb_comp;  /*!< VEML6075 UVB compensated data */
-        double   uv_index;  /*!< VEML6075 UV Index */
-        
-        uint16_t r_d;       /*!< VEML6040 RED data */ 
-        uint16_t g_d;       /*!< VEML6040 GREEN data */ 
-        uint16_t b_d;       /*!< VEML6040 BLUE data */ 
-        uint16_t w_d;       /*!< VEML6040 WHITE data */
-        double   lux_step;  /*!< VEML6040 Lux value per step */
-         
-        bool     is6075;    /*!< connected device is a VEML6075 */ 
-        bool     is6040;    /*!< connected device is a VEML6040 */ 
-    } veml60xx_struct;
-         
-    /** 
-     * Create a VME60xx object using the specified I2C object
-     *
-     * @param sda - mbed I2C interface pin
-     *
-     * @param scl - mbed I2C interface pin
-     *
-     * @param set_I2C_frequency
-     */
-    veml60xx(PinName sda, PinName scl,  int i2cFrequency);
-
-    /**
-     * Destructor
-     *
-     * @param --none--
-     */
-    ~veml60xx();
-
-    /** 
-     * Get VEMP6075 ID Register
-     *
-     * Note: the VEMP6040 seems to have an ID register.  It's not published
-     * 
-     * @param pointer to struct veml60xx_struct
-     *
-     * @return ID Register value
-    */ 
-    uint16_t getID(veml60xx_struct& Pntr);
-    
-    /** 
-     * Get VEMPxx Config Register
-     * 
-     * @param pointer to struct veml60xx_struct
-     *
-     * @return Config Register value
-    */ 
-    uint16_t getConfig(veml60xx_struct& Pntr);
-
-    /** 
-     * Get VEMP60xx Raw Data
-     * 
-     * @param pointer to struct veml60xx_struct
-     *
-     * @return raw data put into struct vemp60xx_struct
-    */ 
-    uint16_t getRawData(veml60xx_struct& Pntr);
-
-    /** 
-     * Convert the VEMP6075 Raw Data
-     * 
-     * @param pointer to struct veml60xx_struct
-     *
-     * @return converted data put into struct vemp60xx_struct
-    */ 
-    void convertRawData(veml60xx_struct& Pntr);
-
-    /** 
-     * Initialize the VEMP60xx
-     *
-     * Sets up the command register to proper operating mode
-     * 
-     * @param pointer to struct veml60xx_struct
-     *
-     * @param val any value to be or'd into the config register
-     *
-     * @return 0
-    */  
-    void setConfig(veml60xx_struct& Pntr, uint16_t val);
-
-    /** 
-     * Trigger a VEMP60xx conversion cycle
-     *
-     * Must be in manual trigger mode (AF == 1)
-     *
-     * Example: uv.setConfig(struct_ptr, VEML60xx_CONF_BITS_AF);
-     * 
-     * @param pointer to struct veml60xx_struct
-     *
-     * @return 0 TRIG properly set
-     * @return 1 TRIG has been previously set
-     * @return 2 AF bit not set (in AUTO mode)
-    */     
-    uint16_t startAccess(veml60xx_struct& Pntr);
-
-    /** 
-     * Automatically adjust Lux scaling level
-     *
-     * Change CONF_BITS_IT by +-1 if count bits saturated or too low
-     * 
-     * @param pointer to struct veml60xx_struct
-     *
-     * @return true = IT scale value has changed
-     * @return false = IT scale value not changed, could be at its limit
-    */  
-    bool autoAdjustLux(veml60xx_struct& Pntr);
-        
-private:
-    char vemlBuffer[4];
-  
-protected:
-    I2C*    _i2c_;
-
-}; 
-#endif
\ No newline at end of file