Skip to content

Commit

Permalink
drivers: sensor: tmp108: Store sensor trigger as a pointer
Browse files Browse the repository at this point in the history
Fixes the tmp108 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]>
  • Loading branch information
MaureenHelm authored and carlescufi committed Apr 8, 2023
1 parent e43edc9 commit 07632a9
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 16 deletions.
4 changes: 2 additions & 2 deletions drivers/sensor/tmp108/tmp108.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,11 @@ struct tmp108_data {

struct k_work_delayable scheduled_work;

struct sensor_trigger temp_alert_trigger;
const struct sensor_trigger *temp_alert_trigger;
sensor_trigger_handler_t temp_alert_handler;

sensor_trigger_handler_t data_ready_handler;
struct sensor_trigger data_ready_trigger;
const struct sensor_trigger *data_ready_trigger;

struct gpio_callback temp_alert_gpio_cb;
};
Expand Down
18 changes: 4 additions & 14 deletions drivers/sensor/tmp108/tmp108_trigger.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,6 @@ void tmp108_trigger_handle_one_shot(struct k_work *work)
struct tmp108_data,
scheduled_work);

struct sensor_trigger sensor_trigger_type = {
.chan = SENSOR_CHAN_AMBIENT_TEMP,
.type = SENSOR_TRIG_DATA_READY
};

uint16_t config = 0;
bool shutdown_mode = false;

Expand All @@ -54,7 +49,7 @@ void tmp108_trigger_handle_one_shot(struct k_work *work)
/* Successful read, call set callbacks */
if (drv_data->data_ready_handler) {
drv_data->data_ready_handler(drv_data->tmp108_dev,
&sensor_trigger_type);
drv_data->data_ready_trigger);
}
}

Expand All @@ -67,15 +62,10 @@ void tmp108_trigger_handle_alert(const struct device *gpio,
struct tmp108_data,
temp_alert_gpio_cb);

struct sensor_trigger sensor_trigger_type = {
.chan = SENSOR_CHAN_AMBIENT_TEMP,
.type = SENSOR_TRIG_THRESHOLD
};

/* Successful read, call set callbacks */
if (drv_data->temp_alert_handler) {
drv_data->temp_alert_handler(drv_data->tmp108_dev,
&sensor_trigger_type);
drv_data->temp_alert_trigger);
}
}

Expand All @@ -87,13 +77,13 @@ int tmp_108_trigger_set(const struct device *dev,

if (trig->type == SENSOR_TRIG_DATA_READY) {
drv_data->data_ready_handler = handler;
drv_data->data_ready_trigger = *trig;
drv_data->data_ready_trigger = trig;
return 0;
}

if (trig->type == SENSOR_TRIG_THRESHOLD) {
drv_data->temp_alert_handler = handler;
drv_data->temp_alert_trigger = *trig;
drv_data->temp_alert_trigger = trig;
return 0;
}

Expand Down

0 comments on commit 07632a9

Please sign in to comment.