1 /*
2  * Copyright 2022 NXP
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef _FSL_P3T1755_H_
8 #define _FSL_P3T1755_H_
9 
10 #include "fsl_common.h"
11 
12 /* Registers. */
13 #define P3T1755_TEMPERATURE_REG (0x00U)
14 #define P3T1755_CONFIG_REG      (0x01U)
15 
16 /*! @brief Define sensor access function. */
17 typedef status_t (*sensor_write_transfer_func_t)(uint8_t deviceAddress,
18                                                  uint32_t regAddress,
19                                                  uint8_t *regData,
20                                                  size_t dataSize);
21 typedef status_t (*sensor_read_transfer_func_t)(uint8_t deviceAddress,
22                                                 uint32_t regAddress,
23                                                 uint8_t *regData,
24                                                 size_t dataSize);
25 
26 typedef struct _p3t1755_handle
27 {
28     sensor_write_transfer_func_t writeTransfer;
29     sensor_read_transfer_func_t readTransfer;
30     uint8_t sensorAddress;
31 } p3t1755_handle_t;
32 
33 typedef struct _p3t1755_config
34 {
35     sensor_write_transfer_func_t writeTransfer;
36     sensor_read_transfer_func_t readTransfer;
37     uint8_t sensorAddress;
38 } p3t1755_config_t;
39 
40 #if defined(__cplusplus)
41 extern "C" {
42 #endif
43 
44 /*!
45  * @brief Create handle for P3T1755, reset the sensor per user configuration.
46  *
47  * @param p3t1755_handle The pointer to #p3t1755_handle_t.
48  *
49  * @return kStatus_Success if success or kStatus_Fail if error.
50  */
51 status_t P3T1755_Init(p3t1755_handle_t *handle, p3t1755_config_t *config);
52 
53 /*!
54  * @brief Write Register with register data buffer.
55  *
56  * @param handle The pointer to #p3t1755_handle_t.
57  * @param regAddress register address to write.
58  * @param regData The pointer to data buffer to be write to the reg.
59  * @param dataSize Size of the regData.
60  *
61  * @return kStatus_Success if success or kStatus_Fail if error.
62  */
63 status_t P3T1755_WriteReg(p3t1755_handle_t *handle, uint32_t regAddress, uint8_t *regData, size_t dataSize);
64 
65 /*!
66  * @brief Read Register to speficied data buffer.
67  *
68  * @param handle The pointer to #p3t1755_handle_t.
69  * @param regAddress register address to read.
70  * @param regData The pointer to data buffer to store the read out data.
71  * @param dataSize Size of the regData to be read.
72  *
73  * @return kStatus_Success if success or kStatus_Fail if error.
74  */
75 status_t P3T1755_ReadReg(p3t1755_handle_t *handle, uint32_t regAddress, uint8_t *regData, size_t dataSize);
76 
77 /*!
78  * @brief Read temperature data.
79  *
80  * @param handle The pointer to #p3t1755_handle_t.
81  * @param temperature The pointer to temperature data.
82  *
83  * @return kStatus_Success if success or kStatus_Fail if error.
84  */
85 status_t P3T1755_ReadTemperature(p3t1755_handle_t *handle, double *temperature);
86 #if defined(__cplusplus)
87 }
88 #endif /* __cplusplus */
89 
90 #endif /* _FSL_P3T1755_H_ */
91