diff --git a/build/jam/packages/Haiku b/build/jam/packages/Haiku index 704b5ce890..055c730655 100644 --- a/build/jam/packages/Haiku +++ b/build/jam/packages/Haiku @@ -68,7 +68,7 @@ AddNewDriversToPackage power : $(SYSTEM_ADD_ONS_DRIVERS_POWER) ; #AddNewDriversToPackage display : display_adapter@x86 ; # legacy drivers -AddDriversToPackage : console dprintf null tty zero ; +AddDriversToPackage : console dprintf null tty usb_modeswitch zero ; AddDriversToPackage audio hmulti : $(SYSTEM_ADD_ONS_DRIVERS_AUDIO) ; AddDriversToPackage audio old : $(SYSTEM_ADD_ONS_DRIVERS_AUDIO_OLD) ; AddDriversToPackage midi : $(SYSTEM_ADD_ONS_DRIVERS_MIDI) ; diff --git a/src/add-ons/kernel/drivers/common/usb_modeswitch.cpp b/src/add-ons/kernel/drivers/common/usb_modeswitch.cpp index f1e3c858fa..e82f968fc7 100644 --- a/src/add-ons/kernel/drivers/common/usb_modeswitch.cpp +++ b/src/add-ons/kernel/drivers/common/usb_modeswitch.cpp @@ -8,6 +8,7 @@ /* Devices and messages reference: usb-modeswitch-data-20100826 + Huawei devices updated to usb-modeswitch-data-20150115 */ #include @@ -64,7 +65,7 @@ unsigned char kDevicesMsg[][31] = { { /* MSG_HUAWEI_3 */ 0x55, 0x53, 0x42, 0x43, 0x12, 0x34, 0x56, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x06, 0x20, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, { /* MSG_NOKIA_1 */ @@ -122,7 +123,7 @@ unsigned char kDevicesMsg[][31] = { #define NOKIA_VENDOR 0x0421 #define NOVATEL_VENDOR 0x1410 #define ZYDAS_VENDOR 0x0ace -#define ZTE_VENDOR 0x19d2 +#define ZTE_VENDOR 0x19d2 #define OLIVETTI_VENDOR 0x0b3c #define OPTION_VENDOR 0x0af0 #define ATHEROS_VENDOR 0x0cf3 @@ -133,33 +134,52 @@ static const struct { msgType type, type2, type3; } kDevices[] = { {{ 0, 0, 0, HUAWEI_VENDOR, 0x101e}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x1446}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x1449}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x14ad}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x14b5}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x14b7}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x14ba}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x14c1}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x14c3}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x14c4}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x14c5}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x14d1}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x14fe}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x1505}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x151a}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x1520}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x1521}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x1523}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x1526}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x1553}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x1557}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x155b}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x1c0b}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x1c24}, MSG_HUAWEI_1}, - {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f11}, MSG_HUAWEI_1}, {{ 0, 0, 0, HUAWEI_VENDOR, 0x1030}, MSG_HUAWEI_2}, {{ 0, 0, 0, HUAWEI_VENDOR, 0x1031}, MSG_HUAWEI_2}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1446}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1449}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x14ad}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x14b5}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x14b7}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x14ba}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x14c1}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x14c3}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x14c4}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x14c5}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x14d1}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x14fe}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1505}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x151a}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1520}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1521}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1523}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1526}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1553}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1557}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x155b}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x156a}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1576}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x157d}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1583}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x15ca}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x15e7}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1c0b}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1c1b}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1c24}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1da1}, MSG_HUAWEI_3}, {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f01}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f02}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f03}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f11}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f15}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f16}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f17}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f18}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f19}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f1b}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f1c}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f1d}, MSG_HUAWEI_3}, + {{ 0, 0, 0, HUAWEI_VENDOR, 0x1f1e}, MSG_HUAWEI_3}, {{ 0, 0, 0, NOKIA_VENDOR, 0x060c}, MSG_NOKIA_1}, {{ 0, 0, 0, NOKIA_VENDOR, 0x0610}, MSG_NOKIA_1}, {{ 0, 0, 0, NOKIA_VENDOR, 0x061d}, MSG_NOKIA_1}, @@ -388,7 +408,7 @@ my_get_msg_type(const usb_device_descriptor *desc, int index) case 2: return kDevices[i].type3; } - + } return MSG_NONE; @@ -412,7 +432,7 @@ my_modeswitch(my_device* device) TRACE_ALWAYS("send message %d failed\n", i + 1); return err; } - + TRACE("device switched: %p\n", device); char data[36]; @@ -422,9 +442,9 @@ my_modeswitch(my_device* device) i + 1, device->status); return err; } - TRACE("device switched (response length %ld)\n", device->actual_length); + TRACE("device switched (response length %ld)\n", device->actual_length); } - + TRACE("device switched: %p\n", device); return B_OK;