LibDriver CCS811
Loading...
Searching...
No Matches
driver_ccs811_interrupt_test.c
Go to the documentation of this file.
1
36
38
39static ccs811_handle_t gs_handle;
40
53uint8_t ccs811_interrupt_test(ccs811_address_t addr_pin, uint16_t low_medium_ppm,
54 uint16_t medium_high_ppm, uint8_t hysteresis, uint32_t times)
55{
56 uint8_t res;
57 uint32_t i;
58 uint16_t eco2_ppm;
59 uint16_t tvoc_ppb;
60 ccs811_info_t info;
61
62 /* link functions */
79
80 /* ccs811 info */
81 res = ccs811_info(&info);
82 if (res != 0)
83 {
84 ccs811_interface_debug_print("ccs811: get info failed.\n");
85
86 return 1;
87 }
88 else
89 {
90 /* print chip information */
91 ccs811_interface_debug_print("ccs811: chip is %s.\n", info.chip_name);
92 ccs811_interface_debug_print("ccs811: manufacturer is %s.\n", info.manufacturer_name);
93 ccs811_interface_debug_print("ccs811: interface is %s.\n", info.interface);
94 ccs811_interface_debug_print("ccs811: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
95 ccs811_interface_debug_print("ccs811: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
96 ccs811_interface_debug_print("ccs811: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
97 ccs811_interface_debug_print("ccs811: max current is %0.2fmA.\n", info.max_current_ma);
98 ccs811_interface_debug_print("ccs811: max temperature is %0.1fC.\n", info.temperature_max);
99 ccs811_interface_debug_print("ccs811: min temperature is %0.1fC.\n", info.temperature_min);
100 }
101
102 /* start interrupt test */
103 ccs811_interface_debug_print("ccs811: start interrupt test.\n");
104
105 /* set addr pin */
106 res = ccs811_set_addr_pin(&gs_handle, addr_pin);
107 if (res != 0)
108 {
109 ccs811_interface_debug_print("ccs811: set addr pin failed.\n");
110
111 return 1;
112 }
113
114 /* ccs811 init */
115 res = ccs811_init(&gs_handle);
116 if (res != 0)
117 {
118 ccs811_interface_debug_print("ccs811: init failed.\n");
119
120 return 1;
121 }
122
123 /* app start */
124 res = ccs811_app_start(&gs_handle);
125 if (res != 0)
126 {
127 ccs811_interface_debug_print("ccs811: start failed.\n");
128 (void)ccs811_deinit(&gs_handle);
129
130 return 1;
131 }
132
133 /* set high constant power */
135 if (res != 0)
136 {
137 ccs811_interface_debug_print("ccs811: set mode failed.\n");
138 (void)ccs811_deinit(&gs_handle);
139
140 return 1;
141 }
142
143 /* disable interrupt data ready */
145 if (res != 0)
146 {
147 ccs811_interface_debug_print("ccs811: set interrupt data ready failed.\n");
148 (void)ccs811_deinit(&gs_handle);
149
150 return 1;
151 }
152
153 /* set eco2 threshold */
154 res = ccs811_set_eco2_threshold(&gs_handle, low_medium_ppm, medium_high_ppm, hysteresis);
155 if (res != 0)
156 {
157 ccs811_interface_debug_print("ccs811: set eco2 threshold failed.\n");
158 (void)ccs811_deinit(&gs_handle);
159
160 return 1;
161 }
162
163 /* enable interrupt threshold */
165 if (res != 0)
166 {
167 ccs811_interface_debug_print("ccs811: set interrupt threshold failed.\n");
168 (void)ccs811_deinit(&gs_handle);
169
170 return 1;
171 }
172
173 /* delay 1s */
175
176 for (i = 0; i < times; i++)
177 {
178 uint16_t raw;
179
180 /* read data */
181 res = ccs811_read(&gs_handle, &eco2_ppm, &tvoc_ppb, &raw);
182 if (res != 0)
183 {
184 ccs811_interface_debug_print("ccs811: read failed.\n");
185 (void)ccs811_deinit(&gs_handle);
186
187 return 1;
188 }
189
190 /* output */
191 ccs811_interface_debug_print("ccs811: eco2 ppm is %d ppm, please check int gpio level.\n", eco2_ppm);
192
193 /* delay 1s */
195 }
196
197 /* finish interrupt test */
198 ccs811_interface_debug_print("ccs811: finish interrupt test.\n");
199 (void)ccs811_deinit(&gs_handle);
200
201 return 0;
202}
driver ccs811 interrupt test header file
uint8_t ccs811_app_start(ccs811_handle_t *handle)
app start
struct ccs811_info_s ccs811_info_t
ccs811 information structure definition
uint8_t ccs811_set_addr_pin(ccs811_handle_t *handle, ccs811_address_t addr_pin)
set address pin
struct ccs811_handle_s ccs811_handle_t
ccs811 handle structure definition
uint8_t ccs811_set_eco2_threshold(ccs811_handle_t *handle, uint16_t low_medium_ppm, uint16_t medium_high_ppm, uint8_t hysteresis)
set eco2 threshold
ccs811_address_t
ccs811 address enumeration definition
uint8_t ccs811_set_mode(ccs811_handle_t *handle, ccs811_mode_t mode)
set mode
uint8_t ccs811_set_interrupt_data_ready(ccs811_handle_t *handle, ccs811_bool_t enable)
enable or disable interrupt data ready
uint8_t ccs811_read(ccs811_handle_t *handle, uint16_t *eco2_ppm, uint16_t *tvoc_ppb, uint16_t *raw)
read data
uint8_t ccs811_set_interrupt_threshold(ccs811_handle_t *handle, ccs811_bool_t enable)
enable or disable interrupt threshold
uint8_t ccs811_info(ccs811_info_t *info)
get chip information
uint8_t ccs811_init(ccs811_handle_t *handle)
initialize the chip
uint8_t ccs811_deinit(ccs811_handle_t *handle)
close the chip
@ CCS811_BOOL_TRUE
@ CCS811_BOOL_FALSE
@ CCS811_MODE_HIGH_CONSTANT_POWER
uint8_t ccs811_interface_gpio_reset_init(void)
interface gpio reset init
void ccs811_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t ccs811_interface_gpio_reset_deinit(void)
interface gpio reset deinit
uint8_t ccs811_interface_gpio_reset_write(uint8_t level)
interface gpio reset write
uint8_t ccs811_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t ccs811_interface_iic_deinit(void)
interface iic bus deinit
uint8_t ccs811_interface_gpio_wake_init(void)
interface gpio wake init
uint8_t ccs811_interface_gpio_wake_write(uint8_t level)
interface gpio wake write
uint8_t ccs811_interface_bin_read_deinit(void)
interface bin read deinit
uint8_t ccs811_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
uint8_t ccs811_interface_bin_read(uint32_t addr, uint16_t size, uint8_t *buffer)
interface bin read
uint8_t ccs811_interface_bin_read_init(char *name, uint32_t *size)
interface bin read init
uint8_t ccs811_interface_gpio_wake_deinit(void)
interface gpio wake deinit
uint8_t ccs811_interface_iic_init(void)
interface iic bus init
void ccs811_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t ccs811_interrupt_test(ccs811_address_t addr_pin, uint16_t low_medium_ppm, uint16_t medium_high_ppm, uint8_t hysteresis, uint32_t times)
interrupt test
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]