FreeRTOS: Common I/O
AWS IoT Common I/O library
Return to main page ↑
iot_spi.h
Go to the documentation of this file.
1 /*
2  * FreeRTOS Common IO V1.0.0
3  * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of
6  * this software and associated documentation files (the "Software"), to deal in
7  * the Software without restriction, including without limitation the rights to
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9  * the Software, and to permit persons to whom the Software is furnished to do so,
10  * subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included in all
13  * copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21  *
22  * http://aws.amazon.com/freertos
23  * http://www.FreeRTOS.org
24  */
25 
30 #ifndef _IOT_SPI_H_
31 #define _IOT_SPI_H_
32 
33 /* Standard includes. */
34 #include <stdint.h>
35 
44 #define IOT_SPI_SUCCESS ( 0 )
45 #define IOT_SPI_INVALID_VALUE ( 1 )
46 #define IOT_SPI_WRITE_FAILED ( 2 )
47 #define IOT_SPI_READ_FAILED ( 3 )
48 #define IOT_SPI_TRANSFER_ERROR ( 4 )
49 #define IOT_SPI_BUS_BUSY ( 5 )
50 #define IOT_SPI_NOTHING_TO_CANCEL ( 6 )
51 #define IOT_SPI_FUNCTION_NOT_SUPPORTED ( 7 )
57 typedef enum
58 {
64 
69 typedef enum
70 {
75 } IotSPIMode_t;
76 
80 typedef enum
81 {
85 
89 typedef enum
90 {
96 
103 typedef struct IotSPIMasterConfig
104 {
105  uint32_t ulFreq;
108  uint8_t ucDummyValue;
110 
114 struct IotSPIDescriptor_t;
115 
121 typedef struct IotSPIDescriptor_t * IotSPIHandle_t;
122 
126 typedef void (* IotSPICallback_t) ( IotSPITransactionStatus_t xStatus,
127  void * pvSPIparam );
128 
142 IotSPIHandle_t iot_spi_open( int32_t lSPIInstance );
143 
159 void iot_spi_set_callback( IotSPIHandle_t const pxSPIPeripheral,
160  IotSPICallback_t xCallback,
161  void * pvUserContext );
162 
204 int32_t iot_spi_ioctl( IotSPIHandle_t const pxSPIPeripheral,
205  IotSPIIoctlRequest_t xSPIRequest,
206  void * const pvBuffer );
207 
233 int32_t iot_spi_read_sync( IotSPIHandle_t const pxSPIPeripheral,
234  uint8_t * const pvBuffer,
235  size_t xBytes );
236 
268 int32_t iot_spi_read_async( IotSPIHandle_t const pxSPIPeripheral,
269  uint8_t * const pvBuffer,
270  size_t xBytes );
271 
296 int32_t iot_spi_write_sync( IotSPIHandle_t const pxSPIPeripheral,
297  uint8_t * const pvBuffer,
298  size_t xBytes );
299 
330 int32_t iot_spi_write_async( IotSPIHandle_t const pxSPIPeripheral,
331  uint8_t * const pvBuffer,
332  size_t xBytes );
333 
356 int32_t iot_spi_transfer_sync( IotSPIHandle_t const pxSPIPeripheral,
357  uint8_t * const pvTxBuffer,
358  uint8_t * const pvRxBuffer,
359  size_t xBytes );
360 
386 int32_t iot_spi_transfer_async( IotSPIHandle_t const pxSPIPeripheral,
387  uint8_t * const pvTxBuffer,
388  uint8_t * const pvRxBuffer,
389  size_t xBytes );
390 
402 int32_t iot_spi_close( IotSPIHandle_t const pxSPIPeripheral );
403 
418 int32_t iot_spi_cancel( IotSPIHandle_t const pxSPIPeripheral );
419 
431 int32_t iot_spi_select_slave( int32_t lSPIInstance, int32_t lSPISlave );
435 /* end of group iot_spi */
436 
437 #endif /* _IOT_SPI_H_ */
void(* IotSPICallback_t)(IotSPITransactionStatus_t xStatus, void *pvSPIparam)
The callback function for completion of SPI operation.
Definition: iot_spi.h:126
int32_t iot_spi_ioctl(IotSPIHandle_t const pxSPIPeripheral, IotSPIIoctlRequest_t xSPIRequest, void *const pvBuffer)
Configures the SPI port with user configuration.
int32_t iot_spi_cancel(IotSPIHandle_t const pxSPIPeripheral)
This function is used to cancel the current operation in progress, if the underlying driver allows th...
Definition: iot_spi.h:59
IotSPIMode_t eMode
Definition: iot_spi.h:106
Definition: iot_spi.h:93
int32_t iot_spi_transfer_async(IotSPIHandle_t const pxSPIPeripheral, uint8_t *const pvTxBuffer, uint8_t *const pvRxBuffer, size_t xBytes)
The SPI master starts a asynchronous transfer between master and the slave.
Definition: iot_spi.h:73
IotSPIBitOrder_t
The bit order of the data transmission.
Definition: iot_spi.h:80
#define IOT_SPI_READ_FAILED
Definition: iot_spi.h:47
int32_t iot_spi_write_async(IotSPIHandle_t const pxSPIPeripheral, uint8_t *const pvBuffer, size_t xBytes)
The SPI master starts transmission of data to the slave asynchronously.
int32_t iot_spi_select_slave(int32_t lSPIInstance, int32_t lSPISlave)
This function is used to select spi slave.
Definition: iot_spi.h:82
int32_t iot_spi_read_async(IotSPIHandle_t const pxSPIPeripheral, uint8_t *const pvBuffer, size_t xBytes)
The SPI master starts reading from the slave asynchronously.
int32_t iot_spi_write_sync(IotSPIHandle_t const pxSPIPeripheral, uint8_t *const pvBuffer, size_t xBytes)
The SPI master starts transmission of data to the slave synchronously.
Definition: iot_spi.h:94
uint32_t ulFreq
Definition: iot_spi.h:105
Definition: iot_spi.h:60
Definition: iot_spi.h:72
Definition: iot_spi.h:91
#define IOT_SPI_TRANSFER_ERROR
Definition: iot_spi.h:48
IotSPITransactionStatus_t
The SPI return status from Async operations.
Definition: iot_spi.h:57
IotSPIBitOrder_t eSetBitOrder
Definition: iot_spi.h:107
Definition: iot_spi.h:62
void iot_spi_set_callback(IotSPIHandle_t const pxSPIPeripheral, IotSPICallback_t xCallback, void *pvUserContext)
Sets the application callback to be called on completion of an operation.
int32_t iot_spi_close(IotSPIHandle_t const pxSPIPeripheral)
Stops the ongoing operation on SPI bus and de-initializes the SPI peripheral.
Definition: iot_spi.h:74
IotSPIIoctlRequest_t
Ioctl request for SPI HAL.
Definition: iot_spi.h:89
Definition: iot_spi.h:83
int32_t iot_spi_read_sync(IotSPIHandle_t const pxSPIPeripheral, uint8_t *const pvBuffer, size_t xBytes)
The SPI master starts reading from the slave synchronously.
Definition: iot_spi.h:71
int32_t iot_spi_transfer_sync(IotSPIHandle_t const pxSPIPeripheral, uint8_t *const pvTxBuffer, uint8_t *const pvRxBuffer, size_t xBytes)
The SPI master starts a synchronous transfer between master and the slave.
#define IOT_SPI_SUCCESS
The return codes for the methods in SPI.
Definition: iot_spi.h:44
#define IOT_SPI_WRITE_FAILED
Definition: iot_spi.h:46
Definition: iot_spi.h:61
Definition: iot_spi.h:92
struct IotSPIDescriptor_t * IotSPIHandle_t
IotSPIHandle_t is the handle type returned by calling iot_spi_open(). This is initialized in open and...
Definition: iot_spi.h:121
IotSPIMode_t
The SPI Modes denoting the clock polarity and clock phase.
Definition: iot_spi.h:69
uint8_t ucDummyValue
Definition: iot_spi.h:108
The configuration parameters for SPI Master.
Definition: iot_spi.h:103
IotSPIHandle_t iot_spi_open(int32_t lSPIInstance)
Initializes SPI peripheral with default configuration.