1 /*-----------------------------------------------------------------------------
3 * Purpose: USB Device test cases
4 *----------------------------------------------------------------------------
5 * Copyright(c) KEIL - An ARM Company
6 *----------------------------------------------------------------------------*/
9 #include "DV_Framework.h"
10 #include "Driver_USBD.h"
15 // Register Driver_USBD#
16 extern ARM_DRIVER_USBD CREATE_SYMBOL(Driver_USBD, DRV_USBD);
17 static ARM_DRIVER_USBD *drv = &CREATE_SYMBOL(Driver_USBD, DRV_USBD);
18 static ARM_USBD_CAPABILITIES capab;
21 static uint8_t volatile DeviceEvent;
22 static uint8_t volatile EndpointEvent;
25 static void USB_DeviceEvent (uint32_t event) {
30 static void USB_EndpointEvent (uint8_t endpoint, uint32_t event) {
32 EndpointEvent |= event;
36 /*-----------------------------------------------------------------------------
38 *----------------------------------------------------------------------------*/
40 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
42 \defgroup usbd_funcs USB Device Validation
43 \brief USB Device test cases
45 The USB Device validation test checks the API interface compliance only. The section \ref usbd_comp_test explains how to run
46 the USB compliance tests. These tests check USB devices for conformance to the USB Device Framework which is required in
47 order to gain USB certification.
51 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
53 \brief Test case: USBD_GetCapabilities
55 The test case \b USBD_GetCapabilities verifies the function \b GetCapabilities.
57 void USBD_GetCapabilities (void) {
58 /* Get USBD capabilities */
59 capab = drv->GetCapabilities();
60 ASSERT_TRUE(&capab != NULL);
63 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
65 \brief Test case: USBD_Initialization
67 The test case \b USBD_Initialization verifies the USBD functions with the sequence:
68 - \b Initialize without callback
70 - \b Initialize with callback
73 void USBD_Initialization (void) {
75 /* Initialize without callback */
76 ASSERT_TRUE(drv->Initialize(NULL, NULL) == ARM_DRIVER_OK);
79 ASSERT_TRUE(drv->Uninitialize() == ARM_DRIVER_OK);
81 /* Initialize with callback */
82 ASSERT_TRUE(drv->Initialize(USB_DeviceEvent, USB_EndpointEvent) == ARM_DRIVER_OK);
85 ASSERT_TRUE(drv->Uninitialize() == ARM_DRIVER_OK);
88 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
90 \brief Test case: USBD_CheckInvalidInit
92 The test case \b USBD_CheckInvalidInit verifies the driver behaviour when receiving an invalid initialization sequence:
94 - \b PowerControl with Power off
95 - \b PowerControl with Power on
96 - \b PowerControl with Power off
99 void USBD_CheckInvalidInit (void) {
102 ASSERT_TRUE(drv->Uninitialize() == ARM_DRIVER_OK);
105 ASSERT_TRUE(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
107 /* Try to power on */
108 ASSERT_TRUE(drv->PowerControl (ARM_POWER_FULL) != ARM_DRIVER_OK);
111 ASSERT_TRUE(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
114 ASSERT_TRUE(drv->Uninitialize() == ARM_DRIVER_OK);
117 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
119 \brief Test case: USBD_PowerControl
121 The test case \b USBD_PowerControl verifies the \b PowerControl function with the sequence:
128 void USBD_PowerControl (void) {
131 /* Initialize with callback */
132 ASSERT_TRUE(drv->Initialize(USB_DeviceEvent, USB_EndpointEvent) == ARM_DRIVER_OK);
135 ASSERT_TRUE(drv->PowerControl (ARM_POWER_FULL) == ARM_DRIVER_OK);
138 val = drv->PowerControl (ARM_POWER_LOW);
139 if (val == ARM_DRIVER_ERROR_UNSUPPORTED) { SET_RESULT(WARNING, "Low power is not supported"); }
140 else { ASSERT_TRUE(val == ARM_DRIVER_OK); }
143 ASSERT_TRUE(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
146 ASSERT_TRUE(drv->Uninitialize() == ARM_DRIVER_OK);
152 // end of group usbd_funcs