修改Python USB设备驱动,仅使用vendor_id和product_id,排除BCD
我正在尝试修改一个用于管理电子书的程序calibre的Android设备驱动,让它只通过厂商ID和产品ID来识别设备,而不考虑BCD。
这个驱动其实是一个比较简单的Python插件,目前是用三个数字来识别设备,但显然,当Android设备使用自定义的Android版本(比如Nexus One上的CyanogenMod)时,BCD会被改变,这样calibre就无法识别它了。
现在的代码是这样的,里面有一个简单的厂商ID列表,后面跟着允许的产品ID和BCD:
VENDOR_ID = {
0x0bb4 : { 0x0c02 : [0x100], 0x0c01 : [0x100]},
0x22b8 : { 0x41d9 : [0x216]},
0x18d1 : { 0x4e11 : [0x0100], 0x4e12: [0x0100]},
0x04e8 : { 0x681d : [0x0222]},
}
我特别想要修改的那一行是:
0x18d1 : { 0x4e11 : [0x0100], 0x4e12: [0x0100]},
这行是用来识别Nexus One的。我用CyanogenMod 5.0.5的N1的BCD是0x226,我不想只是把它加到列表里,而是希望从识别过程中去掉BCD,这样任何厂商ID是0x18d1,产品ID是0x4e11或0x4e12的设备都能被识别。自定义的Android系统没有改变到足以影响识别的程度。
看起来语法要求在方括号里包含BCD。
我该怎么修改才能让它匹配这个字段里的任何内容呢?
1 个回答
0
这是一种数据结构,它本身并不会“匹配”任何东西。要实现匹配,得在使用这个数据结构的代码中进行更改。单靠数据结构本身是无法做到“匹配所有”的,除非匹配的代码能识别某种标志。