30 #include <mraa/gpio.h>
32 #define SI114X_I2C_BUS 0
33 #define SI114X_DEFAULT_I2C_ADDR 0x60
34 #define SI114X_HW_KEY 0x17
78 typedef enum { REG_PART_ID = 0x00,
82 REG_IRQ_ENABLE = 0x04,
91 REG_MEAS_RATE0 = 0x08,
92 REG_MEAS_RATE1 = 0x09,
105 REG_IRQ_STATUS = 0x21,
106 REG_ALS_VIS_DATA0 = 0x22,
107 REG_ALS_VIS_DATA1 = 0x23,
108 REG_ALS_IR_DATA0 = 0x24,
109 REG_ALS_IR_DATA1 = 0x25,
110 REG_PS1_DATA0 = 0x26,
111 REG_PS1_DATA1 = 0x27,
112 REG_PS2_DATA0 = 0x28,
113 REG_PS2_DATA1 = 0x29,
114 REG_PS3_DATA0 = 0x2a,
115 REG_PS3_DATA1 = 0x2b,
116 REG_AUX_UVINDEX0 = 0x2c,
117 REG_AUX_UVINDEX1 = 0x2d,
118 REG_PARAM_READ = 0x2e,
120 REG_CHIP_STAT = 0x30,
122 REG_ANA_IN_KEY0 = 0x3b,
123 REG_ANA_IN_KEY1 = 0x3c,
124 REG_ANA_IN_KEY2 = 0x3d,
125 REG_ANA_IN_KEY3 = 0x3e
131 typedef enum { PARAM_I2C_ADDDR = 0x00,
133 PARAM_PSLED12_SEL = 0x02,
134 PARAM_PSLED3_SEL = 0x03,
136 PARAM_PS_ENCODING = 0x05,
137 PARAM_ALS_ENCODING = 0x06,
138 PARAM_PS1_ADCMUX = 0x07,
139 PARAM_PS2_ADCMUX = 0x08,
140 PARAM_PS3_ADCMUX = 0x09,
141 PARAM_PS_ADC_COUNT = 0x0a,
142 PARAM_PS_ADC_GAIN = 0x0b,
143 PARAM_PS_ADC_MISC = 0x0c,
145 PARAM_ALS_IR_ADCMUX = 0x0e,
146 PARAM_AUX_ADCMUX = 0x0f,
147 PARAM_ALS_VIS_ADC_COUNT = 0x10,
148 PARAM_ALS_VIS_ADC_GAIN = 0x11,
149 PARAM_ALS_VIS_ADC_MISC = 0x12,
151 PARAM_LED_REC = 0x1c,
152 PARAM_ALS_IR_ADC_COUNT = 0x1d,
153 PARAM_ALS_IR_ADX_GAIN = 0x1e,
154 PARAM_ALS_IR_ADC_MISC = 0x1f
160 typedef enum { CMD_NOOP = 0x00,
166 CMD_ALS_FORCE = 0x06,
167 CMD_PSALS_FORCE = 0x07,
170 CMD_ALS_PAUSE = 0x0a,
171 CMD_PSALS_PAUSE = 0x0b,
175 CMD_PSALS_AUTO = 0x0f,
177 CMD_PARAM_QUERY = 0x80,
185 typedef enum { CHLIST_EN_PS1 = 0x01,
186 CHLIST_EN_PS2 = 0x02,
187 CHLIST_EN_PS3 = 0x04,
189 CHLIST_EN_ALS_VIS = 0x10,
190 CHLIST_EN_ALS_IR = 0x20,
191 CHLIST_EN_AUX = 0x40,
198 typedef enum { ERR_NONE = 0x00,
200 ERR_INVALID_SET = 0x80,
201 ERR_PS1_ADC_OVER = 0x88,
202 ERR_PS2_ADC_OVER = 0x89,
203 ERR_PS3_ADC_OVER = 0x8a,
204 ERR_ALS_VIS_ADC_OVER = 0x8c,
205 ERR_ALS_IR_ADC_OVER = 0x8d,
206 ERR_AUX_ADC_OVER = 0x8e
213 typedef enum { IRQEN_ALS_IE = 0x01,
225 SI114X(
int bus, uint8_t address = SI114X_DEFAULT_I2C_ADDR);
239 bool writeByte(uint8_t reg, uint8_t byte);
313 mraa_i2c_context m_i2c;
SI114X_REG_T
Definition: si114x.h:78
bool writeByte(uint8_t reg, uint8_t byte)
Definition: si114x.cxx:76
float getUVIndex()
Definition: si114x.h:310
SI114X_CHLIST_BITS_T
Definition: si114x.h:185
uint16_t readWord(uint8_t reg)
Definition: si114x.cxx:95
void setUVCalibration(uint8_t uvcoeff0, uint8_t uvcoeff1, uint8_t uvcoeff2, uint8_t uvcoeff3)
Definition: si114x.cxx:100
void reset()
Definition: si114x.cxx:131
C++ API for the SI1145 UV light sensor.
Definition: si114x.h:72
void writeParam(SI114X_PARAM_T param, uint8_t value)
Definition: si114x.cxx:110
SI114X_IRQEN_BITS_T
Definition: si114x.h:213
~SI114X()
Definition: si114x.cxx:71
SI114X_PARAM_T
Definition: si114x.h:131
uint8_t readByte(uint8_t reg)
Definition: si114x.cxx:90
uint8_t readParam(SI114X_PARAM_T param)
Definition: si114x.cxx:123
SI114X(int bus, uint8_t address=SI114X_DEFAULT_I2C_ADDR)
Definition: si114x.cxx:38
SI114X_ERR_T
Definition: si114x.h:198
void initialize()
Definition: si114x.cxx:157
SI114X_CMD_T
Definition: si114x.h:160
void update()
Definition: si114x.cxx:180