ISSDK  1.8
IoT Sensing Software Development Kit
register_io_spi.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015 - 2016, Freescale Semiconductor, Inc.
3  * Copyright 2016-2017 NXP
4  * All rights reserved.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  */
8 
9 /**
10  * @file register_io_spi.h
11  * @brief The register_io_spi.h file declares low-level interface functions for reading
12  * and writing sensor registers using CMSIS APIs.
13  */
14 
15 #ifndef __REGISTER_IO_SPI_H__
16 #define __REGISTER_IO_SPI_H__
17 
18 #include "Driver_SPI.h"
19 #include "sensor_drv.h"
20 
21 #define SPI_SS_ACTIVE_LOW (ARM_SPI_SS_INACTIVE)
22 #define SPI_SS_ACTIVE_HIGH (ARM_SPI_SS_ACTIVE)
23 
24 /*! Function pointer for the slave read information*/
25 typedef void (*fpSpiReadPreprocessFn_t)(void *pCmdOut, uint32_t offset, uint32_t size);
26 /*! Function pointer for the slave write information*/
27 typedef void (*fpSpiWritePreprocessFn_t)(void *pCmdOut, uint32_t offset, uint32_t size, void *pWritebuffer);
28 
29 /*! @brief The SPI Slave Control Command Params SDK2.0 Driver. */
30 typedef struct
31 {
33  uint8_t activeValue;
34  uint8_t cmdCode;
36 
37 /*! @brief The SPI Slave Transfer Command Params SDK2.0 Driver. */
38 typedef struct spi_mater_SlaveCmd
39 {
40  uint32_t size; /*!< The tranfer size.*/
41  uint8_t *pReadBuffer; /*!< The handle the readbuffer.*/
42  uint8_t *pWriteBuffer; /*!< The handle the writecommand.*/
44 
45 /*! @brief This structure defines the spi slave command format. */
46 typedef struct
47 {
51  uint8_t spiCmdLen;
52  uint8_t ssActiveValue;
54 
55 #if defined(SPI0)
56 /*! @brief The SPI0 device index. */
57 #define SPI0_INDEX 0
58 
59 /*! @brief Defines the SPI signal event handler.
60  * @details The Signal Event Handler function required by register_io_i2c.c.
61  * @param[in] event The SPI event that occured.
62  * @Constraints None
63  * @Reentrant Yes
64  * @return void
65  */
66 void SPI0_SignalEvent_t(uint32_t event);
67 #endif
68 
69 #if defined(SPI1)
70 /*! @brief The SPI1 device index. */
71 #define SPI1_INDEX 1
72 
73 /*! @brief Defines the SPI signal event handler.
74  * @details The Signal Event Handler function required by register_io_i2c.c.
75  * @param[in] event The SPI event that occured.
76  * @Constraints None
77  * @Reentrant Yes
78  * @return void
79  */
80 void SPI1_SignalEvent_t(uint32_t event);
81 #endif
82 
83 #if defined(SPI2)
84 /*! @brief The SPI2 device index. */
85 #define SPI2_INDEX 2
86 
87 /*! @brief Defines the SPI signal event handler.
88  * @details The Signal Event Handler function required by register_io_i2c.c.
89  * @param[in] event The SPI event that occured.
90  * @Constraints None
91  * @Reentrant Yes
92  * @return void
93  */
94 void SPI2_SignalEvent_t(uint32_t event);
95 #endif
96 
97 #if defined(SPI3)
98 /*! @brief The SPI3 device index. */
99 #define SPI3_INDEX 3
100 
101 /*! @brief Defines the SPI signal event handler.
102  * @details The Signal Event Handler function required by register_io_i2c.c.
103  * @param[in] event The SPI event that occured.
104  * @Constraints None
105  * @Reentrant Yes
106  * @return void
107  */
108 void SPI3_SignalEvent_t(uint32_t event);
109 #endif
110 
111 #if defined(SPI4)
112 /*! @brief The SPI4 device index. */
113 #define SPI4_INDEX 4
114 
115 /*! @brief Defines the SPI signal event handler.
116  * @details The Signal Event Handler function required by register_io_i2c.c.
117  * @param[in] event The SPI event that occured.
118  * @Constraints None
119  * @Reentrant Yes
120  * @return void
121  */
122 void SPI4_SignalEvent_t(uint32_t event);
123 #endif
124 
125 #if defined(SPI5)
126 /*! @brief The SPI5 device index. */
127 #define SPI5_INDEX 5
128 
129 /*! @brief Defines the SPI signal event handler.
130  * @details The Signal Event Handler function required by register_io_i2c.c.
131  * @param[in] event The SPI event that occured.
132  * @Constraints None
133  * @Reentrant Yes
134  * @return void
135  */
136 void SPI5_SignalEvent_t(uint32_t event);
137 #endif
138 
139 #if defined(SPI6)
140 /*! @brief The SPI6 device index. */
141 #define SPI6_INDEX 6
142 
143 /*! @brief Defines the SPI signal event handler.
144  * @details The Signal Event Handler function required by register_io_i2c.c.
145  * @param[in] event The SPI event that occured.
146  * @Constraints None
147  * @Reentrant Yes
148  * @return void
149  */
150 void SPI6_SignalEvent_t(uint32_t event);
151 #endif
152 
153 #if defined(SPI7)
154 /*! @brief The SPI7 device index. */
155 #define SPI7_INDEX 7
156 
157 /*! @brief Defines the SPI signal event handler.
158  * @details The Signal Event Handler function required by register_io_i2c.c.
159  * @param[in] event The SPI event that occured.
160  * @Constraints None
161  * @Reentrant Yes
162  * @return void
163  */
164 void SPI7_SignalEvent_t(uint32_t event);
165 #endif
166 
167 /*!
168  * @brief The interface function to block write to a sensor register.
169  *
170  * @param ARM_DRIVER_SPI *pCommDrv - The SPI driver to use.
171  * @param registerDeviceInfo_t *devInfo - The SPI device number and idle function.
172  * @param void *pWriteParams - the sensor's SPI slave select params.
173  * @param uint8_t offset - The register/offset to write to
174  * @param uint8_t *pBuffer - The buffer containing bytes to write.
175  * @param uint8_t bytesToWrite - A number of bytes to write.
176  *
177  * @return ARM_DRIVER_OK if success or ARM_DRIVER_ERROR if error.
178  */
179 int32_t Register_SPI_BlockWrite(ARM_DRIVER_SPI *pCommDrv,
180  registerDeviceInfo_t *devInfo,
181  void *pWriteParams,
182  uint8_t offset,
183  const uint8_t *pBuffer,
184  uint8_t bytesToWrite);
185 
186 /*!
187  * @brief The interface function to write a sensor register.
188  *
189  * @param ARM_DRIVER_SPI *pCommDrv - The SPI driver to use.
190  * @param registerDeviceInfo_t *devInfo - The SPI device number and idle function.
191  * @param void *pWriteParams - the sensor's SPI slave select params.
192  * @param uint8_t offset - The register/offset to write to
193  * @param uint8_t value - The value to write to the register
194  * @param uint8_t mask - A mask value to use when writing.
195  * A non-zero mask indicates that a read-modify-write operation should be used.
196  * where only the bits set in the mask will be updated according to the value param.
197  * @return ARM_DRIVER_OK if success or ARM_DRIVER_ERROR if error.
198  */
199 int32_t Register_SPI_Write(ARM_DRIVER_SPI *pCommDrv,
200  registerDeviceInfo_t *devInfo,
201  void *pWriteParams,
202  uint8_t offset,
203  uint8_t value,
204  uint8_t mask);
205 
206 /*!
207  * @brief The interface function to read a sensor register.
208  *
209  * @param ARM_DRIVER_SPI *pCommDrv - The SPI driver to use.
210  * @param registerDeviceInfo_t *devInfo - The SPI device number and idle function.
211  * @param void *pReadParams - the sensor's SPI slave select params.
212  * @param uint8_t offset - The register/offset to read from
213  * @param uint8_t length - The number of bytes to read
214  * @param uint8_t *pOutBuffer - The pointer to the buffer to store the register value read.
215  *
216  * @return ARM_DRIVER_OK if success or ARM_DRIVER_ERROR if error.
217  */
218 int32_t Register_SPI_Read(ARM_DRIVER_SPI *pCommDrv,
219  registerDeviceInfo_t *devInfo,
220  void *pReadParams,
221  uint8_t offset,
222  uint8_t length,
223  uint8_t *pOutBuffer);
224 
225 #endif // __REGISTER_IO_SPI_H__
uint32_t size
This structure defines the device specific info required by register I/O.
Definition: sensor_drv.h:102
int32_t Register_SPI_BlockWrite(ARM_DRIVER_SPI *pCommDrv, registerDeviceInfo_t *devInfo, void *pWriteParams, uint8_t offset, const uint8_t *pBuffer, uint8_t bytesToWrite)
The interface function to block write to a sensor register.
void(* fpSpiWritePreprocessFn_t)(void *pCmdOut, uint32_t offset, uint32_t size, void *pWritebuffer)
This structure defines the spi slave command format.
The sensor_drv.h file contains sensor state and error definitions.
typedef int32_t(DATA_FORMAT_Append_t))(void *pData
The interface function to append the data on the formated stream.
fpSpiReadPreprocessFn_t pReadPreprocessFN
The SPI Slave Transfer Command Params SDK2.0 Driver.
int32_t Register_SPI_Read(ARM_DRIVER_SPI *pCommDrv, registerDeviceInfo_t *devInfo, void *pReadParams, uint8_t offset, uint8_t length, uint8_t *pOutBuffer)
The interface function to read a sensor register.
struct spi_mater_SlaveCmd spiCmdParams_t
The SPI Slave Transfer Command Params SDK2.0 Driver.
The SPI Slave Control Command Params SDK2.0 Driver.
void(* fpSpiReadPreprocessFn_t)(void *pCmdOut, uint32_t offset, uint32_t size)
fpSpiWritePreprocessFn_t pWritePreprocessFN
int32_t Register_SPI_Write(ARM_DRIVER_SPI *pCommDrv, registerDeviceInfo_t *devInfo, void *pWriteParams, uint8_t offset, uint8_t value, uint8_t mask)
The interface function to write a sensor register.