]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/WizNET_DEMO_GCC_ARM7/i2c.h
Update version number in readiness for V10.3.0 release. Sync SVN with reviewed releas...
[freertos] / FreeRTOS / Demo / WizNET_DEMO_GCC_ARM7 / i2c.h
1 /*\r
2  * FreeRTOS Kernel V10.3.0\r
3  * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
4  *\r
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
6  * this software and associated documentation files (the "Software"), to deal in\r
7  * the Software without restriction, including without limitation the rights to\r
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r
9  * the Software, and to permit persons to whom the Software is furnished to do so,\r
10  * subject to the following conditions:\r
11  *\r
12  * The above copyright notice and this permission notice shall be included in all\r
13  * copies or substantial portions of the Software.\r
14  *\r
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
17  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
19  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
21  *\r
22  * http://www.FreeRTOS.org\r
23  * http://aws.amazon.com/freertos\r
24  *\r
25  * 1 tab == 4 spaces!\r
26  */\r
27 \r
28 #ifndef I2C_H\r
29 #define I2C_H\r
30 \r
31 /* Structure used to capture the I2C message details.  The structure is then\r
32  * queued for processing by the I2C ISR. \r
33  */\r
34 typedef struct AN_I2C_MESSAGE\r
35 {\r
36         long lMessageLength;                                    /*< How many bytes of data to send or received - excluding the buffer address. */\r
37         unsigned char ucSlaveAddress;                   /*< The slave address of the WIZnet on the I2C bus. */\r
38         unsigned char ucBufferAddressLowByte;   /*< The address within the WIZnet device to which data should be read from / written to. */\r
39         unsigned char ucBufferAddressHighByte;  /*< As above, high byte. */\r
40         SemaphoreHandle_t xMessageCompleteSemaphore;    /*< Contains a reference to a semaphore if the application tasks wants notifying when the message has been transacted. */\r
41         unsigned char *pucBuffer;                               /*< Pointer to the buffer from where data will be read for transmission, or into which received data will be placed. */\r
42 } xI2CMessage;\r
43 \r
44 /* Constants to use as the ulDirection parameter of i2cMessage(). */\r
45 #define i2cWRITE                                ( ( unsigned long ) 0 )\r
46 #define i2cREAD                                 ( ( unsigned long ) 1 )\r
47 \r
48 /**\r
49  * Must be called once before any calls to i2cMessage.\r
50  */\r
51 void i2cInit( void );\r
52 \r
53 /**\r
54  * Send or receive a message over the I2C bus.\r
55  *\r
56  * @param pucMessage     The data to be transmitted or the buffer into which\r
57  *                                               received data will be placed. \r
58  *\r
59  * @param lMessageLength The number of bytes to either transmit or receive.\r
60  *\r
61  * @param ucSlaveAddress The slave address of the WIZNet device on the I2C bus.\r
62  *\r
63  * @param usBufferAddress The address within the WIZNet device to which data is\r
64  *                                               either written to or read from.  The WIZnet has it's\r
65  *                                               own Rx and Tx buffers.\r
66  *\r
67  * @param ulDirection    Must be either i2cWRITE or i2cREAD as #defined above.\r
68  *\r
69  * @param xMessageCompleteSemaphore\r
70  *                                               Can be used to pass a semaphore reference if the \r
71  *                                               calling task want notification of when the message has\r
72  *                                               completed.  Otherwise NULL can be passed.\r
73  * \r
74  * @param xBlockTime     The time to wait for a space in the message queue to \r
75  *                                               become available should one not be available \r
76  *                                               immediately.\r
77  */\r
78 void i2cMessage( const unsigned char * const pucMessage, long lMessageLength, unsigned char ucSlaveAddress, unsigned short usBufferAddress, unsigned long ulDirection, SemaphoreHandle_t xMessageCompleteSemaphore, TickType_t xBlockTime );\r
79 \r
80 #endif\r
81 \r