static int tx4927_pcibios_write_config_byte(struct pci_dev *dev, int where, unsigned char val) { int flags; unsigned char bus, func_num; /* check if the bus is top-level */ if (dev->bus->parent != NULL) { bus = dev->bus->number; db_assert(bus != 0); } else { bus = 0; } func_num = PCI_FUNC(dev->devfn); if (mkaddr(bus, dev->devfn, where, &flags)) return -1; #ifdef __BIG_ENDIAN *(volatile u8 *) ((ulong) & tx4927_pcicptr-> g2pcfgdata | ((where & 3) ^ 3)) = val; #else *(volatile u8 *) ((ulong) & tx4927_pcicptr-> g2pcfgdata | (where & 3)) = val; #endif return check_abort(flags); }
static int tx4927_pcibios_read_config_dword(struct pci_dev *dev, int where, unsigned int *val) { int flags, retval; unsigned char bus, func_num; if (where & 3) return PCIBIOS_BAD_REGISTER_NUMBER; db_assert((where & 3) == 0); db_assert(where < (1 << 8)); /* check if the bus is top-level */ if (dev->bus->parent != NULL) { bus = dev->bus->number; db_assert(bus != 0); } else { bus = 0; } func_num = PCI_FUNC(dev->devfn); if (mkaddr(bus, dev->devfn, where, &flags)) return -1; *val = tx4927_pcicptr->g2pcfgdata; retval = check_abort(flags); if (retval == PCIBIOS_DEVICE_NOT_FOUND) *val = 0xffffffff; return retval; }
/* * We can't address 8 and 16 bit words directly. Instead we have to * read/write a 32bit word and mask/modify the data we actually want. */ static int tx4927_pcibios_read_config_byte(struct pci_dev *dev, int where, unsigned char *val) { int flags, retval; unsigned char bus, func_num; db_assert((where & 3) == 0); db_assert(where < (1 << 8)); /* check if the bus is top-level */ if (dev->bus->parent != NULL) { bus = dev->bus->number; db_assert(bus != 0); } else { bus = 0; } func_num = PCI_FUNC(dev->devfn); if (mkaddr(bus, dev->devfn, where, &flags)) return -1; #ifdef __BIG_ENDIAN *val = *(volatile u8 *) ((ulong) & tx4927_pcicptr-> g2pcfgdata | ((where & 3) ^ 3)); #else *val = *(volatile u8 *) ((ulong) & tx4927_pcicptr-> g2pcfgdata | (where & 3)); #endif retval = check_abort(flags); if (retval == PCIBIOS_DEVICE_NOT_FOUND) *val = 0xff; return retval; }
static int tx4927_pcibios_read_config(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 * val) { int flags, retval, dev, busno, func; busno = bus->number; dev = PCI_SLOT(devfn); func = PCI_FUNC(devfn); if (size == 2) { if (where & 1) return PCIBIOS_BAD_REGISTER_NUMBER; } if (size == 4) { if (where & 3) return PCIBIOS_BAD_REGISTER_NUMBER; } /* check if the bus is top-level */ if (bus->parent != NULL) { busno = bus->number; } else { busno = 0; } if (mkaddr(busno, devfn, where, &flags)) return -1; switch (size) { case 1: *val = *(volatile u8 *) ((ulong) & tx4927_pcicptr-> g2pcfgdata | #ifdef __LITTLE_ENDIAN (where & 3)); #else ((where & 0x3) ^ 0x3)); #endif break; case 2: *val = *(volatile u16 *) ((ulong) & tx4927_pcicptr-> g2pcfgdata | #ifdef __LITTLE_ENDIAN (where & 3)); #else ((where & 0x3) ^ 0x2)); #endif break; case 4: *val = tx4927_pcicptr->g2pcfgdata; break; } retval = check_abort(flags); if (retval == PCIBIOS_DEVICE_NOT_FOUND) *val = 0xffffffff; return retval; }
void hPrincipalEscritura(void* dato ) { struct sockaddr_in adr; int estado; int len_inet; int idSocket; char buffer[100]; int finBuffer; struct sockaddr_in adr_srvr; struct sockaddr_in cliente_sock; int len_srvr = sizeof(adr_srvr); static char *sv_addr = "127.0.0.99:6666"; len_srvr = sizeof(adr_srvr); estado = mkaddr(&adr_srvr,&len_srvr,sv_addr,"udp"); if(estado < 0) displayError("Direccion Servidor Erronea"); idSocket = socket(AF_INET,SOCK_STREAM,0 ); if(idSocket < 0) displayError("ERROR EN SOCKET()"); if( bind(idSocket,(struct sockaddr *)&adr_srvr,len_srvr) < 0 ) displayError("ERROR EN BIND()"); if(listen(idSocket,SOMAXCONN ) < 0) displayError("ERROR LISTEN()Escritura\n "); for(;;) { misEscritura.idSockCliente = accept( idSocket, (struct sockaddr*) &cliente_sock, &len_srvr); if(misEscritura.idSockCliente > 0 ) { pthread_t hilo; pthread_create(&hilo,NULL,(void*)hEscritura,(void*) &misEscritura); } else { printf("Conexion Rechazada %d \n"); } } }
static int tx4938_pcibios_read_config(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 * val) { int retval, dev, busno, func; struct tx4938_pcic_reg *pcicptr = pci_bus_to_pcicptr(bus); void __iomem *cfgdata = (void __iomem *)(unsigned long)&pcicptr->g2pcfgdata; dev = PCI_SLOT(devfn); func = PCI_FUNC(devfn); /* check if the bus is top-level */ if (bus->parent != NULL) busno = bus->number; else { busno = 0; } if (mkaddr(busno, devfn, where, pcicptr)) return -1; switch (size) { case 1: #ifdef __BIG_ENDIAN cfgdata += (where & 3) ^ 3; #else cfgdata += where & 3; #endif *val = __raw_readb(cfgdata); break; case 2: #ifdef __BIG_ENDIAN cfgdata += (where & 2) ^ 2; #else cfgdata += where & 2; #endif *val = __raw_readw(cfgdata); break; case 4: *val = __raw_readl(cfgdata); break; } retval = check_abort(pcicptr); if (retval == PCIBIOS_DEVICE_NOT_FOUND) *val = 0xffffffff; return retval; }
int un_create(const char *path,mode_t mode) { struct sockaddr_un addr; mode_t old_umask; int size; int s; s = socket(PF_UNIX,SOCK_DGRAM,0); if (s < 0) return s; (void) unlink(path); size = mkaddr(path,&addr); old_umask = umask(~mode); if (bind(s,(struct sockaddr *) &addr,size) < 0) return -1; (void) umask(old_umask); return s; }
static int tx4938_pcibios_write_config(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val) { int dev, busno, func; struct tx4938_pcic_reg *pcicptr = pci_bus_to_pcicptr(bus); void __iomem *cfgdata = (void __iomem *)(unsigned long)&pcicptr->g2pcfgdata; busno = bus->number; dev = PCI_SLOT(devfn); func = PCI_FUNC(devfn); /* check if the bus is top-level */ if (bus->parent != NULL) { busno = bus->number; } else { busno = 0; } if (mkaddr(busno, devfn, where, pcicptr)) return -1; switch (size) { case 1: #ifdef __BIG_ENDIAN cfgdata += (where & 3) ^ 3; #else cfgdata += where & 3; #endif __raw_writeb(val, cfgdata); break; case 2: #ifdef __BIG_ENDIAN cfgdata += (where & 2) ^ 2; #else cfgdata += where & 2; #endif __raw_writew(val, cfgdata); break; case 4: __raw_writel(val, cfgdata); break; } return check_abort(pcicptr); }
static int tx4927_pcibios_write_config(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val) { int flags, dev, busno, func; busno = bus->number; dev = PCI_SLOT(devfn); func = PCI_FUNC(devfn); if (size == 1) { if (where & 1) return PCIBIOS_BAD_REGISTER_NUMBER; } if (size == 4) { if (where & 3) return PCIBIOS_BAD_REGISTER_NUMBER; } /* check if the bus is top-level */ if (bus->parent != NULL) { busno = bus->number; } else { busno = 0; } if (mkaddr(busno, devfn, where, &flags)) return -1; switch (size) { case 1: *(volatile u8 *) ((ulong) & tx4927_pcicptr-> g2pcfgdata | (where & 3)) = val; break; case 2: *(volatile u16 *) ((ulong) & tx4927_pcicptr-> g2pcfgdata | (where & 3)) = val; break; case 4: tx4927_pcicptr->g2pcfgdata = val; break; } return check_abort(flags); }
static int tx4927_pcibios_write_config(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val) { int flags, dev, busno, func; busno = bus->number; dev = PCI_SLOT(devfn); func = PCI_FUNC(devfn); /* check if the bus is top-level */ if (bus->parent != NULL) { busno = bus->number; } else { busno = 0; } if (mkaddr(busno, devfn, where, &flags)) return -1; switch (size) { case 1: *(volatile u8 *) ((unsigned long) & tx4927_pcicptr-> g2pcfgdata | #ifdef __LITTLE_ENDIAN (where & 3)) = val; #else ((where & 0x3) ^ 0x3)) = val; #endif break; case 2: *(volatile u16 *) ((unsigned long) & tx4927_pcicptr-> g2pcfgdata | #ifdef __LITTLE_ENDIAN (where & 3)) = val; #else ((where & 0x3) ^ 0x2)) = val; #endif break; case 4: tx4927_pcicptr->g2pcfgdata = val; break; } return check_abort(flags); }
static int tx3927_pci_write_config(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val) { if (mkaddr(bus, devfn, where)) return PCIBIOS_DEVICE_NOT_FOUND; switch (size) { case 1: *(volatile u8 *) ((unsigned long) & tx3927_pcicptr->icd | (where & 3)) = val; break; case 2: *(volatile u16 *) ((unsigned long) & tx3927_pcicptr->icd | (where & 2)) = cpu_to_le16(val); break; case 4: tx3927_pcicptr->icd = cpu_to_le32(val); } return check_abort(); }
static int tx4927_pcibios_write_config_dword(struct pci_dev *dev, int where, unsigned int val) { int flags; unsigned char bus, func_num; if (where & 3) return PCIBIOS_BAD_REGISTER_NUMBER; /* check if the bus is top-level */ if (dev->bus->parent != NULL) { bus = dev->bus->number; db_assert(bus != 0); } else { bus = 0; } func_num = PCI_FUNC(dev->devfn); if (mkaddr(bus, dev->devfn, where, &flags)) return -1; tx4927_pcicptr->g2pcfgdata = val; return check_abort(flags); }
static int jmr3927_pcibios_write_config_word (struct pci_dev *dev, int where, unsigned short val) { int flags; unsigned char bus, func_num; if (where & 1) return PCIBIOS_BAD_REGISTER_NUMBER; /* check if the bus is top-level */ if (dev->bus->parent != NULL) { bus = dev->bus->number; db_assert(bus != 0); } else { bus = 0; } func_num = PCI_FUNC(dev->devfn); if (mkaddr(bus, dev->devfn, where, &flags)) return -1; *(volatile u16 *)((ulong)&tx3927_pcicptr->icd | (where&3)) = cpu_to_le16(val); return check_abort(flags); }
/* * We can't address 8 and 16 bit words directly. Instead we have to * read/write a 32bit word and mask/modify the data we actually want. */ static int jmr3927_pcibios_read_config_byte (struct pci_dev *dev, int where, unsigned char *val) { int flags; unsigned char bus, func_num; db_assert((where & 3) == 0); db_assert(where < (1 << 8)); /* check if the bus is top-level */ if (dev->bus->parent != NULL) { bus = dev->bus->number; db_assert(bus != 0); } else { bus = 0; } func_num = PCI_FUNC(dev->devfn); if (mkaddr(bus, dev->devfn, where, &flags)) return -1; *val = *(volatile u8 *)((ulong)&tx3927_pcicptr->icd | (where&3)); return check_abort(flags); }
static int tx3927_pci_read_config(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 * val) { if (mkaddr(bus, devfn, where)) { *val = 0xffffffff; return PCIBIOS_DEVICE_NOT_FOUND; } switch (size) { case 1: *val = *(volatile u8 *) ((unsigned long) & tx3927_pcicptr->icd | (where & 3)); break; case 2: *val = le16_to_cpu(*(volatile u16 *) ((unsigned long) & tx3927_pcicptr->icd | (where & 3))); break; case 4: *val = le32_to_cpu(tx3927_pcicptr->icd); break; } return check_abort(); }
int main() { struct pollfd fds[3]; fds[0].fd = -1; fds[1].fd = -1; fds[2].fd = -1; int srv_sock = Socket(AF_INET, SOCK_STREAM, 0); fds[0].fd = srv_sock; fds[0].events = POLLIN; struct sockaddr_in srv_addr; mkaddr(&srv_addr, "127.0.0.1", "2345"); Bind(srv_sock, (struct sockaddr *)&srv_addr, sizeof(srv_addr)); Listen(srv_sock, 5); int ret = 0; char buf[128]; int i = 1; while (1) { printf("debug: going to poll().... "); fflush(stdout); ret = Poll(fds, 3, -1); printf("%d\n", ret); int j = 0; for (j = 0; j < 3; j++) { if (fds[j].fd == -1) continue; if ((fds[j].fd == srv_sock) && ((fds[j].revents & POLLIN) == POLLIN)) { int cli_sock = Accept(srv_sock, NULL, NULL); fds[i].fd = cli_sock; fds[i].events = POLLIN; i++; printf("debug: create a new connection\n"); if (--ret == 0) break; } if ((fds[j].revents & POLLIN) == POLLIN) { printf("debug: is on the cli_sock %d\n", fds[j].fd); int len = recv_all(fds[j].fd, buf); if (len == -1) { close(fds[j].fd); fds[j].fd == -1; bzero(&fds[j], sizeof(struct pollfd)); printf("here\n"); break; } send_back(fds[j].fd, buf, len); printf("debug: send back %s\n", buf); } if ((fds[j].revents & POLLHUP) == POLLHUP) { close(fds[j].fd); printf("debug POLLUP\n"); } } } close(srv_sock); return 0; }
int main(int argc,char **argv) { char bcbuf[512], *bp;/* Buffer and ptr */ int z; /* Status return code */ int s; /* Socket */ listaClientes = createList(); struct sockaddr_in adr_srvr;/* AF_INET */ int len_srvr; /* length */ struct sockaddr_in adr_bc; /* AF_INET */ int len_bc; /* length */ static int so_broadcast = TRUE; static char *sv_addr = "127.0.0:*", *bc_addr = "127.255.255.2:9097";//DIRECCION DE BROADCAST /* Datos de servidor TCP/IP */ static char *sv_respuesta_addr = "127.0.0.99:1234";//Direccion servidor tcp/ip struct sockaddr_in adr_respuesta; int len_respuesta; /*Fin datos servidor*/ struct struct_idSockCliente mistruct; int argumento ; cantidadMAXClientes = 0; tiempoDeEspera = 0; for( argumento = 1;argumento < argc;argumento++ ) { if( strcmp( argv[argumento],"-t") == 0 ) { tiempoDeEspera = strtod( argv[argumento +1] ,NULL ); } if( strcmp( argv[argumento],"-c") == 0 ) { cantidadMAXClientes =(int) strtol( argv[argumento+1],NULL,10 ); } if(strcmp (argv[argumento],"-a") == 0 ) { cantidadMAXClientes = 3 ; } } if ( argc > 2 ) { //sv_addr = argv[2]; dejo direccion default //asigno por argumento , la direccion del servidor tcp/ip sv_respuesta_addr = argv[2]; } if ( argc > 1 ) /* Broadcast address: */ bc_addr = argv[1]; /* * Form the server address: */ len_srvr = sizeof adr_srvr; z = mkaddr( &adr_srvr, /* Returned address */ &len_srvr, /* Returned length */ sv_addr, /* Input string addr */ "udp"); /* UDP protocol */ if ( z == -1 ) displayError("Bad server address"); /* * Form the broadcast address: */ len_bc = sizeof adr_bc; z = mkaddr( &adr_bc, /* Returned address */ &len_bc, /* Returned length */ bc_addr, /* Input string addr */ "udp"); /* UDP protocol */ if ( z == -1 ) displayError("Bad broadcast address"); /* * respuesta del servidor */ len_respuesta = sizeof ( adr_respuesta ); z = mkaddr ( &adr_respuesta , &len_respuesta ,sv_respuesta_addr,"tcp"); if( z == -1) displayError("Bad server address"); /* * Create a UDP socket to use: */ s = socket(AF_INET,SOCK_DGRAM,0); if ( s == -1 ) displayError("socket()"); /* * Allow broadcasts: */ z = setsockopt(s, SOL_SOCKET, SO_BROADCAST, &so_broadcast, sizeof(so_broadcast) ); if ( z == -1 ) displayError("setsockopt(SO_BROADCAST)"); /* * Bind an address to our socket, so that * client programs can listen to this * server: */ z = bind( s, (struct sockaddr *)&adr_srvr, len_srvr); if ( z == -1 ) displayError("bind()"); int IdRespuestaSocket = socket(AF_INET,SOCK_STREAM,0); if( bind(IdRespuestaSocket,(struct sockaddr *) &adr_respuesta,len_respuesta) < 0) displayError("ERROR bind() respuesta socket"); if( listen(IdRespuestaSocket,5) < 0) displayError("ERROR listen() respuesta socket"); while(1) { bp = bcbuf; sprintf( bcbuf , "%.f",(double) time(NULL) ); printf("Envio este tiempo a los clientes %.f .\n",bcbuf ); /* * Broadcast the updated info: */ z = sendto(s, bcbuf, strlen(bcbuf), 0, (struct sockaddr *)&adr_bc, len_bc ); if ( z == -1 ) displayError("sendto()"); printf("Despues del sendto \n"); tiempoActual = time(NULL); mistruct.idSockCliente = accept( IdRespuestaSocket, (struct sockaddr *)&adr_respuesta, &len_respuesta ); printf("Despues del accept\n "); if( mistruct.idSockCliente >= 0 ) { printf("Conexion aceptada desde el cliente %d\n", mistruct.idSockCliente); pthread_t hilo; push_back(listaClientes ,&hilo); cantidadClientes++; pthread_create( &hilo , NULL, (void *) funcionUnicast, (void *) &mistruct ); } lista * listAuxiliar = createList(); void * aux; pthread_t h; /* while(!isEmpty(listaClientes)) { pop_front(listaClientes,&aux); h = *( (pthread_t *) aux) ; push_back (listAuxiliar,&h ); } */ sleep(1); printf("Despues del sleep\n"); fflush(stdout); } return 0; }
nextdata(ftnint *elenp) #endif { register struct Impldoblock *ip; struct Primblock *pp; register Namep np; register struct Rplblock *rp; tagptr p; expptr neltp; register expptr q; int skip; ftnint off, vlen; while(curdtp) { p = (tagptr)curdtp->datap; if(p->tag == TIMPLDO) { ip = &(p->impldoblock); if(ip->implb==NULL || ip->impub==NULL || ip->varnp==NULL) fatali("bad impldoblock 0%o", (int) ip); if(ip->isactive) ip->varvp->Const.ci += ip->impdiff; else { q = fixtype(cpexpr(ip->implb)); if( ! ISICON(q) ) goto doerr; ip->varvp = (Constp) q; if(ip->impstep) { q = fixtype(cpexpr(ip->impstep)); if( ! ISICON(q) ) goto doerr; ip->impdiff = q->constblock.Const.ci; frexpr(q); } else ip->impdiff = 1; q = fixtype(cpexpr(ip->impub)); if(! ISICON(q)) goto doerr; ip->implim = q->constblock.Const.ci; frexpr(q); ip->isactive = YES; rp = ALLOC(Rplblock); rp->rplnextp = rpllist; rpllist = rp; rp->rplnp = ip->varnp; rp->rplvp = (expptr) (ip->varvp); rp->rpltag = TCONST; } if( (ip->impdiff>0 && (ip->varvp->Const.ci <= ip->implim)) || (ip->impdiff<0 && (ip->varvp->Const.ci >= ip->implim)) ) { /* start new loop */ curdtp = ip->datalist; goto next; } /* clean up loop */ if(rpllist) { rp = rpllist; rpllist = rpllist->rplnextp; free( (charptr) rp); } else Fatal("rpllist empty"); frexpr((expptr)ip->varvp); ip->isactive = NO; curdtp = curdtp->nextp; goto next; } pp = (struct Primblock *) p; np = pp->namep; cur_varname = np->fvarname; skip = YES; if(p->primblock.argsp==NULL && np->vdim!=NULL) { /* array initialization */ q = (expptr) mkaddr(np); off = typesize[np->vtype] * curdtelt; if(np->vtype == TYCHAR) off *= np->vleng->constblock.Const.ci; q->addrblock.memoffset = mkexpr(OPPLUS, q->addrblock.memoffset, mkintcon(off) ); if( (neltp = np->vdim->nelt) && ISCONST(neltp)) { if(++curdtelt < neltp->constblock.Const.ci) skip = NO; } else err("attempt to initialize adjustable array"); } else q = mklhs((struct Primblock *)cpexpr((expptr)pp), 0); if(skip) { curdtp = curdtp->nextp; curdtelt = 0; } if(q->headblock.vtype == TYCHAR) if(ISICON(q->headblock.vleng)) *elenp = q->headblock.vleng->constblock.Const.ci; else { err("initialization of string of nonconstant length"); continue; } else *elenp = typesize[q->headblock.vtype]; if (np->vstg == STGBSS) { vlen = np->vtype==TYCHAR ? np->vleng->constblock.Const.ci : typesize[np->vtype]; if(vlen > 0) np->vstg = STGINIT; } return( (Addrp) q ); doerr: err("nonconstant implied DO parameter"); frexpr(q); curdtp = curdtp->nextp; next: curdtelt = 0; } return(NULL); }
int main(int argc,char **argv) { int z; int x; struct sockaddr_in adr; /* AF_INET */ int len_inet; /* length */ int s; /* Socket */ char dgram[2048]; /* Recv buffer */ static int so_reuseaddr = TRUE; static char *bc_addr = "10.1.7.232:3000"; unsigned short *vpkt; unsigned char err = 0; unsigned char vrow_chk = 0; unsigned short vrow_clc = 0; unsigned char vfr_chk = 0; unsigned short vfr_clc = 0; unsigned short rcv_cnt = 0; unsigned short err_cnt = 0; /* * Use a server address from the command * line, if one has been provided. * Otherwise, this program will default * to using the arbitrary address * 127.0.0.: */ if ( argc > 1 ) /* Broadcast address: */ bc_addr = argv[1]; /* * Create a UDP socket to use: */ s = socket(AF_INET,SOCK_DGRAM,0); if ( s == -1 ) displayError("socket()"); /* * Form the broadcast address: */ len_inet = sizeof adr; z = mkaddr(&adr, &len_inet, bc_addr, "udp"); if ( z == -1 ) displayError("Bad broadcast address"); /* * Allow multiple listeners on the * broadcast address: */ z = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &so_reuseaddr, sizeof so_reuseaddr); if ( z == -1 ) displayError("setsockopt(SO_REUSEADDR)"); /* * Bind our socket to the broadcast address: */ z = bind(s, (struct sockaddr *)&adr, len_inet); if ( z == -1 ) displayError("bind(2)"); printf("Testing......\n"); while (1) { /* * Wait for a broadcast message: */ z = recvfrom(s, /* Socket */ dgram, /* Receiving buffer */ sizeof dgram,/* Max rcv buf size */ 0, /* Flags: no options */ (struct sockaddr *)&adr, /* Addr */ &x); /* Addr len, in & out */ if ( z < 0 ) printf("recvfrom err: %d ",z); //displayError("recvfrom(2)"); /* else err */ // fwrite(dgram,z,1,stdout); // putchar('\n'); // // fflush(stdout); if (z > 0){ vpkt = (unsigned short *)dgram; //vpkt[0]-pkt_type //vpkt[1]-vfr_num //vpkt[2]-vpix_count //vpkt[3]-vrow_count //vpkt[4]-vrow_num if (vpkt[0]!=0x301){ printf("RCV: cnt=x%04X, size=%04d. PKT: vpix_count=%04d, vrow_count=%04d, vfr_num=%02d, vrow_num=%04d. ERR: cnt=x%04X: pkt type\n",rcv_cnt, z, vpkt[2], vpkt[3], (vpkt[1]&0x0F), vpkt[4], err_cnt); err = 1; } if (((vpkt[1]&0x0F)!=vfr_clc) && vfr_chk){ printf("RCV: cnt=x%04X, size=%04d. PKT: vpix_count=%04d, vrow_count=%04d, vfr_num=%02d, vrow_num=%04d. ERR: cnt=x%04X: vfr_clc=%02d\n",rcv_cnt, z, vpkt[2], vpkt[3], (vpkt[1]&0x0F), vpkt[4], err_cnt, vfr_clc); err = 1; vfr_chk = 0; } if (vpkt[2]!=0x400){ printf("RCV: cnt=x%04X, size=%04d. PKT: vpix_count=%04d, vrow_count=%04d, vfr_num=%02d, vrow_num=%04d. ERR: cnt=x%04X: vpix_count\n",rcv_cnt, z, vpkt[2], vpkt[3], (vpkt[1]&0x0F), vpkt[4], err_cnt); err = 1; } if (vpkt[3]!=0x400){ printf("RCV: cnt=x%04X, size=%04d. PKT: vpix_count=%04d, vrow_count=%04d, vfr_num=%02d, vrow_num=%04d. ERR: cnt=x%04X: vrow_count\n",rcv_cnt, z, vpkt[2], vpkt[3], (vpkt[1]&0x0F), vpkt[4], err_cnt); err = 1; } if ((vpkt[4]!=vrow_clc) && vrow_chk){ printf("RCV: cnt=x%04X, size=%04d. PKT: vpix_count=%04d, vrow_count=%04d, vfr_num=%02d, vrow_num=%04d. ERR: cnt=x%04X: vrow_clc=%04d\n",rcv_cnt, z, vpkt[2], vpkt[3], (vpkt[1]&0x0F), vpkt[4], err_cnt, vrow_clc); err = 1; } if (err){ err = 0; err_cnt++; } vrow_chk = 1; if ((vpkt[4]+1)==0x400) vrow_clc = 0; else vrow_clc = vpkt[4] + 1; if (vpkt[4]==(vpkt[3]-1)){ vfr_chk = 1; if ((vpkt[1]+1)==16) vfr_clc = 0; else vfr_clc = vpkt[1] + 1; } // if (rcv_cnt == 24) // break; rcv_cnt++; } } //while (1) printf("....completed!\n"); return 0; }