LibDriver HDC2080
Loading...
Searching...
No Matches
driver_hdc2080_interrupt.c
Go to the documentation of this file.
1
36
38
39static hdc2080_handle_t gs_handle;
40
54 float high_deg, float low_deg,
55 float high_percent, float low_percent)
56{
57 uint8_t res;
58 uint8_t reg;
59 int8_t offset;
60
61 /* link interface function */
69
70 /* set addr pin */
71 res = hdc2080_set_addr_pin(&gs_handle, addr_pin);
72 if (res != 0)
73 {
74 hdc2080_interface_debug_print("hdc2080: set addr pin failed.\n");
75
76 return 1;
77 }
78
79 /* hdc2080 init */
80 res = hdc2080_init(&gs_handle);
81 if (res != 0)
82 {
83 hdc2080_interface_debug_print("hdc2080: init failed.\n");
84
85 return 1;
86 }
87
88 /* set default temperature resolution */
90 if (res != 0)
91 {
92 hdc2080_interface_debug_print("hdc2080: set temperature resolution failed.\n");
93 (void)hdc2080_deinit(&gs_handle);
94
95 return 1;
96 }
97
98 /* set default humidity resolution */
100 if (res != 0)
101 {
102 hdc2080_interface_debug_print("hdc2080: set humidity resolution failed.\n");
103 (void)hdc2080_deinit(&gs_handle);
104
105 return 1;
106 }
107
108 /* set humidity and temperature */
110 if (res != 0)
111 {
112 hdc2080_interface_debug_print("hdc2080: set mode failed.\n");
113 (void)hdc2080_deinit(&gs_handle);
114
115 return 1;
116 }
117
118 /* set default heater */
120 if (res != 0)
121 {
122 hdc2080_interface_debug_print("hdc2080: set heater failed.\n");
123 (void)hdc2080_deinit(&gs_handle);
124
125 return 1;
126 }
127
128 /* enable interrupt pin */
130 if (res != 0)
131 {
132 hdc2080_interface_debug_print("hdc2080: set interrupt pin failed.\n");
133 (void)hdc2080_deinit(&gs_handle);
134
135 return 1;
136 }
137
138 /* set default interrupt polarity */
140 if (res != 0)
141 {
142 hdc2080_interface_debug_print("hdc2080: set interrupt polarity failed.\n");
143 (void)hdc2080_deinit(&gs_handle);
144
145 return 1;
146 }
147
148 /* set high threshold */
149 res = hdc2080_humidity_convert_to_register(&gs_handle, high_percent, &reg);
150 if (res != 0)
151 {
152 hdc2080_interface_debug_print("hdc2080: humidity convert to register failed.\n");
153 (void)hdc2080_deinit(&gs_handle);
154
155 return 1;
156 }
157
158 /* set humidity high threshold */
159 res = hdc2080_set_humidity_high_threshold(&gs_handle, reg);
160 if (res != 0)
161 {
162 hdc2080_interface_debug_print("hdc2080: set humidity high threshold failed.\n");
163 (void)hdc2080_deinit(&gs_handle);
164
165 return 1;
166 }
167
168 /* set low threshold */
169 res = hdc2080_humidity_convert_to_register(&gs_handle, low_percent, &reg);
170 if (res != 0)
171 {
172 hdc2080_interface_debug_print("hdc2080: humidity convert to register failed.\n");
173 (void)hdc2080_deinit(&gs_handle);
174
175 return 1;
176 }
177
178 /* set humidity low threshold */
179 res = hdc2080_set_humidity_low_threshold(&gs_handle, reg);
180 if (res != 0)
181 {
182 hdc2080_interface_debug_print("hdc2080: set humidity low threshold failed.\n");
183 (void)hdc2080_deinit(&gs_handle);
184
185 return 1;
186 }
187
188 /* set high threshold */
189 res = hdc2080_temperature_convert_to_register(&gs_handle, high_deg, &reg);
190 if (res != 0)
191 {
192 hdc2080_interface_debug_print("hdc2080: temperature convert to register failed.\n");
193 (void)hdc2080_deinit(&gs_handle);
194
195 return 1;
196 }
197
198 /* set temperature high threshold */
199 res = hdc2080_set_temperature_high_threshold(&gs_handle, reg);
200 if (res != 0)
201 {
202 hdc2080_interface_debug_print("hdc2080: set temperature high threshold failed.\n");
203 (void)hdc2080_deinit(&gs_handle);
204
205 return 1;
206 }
207
208 /* set low threshold */
209 res = hdc2080_temperature_convert_to_register(&gs_handle, low_deg, &reg);
210 if (res != 0)
211 {
212 hdc2080_interface_debug_print("hdc2080: temperature convert to register failed.\n");
213 (void)hdc2080_deinit(&gs_handle);
214
215 return 1;
216 }
217
218 /* set temperature low threshold */
219 res = hdc2080_set_temperature_low_threshold(&gs_handle, reg);
220 if (res != 0)
221 {
222 hdc2080_interface_debug_print("hdc2080: set temperature low threshold failed.\n");
223 (void)hdc2080_deinit(&gs_handle);
224
225 return 1;
226 }
227
228 /* set default offset */
230 if (res != 0)
231 {
232 hdc2080_interface_debug_print("hdc2080: humidity offset convert to register failed.\n");
233 (void)hdc2080_deinit(&gs_handle);
234
235 return 1;
236 }
237
238 /* set humidity offset adjustment */
239 res = hdc2080_set_humidity_offset_adjustment(&gs_handle, offset);
240 if (res != 0)
241 {
242 hdc2080_interface_debug_print("hdc2080: set humidity offset adjustment failed.\n");
243 (void)hdc2080_deinit(&gs_handle);
244
245 return 1;
246 }
247
248 /* set default offset */
250 if (res != 0)
251 {
252 hdc2080_interface_debug_print("hdc2080: temperature offset convert to register failed.\n");
253 (void)hdc2080_deinit(&gs_handle);
254
255 return 1;
256 }
257
258 /* set temperature offset adjustment */
259 res = hdc2080_set_temperature_offset_adjustment(&gs_handle, offset);
260 if (res != 0)
261 {
262 hdc2080_interface_debug_print("hdc2080: set temperature offset adjustment failed.\n");
263 (void)hdc2080_deinit(&gs_handle);
264
265 return 1;
266 }
267
268 /* disable data ready */
270 if (res != 0)
271 {
272 hdc2080_interface_debug_print("hdc2080: set interrupt failed.\n");
273 (void)hdc2080_deinit(&gs_handle);
274
275 return 1;
276 }
277
278 /* enable temperature high threshold */
280 if (res != 0)
281 {
282 hdc2080_interface_debug_print("hdc2080: set interrupt failed.\n");
283 (void)hdc2080_deinit(&gs_handle);
284
285 return 1;
286 }
287
288 /* enable temperature low threshold */
290 if (res != 0)
291 {
292 hdc2080_interface_debug_print("hdc2080: set interrupt failed.\n");
293 (void)hdc2080_deinit(&gs_handle);
294
295 return 1;
296 }
297
298 /* enable humidity high threshold */
300 if (res != 0)
301 {
302 hdc2080_interface_debug_print("hdc2080: set interrupt failed.\n");
303 (void)hdc2080_deinit(&gs_handle);
304
305 return 1;
306 }
307
308 /* enable humidity low threshold */
310 if (res != 0)
311 {
312 hdc2080_interface_debug_print("hdc2080: set interrupt failed.\n");
313 (void)hdc2080_deinit(&gs_handle);
314
315 return 1;
316 }
317
318 /* set default auto measurement mode */
320 if (res != 0)
321 {
322 hdc2080_interface_debug_print("hdc2080: set auto measurement mode failed.\n");
323 (void)hdc2080_deinit(&gs_handle);
324
325 return 1;
326 }
327
328 /* enable measurement */
330 if (res != 0)
331 {
332 hdc2080_interface_debug_print("hdc2080: set measurement failed.\n");
333 (void)hdc2080_deinit(&gs_handle);
334
335 return 1;
336 }
337
338 return 0;
339}
340
350uint8_t hdc2080_interrupt_read(float *temperature, float *humidity)
351{
352 uint16_t temperature_raw;
353 uint16_t humidity_raw;
354
355 /* read temperature and humidity */
356 if (hdc2080_read_temperature_humidity(&gs_handle, (uint16_t *)&temperature_raw, temperature,
357 (uint16_t *)&humidity_raw, humidity) != 0)
358 {
359 return 1;
360 }
361
362 return 0;
363}
364
373{
374 /* deinit hdc2080 and close bus */
375 if (hdc2080_deinit(&gs_handle) != 0)
376 {
377 return 1;
378 }
379
380 return 0;
381}
driver hdc2080 interrupt header file
uint8_t hdc2080_set_measurement(hdc2080_handle_t *handle, hdc2080_bool_t enable)
enable or disable measurement
uint8_t hdc2080_init(hdc2080_handle_t *handle)
initialize the chip
uint8_t hdc2080_set_temperature_offset_adjustment(hdc2080_handle_t *handle, int8_t offset)
set temperature offset adjustment
uint8_t hdc2080_set_temperature_low_threshold(hdc2080_handle_t *handle, uint8_t threshold)
set temperature low threshold
uint8_t hdc2080_set_auto_measurement_mode(hdc2080_handle_t *handle, hdc2080_auto_measurement_mode_t mode)
set auto measurement mode
struct hdc2080_handle_s hdc2080_handle_t
hdc2080 handle structure definition
uint8_t hdc2080_set_humidity_resolution(hdc2080_handle_t *handle, hdc2080_resolution_t resolution)
set humidity resolution
uint8_t hdc2080_read_temperature_humidity(hdc2080_handle_t *handle, uint16_t *temperature_raw, float *temperature_s, uint16_t *humidity_raw, float *humidity_s)
read the temperature and humidity data
uint8_t hdc2080_deinit(hdc2080_handle_t *handle)
close the chip
uint8_t hdc2080_humidity_offset_convert_to_register(hdc2080_handle_t *handle, float percent, int8_t *reg)
convert the humidity offset to the register raw data
uint8_t hdc2080_set_temperature_resolution(hdc2080_handle_t *handle, hdc2080_resolution_t resolution)
set temperature resolution
uint8_t hdc2080_temperature_offset_convert_to_register(hdc2080_handle_t *handle, float deg, int8_t *reg)
convert the temperature offset to the register raw data
uint8_t hdc2080_set_interrupt_pin(hdc2080_handle_t *handle, hdc2080_bool_t enable)
enable or disable interrupt pin
uint8_t hdc2080_set_humidity_low_threshold(hdc2080_handle_t *handle, uint8_t threshold)
set humidity low threshold
uint8_t hdc2080_set_addr_pin(hdc2080_handle_t *handle, hdc2080_address_t addr_pin)
set the iic address pin
uint8_t hdc2080_set_mode(hdc2080_handle_t *handle, hdc2080_mode_t mode)
set the chip mode
uint8_t hdc2080_set_humidity_high_threshold(hdc2080_handle_t *handle, uint8_t threshold)
set humidity high threshold
uint8_t hdc2080_set_interrupt_polarity(hdc2080_handle_t *handle, hdc2080_interrupt_polarity_t polarity)
set interrupt polarity
uint8_t hdc2080_set_humidity_offset_adjustment(hdc2080_handle_t *handle, int8_t offset)
set humidity offset adjustment
uint8_t hdc2080_set_heater(hdc2080_handle_t *handle, hdc2080_bool_t enable)
enable or disable heater
uint8_t hdc2080_humidity_convert_to_register(hdc2080_handle_t *handle, float percent, uint8_t *reg)
convert the humidity to the register raw data
uint8_t hdc2080_set_interrupt(hdc2080_handle_t *handle, hdc2080_interrupt_t interrupt, hdc2080_bool_t enable)
enable or disable interrupt
uint8_t hdc2080_temperature_convert_to_register(hdc2080_handle_t *handle, float deg, uint8_t *reg)
convert the temperature to the register raw data
uint8_t hdc2080_set_temperature_high_threshold(hdc2080_handle_t *handle, uint8_t threshold)
set temperature high threshold
hdc2080_address_t
hdc2080 address enumeration definition
@ HDC2080_BOOL_TRUE
@ HDC2080_BOOL_FALSE
@ HDC2080_INTERRUPT_DRDY
@ HDC2080_INTERRUPT_HUMIDITY_HIGH_THRESHOLD
@ HDC2080_INTERRUPT_HUMIDITY_LOW_THRESHOLD
@ HDC2080_INTERRUPT_TEMPERATURE_LOW_THRESHOLD
@ HDC2080_INTERRUPT_TEMPERATURE_HIGH_THRESHOLD
@ HDC2080_MODE_HUMIDITY_TEMPERATURE
#define HDC2080_INTERRUPT_DEFAULT_HEATER
#define HDC2080_INTERRUPT_DEFAULT_TEMPERATURE_RESOLUTION
hdc2080 interrupt example default definition
#define HDC2080_INTERRUPT_DEFAULT_HUMIDITY_RESOLUTION
#define HDC2080_INTERRUPT_DEFAULT_AUTO_MEASUREMENT_MODE
#define HDC2080_INTERRUPT_DEFAULT_INTERRUPT_POLARITY
#define HDC2080_INTERRUPT_DEFAULT_TEMPERATURE_OFFSET
uint8_t hdc2080_interrupt_read(float *temperature, float *humidity)
interrupt example read
uint8_t hdc2080_interrupt_deinit(void)
interrupt example deinit
uint8_t hdc2080_interrupt_init(hdc2080_address_t addr_pin, float high_deg, float low_deg, float high_percent, float low_percent)
interrupt example init
#define HDC2080_INTERRUPT_DEFAULT_HUMIDITY_OFFSET
uint8_t hdc2080_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
void hdc2080_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t hdc2080_interface_iic_init(void)
interface iic bus init
uint8_t hdc2080_interface_iic_deinit(void)
interface iic bus deinit
uint8_t hdc2080_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void hdc2080_interface_debug_print(const char *const fmt,...)
interface print format data