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)9void 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()23static 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()74static void post_init_device() 75 { 76 }