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