From: kolja g. <kol...@us...> - 2005-09-30 15:43:21
|
Update of /cvsroot/eciadsl/usermode In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17659 Modified Files: gs7070.h gsinterface.h modems.db gs7470.h pusb.h gsinterface.c eciadsl-pppoeci.c ecimsgh.h gs7070.c pusb-linux.c util.c util.h ecimsgh.c gs7470.c Log Message: cosmetic changes and performance enhancement Index: gsinterface.h =================================================================== RCS file: /cvsroot/eciadsl/usermode/gsinterface.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** gsinterface.h 25 Sep 2005 08:21:32 -0000 1.6 --- gsinterface.h 30 Sep 2005 15:43:08 -0000 1.7 *************** *** 88,96 **** }; ! int gsSetControl(unsigned char* buffer); ! void gsGetResponse(unsigned char* buffer); ! void allocateGSint(void); ! void deallocateGSint(void); ! void getAal5HeaderStructure(const unsigned char* aal5Header, struct aal5_header_st* aal5HeaderOut); --- 88,92 ---- }; ! inline void getAal5HeaderStructure(const unsigned char* aal5Header, struct aal5_header_st* aal5HeaderOut); *************** *** 101,106 **** * (retrieves informations related to ep handled by required altIface * and set it up on eci_device structure) */ ! int gsGetDeviceIfaceInfo(pusb_device_t dev, unsigned short int alt_interface); ! const char * get_chipset_descr(eci_device_chiset eci_chipset); #endif --- 97,102 ---- * (retrieves informations related to ep handled by required altIface * and set it up on eci_device structure) */ ! inline int gsGetDeviceIfaceInfo(pusb_device_t dev, unsigned short int alt_interface); ! inline const char * get_chipset_descr(eci_device_chiset eci_chipset); #endif Index: eciadsl-pppoeci.c =================================================================== RCS file: /cvsroot/eciadsl/usermode/eciadsl-pppoeci.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** eciadsl-pppoeci.c 25 Sep 2005 08:21:32 -0000 1.15 --- eciadsl-pppoeci.c 30 Sep 2005 15:43:08 -0000 1.16 *************** *** 80,87 **** - add the frame header to array frame_header - specify the frame header length in array frame_header_len ! - update max_frame_header_len if necessary Antoine REVERSAT aka Crevetor 4/1/2004 : These last days : got rid of linux/ * includes (thanks to MD) Added support for 2.6 kernels (binary stays the same but works for both kernels) ! Changed pusb_set_interface_alt to allow alt setting 0 to be used (which wasn't the case before) 21/11/2003 Kolja (gavaatbergamoblog.it) --- 80,87 ---- - add the frame header to array frame_header [...996 lines suppressed...] fatal_error(ERR_PUSB_SET_INTERFACE, errText); } /* retreive altiface endpoint infos - kolja */ ! gsGetDeviceIfaceInfo(fdusb, pusb_alt_interface); ep_int = pusb_endpoint_open(fdusb, eci_device.eci_int_ep, O_RDWR); *************** *** 1994,1998 **** pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); ! g_fdin = fdin; if (pthread_create(&th_id, &attr, fn_handle_ep_data_out, NULL) != 0) --- 1950,1954 ---- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); ! gfdin = fdin; if (pthread_create(&th_id, &attr, fn_handle_ep_data_out, NULL) != 0) Index: ecimsgh.h =================================================================== RCS file: /cvsroot/eciadsl/usermode/ecimsgh.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ecimsgh.h 30 May 2005 11:55:36 -0000 1.1 --- ecimsgh.h 30 Sep 2005 15:43:08 -0000 1.2 *************** *** 56,63 **** }; ! int rcvEciMsg(struct eci_msg* ecimsg, int wait, int force_read); ! int sndEciMsg(enum EciadslMsgCmd msgcmd, char * data, int datasize, long DestEciPT, int wait); ! int initEciMsgQueue(long EciPT); ! int deallocEciMsgQueue(); #endif --- 56,63 ---- }; ! inline int rcvEciMsg(struct eci_msg* ecimsg, int wait, int force_read); ! inline int sndEciMsg(enum EciadslMsgCmd msgcmd, char * data, int datasize, long DestEciPT, int wait); ! inline int initEciMsgQueue(long EciPT); ! inline int deallocEciMsgQueue(); #endif Index: gs7070.c =================================================================== RCS file: /cvsroot/eciadsl/usermode/gs7070.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** gs7070.c 25 Sep 2005 08:21:32 -0000 1.7 --- gs7070.c 30 Sep 2005 15:43:08 -0000 1.8 *************** *** 76,365 **** } - /* Manages commands sent from the modem */ - int gs7070SetControl(unsigned char* buffer) - { - unsigned short controlcode=(buffer[0]<<8 )|buffer[1]; - /* Check for junk/unknown stuff, because it probably means that the line - has dropped */ - if (controlcode==0x0C0C) - return(0); - if (controlcode==0x7311 || controlcode==0x5311) - { - if (controlcode==0x7311 && gs7070->replace73->count==5) - { - gs7070->replace73->count=0; - if (gs7070->controlcodecount==1 && gs7070->controlcodes[1]==0x7341) - { - gs7070->count7341++; - if (gs7070->count7341==3) - { - gs7070->replace73->replace[0]=0x73; - gs7070->replace73->replace[1]=0x0F; - } - } - } - else - if (controlcode==0x5311 && gs7070->replace53->count==5) - { - gs7070->replace53->count=0; - if (gs7070->controlcodecount==1 && gs7070->controlcodes[1]==0x7341) - { - if (gs7070->replace53->replace[0]==0xC3 - && gs7070->replace53->replace[1]==0x39) - { - gs7070->replace53->replace[0]=0x43; - gs7070->replace53->replace[1]=0x01; - } - } - - } - return(0); /* nothing to do */ - } - - /* check to see if we have a new control code to put into the buffer */ - if (gs7070->controlcodecount==-1) - { - gs7070->controlcodecount++; - gs7070->controlcodes[gs7070->controlcodecount]=controlcode; - gs7070->controlseqcount=1; - } - else - { - if (gs7070->controlcodes[gs7070->controlcodecount]!=controlcode) - { - if (gs7070->controlcodecount>=CONTROLCODEBUFFERSIZE-1) - { - printf("Too many control codes without a reset, expect a fatal error!\n"); - return(GSSYNCERROR); - } - - if (gs7070->controlseqcount!=3) - printf("Unexpected control code change %d\n", - gs7070->controlseqcount); - /* See if the we have received a reset command */ - /* also a 0xF343? */ - if (controlcode==0xF301) - { /* F301 is some kind of reset command */ - printf("Command change received\n"); - gs7070->controlcodecount=0; - /* gs7070->controlseqcount=0; */ - } - else - /* No reset so add the new command onto the end of the control - code list */ - gs7070->controlcodecount++; - gs7070->controlcodes[gs7070->controlcodecount]=controlcode; - gs7070->controlseqcount=1; - } - else - gs7070->controlseqcount++; - } - /* Big nasty state catcher comming up!! - One day, maybe sometime in the future this can be replaced with some - propper cntrol code!!! - */ - if (gs7070->controlseqcount==1) - { - /* - I think the first down the line is a f343? hmm... - I get the odd F343 code that needs handeling - 0xF343 looks like a 'opps I didn't expet that, start again code', - I get lots of them if I don't generate the correct responses - I should imagine the correct response is 63 01 and 43 01 - setup the expected responses for the controlregs; - the list of known control codes are as follows - - also sometimes if the control sequence is mucked up I get a single - 0xF301 always 0xF301 (reset) followed by - 0xf3 13 - 0xf3 4f --0x7311 should responed 0x63 53(possibly the first time) - or 0xE3 0x51 - or - 0x73 4D -- 0x7311 should responed 0x63 0B(possibley the first time) - or 0xE3 0B - or - 0x73 41 --This is usually the first control seq I get after the modem - has connected to the ISP - - When the line drops the modem sends junk.... - - And I should respond with ????? something to drop the connection? - response to 0x73 41 is usually - 73 11 (63 01) - 53 11 (c3 39) - 73 11 (63 01) - 53 11 (43 01) - 73 11 (63 01) - 53 11 (43 01) - 73 11 (73 0f) - */ - if (gs7070->controlcodecount==0) - { - gs7070->replace53->replace[0]=0x43; - gs7070->replace53->replace[1]=0x01; - gs7070->replace53->count=0; - gs7070->replace73->replace[0]=0x63; - gs7070->replace73->replace[1]=0x01; - gs7070->replace73->count=0; - } - else - if (gs7070->controlcodecount==1) - { - switch (gs7070->controlcodes[0]) - { - case 0xf301: - printf("0xF301\n"); - switch (gs7070->controlcodes[1]) - { - case 0x734D: - printf("0x734D\n"); - /* this is sometime 0x63 53 (only ever the first - time for me and only sometimes)*/ - if (gs7070->count734D==0){ - gs7070->replace73->replace[0]=0x63; - gs7070->replace73->replace[1]=0x0B; - - gs7070->count734D=1; - } - else - { - gs7070->replace73->replace[0]=0xE3; - gs7070->replace73->replace[1]=0x0B; - } - gs7070->replace73->count=0; - break; - case 0x7341: - printf("0x7341\n"); - gs7070->count7341=0; - gs7070->replace73->replace[0]=0x63; - gs7070->replace73->replace[1]=0x01; - gs7070->replace73->count=0; - gs7070->replace53->replace[0]=0xc3; - gs7070->replace53->replace[1]=0x39; - gs7070->replace53->count=0; - break; - case 0xF313: - printf("0xF313\n"); - /* This isn't an end code and should be followed - by F3 4f so don't report */ - break; - default: - ; - /* default: (ANSI C fix) */ - /* ahhhh I don't know what the modem is trying - to tell me! */ - }; - break; - default: - printf("Unknown control code sequence count1 %04x\n", - gs7070->controlcodes[1]); - }; - } - else - if (gs7070->controlcodecount==2) - { - /* need to add the rest of the codes in here!! */ - switch (gs7070->controlcodes[2]) - { - case 0xF34F: - printf("0xF34F\n"); - gs7070->replace73->replace[0]=0xE3; - gs7070->replace73->replace[1]=0x51; - gs7070->replace73->count=0; - break; - default: - printf("More control codes than expected count%d %04x \n", - gs7070->controlcodecount, - gs7070->controlcodes[gs7070->controlcodecount]); - }; - } - else - printf("Unknown control code sequence count0 %04x\n", - gs7070->controlcodes[0]); - - } - else - if (gs7070->controlseqcount==4) - printf("Expected change of control code %04x\n", - gs7070->controlcodes[3]); - return(0); - } - - void replaceme(GS7070ControlReg* rp, unsigned char* data) - { - rp->count++; - if (rp->count<=2) - return; /*don't need to replace anything the first two times around*/ - data[0]=rp->replace[0]; - data[1]=rp->replace[1]; - } - - /* Returns the correct response to a control command sent by the modem, - gs7070SetControl must be called first so that we are in the correct - mode for the response. - */ - void gs7070GetResponse(unsigned char* buffer) - { - if ((buffer[0]!=0x73 && buffer[0]!=0x53) || buffer[1]!=0x11) - return; /* nothing to do */ - switch (buffer[0]) - { - case 0x53: - replaceme(gs7070->replace53, buffer); - break; - case 0x73: - replaceme(gs7070->replace73, buffer); - break; - default: - ; - }; - } - - /* Allocate a regster and setup some values */ - GS7070ControlReg* allocategs7070ctlreg(char matchhi, char matchlow, - char replacehi, char replacelow) - { - GS7070ControlReg* rp=(GS7070ControlReg*)malloc(sizeof(GS7070ControlReg)); - - rp->count=0; - rp->match[0]=matchhi; - rp->match[1]=matchlow; - rp->replace[0]=replacehi; - rp->replace[1]=replacelow; - return(rp); - } - - /* Clean up a register */ - void deallocategs7070ctlreg(GS7070ControlReg* gscr) - { - free(gscr); - } - - /* Allocate the gs7070 interrupt handler and do some initilisation */ - void allocateGS7070int(void) - { - /*which way round should a malloc be?*/ - gs7070=(GS7070ControlINT*)malloc(sizeof(GS7070ControlINT)); - - gs7070->controlcodecount=-1; - gs7070->replace73=allocategs7070ctlreg(0x73, 0x11, 0x63, 0x01); - gs7070->replace53=allocategs7070ctlreg(0x53, 0x11, 0x43, 0x01); - gs7070->controlseqcount=0; - gs7070->count7341=0; - gs7070->count734D=0; - } - - /* Deallocate the gs7070 interrupt handler and clean up */ - void deallocateGS7070int(){ - deallocategs7070ctlreg(gs7070->replace73); - gs7070->replace73=0; - deallocategs7070ctlreg(gs7070->replace53); - gs7070->replace53=0; - gs7070->controlcodecount=-1; - free(gs7070); - } - /* get structure for aal5 header */ ! void getAal5HeaderStructure7070(const unsigned char* aal5Header, struct aal5_header_st* aal5HeaderOut) { --- 76,81 ---- } /* get structure for aal5 header */ ! static inline void getAal5HeaderStructure7070(const unsigned char* aal5Header, struct aal5_header_st* aal5HeaderOut) { Index: ecimsgh.c =================================================================== RCS file: /cvsroot/eciadsl/usermode/ecimsgh.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ecimsgh.c 30 May 2005 11:55:36 -0000 1.1 --- ecimsgh.c 30 Sep 2005 15:43:08 -0000 1.2 *************** *** 45,52 **** /* process calling for queue Messages*/ ! long lProcessType = (long)ECI_PT_UNKNOWN; /*return message queue id and create it if it still does not set*/ ! int getMsgQueueId(){ /*check if message queue id is already setted */ if(iMsgQueueId==-1){ --- 45,52 ---- /* process calling for queue Messages*/ ! static long lProcessType = (long)ECI_PT_UNKNOWN; /*return message queue id and create it if it still does not set*/ ! inline int getMsgQueueId(){ /*check if message queue id is already setted */ if(iMsgQueueId==-1){ *************** *** 67,71 **** } ! int rcvEciMsg(struct eci_msg* ecimsg, int wait, int force_read){ ssize_t retval; int msgflg=0; --- 67,71 ---- } ! inline int rcvEciMsg(struct eci_msg* ecimsg, int wait, int force_read){ ssize_t retval; int msgflg=0; *************** *** 88,92 **** } ! int sndEciMsg(enum EciadslMsgCmd msgcmd, char * data, int datasize, long DestEciPT, int wait){ int retval; int i; --- 88,92 ---- } ! inline int sndEciMsg(enum EciadslMsgCmd msgcmd, char * data, int datasize, long DestEciPT, int wait){ int retval; int i; *************** *** 116,120 **** ! int initEciMsgQueue(long EciPT){ lProcessType = EciPT; return(0); --- 116,120 ---- ! inline int initEciMsgQueue(long EciPT){ lProcessType = EciPT; return(0); *************** *** 124,128 **** * remember to handle all termination signal (at least : SIGTERM, SIGINT, SIGQUIT) */ ! int deallocEciMsgQueue(){ struct msqid_ds queueInfo; int retval=0; --- 124,128 ---- * remember to handle all termination signal (at least : SIGTERM, SIGINT, SIGQUIT) */ ! inline int deallocEciMsgQueue(){ struct msqid_ds queueInfo; int retval=0; Index: pusb.h =================================================================== RCS file: /cvsroot/eciadsl/usermode/pusb.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** pusb.h 29 Jun 2005 08:20:46 -0000 1.3 --- pusb.h 30 Sep 2005 15:43:08 -0000 1.4 *************** *** 18,22 **** int pusb_close(pusb_device_t dev); ! int pusb_control_msg(pusb_device_t dev, int request_type, int request, int value, int index, --- 18,22 ---- int pusb_close(pusb_device_t dev); ! inline int pusb_control_msg(pusb_device_t dev, int request_type, int request, int value, int index, *************** *** 29,52 **** pusb_endpoint_t pusb_endpoint_open(pusb_device_t dev, int epnum, int flags); ! int pusb_endpoint_read(pusb_endpoint_t ep, unsigned char *buf, int size, int timeout); ! int pusb_endpoint_write(pusb_endpoint_t ep, const unsigned char *buf, int size, int timeout); ! int pusb_endpoint_submit_read (pusb_endpoint_t ep, unsigned char * buf, int size, int signr); ! int pusb_endpoint_submit_write(pusb_endpoint_t ep, unsigned char * buf, int size, int signr); ! int pusb_endpoint_submit_int_read(pusb_endpoint_t ep, unsigned char * buf, int size, int signr); /* buf is at least pkt_size*pkt_nb bytes */ ! int pusb_endpoint_submit_iso_read(pusb_endpoint_t ep, unsigned char * buf, int pkt_size, int pkt_nb, int signr); /* should be better to pass pusb_device_t instead of pusb_endpoint_t */ ! pusb_urb_t pusb_device_get_urb(pusb_device_t dev); int pusb_endpoint_reset(pusb_endpoint_t ep); --- 29,52 ---- pusb_endpoint_t pusb_endpoint_open(pusb_device_t dev, int epnum, int flags); ! inline int pusb_endpoint_read(pusb_endpoint_t ep, unsigned char *buf, int size, int timeout); ! inline int pusb_endpoint_write(pusb_endpoint_t ep, const unsigned char *buf, int size, int timeout); ! inline int pusb_endpoint_submit_read (pusb_endpoint_t ep, unsigned char * buf, int size, int signr); ! inline int pusb_endpoint_submit_write(pusb_endpoint_t ep, unsigned char * buf, int size, int signr); ! inline int pusb_endpoint_submit_int_read(pusb_endpoint_t ep, unsigned char * buf, int size, int signr); /* buf is at least pkt_size*pkt_nb bytes */ ! inline int pusb_endpoint_submit_iso_read(pusb_endpoint_t ep, unsigned char * buf, int pkt_size, int pkt_nb, int signr); /* should be better to pass pusb_device_t instead of pusb_endpoint_t */ ! inline pusb_urb_t pusb_device_get_urb(pusb_device_t dev); int pusb_endpoint_reset(pusb_endpoint_t ep); *************** *** 58,65 **** int pusb_urb_get_epnum(pusb_urb_t urb); ! int pusb_urb_buffer_first(pusb_urb_t urb, unsigned char ** pbuf, int * psize, int * idx); ! int pusb_urb_buffer_next(pusb_urb_t urb, unsigned char ** pbuf, int * psize, int * idx); --- 58,65 ---- int pusb_urb_get_epnum(pusb_urb_t urb); ! inline int pusb_urb_buffer_first(pusb_urb_t urb, unsigned char ** pbuf, int * psize, int * idx); ! inline int pusb_urb_buffer_next(pusb_urb_t urb, unsigned char ** pbuf, int * psize, int * idx); Index: gsinterface.c =================================================================== RCS file: /cvsroot/eciadsl/usermode/gsinterface.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** gsinterface.c 25 Sep 2005 08:21:32 -0000 1.4 --- gsinterface.c 30 Sep 2005 15:43:08 -0000 1.5 *************** *** 129,136 **** } __attribute__ ((packed)) usb_desc_endpoint_t; - int (*pF_gsSetControl)(unsigned char*); - void (*pF_gsGetResponse)(unsigned char*); - void (*pF_allocateGSint)(void); - void (*pF_deallocateGSint)(void); void (*pF_getAal5HeaderStructure)(const unsigned char*, struct aal5_header_st*); --- 129,132 ---- *************** *** 140,154 **** if (memcmp(chipset, "GS7470", 6)==0){ gs7470InitParams(); - pF_gsSetControl = gs7470SetControl; - pF_gsGetResponse = gs7470GetResponse; - pF_allocateGSint = allocateGS7470int; - pF_deallocateGSint = deallocateGS7470int; pF_getAal5HeaderStructure = getAal5HeaderStructure7470; }else{ gs7070InitParams(); - pF_gsSetControl = gs7070SetControl; - pF_gsGetResponse = gs7070GetResponse; - pF_allocateGSint = allocateGS7070int; - pF_deallocateGSint = deallocateGS7070int; pF_getAal5HeaderStructure = getAal5HeaderStructure7070; } --- 136,142 ---- *************** *** 158,162 **** * (retrieves informations related to ep handled by required altIface * and set it up on eci_device structure) */ ! int gsGetDeviceIfaceInfo(pusb_device_t dev, unsigned short int alt_interface){ usb_desc_device_t device; /* we fixe to use Interface 0 - kolja*/ --- 146,150 ---- * (retrieves informations related to ep handled by required altIface * and set it up on eci_device structure) */ ! inline int gsGetDeviceIfaceInfo(pusb_device_t dev, unsigned short int alt_interface){ usb_desc_device_t device; /* we fixe to use Interface 0 - kolja*/ *************** *** 263,283 **** } ! int gsSetControl(unsigned char* buffer){ ! return(pF_gsSetControl(buffer)); ! } ! ! void gsGetResponse(unsigned char* buffer){ ! pF_gsGetResponse(buffer); ! } ! ! void allocateGSint(void){ ! pF_allocateGSint(); ! } ! ! void deallocateGSint(void){ ! pF_deallocateGSint(); ! } ! ! void getAal5HeaderStructure(const unsigned char* aal5Header, struct aal5_header_st* aal5HeaderOut) { --- 251,255 ---- } ! inline void getAal5HeaderStructure(const unsigned char* aal5Header, struct aal5_header_st* aal5HeaderOut) { Index: gs7070.h =================================================================== RCS file: /cvsroot/eciadsl/usermode/gs7070.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** gs7070.h 23 Feb 2005 11:51:51 -0000 1.5 --- gs7070.h 30 Sep 2005 15:43:08 -0000 1.6 *************** *** 55,65 **** void gs7070InitParams(void); ! int gs7070SetControl(unsigned char* buffer); ! void gs7070GetResponse(unsigned char* buffer); ! GS7070ControlReg* allocategs7070ctlreg(char matchhi, char matchlow, char replacehi, char replacelow); ! void deallocategs7070ctlreg(GS7070ControlReg* gscr); ! void allocateGS7070int(void); ! void deallocateGS7070int(void); ! void getAal5HeaderStructure7070(const unsigned char* aal5Header, struct aal5_header_st* aal5HeaderOut); --- 55,59 ---- void gs7070InitParams(void); ! static inline void getAal5HeaderStructure7070(const unsigned char* aal5Header, struct aal5_header_st* aal5HeaderOut); Index: pusb-linux.c =================================================================== RCS file: /cvsroot/eciadsl/usermode/pusb-linux.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** pusb-linux.c 29 Jun 2005 08:20:46 -0000 1.19 --- pusb-linux.c 30 Sep 2005 15:43:08 -0000 1.20 *************** *** 69,73 **** */ ! int test_file(const char* path, int vendorID, int productID) { int fd; --- 69,73 ---- */ ! static inline int test_file(const char* path, int vendorID, int productID) { int fd; *************** *** 172,176 **** ! static int is_kernel_2_5() { struct utsname uts; --- 172,176 ---- ! static inline int is_kernel_2_5() { struct utsname uts; *************** *** 187,191 **** ! static pusb_device_t make_device(int fd) { pusb_device_t dev; --- 187,191 ---- ! static inline pusb_device_t make_device(int fd) { pusb_device_t dev; *************** *** 239,243 **** } ! int pusb_control_msg(pusb_device_t dev, int request_type, int request, int value, int index, --- 239,243 ---- } ! inline int pusb_control_msg(pusb_device_t dev, int request_type, int request, int value, int index, *************** *** 282,286 **** } ! pusb_endpoint_t pusb_endpoint_open(pusb_device_t dev, int epnum, int flags) { pusb_endpoint_t ep; --- 282,286 ---- } ! inline pusb_endpoint_t pusb_endpoint_open(pusb_device_t dev, int epnum, int flags) { pusb_endpoint_t ep; *************** *** 299,303 **** } ! int pusb_endpoint_rw_no_timeout(int fd, int ep, unsigned char* buf, int size) { --- 299,303 ---- } ! inline int pusb_endpoint_rw_no_timeout(int fd, int ep, unsigned char* buf, int size) { *************** *** 341,345 **** } ! int pusb_endpoint_rw(int fd, int ep, unsigned char* buf, int size, int timeout) { struct usbdevfs_bulktransfer bulk; --- 341,345 ---- } ! inline int pusb_endpoint_rw(int fd, int ep, unsigned char* buf, int size, int timeout) { struct usbdevfs_bulktransfer bulk; *************** *** 374,378 **** } ! int pusb_endpoint_read(pusb_endpoint_t ep, unsigned char* buf, int size, int timeout) { --- 374,378 ---- } ! inline int pusb_endpoint_read(pusb_endpoint_t ep, unsigned char* buf, int size, int timeout) { *************** *** 382,386 **** } ! int pusb_endpoint_write(pusb_endpoint_t ep, const unsigned char* buf, int size, int timeout) { --- 382,386 ---- } ! inline int pusb_endpoint_write(pusb_endpoint_t ep, const unsigned char* buf, int size, int timeout) { *************** *** 400,404 **** } ! int pusb_endpoint_submit_read (pusb_endpoint_t ep, unsigned char* buf, int size, int signr) { --- 400,404 ---- } ! inline int pusb_endpoint_submit_read (pusb_endpoint_t ep, unsigned char* buf, int size, int signr) { *************** *** 432,436 **** } ! int pusb_endpoint_submit_write(pusb_endpoint_t ep, unsigned char* buf, int size, int signr) { --- 432,436 ---- } ! inline int pusb_endpoint_submit_write(pusb_endpoint_t ep, unsigned char* buf, int size, int signr) { *************** *** 465,469 **** } ! int pusb_endpoint_submit_int_read (pusb_endpoint_t ep, unsigned char* buf, int size, int signr) { --- 465,469 ---- } ! inline int pusb_endpoint_submit_int_read (pusb_endpoint_t ep, unsigned char* buf, int size, int signr) { *************** *** 498,502 **** /* buf is at least pkt_size*pkt_nb bytes */ ! int pusb_endpoint_submit_iso_read(pusb_endpoint_t ep, unsigned char* buf, int pkt_size, int pkt_nb, int signr) { --- 498,502 ---- /* buf is at least pkt_size*pkt_nb bytes */ ! inline int pusb_endpoint_submit_iso_read(pusb_endpoint_t ep, unsigned char* buf, int pkt_size, int pkt_nb, int signr) { *************** *** 545,549 **** */ ! pusb_urb_t pusb_device_get_urb(pusb_device_t dev) { int ret; --- 545,549 ---- */ ! inline pusb_urb_t pusb_device_get_urb(pusb_device_t dev) { int ret; *************** *** 669,673 **** } ! int pusb_urb_buffer_first(pusb_urb_t urb, unsigned char** pbuf, int* psize, int* pidx) { --- 669,673 ---- } ! inline int pusb_urb_buffer_first(pusb_urb_t urb, unsigned char** pbuf, int* psize, int* pidx) { *************** *** 676,680 **** } ! int pusb_urb_buffer_next(pusb_urb_t urb, unsigned char** pbuf, int* psize, int* pidx) { --- 676,680 ---- } ! inline int pusb_urb_buffer_next(pusb_urb_t urb, unsigned char** pbuf, int* psize, int* pidx) { Index: gs7470.h =================================================================== RCS file: /cvsroot/eciadsl/usermode/gs7470.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** gs7470.h 23 Feb 2005 11:51:51 -0000 1.3 --- gs7470.h 30 Sep 2005 15:43:08 -0000 1.4 *************** *** 55,65 **** void gs7470InitParams(void); ! GS7470ControlReg* allocateGS7470CtrlReg(char cdType, unsigned int connType); ! void deallocateGS7470CtrlRegs(GS7470ControlReg* gscrl[]); ! void allocateGS7470int(void); ! void deallocateGS7470int(void); ! int gs7470SetControl(unsigned char* inBuffer); ! void gs7470GetResponse(unsigned char* buffer); ! void getAal5HeaderStructure7470(const unsigned char* aal5Header, struct aal5_header_st* aal5HeaderOut); --- 55,59 ---- void gs7470InitParams(void); ! static inline void getAal5HeaderStructure7470(const unsigned char* aal5Header, struct aal5_header_st* aal5HeaderOut); Index: util.c =================================================================== RCS file: /cvsroot/eciadsl/usermode/util.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** util.c 18 Apr 2005 11:47:16 -0000 1.12 --- util.c 30 Sep 2005 15:43:08 -0000 1.13 *************** *** 12,16 **** struct config_t config; ! void get_unsigned_value(const char* param, unsigned int* var) { unsigned int value; --- 12,16 ---- struct config_t config; ! inline void get_unsigned_value(const char* param, unsigned int* var) { unsigned int value; *************** *** 22,26 **** } ! void get_unsigned_short_value(const char* param, unsigned short int* var) { unsigned short int value; --- 22,26 ---- } ! static inline void get_unsigned_short_value(const char* param, unsigned short int* var) { unsigned short int value; *************** *** 32,36 **** } ! void get_signed_value(const char* param, int* var) { int value; --- 32,36 ---- } ! inline void get_signed_value(const char* param, int* var) { int value; *************** *** 42,46 **** } ! void get_signed_short_value(const char* param, short int* var) { short int value; --- 42,46 ---- } ! static inline void get_signed_short_value(const char* param, short int* var) { short int value; *************** *** 52,56 **** } ! void get_hexa_value(const char* param, unsigned int* var) { unsigned int value; --- 52,56 ---- } ! inline void get_hexa_value(const char* param, unsigned int* var) { unsigned int value; *************** *** 62,66 **** } ! char* strDup(char** var, const char* text) { *var=malloc((strlen(text)+1)*sizeof(char)); --- 62,66 ---- } ! inline char* strDup(char** var, const char* text) { *var=malloc((strlen(text)+1)*sizeof(char)); *************** *** 75,79 **** strncat(dest, src, 4); ! void read_config_file(void) { FILE* file; --- 75,79 ---- strncat(dest, src, 4); ! inline void read_config_file(void) { FILE* file; *************** *** 251,260 **** unsigned int ppos = 0; ! void printprogres(void){ printf ("\r Please Wait.. Synchronisation in progress [%c]", (char)(pchars[ppos])); ppos==3 ? ppos=0 : ppos++; } ! const char * config_filename() { return eciadsl_conf; --- 251,260 ---- unsigned int ppos = 0; ! inline void printprogres(void){ printf ("\r Please Wait.. Synchronisation in progress [%c]", (char)(pchars[ppos])); ppos==3 ? ppos=0 : ppos++; } ! inline const char * config_filename() { return eciadsl_conf; Index: gs7470.c =================================================================== RCS file: /cvsroot/eciadsl/usermode/gs7470.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** gs7470.c 25 Sep 2005 08:21:32 -0000 1.5 --- gs7470.c 30 Sep 2005 15:43:08 -0000 1.6 *************** *** 72,311 **** } - /* Allocate a regster and setup some values */ - GS7470ControlReg* allocateGS7470CtrlReg(char cdType, unsigned int connType){ - GS7470ControlReg* rp=(GS7470ControlReg*)malloc(sizeof(GS7470ControlReg)); - switch(connType){ - case CUR_CONN_F343 : - switch(cdType){ - case 0x73 : - rp->replace = malloc(2); - rp->replace[0] = 0x63; - rp->replace[1] = 0x01; - rp->maxRepPosition=0; - break; - case 0x53 : - rp->replace = malloc(2); - rp->replace[0] = 0x43; - rp->replace[1] = 0x01; - rp->maxRepPosition=0; - break; - default: ; - } - break; - case CUR_CONN_7341 : - switch(cdType){ - case 0x73 : - rp->replace = malloc(6); - rp->replace[0] = 0x63; - rp->replace[1] = 0x01; - rp->replace[2] = 0xe3; - rp->replace[3] = 0x47; - rp->replace[4] = 0x63; - rp->replace[5] = 0x51; - rp->maxRepPosition=2; - break; - case 0x53 : - rp->replace = malloc(8); - rp->replace[0] = 0xc3; - rp->replace[1] = 0xb5; - rp->replace[2] = 0xc3; - rp->replace[3] = 0x53; - rp->replace[4] = 0x43; - rp->replace[5] = 0x4f; - rp->replace[6] = 0xc3; - rp->replace[7] = 0x39; - rp->maxRepPosition=3; - break; - default: ; - } - break; - case CUR_CONN_734D : - switch(cdType){ - case 0x73 : - rp->replace = malloc(2); - rp->replace[0] = 0xe3; - rp->replace[1] = 0x19; - rp->maxRepPosition=0; - break; - case 0x53 : - rp->replace = 0; - rp->maxRepPosition=-1; - break; - default: ; - } - break; - case CUR_CONN_F34F : - switch(cdType){ - case 0x73 : - rp->replace = malloc(2); - rp->replace[0] = 0xe3; /* o 6347 o e345 */ - rp->replace[1] = 0x47; - rp->maxRepPosition=0; - break; - case 0x53 : - rp->replace = 0; - rp->maxRepPosition=-1; - break; - default: ; - } - break; - default : ; - } - rp->count=0; - rp->curRepPosition=0; - return(rp); - } - - /* Clean up a register */ - void deallocateGS7470CtrlRegs(GS7470ControlReg* gscrl[]){ - unsigned int i; - for (i=0; i< sizeof(gscrl); i++){ - free(gscrl[i]); - } - } - - /* Allocate the gs7470 interrupt handler and do some initilisation */ - void allocateGS7470int(void) - { - /*which way round should a malloc be?*/ - gs7470=(GS7470ControlINT*)malloc(sizeof(GS7470ControlINT)); - - /* Allocate GSCtrlReg for cod 0x7311 */ - connCtrlReg73[CUR_CONN_F343] = allocateGS7470CtrlReg(0x73, CUR_CONN_F343); - connCtrlReg73[CUR_CONN_7341] = allocateGS7470CtrlReg(0x73, CUR_CONN_7341); - connCtrlReg73[CUR_CONN_734D] = allocateGS7470CtrlReg(0x73, CUR_CONN_734D); - connCtrlReg73[CUR_CONN_F34F] = allocateGS7470CtrlReg(0x73, CUR_CONN_F34F); - - /* Allocate GSCtrlReg for cod 0x5311 */ - connCtrlReg53[CUR_CONN_F343] = allocateGS7470CtrlReg(0x53, CUR_CONN_F343); - connCtrlReg53[CUR_CONN_7341] = allocateGS7470CtrlReg(0x53, CUR_CONN_7341); - connCtrlReg53[CUR_CONN_734D] = allocateGS7470CtrlReg(0x53, CUR_CONN_734D); - connCtrlReg53[CUR_CONN_F34F] = allocateGS7470CtrlReg(0x53, CUR_CONN_F34F); - - gs7470->controlcodecount=-1; - gs7470->controlseqcount=0; - gs7470->curReplace73=0; - gs7470->curReplace53=0; - gs7470->currentConnection = CUR_CONN_UNKNOWN; - } - - /* Deallocate the gs7470 interrupt handler and clean up */ - void deallocateGS7470int(){ - gs7470->curReplace73=0; - gs7470->curReplace53=0; - free(gs7470); - deallocateGS7470CtrlRegs(connCtrlReg73); - deallocateGS7470CtrlRegs(connCtrlReg53); - } - - /* Manages commands sent from the modem */ - - int gs7470SetControl(unsigned char* inBuffer){ - unsigned short controlcode=(inBuffer[0]<<8 )|inBuffer[1]; - /* Check for junk/unknown stuff, because it probably means that the line - has dropped */ - if (controlcode==0x0C0C) - return(0); - /* check to see if we have a new control code to put into the buffer */ - switch(controlcode){ - case 0xf343 : - gs7470->currentConnection = CUR_CONN_F343; - gs7470->curReplace73 = connCtrlReg73[CUR_CONN_F343]; - gs7470->curReplace73->count = 0; - gs7470->curReplace73->curRepPosition = 0; - gs7470->curReplace53 = connCtrlReg53[CUR_CONN_F343]; - gs7470->curReplace53->count = 0; - gs7470->curReplace53->curRepPosition = 0; - break; - case 0x7341 : - gs7470->currentConnection = CUR_CONN_7341; - gs7470->curReplace73 = connCtrlReg73[CUR_CONN_7341]; - gs7470->curReplace73->count = 0; - gs7470->curReplace73->curRepPosition = 0; - gs7470->curReplace53 = connCtrlReg53[CUR_CONN_7341]; - gs7470->curReplace53->count = 0; - gs7470->curReplace53->curRepPosition = 0; - break; - case 0x734d : - gs7470->currentConnection = CUR_CONN_734D; - gs7470->curReplace73 = connCtrlReg73[CUR_CONN_734D]; - gs7470->curReplace73->count = 0; - gs7470->curReplace73->curRepPosition = 0; - gs7470->curReplace53 = connCtrlReg53[CUR_CONN_734D]; - gs7470->curReplace53->count = 0; - gs7470->curReplace53->curRepPosition = 0; - break; - case 0xf34f : - gs7470->currentConnection = CUR_CONN_F34F; - gs7470->curReplace73 = connCtrlReg73[CUR_CONN_F34F]; - gs7470->curReplace73->count = 0; - gs7470->curReplace73->curRepPosition = 0; - gs7470->curReplace53 = connCtrlReg53[CUR_CONN_F34F]; - gs7470->curReplace53->count = 0; - gs7470->curReplace53->curRepPosition = 0; - break; - default: ; - } - return(0); - } - - /* Returns the correct response to a control command sent by the modem, - gsSetControl must be called first so that we are in the correct - mode for the response. - */ - void gs7470GetResponse(unsigned char* buffer) - { - if ((buffer[0]!=0x73 && buffer[0]!=0x53) || buffer[1]!=0x11) - return; /* nothing to do */ - switch (buffer[0]) - { - case 0x53: - if (gs7470->curReplace53!=0){ - if (gs7470->curReplace53->count==0 && gs7470->curReplace73->maxRepPosition!=-1 && gs7470->curReplace73->count!=0){ - if (gs7470->curReplace73->curRepPosition < gs7470->curReplace73->maxRepPosition){ - gs7470->curReplace73->curRepPosition++; - }else{ - gs7470->curReplace73->curRepPosition=0; - } - gs7470->curReplace73->count = 0; - } - /*BUG : check if curReplace53 has some replace codes */ - if (gs7470->curReplace53->maxRepPosition >0){ - gs7470->curReplace53->count++; - if (gs7470->curReplace53->count<=2){ - /*don't need to replace anything the first two times around*/ - break; - } - buffer[0]= gs7470->curReplace53->replace[(gs7470->curReplace53->curRepPosition *2)]; - buffer[1]= gs7470->curReplace53->replace[(gs7470->curReplace53->curRepPosition *2)+1]; - } - } - break; - case 0x73: - if (gs7470->curReplace73!=0){ - if (gs7470->curReplace73->count==0 && gs7470->curReplace53->maxRepPosition!=-1 && gs7470->curReplace53->count!=0){ - if (gs7470->curReplace53->curRepPosition < gs7470->curReplace53->maxRepPosition){ - gs7470->curReplace53->curRepPosition++; - }else{ - gs7470->curReplace53->curRepPosition=0; - } - gs7470->curReplace53->count = 0; - } - gs7470->curReplace73->count++; - if (gs7470->curReplace73->count<=2){ - /*don't need to replace anything the first two times around*/ - break; - } - buffer[0]= gs7470->curReplace73->replace[(gs7470->curReplace73->curRepPosition *2)]; - buffer[1]= gs7470->curReplace73->replace[(gs7470->curReplace73->curRepPosition *2)+1]; - } - break; - default:; - } - } - - /* get structure for aal5 header */ ! void getAal5HeaderStructure7470(const unsigned char* aal5Header, struct aal5_header_st* aal5HeaderOut) { --- 72,77 ---- } /* get structure for aal5 header */ ! static inline void getAal5HeaderStructure7470(const unsigned char* aal5Header, struct aal5_header_st* aal5HeaderOut) { Index: util.h =================================================================== RCS file: /cvsroot/eciadsl/usermode/util.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** util.h 18 Apr 2005 11:47:15 -0000 1.4 --- util.h 30 Sep 2005 15:43:08 -0000 1.5 *************** *** 21,32 **** }; ! void get_unsigned_value(const char*, unsigned int*); ! void get_signed_value(const char*, int*); ! void get_hexa_value(const char*, unsigned int*); ! void read_config_file(void); ! void printprogres(void); ! char* strDup(char** var, const char* text); ! const char * config_filename(); #endif --- 21,32 ---- }; ! inline void get_unsigned_value(const char*, unsigned int*); ! inline void get_signed_value(const char*, int*); ! inline void get_hexa_value(const char*, unsigned int*); ! inline void read_config_file(void); ! inline void printprogres(void); ! inline char* strDup(char** var, const char* text); ! inline const char * config_filename(); #endif Index: modems.db =================================================================== RCS file: /cvsroot/eciadsl/usermode/modems.db,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** modems.db 27 Jul 2005 16:14:05 -0000 1.31 --- modems.db 30 Sep 2005 15:43:08 -0000 1.32 *************** *** 1,18 **** Aethra Starmodem 0659 0915 0915 0916 GS7070 4 4 ! Allnet ALL768UB 0915 8101 0915 8101 GS7470 5 1 Archtek UGW-8000 0915 0001 0915 0002 GS7070 4 4 Askey ALE070 1690 0205 0915 0206 GS7070 4 4 ! Askey ALE130 1690 0211 1690 0211 GS7470 5 1 ! Askey ALE150 1690 0217 1690 0217 GS7470 5 1 Asus AAM6000UG 0915 0001 0915 0002 GS7070 4 4 Atlantis Land I-Storm 0915 0001 0915 0002 GS7070 4 4 Aztech 100U 0509 0801 0915 0802 GS7070 4 4 BT Voyager 1690 0203 0915 0204 GS7070 4 4 ! BT Voyager 100 1690 0209 1690 0209 GS7470 5 1 BT Voyager 105 1690 0215 1690 0215 GS7470 0 0 Cypress Globespan G7000 0915 0001 0915 0002 GS7070 4 4 D-Link DSL200 0547 2131 0915 8000 GS7070 4 4 ! D-Link DSL200 rev B 0915 8102 0915 8102 GS7470 5 1 ! D-Link DSL200 rev B1 2001 5100 2001 5100 GS7470 5 1 Digicom MichelAngelo 0547 2131 0915 8000 GS7070 4 4 Dynalink ALE070 0547 2131 0915 8000 GS7070 4 4 --- 1,18 ---- Aethra Starmodem 0659 0915 0915 0916 GS7070 4 4 ! Allnet ALL768UB 0915 8101 0915 8101 GS7470 5 5 Archtek UGW-8000 0915 0001 0915 0002 GS7070 4 4 Askey ALE070 1690 0205 0915 0206 GS7070 4 4 ! Askey ALE130 1690 0211 1690 0211 GS7470 5 5 ! Askey ALE150 1690 0217 1690 0217 GS7470 5 5 Asus AAM6000UG 0915 0001 0915 0002 GS7070 4 4 Atlantis Land I-Storm 0915 0001 0915 0002 GS7070 4 4 Aztech 100U 0509 0801 0915 0802 GS7070 4 4 BT Voyager 1690 0203 0915 0204 GS7070 4 4 ! BT Voyager 100 1690 0209 1690 0209 GS7470 5 5 BT Voyager 105 1690 0215 1690 0215 GS7470 0 0 Cypress Globespan G7000 0915 0001 0915 0002 GS7070 4 4 D-Link DSL200 0547 2131 0915 8000 GS7070 4 4 ! D-Link DSL200 rev B 0915 8102 0915 8102 GS7470 5 5 ! D-Link DSL200 rev B1 2001 5100 2001 5100 GS7470 5 5 Digicom MichelAngelo 0547 2131 0915 8000 GS7070 4 4 Dynalink ALE070 0547 2131 0915 8000 GS7070 4 4 *************** *** 21,48 **** Eicon Diva 071d ac81 0915 ac82 GS7070 4 4 Ericsson hm120dp 08ea 00c9 0915 00ca GS7070 4 4 ! Ericsson hm121dp/di 1690 0214 1690 0214 GS7470 5 1 Fujitsu FDX310 0e60 0101 0915 0102 GS7070 4 4 GVC BB039 0915 0001 0915 0002 GS7070 4 4 IPM Datacom Webpower 0915 0001 0915 0002 GS7070 4 4 ! IPM Datacom Dataway USB 0915 8102 0915 8102 GS7470 5 1 ! IPM Datacom SpeedWeb USB 0fe8 8101 0fe8 8101 GS7470 5 1 ! Kraun ADSL USB (#1) 0915 8102 0915 8102 GS7470 5 1 ! Kraun ADSL USB (#2) 0915 8101 0915 8101 GS7470 5 1 Linkmax HSA 100 0915 8101 0915 8101 GS7470 0 0 Lucent CellPipe USB-20A (#1) 0915 0001 0915 0002 GS7070 4 4 ! Lucent CellPipe USB-20A (#2) 0e60 0500 0e60 0500 GS7470 5 1 Nortek 2020 (#1) 0915 0001 0915 0002 GS7070 4 4 Nortek 2020 (#2) 0fe8 8000 0915 8001 GS7070 4 4 ! Nortek 2021 (#1) 0fe8 8101 0fe8 8101 GS7470 5 1 ! Nortek 2021 (#2) 0915 8102 0915 8102 GS7470 5 1 ! Nortek 2021 (Tiscali) 0fe8 8111 0fe8 8111 GS7470 5 1 ! Onixon DSL100U 0915 8102 0915 8102 GS7470 5 1 Prolink Hurricane 7000 0547 2131 0915 8000 GS7070 4 4 Siemens Santis (#1) 0915 0001 0915 0002 GS7070 4 4 Siemens Santis (#2) 0547 2131 0915 8000 GS7070 4 4 ! Siemens Santis (#3) 0915 8101 0915 8101 GS7470 5 1 ! Siemens Santis 10 0915 8101 0915 8101 GS7470 5 1 ! Siemens Santis 100 0681 0023 0681 0023 GS7470 5 1 ! SMC 7003 V.2 USB ADSL 0915 8101 0915 8101 GS7470 5 1 Solwise SAR100 0915 0001 0915 0002 GS7070 4 4 Solwise EA100 0915 0001 0915 0002 GS7070 4 4 --- 21,48 ---- Eicon Diva 071d ac81 0915 ac82 GS7070 4 4 Ericsson hm120dp 08ea 00c9 0915 00ca GS7070 4 4 ! Ericsson hm121dp/di 1690 0214 1690 0214 GS7470 5 5 Fujitsu FDX310 0e60 0101 0915 0102 GS7070 4 4 GVC BB039 0915 0001 0915 0002 GS7070 4 4 IPM Datacom Webpower 0915 0001 0915 0002 GS7070 4 4 ! IPM Datacom Dataway USB 0915 8102 0915 8102 GS7470 5 5 ! IPM Datacom SpeedWeb USB 0fe8 8101 0fe8 8101 GS7470 5 5 ! Kraun ADSL USB (#1) 0915 8102 0915 8102 GS7470 5 5 ! Kraun ADSL USB (#2) 0915 8101 0915 8101 GS7470 5 5 Linkmax HSA 100 0915 8101 0915 8101 GS7470 0 0 Lucent CellPipe USB-20A (#1) 0915 0001 0915 0002 GS7070 4 4 ! Lucent CellPipe USB-20A (#2) 0e60 0500 0e60 0500 GS7470 5 5 Nortek 2020 (#1) 0915 0001 0915 0002 GS7070 4 4 Nortek 2020 (#2) 0fe8 8000 0915 8001 GS7070 4 4 ! Nortek 2021 (#1) 0fe8 8101 0fe8 8101 GS7470 5 5 ! Nortek 2021 (#2) 0915 8102 0915 8102 GS7470 5 5 ! Nortek 2021 (Tiscali) 0fe8 8111 0fe8 8111 GS7470 5 5 ! Onixon DSL100U 0915 8102 0915 8102 GS7470 5 5 Prolink Hurricane 7000 0547 2131 0915 8000 GS7070 4 4 Siemens Santis (#1) 0915 0001 0915 0002 GS7070 4 4 Siemens Santis (#2) 0547 2131 0915 8000 GS7070 4 4 ! Siemens Santis (#3) 0915 8101 0915 8101 GS7470 5 5 ! Siemens Santis 10 0915 8101 0915 8101 GS7470 5 5 ! Siemens Santis 100 0681 0023 0681 0023 GS7470 5 5 ! SMC 7003 V.2 USB ADSL 0915 8101 0915 8101 GS7470 5 5 Solwise SAR100 0915 0001 0915 0002 GS7070 4 4 Solwise EA100 0915 0001 0915 0002 GS7070 4 4 *************** *** 52,61 **** Topcom XPlorer 850 0547 2131 0915 8000 GS7070 4 4 Turbocomm EA100 0915 0001 0915 0002 GS7070 4 4 ! Turbocomm EA103 0915 8102 0915 8102 GS7470 5 1 US Robotics 8500 0baf 00e6 0915 00e7 GS7070 4 4 Virata (Tiscali) 0fe8 8000 0915 8001 GS7070 4 4 Wisecom ws-ad80usg 0915 0001 0915 0002 GS7070 4 4 WyTek FM028 0eb0 3456 0915 3457 GS7070 4 4 ! Xavi X7005Q2 0e60 0600 0e60 0600 GS7470 5 1 Xentrix USB 0e60 0100 0915 0101 GS7070 4 4 Zoom 5510 ADSL 0547 2131 0915 8000 GS7070 4 4 --- 52,61 ---- Topcom XPlorer 850 0547 2131 0915 8000 GS7070 4 4 Turbocomm EA100 0915 0001 0915 0002 GS7070 4 4 ! Turbocomm EA103 0915 8102 0915 8102 GS7470 5 5 US Robotics 8500 0baf 00e6 0915 00e7 GS7070 4 4 Virata (Tiscali) 0fe8 8000 0915 8001 GS7070 4 4 Wisecom ws-ad80usg 0915 0001 0915 0002 GS7070 4 4 WyTek FM028 0eb0 3456 0915 3457 GS7070 4 4 ! Xavi X7005Q2 0e60 0600 0e60 0600 GS7470 5 5 Xentrix USB 0e60 0100 0915 0101 GS7070 4 4 Zoom 5510 ADSL 0547 2131 0915 8000 GS7070 4 4 |