Esempio n. 1
0
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);
}
Esempio n. 2
0
/*
// 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;
}
Esempio n. 3
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;
}