Lines Matching +full:alert +full:- +full:config
4 * SPDX-License-Identifier: Apache-2.0
21 /* ret = (val + 45) * (2^16 - 1) / 175 */ in sht3xd_temp_processed_to_raw()
22 uval = (uint64_t)(val->val1 + 45) * 1000000U + val->val2; in sht3xd_temp_processed_to_raw()
30 /* ret = val * (2^16 -1) / 100 */ in sht3xd_rh_processed_to_raw()
31 uval = (uint64_t)val->val1 * 1000000U + val->val2; in sht3xd_rh_processed_to_raw()
40 struct sht3xd_data *data = dev->data; in sht3xd_attr_set()
45 data->t_low = sht3xd_temp_processed_to_raw(val); in sht3xd_attr_set()
47 data->rh_low = sht3xd_rh_processed_to_raw(val); in sht3xd_attr_set()
49 return -ENOTSUP; in sht3xd_attr_set()
54 temp = data->t_low; in sht3xd_attr_set()
55 rh = data->rh_low; in sht3xd_attr_set()
58 data->t_high = sht3xd_temp_processed_to_raw(val); in sht3xd_attr_set()
60 data->rh_high = sht3xd_rh_processed_to_raw(val); in sht3xd_attr_set()
62 return -ENOTSUP; in sht3xd_attr_set()
67 temp = data->t_high; in sht3xd_attr_set()
68 rh = data->rh_high; in sht3xd_attr_set()
70 return -ENOTSUP; in sht3xd_attr_set()
78 return -EIO; in sht3xd_attr_set()
88 (const struct sht3xd_config *)dev->config; in setup_alert()
93 gpio_pin_interrupt_configure_dt(&cfg->alert_gpio, flags); in setup_alert()
101 struct sht3xd_data *data = dev->data; in handle_alert()
103 k_sem_give(&data->gpio_sem); in handle_alert()
105 struct sht3xd_data *data = dev->data; in handle_alert()
107 k_work_submit(&data->work); in handle_alert()
115 struct sht3xd_data *data = dev->data; in sht3xd_trigger_set()
117 (const struct sht3xd_config *)dev->config; in sht3xd_trigger_set()
121 if (trig->type != SENSOR_TRIG_THRESHOLD) { in sht3xd_trigger_set()
122 return -ENOTSUP; in sht3xd_trigger_set()
125 data->handler = handler; in sht3xd_trigger_set()
130 data->trigger = trig; in sht3xd_trigger_set()
134 /* If ALERT is active we probably won't get the rising edge, in sht3xd_trigger_set()
137 if (gpio_pin_get_dt(&cfg->alert_gpio)) { in sht3xd_trigger_set()
150 handle_alert(data->dev); in sht3xd_gpio_callback()
155 struct sht3xd_data *data = dev->data; in sht3xd_thread_cb()
157 if (data->handler != NULL) { in sht3xd_thread_cb()
158 data->handler(dev, data->trigger); in sht3xd_thread_cb()
173 k_sem_take(&data->gpio_sem, K_FOREVER); in sht3xd_thread()
174 sht3xd_thread_cb(data->dev); in sht3xd_thread()
185 sht3xd_thread_cb(data->dev); in sht3xd_work_cb()
191 struct sht3xd_data *data = dev->data; in sht3xd_init_interrupt()
192 const struct sht3xd_config *cfg = dev->config; in sht3xd_init_interrupt()
195 if (!gpio_is_ready_dt(&cfg->alert_gpio)) { in sht3xd_init_interrupt()
197 return -ENODEV; in sht3xd_init_interrupt()
200 rc = gpio_pin_configure_dt(&cfg->alert_gpio, GPIO_INPUT); in sht3xd_init_interrupt()
202 LOG_DBG("Failed to configure alert pin %u!", cfg->alert_gpio.pin); in sht3xd_init_interrupt()
203 return -EIO; in sht3xd_init_interrupt()
206 gpio_init_callback(&data->alert_cb, sht3xd_gpio_callback, in sht3xd_init_interrupt()
207 BIT(cfg->alert_gpio.pin)); in sht3xd_init_interrupt()
208 rc = gpio_add_callback(cfg->alert_gpio.port, &data->alert_cb); in sht3xd_init_interrupt()
211 return -EIO; in sht3xd_init_interrupt()
214 /* set alert thresholds to match measurement ranges */ in sht3xd_init_interrupt()
215 data->t_low = 0U; in sht3xd_init_interrupt()
216 data->rh_low = 0U; in sht3xd_init_interrupt()
217 data->t_high = 0xFFFF; in sht3xd_init_interrupt()
218 data->rh_high = 0xFFFF; in sht3xd_init_interrupt()
222 return -EIO; in sht3xd_init_interrupt()
228 return -EIO; in sht3xd_init_interrupt()
233 return -EIO; in sht3xd_init_interrupt()
238 return -EIO; in sht3xd_init_interrupt()
242 k_sem_init(&data->gpio_sem, 0, K_SEM_MAX_LIMIT); in sht3xd_init_interrupt()
244 k_thread_create(&data->thread, data->thread_stack, in sht3xd_init_interrupt()
250 data->work.handler = sht3xd_work_cb; in sht3xd_init_interrupt()