]> begriffs open source - cmsis-driver-validation/blob - Source/DV_USBH.c
Updated docu reflecting minor changes to DV_Config.h
[cmsis-driver-validation] / Source / DV_USBH.c
1 /*-----------------------------------------------------------------------------
2  *      Name:         DV_USBH.c
3  *      Purpose:      USB Host test cases
4  *----------------------------------------------------------------------------
5  *      Copyright(c) KEIL - An ARM Company
6  *----------------------------------------------------------------------------*/
7
8 #include "cmsis_os.h" 
9 #include "cmsis_dv.h" 
10 #include "DV_Config.h"
11 #include "DV_Framework.h"
12 #include "Driver_USBH.h"
13 #include <stdio.h>
14 #include <stdlib.h> 
15 #include <string.h> 
16
17 // Register Driver_USBH#
18 extern ARM_DRIVER_USBH CREATE_SYMBOL(Driver_USBH, DRV_USBH);
19 static ARM_DRIVER_USBH *drv = &CREATE_SYMBOL(Driver_USBH, DRV_USBH);
20 static ARM_USBH_CAPABILITIES capab;  
21
22 // Event flags
23 static uint8_t volatile PortEvent;  
24 static uint8_t volatile PipeEvent; 
25
26 // USB Port event
27 static void USB_PortEvent (uint8_t port, uint32_t event) {
28   PortEvent |= event;
29 }
30
31 // USB Pipe event
32 static void USB_PipeEvent (ARM_USBH_PIPE_HANDLE pipe_hndl, uint32_t event) {
33   PipeEvent |= event;
34 }
35
36
37 /*-----------------------------------------------------------------------------
38  *      Test cases
39  *----------------------------------------------------------------------------*/
40  
41 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
42 /**
43 \defgroup usbh_funcs USB Host Validation
44 \brief USB Host test cases
45 \details
46 The USB Host validation test checks the API interface compliance only.
47 @{
48 */
49
50 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
51 /**
52 \brief Test case: USBH_GetCapabilities
53 \details
54 The test case \b USBH_GetCapabilities verifies the function \b GetCapabilities.
55 */
56 void USBH_GetCapabilities (void) {                    
57   /* Get USBH capabilities */
58   capab = drv->GetCapabilities();
59   TEST_ASSERT(&capab != NULL); 
60 }
61
62 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
63 /**
64 \brief  Test case: USBH_Initialization
65 \details
66 The test case \b USBH_Initialization verifies the USBH functions with the sequence:
67   - \b Initialize without callback
68   - \b Uninitialize
69   - \b Initialize with callback
70   - \b Uninitialize
71 */
72 void USBH_Initialization (void) { 
73
74   /* Initialize without callback */
75   TEST_ASSERT(drv->Initialize(NULL, NULL) == ARM_DRIVER_OK); 
76     
77   /* Uninitialize */
78   TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK); 
79   
80   /* Initialize with callback */
81   TEST_ASSERT(drv->Initialize(USB_PortEvent, USB_PipeEvent) == ARM_DRIVER_OK); 
82   
83   /* Uninitialize */
84   TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK); 
85 }
86
87 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
88 /**
89 \brief  Test case: USBH_CheckInvalidInit
90 \details
91 The test case \b USBH_CheckInvalidInit verifies the driver behaviour when receiving an invalid initialization sequence:
92   - \b Uninitialize
93   - \b PowerControl with Power off
94   - \b PowerControl with Power on
95   - \b PowerControl with Power off
96   - \b Uninitialize
97 */
98 void USBH_CheckInvalidInit (void) { 
99
100   /* Uninitialize */
101   TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK); 
102   
103   /* Power off */
104   TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
105   
106   /* Try to power on */
107   TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) != ARM_DRIVER_OK); 
108   
109   /* Power off */
110   TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
111   
112   /* Uninitialize */
113   TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK); 
114 }
115
116 /*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/
117 /**
118 \brief  Test case: USBH_PowerControl
119 \details
120 The test case \b USBH_PowerControl verifies the \b PowerControl function with the sequence:
121  - Initialize
122  - Power on
123  - Power low
124  - Power off
125  - Uninitialize 
126 */
127 void USBH_PowerControl (void) { 
128   int32_t val;
129   
130   /* Initialize with callback */
131   TEST_ASSERT(drv->Initialize(USB_PortEvent, USB_PipeEvent) == ARM_DRIVER_OK); 
132   
133   /* Power on */
134   TEST_ASSERT(drv->PowerControl (ARM_POWER_FULL) == ARM_DRIVER_OK);  
135   
136   /* Power low */
137   val = drv->PowerControl (ARM_POWER_LOW);
138   if (val == ARM_DRIVER_ERROR_UNSUPPORTED) { TEST_MESSAGE("[WARNING] Low power is not supported"); }
139   else { TEST_ASSERT(val == ARM_DRIVER_OK); }
140    
141   /* Power off */
142   TEST_ASSERT(drv->PowerControl (ARM_POWER_OFF) == ARM_DRIVER_OK);
143   
144   /* Uninitialize */
145   TEST_ASSERT(drv->Uninitialize() == ARM_DRIVER_OK); 
146 }
147
148 /**
149 @}
150 */ 
151 // end of group usbh_funcs