1 /*-----------------------------------------------------------------------------
3 * Purpose: USB Device test cases
4 *----------------------------------------------------------------------------
5 * Copyright(c) KEIL - An ARM Company
6 *----------------------------------------------------------------------------*/
10 #include "DV_Framework.h"
11 #include "Driver_USBD.h"
16 // Register Driver_USBD#
17 extern ARM_DRIVER_USBD CREATE_SYMBOL(Driver_USBD, DRV_USBD);
18 static ARM_DRIVER_USBD *drv = &CREATE_SYMBOL(Driver_USBD, DRV_USBD);
19 static ARM_USBD_CAPABILITIES capab;
22 static uint8_t volatile DeviceEvent;
23 static uint8_t volatile EndpointEvent;
26 static void USB_DeviceEvent (uint32_t event) {
31 static void USB_EndpointEvent (uint8_t endpoint, uint32_t event) {
33 EndpointEvent |= event;
37 /*-----------------------------------------------------------------------------
39 *----------------------------------------------------------------------------*/
41 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
43 \defgroup usbd_funcs USB Device Validation
44 \brief USB Device test cases
46 The USB Device validation test checks the API interface compliance only. The section \ref usbd_comp_test explains how to run
47 the USB compliance tests. These tests check USB devices for conformance to the USB Device Framework which is required in
48 order to gain USB certification.
52 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
54 \brief Test case: USBD_GetCapabilities
56 The test case \b USBD_GetCapabilities verifies the function \b GetCapabilities.
58 void USBD_GetCapabilities (void) {
59 /* Get USBD capabilities */
60 capab = drv->GetCapabilities();
61 TEST_ASSERT(&capab != NULL);
64 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
66 \brief Test case: USBD_Initialization
68 The test case \b USBD_Initialization verifies the USBD functions with the sequence:
69 - \b Initialize without callback
71 - \b Initialize with callback
74 void USBD_Initialization (void) {
76 /* Initialize without callback */
77 TEST_ASSERT(drv->Initialize(NULL, NULL) == ARM_DRIVER_OK);
80 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
82 /* Initialize with callback */
83 TEST_ASSERT(drv->Initialize(USB_DeviceEvent, USB_EndpointEvent) == ARM_DRIVER_OK);
86 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
89 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
91 \brief Test case: USBD_CheckInvalidInit
93 The test case \b USBD_CheckInvalidInit verifies the driver behaviour when receiving an invalid initialization sequence:
95 - \b PowerControl with Power off
96 - \b PowerControl with Power on
97 - \b PowerControl with Power off
100 void USBD_CheckInvalidInit (void) {
103 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
106 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
108 /* Try to power on */
109 TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) != ARM_DRIVER_OK);
112 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
115 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
118 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
120 \brief Test case: USBD_PowerControl
122 The test case \b USBD_PowerControl verifies the \b PowerControl function with the sequence:
129 void USBD_PowerControl (void) {
132 /* Initialize with callback */
133 TEST_ASSERT(drv->Initialize(USB_DeviceEvent, USB_EndpointEvent) == ARM_DRIVER_OK);
136 TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) == ARM_DRIVER_OK);
139 val = drv->PowerControl (ARM_POWER_LOW);
140 if (val == ARM_DRIVER_ERROR_UNSUPPORTED) { TEST_MESSAGE("[WARNING] Low power is not supported"); }
141 else { TEST_ASSERT(val == ARM_DRIVER_OK); }
144 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
147 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
153 // end of group usbd_funcs