LibDriver CCS811
Loading...
Searching...
No Matches
driver_ccs811_interrupt.c
Go to the documentation of this file.
1
36
38
39static ccs811_handle_t gs_handle;
40
52uint8_t ccs811_interrupt_init(ccs811_address_t addr_pin, uint16_t low_medium_ppm,
53 uint16_t medium_high_ppm, uint8_t hysteresis)
54{
55 uint8_t res;
56
57 /* link functions */
74
75 /* set addr pin */
76 res = ccs811_set_addr_pin(&gs_handle, addr_pin);
77 if (res != 0)
78 {
79 ccs811_interface_debug_print("ccs811: set addr pin failed.\n");
80
81 return 1;
82 }
83
84 /* ccs811 init */
85 res = ccs811_init(&gs_handle);
86 if (res != 0)
87 {
88 ccs811_interface_debug_print("ccs811: init failed.\n");
89
90 return 1;
91 }
92
93 /* app start */
94 res = ccs811_app_start(&gs_handle);
95 if (res != 0)
96 {
97 ccs811_interface_debug_print("ccs811: start failed.\n");
98 (void)ccs811_deinit(&gs_handle);
99
100 return 1;
101 }
102
103 /* set default mode */
105 if (res != 0)
106 {
107 ccs811_interface_debug_print("ccs811: set mode failed.\n");
108 (void)ccs811_deinit(&gs_handle);
109
110 return 1;
111 }
112
113 /* disable interrupt data ready */
115 if (res != 0)
116 {
117 ccs811_interface_debug_print("ccs811: set interrupt data ready failed.\n");
118 (void)ccs811_deinit(&gs_handle);
119
120 return 1;
121 }
122
123 /* set eco2 threshold */
124 res = ccs811_set_eco2_threshold(&gs_handle, low_medium_ppm, medium_high_ppm, hysteresis);
125 if (res != 0)
126 {
127 ccs811_interface_debug_print("ccs811: set eco2 threshold failed.\n");
128 (void)ccs811_deinit(&gs_handle);
129
130 return 1;
131 }
132
133 /* enable interrupt threshold */
135 if (res != 0)
136 {
137 ccs811_interface_debug_print("ccs811: set interrupt threshold failed.\n");
138 (void)ccs811_deinit(&gs_handle);
139
140 return 1;
141 }
142
143 return 0;
144}
145
154{
155 /* close ccs811 */
156 if (ccs811_deinit(&gs_handle) != 0)
157 {
158 return 1;
159 }
160
161 return 0;
162}
163
173uint8_t ccs811_interrupt_read(uint16_t *eco2_ppm, uint16_t *tvoc_ppb)
174{
175 uint16_t raw;
176
177 /* read data */
178 if (ccs811_read(&gs_handle, eco2_ppm, tvoc_ppb, &raw) != 0)
179 {
180 return 1;
181 }
182
183 return 0;
184}
185
195{
196 if (ccs811_get_hardware_id(&gs_handle, id) != 0)
197 {
198 return 1;
199 }
200
201 return 0;
202}
203
213{
214 if (ccs811_get_hardware_version(&gs_handle, version) != 0)
215 {
216 return 1;
217 }
218
219 return 0;
220}
221
232uint8_t ccs811_interrupt_get_firmware_bootloader_version(uint8_t *major, uint8_t *minor, uint8_t *trivial)
233{
234 if (ccs811_get_firmware_bootloader_version(&gs_handle, major, minor, trivial) != 0)
235 {
236 return 1;
237 }
238
239 return 0;
240}
241
252uint8_t ccs811_interrupt_get_firmware_application_version(uint8_t *major, uint8_t *minor, uint8_t *trivial)
253{
254 if (ccs811_get_firmware_application_version(&gs_handle, major, minor, trivial) != 0)
255 {
256 return 1;
257 }
258
259 return 0;
260}
261
270{
271 if (ccs811_soft_reset(&gs_handle) != 0)
272 {
273 return 1;
274 }
275
276 return 0;
277}
278
287{
288 if (ccs811_hard_reset(&gs_handle) != 0)
289 {
290 return 1;
291 }
292
293 return 0;
294}
295
304{
305 if (ccs811_wake_up(&gs_handle, CCS811_BOOL_TRUE) != 0)
306 {
307 return 1;
308 }
309
310 return 0;
311}
312
321{
322 if (ccs811_wake_up(&gs_handle, CCS811_BOOL_FALSE) != 0)
323 {
324 return 1;
325 }
326
327 return 0;
328}
329
338uint8_t ccs811_interrupt_get_status(uint8_t *status)
339{
340 if (ccs811_get_status(&gs_handle, status) != 0)
341 {
342 return 1;
343 }
344
345 return 0;
346}
347
357uint8_t ccs811_interrupt_get_raw_data(uint8_t *ua, float *adc_v)
358{
359 uint16_t raw;
360 uint16_t adc_raw;
361
362 /* get raw data */
363 if (ccs811_get_raw_data(&gs_handle, &raw, ua, &adc_raw, adc_v) != 0)
364 {
365 return 1;
366 }
367
368 return 0;
369}
370
380uint8_t ccs811_interrupt_set_environment_data(float humidity, float temperature)
381{
382 uint16_t humidity_raw;
383 uint16_t temperature_raw;
384
385 /* humidity convert */
386 if (ccs811_environment_humidity_convert_to_register(&gs_handle, humidity, &humidity_raw) != 0)
387 {
388 return 1;
389 }
390
391 /* temperature convert */
392 if (ccs811_environment_temperature_convert_to_register(&gs_handle, temperature, &temperature_raw) != 0)
393 {
394 return 1;
395 }
396
397 /* set environment data */
398 if (ccs811_set_environment_data(&gs_handle, humidity_raw, temperature_raw) != 0)
399 {
400 return 1;
401 }
402
403 return 0;
404}
405
414uint8_t ccs811_interrupt_set_baseline(uint16_t baseline)
415{
416 if (ccs811_set_baseline(&gs_handle, baseline) != 0)
417 {
418 return 1;
419 }
420
421 return 0;
422}
driver ccs811 interrupt header file
uint8_t ccs811_app_start(ccs811_handle_t *handle)
app start
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_hard_reset(ccs811_handle_t *handle)
hard reset
uint8_t ccs811_environment_temperature_convert_to_register(ccs811_handle_t *handle, float temperature, uint16_t *reg)
convert real data format to register data format
uint8_t ccs811_get_hardware_version(ccs811_handle_t *handle, uint8_t *version)
get hardware version
uint8_t ccs811_set_baseline(ccs811_handle_t *handle, uint16_t baseline)
set baseline
uint8_t ccs811_environment_humidity_convert_to_register(ccs811_handle_t *handle, float humidity, uint16_t *reg)
convert real data format to register data format
uint8_t ccs811_set_mode(ccs811_handle_t *handle, ccs811_mode_t mode)
set mode
uint8_t ccs811_get_firmware_bootloader_version(ccs811_handle_t *handle, uint8_t *major, uint8_t *minor, uint8_t *trivial)
get firmware bootloader version
uint8_t ccs811_soft_reset(ccs811_handle_t *handle)
soft reset
uint8_t ccs811_set_environment_data(ccs811_handle_t *handle, uint16_t humidity_raw, uint16_t temperature_raw)
set environment data
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_get_firmware_application_version(ccs811_handle_t *handle, uint8_t *major, uint8_t *minor, uint8_t *trivial)
get firmware application version
uint8_t ccs811_set_interrupt_threshold(ccs811_handle_t *handle, ccs811_bool_t enable)
enable or disable interrupt threshold
uint8_t ccs811_get_hardware_id(ccs811_handle_t *handle, uint8_t *id)
get hardware id
uint8_t ccs811_init(ccs811_handle_t *handle)
initialize the chip
uint8_t ccs811_deinit(ccs811_handle_t *handle)
close the chip
uint8_t ccs811_get_status(ccs811_handle_t *handle, uint8_t *status)
get status
uint8_t ccs811_get_raw_data(ccs811_handle_t *handle, uint16_t *raw, uint8_t *ua, uint16_t *adc_raw, float *adc_v)
get raw data
uint8_t ccs811_wake_up(ccs811_handle_t *handle, ccs811_bool_t enable)
wake up
@ CCS811_BOOL_TRUE
@ CCS811_BOOL_FALSE
#define CCS811_INTERRUPT_DEFAULT_MODE
ccs811 interrupt example default definition
uint8_t ccs811_interrupt_wake_up(void)
interrupt example wake up
uint8_t ccs811_interrupt_power_down(void)
interrupt example power down
uint8_t ccs811_interrupt_init(ccs811_address_t addr_pin, uint16_t low_medium_ppm, uint16_t medium_high_ppm, uint8_t hysteresis)
interrupt example init
uint8_t ccs811_interrupt_get_firmware_application_version(uint8_t *major, uint8_t *minor, uint8_t *trivial)
interrupt example get firmware application version
uint8_t ccs811_interrupt_set_environment_data(float humidity, float temperature)
interrupt example set environment data
uint8_t ccs811_interrupt_deinit(void)
interrupt example deinit
uint8_t ccs811_interrupt_get_status(uint8_t *status)
interrupt example get status
uint8_t ccs811_interrupt_soft_reset(void)
interrupt example soft reset
uint8_t ccs811_interrupt_get_firmware_bootloader_version(uint8_t *major, uint8_t *minor, uint8_t *trivial)
interrupt example get firmware bootloader version
uint8_t ccs811_interrupt_get_hardware_version(uint8_t *version)
interrupt example get hardware version
uint8_t ccs811_interrupt_get_raw_data(uint8_t *ua, float *adc_v)
interrupt example get raw data
uint8_t ccs811_interrupt_hard_reset(void)
interrupt example hard reset
uint8_t ccs811_interrupt_read(uint16_t *eco2_ppm, uint16_t *tvoc_ppb)
interrupt example read
uint8_t ccs811_interrupt_get_hardware_id(uint8_t *id)
interrupt example get hardware id
uint8_t ccs811_interrupt_set_baseline(uint16_t baseline)
interrupt example set baseline
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