]> begriffs open source - cmsis-driver-validation/blob - Source/cmsis_dv.c
Add GPIO CMSIS-Driver Validation tests (#13)
[cmsis-driver-validation] / Source / cmsis_dv.c
1 /*
2  * Copyright (c) 2015-2023 Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
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
9  *
10  * www.apache.org/licenses/LICENSE-2.0
11  *
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.
17  *
18  * -----------------------------------------------------------------------------
19  *
20  * Project:     CMSIS-Driver Validation
21  * Title:       Tests definitions
22  *
23  * -----------------------------------------------------------------------------
24  */
25
26 #include "cmsis_dv.h"
27 #ifdef  RTE_CMSIS_DV_GPIO
28 #include "DV_GPIO_Config.h"
29 #endif
30 #ifdef  RTE_CMSIS_DV_SPI
31 #include "DV_SPI_Config.h"
32 #endif
33 #ifdef  RTE_CMSIS_DV_USART
34 #include "DV_USART_Config.h"
35 #endif
36 #ifdef  RTE_CMSIS_DV_ETH
37 #include "DV_ETH_Config.h"
38 #endif
39 #ifdef  RTE_CMSIS_DV_I2C
40 #include "DV_I2C_Config.h"
41 #endif
42 #ifdef  RTE_CMSIS_DV_MCI
43 #include "DV_MCI_Config.h"
44 #endif
45 #ifdef  RTE_CMSIS_DV_USBD
46 #include "DV_USBD_Config.h"
47 #endif
48 #ifdef  RTE_CMSIS_DV_USBH
49 #include "DV_USBH_Config.h"
50 #endif
51 #ifdef  RTE_CMSIS_DV_CAN
52 #include "DV_CAN_Config.h"
53 #endif
54 #ifdef  RTE_CMSIS_DV_WIFI
55 #include "DV_WiFi_Config.h"
56 #endif
57 #include "DV_Framework.h"
58
59 /*-----------------------------------------------------------------------------
60  *      Init/Uninit test suite
61  *----------------------------------------------------------------------------*/
62 #ifdef  RTE_CMSIS_DV_SPI
63 static void TS_Init_SPI (void) {
64   SPI_DV_Initialize ();
65 }
66 static void TS_Uninit_SPI (void) {
67   SPI_DV_Uninitialize ();
68 }
69 #endif
70 #ifdef  RTE_CMSIS_DV_USART
71 static void TS_Init_USART (void) {
72   USART_DV_Initialize ();
73 }
74 static void TS_Uninit_USART (void) {
75   USART_DV_Uninitialize ();
76 }
77 #endif
78 #ifdef  RTE_CMSIS_DV_ETH
79 static void TS_Init_ETH (void) {
80   ETH_DV_Initialize ();
81 }
82 static void TS_Uninit_ETH (void) {
83   ETH_DV_Uninitialize ();
84 }
85 #endif
86 #ifdef  RTE_CMSIS_DV_WIFI
87 static void TS_Init_WiFi (void) {
88   WIFI_DV_Initialize ();
89 }
90 static void TS_Uninit_WiFi (void) {
91   WIFI_DV_Uninitialize ();
92 }
93 #endif
94
95 /*-----------------------------------------------------------------------------
96  *      Tests list
97  *----------------------------------------------------------------------------*/
98 #ifdef  RTE_CMSIS_DV_SPI
99 static TEST_CASE TC_List_SPI[] = {
100   #if ( SPI_TG_DRIVER_MANAGEMENT_EN != 0 )
101   TCD ( SPI_GetVersion,                 SPI_TC_GET_VERSION_EN           ),
102   TCD ( SPI_GetCapabilities,            SPI_TC_GET_CAPABILITIES_EN      ),
103   TCD ( SPI_Initialize_Uninitialize,    SPI_TC_INIT_UNINIT_EN           ),
104   TCD ( SPI_PowerControl,               SPI_TC_POWER_CONTROL_EN         ),
105   #endif
106   #if ( SPI_TG_DATA_EXCHANGE_EN != 0 )
107   #if ( SPI_TG_MODE_EN != 0 )
108   TCD ( SPI_Mode_Master_SS_Unused,      SPI_TC_MASTER_UNUSED_EN         ),
109   TCD ( SPI_Mode_Master_SS_Sw_Ctrl,     SPI_TC_MASTER_SW_EN             ),
110   TCD ( SPI_Mode_Master_SS_Hw_Ctrl_Out, SPI_TC_MASTER_HW_OUT_EN         ),
111   TCD ( SPI_Mode_Master_SS_Hw_Mon_In,   SPI_TC_MASTER_HW_IN_EN          ),
112   TCD ( SPI_Mode_Slave_SS_Hw_Mon,       SPI_TC_SLAVE_HW_EN              ),
113   TCD ( SPI_Mode_Slave_SS_Sw_Ctrl,      SPI_TC_SLAVE_SW_EN              ),
114   #endif
115   #if ( SPI_TG_FORMAT_EN != 0 )
116   TCD ( SPI_Format_Clock_Pol0_Pha0,     SPI_TC_FORMAT_POL0_PHA0_EN      ),
117   TCD ( SPI_Format_Clock_Pol0_Pha1,     SPI_TC_FORMAT_POL0_PHA1_EN      ),
118   TCD ( SPI_Format_Clock_Pol1_Pha0,     SPI_TC_FORMAT_POL1_PHA0_EN      ),
119   TCD ( SPI_Format_Clock_Pol1_Pha1,     SPI_TC_FORMAT_POL1_PHA1_EN      ),
120   TCD ( SPI_Format_Frame_TI,            SPI_TC_FORMAT_TI_EN             ),
121   TCD ( SPI_Format_Clock_Microwire,     SPI_TC_FORMAT_MICROWIRE_EN      ),
122   #endif
123   #if ( SPI_TG_DATA_BIT_EN != 0 )
124   TCD ( SPI_Data_Bits_1,               (SPI_TC_DATA_BIT_EN_MASK      )&1),
125   TCD ( SPI_Data_Bits_2,               (SPI_TC_DATA_BIT_EN_MASK >>  1)&1),
126   TCD ( SPI_Data_Bits_3,               (SPI_TC_DATA_BIT_EN_MASK >>  2)&1),
127   TCD ( SPI_Data_Bits_4,               (SPI_TC_DATA_BIT_EN_MASK >>  3)&1),
128   TCD ( SPI_Data_Bits_5,               (SPI_TC_DATA_BIT_EN_MASK >>  4)&1),
129   TCD ( SPI_Data_Bits_6,               (SPI_TC_DATA_BIT_EN_MASK >>  5)&1),
130   TCD ( SPI_Data_Bits_7,               (SPI_TC_DATA_BIT_EN_MASK >>  6)&1),
131   TCD ( SPI_Data_Bits_8,               (SPI_TC_DATA_BIT_EN_MASK >>  7)&1),
132   TCD ( SPI_Data_Bits_9,               (SPI_TC_DATA_BIT_EN_MASK >>  8)&1),
133   TCD ( SPI_Data_Bits_10,              (SPI_TC_DATA_BIT_EN_MASK >>  9)&1),
134   TCD ( SPI_Data_Bits_11,              (SPI_TC_DATA_BIT_EN_MASK >> 10)&1),
135   TCD ( SPI_Data_Bits_12,              (SPI_TC_DATA_BIT_EN_MASK >> 11)&1),
136   TCD ( SPI_Data_Bits_13,              (SPI_TC_DATA_BIT_EN_MASK >> 12)&1),
137   TCD ( SPI_Data_Bits_14,              (SPI_TC_DATA_BIT_EN_MASK >> 13)&1),
138   TCD ( SPI_Data_Bits_15,              (SPI_TC_DATA_BIT_EN_MASK >> 14)&1),
139   TCD ( SPI_Data_Bits_16,              (SPI_TC_DATA_BIT_EN_MASK >> 15)&1),
140   TCD ( SPI_Data_Bits_17,              (SPI_TC_DATA_BIT_EN_MASK >> 16)&1),
141   TCD ( SPI_Data_Bits_18,              (SPI_TC_DATA_BIT_EN_MASK >> 17)&1),
142   TCD ( SPI_Data_Bits_19,              (SPI_TC_DATA_BIT_EN_MASK >> 18)&1),
143   TCD ( SPI_Data_Bits_20,              (SPI_TC_DATA_BIT_EN_MASK >> 19)&1),
144   TCD ( SPI_Data_Bits_21,              (SPI_TC_DATA_BIT_EN_MASK >> 20)&1),
145   TCD ( SPI_Data_Bits_22,              (SPI_TC_DATA_BIT_EN_MASK >> 21)&1),
146   TCD ( SPI_Data_Bits_23,              (SPI_TC_DATA_BIT_EN_MASK >> 22)&1),
147   TCD ( SPI_Data_Bits_24,              (SPI_TC_DATA_BIT_EN_MASK >> 23)&1),
148   TCD ( SPI_Data_Bits_25,              (SPI_TC_DATA_BIT_EN_MASK >> 24)&1),
149   TCD ( SPI_Data_Bits_26,              (SPI_TC_DATA_BIT_EN_MASK >> 25)&1),
150   TCD ( SPI_Data_Bits_27,              (SPI_TC_DATA_BIT_EN_MASK >> 26)&1),
151   TCD ( SPI_Data_Bits_28,              (SPI_TC_DATA_BIT_EN_MASK >> 27)&1),
152   TCD ( SPI_Data_Bits_29,              (SPI_TC_DATA_BIT_EN_MASK >> 28)&1),
153   TCD ( SPI_Data_Bits_30,              (SPI_TC_DATA_BIT_EN_MASK >> 29)&1),
154   TCD ( SPI_Data_Bits_31,              (SPI_TC_DATA_BIT_EN_MASK >> 30)&1),
155   TCD ( SPI_Data_Bits_32,              (SPI_TC_DATA_BIT_EN_MASK >> 31)&1),
156   #endif
157   #if ( SPI_TG_BIT_ORDER_EN != 0 )
158   TCD ( SPI_Bit_Order_MSB_LSB,          SPI_TC_BIT_ORDER_MSB_LSB_EN     ),
159   TCD ( SPI_Bit_Order_LSB_MSB,          SPI_TC_BIT_ORDER_LSB_MSB_EN     ),
160   #endif
161   #if ( SPI_TG_BUS_SPEED_EN != 0 )
162   TCD ( SPI_Bus_Speed_Min,              SPI_TC_BUS_SPEED_MIN_EN         ),
163   TCD ( SPI_Bus_Speed_Max,              SPI_TC_BUS_SPEED_MAX_EN         ),
164   #endif
165   #if ( SPI_TG_OTHER_EN != 0 )
166   TCD ( SPI_Number_Of_Items,            SPI_TC_NUMBER_OF_ITEMS_EN       ),
167   TCD ( SPI_GetDataCount,               SPI_TC_GET_DATA_COUNT_EN        ),
168   TCD ( SPI_Abort,                      SPI_TC_ABORT_EN                 ),
169   #endif
170   #endif
171   #if ( SPI_TG_EVENT_EN != 0 )
172   TCD ( SPI_DataLost,                   SPI_TC_DATA_LOST_EN             ),
173   TCD ( SPI_ModeFault,                  SPI_TC_MODE_FAULT_EN            ),
174   #endif
175 };
176 #endif
177
178 #ifdef  RTE_CMSIS_DV_USART
179 static TEST_CASE TC_List_USART[] = {
180   #if ( USART_TG_DRIVER_MANAGEMENT_EN != 0 )
181   TCD ( USART_GetVersion,               USART_TC_GET_VERSION_EN         ),
182   TCD ( USART_GetCapabilities,          USART_TC_GET_CAPABILITIES_EN    ),
183   TCD ( USART_Initialize_Uninitialize,  USART_TC_INIT_UNINIT_EN         ),
184   TCD ( USART_PowerControl,             USART_TC_POWER_CONTROL_EN       ),
185   #endif
186   #if ( USART_TG_DATA_EXCHANGE_EN != 0 )
187   #if ( USART_TG_MODE_EN != 0 )
188   TCD ( USART_Mode_Asynchronous,        USART_TC_ASYNC_EN               ),
189   TCD ( USART_Mode_Synchronous_Master,  USART_TC_SYNC_MASTER_EN         ),
190   TCD ( USART_Mode_Synchronous_Slave,   USART_TC_SYNC_SLAVE_EN          ),
191   TCD ( USART_Mode_Single_Wire,         USART_TC_SINGLE_WIRE_EN         ),
192   TCD ( USART_Mode_IrDA,                USART_TC_IRDA_EN                ),
193   #endif
194   #if ( USART_TG_DATA_BITS_EN != 0 )
195   TCD ( USART_Data_Bits_5,              USART_TC_DATA_BITS_5_EN         ),
196   TCD ( USART_Data_Bits_6,              USART_TC_DATA_BITS_6_EN         ),
197   TCD ( USART_Data_Bits_7,              USART_TC_DATA_BITS_7_EN         ),
198   TCD ( USART_Data_Bits_8,              USART_TC_DATA_BITS_8_EN         ),
199   TCD ( USART_Data_Bits_9,              USART_TC_DATA_BITS_9_EN         ),
200   #endif
201   #if ( USART_TG_PARITY_EN != 0 )
202   TCD ( USART_Parity_None,              USART_TC_PARITY_NONE_EN         ),
203   TCD ( USART_Parity_Even,              USART_TC_PARITY_EVEN_EN         ),
204   TCD ( USART_Parity_Odd,               USART_TC_PARITY_ODD_EN          ),
205   #endif
206   #if ( USART_TG_STOP_BITS_EN != 0 )
207   TCD ( USART_Stop_Bits_1,              USART_TC_STOP_BITS_1_EN         ),
208   TCD ( USART_Stop_Bits_2,              USART_TC_STOP_BITS_2_EN         ),
209   TCD ( USART_Stop_Bits_1_5,            USART_TC_STOP_BITS_1_5_EN       ),
210   TCD ( USART_Stop_Bits_0_5,            USART_TC_STOP_BITS_0_5_EN       ),
211   #endif
212   #if ( USART_TG_FLOW_CTRL_EN != 0)
213   TCD ( USART_Flow_Control_None,        USART_TC_FLOW_CTRL_NONE_EN      ),
214   TCD ( USART_Flow_Control_RTS,         USART_TC_FLOW_CTRL_RTS_EN       ),
215   TCD ( USART_Flow_Control_CTS,         USART_TC_FLOW_CTRL_CTS_EN       ),
216   TCD ( USART_Flow_Control_RTS_CTS,     USART_TC_FLOW_CTRL_RTS_CTS_EN   ),
217   #endif
218   #if ( USART_TG_CLOCK_EN != 0)
219   TCD ( USART_Clock_Pol0_Pha0,          USART_TC_CLOCK_POL0_PHA0_EN     ),
220   TCD ( USART_Clock_Pol0_Pha1,          USART_TC_CLOCK_POL0_PHA1_EN     ),
221   TCD ( USART_Clock_Pol1_Pha0,          USART_TC_CLOCK_POL1_PHA1_EN     ),
222   TCD ( USART_Clock_Pol1_Pha1,          USART_TC_CLOCK_POL1_PHA1_EN     ),
223   #endif
224   #if ( USART_TG_BAUDRATE_EN != 0)
225   TCD ( USART_Baudrate_Min,             USART_TC_BAUDRATE_MIN_EN        ),
226   TCD ( USART_Baudrate_Max,             USART_TC_BAUDRATE_MAX_EN        ),
227   #endif
228   #if ( USART_TG_OTHER_EN != 0)
229   TCD ( USART_Number_Of_Items,          USART_TC_NUMBER_OF_ITEMS_EN     ),
230   TCD ( USART_GetTxCount,               USART_TC_GET_TX_COUNT_EN        ),
231   TCD ( USART_GetRxCount,               USART_TC_GET_RX_COUNT_EN        ),
232   TCD ( USART_GetTxRxCount,             USART_TC_GET_TX_RX_COUNT_EN     ),
233   TCD ( USART_AbortSend,                USART_TC_ABORT_SEND_EN          ),
234   TCD ( USART_AbortReceive,             USART_TC_ABORT_RECEIVE_EN       ),
235   TCD ( USART_AbortTransfer,            USART_TC_ABORT_TRANSFER_EN      ),
236   TCD ( USART_TxBreak,                  USART_TC_TX_BREAK_EN            ),
237   #endif
238   #endif
239   #if ( USART_TG_MODEM_EN != 0 )
240   TCD ( USART_Modem_RTS,                USART_TC_MODEM_RTS_EN           ),
241   TCD ( USART_Modem_DTR,                USART_TC_MODEM_DTR_EN           ),
242   TCD ( USART_Modem_CTS,                USART_TC_MODEM_CTS_EN           ),
243   TCD ( USART_Modem_DSR,                USART_TC_MODEM_DSR_EN           ),
244   TCD ( USART_Modem_DCD,                USART_TC_MODEM_DCD_EN           ),
245   TCD ( USART_Modem_RI,                 USART_TC_MODEM_RI_EN            ),
246   #endif
247   #if ( USART_TG_EVENT_EN != 0 )
248   TCD ( USART_Tx_Underflow,             USART_TC_TX_UNDERFLOW_EN        ),
249   TCD ( USART_Rx_Overflow,              USART_TC_RX_OVERFLOW_EN         ),
250   TCD ( USART_Rx_Timeout,               USART_TC_RX_TIMEOUT_EN          ),
251   TCD ( USART_Rx_Break,                 USART_TC_RX_BREAK_EN            ),
252   TCD ( USART_Rx_Framing_Error,         USART_TC_RX_FRAMING_ERROR_EN    ),
253   TCD ( USART_Rx_Parity_Error,          USART_TC_RX_PARITY_ERROR_EN     ),
254   TCD ( USART_Event_CTS,                USART_TC_EVENT_CTS_EN           ),
255   TCD ( USART_Event_DSR,                USART_TC_EVENT_DSR_EN           ),
256   TCD ( USART_Event_DCD,                USART_TC_EVENT_DCD_EN           ),
257   TCD ( USART_Event_RI,                 USART_TC_EVENT_RI_EN            ),
258   #endif
259 };
260 #endif
261
262 #ifdef  RTE_CMSIS_DV_ETH
263 static TEST_CASE TC_List_ETH[] = {
264   TCD ( ETH_MAC_GetVersion,             ETH_MAC_GET_VERSION_EN          ),
265   TCD ( ETH_MAC_GetCapabilities,        ETH_MAC_GET_CAPABILITIES_EN     ),
266   TCD ( ETH_MAC_Initialization,         ETH_MAC_INITIALIZATION_EN       ),
267   TCD ( ETH_MAC_PowerControl,           ETH_MAC_POWER_CONTROL_EN        ),
268   TCD ( ETH_MAC_MacAddress,             ETH_MAC_MAC_ADDRESS_EN          ),
269   TCD ( ETH_MAC_SetBusSpeed,            ETH_MAC_SET_BUS_SPEED_EN        ),
270   TCD ( ETH_MAC_Config_Mode,            ETH_MAC_CONFIG_MODE_EN          ),
271   TCD ( ETH_MAC_Config_CommonParams,    ETH_MAC_CONFIG_COMMON_PARAMS_EN ),
272   TCD ( ETH_MAC_Control_Filtering,      ETH_MAC_CONTROL_FILTERING_EN    ),
273   TCD ( ETH_MAC_SetAddressFilter,       ETH_MAC_SET_ADDRESS_FILTER_EN   ),
274   TCD ( ETH_MAC_SignalEvent,            ETH_MAC_SIGNAL_EVENT_EN         ),
275   TCD ( ETH_MAC_PTP_ControlTimer,       ETH_MAC_PTP_CONTROL_TIMER_EN    ),
276   TCD ( ETH_MAC_CheckInvalidInit,       ETH_MAC_CHECK_INVALID_INIT_EN   ),
277   TCD ( ETH_PHY_GetVersion,             ETH_PHY_GET_VERSION_EN          ),
278   TCD ( ETH_PHY_Initialization,         ETH_PHY_INITIALIZATION_EN       ),
279   TCD ( ETH_PHY_PowerControl,           ETH_PHY_POWER_CONTROL_EN        ),
280   TCD ( ETH_PHY_Config,                 ETH_PHY_CONFIG_EN               ),
281   TCD ( ETH_PHY_CheckInvalidInit,       ETH_PHY_CHECK_INVALID_INIT_EN   ),
282   TCD ( ETH_Loopback_Transfer,          ETH_LOOPBACK_TRANSFER_EN        ),
283   TCD ( ETH_Loopback_PTP,               ETH_LOOPBACK_PTP_EN             ),
284   TCD ( ETH_Loopback_External,          ETH_LOOPBACK_EXTERNAL_EN        ),
285 };
286 #endif
287
288 #ifdef  RTE_CMSIS_DV_I2C
289 static TEST_CASE TC_List_I2C[] = {
290   TCD ( I2C_GetCapabilities,            I2C_GETCAPABILITIES_EN          ),
291   TCD ( I2C_Initialization,             I2C_INITIALIZATION_EN           ),
292   TCD ( I2C_PowerControl,               I2C_POWERCONTROL_EN             ),
293   TCD ( I2C_SetBusSpeed,                I2C_SETBUSSPEED_EN              ),
294   TCD ( I2C_SetOwnAddress,              I2C_SETOWNADDRESS_EN            ),
295   TCD ( I2C_BusClear,                   I2C_BUSCLEAR_EN                 ),
296   TCD ( I2C_AbortTransfer,              I2C_ABORTTRANSFER_EN            ),
297   TCD ( I2C_CheckInvalidInit,           I2C_CHECKINVALIDINIT_EN         ),
298 };
299 #endif
300
301 #ifdef  RTE_CMSIS_DV_MCI
302 static TEST_CASE TC_List_MCI[] = {
303   TCD ( MCI_GetCapabilities,            MCI_GETCAPABILITIES_EN          ),
304   TCD ( MCI_Initialization,             MCI_INITIALIZATION_EN           ),
305   TCD ( MCI_PowerControl,               MCI_POWERCONTROL_EN             ),
306   TCD ( MCI_SetBusSpeedMode,            MCI_SETBUSSPEEDMODE_EN          ),
307   TCD ( MCI_Config_DataWidth,           MCI_CONFIG_DATAWIDTH_EN         ),
308   TCD ( MCI_Config_CmdLineMode,         MCI_CONFIG_CMDLINEMODE_EN       ),
309   TCD ( MCI_Config_DriverStrength,      MCI_CONFIG_DRIVERSTRENGTH_EN    ),
310   TCD ( MCI_CheckInvalidInit,           MCI_CHECKINVALIDINIT_EN         ),
311 };
312 #endif
313
314 #ifdef  RTE_CMSIS_DV_USBD
315 static TEST_CASE TC_List_USBD[] = {
316   TCD ( USBD_GetCapabilities,           USBD_GETCAPABILITIES_EN         ),
317   TCD ( USBD_Initialization,            USBD_INITIALIZATION_EN          ),
318   TCD ( USBD_PowerControl,              USBD_POWERCONTROL_EN            ),
319   TCD ( USBD_CheckInvalidInit,          USBD_CHECKINVALIDINIT_EN        ),
320 };
321 #endif
322
323 #ifdef  RTE_CMSIS_DV_USBH
324 static TEST_CASE TC_List_USBH[] = {
325   TCD ( USBH_GetCapabilities,           USBH_GETCAPABILITIES_EN         ),
326   TCD ( USBH_Initialization,            USBH_INITIALIZATION_EN          ),
327   TCD ( USBH_PowerControl,              USBH_POWERCONTROL_EN            ),
328   TCD ( USBH_CheckInvalidInit,          USBH_CHECKINVALIDINIT_EN        ),
329 };
330 #endif
331
332 #ifdef  RTE_CMSIS_DV_CAN
333 static TEST_CASE TC_List_CAN[] = {
334   TCD ( CAN_GetCapabilities,            CAN_GETCAPABILITIES_EN          ),
335   TCD ( CAN_Initialization,             CAN_INITIALIZATION_EN           ),
336   TCD ( CAN_PowerControl,               CAN_POWERCONTROL_EN             ),
337   TCD ( CAN_Loopback_CheckBitrate,      CAN_LOOPBACK_CHECK_BR_EN        ),
338   TCD ( CAN_Loopback_CheckBitrateFD,    CAN_LOOPBACK_CHECK_BR_FD_EN     ),
339   TCD ( CAN_Loopback_Transfer,          CAN_LOOPBACK_TRANSFER_EN        ),
340   TCD ( CAN_Loopback_TransferFD,        CAN_LOOPBACK_TRANSFER_FD_EN     ),
341 };
342 #endif
343
344 #ifdef  RTE_CMSIS_DV_WIFI
345 static TEST_CASE TC_List_WiFi[] = {
346   /*    WiFi Control tests */
347   #if ( WIFI_CONTROL_EN != 0)
348   TCD ( WIFI_GetVersion,                WIFI_GETVERSION_EN              ),
349   TCD ( WIFI_GetCapabilities,           WIFI_GETCAPABILITIES_EN         ),
350   TCD ( WIFI_Initialize_Uninitialize,   WIFI_INIT_UNINIT_EN             ),
351   TCD ( WIFI_PowerControl,              WIFI_POWERCONTROL_EN            ),
352   TCD ( WIFI_GetModuleInfo,             WIFI_GETMODULEINFO_EN           ),
353   #endif
354   /*    WiFi Management tests */
355   #if ( WIFI_MANAGEMENT_EN != 0)
356   TCD ( WIFI_SetOption_GetOption,       WIFI_SETGETOPTION_EN            ),
357   TCD ( WIFI_Scan,                      WIFI_SCAN_EN                    ),
358   TCD ( WIFI_Activate_Deactivate,       WIFI_ACT_DEACT_EN               ),
359   TCD ( WIFI_IsConnected,               WIFI_ISCONNECTED_EN             ),
360   TCD ( WIFI_GetNetInfo,                WIFI_GETNETINFO_EN              ),
361   #endif
362   /*    WiFi Management tests requiring user interaction */
363   #if ( WIFI_MANAGEMENT_USER_EN != 0)
364   TCD ( WIFI_Activate_AP,               WIFI_ACT_AP                     ),
365   #if ( WIFI_WPS_USER_EN != 0)
366   TCD ( WIFI_Activate_Station_WPS_PBC,  WIFI_ACT_STA_WPS_PBC            ),
367   TCD ( WIFI_Activate_Station_WPS_PIN,  WIFI_ACT_STA_WPS_PIN            ),
368   TCD ( WIFI_Activate_AP_WPS_PBC,       WIFI_ACT_AP_WPS_PBC             ),
369   TCD ( WIFI_Activate_AP_WPS_PIN,       WIFI_ACT_AP_WPS_PIN             ),
370   #endif
371   #endif
372   /*    WiFi Socket API tests */
373   #if ( WIFI_SOCKET_EN != 0)
374   TCD ( WIFI_SocketCreate,              WIFI_SOCKETCREATE_EN            ),
375   TCD ( WIFI_SocketBind,                WIFI_SOCKETBIND_EN              ),
376   TCD ( WIFI_SocketListen,              WIFI_SOCKETLISTEN_EN            ),
377   TCD ( WIFI_SocketAccept,              WIFI_SOCKETACCEPT_EN            ),
378   TCD ( WIFI_SocketAccept_nbio,         WIFI_SOCKETACCEPT_NBIO_EN       ),
379   TCD ( WIFI_SocketConnect,             WIFI_SOCKETCONNECT_EN           ),
380   TCD ( WIFI_SocketConnect_nbio,        WIFI_SOCKETCONNECT_NBIO_EN      ),
381   TCD ( WIFI_SocketRecv,                WIFI_SOCKETRECV_EN              ),
382   TCD ( WIFI_SocketRecv_nbio,           WIFI_SOCKETRECV_NBIO_EN         ),
383   TCD ( WIFI_SocketRecvFrom,            WIFI_SOCKETRECVFROM_EN          ),
384   TCD ( WIFI_SocketRecvFrom_nbio,       WIFI_SOCKETRECVFROM_NBIO_EN     ),
385   TCD ( WIFI_SocketSend,                WIFI_SOCKETSEND_EN              ),
386   TCD ( WIFI_SocketSendTo,              WIFI_SOCKETSENDTO_EN            ),
387   TCD ( WIFI_SocketGetSockName,         WIFI_SOCKETGETSOCKNAME_EN       ),
388   TCD ( WIFI_SocketGetPeerName,         WIFI_SOCKETGETPEERNAME_EN       ),
389   TCD ( WIFI_SocketGetOpt,              WIFI_SOCKETGETOPT_EN            ),
390   TCD ( WIFI_SocketSetOpt,              WIFI_SOCKETSETOPT_EN            ),
391   TCD ( WIFI_SocketClose,               WIFI_SOCKETCLOSE_EN             ),
392   TCD ( WIFI_SocketGetHostByName,       WIFI_SOCKETGETHOSTBYNAME_EN     ),
393   TCD ( WIFI_Ping,                      WIFI_PING_EN                    ),
394   #endif
395   /*    WiFi Socket Operation tests */
396   #if ( WIFI_SOCKET_OP_EN != 0)
397   TCD ( WIFI_Transfer_Fixed,            WIFI_TRANSFER_FIXED_EN          ),
398   TCD ( WIFI_Transfer_Incremental,      WIFI_TRANSFER_INCREMENTAL_EN    ),
399   TCD ( WIFI_Send_Fragmented,           WIFI_SEND_FRAGMENTED_EN         ),
400   TCD ( WIFI_Recv_Fragmented,           WIFI_RECV_FRAGMENTED_EN         ),
401   TCD ( WIFI_Test_Speed,                WIFI_TEST_SPEED_EN              ),
402   TCD ( WIFI_Concurrent_Socket,         WIFI_CONCURRENT_SOCKET_EN       ),
403   TCD ( WIFI_Downstream_Rate,           WIFI_DOWNSTREAM_RATE_EN         ),
404   TCD ( WIFI_Upstream_Rate,             WIFI_UPSTREAM_RATE_EN           ),
405   #endif
406 };
407 #endif
408
409 #ifdef  RTE_CMSIS_DV_GPIO
410 static TEST_CASE TC_List_GPIO[] = {
411   TCD ( GPIO_Setup,                     GPIO_TC_SETUP_EN                ),
412   TCD ( GPIO_SetDirection,              GPIO_TC_SET_DIRECTION_EN        ),
413   TCD ( GPIO_SetOutputMode,             GPIO_TC_SET_OUTPUT_MODE_EN      ),
414   TCD ( GPIO_SetPullResistor,           GPIO_TC_SET_PULL_RESISTOR_EN    ),
415   TCD ( GPIO_SetEventTrigger,           GPIO_TC_SET_EVENT_TRIGGER_EN    ),
416   TCD ( GPIO_SetOutput,                 GPIO_TC_SET_OUTPUT_EN           ),
417   TCD ( GPIO_GetInput,                  GPIO_TC_GET_INPUT_EN            )
418 };
419 #endif
420
421 #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
422 #pragma clang diagnostic push
423 #pragma clang diagnostic ignored "-Wdate-time"
424 #endif
425 /*-----------------------------------------------------------------------------
426  *      Test suite description
427  *----------------------------------------------------------------------------*/
428 TEST_GROUP ts[] = {
429 #ifdef  RTE_CMSIS_DV_SPI                /* SPI test group                     */
430 {
431   __FILE__, __DATE__, __TIME__,
432   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver SPI Test Report",
433   TS_Init_SPI,
434   TS_Uninit_SPI,
435   TC_List_SPI,
436   ARRAY_SIZE (TC_List_SPI),
437 },
438 #endif
439
440 #ifdef  RTE_CMSIS_DV_USART              /* USART test group                   */
441 {
442   __FILE__, __DATE__, __TIME__,
443   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver USART Test Report",
444   TS_Init_USART,
445   TS_Uninit_USART,
446   TC_List_USART,
447   ARRAY_SIZE (TC_List_USART),
448 },
449 #endif
450
451 #ifdef  RTE_CMSIS_DV_ETH                /* ETH test group                     */
452 {
453   __FILE__, __DATE__, __TIME__,
454   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver ETH Test Report",
455   TS_Init_ETH,
456   TS_Uninit_ETH,
457   TC_List_ETH,
458   ARRAY_SIZE (TC_List_ETH),
459 },
460 #endif
461
462 #ifdef  RTE_CMSIS_DV_I2C                /* I2C test group                     */
463 {
464   __FILE__, __DATE__, __TIME__,
465   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver I2C (API v2.3) Test Report",
466   NULL,
467   NULL,
468   TC_List_I2C,
469   ARRAY_SIZE (TC_List_I2C),
470 },
471 #endif
472
473 #ifdef  RTE_CMSIS_DV_MCI                /* MCI test group                     */
474 {
475   __FILE__, __DATE__, __TIME__,
476   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver MCI Test Report",
477   NULL,
478   NULL,
479   TC_List_MCI,
480   ARRAY_SIZE (TC_List_MCI),
481 },
482 #endif
483
484 #ifdef  RTE_CMSIS_DV_USBD               /* USBD test group                    */
485 {
486   __FILE__, __DATE__, __TIME__,
487   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver USBD Test Report",
488   NULL,
489   NULL,
490   TC_List_USBD,
491   ARRAY_SIZE (TC_List_USBD),
492 },
493 #endif
494
495 #ifdef  RTE_CMSIS_DV_USBH               /* USBH test group                    */
496 {
497   __FILE__, __DATE__, __TIME__,
498   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver USBH Test Report",
499   NULL,
500   NULL,
501   TC_List_USBH,
502   ARRAY_SIZE (TC_List_USBH),
503 },
504 #endif
505
506 #ifdef  RTE_CMSIS_DV_CAN                /* CAN test group                    */
507 {
508   __FILE__, __DATE__, __TIME__,
509   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver CAN Test Report",
510   NULL,
511   NULL,
512   TC_List_CAN,
513   ARRAY_SIZE (TC_List_CAN),
514 },
515 #endif
516
517 #ifdef  RTE_CMSIS_DV_WIFI               /* WIFI test group                    */
518 {
519   __FILE__, __DATE__, __TIME__,
520   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver WiFi Test Report",
521   TS_Init_WiFi,
522   TS_Uninit_WiFi,
523   TC_List_WiFi,
524   ARRAY_SIZE (TC_List_WiFi),
525 },
526 #endif
527
528 #ifdef  RTE_CMSIS_DV_GPIO               /* GPIO test group                    */
529 {
530   __FILE__, __DATE__, __TIME__,
531   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver GPIO Test Report",
532   NULL,
533   NULL,
534   TC_List_GPIO,
535   ARRAY_SIZE (TC_List_GPIO),
536 },
537 #endif
538 };
539
540 /* Number of test groups in suite */
541 uint32_t tg_cnt = sizeof(ts)/sizeof(ts[0]);
542
543 #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
544 #pragma clang diagnostic pop
545 #endif