Skip to content

Commit b079316

Browse files
MaureenHelmcarlescufi
authored andcommitted
drivers: sensor: iis2mdc: Store sensor trigger as a pointer
Fixes the iis2mdc 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 <[email protected]>
1 parent 99f9ef3 commit b079316

File tree

2 files changed

+3
-4
lines changed

2 files changed

+3
-4
lines changed

drivers/sensor/iis2mdc/iis2mdc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ struct iis2mdc_data {
5959
struct gpio_callback gpio_cb;
6060

6161
sensor_trigger_handler_t handler_drdy;
62+
const struct sensor_trigger *trig_drdy;
6263

6364
#if defined(CONFIG_IIS2MDC_TRIGGER_OWN_THREAD)
6465
K_KERNEL_STACK_MEMBER(thread_stack, CONFIG_IIS2MDC_THREAD_STACK_SIZE);

drivers/sensor/iis2mdc/iis2mdc_trigger.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ int iis2mdc_trigger_set(const struct device *dev,
3636

3737
if (trig->chan == SENSOR_CHAN_MAGN_XYZ) {
3838
iis2mdc->handler_drdy = handler;
39+
iis2mdc->trig_drdy = trig;
3940
if (handler) {
4041
/* fetch raw data sample: re-trigger lost interrupt */
4142
iis2mdc_magnetic_raw_get(iis2mdc->ctx, raw);
@@ -54,12 +55,9 @@ static void iis2mdc_handle_interrupt(const struct device *dev)
5455
{
5556
struct iis2mdc_data *iis2mdc = dev->data;
5657
const struct iis2mdc_dev_config *const config = dev->config;
57-
struct sensor_trigger drdy_trigger = {
58-
.type = SENSOR_TRIG_DATA_READY,
59-
};
6058

6159
if (iis2mdc->handler_drdy != NULL) {
62-
iis2mdc->handler_drdy(dev, &drdy_trigger);
60+
iis2mdc->handler_drdy(dev, iis2mdc->trig_drdy);
6361
}
6462

6563
gpio_pin_interrupt_configure_dt(&config->gpio_drdy,

0 commit comments

Comments
 (0)