]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_SAMV71_Xplained_IAR_Keil/libchip_samv7/include/twid.h
Final V8.2.1 release ready for tagging:
[freertos] / FreeRTOS / Demo / CORTEX_M7_SAMV71_Xplained_IAR_Keil / libchip_samv7 / include / twid.h
1 /* ----------------------------------------------------------------------------\r
2  *         SAM Software Package License\r
3  * ----------------------------------------------------------------------------\r
4  * Copyright (c) 2011, Atmel Corporation\r
5  *\r
6  * All rights reserved.\r
7  *\r
8  * Redistribution and use in source and binary forms, with or without\r
9  * modification, are permitted provided that the following conditions are met:\r
10  *\r
11  * - Redistributions of source code must retain the above copyright notice,\r
12  * this list of conditions and the disclaimer below.\r
13  *\r
14  * Atmel's name may not be used to endorse or promote products derived from\r
15  * this software without specific prior written permission.\r
16  *\r
17  * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR\r
18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
20  * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,\r
21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\r
23  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\r
24  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
25  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
26  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
27  * ----------------------------------------------------------------------------\r
28  */\r
29 \r
30 #ifndef _TWID_\r
31 #define _TWID_\r
32 \r
33 /*----------------------------------------------------------------------------\r
34  *        Headers\r
35  *----------------------------------------------------------------------------*/\r
36 \r
37 #include "chip.h"\r
38 \r
39 #include <stdint.h>\r
40 \r
41 /*----------------------------------------------------------------------------\r
42  *        Definition\r
43  *----------------------------------------------------------------------------*/\r
44 \r
45 /** TWI driver is currently busy. */\r
46 #define TWID_ERROR_BUSY              1\r
47 \r
48    /** Transfer is still pending.*/\r
49 #define ASYNC_STATUS_PENDING        0xFF\r
50 #ifdef __cplusplus\r
51  extern "C" {\r
52 #endif\r
53 \r
54 /*----------------------------------------------------------------------------\r
55  *        Types\r
56  *----------------------------------------------------------------------------*/\r
57 \r
58    /*----------------------------------------------------------------------------\r
59  *        Type\r
60  *----------------------------------------------------------------------------*/\r
61 /** \brief Asynchronous transfer descriptor. */\r
62 typedef struct _Async\r
63 {\r
64     /** Asynchronous transfer status.*/\r
65     volatile uint32_t status ;\r
66     /** Callback function to invoke when transfer completes or fails.*/\r
67     void *callback ;\r
68     /** Driver storage area; do not use.*/\r
69     uint8_t pStorage[9] ;\r
70 } Async ;\r
71 \r
72 /** \brief TWI driver structure. Holds the internal state of the driver.*/\r
73 typedef struct _Twid\r
74 {\r
75     /** Pointer to the underlying TWI peripheral.*/\r
76     Twihs *pTwi ;\r
77     /** Current asynchronous transfer being processed.*/\r
78     Async *pTransfer ;\r
79 } Twid;\r
80 \r
81 /*----------------------------------------------------------------------------\r
82  *        Export functions\r
83  *----------------------------------------------------------------------------*/\r
84 extern void TWID_Initialize( Twid *pTwid, Twihs *pTwi ) ;\r
85 extern void TWID_DmaInitialize(Twid *pTwid, Twihs *pTwi);\r
86 \r
87 extern void TWID_Handler( Twid *pTwid ) ;\r
88 \r
89 extern uint32_t ASYNC_IsFinished( Async* pAsync ) ;\r
90 \r
91 extern uint8_t TWID_Read(\r
92     Twid *pTwid,\r
93     uint8_t address,\r
94     uint32_t iaddress,\r
95     uint8_t isize,\r
96     uint8_t *pData,\r
97     uint32_t num,\r
98     Async *pAsync);\r
99 \r
100 extern uint8_t TWID_Write(\r
101     Twid *pTwid,\r
102     uint8_t address,\r
103     uint32_t iaddress,\r
104     uint8_t isize,\r
105     uint8_t *pData,\r
106     uint32_t num,\r
107     Async *pAsync);\r
108 \r
109 extern uint8_t TWID_DmaRead(\r
110     Twid *pTwid,\r
111     uint8_t address,\r
112     uint32_t iaddress,\r
113     uint8_t isize,\r
114     uint8_t *pData,\r
115     uint32_t num,\r
116     Async *pAsync,\r
117     uint8_t TWI_ID);\r
118 \r
119 extern uint8_t TWID_DmaWrite(\r
120     Twid *pTwid,\r
121     uint8_t address,\r
122     uint32_t iaddress,\r
123     uint8_t isize,\r
124     uint8_t *pData,\r
125     uint32_t num,\r
126     Async *pAsync,\r
127     uint8_t TWI_ID);\r
128 \r
129 #ifdef __cplusplus\r
130 }\r
131 #endif\r
132 \r
133 #endif //#ifndef TWID_H\r
134 \r