]> begriffs open source - cmsis-driver-validation/blob - Source/cmsis_dv.c
Updated examples using NXP MIMXRT1064-EVK board to support the latest MIMXRT1064_DFP
[cmsis-driver-validation] / Source / cmsis_dv.c
1 /*-----------------------------------------------------------------------------
2  *      Name:         cmsis_dv.c
3  *      Purpose:      Driver validation test cases entry point
4  *----------------------------------------------------------------------------
5  *      Copyright(c) KEIL - An ARM Company
6  *----------------------------------------------------------------------------*/
7
8 #include "cmsis_dv.h"
9 #include "RTE_Components.h"
10 #include "DV_Framework.h"
11 #include "DV_Config.h"
12
13 /*-----------------------------------------------------------------------------
14  *      Variables declarations
15  *----------------------------------------------------------------------------*/
16 // Buffer list sizes
17 const uint32_t BUFFER[] =  {
18 #if (BUFFER_ELEM_1_32!=0)
19   1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,
20 #endif
21 #if (BUFFER_ELEM_512!=0)
22   512,
23 #endif
24 #if (BUFFER_ELEM_1024!=0)
25   1024,
26 #endif
27 #if (BUFFER_ELEM_4096!=0)
28   4096,
29 #endif
30 #if (BUFFER_ELEM_32768!=0)
31   32768,
32 #endif 
33 };
34 const uint32_t BUFFER_NUM = ARRAY_SIZE(BUFFER);
35
36 /*-----------------------------------------------------------------------------
37  *      Init/Uninit test suite
38  *----------------------------------------------------------------------------*/
39 #ifdef  RTE_CMSIS_DV_WIFI
40 static void TS_Init_WiFi (void) {
41   WIFI_DV_Initialize ();
42 }
43 static void TS_Uninit_WiFi (void) {
44   WIFI_DV_Uninitialize ();
45 }
46 #endif
47
48 /*-----------------------------------------------------------------------------
49  *      Test cases list
50  *----------------------------------------------------------------------------*/
51 #ifdef  RTE_CMSIS_DV_SPI
52 static TEST_CASE TC_List_SPI[] = {
53   TCD ( SPI_GetCapabilities,            SPI_GETCAPABILITIES_EN          ),
54   TCD ( SPI_Initialization,             SPI_INITIALIZATION_EN           ),
55   TCD ( SPI_PowerControl,               SPI_POWERCONTROL_EN             ),
56   TCD ( SPI_Config_PolarityPhase,       SPI_CONFIG_POLARITYPHASE_EN     ),
57   TCD ( SPI_Config_DataBits,            SPI_CONFIG_DATABITS_EN          ),
58   TCD ( SPI_Config_BitOrder,            SPI_CONFIG_BITORDER_EN          ),
59   TCD ( SPI_Config_SSMode,              SPI_CONFIG_SSMODE_EN            ),
60   TCD ( SPI_Config_BusSpeed,            SPI_CONFIG_BUSSPEED_EN          ),
61   TCD ( SPI_Config_CommonParams,        SPI_CONFIG_COMMONPARAMS_EN      ),
62   TCD ( SPI_Send,                       SPI_SEND_EN                     ),
63   TCD ( SPI_Receive,                    SPI_RECEIVE_EN                  ),
64   TCD ( SPI_Loopback_CheckBusSpeed,     SPI_LOOPBACK_CHECKBUSSPEED_EN   ),
65   TCD ( SPI_Loopback_Transfer,          SPI_LOOPBACK_TRANSFER_EN        ),
66   TCD ( SPI_CheckInvalidInit,           SPI_CHECKINVALIDINIT_EN         ),
67 };
68 #endif
69
70 #ifdef  RTE_CMSIS_DV_USART
71 static TEST_CASE TC_List_USART[] = {
72   TCD ( USART_GetCapabilities,          USART_GETCAPABILITIES_EN        ),
73   TCD ( USART_Initialization,           USART_INITIALIZATION_EN         ),
74   TCD ( USART_PowerControl,             USART_POWERCONTROL_EN           ),
75   TCD ( USART_Config_PolarityPhase,     USART_CONFIG_POLARITYPHASE_EN   ),
76   TCD ( USART_Config_DataBits,          USART_CONFIG_DATABITS_EN        ),
77   TCD ( USART_Config_StopBits,          USART_CONFIG_STOPBITS_EN        ),
78   TCD ( USART_Config_Parity,            USART_CONFIG_PARITY_EN          ),
79   TCD ( USART_Config_Baudrate,          USART_CONFIG_BAUDRATE_EN        ),
80   TCD ( USART_Config_CommonParams,      USART_CONFIG_COMMONPARAMS_EN    ),
81   TCD ( USART_Send,                     USART_SEND_EN                   ),
82   TCD ( USART_AsynchronousReceive,      USART_ASYNCHRONOUSRECEIVE_EN    ),
83   TCD ( USART_Loopback_CheckBaudrate,   USART_LOOPBACK_CHECKBAUDRATE_EN ),
84   TCD ( USART_Loopback_Transfer,        USART_LOOPBACK_TRANSFER_EN      ),
85   TCD ( USART_CheckInvalidInit,         USART_CHECKINVALIDINIT_EN       ),
86 };
87 #endif
88
89 #ifdef  RTE_CMSIS_DV_ETH
90 static TEST_CASE TC_List_ETH[] = {
91   TCD ( ETH_MAC_GetCapabilities,        ETH_MAC_GETCAPABILITIES_EN      ),
92   TCD ( ETH_MAC_Initialization,         ETH_MAC_INITIALIZATION_EN       ),
93   TCD ( ETH_MAC_PowerControl,           ETH_MAC_POWERCONTROL_EN         ),
94   TCD ( ETH_MAC_SetBusSpeed,            ETH_MAC_SETBUSSPEED_EN          ),
95   TCD ( ETH_MAC_Config_Mode,            ETH_MAC_CONFIG_MODE_EN          ),
96   TCD ( ETH_MAC_Config_CommonParams,    ETH_MAC_CONFIG_COMMONPARAMS_EN  ),
97   TCD ( ETH_MAC_PTP_ControlTimer,       ETH_MAC_PTP_CONTROLTIMER_EN     ),
98   TCD ( ETH_PHY_Initialization,         ETH_PHY_INITIALIZATION_EN       ),
99   TCD ( ETH_PHY_PowerControl,           ETH_PHY_POWERCONTROL_EN         ),
100   TCD ( ETH_PHY_Config,                 ETH_PHY_CONFIG_EN               ),
101   TCD ( ETH_Loopback_Transfer,          ETH_LOOPBACK_TRANSFER_EN        ),
102   TCD ( ETH_Loopback_PTP,               ETH_LOOPBACK_PTP_EN             ),
103   TCD ( ETH_PHY_CheckInvalidInit,       ETH_PHY_CHECKINVALIDINIT_EN     ),
104   TCD ( ETH_MAC_CheckInvalidInit,       ETH_MAC_CHECKINVALIDINIT_EN     ),
105 };
106 #endif
107
108 #ifdef  RTE_CMSIS_DV_I2C
109 static TEST_CASE TC_List_I2C[] = {
110   TCD ( I2C_GetCapabilities,            I2C_GETCAPABILITIES_EN          ),
111   TCD ( I2C_Initialization,             I2C_INITIALIZATION_EN           ),
112   TCD ( I2C_PowerControl,               I2C_POWERCONTROL_EN             ),
113   TCD ( I2C_SetBusSpeed,                I2C_SETBUSSPEED_EN              ),
114   TCD ( I2C_SetOwnAddress,              I2C_SETOWNADDRESS_EN            ),
115   TCD ( I2C_BusClear,                   I2C_BUSCLEAR_EN                 ),
116   TCD ( I2C_AbortTransfer,              I2C_ABORTTRANSFER_EN            ),
117   TCD ( I2C_CheckInvalidInit,           I2C_CHECKINVALIDINIT_EN         ),
118 };
119 #endif
120
121 #ifdef  RTE_CMSIS_DV_MCI
122 static TEST_CASE TC_List_MCI[] = {
123   TCD ( MCI_GetCapabilities,            MCI_GETCAPABILITIES_EN          ),
124   TCD ( MCI_Initialization,             MCI_INITIALIZATION_EN           ),
125   TCD ( MCI_PowerControl,               MCI_POWERCONTROL_EN             ),
126   TCD ( MCI_SetBusSpeedMode,            MCI_SETBUSSPEEDMODE_EN          ),
127   TCD ( MCI_Config_DataWidth,           MCI_CONFIG_DATAWIDTH_EN         ),
128   TCD ( MCI_Config_CmdLineMode,         MCI_CONFIG_CMDLINEMODE_EN       ),
129   TCD ( MCI_Config_DriverStrength,      MCI_CONFIG_DRIVERSTRENGTH_EN    ),
130   TCD ( MCI_CheckInvalidInit,           MCI_CHECKINVALIDINIT_EN         ),
131 };
132 #endif
133
134 #ifdef  RTE_CMSIS_DV_USBD
135 static TEST_CASE TC_List_USBD[] = {
136   TCD ( USBD_GetCapabilities,           USBD_GETCAPABILITIES_EN         ),
137   TCD ( USBD_Initialization,            USBD_INITIALIZATION_EN          ),
138   TCD ( USBD_PowerControl,              USBD_POWERCONTROL_EN            ),
139   TCD ( USBD_CheckInvalidInit,          USBD_CHECKINVALIDINIT_EN        ),
140 };
141 #endif
142
143 #ifdef  RTE_CMSIS_DV_USBH
144 static TEST_CASE TC_List_USBH[] = {
145   TCD ( USBH_GetCapabilities,           USBH_GETCAPABILITIES_EN         ),
146   TCD ( USBH_Initialization,            USBH_INITIALIZATION_EN          ),
147   TCD ( USBH_PowerControl,              USBH_POWERCONTROL_EN            ),
148   TCD ( USBH_CheckInvalidInit,          USBH_CHECKINVALIDINIT_EN        ),
149 };
150 #endif
151
152 #ifdef  RTE_CMSIS_DV_CAN
153 static TEST_CASE TC_List_CAN[] = {
154   TCD ( CAN_GetCapabilities,            CAN_GETCAPABILITIES_EN          ),
155   TCD ( CAN_Initialization,             CAN_INITIALIZATION_EN           ),
156   TCD ( CAN_PowerControl,               CAN_POWERCONTROL_EN             ),
157   TCD ( CAN_Loopback_CheckBitrate,      CAN_LOOPBACK_CHECK_BR_EN        ),
158   TCD ( CAN_Loopback_CheckBitrateFD,    CAN_LOOPBACK_CHECK_BR_FD_EN     ),
159   TCD ( CAN_Loopback_Transfer,          CAN_LOOPBACK_TRANSFER_EN        ),
160   TCD ( CAN_Loopback_TransferFD,        CAN_LOOPBACK_TRANSFER_FD_EN     ),
161 };
162 #endif
163
164 #ifdef  RTE_CMSIS_DV_WIFI
165 static TEST_CASE TC_List_WiFi[] = {
166   /*    WiFi Control tests */
167   #if ( WIFI_CONTROL_EN != 0)
168   TCD ( WIFI_GetVersion,                WIFI_GETVERSION_EN              ),
169   TCD ( WIFI_GetCapabilities,           WIFI_GETCAPABILITIES_EN         ),
170   TCD ( WIFI_Initialize_Uninitialize,   WIFI_INIT_UNINIT_EN             ),
171   TCD ( WIFI_PowerControl,              WIFI_POWERCONTROL_EN            ),
172   TCD ( WIFI_GetModuleInfo,             WIFI_GETMODULEINFO_EN           ),
173   #endif
174   /*    WiFi Management tests */
175   #if ( WIFI_MANAGEMENT_EN != 0)
176   TCD ( WIFI_SetOption_GetOption,       WIFI_SETGETOPTION_EN            ),
177   TCD ( WIFI_Scan,                      WIFI_SCAN_EN                    ),
178   TCD ( WIFI_Activate_Deactivate,       WIFI_ACT_DEACT_EN               ),
179   TCD ( WIFI_IsConnected,               WIFI_ISCONNECTED_EN             ),
180   TCD ( WIFI_GetNetInfo,                WIFI_GETNETINFO_EN              ),
181   #endif
182   /*    WiFi Management tests requiring user interaction */
183   #if ( WIFI_MANAGEMENT_USER_EN != 0)
184   TCD ( WIFI_Activate_AP,               WIFI_ACT_AP                     ),
185   #if ( WIFI_WPS_USER_EN != 0)
186   TCD ( WIFI_Activate_Station_WPS_PBC,  WIFI_ACT_STA_WPS_PBC            ),
187   TCD ( WIFI_Activate_Station_WPS_PIN,  WIFI_ACT_STA_WPS_PIN            ),
188   TCD ( WIFI_Activate_AP_WPS_PBC,       WIFI_ACT_AP_WPS_PBC             ),
189   TCD ( WIFI_Activate_AP_WPS_PIN,       WIFI_ACT_AP_WPS_PIN             ),
190   #endif
191   #endif
192   /*    WiFi Socket API tests */
193   #if ( WIFI_SOCKET_EN != 0)
194   TCD ( WIFI_SocketCreate,              WIFI_SOCKETCREATE_EN            ),
195   TCD ( WIFI_SocketBind,                WIFI_SOCKETBIND_EN              ),
196   TCD ( WIFI_SocketListen,              WIFI_SOCKETLISTEN_EN            ),
197   TCD ( WIFI_SocketAccept,              WIFI_SOCKETACCEPT_EN            ),
198   TCD ( WIFI_SocketConnect,             WIFI_SOCKETCONNECT_EN           ),
199   TCD ( WIFI_SocketRecv,                WIFI_SOCKETRECV_EN              ),
200   TCD ( WIFI_SocketRecvFrom,            WIFI_SOCKETRECVFROM_EN          ),
201   TCD ( WIFI_SocketSend,                WIFI_SOCKETSEND_EN              ),
202   TCD ( WIFI_SocketSendTo,              WIFI_SOCKETSENDTO_EN            ),
203   TCD ( WIFI_SocketGetSockName,         WIFI_SOCKETGETSOCKNAME_EN       ),
204   TCD ( WIFI_SocketGetPeerName,         WIFI_SOCKETGETPEERNAME_EN       ),
205   TCD ( WIFI_SocketGetOpt,              WIFI_SOCKETGETOPT_EN            ),
206   TCD ( WIFI_SocketSetOpt,              WIFI_SOCKETSETOPT_EN            ),
207   TCD ( WIFI_SocketClose,               WIFI_SOCKETCLOSE_EN             ),
208   TCD ( WIFI_SocketGetHostByName,       WIFI_SOCKETGETHOSTBYNAME_EN     ),
209   TCD ( WIFI_Ping,                      WIFI_PING_EN                    ),
210   #endif
211   /*    WiFi Socket Operation tests */
212   #if ( WIFI_SOCKET_OP_EN != 0)
213   TCD ( WIFI_Transfer_Fixed,            WIFI_TRANSFER_FIXED_EN          ),
214   TCD ( WIFI_Transfer_Incremental,      WIFI_TRANSFER_INCREMENTAL_EN    ),
215   TCD ( WIFI_Send_Fragmented,           WIFI_SEND_FRAGMENTED_EN         ),
216   TCD ( WIFI_Recv_Fragmented,           WIFI_RECV_FRAGMENTED_EN         ),
217   TCD ( WIFI_Test_Speed,                WIFI_TEST_SPEED_EN              ),
218   TCD ( WIFI_Concurrent_Socket,         WIFI_CONCURRENT_SOCKET_EN       ),
219   TCD ( WIFI_Downstream_Rate,           WIFI_DOWNSTREAM_RATE_EN         ),
220   TCD ( WIFI_Upstream_Rate,             WIFI_UPSTREAM_RATE_EN           ),
221   #endif
222 };
223 #endif
224
225 #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
226 #pragma clang diagnostic push
227 #pragma clang diagnostic ignored "-Wdate-time"
228 #endif
229 /*-----------------------------------------------------------------------------
230  *      Test suite description
231  *----------------------------------------------------------------------------*/
232 TEST_GROUP ts[] = {
233 #ifdef  RTE_CMSIS_DV_SPI                /* SPI test group                     */
234 {
235   __FILE__, __DATE__, __TIME__,
236   "CMSIS-Driver SPI Test Report",
237   NULL,
238   NULL,
239   1,
240   TC_List_SPI,
241   ARRAY_SIZE (TC_List_SPI),
242 },
243 #endif
244
245 #ifdef  RTE_CMSIS_DV_USART              /* USART test group                   */
246 {
247   __FILE__, __DATE__, __TIME__,
248   "CMSIS-Driver USART Test Report",
249   NULL,
250   NULL,
251   1,
252   TC_List_USART,
253   ARRAY_SIZE (TC_List_USART),
254 },
255 #endif
256
257 #ifdef  RTE_CMSIS_DV_ETH                /* ETH test group                     */
258 {
259   __FILE__, __DATE__, __TIME__,
260   "CMSIS-Driver ETH Test Report",
261   NULL,
262   NULL,
263   1,
264   TC_List_ETH,
265   ARRAY_SIZE (TC_List_ETH),
266 },
267 #endif
268
269 #ifdef  RTE_CMSIS_DV_I2C                /* I2C test group                     */
270 {
271   __FILE__, __DATE__, __TIME__,
272   "CMSIS-Driver I2C (API v2.3) Test Report",
273   NULL,
274   NULL,
275   1,
276   TC_List_I2C,
277   ARRAY_SIZE (TC_List_I2C),
278 },
279 #endif
280
281 #ifdef  RTE_CMSIS_DV_MCI                /* MCI test group                     */
282 {
283   __FILE__, __DATE__, __TIME__,
284   "CMSIS-Driver MCI Test Report",
285   NULL,
286   NULL,
287   1,
288   TC_List_MCI,
289   ARRAY_SIZE (TC_List_MCI),
290 },
291 #endif
292
293 #ifdef  RTE_CMSIS_DV_USBD               /* USBD test group                    */
294 {
295   __FILE__, __DATE__, __TIME__,
296   "CMSIS-Driver USBD Test Report",
297   NULL,
298   NULL,
299   1,
300   TC_List_USBD,
301   ARRAY_SIZE (TC_List_USBD),
302 },
303 #endif
304
305 #ifdef  RTE_CMSIS_DV_USBH               /* USBH test group                    */
306 {
307   __FILE__, __DATE__, __TIME__,
308   "CMSIS-Driver USBH Test Report",
309   NULL,
310   NULL,
311   1,
312   TC_List_USBH,
313   ARRAY_SIZE (TC_List_USBH),
314 },
315 #endif
316
317 #ifdef  RTE_CMSIS_DV_CAN                /* CAN test group                    */
318 {
319   __FILE__, __DATE__, __TIME__,
320   "CMSIS-Driver CAN Test Report",
321   NULL,
322   NULL,
323   1,
324   TC_List_CAN,
325   ARRAY_SIZE (TC_List_CAN),
326 },
327 #endif
328
329 #ifdef  RTE_CMSIS_DV_WIFI               /* WIFI test group                    */
330 {
331   __FILE__, __DATE__, __TIME__,
332   "CMSIS-Driver WiFi Test Report",
333   TS_Init_WiFi,
334   TS_Uninit_WiFi,
335   1,
336   TC_List_WiFi,
337   ARRAY_SIZE (TC_List_WiFi),
338 },
339 #endif
340 };
341
342 /* Number of test groups in suite */
343 uint32_t tg_cnt = sizeof(ts)/sizeof(ts[0]);
344
345 #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
346 #pragma clang diagnostic pop
347 #endif