Измените драйвер устройства Python USB, чтобы использовать только vendor_id и product_id, исключая BCD
Я пытаюсь изменить драйвер устройства Android для калибра (программа управления электронными книгами), чтобы он определял устройства только по идентификатору производителя и идентификатору продукта и исключал BCD.
Драйвер представляет собой довольно простой плагин Python, и в настоящее время он настроен на использование всех трех чисел, но, очевидно, когда устройства Android используют пользовательские сборки Android (например, CyanogenMod для Nexus One), он изменяет BCD, поэтому калибр перестает его распознавать.
Текущий код выглядит следующим образом, с простым списком идентификаторов поставщиков, которые затем позволяют идентификаторы продуктов и 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. Мой N1, на котором запущен CyanogenMod 5.0.5, имеет BCD 0x226, и вместо того, чтобы просто добавить его в список, я бы предпочел исключить BCD из процесса распознавания, чтобы любое устройство с идентификатором поставщика 0x18d1 и идентификатором продукта 0x4e11 или 0x4e12 будет признан. Пользовательский rom Android не меняется достаточно, чтобы специфика имела значение.
Синтаксис, кажется, требует BCD в скобках.
Как я могу отредактировать это так, чтобы оно соответствовало чему-либо в этом поле?
1 ответ
Это структура данных, она сама по себе ничего не соответствует. Изменение должно произойти в коде, который использует эту структуру данных для сопоставления. Ничто из того, что вы могли бы сделать с самой структурой данных, не означало бы "совпадать со всеми", если только не существует какого-либо флага, который распознает соответствующий код.