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 TEST_ASSERT(&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 TEST_ASSERT(drv->Initialize(NULL, NULL) == ARM_DRIVER_OK);
79 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
81 /* Initialize with callback */
82 TEST_ASSERT(drv->Initialize(USB_DeviceEvent, USB_EndpointEvent) == ARM_DRIVER_OK);
85 TEST_ASSERT(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 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
105 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
107 /* Try to power on */
108 TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) != ARM_DRIVER_OK);
111 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
114 TEST_ASSERT(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 TEST_ASSERT(drv->Initialize(USB_DeviceEvent, USB_EndpointEvent) == ARM_DRIVER_OK);
135 TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) == ARM_DRIVER_OK);
138 val = drv->PowerControl (ARM_POWER_LOW);
139 if (val == ARM_DRIVER_ERROR_UNSUPPORTED) { TEST_MESSAGE("[WARNING] Low power is not supported"); }
140 else { TEST_ASSERT(val == ARM_DRIVER_OK); }
143 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
146 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
152 // end of group usbd_funcs