55#include "lib/sensors.h"
64#define TSL2561_SENSOR_REF 0
65#define TSL2563_SENSOR_REF 1
70#define TSL2563_EXPECTED_PARTNO 0x30
71#define TSL2561_EXPECTED_PARTNO 0x50
73#ifndef TSL256X_CONF_REF
74#define TSL256X_REF TSL2561_SENSOR_REF
76#define TSL256X_REF TSL256X_CONF_REF
79#if TSL256X_CONF_REF == TSL2561_SENSOR
80#define TSL256X_ADDR 0x29
81#define TSL256X_EXPECTED_PARTNO TSL2561_EXPECTED_PARTNO
83#define TSL256X_ADDR 0x39
84#define TSL256X_EXPECTED_PARTNO TSL2563_EXPECTED_PARTNO
94#define TSL256X_CONTROL 0x00
95#define TSL256X_TIMMING 0x01
96#define TSL256X_THRLOWLOW 0x02
97#define TSL256X_THRLOWHIGH 0x03
98#define TSL256X_THRHIGHLOW 0x04
99#define TSL256X_THRHIGHHIGH 0x05
100#define TSL256X_INTERRUPT 0x06
101#define TSL256X_CRC 0x08
102#define TSL256X_ID_REG 0x0A
103#define TSL256X_D0LOW 0x0C
104#define TSL256X_D0HIGH 0x0D
105#define TSL256X_D1LOW 0x0E
106#define TSL256X_D1HIGH 0x0F
109#define TSL256X_COMMAND 0xA0
110#define TSL256X_CLEAR_INTERRUPT 0x40
112#define TSL256X_CONTROL_POWER_ON 0x03
113#define TSL256X_CONTROL_POWER_OFF 0x00
114#define TSL256X_TIMMING_GAIN 0x10
115#define TSL256X_TIMMING_MANUAL 0x08
116#define TSL256X_TIMMING_INTEG_MANUAL 0x03
117#define TSL256X_TIMMING_INTEG_402MS 0x02
118#define TSL256X_TIMMING_INTEG_101MS 0x01
119#define TSL256X_TIMMING_INTEG_13_7MS 0x00
120#define TSL256X_TIMMING_INTEG_MASK 0x03
122#define TSL256X_G16X_402MS (TSL256X_TIMMING_INTEG_402MS + TSL256X_TIMMING_GAIN)
123#define TSL256X_G1X_402MS TSL256X_TIMMING_INTEG_402MS
124#define TSL256X_G1X_101MS TSL256X_TIMMING_INTEG_101MS
125#define TSL256X_G1X_13_7MS TSL256X_TIMMING_INTEG_13_7MS
127#define TSL256X_INTR_SHIFT 0x04
128#define TSL256X_INTR_DISABLED 0x00
129#define TSL256X_INTR_LEVEL 0x01
130#define TSL256X_INTR_SMB_ALERT 0x02
131#define TSL256X_INTR_TEST 0x03
133#define TSL256X_INT_PERSIST_EVERY 0x00
134#define TSL256X_INT_PERSIST_ANY 0x01
135#define TSL256X_INT_PERSIST_2_CYCLES 0x02
136#define TSL256X_INT_PERSIST_3_CYCLES 0x03
137#define TSL256X_INT_PERSIST_4_CYCLES 0x04
138#define TSL256X_INT_PERSIST_5_CYCLES 0x05
139#define TSL256X_INT_PERSIST_6_CYCLES 0x06
140#define TSL256X_INT_PERSIST_7_CYCLES 0x07
141#define TSL256X_INT_PERSIST_8_CYCLES 0x08
142#define TSL256X_INT_PERSIST_9_CYCLES 0x09
143#define TSL256X_INT_PERSIST_10_CYCLES 0x0A
144#define TSL256X_INT_PERSIST_11_CYCLES 0x0B
145#define TSL256X_INT_PERSIST_12_CYCLES 0x0C
146#define TSL256X_INT_PERSIST_13_CYCLES 0x0D
147#define TSL256X_INT_PERSIST_14_CYCLES 0x0E
148#define TSL256X_INT_PERSIST_15_CYCLES 0x0F
150#define TSL256X_ID_PARTNO_MASK 0xF0
151#define TSL256X_ID_REV_MASK 0x0F
162#define CHSCALE_TINT0 0x7517
163#define CHSCALE_TINT1 0x0fe7
196#define TSL256X_REGISTER_INT(ptr) tsl256x_int_callback = ptr;
197extern void (*tsl256x_int_callback)(uint8_t value);
204#define TSL256X_SUCCESS 0x00
205#define TSL256X_LIGHT 0x01
206#define TSL256X_ERROR -1
208#define TSL256X_ACTIVE SENSORS_ACTIVE
209#define TSL256X_INT_OVER HW_INT_OVER_THRS
210#define TSL256X_INT_BELOW HW_INT_BELOW_THRS
211#define TSL256X_INT_DISABLE HW_INT_DISABLE
212#define TSL256X_TIMMING_CFG (HW_INT_DISABLE + 1)
214#define TSL256X_VAL_READ 0x01
217#define TSL256X_SENSOR "TSL256X Light Sensor"
219extern const struct sensors_sensor tsl256x;
Header file with declarations for the I2C Control module.
Implementation of a generic module controlling Zoul sensors.