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