1 /*-----------------------------------------------------------------------------
3 * Purpose: USB Host test cases
4 *----------------------------------------------------------------------------
5 * Copyright(c) KEIL - An ARM Company
6 *----------------------------------------------------------------------------*/
10 #include "DV_Framework.h"
11 #include "Driver_USBH.h"
16 // Register Driver_USBH#
17 extern ARM_DRIVER_USBH CREATE_SYMBOL(Driver_USBH, DRV_USBH);
18 static ARM_DRIVER_USBH *drv = &CREATE_SYMBOL(Driver_USBH, DRV_USBH);
19 static ARM_USBH_CAPABILITIES capab;
22 static uint8_t volatile PortEvent;
23 static uint8_t volatile PipeEvent;
26 static void USB_PortEvent (uint8_t port, uint32_t event) {
31 static void USB_PipeEvent (ARM_USBH_PIPE_HANDLE pipe_hndl, uint32_t event) {
36 /*-----------------------------------------------------------------------------
38 *----------------------------------------------------------------------------*/
40 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
42 \defgroup usbh_funcs USB Host Validation
43 \brief USB Host test cases
45 The USB Host validation test checks the API interface compliance only.
49 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
51 \brief Test case: USBH_GetCapabilities
53 The test case \b USBH_GetCapabilities verifies the function \b GetCapabilities.
55 void USBH_GetCapabilities (void) {
56 /* Get USBH capabilities */
57 capab = drv->GetCapabilities();
58 TEST_ASSERT(&capab != NULL);
61 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
63 \brief Test case: USBH_Initialization
65 The test case \b USBH_Initialization verifies the USBH functions with the sequence:
66 - \b Initialize without callback
68 - \b Initialize with callback
71 void USBH_Initialization (void) {
73 /* Initialize without callback */
74 TEST_ASSERT(drv->Initialize(NULL, NULL) == ARM_DRIVER_OK);
77 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
79 /* Initialize with callback */
80 TEST_ASSERT(drv->Initialize(USB_PortEvent, USB_PipeEvent) == ARM_DRIVER_OK);
83 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
86 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
88 \brief Test case: USBH_CheckInvalidInit
90 The test case \b USBH_CheckInvalidInit verifies the driver behaviour when receiving an invalid initialization sequence:
92 - \b PowerControl with Power off
93 - \b PowerControl with Power on
94 - \b PowerControl with Power off
97 void USBH_CheckInvalidInit (void) {
100 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
103 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
105 /* Try to power on */
106 TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) != ARM_DRIVER_OK);
109 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
112 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
115 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
117 \brief Test case: USBH_PowerControl
119 The test case \b USBH_PowerControl verifies the \b PowerControl function with the sequence:
126 void USBH_PowerControl (void) {
129 /* Initialize with callback */
130 TEST_ASSERT(drv->Initialize(USB_PortEvent, USB_PipeEvent) == ARM_DRIVER_OK);
133 TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) == ARM_DRIVER_OK);
136 val = drv->PowerControl (ARM_POWER_LOW);
137 if (val == ARM_DRIVER_ERROR_UNSUPPORTED) { TEST_MESSAGE("[WARNING] Low power is not supported"); }
138 else { TEST_ASSERT(val == ARM_DRIVER_OK); }
141 TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
144 TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK);
150 // end of group usbh_funcs