/*
 * Copyright (c) 2018 Jan Van Winkel <jan.van_winkel@dxplore.eu>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef __SENSOR_MS5837_H__
#define __SENSOR_MS5837_H__

#include <zephyr/types.h>
#include <zephyr/device.h>
#include <zephyr/drivers/i2c.h>

#define MS5837_CMD_RESET 0x1E

#define MS5837_CMD_CONV_P_256  0x40
#define MS5837_CMD_CONV_P_512  0x42
#define MS5837_CMD_CONV_P_1024 0x44
#define MS5837_CMD_CONV_P_2048 0x46
#define MS5837_CMD_CONV_P_4096 0x48
#define MS5837_CMD_CONV_P_8192 0x4A

#define MS5837_CMD_CONV_T_256  0x50
#define MS5837_CMD_CONV_T_512  0x52
#define MS5837_CMD_CONV_T_1024 0x54
#define MS5837_CMD_CONV_T_2048 0x56
#define MS5837_CMD_CONV_T_4096 0x58
#define MS5837_CMD_CONV_T_8192 0x5A

#define MS5837_CMD_CONV_READ_ADC 0x00

#define MS5837_CMD_CONV_READ_CRC      0xA0
#define MS5837_CMD_CONV_READ_SENS_T1  0xA2
#define MS5837_CMD_CONV_READ_OFF_T1   0xA4
#define MS5837_CMD_CONV_READ_TCS      0xA6
#define MS5837_CMD_CONV_READ_TCO      0xA8
#define MS5837_CMD_CONV_READ_T_REF    0xAA
#define MS5837_CMD_CONV_READ_TEMPSENS 0xAC

#define MS5837_ADC_READ_DELAY_256  1
#define MS5837_ADC_READ_DELAY_512  2
#define MS5837_ADC_READ_DELAY_1024 3
#define MS5837_ADC_READ_DELAY_2048 5
#define MS5837_ADC_READ_DELAY_4086 10
#define MS5837_ADC_READ_DELAY_8129 20

struct ms5837_data {
	/* Calibration values */
	uint16_t sens_t1;
	uint16_t off_t1;
	uint16_t tcs;
	uint16_t tco;
	uint16_t t_ref;
	uint16_t tempsens;

	/* Measured values */
	int32_t pressure;
	int32_t temperature;

	/* Conversion commands */
	uint8_t presure_conv_cmd;
	uint8_t temperature_conv_cmd;

	/* Conversion delay in ms*/
	uint8_t presure_conv_delay;
	uint8_t temperature_conv_delay;

};

struct ms5837_config {
	struct i2c_dt_spec i2c;
};

#endif /* __SENSOR_MS5837_H__ */
