Ignore:
Timestamp:
01/06/11 17:19:22 (2 years ago)
Author:
BrainSlayer
Message:

support some nokia devices

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/router/libutils/lib3g.c

    r15805 r15995  
    231231                "MessageContent=\"555342431234567800000000000006bd000000020000000000000000000000\"\n"); 
    232232        fprintf(out, "NeedResponse=1\n"); 
     233        fclose(out); 
     234        system("usb_modeswitch -c /tmp/usb_modeswitch.conf"); 
     235        sleep(2); 
     236} 
     237 
     238static void modeswitch_nokia(int needreset, char *controldev) 
     239{ 
     240        FILE *out = fopen("/tmp/usb_modeswitch.conf", "wb"); 
     241        fprintf(out, "DefaultVendor=0x0421\n"); 
     242        fprintf(out, "DefaultProduct=0x060c\n"); 
     243        fprintf(out, "TargetVendor=0x0421\n"); 
     244        fprintf(out, "TargetProduct=0x060e\n"); 
     245        fprintf(out, "CheckSuccess=20\n"); 
     246        fprintf(out, 
     247                "MessageContent=\"5553424312345678000000000000061b000000020000000000000000000000\"\n"); 
     248        fclose(out); 
     249        system("usb_modeswitch -c /tmp/usb_modeswitch.conf"); 
     250        out = fopen("/tmp/usb_modeswitch.conf", "wb"); 
     251        fprintf(out, "DefaultVendor=0x0421\n"); 
     252        fprintf(out, "DefaultProduct=0x0610\n"); 
     253        fprintf(out, "TargetVendor=0x0421\n"); 
     254        fprintf(out, "TargetProduct=0x0612\n"); 
     255        fprintf(out, "CheckSuccess=20\n"); 
     256        fprintf(out, 
     257                "MessageContent=\"5553424312345678000000000000061b000000020000000000000000000000\"\n"); 
    233258        fclose(out); 
    234259        system("usb_modeswitch -c /tmp/usb_modeswitch.conf"); 
     
    410435        {0x19d2, 0xfff1, "option", "1", "3", 2, NULL, "ZTE generic (modem mode)"},      // 
    411436        {0x19d2, 0xffff, "option", "1", "3", 2, NULL, "ZTE generic (modem mode)"},      // 
     437        {0x0421, 0x060c, "option", "0", "0", 2, &modeswitch_nokia, "Nokia CS-10 (cdrom mode)"}, // 
     438        {0x0421, 0x060e, "option", "0", "0", 2, NULL, "Nokia CS-10 (modem mode)"},      // 
     439        {0x0421, 0x0610, "option", "0", "0", 2, &modeswitch_nokia, "Nokia CS-15 (cdrom mode)"}, // 
     440        {0x0421, 0x0612, "option", "0", "0", 2, NULL, "Nokia CS-15 (modem mode)"},      // 
    412441 
    413442        {0xffff, 0xffff, NULL, NULL, NULL, 0, NULL, NULL}       // 
     
    494523                                    (devicelist[devicecount].datadevice, "hso")) 
    495524                                        sprintf(data, "hso"); 
    496                                 else 
    497                                         sprintf(data, "/dev/usb/tts/%s", 
    498                                                 devicelist[devicecount]. 
    499                                                 datadevice); 
     525                                else { 
     526                                        if (devicelist[devicecount].vendor == 
     527                                            0x0421) 
     528                                                sprintf(data, "/dev/ttyACM%s", 
     529                                                        devicelist 
     530                                                        [devicecount].datadevice); 
     531                                        else 
     532                                                sprintf(data, "/dev/usb/tts/%s", 
     533                                                        devicelist 
     534                                                        [devicecount].datadevice); 
     535 
     536                                } 
    500537                                nvram_set("3gdata", data); 
    501538                        } 
     
    510547                                devicelist[devicecount].customsetup(needreset, 
    511548                                                                    devicelist 
    512                                                                     [devicecount].controldevice); 
     549                                                                    [devicecount]. 
     550                                                                    controldevice); 
    513551                        static char control[32]; 
    514552                        if (!strcmp 
    515553                            (devicelist[devicecount].controldevice, "hso")) 
    516554                                sprintf(control, "hso"); 
    517                         else 
    518                                 sprintf(control, "/dev/usb/tts/%s", 
    519                                         devicelist[devicecount].controldevice); 
     555                        else { 
     556                                if (devicelist[devicecount].vendor == 0x0421) 
     557                                        sprintf(control, "/dev/ttyACM%s", 
     558                                                devicelist[devicecount]. 
     559                                                controldevice); 
     560                                else 
     561                                        sprintf(control, "/dev/usb/tts/%s", 
     562                                                devicelist[devicecount]. 
     563                                                controldevice); 
     564                        } 
    520565                        return control; 
    521566                } 
     
    523568        } 
    524569        //not found, use generic implementation (tts0, all drivers) 
    525  
     570        insmod("cdc_acm"); 
    526571        insmod("usbserial"); 
    527572        insmod("sierra"); 
Note: See TracChangeset for help on using the changeset viewer.