コード例 #1
0
uint16_t dev_read_DEV_MICA2_GPS(void* buffer, uint16_t len)
{
   uint16_t ret_val = 1;
   // if the GPS is turned off, turn it on.
   if (gps_mode == DEV_MODE_OFF)
   {
      gps_on();
      gps_enable_bits(GPS_TX_RX);
   }
   gps_enable_bits(GPS_TX_ADDR);
   
   // determine what type of variable we should store in buffer.
   switch(read_type)
   {
      
   case MICA2_GPS_READ_GGA:
      // we should store a gps_gga_t in buffer.
      // if buffer is not the size of a gps_gga_t, we have a problem.
      if (len != sizeof(gps_gga_t))
      {
	 ret_val = 0;
	 break;
      }

      // loop until we read a GGA packet
      do
      {
	 mica2_gps_readline(gps_buffer, GPS_BUFFER_SIZE);
      }while(!mica2_gps_is_gga(gps_buffer));
      // parse the packet into buffer.
      mica2_gps_parse_gga(gps_buffer, (gps_gga_t*)buffer);
      
      break;
      
   case MICA2_GPS_READ_STRING:
      // we should store a simple string in buffer.
      mica2_gps_readline(buffer, len);
      break;
      
   }
   // if the GPS was turned off, turn it back off.
   if (gps_mode == DEV_MODE_OFF)
   {
      gps_disable_bits(GPS_TX_RX);
      gps_off();
   }
   
   return 1;
}
コード例 #2
0
uint8_t dev_mode_DEV_MICA2_GPS(uint8_t md)
{
   if (md == DEV_MODE_OFF)
   {
      gps_mode = md;
      gps_disable_bits(GPS_TX_RX);
      gps_off();
      return DEV_OK;
   }
   else if (md == DEV_MODE_ON)
   {
      gps_mode = md;
      gps_disable_bits(GPS_TX_RX);
      gps_on();
      return DEV_OK;
   }
   else
      return DEV_UNSUPPORTED;
   
}
コード例 #3
0
ファイル: commands.c プロジェクト: ohanssen/ArcticTracker
static void cmd_nmea(Stream *chp, int argc, char* argv[])
{
  if (argc < 1) {
    chprintf(chp, "Usage: GPS on|off|nmea|pos\r\n");
    return;
  }
  else if (strncasecmp("on", argv[0], 2) == 0) {
    chprintf(chp, "***** GPS ON *****\r\n");
    gps_on();
    return;
  } 
  else if (strncasecmp("off", argv[0], 2) == 0) {
    chprintf(chp, "***** GPS OFF *****\r\n");
    gps_off();
    return;
  }  
  else if (strncasecmp("nmea", argv[0], 1) == 0) {
    chprintf(chp, "***** NMEA PACKETS *****\r\n");
    gps_mon_raw();
  } 
  else if (strncasecmp("pos", argv[0], 3) == 0){
    chprintf(chp, "***** VALID POSITION REPORTS (GPRMC) *****\r\n");
    gps_mon_pos();
  }    
  else if (strncasecmp("test", argv[0], 4) == 0) {
    float x;
    sscanf(argv[1], "%f", &x); 
    chprintf(chp, "%f\r\n", x);
  }
  else 
    return;
  
  /* And wait until some character has been typed */
  getch(chp);
  gps_mon_off();
}