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