BOOL CDeviceDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 CCUGBLinkerDlg* pMainWnd=(CCUGBLinkerDlg*)theApp.m_pMainWnd; CString curNicDes; int curNicIndex=0; pcap_if_t* alldevs=finddevs(); pcap_if_t* d=NULL; int i=0; for(d = alldevs; d != NULL; d = d->next,i++) { m_lstDev.AddString(CString(d->description)); if (CString(d->name)==m_curNIC) { curNicIndex=i; } } if (alldevs) { pcap_freealldevs(alldevs); } m_lstDev.SetCurSel(curNicIndex); OnLbnSelchangeListDevice(); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE }
void CDeviceDlg::OnLbnSelchangeListDevice() { // TODO: 在此添加控件通知处理程序代码 pcap_if_t* alldevs=finddevs(); pcap_if_t* d=NULL; CString nicDes,strInfo; int index=m_lstDev.GetCurSel(); if (index>=0) { m_lstDev.GetText(index,nicDes); } for(d = alldevs; d != NULL; d = d->next) { if (nicDes==CString(d->description)) { m_curNIC=CString(d->name); strInfo=CString(d->name); strInfo+=CString(L"\r\n\r\nDescription: ")+CString(d->description); strInfo+=CString(L"\r\nLoopback: ")+CString((d->flags & PCAP_IF_LOOPBACK)?"yes":"no"); for(pcap_addr_t *a=d->addresses;a;a=a->next) { char ip6str[128]; CString temp; temp.Format(L"\r\nAddress Family: #%d",a->addr->sa_family); strInfo+=temp; switch(a->addr->sa_family) { case AF_INET: strInfo+=CString(L"\r\nAddress Family Name: AF_INET"); if (a->addr) strInfo+=CString(L"\r\nAddress: ")+CString(iptos(((struct sockaddr_in *)a->addr)->sin_addr.s_addr)); if (a->netmask) strInfo+=CString(L"\r\nNetmask: ")+CString(iptos(((struct sockaddr_in *)a->netmask)->sin_addr.s_addr)); if (a->broadaddr) strInfo+=CString(L"\r\nBroadcast Address: ")+CString(iptos(((struct sockaddr_in *)a->broadaddr)->sin_addr.s_addr)); if (a->dstaddr) strInfo+=CString(L"\r\nDestination Address: ")+CString(iptos(((struct sockaddr_in *)a->dstaddr)->sin_addr.s_addr)); break; case AF_INET6: strInfo+=CString(L"\r\nAddress Family Name: AF_INET6"); if (a->addr) strInfo+=CString(L"\r\nAddress: ")+CString(ip6tos(a->addr, ip6str, sizeof(ip6str))); break; default: strInfo+=CString(L"\r\nAddress Family Name: Unknown"); break; } } m_txtDevInfo.SetWindowText(strInfo); break; } } if (alldevs) { pcap_freealldevs(alldevs); } }
void threadmain(int argc, char **argv) { Dev *yd; char *devdir = nil; Ep *ep; int csps[] = {YurexCSP, 0}; int i; if(finddevs(matchdevcsp, csps, &devdir, 1) < 1){ fprint(2, "No yurex device\n"); threadexitsall("yurex not found"); } yd = opendev(devdir); if(yd == nil) sysfatal("opendev: %r"); if(configdev(yd)<0) sysfatal("configdev: %r"); for(i = 0; i < nelem(yd->usb->ep); i++){ if((ep = yd->usb->ep[i]) == nil) break; if(ep->type == Eintr && ep->dir == Ein) if(ep->iface->csp == YurexCSP){ yc.ep = openep(yd, ep->id); if(yc.ep == nil) sysfatal("YUREX: %s: openep %d: %r\n", yd->dir, ep->id); if(opendevdata(yc.ep, OREAD) < 0){ fprint(2, "YUERX: %s: opendevdata: %r\n", yc.ep->dir); closedev(yc.ep); yc.ep = nil; break; } fs.tree = alloctree(nil, nil, DMDIR|0777, destroyfile); createfile(fs.tree->root, "bbu", nil, 0444, nil); createfile(fs.tree->root, "mbbups", nil, 0444, nil); threadpostmountsrv(&fs, "yurex", nil, MREPL|MCREATE); proccreate(yurexwork, nil, Stack); } } threadexits(nil); }
void threadmain(int argc, char **argv) { char *devdir; int i; long value[8], volume[8]; Audiocontrol *c; char *p; extern int attachok; Ep *ep; int csps[] = { Audiocsp, 0}; devdir = nil; volume[0] = Undef; for(i = 0; i<8; i++) value[i] = 0; fmtinstall('A', Aconv); fmtinstall('U', Ufmt); quotefmtinstall(); ARGBEGIN{ case 'N': p = EARGF(usage()); /* ignore dev nb */ break; case 'd': usbdebug++; verbose++; break; case 'm': mntpt = EARGF(usage()); break; case 'p': attachok++; break; case 's': srvpost = EARGF(usage()); break; case 'v': volume[0] = strtol(EARGF(usage()), &p, 0); for(i = 1; i < 8; i++) volume[i] = volume[0]; break; case 'V': verbose++; break; default: usage(); }ARGEND switch(argc){ case 0: break; case 1: devdir = argv[0]; break; default: usage(); } if(devdir == nil) if(finddevs(matchdevcsp, csps, &devdir, 1) < 1){ fprint(2, "No usb audio\n"); threadexitsall("usbaudio not found"); } ad = opendev(devdir); if(ad == nil) sysfatal("opendev: %r"); if(configdev(ad) < 0) sysfatal("configdev: %r"); for(i = 0; i < nelem(ad->usb->ddesc); i++) if(ad->usb->ddesc[i] != nil) switch(ad->usb->ddesc[i]->data.bDescriptorType){ case AUDIO_INTERFACE: audio_interface(ad, ad->usb->ddesc[i]); break; case AUDIO_ENDPOINT: audio_endpoint(ad, ad->usb->ddesc[i]); break; } controlchan = chancreate(sizeof(char*), 8); for(i = 0; i < nelem(ad->usb->ep); i++) if((ep = ad->usb->ep[i]) != nil){ if(ep->iface->csp == CSP(Claudio, 2, 0) && ep->dir == Eout) endpt[0] = ep->id; if(ep->iface->csp == CSP(Claudio, 2, 0) && ep->dir == Ein) endpt[1] = ep->id; if(buttonendpt<0 && Class(ep->iface->csp) == Clhid) buttonendpt = ep->id; } if(endpt[0] != -1){ if(verbose) fprint(2, "usb/audio: playback on ep %d\n", endpt[0]); interface[0] = ad->usb->ep[endpt[0]]->iface->id; } if(endpt[1] != -1){ if(verbose) fprint(2, "usb/audio: record on ep %d\n", endpt[0]); interface[1] = ad->usb->ep[endpt[1]]->iface->id; } if(verbose && buttonendpt >= 0) fprint(2, "usb/audio: buttons on ep %d\n", buttonendpt); if(endpt[Play] >= 0){ if(verbose) fprint(2, "Setting default play parameters: %d Hz, %d channels at %d bits\n", defaultspeed[Play], 2, 16); if(findalt(Play, 2, 16, defaultspeed[Play]) < 0){ if(findalt(Play, 2, 16, 48000) < 0) sysfatal("Can't configure playout for %d or %d Hz", defaultspeed[Play], 48000); fprint(2, "Warning, can't configure playout for %d Hz, configuring for %d Hz instead\n", defaultspeed[Play], 48000); defaultspeed[Play] = 48000; } value[0] = 2; if(setcontrol(Play, "channels", value) == Undef) sysfatal("Can't set play channels"); value[0] = 16; if(setcontrol(Play, "resolution", value) == Undef) sysfatal("Can't set play resolution"); } if(endpt[Record] >= 0){ setrec = 1; if(verbose) fprint(2, "Setting default record parameters: " "%d Hz, %d channels at %d bits\n", defaultspeed[Record], 2, 16); i = 2; while(findalt(Record, i, 16, defaultspeed[Record]) < 0) if(i == 2 && controls[Record][Channel_control].max == 1){ fprint(2, "Warning, can't configure stereo " "recording, configuring mono instead\n"); i = 1; }else break; if(findalt(Record, i, 16, 48000) < 0){ endpt[Record] = -1; /* disable recording */ setrec = 0; fprint(2, "Warning, can't configure record for %d Hz or %d Hz\n", defaultspeed[Record], 48000); }else fprint(2, "Warning, can't configure record for %d Hz, " "configuring for %d Hz instead\n", defaultspeed[Record], 48000); defaultspeed[Record] = 48000; if(setrec){ value[0] = i; if(setcontrol(Record, "channels", value) == Undef) sysfatal("Can't set record channels"); value[0] = 16; if(setcontrol(Record, "resolution", value) == Undef) sysfatal("Can't set record resolution"); } } getcontrols(); /* Get the initial value of all controls */ value[0] = defaultspeed[Play]; if(endpt[Play] >= 0 && setcontrol(Play, "speed", value) < 0) sysfatal("can't set play speed"); value[0] = defaultspeed[Record]; if(endpt[Record] >= 0 && setcontrol(Record, "speed", value) < 0) fprint(2, "%s: can't set record speed\n", argv0); value[0] = 0; setcontrol(Play, "mute", value); if(volume[0] != Undef){ c = &controls[Play][Volume_control]; if(*p == '%' && c->min != Undef) for(i = 0; i < 8; i++) volume[i] = (volume[i]*c->max + (100-volume[i])*c->min)/100; if(c->settable) setcontrol(Play, "volume", volume); c = &controls[Record][Volume_control]; if(c->settable && setrec) setcontrol(Record, "volume", volume); } if(buttonendpt > 0){ buttondev = openep(ad, buttonendpt); if(buttondev == nil) sysfatal("openep: buttons: %r"); if(opendevdata(buttondev, OREAD) < 0) sysfatal("open buttons fd: %r"); proccreate(buttonproc, nil, STACKSIZE); } proccreate(controlproc, nil, STACKSIZE); proccreate(serve, nil, STACKSIZE); threadexits(nil); }