示例#1
0
文件: display.c 项目: idaohang/gps-22
/******************************************************************************
FUNCTION display()
RETURNS  None.

PARAMETERS None.

PURPOSE
	This function displays the current status of the receiver on the
	computer screen.  It is called when there is nothing else to do

WRITTEN BY
	Clifford Kelley

******************************************************************************/
int
display (void)
{
  int ch;
  /*   utctime -= dtls; */

#ifdef INTERACTIVE
goto_screen_location(1, 1);

  printf ("                   OpenSource GPS Software Version 2.30\n");
  printf ("%s", ctime (&utctime));
  printf ("TOW  %6ld\n", clock_tow);
  printf ("meas time %f  error %f  delta %f\n", m_time[1], m_error,
          delta_m_time);
  cur_lat.deg = rec_pos_llh.lat * r_to_d;
  cur_lat.min = (rec_pos_llh.lat * r_to_d - cur_lat.deg) * 60;
  cur_lat.sec =
    (rec_pos_llh.lat * r_to_d - cur_lat.deg - cur_lat.min / 60.) * 3600.;
  cur_long.deg = rec_pos_llh.lon * r_to_d;
  cur_long.min = (rec_pos_llh.lon * r_to_d - cur_long.deg) * 60;
  cur_long.sec =
    (rec_pos_llh.lon * r_to_d - cur_long.deg - cur_long.min / 60.) * 3600.;
  printf ("   latitude    longitude          HAE      clock error (ppm)\n");
  printf ("  %4d:%2d:%5.2f  %4d:%2d:%5.2f  %10.2f  %f\n",
          cur_lat.deg, abs (cur_lat.min), fabs (cur_lat.sec), cur_long.deg,
          abs (cur_long.min), fabs (cur_long.sec), rec_pos_llh.hae,
          clock_offset);
  printf (" Speed     Heading      TIC_dt\n");
  printf (" %f   %f   %f\n", speed, heading * r_to_d, TIC_dt);
  printf ("   \n");
  printf
    ("tracking %2d status %1d almanac valid %1d gps week %4d alm_page %2d\n",
     n_track, status, almanac_valid, gps_week % 1024, alm_page);
  if (display_page == 0)
    {
      printf
        (" ch prn state n_freq az el doppler t_count n_frame sfid ura page missed CNo\n");
      for (ch = 0; ch < N_channels; ch++)
        {
          printf
            (" %2d %2d  %2d  %3d   %4.0f  %3.0f   %6.0f   %4d  %4d  %2d  %3d  %3d%5d     %2d\n",
             ch, ichan[ch].prn, ichan[ch].state, ichan[ch].n_freq,
             xyz[ichan[ch].prn].azimuth * 57.3,
             xyz[ichan[ch].prn].elevation * 57.3, xyz[ichan[ch].prn].doppler,
             ichan[ch].frame_bit % 1500, ichan[ch].n_frame, ichan[ch].sfid,
             gps_eph[ichan[ch].prn].ura, schan[ch].page5, ichan[ch].missed,
             ichan[ch].CNo);
        }
      printf (" GDOP=%6.3f  HDOP=%6.3f  VDOP=%6.3f  TDOP=%6.3f\n", gdop, hdop,
	      vdop, tdop);
    }
  else if (display_page == 1)
    {
      printf (" ch prn state TLM      TOW  Health  Valid  TOW_sync offset\n");
      for (ch = 0; ch < N_channels; ch++)
        {
          printf (" %2d %2d  %2d  %6ld   %6ld   %2d     %2d     %2d   %4d\n",
                  ch, ichan[ch].prn, ichan[ch].state, ichan[ch].TLM,
                  ichan[ch].TOW, gps_eph[ichan[ch].prn].health,
                  gps_eph[ichan[ch].prn].valid, ichan[ch].tow_sync, 0);
        }
    }
  else if (display_page == 2)
    {
      printf (" ch prn state n_freq az  el        tropo        iono\n");
      for (ch = 0; ch < N_channels; ch++)
        {
          printf (" %2d %2d  %2d  %3d   %4.0f  %3.0f   %10.4f   %10.4f\n",
                  ch, ichan[ch].prn, ichan[ch].state, ichan[ch].n_freq,
                  xyz[ichan[ch].prn].azimuth * 57.3,
                  xyz[ichan[ch].prn].elevation * 57.3, 
		  satellite[ichan[ch].prn].Tropo * c,
                  satellite[ichan[ch].prn].Iono * c);
        }
    }
  else if (display_page == 3)
    {
      printf (" ch prn state      Pseudorange     delta Pseudorange\n");
      for (ch = 0; ch < N_channels; ch++)
        {
          printf (" %2d %2d  %2d  %20.10f   %15.10f\n",
                  ch, ichan[ch].prn, ichan[ch].state, 
		  satellite[ichan[ch].prn].Pr,
                  satellite[ichan[ch].prn].dPr);
        }
    }
  else if (display_page == 4)   /* can be used for debugging purposes */
    {
      printf (" ch prn state sfid page SF1  SF2  SF3  SF4  SF5\n");
      for (ch = 0; ch < N_channels; ch++)
        {
          printf (" %2d %2d   %2d   %2d  %2d  %3x  %3x  %3x  %3x  %3x\n",
                  ch, ichan[ch].prn, ichan[ch].state, ichan[ch].sfid,
                  schan[ch].page5, schan[ch].word_error[0],
                  schan[ch].word_error[1], schan[ch].word_error[2],
                  schan[ch].word_error[3], schan[ch].word_error[4]);
        }
    }

  key = check_for_keyboard_press ();
  if (key == 'p' || key == 'P')
    {
      display_page++;
      display_page = display_page % 5;
      clear_screen ();
    }
  /* Allow the user to cycle backwards through the display pages */
  if (key == 'b' || key == 'B')
    {
      display_page--;
      display_page = (display_page + 5) % 5;
      clear_screen();
    }
  if (key == 0x1b) { /* ESC */
    if (check_for_keyboard_press () == '[') {
      key = check_for_keyboard_press ();
      if (key == '5') {
	display_page--;
	display_page = (display_page + 5) % 5;
	clear_screen ();
      }
      else {
	display_page++;
	display_page = display_page % 5;
	clear_screen ();
      }
    }
  }
#else
for (ch = 0; ch < N_channels; ch++)
    {
        if(ichan[ch].state==4 && first_track==0)
        {
        //printf("=====> start tracking, channel %i at time %f\n",ch,simtime);
        //printf("%3.1f,",simtime);
	auxx=(char)((int)(simtime));
	write(1,&auxx,1);
	auxx=(char)(ichan[ch].prn);
	write(1,&auxx,1);
	auxx=ichan[ch].CNo;
	write(1,&auxx,1);
        //printf("%x\n",(char)((int)(simtime)));//,ichan[ch].prn,ichan[ch].CNo);
        //printf(" ch prn state n_freq az el doppler t_count n_frame sfid ura page missed CNo\n");
         // printf
          //  ("%2d,%2d\n",
           //  ichan[ch].prn,
            // ichan[ch].CNo);

            //printf("time = %f\n",simtime);
            first_track=1;
        }

        /*if(ichan[ch].state!=4 && first_track==1)
        {
        printf("=====> tracking lost, channel %i at time %f\n",ch,simtime);
        first_track=0;
        }*/
    }

//


#endif


  if (key == 'x' || key == 'X' || key == 'q' || key == 'Q') 
    return -1;

  return 0;
}
示例#2
0
/******************************************************************************
FUNCTION display()
RETURNS  None.

PARAMETERS None.

PURPOSE
        This function displays the current status of the receiver on the
        computer screen.  It is called when there is nothing else to do

WRITTEN BY
        Clifford Kelley

******************************************************************************/
int
display (void)
{
  int ch;
  /*   utctime -= dtls; */
  goto_screen_location(1, 1);

  printf ("                   OpenSource GPS Software Version 2.30\n");
  //printf ("%s", ctime (&utctime));
  printf ("%d", 0);
  //printf ("TOW  %6ld\n", clock_tow);
  printf ("TOW  %6ld\n", (long)0);
  //printf ("meas time %f  error %f  delta %f\n", m_time[1], m_error, delta_m_time);
  printf ("meas time %f  error %f  delta %f\n", 0.0, 0.0, 0.0);
  //cur_lat.deg = rec_pos_llh.lat * r_to_d;
  //cur_lat.min = (rec_pos_llh.lat * r_to_d - cur_lat.deg) * 60;
  //cur_lat.sec = (rec_pos_llh.lat * r_to_d - cur_lat.deg - cur_lat.min / 60.) * 3600.;
  //cur_long.deg = rec_pos_llh.lon * r_to_d;
  //cur_long.min = (rec_pos_llh.lon * r_to_d - cur_long.deg) * 60;
  //cur_long.sec = (rec_pos_llh.lon * r_to_d - cur_long.deg - cur_long.min / 60.) * 3600.;
  printf ("   latitude    longitude          HAE      clock error (ppm)\n");
  //printf ("  %4d:%2d:%5.2f  %4d:%2d:%5.2f  %10.2f  %f\n",
  //        cur_lat.deg, abs (cur_lat.min), fabs (cur_lat.sec), cur_long.deg,
  //        abs (cur_long.min), fabs (cur_long.sec), rec_pos_llh.hae,
  //        clock_offset);
  printf ("  %4d:%2d:%5.2f  %4d:%2d:%5.2f  %10.2f  %f\n",
            0, 0, 0.0, 0,
            0, 0.0, 0.0,
            0.0);
  printf (" Speed     Heading      TIC_dt\n");
  //printf (" %f   %f   %f\n", speed, heading * r_to_d, TIC_dt);
  printf (" %f   %f   %f\n", 0.0, 0.0, 0.0);
  printf ("   \n");
  //printf
  //  ("tracking %2d status %1d almanac valid %1d gps week %4d alm_page %2d\n",
  //   n_track, status, almanac_valid, gps_week % 1024, alm_page);
  printf
    ("tracking %2d status %1d almanac valid %1d gps week %4d alm_page %2d\n",
    0, 0, 0, 0, 0);
  if (display_page == 0)
    {
      //printf
        //(" ch prn state n_freq az el doppler t_count n_frame sfid ura page missed CNo\n");
      printf
        (" ch prn state n_freq codes ch_time sign_count ms_cnt_corr ms_cnt sfid ura page missed CNo\n");
      for (ch = 0; ch < N_CHANNELS; ch++)
        {
          //printf
          //  (" %2d %2d  %2d  %3d   %4.0f  %3.0f   %6.0f   %4d  %4d  %2d  %3d  %3d%5d     %2d\n",
          //   ch, ichan[ch].prn, ichan[ch].state, ichan[ch].n_freq,
          //   xyz[ichan[ch].prn].azimuth * 57.3,
          //   xyz[ichan[ch].prn].elevation * 57.3, xyz[ichan[ch].prn].doppler,
          //   ichan[ch].frame_bit % 1500, ichan[ch].n_frame, ichan[ch].sfid,
          //   gps_eph[ichan[ch].prn].ura, schan[ch].page5, ichan[ch].missed,
          //   ichan[ch].CNo);
          printf
            (" %2d %2d  %2d  %3d   %4.0f  %4.0f   %6.0f   %4d  %4d  %2d  %3d  %3d%5d     %2d\n",
             ch, REG_write[ch<<3], chan[ch].state, chan[ch].n_freq,
             (double)chan[ch].codes,
             (double)chan[ch].ch_time, (double)chan[ch].sign_count,
             (REG_read[ch*8+7] & 255 ), chan[ch].ms_count, 0,
             0, 0, 0,
             0);
        }
      //printf (" GDOP=%6.3f  HDOP=%6.3f  VDOP=%6.3f  TDOP=%6.3f\n", gdop, hdop,
      //        vdop, tdop);
      printf (" GDOP=%6.3f  HDOP=%6.3f  VDOP=%6.3f  TDOP=%6.3f\n", 0.0, 0.0,
                    0.0, 0.0);
    }
  else if (display_page == 1)
    {
      printf (" ch prn state TLM      TOW  Health  Valid  TOW_sync offset\n");
      for (ch = 0; ch < N_CHANNELS; ch++)
        {
          //printf (" %2d %2d  %2d  %6ld   %6ld   %2d     %2d     %2d   %4d\n",
          //        ch, ichan[ch].prn, ichan[ch].state, ichan[ch].TLM,
          //        ichan[ch].TOW, gps_eph[ichan[ch].prn].health,
          //        gps_eph[ichan[ch].prn].valid, ichan[ch].tow_sync, 0);
          printf (" %2d %2d  %2d  %6ld   %6ld   %2d     %2d     %2d   %4d\n",
                  ch, 0, 0, (long)0,
                  (long)0, 0,
                  0, 0, 0);
        }
    }
  else if (display_page == 2)
    {
      printf (" ch prn state n_freq az  el        tropo        iono\n");
      for (ch = 0; ch < N_CHANNELS; ch++)
        {
          //printf (" %2d %2d  %2d  %3d   %4.0f  %3.0f   %10.4f   %10.4f\n",
          //        ch, ichan[ch].prn, ichan[ch].state, ichan[ch].n_freq,
          //        xyz[ichan[ch].prn].azimuth * 57.3,
          //        xyz[ichan[ch].prn].elevation * 57.3,
          //        satellite[ichan[ch].prn].Tropo * c,
          //        satellite[ichan[ch].prn].Iono * c);
          printf (" %2d %2d  %2d  %3d   %4.0f  %3.0f   %10.4f   %10.4f\n",
                  ch, 0, 0, 0,
                  0.0,
                  0.0,
                  0.0,
                  0.0);
        }
    }
  else if (display_page == 3)
    {
      printf (" ch prn state      Pseudorange     delta Pseudorange\n");
      for (ch = 0; ch < N_CHANNELS; ch++)
        {
          //printf (" %2d %2d  %2d  %20.10f   %15.10f\n",
          //        ch, ichan[ch].prn, ichan[ch].state,
          //        satellite[ichan[ch].prn].Pr,
          //        satellite[ichan[ch].prn].dPr);
          printf (" %2d %2d  %2d  %20.10f   %15.10f\n",
                  ch, 0, 0,
                  0.0,
                  0.0);
        }
    }
  else if (display_page == 4)   /* can be used for debugging purposes */
    {
      printf (" ch prn state sfid page SF1  SF2  SF3  SF4  SF5\n");
      for (ch = 0; ch < N_CHANNELS; ch++)
        {
          //printf (" %2d %2d   %2d   %2d  %2d  %3x  %3x  %3x  %3x  %3x\n",
          //        ch, ichan[ch].prn, ichan[ch].state, ichan[ch].sfid,
          //        schan[ch].page5, schan[ch].word_error[0],
          //        schan[ch].word_error[1], schan[ch].word_error[2],
          //        schan[ch].word_error[3], schan[ch].word_error[4]);
          printf (" %2d %2d   %2d   %2d  %2d  %3x  %3x  %3x  %3x  %3x\n",
                  ch, 0, 0, 0,
                  0, 0,
                  0, 0,
                  0, 0);
        }
    }

  key = check_for_keyboard_press ();
  if (key == 'p' || key == 'P')
    {
      display_page++;
      display_page = display_page % 5;
      clear_screen ();
    }
  /* Allow the user to cycle backwards through the display pages */
  if (key == 'b' || key == 'B')
    {
      display_page--;
      display_page = (display_page + 5) % 5;
      clear_screen();
    }
  if (key == 0x1b) { /* ESC */
    if (check_for_keyboard_press () == '[') {
      key = check_for_keyboard_press ();
      if (key == '5') {
        display_page--;
        display_page = (display_page + 5) % 5;
        clear_screen ();
      }
      else {
        display_page++;
        display_page = display_page % 5;
        clear_screen ();
      }
    }
  }
  if (key == 'x' || key == 'X' || key == 'q' || key == 'Q')
    return -1;

  return 0;
}