1 /*
2  * Copyright 2022, 2024 NXP
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 #include "fsl_p3t1755.h"
7 
8 /*******************************************************************************
9  * Definitions
10  ******************************************************************************/
11 /*******************************************************************************
12  * Prototypes
13  ******************************************************************************/
14 /*******************************************************************************
15  * Variables
16  ******************************************************************************/
17 /*******************************************************************************
18  * Code
19  ******************************************************************************/
P3T1755_WriteReg(p3t1755_handle_t * handle,uint32_t regAddress,uint8_t * regData,size_t dataSize)20 status_t P3T1755_WriteReg(p3t1755_handle_t *handle, uint32_t regAddress, uint8_t *regData, size_t dataSize)
21 {
22     status_t result;
23     result = handle->writeTransfer(handle->sensorAddress, regAddress, regData, dataSize);
24 
25     return (result == kStatus_Success) ? result : kStatus_Fail;
26 }
27 
P3T1755_ReadReg(p3t1755_handle_t * handle,uint32_t regAddress,uint8_t * regData,size_t dataSize)28 status_t P3T1755_ReadReg(p3t1755_handle_t *handle, uint32_t regAddress, uint8_t *regData, size_t dataSize)
29 {
30     status_t result;
31     result = handle->readTransfer(handle->sensorAddress, regAddress, regData, dataSize);
32 
33     return (result == kStatus_Success) ? result : kStatus_Fail;
34 }
35 
P3T1755_Init(p3t1755_handle_t * handle,p3t1755_config_t * config)36 status_t P3T1755_Init(p3t1755_handle_t *handle, p3t1755_config_t *config)
37 {
38     assert(handle != NULL);
39     assert(config != NULL);
40     assert(config->writeTransfer != NULL);
41     assert(config->readTransfer != NULL);
42 
43     handle->writeTransfer = config->writeTransfer;
44     handle->readTransfer  = config->readTransfer;
45     handle->sensorAddress = config->sensorAddress;
46 
47     return kStatus_Success;
48 }
49 
P3T1755_ReadTemperature(p3t1755_handle_t * handle,double * temperature)50 status_t P3T1755_ReadTemperature(p3t1755_handle_t *handle, double *temperature)
51 {
52     status_t result = kStatus_Success;
53     uint8_t data[2];
54     uint16_t temp;
55 
56     result = P3T1755_ReadReg(handle, P3T1755_TEMPERATURE_REG, &data[0], 2);
57     if (result == kStatus_Success)
58     {
59         temp = (((uint16_t)data[0] << 8U) | (uint16_t)data[1]) >> 4U;
60         *temperature = (double)temp * 0.0625;
61     }
62 
63     return result;
64 }
65