LibDriver UVIS25
Loading...
Searching...
No Matches
driver_uvis25_interrupt.c
Go to the documentation of this file.
1
37
39
40static uvis25_handle_t gs_handle;
41
50{
51 if (uvis25_irq_handler(&gs_handle) != 0)
52 {
53 return 1;
54 }
55 else
56 {
57 return 0;
58 }
59}
60
72uint8_t uvis25_interrupt_init(uvis25_interface_t interface, uvis25_interrupt_type_t mode, float uv_threshold,
73 void (*callback)(uint8_t type))
74{
75 uint8_t res;
76 uint8_t reg;
77
78 /* link functions */
90 DRIVER_UVIS25_LINK_RECEIVE_CALLBACK(&gs_handle, callback);
91
92 /* set interface */
93 res = uvis25_set_interface(&gs_handle, interface);
94 if (res != 0)
95 {
96 uvis25_interface_debug_print("uvis25: set interface failed.\n");
97
98 return 1;
99 }
100
101 /* uvis25 init */
102 res = uvis25_init(&gs_handle);
103 if (res != 0)
104 {
105 uvis25_interface_debug_print("uvis25: init failed.\n");
106
107 return 1;
108 }
109
110 /* set default iic */
112 if (res != 0)
113 {
114 uvis25_interface_debug_print("uvis25: set iic failed.\n");
115 (void)uvis25_deinit(&gs_handle);
116
117 return 1;
118 }
119
120 /* set default spi wire */
122 if (res != 0)
123 {
124 uvis25_interface_debug_print("uvis25: set spi wire failed.\n");
125 (void)uvis25_deinit(&gs_handle);
126
127 return 1;
128 }
129
130 /* set default boot */
132 if (res != 0)
133 {
134 uvis25_interface_debug_print("uvis25: set boot failed.\n");
135 (void)uvis25_deinit(&gs_handle);
136
137 return 1;
138 }
139
140 /* set default block data update */
142 if (res != 0)
143 {
144 uvis25_interface_debug_print("uvis25: set block data update failed.\n");
145 (void)uvis25_deinit(&gs_handle);
146
147 return 1;
148 }
149
150 /* set default interrupt active level */
152 if (res != 0)
153 {
154 uvis25_interface_debug_print("uvis25: set interrupt active level failed.\n");
155 (void)uvis25_deinit(&gs_handle);
156
157 return 1;
158 }
159
160 /* set default interrupt pin type */
162 if (res != 0)
163 {
164 uvis25_interface_debug_print("uvis25: set interrupt pin type failed.\n");
165 (void)uvis25_deinit(&gs_handle);
166
167 return 1;
168 }
169
170 /* set default interrupt mode type */
171 res = uvis25_set_interrupt_type(&gs_handle, mode);
172 if (res != 0)
173 {
174 uvis25_interface_debug_print("uvis25: set interrupt type failed.\n");
175 (void)uvis25_deinit(&gs_handle);
176
177 return 1;
178 }
179
180 /* set default interrupt */
182 if (res != 0)
183 {
184 uvis25_interface_debug_print("uvis25: set interrupt failed.\n");
185 (void)uvis25_deinit(&gs_handle);
186
187 return 1;
188 }
189
190 /* set default latch interrupt */
192 if (res != 0)
193 {
194 uvis25_interface_debug_print("uvis25: set latch interrupt failed.\n");
195 (void)uvis25_deinit(&gs_handle);
196
197 return 1;
198 }
199
200 /* set default interrupt low threshold */
202 if (res != 0)
203 {
204 uvis25_interface_debug_print("uvis25: set interrupt low threshold failed.\n");
205 (void)uvis25_deinit(&gs_handle);
206
207 return 1;
208 }
209
210 /* set default interrupt high threshold */
212 if (res != 0)
213 {
214 uvis25_interface_debug_print("uvis25: set interrupt high threshold failed.\n");
215 (void)uvis25_deinit(&gs_handle);
216
217 return 1;
218 }
219
220 /* convert threshold to register */
221 res = uvis25_threshold_convert_to_register(&gs_handle, uv_threshold, (uint8_t *)&reg);
222 if (res != 0)
223 {
224 uvis25_interface_debug_print("uvis25: threshold convert to register failed.\n");
225 (void)uvis25_deinit(&gs_handle);
226
227 return 1;
228 }
229
230 /* set threshold */
231 res = uvis25_set_threshold(&gs_handle, reg);
232 if (res != 0)
233 {
234 uvis25_interface_debug_print("uvis25: set threshold failed.\n");
235 (void)uvis25_deinit(&gs_handle);
236
237 return 1;
238 }
239
240 /* start continuous read */
241 res = uvis25_start_continuous_read(&gs_handle);
242 if (res != 0)
243 {
244 uvis25_interface_debug_print("uvis25: start continuous read failed.\n");
245 (void)uvis25_deinit(&gs_handle);
246
247 return 1;
248 }
249
250 return 0;
251}
252
261uint8_t uvis25_interrupt_read(float *uv)
262{
263 uint8_t raw;
264
265 /* continuous read */
266 if (uvis25_continuous_read(&gs_handle, (uint8_t *)&raw, uv) != 0)
267 {
268 return 1;
269 }
270 else
271 {
272 return 0;
273 }
274}
275
284{
285 uint8_t res;
286
287 /* stop continuous read */
288 res = uvis25_stop_continuous_read(&gs_handle);
289 if (res != 0)
290 {
291 return 1;
292 }
293
294 /* close uvis25 */
295 if (uvis25_deinit(&gs_handle) != 0)
296 {
297 return 1;
298 }
299 else
300 {
301 return 0;
302 }
303}
driver uvis25 interrupt header file
uvis25_interface_t
uvis25 interface enumeration definition
uint8_t uvis25_set_boot(uvis25_handle_t *handle, uvis25_boot_mode_t mode)
set the boot mode
uint8_t uvis25_set_spi_wire(uvis25_handle_t *handle, uvis25_spi_wire_t wire)
set the spi wire
uint8_t uvis25_init(uvis25_handle_t *handle)
initialize the chip
uint8_t uvis25_set_iic(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable the chip iic
uint8_t uvis25_continuous_read(uvis25_handle_t *handle, uint8_t *raw, float *uv)
read data continuously
uint8_t uvis25_deinit(uvis25_handle_t *handle)
close the chip
uint8_t uvis25_irq_handler(uvis25_handle_t *handle)
irq handler
uint8_t uvis25_set_interface(uvis25_handle_t *handle, uvis25_interface_t interface)
set the chip interface
struct uvis25_handle_s uvis25_handle_t
uvis25 handle structure definition
uint8_t uvis25_set_block_data_update(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable blocking data update
uint8_t uvis25_start_continuous_read(uvis25_handle_t *handle)
start reading
uint8_t uvis25_stop_continuous_read(uvis25_handle_t *handle)
stop reading
#define UVIS25_INTERRUPT_DEFAULT_HIGH_THRESHOLD_INTERRUPT
#define UVIS25_INTERRUPT_DEFAULT_LATCH_INTERRUPT
#define UVIS25_INTERRUPT_DEFAULT_IIC
uvis25 interrupt example default definition
#define UVIS25_INTERRUPT_DEFAULT_SPI_WIRE
uint8_t uvis25_interrupt_irq_handler(void)
interrupt example irq handler
#define UVIS25_INTERRUPT_DEFAULT_INTERRUPT_ACTIVE_LEVEL
#define UVIS25_INTERRUPT_DEFAULT_LOW_THRESHOLD_INTERRUPT
#define UVIS25_INTERRUPT_DEFAULT_INTERRUPT_PIN_TYPE
uint8_t uvis25_interrupt_init(uvis25_interface_t interface, uvis25_interrupt_type_t mode, float uv_threshold, void(*callback)(uint8_t type))
interrupt example init
uint8_t uvis25_interrupt_read(float *uv)
interrupt example read
uint8_t uvis25_interrupt_deinit(void)
basic interrupt deinit
#define UVIS25_INTERRUPT_DEFAULT_BOOT_MODE
#define UVIS25_INTERRUPT_DEFAULT_BLOCK_DATA_UPDATE
#define UVIS25_INTERRUPT_DEFAULT_INTERRUPT
uint8_t uvis25_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void uvis25_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t uvis25_interface_iic_init(void)
interface iic bus init
uint8_t uvis25_interface_iic_deinit(void)
interface iic bus deinit
uint8_t uvis25_interface_spi_init(void)
interface spi bus init
uint8_t uvis25_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t uvis25_interface_spi_write(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus write
uint8_t uvis25_interface_spi_deinit(void)
interface spi bus deinit
uint8_t uvis25_interface_spi_read(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus read
void uvis25_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t uvis25_set_interrupt_low_threshold(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable the low threshold interrupt
uint8_t uvis25_set_interrupt_high_threshold(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable the high threshold interrupt
uint8_t uvis25_set_interrupt_pin_type(uvis25_handle_t *handle, uvis25_interrupt_pin_type_t pin_type)
set the interrupt pin type
uint8_t uvis25_set_threshold(uvis25_handle_t *handle, uint8_t threshold)
set the interrupt threshold
uint8_t uvis25_set_interrupt_active_level(uvis25_handle_t *handle, uvis25_interrupt_active_level_t level)
set the interrupt active level
uint8_t uvis25_threshold_convert_to_register(uvis25_handle_t *handle, float uv, uint8_t *reg)
convert a uv index to a raw register data
uint8_t uvis25_set_latch_interrupt(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable latching interrupt
uint8_t uvis25_set_interrupt_type(uvis25_handle_t *handle, uvis25_interrupt_type_t type)
set the interrupt type
uint8_t uvis25_set_interrupt(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable the chip interrupt
uvis25_interrupt_type_t
uvis25 interrupt type enumeration definition