drivers: sensor: ccs811: Store sensor trigger as a pointer

Fixes the ccs811 sensor driver to store the user-supplied sensor
trigger as a pointer rather than a copy. This enables the trigger
handler to use CONTAINER_OF to retrieve a context pointer when the
trigger is embedded in a larger struct.

Signed-off-by: Maureen Helm <maureen.helm@intel.com>
This commit is contained in:
Maureen Helm 2023-03-07 13:09:53 -06:00 committed by Carles Cufí
commit c45595e164
2 changed files with 3 additions and 3 deletions

View file

@ -58,7 +58,7 @@ struct ccs811_data {
*/ */
struct gpio_callback gpio_cb; struct gpio_callback gpio_cb;
sensor_trigger_handler_t handler; sensor_trigger_handler_t handler;
struct sensor_trigger trigger; const struct sensor_trigger *trigger;
#if defined(CONFIG_CCS811_TRIGGER_OWN_THREAD) #if defined(CONFIG_CCS811_TRIGGER_OWN_THREAD)
K_KERNEL_STACK_MEMBER(thread_stack, CONFIG_CCS811_THREAD_STACK_SIZE); K_KERNEL_STACK_MEMBER(thread_stack, CONFIG_CCS811_THREAD_STACK_SIZE);
struct k_sem gpio_sem; struct k_sem gpio_sem;

View file

@ -77,7 +77,7 @@ static void process_irq(const struct device *dev)
struct ccs811_data *data = dev->data; struct ccs811_data *data = dev->data;
if (data->handler != NULL) { if (data->handler != NULL) {
data->handler(dev, &data->trigger); data->handler(dev, data->trigger);
} }
if (data->handler != NULL) { if (data->handler != NULL) {
@ -159,7 +159,7 @@ int ccs811_trigger_set(const struct device *dev,
} }
if (rc == 0) { if (rc == 0) {
drv_data->trigger = *trig; drv_data->trigger = trig;
setup_irq(dev, true); setup_irq(dev, true);
if (gpio_pin_get_dt(&config->irq_gpio) > 0) { if (gpio_pin_get_dt(&config->irq_gpio) > 0) {