]> begriffs open source - cmsis-driver-validation/blob - Source/cmsis_dv.c
Update GitHub Actions runner to ubuntu-22.04 (#18)
[cmsis-driver-validation] / Source / cmsis_dv.c
1 /*
2  * Copyright (c) 2015-2025 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   #ifdef ETH_MAC_VLAN_FILTER_EN
275   TCD ( ETH_MAC_VLAN_Filter,            ETH_MAC_VLAN_FILTER_EN          ),
276   #endif
277   TCD ( ETH_MAC_SignalEvent,            ETH_MAC_SIGNAL_EVENT_EN         ),
278   TCD ( ETH_MAC_PTP_ControlTimer,       ETH_MAC_PTP_CONTROL_TIMER_EN    ),
279   TCD ( ETH_MAC_CheckInvalidInit,       ETH_MAC_CHECK_INVALID_INIT_EN   ),
280   TCD ( ETH_PHY_GetVersion,             ETH_PHY_GET_VERSION_EN          ),
281   TCD ( ETH_PHY_Initialization,         ETH_PHY_INITIALIZATION_EN       ),
282   TCD ( ETH_PHY_PowerControl,           ETH_PHY_POWER_CONTROL_EN        ),
283   TCD ( ETH_PHY_Config,                 ETH_PHY_CONFIG_EN               ),
284   TCD ( ETH_PHY_CheckInvalidInit,       ETH_PHY_CHECK_INVALID_INIT_EN   ),
285   TCD ( ETH_Loopback_Transfer,          ETH_LOOPBACK_TRANSFER_EN        ),
286   TCD ( ETH_Loopback_PTP,               ETH_LOOPBACK_PTP_EN             ),
287   TCD ( ETH_Loopback_External,          ETH_LOOPBACK_EXTERNAL_EN        ),
288 };
289 #endif
290
291 #ifdef  RTE_CMSIS_DV_I2C
292 static TEST_CASE TC_List_I2C[] = {
293   TCD ( I2C_GetCapabilities,            I2C_GETCAPABILITIES_EN          ),
294   TCD ( I2C_Initialization,             I2C_INITIALIZATION_EN           ),
295   TCD ( I2C_PowerControl,               I2C_POWERCONTROL_EN             ),
296   TCD ( I2C_SetBusSpeed,                I2C_SETBUSSPEED_EN              ),
297   TCD ( I2C_SetOwnAddress,              I2C_SETOWNADDRESS_EN            ),
298   TCD ( I2C_BusClear,                   I2C_BUSCLEAR_EN                 ),
299   TCD ( I2C_AbortTransfer,              I2C_ABORTTRANSFER_EN            ),
300   TCD ( I2C_CheckInvalidInit,           I2C_CHECKINVALIDINIT_EN         ),
301 };
302 #endif
303
304 #ifdef  RTE_CMSIS_DV_MCI
305 static TEST_CASE TC_List_MCI[] = {
306   TCD ( MCI_GetCapabilities,            MCI_GETCAPABILITIES_EN          ),
307   TCD ( MCI_Initialization,             MCI_INITIALIZATION_EN           ),
308   TCD ( MCI_PowerControl,               MCI_POWERCONTROL_EN             ),
309   TCD ( MCI_SetBusSpeedMode,            MCI_SETBUSSPEEDMODE_EN          ),
310   TCD ( MCI_Config_DataWidth,           MCI_CONFIG_DATAWIDTH_EN         ),
311   TCD ( MCI_Config_CmdLineMode,         MCI_CONFIG_CMDLINEMODE_EN       ),
312   TCD ( MCI_Config_DriverStrength,      MCI_CONFIG_DRIVERSTRENGTH_EN    ),
313   TCD ( MCI_CheckInvalidInit,           MCI_CHECKINVALIDINIT_EN         ),
314 };
315 #endif
316
317 #ifdef  RTE_CMSIS_DV_USBD
318 static TEST_CASE TC_List_USBD[] = {
319   TCD ( USBD_GetCapabilities,           USBD_GETCAPABILITIES_EN         ),
320   TCD ( USBD_Initialization,            USBD_INITIALIZATION_EN          ),
321   TCD ( USBD_PowerControl,              USBD_POWERCONTROL_EN            ),
322   TCD ( USBD_CheckInvalidInit,          USBD_CHECKINVALIDINIT_EN        ),
323 };
324 #endif
325
326 #ifdef  RTE_CMSIS_DV_USBH
327 static TEST_CASE TC_List_USBH[] = {
328   TCD ( USBH_GetCapabilities,           USBH_GETCAPABILITIES_EN         ),
329   TCD ( USBH_Initialization,            USBH_INITIALIZATION_EN          ),
330   TCD ( USBH_PowerControl,              USBH_POWERCONTROL_EN            ),
331   TCD ( USBH_CheckInvalidInit,          USBH_CHECKINVALIDINIT_EN        ),
332 };
333 #endif
334
335 #ifdef  RTE_CMSIS_DV_CAN
336 static TEST_CASE TC_List_CAN[] = {
337   TCD ( CAN_GetCapabilities,            CAN_GETCAPABILITIES_EN          ),
338   TCD ( CAN_Initialization,             CAN_INITIALIZATION_EN           ),
339   TCD ( CAN_PowerControl,               CAN_POWERCONTROL_EN             ),
340   TCD ( CAN_Loopback_CheckBitrate,      CAN_LOOPBACK_CHECK_BR_EN        ),
341   TCD ( CAN_Loopback_CheckBitrateFD,    CAN_LOOPBACK_CHECK_BR_FD_EN     ),
342   TCD ( CAN_Loopback_Transfer,          CAN_LOOPBACK_TRANSFER_EN        ),
343   TCD ( CAN_Loopback_TransferFD,        CAN_LOOPBACK_TRANSFER_FD_EN     ),
344 };
345 #endif
346
347 #ifdef  RTE_CMSIS_DV_WIFI
348 static TEST_CASE TC_List_WiFi[] = {
349   /*    WiFi Control tests */
350   #if ( WIFI_CONTROL_EN != 0)
351   TCD ( WIFI_GetVersion,                WIFI_GETVERSION_EN              ),
352   TCD ( WIFI_GetCapabilities,           WIFI_GETCAPABILITIES_EN         ),
353   TCD ( WIFI_Initialize_Uninitialize,   WIFI_INIT_UNINIT_EN             ),
354   TCD ( WIFI_PowerControl,              WIFI_POWERCONTROL_EN            ),
355   TCD ( WIFI_GetModuleInfo,             WIFI_GETMODULEINFO_EN           ),
356   #endif
357   /*    WiFi Management tests */
358   #if ( WIFI_MANAGEMENT_EN != 0)
359   TCD ( WIFI_SetOption_GetOption,       WIFI_SETGETOPTION_EN            ),
360   TCD ( WIFI_Scan,                      WIFI_SCAN_EN                    ),
361   TCD ( WIFI_Activate_Deactivate,       WIFI_ACT_DEACT_EN               ),
362   TCD ( WIFI_IsConnected,               WIFI_ISCONNECTED_EN             ),
363   TCD ( WIFI_GetNetInfo,                WIFI_GETNETINFO_EN              ),
364   #endif
365   /*    WiFi Management tests requiring user interaction */
366   #if ( WIFI_MANAGEMENT_USER_EN != 0)
367   TCD ( WIFI_Activate_AP,               WIFI_ACT_AP                     ),
368   #if ( WIFI_WPS_USER_EN != 0)
369   TCD ( WIFI_Activate_Station_WPS_PBC,  WIFI_ACT_STA_WPS_PBC            ),
370   TCD ( WIFI_Activate_Station_WPS_PIN,  WIFI_ACT_STA_WPS_PIN            ),
371   TCD ( WIFI_Activate_AP_WPS_PBC,       WIFI_ACT_AP_WPS_PBC             ),
372   TCD ( WIFI_Activate_AP_WPS_PIN,       WIFI_ACT_AP_WPS_PIN             ),
373   #endif
374   #endif
375   /*    WiFi Socket API tests */
376   #if ( WIFI_SOCKET_EN != 0)
377   TCD ( WIFI_SocketCreate,              WIFI_SOCKETCREATE_EN            ),
378   TCD ( WIFI_SocketBind,                WIFI_SOCKETBIND_EN              ),
379   TCD ( WIFI_SocketListen,              WIFI_SOCKETLISTEN_EN            ),
380   TCD ( WIFI_SocketAccept,              WIFI_SOCKETACCEPT_EN            ),
381   TCD ( WIFI_SocketAccept_nbio,         WIFI_SOCKETACCEPT_NBIO_EN       ),
382   TCD ( WIFI_SocketConnect,             WIFI_SOCKETCONNECT_EN           ),
383   TCD ( WIFI_SocketConnect_nbio,        WIFI_SOCKETCONNECT_NBIO_EN      ),
384   TCD ( WIFI_SocketRecv,                WIFI_SOCKETRECV_EN              ),
385   TCD ( WIFI_SocketRecv_nbio,           WIFI_SOCKETRECV_NBIO_EN         ),
386   TCD ( WIFI_SocketRecvFrom,            WIFI_SOCKETRECVFROM_EN          ),
387   TCD ( WIFI_SocketRecvFrom_nbio,       WIFI_SOCKETRECVFROM_NBIO_EN     ),
388   TCD ( WIFI_SocketSend,                WIFI_SOCKETSEND_EN              ),
389   TCD ( WIFI_SocketSendTo,              WIFI_SOCKETSENDTO_EN            ),
390   TCD ( WIFI_SocketGetSockName,         WIFI_SOCKETGETSOCKNAME_EN       ),
391   TCD ( WIFI_SocketGetPeerName,         WIFI_SOCKETGETPEERNAME_EN       ),
392   TCD ( WIFI_SocketGetOpt,              WIFI_SOCKETGETOPT_EN            ),
393   TCD ( WIFI_SocketSetOpt,              WIFI_SOCKETSETOPT_EN            ),
394   TCD ( WIFI_SocketClose,               WIFI_SOCKETCLOSE_EN             ),
395   TCD ( WIFI_SocketGetHostByName,       WIFI_SOCKETGETHOSTBYNAME_EN     ),
396   TCD ( WIFI_Ping,                      WIFI_PING_EN                    ),
397   #endif
398   /*    WiFi Socket Operation tests */
399   #if ( WIFI_SOCKET_OP_EN != 0)
400   TCD ( WIFI_Transfer_Fixed,            WIFI_TRANSFER_FIXED_EN          ),
401   TCD ( WIFI_Transfer_Incremental,      WIFI_TRANSFER_INCREMENTAL_EN    ),
402   TCD ( WIFI_Send_Fragmented,           WIFI_SEND_FRAGMENTED_EN         ),
403   TCD ( WIFI_Recv_Fragmented,           WIFI_RECV_FRAGMENTED_EN         ),
404   TCD ( WIFI_Test_Speed,                WIFI_TEST_SPEED_EN              ),
405   TCD ( WIFI_Concurrent_Socket,         WIFI_CONCURRENT_SOCKET_EN       ),
406   TCD ( WIFI_Downstream_Rate,           WIFI_DOWNSTREAM_RATE_EN         ),
407   TCD ( WIFI_Upstream_Rate,             WIFI_UPSTREAM_RATE_EN           ),
408   #endif
409 };
410 #endif
411
412 #ifdef  RTE_CMSIS_DV_GPIO
413 static TEST_CASE TC_List_GPIO[] = {
414   TCD ( GPIO_Setup,                     GPIO_TC_SETUP_EN                ),
415   TCD ( GPIO_SetDirection,              GPIO_TC_SET_DIRECTION_EN        ),
416   TCD ( GPIO_SetOutputMode,             GPIO_TC_SET_OUTPUT_MODE_EN      ),
417   TCD ( GPIO_SetPullResistor,           GPIO_TC_SET_PULL_RESISTOR_EN    ),
418   TCD ( GPIO_SetEventTrigger,           GPIO_TC_SET_EVENT_TRIGGER_EN    ),
419   TCD ( GPIO_SetOutput,                 GPIO_TC_SET_OUTPUT_EN           ),
420   TCD ( GPIO_GetInput,                  GPIO_TC_GET_INPUT_EN            )
421 };
422 #endif
423
424 #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
425 #pragma clang diagnostic push
426 #pragma clang diagnostic ignored "-Wdate-time"
427 #endif
428 /*-----------------------------------------------------------------------------
429  *      Test suite description
430  *----------------------------------------------------------------------------*/
431 TEST_GROUP ts[] = {
432 #ifdef  RTE_CMSIS_DV_SPI                /* SPI test group                     */
433 {
434   __FILE__, __DATE__, __TIME__,
435   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver SPI Test Report",
436   TS_Init_SPI,
437   TS_Uninit_SPI,
438   TC_List_SPI,
439   ARRAY_SIZE (TC_List_SPI),
440 },
441 #endif
442
443 #ifdef  RTE_CMSIS_DV_USART              /* USART test group                   */
444 {
445   __FILE__, __DATE__, __TIME__,
446   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver USART Test Report",
447   TS_Init_USART,
448   TS_Uninit_USART,
449   TC_List_USART,
450   ARRAY_SIZE (TC_List_USART),
451 },
452 #endif
453
454 #ifdef  RTE_CMSIS_DV_ETH                /* ETH test group                     */
455 {
456   __FILE__, __DATE__, __TIME__,
457   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver ETH Test Report",
458   TS_Init_ETH,
459   TS_Uninit_ETH,
460   TC_List_ETH,
461   ARRAY_SIZE (TC_List_ETH),
462 },
463 #endif
464
465 #ifdef  RTE_CMSIS_DV_I2C                /* I2C test group                     */
466 {
467   __FILE__, __DATE__, __TIME__,
468   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver I2C (API v2.3) Test Report",
469   NULL,
470   NULL,
471   TC_List_I2C,
472   ARRAY_SIZE (TC_List_I2C),
473 },
474 #endif
475
476 #ifdef  RTE_CMSIS_DV_MCI                /* MCI test group                     */
477 {
478   __FILE__, __DATE__, __TIME__,
479   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver MCI Test Report",
480   NULL,
481   NULL,
482   TC_List_MCI,
483   ARRAY_SIZE (TC_List_MCI),
484 },
485 #endif
486
487 #ifdef  RTE_CMSIS_DV_USBD               /* USBD test group                    */
488 {
489   __FILE__, __DATE__, __TIME__,
490   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver USBD Test Report",
491   NULL,
492   NULL,
493   TC_List_USBD,
494   ARRAY_SIZE (TC_List_USBD),
495 },
496 #endif
497
498 #ifdef  RTE_CMSIS_DV_USBH               /* USBH test group                    */
499 {
500   __FILE__, __DATE__, __TIME__,
501   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver USBH Test Report",
502   NULL,
503   NULL,
504   TC_List_USBH,
505   ARRAY_SIZE (TC_List_USBH),
506 },
507 #endif
508
509 #ifdef  RTE_CMSIS_DV_CAN                /* CAN test group                    */
510 {
511   __FILE__, __DATE__, __TIME__,
512   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver CAN Test Report",
513   NULL,
514   NULL,
515   TC_List_CAN,
516   ARRAY_SIZE (TC_List_CAN),
517 },
518 #endif
519
520 #ifdef  RTE_CMSIS_DV_WIFI               /* WIFI test group                    */
521 {
522   __FILE__, __DATE__, __TIME__,
523   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver WiFi Test Report",
524   TS_Init_WiFi,
525   TS_Uninit_WiFi,
526   TC_List_WiFi,
527   ARRAY_SIZE (TC_List_WiFi),
528 },
529 #endif
530
531 #ifdef  RTE_CMSIS_DV_GPIO               /* GPIO test group                    */
532 {
533   __FILE__, __DATE__, __TIME__,
534   "CMSIS-Driver_Validation v" RTE_CMSIS_DV_PACK_VER " CMSIS-Driver GPIO Test Report",
535   NULL,
536   NULL,
537   TC_List_GPIO,
538   ARRAY_SIZE (TC_List_GPIO),
539 },
540 #endif
541 };
542
543 /* Number of test groups in suite */
544 uint32_t tg_cnt = sizeof(ts)/sizeof(ts[0]);
545
546 #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
547 #pragma clang diagnostic pop
548 #endif