void scope_paint(t_scope *x, t_object *view) { t_rect rect; ebox_get_rect_for_view((t_ebox *)x, &rect); draw_background(x, view, &rect); if(x->f_mode) draw_signalXY(x, view, &rect); else draw_signal(x, view, &rect); }
/* // Draw Module */ static int draw_scene() { draw_grid(distX , distY ); /* glBegin(GL_QUADS); glVertex2d(distX, 0.0); glVertex2d(distX, -distY); glVertex2d(0.0, -distY); glVertex2d(0.0, 0.0); glEnd(); */ glTranslated((distX/2)-250, -distY/2, 0.0); draw_signal(); glTranslated(-(distX / 2)-250, +distY/2 , 0.0); //glEnd(); ///// argDrawMode2D(); return 0; }
int main(int argc, char **argv) { #if HAVE_DVB_API_VERSION >= 3 struct dvb_frontend_parameters feparams; int tune = 0; #endif int lcd_fd; int fe_fd,dmx_fd; int lcd_mode; fd_set rfds; int result; screen_t screen; struct timeval tv; struct signal signal_quality,old_signal; struct dmx_sct_filter_params flt; unsigned char buf[1024]; char network_name[31],old_name[31]; int lcd; #if HAVE_DVB_API_VERSION >= 3 if (argc == 2) { if (!strncmp(argv[1], "--tune", 6)) { tune = 1; } else { printf("Usage: satfind [--tune]\n"); return 0; } } #endif /* open dbox2-specific devices (LCD) */ if((lcd_fd=open(LCD,O_RDWR))<0) { fprintf(stderr,"lcd open - Can't open LCD: %d\n",errno); lcd = 0; } else { lcd = 1; } /* open nokia-api specific devices (demux,tuner and sat-control) */ if((dmx_fd=open(DMX,O_RDWR))<0) { perror("Can't open Demux"); return 1; } if((fe_fd=open(FE,O_RDONLY))<0) { perror("[satfind.c] Can't open Tuner"); return 1; } /* switch LCD to binary mode and clear it */ if (lcd) { lcd_mode=LCD_MODE_BIN; if ((ioctl(lcd_fd,LCD_IOCTL_ASC_MODE,&lcd_mode)<0) || (ioctl(lcd_fd,LCD_IOCTL_CLEAR)<0)) { fprintf(stderr,"lcd ioctl - error setting LCD-mode/clearing LCD: %d\n",errno); return 1; } memset(screen,0,sizeof(screen)); } memset(&old_signal,0,sizeof(old_signal)); /* initialize demux to get the NIT */ #if HAVE_DVB_API_VERSION >= 3 memset(&flt, 0, sizeof(flt)); #else memset(&flt.filter.filter, 0, DMX_FILTER_SIZE); memset(&flt.filter.mask, 0, DMX_FILTER_SIZE); #endif flt.pid=0x10; flt.filter.filter[0]=0x40; flt.filter.mask[0]=0xFF; flt.timeout=10000; flt.flags=DMX_IMMEDIATE_START; if (ioctl(dmx_fd, DMX_SET_FILTER, &flt)<0) { perror("DMX_SET_FILTER"); return -1; } /* main stuff here */ if (lcd) prepare_main(screen); network_name[0]=0; old_name[0]=0; FD_ZERO(&rfds); FD_SET(dmx_fd,&rfds); tv.tv_sec=0; tv.tv_usec=10000; #if HAVE_DVB_API_VERSION >= 3 if (tune) { /* TP 82 (ProSiebenSat.1 Media AG) on ASTRA 1H */ feparams.frequency = 1880000; feparams.inversion = 0; feparams.u.qpsk.symbol_rate = 27500000; feparams.u.qpsk.fec_inner = FEC_3_4; } #endif while(1) { if((result=select(dmx_fd+1,&rfds,NULL,NULL,&tv))>0) { if(FD_ISSET(dmx_fd,&rfds)) { /* got data */ if((result=read(dmx_fd,buf,sizeof(buf)))>0) get_network_name_from_nit(network_name,buf,result); /* zero or less read - we have to restart the DMX afaik*/ else { printf("result: %d\n",result); ioctl(dmx_fd,DMX_STOP,0); ioctl(dmx_fd,DMX_START,0); network_name[0]=0; } /* new networkname != "" */ if((memcmp(network_name,old_name,sizeof(network_name))!=0)&&(network_name[0]!=0)) { int count; for(count=strlen(network_name);count<=10;count++) network_name[count]=0x20; network_name[count]=0; if (lcd) render_string(screen,0,56,network_name); memcpy(old_name,network_name,sizeof(old_name)); } } else printf("that should never happen...\n"); } FD_ZERO(&rfds); FD_SET(dmx_fd,&rfds); tv.tv_sec=0; tv.tv_usec=10000; #if HAVE_DVB_API_VERSION >= 3 if(tune) { /* TUNE and wait till a possibly LOCK is done */ ioctl(fe_fd,FE_SET_VOLTAGE,SEC_VOLTAGE_13); ioctl(fe_fd,FE_SET_FRONTEND, &feparams); ioctl(fe_fd,FE_SET_TONE, SEC_TONE_ON); usleep(250); } #endif get_signal(&signal_quality,fe_fd); if (!signal_changed(&signal_quality, &old_signal)) continue; if (lcd) { draw_signal(&signal_quality,&old_signal,screen); draw_screen(screen,lcd_fd); } printf("%s %u %u %u [%c%c]\n",network_name,signal_quality.ber,signal_quality.snr,signal_quality.strength,signal_quality.status&FE_HAS_SIGNAL? 'S':' ',signal_quality.status&FE_HAS_LOCK? 'L':' '); } /* close devices */ if (lcd) close(lcd_fd); close(dmx_fd); close(fe_fd); return 0; }