LibDriver UVIS25
Loading...
Searching...
No Matches
driver_uvis25.h
Go to the documentation of this file.
1
37
38#ifndef DRIVER_UVIS25_H
39#define DRIVER_UVIS25_H
40
41#include <stdio.h>
42#include <stdint.h>
43#include <string.h>
44
45#ifdef __cplusplus
46extern "C"{
47#endif
48
54
59
63typedef enum
64{
68
72typedef enum
73{
77
86
95
99
104
113
122
133
143
147
152
156typedef struct uvis25_handle_s
157{
158 uint8_t (*iic_init)(void);
159 uint8_t (*iic_deinit)(void);
160 uint8_t (*iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
161 uint8_t (*iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
162 uint8_t (*spi_init)(void);
163 uint8_t (*spi_deinit)(void);
164 uint8_t (*spi_read)(uint8_t reg, uint8_t *buf, uint16_t len);
165 uint8_t (*spi_write)(uint8_t reg, uint8_t *buf, uint16_t len);
166 void (*receive_callback)(uint8_t type);
167 void (*delay_ms)(uint32_t ms);
168 void (*debug_print)(const char *const fmt, ...);
169 uint8_t inited;
170 uint8_t iic_spi;
172
188
192
199
206#define DRIVER_UVIS25_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
207
214#define DRIVER_UVIS25_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
215
222#define DRIVER_UVIS25_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
223
230#define DRIVER_UVIS25_LINK_IIC_READ(HANDLE, FUC) (HANDLE)->iic_read = FUC
231
238#define DRIVER_UVIS25_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
239
246#define DRIVER_UVIS25_LINK_SPI_INIT(HANDLE, FUC) (HANDLE)->spi_init = FUC
247
254#define DRIVER_UVIS25_LINK_SPI_DEINIT(HANDLE, FUC) (HANDLE)->spi_deinit = FUC
255
262#define DRIVER_UVIS25_LINK_SPI_READ(HANDLE, FUC) (HANDLE)->spi_read = FUC
263
270#define DRIVER_UVIS25_LINK_SPI_WRITE(HANDLE, FUC) (HANDLE)->spi_write = FUC
271
278#define DRIVER_UVIS25_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
279
286#define DRIVER_UVIS25_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
287
294#define DRIVER_UVIS25_LINK_RECEIVE_CALLBACK(HANDLE, FUC) (HANDLE)->receive_callback = FUC
295
299
306
315uint8_t uvis25_info(uvis25_info_t *info);
316
327uint8_t uvis25_init(uvis25_handle_t *handle);
328
339uint8_t uvis25_deinit(uvis25_handle_t *handle);
340
353uint8_t uvis25_single_read(uvis25_handle_t *handle, uint8_t *raw, float *uv);
354
366
378
391uint8_t uvis25_continuous_read(uvis25_handle_t *handle, uint8_t *raw, float *uv);
392
403
413uint8_t uvis25_get_interface(uvis25_handle_t *handle, uvis25_interface_t *interface);
414
425uint8_t uvis25_irq_handler(uvis25_handle_t *handle);
426
439
452
465
478
490uint8_t uvis25_set_iic(uvis25_handle_t *handle, uvis25_bool_t enable);
491
503uint8_t uvis25_set_iic(uvis25_handle_t *handle, uvis25_bool_t enable);
504
516uint8_t uvis25_get_iic(uvis25_handle_t *handle, uvis25_bool_t *enable);
517
529uint8_t uvis25_get_iic(uvis25_handle_t *handle, uvis25_bool_t *enable);
530
543
556
560
567
580
593
606
619
632
645
657uint8_t uvis25_set_interrupt(uvis25_handle_t *handle, uvis25_bool_t enable);
658
670uint8_t uvis25_get_interrupt(uvis25_handle_t *handle, uvis25_bool_t *enable);
671
684
697
710
723
736
749
761uint8_t uvis25_set_threshold(uvis25_handle_t *handle, uint8_t threshold);
762
774uint8_t uvis25_get_threshold(uvis25_handle_t *handle, uint8_t *threshold);
775
788uint8_t uvis25_threshold_convert_to_register(uvis25_handle_t *handle, float uv, uint8_t *reg);
789
802uint8_t uvis25_threshold_convert_to_data(uvis25_handle_t *handle, uint8_t reg, float *uv);
803
807
814
828uint8_t uvis25_set_reg(uvis25_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
829
843uint8_t uvis25_get_reg(uvis25_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
844
848
852
853#ifdef __cplusplus
854}
855#endif
856
857#endif
uvis25_interface_t
uvis25 interface enumeration definition
uint8_t uvis25_get_iic(uvis25_handle_t *handle, uvis25_bool_t *enable)
get the chip iic status
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
uint8_t uvis25_get_boot(uvis25_handle_t *handle, uvis25_boot_mode_t *mode)
get the boot mode
uvis25_boot_mode_t
uvis25 boot enumeration definition
uint8_t uvis25_get_interface(uvis25_handle_t *handle, uvis25_interface_t *interface)
get the chip interface
uint8_t uvis25_single_read(uvis25_handle_t *handle, uint8_t *raw, float *uv)
read data once
struct uvis25_info_s uvis25_info_t
uvis25 information structure definition
struct uvis25_handle_s uvis25_handle_t
uvis25 handle structure definition
uint8_t uvis25_info(uvis25_info_t *info)
get chip's information
uvis25_spi_wire_t
uvis25 spi wire enumeration definition
uint8_t uvis25_get_block_data_update(uvis25_handle_t *handle, uvis25_bool_t *enable)
get blocking data update status
uint8_t uvis25_set_block_data_update(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable blocking data update
uvis25_bool_t
uvis25 bool enumeration definition
uint8_t uvis25_start_continuous_read(uvis25_handle_t *handle)
start reading
uint8_t uvis25_stop_continuous_read(uvis25_handle_t *handle)
stop reading
uint8_t uvis25_get_spi_wire(uvis25_handle_t *handle, uvis25_spi_wire_t *wire)
get the spi wire
@ UVIS25_INTERFACE_SPI
@ UVIS25_INTERFACE_IIC
@ UVIS25_BOOT_REBOOT_MEMORY_CONTENT
@ UVIS25_BOOT_NORMAL_MODE
@ UVIS25_SPI_WIRE_3
@ UVIS25_SPI_WIRE_4
@ UVIS25_BOOL_TRUE
@ UVIS25_BOOL_FALSE
uint8_t uvis25_set_reg(uvis25_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
set the chip register
uint8_t uvis25_get_reg(uvis25_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
get the chip register
uint8_t uvis25_get_threshold(uvis25_handle_t *handle, uint8_t *threshold)
get the interrupt threshold
uint8_t uvis25_set_interrupt_low_threshold(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable the low threshold interrupt
uvis25_interrupt_pin_type_t
uvis25 interrupt pin type enumeration definition
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_get_interrupt_type(uvis25_handle_t *handle, uvis25_interrupt_type_t *type)
get the interrupt type
uint8_t uvis25_get_interrupt_low_threshold(uvis25_handle_t *handle, uvis25_bool_t *enable)
get the low threshold interrupt status
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
uvis25_interrupt_active_level_t
uvis25 interrupt active level enumeration definition
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_get_latch_interrupt(uvis25_handle_t *handle, uvis25_bool_t *enable)
get the latching interrupt status
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_get_interrupt_pin_type(uvis25_handle_t *handle, uvis25_interrupt_pin_type_t *pin_type)
get the interrupt pin type
uint8_t uvis25_get_interrupt_high_threshold(uvis25_handle_t *handle, uvis25_bool_t *enable)
get the high threshold interrupt status
uint8_t uvis25_set_latch_interrupt(uvis25_handle_t *handle, uvis25_bool_t enable)
enable or disable latching interrupt
uint8_t uvis25_get_interrupt(uvis25_handle_t *handle, uvis25_bool_t *enable)
get the chip interrupt status
uvis25_interrupt_t
uvis25 interrupt status enumeration definition
uint8_t uvis25_set_interrupt_type(uvis25_handle_t *handle, uvis25_interrupt_type_t type)
set the interrupt type
uint8_t uvis25_threshold_convert_to_data(uvis25_handle_t *handle, uint8_t reg, float *uv)
convert a raw register data to a converted uv index
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
uint8_t uvis25_get_interrupt_active_level(uvis25_handle_t *handle, uvis25_interrupt_active_level_t *level)
get the interrupt active level
@ UVIS25_INTERRUPT_PIN_TYPE_OPEN_DRAIN
@ UVIS25_INTERRUPT_PIN_TYPE_PUSH_PULL
@ UVIS25_INTERRUPT_ACTIVE_LEVEL_LOWER
@ UVIS25_INTERRUPT_ACTIVE_LEVEL_HIGHER
@ UVIS25_INTERRUPT_LOWER
@ UVIS25_INTERRUPT_HIGHER
@ UVIS25_INTERRUPT_ACTIVE
@ UVIS25_INTERRUPT_TYPE_UV_INDEX_HIGH_LOW
@ UVIS25_INTERRUPT_TYPE_UV_INDEX_HIGH
@ UVIS25_INTERRUPT_TYPE_DATA_READY
@ UVIS25_INTERRUPT_TYPE_UV_INDEX_LOW
uvis25 handle structure definition
uint8_t(* spi_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t(* spi_read)(uint8_t reg, uint8_t *buf, uint16_t len)
void(* receive_callback)(uint8_t type)
uint8_t(* spi_write)(uint8_t reg, uint8_t *buf, uint16_t len)
void(* debug_print)(const char *const fmt,...)
uint8_t(* iic_init)(void)
uint8_t(* spi_deinit)(void)
uint8_t(* iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_deinit)(void)
uvis25 information structure definition
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]