1 /*
2  * Copyright (c) 2023 Würth Elektronik eiSos GmbH & Co. KG
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include "weplatform.h"
8 
9 #include "weplatform_i2c.h"
10 #include "weplatform_spi.h"
11 
12 #include <zephyr/kernel.h>
13 
14 /**
15  * @brief Read data starting from the addressed register
16  * @param[in] interface Sensor interface
17  * @param[in] regAdr The register address to read from
18  * @param[in] numBytesToRead Number of bytes to read
19  * @param[out] data The read data will be stored here
20  * @retval Error code
21  */
WE_ReadReg(WE_sensorInterface_t * interface,uint8_t regAdr,uint16_t numBytesToRead,uint8_t * data)22 inline int8_t WE_ReadReg(WE_sensorInterface_t *interface, uint8_t regAdr,
23 			 uint16_t numBytesToRead, uint8_t *data)
24 {
25 	switch (interface->interfaceType) {
26 	case WE_i2c:
27 		return WE_ReadReg_I2C(interface, regAdr, numBytesToRead, data);
28 
29 	case WE_spi:
30 		return WE_ReadReg_SPI(interface, regAdr, numBytesToRead, data);
31 
32 	default:
33 		return WE_FAIL;
34 	}
35 }
36 
37 /**
38  * @brief Write data starting from the addressed register
39  * @param[in] interface Sensor interface
40  * @param[in] regAdr Address of register to be written
41  * @param[in] numBytesToWrite Number of bytes to write
42  * @param[in] data Data to be written
43  * @retval Error code
44  */
WE_WriteReg(WE_sensorInterface_t * interface,uint8_t regAdr,uint16_t numBytesToWrite,uint8_t * data)45 inline int8_t WE_WriteReg(WE_sensorInterface_t *interface, uint8_t regAdr,
46 			  uint16_t numBytesToWrite, uint8_t *data)
47 {
48 	switch (interface->interfaceType) {
49 	case WE_i2c:
50 		return WE_WriteReg_I2C(interface, regAdr, numBytesToWrite, data);
51 
52 	case WE_spi:
53 		return WE_WriteReg_SPI(interface, regAdr, numBytesToWrite, data);
54 
55 	default:
56 		return WE_FAIL;
57 	}
58 }
59 
60 /**
61  * @brief Provides delay
62  * @param[in] Delay in milliseconds
63  */
WE_Delay(uint32_t Delay)64 void WE_Delay(uint32_t Delay)
65 {
66 	k_sleep(K_MSEC(Delay));
67 }
68