2 * Copyright (c) 2015-2020 Arm Limited. All rights reserved.
4 * SPDX-License-Identifier: Apache-2.0
6 * Licensed under the Apache License, Version 2.0 (the License); you may
7 * not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
14 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 * -----------------------------------------------------------------------------
20 * Project: CMSIS-Driver Validation
21 * Title: Tests definitions
23 * -----------------------------------------------------------------------------
27 #ifdef RTE_CMSIS_DV_SPI
28 #include "DV_SPI_Config.h"
30 #ifdef RTE_CMSIS_DV_USART
31 #include "DV_USART_Config.h"
33 #ifdef RTE_CMSIS_DV_ETH
34 #include "DV_ETH_Config.h"
36 #ifdef RTE_CMSIS_DV_I2C
37 #include "DV_I2C_Config.h"
39 #ifdef RTE_CMSIS_DV_MCI
40 #include "DV_MCI_Config.h"
42 #ifdef RTE_CMSIS_DV_USBD
43 #include "DV_USBD_Config.h"
45 #ifdef RTE_CMSIS_DV_USBH
46 #include "DV_USBH_Config.h"
48 #ifdef RTE_CMSIS_DV_CAN
49 #include "DV_CAN_Config.h"
51 #ifdef RTE_CMSIS_DV_WIFI
52 #include "DV_WiFi_Config.h"
54 #include "DV_Framework.h"
56 /*-----------------------------------------------------------------------------
57 * Variables declarations
58 *----------------------------------------------------------------------------*/
61 #if (defined(RTE_CMSIS_DV_ETH) || defined(RTE_CMSIS_DV_USART))
62 const uint32_t BUFFER[] = {
63 #if (BUFFER_ELEM_1_32!=0)
64 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,
66 #if (BUFFER_ELEM_512!=0)
69 #if (BUFFER_ELEM_1024!=0)
72 #if (BUFFER_ELEM_4096!=0)
75 #if (BUFFER_ELEM_32768!=0)
79 const uint32_t BUFFER_NUM = ARRAY_SIZE(BUFFER);
82 /*-----------------------------------------------------------------------------
83 * Init/Uninit test suite
84 *----------------------------------------------------------------------------*/
85 #ifdef RTE_CMSIS_DV_SPI
86 static void TS_Init_SPI (void) {
89 static void TS_Uninit_SPI (void) {
90 SPI_DV_Uninitialize ();
93 #ifdef RTE_CMSIS_DV_WIFI
94 static void TS_Init_WiFi (void) {
95 WIFI_DV_Initialize ();
97 static void TS_Uninit_WiFi (void) {
98 WIFI_DV_Uninitialize ();
102 /*-----------------------------------------------------------------------------
104 *----------------------------------------------------------------------------*/
105 #ifdef RTE_CMSIS_DV_SPI
106 static TEST_CASE TC_List_SPI[] = {
107 #if ( SPI_TG_DRIVER_MANAGEMENT_EN != 0 )
108 TCD ( SPI_GetVersion, SPI_TC_GET_VERSION_EN ),
109 TCD ( SPI_GetCapabilities, SPI_TC_GET_CAPABILITIES_EN ),
110 TCD ( SPI_Initialize_Uninitialize, SPI_TC_INIT_UNINIT_EN ),
111 TCD ( SPI_PowerControl, SPI_TC_POWER_CONTROL_EN ),
113 #if ( SPI_TG_DATA_EXCHANGE_EN != 0 )
114 #if ( SPI_TG_MODE_EN != 0 )
115 TCD ( SPI_Mode_Master_SS_Unused, SPI_TC_MASTER_UNUSED_EN ),
116 TCD ( SPI_Mode_Master_SS_Sw_Ctrl, SPI_TC_MASTER_SW_EN ),
117 TCD ( SPI_Mode_Master_SS_Hw_Ctrl_Out, SPI_TC_MASTER_HW_OUT_EN ),
118 TCD ( SPI_Mode_Master_SS_Hw_Mon_In, SPI_TC_MASTER_HW_IN_EN ),
119 TCD ( SPI_Mode_Slave_SS_Hw_Mon, SPI_TC_SLAVE_HW_EN ),
120 TCD ( SPI_Mode_Slave_SS_Sw_Ctrl, SPI_TC_SLAVE_SW_EN ),
122 #if ( SPI_TG_FORMAT_EN != 0 )
123 TCD ( SPI_Format_Clock_Pol0_Pha0, SPI_TC_FORMAT_POL0_PHA0_EN ),
124 TCD ( SPI_Format_Clock_Pol0_Pha1, SPI_TC_FORMAT_POL0_PHA1_EN ),
125 TCD ( SPI_Format_Clock_Pol1_Pha0, SPI_TC_FORMAT_POL1_PHA0_EN ),
126 TCD ( SPI_Format_Clock_Pol1_Pha1, SPI_TC_FORMAT_POL1_PHA1_EN ),
127 TCD ( SPI_Format_Frame_TI, SPI_TC_FORMAT_TI_EN ),
128 TCD ( SPI_Format_Clock_Microwire, SPI_TC_FORMAT_MICROWIRE_EN ),
130 #if ( SPI_TG_DATA_BIT_EN != 0 )
131 TCD ( SPI_Data_Bits_1, (SPI_TC_DATA_BIT_EN_MASK )&1),
132 TCD ( SPI_Data_Bits_2, (SPI_TC_DATA_BIT_EN_MASK >> 1)&1),
133 TCD ( SPI_Data_Bits_3, (SPI_TC_DATA_BIT_EN_MASK >> 2)&1),
134 TCD ( SPI_Data_Bits_4, (SPI_TC_DATA_BIT_EN_MASK >> 3)&1),
135 TCD ( SPI_Data_Bits_5, (SPI_TC_DATA_BIT_EN_MASK >> 4)&1),
136 TCD ( SPI_Data_Bits_6, (SPI_TC_DATA_BIT_EN_MASK >> 5)&1),
137 TCD ( SPI_Data_Bits_7, (SPI_TC_DATA_BIT_EN_MASK >> 6)&1),
138 TCD ( SPI_Data_Bits_8, (SPI_TC_DATA_BIT_EN_MASK >> 7)&1),
139 TCD ( SPI_Data_Bits_9, (SPI_TC_DATA_BIT_EN_MASK >> 8)&1),
140 TCD ( SPI_Data_Bits_10, (SPI_TC_DATA_BIT_EN_MASK >> 9)&1),
141 TCD ( SPI_Data_Bits_11, (SPI_TC_DATA_BIT_EN_MASK >> 10)&1),
142 TCD ( SPI_Data_Bits_12, (SPI_TC_DATA_BIT_EN_MASK >> 11)&1),
143 TCD ( SPI_Data_Bits_13, (SPI_TC_DATA_BIT_EN_MASK >> 12)&1),
144 TCD ( SPI_Data_Bits_14, (SPI_TC_DATA_BIT_EN_MASK >> 13)&1),
145 TCD ( SPI_Data_Bits_15, (SPI_TC_DATA_BIT_EN_MASK >> 14)&1),
146 TCD ( SPI_Data_Bits_16, (SPI_TC_DATA_BIT_EN_MASK >> 15)&1),
147 TCD ( SPI_Data_Bits_17, (SPI_TC_DATA_BIT_EN_MASK >> 16)&1),
148 TCD ( SPI_Data_Bits_18, (SPI_TC_DATA_BIT_EN_MASK >> 17)&1),
149 TCD ( SPI_Data_Bits_19, (SPI_TC_DATA_BIT_EN_MASK >> 18)&1),
150 TCD ( SPI_Data_Bits_20, (SPI_TC_DATA_BIT_EN_MASK >> 19)&1),
151 TCD ( SPI_Data_Bits_21, (SPI_TC_DATA_BIT_EN_MASK >> 20)&1),
152 TCD ( SPI_Data_Bits_22, (SPI_TC_DATA_BIT_EN_MASK >> 21)&1),
153 TCD ( SPI_Data_Bits_23, (SPI_TC_DATA_BIT_EN_MASK >> 22)&1),
154 TCD ( SPI_Data_Bits_24, (SPI_TC_DATA_BIT_EN_MASK >> 23)&1),
155 TCD ( SPI_Data_Bits_25, (SPI_TC_DATA_BIT_EN_MASK >> 24)&1),
156 TCD ( SPI_Data_Bits_26, (SPI_TC_DATA_BIT_EN_MASK >> 25)&1),
157 TCD ( SPI_Data_Bits_27, (SPI_TC_DATA_BIT_EN_MASK >> 26)&1),
158 TCD ( SPI_Data_Bits_28, (SPI_TC_DATA_BIT_EN_MASK >> 27)&1),
159 TCD ( SPI_Data_Bits_29, (SPI_TC_DATA_BIT_EN_MASK >> 28)&1),
160 TCD ( SPI_Data_Bits_30, (SPI_TC_DATA_BIT_EN_MASK >> 29)&1),
161 TCD ( SPI_Data_Bits_31, (SPI_TC_DATA_BIT_EN_MASK >> 30)&1),
162 TCD ( SPI_Data_Bits_32, (SPI_TC_DATA_BIT_EN_MASK >> 31)&1),
164 #if ( SPI_TG_BIT_ORDER_EN != 0 )
165 TCD ( SPI_Bit_Order_MSB_LSB, SPI_TC_BIT_ORDER_MSB_LSB_EN ),
166 TCD ( SPI_Bit_Order_LSB_MSB, SPI_TC_BIT_ORDER_LSB_MSB_EN ),
168 #if ( SPI_TG_BUS_SPEED_EN != 0 )
169 TCD ( SPI_Bus_Speed_Min, SPI_TC_BUS_SPEED_MIN_EN ),
170 TCD ( SPI_Bus_Speed_Max, SPI_TC_BUS_SPEED_MAX_EN ),
172 #if ( SPI_TG_OTHER_EN != 0 )
173 TCD ( SPI_Number_Of_Items, SPI_TC_NUMBER_OF_ITEMS_EN ),
174 TCD ( SPI_GetDataCount, SPI_TC_GET_DATA_COUNT_EN ),
175 TCD ( SPI_Abort, SPI_TC_ABORT_EN ),
178 #if ( SPI_TG_EVENT_EN != 0 )
179 TCD ( SPI_DataLost, SPI_TC_DATA_LOST_EN ),
180 TCD ( SPI_ModeFault, SPI_TC_MODE_FAULT_EN ),
185 #ifdef RTE_CMSIS_DV_USART
186 static TEST_CASE TC_List_USART[] = {
187 TCD ( USART_GetCapabilities, USART_GETCAPABILITIES_EN ),
188 TCD ( USART_Initialization, USART_INITIALIZATION_EN ),
189 TCD ( USART_PowerControl, USART_POWERCONTROL_EN ),
190 TCD ( USART_Config_PolarityPhase, USART_CONFIG_POLARITYPHASE_EN ),
191 TCD ( USART_Config_DataBits, USART_CONFIG_DATABITS_EN ),
192 TCD ( USART_Config_StopBits, USART_CONFIG_STOPBITS_EN ),
193 TCD ( USART_Config_Parity, USART_CONFIG_PARITY_EN ),
194 TCD ( USART_Config_Baudrate, USART_CONFIG_BAUDRATE_EN ),
195 TCD ( USART_Config_CommonParams, USART_CONFIG_COMMONPARAMS_EN ),
196 TCD ( USART_Send, USART_SEND_EN ),
197 TCD ( USART_AsynchronousReceive, USART_ASYNCHRONOUSRECEIVE_EN ),
198 TCD ( USART_Loopback_CheckBaudrate, USART_LOOPBACK_CHECKBAUDRATE_EN ),
199 TCD ( USART_Loopback_Transfer, USART_LOOPBACK_TRANSFER_EN ),
200 TCD ( USART_CheckInvalidInit, USART_CHECKINVALIDINIT_EN ),
204 #ifdef RTE_CMSIS_DV_ETH
205 static TEST_CASE TC_List_ETH[] = {
206 TCD ( ETH_MAC_GetCapabilities, ETH_MAC_GETCAPABILITIES_EN ),
207 TCD ( ETH_MAC_Initialization, ETH_MAC_INITIALIZATION_EN ),
208 TCD ( ETH_MAC_PowerControl, ETH_MAC_POWERCONTROL_EN ),
209 TCD ( ETH_MAC_SetBusSpeed, ETH_MAC_SETBUSSPEED_EN ),
210 TCD ( ETH_MAC_Config_Mode, ETH_MAC_CONFIG_MODE_EN ),
211 TCD ( ETH_MAC_Config_CommonParams, ETH_MAC_CONFIG_COMMONPARAMS_EN ),
212 TCD ( ETH_MAC_PTP_ControlTimer, ETH_MAC_PTP_CONTROLTIMER_EN ),
213 TCD ( ETH_PHY_Initialization, ETH_PHY_INITIALIZATION_EN ),
214 TCD ( ETH_PHY_PowerControl, ETH_PHY_POWERCONTROL_EN ),
215 TCD ( ETH_PHY_Config, ETH_PHY_CONFIG_EN ),
216 TCD ( ETH_Loopback_Transfer, ETH_LOOPBACK_TRANSFER_EN ),
217 TCD ( ETH_Loopback_PTP, ETH_LOOPBACK_PTP_EN ),
218 TCD ( ETH_PHY_CheckInvalidInit, ETH_PHY_CHECKINVALIDINIT_EN ),
219 TCD ( ETH_MAC_CheckInvalidInit, ETH_MAC_CHECKINVALIDINIT_EN ),
223 #ifdef RTE_CMSIS_DV_I2C
224 static TEST_CASE TC_List_I2C[] = {
225 TCD ( I2C_GetCapabilities, I2C_GETCAPABILITIES_EN ),
226 TCD ( I2C_Initialization, I2C_INITIALIZATION_EN ),
227 TCD ( I2C_PowerControl, I2C_POWERCONTROL_EN ),
228 TCD ( I2C_SetBusSpeed, I2C_SETBUSSPEED_EN ),
229 TCD ( I2C_SetOwnAddress, I2C_SETOWNADDRESS_EN ),
230 TCD ( I2C_BusClear, I2C_BUSCLEAR_EN ),
231 TCD ( I2C_AbortTransfer, I2C_ABORTTRANSFER_EN ),
232 TCD ( I2C_CheckInvalidInit, I2C_CHECKINVALIDINIT_EN ),
236 #ifdef RTE_CMSIS_DV_MCI
237 static TEST_CASE TC_List_MCI[] = {
238 TCD ( MCI_GetCapabilities, MCI_GETCAPABILITIES_EN ),
239 TCD ( MCI_Initialization, MCI_INITIALIZATION_EN ),
240 TCD ( MCI_PowerControl, MCI_POWERCONTROL_EN ),
241 TCD ( MCI_SetBusSpeedMode, MCI_SETBUSSPEEDMODE_EN ),
242 TCD ( MCI_Config_DataWidth, MCI_CONFIG_DATAWIDTH_EN ),
243 TCD ( MCI_Config_CmdLineMode, MCI_CONFIG_CMDLINEMODE_EN ),
244 TCD ( MCI_Config_DriverStrength, MCI_CONFIG_DRIVERSTRENGTH_EN ),
245 TCD ( MCI_CheckInvalidInit, MCI_CHECKINVALIDINIT_EN ),
249 #ifdef RTE_CMSIS_DV_USBD
250 static TEST_CASE TC_List_USBD[] = {
251 TCD ( USBD_GetCapabilities, USBD_GETCAPABILITIES_EN ),
252 TCD ( USBD_Initialization, USBD_INITIALIZATION_EN ),
253 TCD ( USBD_PowerControl, USBD_POWERCONTROL_EN ),
254 TCD ( USBD_CheckInvalidInit, USBD_CHECKINVALIDINIT_EN ),
258 #ifdef RTE_CMSIS_DV_USBH
259 static TEST_CASE TC_List_USBH[] = {
260 TCD ( USBH_GetCapabilities, USBH_GETCAPABILITIES_EN ),
261 TCD ( USBH_Initialization, USBH_INITIALIZATION_EN ),
262 TCD ( USBH_PowerControl, USBH_POWERCONTROL_EN ),
263 TCD ( USBH_CheckInvalidInit, USBH_CHECKINVALIDINIT_EN ),
267 #ifdef RTE_CMSIS_DV_CAN
268 static TEST_CASE TC_List_CAN[] = {
269 TCD ( CAN_GetCapabilities, CAN_GETCAPABILITIES_EN ),
270 TCD ( CAN_Initialization, CAN_INITIALIZATION_EN ),
271 TCD ( CAN_PowerControl, CAN_POWERCONTROL_EN ),
272 TCD ( CAN_Loopback_CheckBitrate, CAN_LOOPBACK_CHECK_BR_EN ),
273 TCD ( CAN_Loopback_CheckBitrateFD, CAN_LOOPBACK_CHECK_BR_FD_EN ),
274 TCD ( CAN_Loopback_Transfer, CAN_LOOPBACK_TRANSFER_EN ),
275 TCD ( CAN_Loopback_TransferFD, CAN_LOOPBACK_TRANSFER_FD_EN ),
279 #ifdef RTE_CMSIS_DV_WIFI
280 static TEST_CASE TC_List_WiFi[] = {
281 /* WiFi Control tests */
282 #if ( WIFI_CONTROL_EN != 0)
283 TCD ( WIFI_GetVersion, WIFI_GETVERSION_EN ),
284 TCD ( WIFI_GetCapabilities, WIFI_GETCAPABILITIES_EN ),
285 TCD ( WIFI_Initialize_Uninitialize, WIFI_INIT_UNINIT_EN ),
286 TCD ( WIFI_PowerControl, WIFI_POWERCONTROL_EN ),
287 TCD ( WIFI_GetModuleInfo, WIFI_GETMODULEINFO_EN ),
289 /* WiFi Management tests */
290 #if ( WIFI_MANAGEMENT_EN != 0)
291 TCD ( WIFI_SetOption_GetOption, WIFI_SETGETOPTION_EN ),
292 TCD ( WIFI_Scan, WIFI_SCAN_EN ),
293 TCD ( WIFI_Activate_Deactivate, WIFI_ACT_DEACT_EN ),
294 TCD ( WIFI_IsConnected, WIFI_ISCONNECTED_EN ),
295 TCD ( WIFI_GetNetInfo, WIFI_GETNETINFO_EN ),
297 /* WiFi Management tests requiring user interaction */
298 #if ( WIFI_MANAGEMENT_USER_EN != 0)
299 TCD ( WIFI_Activate_AP, WIFI_ACT_AP ),
300 #if ( WIFI_WPS_USER_EN != 0)
301 TCD ( WIFI_Activate_Station_WPS_PBC, WIFI_ACT_STA_WPS_PBC ),
302 TCD ( WIFI_Activate_Station_WPS_PIN, WIFI_ACT_STA_WPS_PIN ),
303 TCD ( WIFI_Activate_AP_WPS_PBC, WIFI_ACT_AP_WPS_PBC ),
304 TCD ( WIFI_Activate_AP_WPS_PIN, WIFI_ACT_AP_WPS_PIN ),
307 /* WiFi Socket API tests */
308 #if ( WIFI_SOCKET_EN != 0)
309 TCD ( WIFI_SocketCreate, WIFI_SOCKETCREATE_EN ),
310 TCD ( WIFI_SocketBind, WIFI_SOCKETBIND_EN ),
311 TCD ( WIFI_SocketListen, WIFI_SOCKETLISTEN_EN ),
312 TCD ( WIFI_SocketAccept, WIFI_SOCKETACCEPT_EN ),
313 TCD ( WIFI_SocketConnect, WIFI_SOCKETCONNECT_EN ),
314 TCD ( WIFI_SocketRecv, WIFI_SOCKETRECV_EN ),
315 TCD ( WIFI_SocketRecvFrom, WIFI_SOCKETRECVFROM_EN ),
316 TCD ( WIFI_SocketSend, WIFI_SOCKETSEND_EN ),
317 TCD ( WIFI_SocketSendTo, WIFI_SOCKETSENDTO_EN ),
318 TCD ( WIFI_SocketGetSockName, WIFI_SOCKETGETSOCKNAME_EN ),
319 TCD ( WIFI_SocketGetPeerName, WIFI_SOCKETGETPEERNAME_EN ),
320 TCD ( WIFI_SocketGetOpt, WIFI_SOCKETGETOPT_EN ),
321 TCD ( WIFI_SocketSetOpt, WIFI_SOCKETSETOPT_EN ),
322 TCD ( WIFI_SocketClose, WIFI_SOCKETCLOSE_EN ),
323 TCD ( WIFI_SocketGetHostByName, WIFI_SOCKETGETHOSTBYNAME_EN ),
324 TCD ( WIFI_Ping, WIFI_PING_EN ),
326 /* WiFi Socket Operation tests */
327 #if ( WIFI_SOCKET_OP_EN != 0)
328 TCD ( WIFI_Transfer_Fixed, WIFI_TRANSFER_FIXED_EN ),
329 TCD ( WIFI_Transfer_Incremental, WIFI_TRANSFER_INCREMENTAL_EN ),
330 TCD ( WIFI_Send_Fragmented, WIFI_SEND_FRAGMENTED_EN ),
331 TCD ( WIFI_Recv_Fragmented, WIFI_RECV_FRAGMENTED_EN ),
332 TCD ( WIFI_Test_Speed, WIFI_TEST_SPEED_EN ),
333 TCD ( WIFI_Concurrent_Socket, WIFI_CONCURRENT_SOCKET_EN ),
334 TCD ( WIFI_Downstream_Rate, WIFI_DOWNSTREAM_RATE_EN ),
335 TCD ( WIFI_Upstream_Rate, WIFI_UPSTREAM_RATE_EN ),
340 #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
341 #pragma clang diagnostic push
342 #pragma clang diagnostic ignored "-Wdate-time"
344 /*-----------------------------------------------------------------------------
345 * Test suite description
346 *----------------------------------------------------------------------------*/
348 #ifdef RTE_CMSIS_DV_SPI /* SPI test group */
350 __FILE__, __DATE__, __TIME__,
351 "CMSIS-Driver SPI Test Report",
355 ARRAY_SIZE (TC_List_SPI),
359 #ifdef RTE_CMSIS_DV_USART /* USART test group */
361 __FILE__, __DATE__, __TIME__,
362 "CMSIS-Driver USART Test Report",
366 ARRAY_SIZE (TC_List_USART),
370 #ifdef RTE_CMSIS_DV_ETH /* ETH test group */
372 __FILE__, __DATE__, __TIME__,
373 "CMSIS-Driver ETH Test Report",
377 ARRAY_SIZE (TC_List_ETH),
381 #ifdef RTE_CMSIS_DV_I2C /* I2C test group */
383 __FILE__, __DATE__, __TIME__,
384 "CMSIS-Driver I2C (API v2.3) Test Report",
388 ARRAY_SIZE (TC_List_I2C),
392 #ifdef RTE_CMSIS_DV_MCI /* MCI test group */
394 __FILE__, __DATE__, __TIME__,
395 "CMSIS-Driver MCI Test Report",
399 ARRAY_SIZE (TC_List_MCI),
403 #ifdef RTE_CMSIS_DV_USBD /* USBD test group */
405 __FILE__, __DATE__, __TIME__,
406 "CMSIS-Driver USBD Test Report",
410 ARRAY_SIZE (TC_List_USBD),
414 #ifdef RTE_CMSIS_DV_USBH /* USBH test group */
416 __FILE__, __DATE__, __TIME__,
417 "CMSIS-Driver USBH Test Report",
421 ARRAY_SIZE (TC_List_USBH),
425 #ifdef RTE_CMSIS_DV_CAN /* CAN test group */
427 __FILE__, __DATE__, __TIME__,
428 "CMSIS-Driver CAN Test Report",
432 ARRAY_SIZE (TC_List_CAN),
436 #ifdef RTE_CMSIS_DV_WIFI /* WIFI test group */
438 __FILE__, __DATE__, __TIME__,
439 "CMSIS-Driver WiFi Test Report",
443 ARRAY_SIZE (TC_List_WiFi),
448 /* Number of test groups in suite */
449 uint32_t tg_cnt = sizeof(ts)/sizeof(ts[0]);
451 #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
452 #pragma clang diagnostic pop