/*
 * Copyright (c) 2023 Michal Morsisko
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_DRIVERS_SENSOR_TMAG5170_TMAG5170_H_
#define ZEPHYR_DRIVERS_SENSOR_TMAG5170_TMAG5170_H_

#include <zephyr/device.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/drivers/spi.h>
#include <zephyr/sys/util.h>

struct tmag5170_dev_config {
	struct spi_dt_spec bus;
	uint8_t magnetic_channels;
	uint8_t x_range;
	uint8_t y_range;
	uint8_t z_range;
	uint8_t oversampling;
	bool tempeature_measurement;
	uint8_t magnet_type;
	uint8_t angle_measurement;
	bool disable_temperature_oversampling;
	uint8_t sleep_time;
	uint8_t operating_mode;
#if defined(CONFIG_TMAG5170_TRIGGER)
	struct gpio_dt_spec int_gpio;
#endif
};

struct tmag5170_data {
	uint8_t chip_revision;
	uint16_t x;
	uint16_t y;
	uint16_t z;
	uint16_t temperature;
	uint16_t angle;
#if defined(CONFIG_TMAG5170_TRIGGER)
	struct gpio_callback gpio_cb;
	sensor_trigger_handler_t handler_drdy;
	const struct sensor_trigger *trigger_drdy;
	const struct device *dev;
#endif

#if defined(CONFIG_TMAG5170_TRIGGER_OWN_THREAD)
	struct k_sem sem;
	struct k_thread thread;

	K_KERNEL_STACK_MEMBER(thread_stack,
			      CONFIG_TMAG5170_THREAD_STACK_SIZE);
#elif defined(CONFIG_TMAG5170_TRIGGER_GLOBAL_THREAD)
	struct k_work work;
#endif
};

#if defined(CONFIG_TMAG5170_TRIGGER)
int tmag5170_trigger_set(const struct device *dev,
			 const struct sensor_trigger *trig,
			 sensor_trigger_handler_t handler);

int tmag5170_trigger_init(const struct device *dev);
#endif

#endif /* ZEPHYR_DRIVERS_SENSOR_TMAG5170_TMAG5170_H_ */
