1 /* This tests the CDC-ECM entry function. */
2 
3 #include "usbx_ux_test_cdc_ecm.h"
4 
5 static UCHAR cdc_ecm_thread_suspended;
6 
7 /* Define what the initial system looks like.  */
8 #ifdef CTEST
test_application_define(void * first_unused_memory)9 void test_application_define(void *first_unused_memory)
10 #else
11 void usbx_ux_host_class_cdc_ecm_entry_test_application_define(void *first_unused_memory)
12 #endif
13 {
14 
15     /* Inform user.  */
16     printf("Running ux_host_class_cdc_ecm_entry Test............................ ");
17 
18     stepinfo("\n");
19 
20     ux_test_cdc_ecm_initialize(first_unused_memory);
21 }
22 
post_init_host()23 static void post_init_host()
24 {
25 
26 UX_HOST_CLASS_COMMAND command = {0};
27 
28     /* Test unknown command. */
29     ux_test_add_action_to_main_list(create_error_match_action(UX_SYSTEM_LEVEL_THREAD, UX_SYSTEM_CONTEXT_CLASS, UX_FUNCTION_NOT_SUPPORTED));
30     command.ux_host_class_command_request = 0xff;
31     UX_TEST_ASSERT(_ux_host_class_cdc_ecm_entry(&command) != UX_SUCCESS);
32 
33     /* Test command class is data, but subclass is non-zero. */
34     command.ux_host_class_command_request = UX_HOST_CLASS_COMMAND_QUERY;
35     command.ux_host_class_command_usage = UX_HOST_CLASS_COMMAND_USAGE_CSP;
36     command.ux_host_class_command_class = UX_HOST_CLASS_CDC_DATA_CLASS;
37     command.ux_host_class_command_subclass = 1; /* non-zero */
38     UX_TEST_ASSERT(_ux_host_class_cdc_ecm_entry(&command) != UX_SUCCESS);
39 
40     /* Test command class is control, but subclass is not control subclass. */
41     command.ux_host_class_command_request = UX_HOST_CLASS_COMMAND_QUERY;
42     command.ux_host_class_command_usage = UX_HOST_CLASS_COMMAND_USAGE_CSP;
43     command.ux_host_class_command_class = UX_HOST_CLASS_CDC_CONTROL_CLASS;
44     command.ux_host_class_command_subclass = UX_HOST_CLASS_CDC_ECM_CONTROL_SUBCLASS - 1;
45     UX_TEST_ASSERT(_ux_host_class_cdc_ecm_entry(&command) != UX_SUCCESS);
46 
47     /* Test IAD with class = zero, but subclass = non-zero. */
48     command.ux_host_class_command_request = UX_HOST_CLASS_COMMAND_QUERY;
49     command.ux_host_class_command_usage = UX_HOST_CLASS_COMMAND_USAGE_CSP;
50     command.ux_host_class_command_class = UX_HOST_CLASS_CDC_CONTROL_CLASS;
51     command.ux_host_class_command_subclass = UX_HOST_CLASS_CDC_ECM_CONTROL_SUBCLASS;
52     command.ux_host_class_command_iad_class = 0;
53     command.ux_host_class_command_iad_subclass = 1;
54     UX_TEST_ASSERT(_ux_host_class_cdc_ecm_entry(&command) != UX_SUCCESS);
55 
56     /* Test IAD wrong class. */
57     command.ux_host_class_command_request = UX_HOST_CLASS_COMMAND_QUERY;
58     command.ux_host_class_command_usage = UX_HOST_CLASS_COMMAND_USAGE_CSP;
59     command.ux_host_class_command_class = UX_HOST_CLASS_CDC_CONTROL_CLASS;
60     command.ux_host_class_command_subclass = UX_HOST_CLASS_CDC_ECM_CONTROL_SUBCLASS;
61     command.ux_host_class_command_iad_class = 1;
62     UX_TEST_ASSERT(_ux_host_class_cdc_ecm_entry(&command) != UX_SUCCESS);
63 
64     /* Test IAD wrong subclass. */
65     command.ux_host_class_command_request = UX_HOST_CLASS_COMMAND_QUERY;
66     command.ux_host_class_command_usage = UX_HOST_CLASS_COMMAND_USAGE_CSP;
67     command.ux_host_class_command_class = UX_HOST_CLASS_CDC_CONTROL_CLASS;
68     command.ux_host_class_command_subclass = UX_HOST_CLASS_CDC_ECM_CONTROL_SUBCLASS;
69     command.ux_host_class_command_iad_class = UX_HOST_CLASS_CDC_CONTROL_CLASS;
70     command.ux_host_class_command_iad_subclass = UX_HOST_CLASS_CDC_ECM_CONTROL_SUBCLASS - 1;
71     UX_TEST_ASSERT(_ux_host_class_cdc_ecm_entry(&command) != UX_SUCCESS);
72 }
73 
post_init_device()74 static void post_init_device()
75 {
76 }