1 #ifndef __DEVICES_FILTER_H
2 #define __DEVICES_FILTER_H
5 #define USB_ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
10 const char *manufacturer;
15 static usb_parameter not_skip_device_list[] = {
16 {0x12D1, 0x1001, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", "HUAWEI Mobile",NULL},
17 // {0x12D1, 0x1411, "HUAWEI Technology", "HUAWEI Mobile",NULL},
20 static usb_parameter skip_device_list[] = {
21 {0x12D1, 0x1DA1, NULL, NULL, NULL},
22 {0x12D1, 0x1D09, NULL, NULL, NULL},
23 {0x12D1, 0x1520, NULL, NULL, NULL},
24 {0x12D1, 0x14AC, NULL, NULL, NULL},
25 {0x12D1, 0x1465, NULL, NULL, NULL},
26 {0x12D1, 0x1446, NULL, NULL, NULL},
27 {0x12D1, 0x1414, NULL, NULL, NULL},
28 {0x12D1, 0x140C, NULL, NULL, NULL},
29 {0x12D1, 0x1003, NULL, NULL, NULL},
30 {0x12D1, 0x1001, NULL, NULL, NULL},
31 {0x12D1, 0x1505, NULL, NULL, NULL},
32 {0x12D1, 0x14FE, NULL, NULL, NULL},
33 {0x12D1, 0x1506, NULL, NULL, NULL},
35 {0x19D2, 0xFFF5, NULL, NULL, NULL},
36 {0x19D2, 0xFFF1, NULL, NULL, NULL},
37 {0x19D2, 0x2000, NULL, NULL, NULL},
38 {0x19D2, 0x0120, NULL, NULL, NULL},
39 {0x19D2, 0x0094, NULL, NULL, NULL},
40 {0x19D2, 0x0079, NULL, NULL, NULL},
41 {0x19D2, 0x0073, NULL, NULL, NULL},
42 {0x19D2, 0x0033, NULL, NULL, NULL},
43 {0x19D2, 0x0031, NULL, NULL, NULL},
44 {0x19D2, 0x0026, NULL, NULL, NULL},
45 {0x19D2, 0x0017, NULL, NULL, NULL},
46 {0x19D2, 0x0015, NULL, NULL, NULL},
47 {0x19D2, 0x0154, NULL, NULL, NULL},
48 {0x19D2, 0x2003, NULL, NULL, NULL},
50 {0x04CC, 0x225A, NULL, NULL, NULL},
51 {0x04CC, 0x2259, NULL, NULL, NULL},
53 {0x1410, 0x5010, NULL, NULL, NULL},
54 {0x1410, 0x4400, NULL, NULL, NULL},
56 {0x1D09, 0xAEF4, NULL, NULL, NULL},
58 {0x1BBB, 0xF000, NULL, NULL, NULL},
59 {0x1BBB, 0x0017, NULL, NULL, NULL},
62 // {0x05C6, -1, NULL, NULL, NULL},
63 {0x05C6, 0x1000, NULL, NULL, NULL},
64 {0x05C6, 0xF000, NULL, NULL, NULL},
65 {0x05C6, 0x0016, NULL, NULL, NULL},
66 {0x1AB7, 0x5700, NULL, NULL, NULL},
67 {0x20B9, 0x1682, NULL, NULL, NULL},
69 {0x028A, 0x1006, NULL, NULL, NULL},
71 {0x1C9E, 0x6061, NULL, NULL, NULL},
72 {0x1C9E, 0x6000, NULL, NULL, NULL},
73 {0x1C9E, 0x1001, NULL, NULL, NULL},
75 {0x21F5, 0x2008, NULL, NULL, NULL},
76 {0x21F5, 0x1000, NULL, NULL, NULL},
78 {0x6000, 0x1000, NULL, NULL, NULL},
80 {0x0685, 0x7000, NULL, NULL, NULL},
82 {0x20A6, 0x1105, NULL, NULL, NULL},
83 {0x1614, 0x0800, NULL, NULL, NULL},
84 {0x1A8D, 0x2000, NULL, NULL, NULL},
85 {0x1C9E, 0x9913, NULL, NULL, NULL},
86 {0x1C9E, 0x9915, NULL, NULL, NULL},
87 {0x230D, 0x000C, NULL, NULL, NULL},
88 {0x230D, 0x0003, NULL, NULL, NULL},
89 {0x257A, 0x2601, NULL, NULL, NULL},
90 {0x1E89, 0x1E16, NULL, NULL, NULL},
91 {0x1C9E, 0x9800, NULL, NULL, NULL},
97 static int __must_check inline match_for_each_entry(usb_parameter* pusbp1, usb_parameter* pusbp2)
99 if( pusbp1->vid>=0 && pusbp1->vid!=pusbp2->vid)
102 if( pusbp1->pid>=0 && pusbp1->pid!=pusbp2->pid)
105 if( pusbp1->manufacturer )
107 if( pusbp2->manufacturer==NULL )
109 else if( strcmp(pusbp1->manufacturer, pusbp2->manufacturer) )
113 if( pusbp1->product )
115 if( pusbp2->product==NULL )
117 else if( strcmp(pusbp1->product, pusbp2->product) )
128 static int is_skip_device(usb_parameter *pusbp)
132 在 not_skip_device_list 中寻找匹配,找到则该 device 正常流程
133 在 skip_device_list 中寻找匹配,找到则该 device 跳过attach
134 对于不在 skip_device_list,not_skip_device_list,则正常流程
136 for(i = 0; i < USB_ARRAY_SIZE(not_skip_device_list); i++)
138 if(match_for_each_entry(not_skip_device_list+i, pusbp)){
143 for(i = 0; i < USB_ARRAY_SIZE(skip_device_list); i++)
145 if(match_for_each_entry(skip_device_list+i, pusbp)){
153 #endif //__DEVICES_FILTER_H