Ejemplo n.º 1
0
void Process_GpsDataInHandler(void)
{
  int loop;
  if(gpsUartRcvBuff_WrPt==gpsUartRcvBuff_RdPt)
  {
    return;
  }
  loop=0;
  do
  {
    input_ubx(&ubxRawData,gpsUartRcvBuff[gpsUartRcvBuff_RdPt]);
    gpsUartRcvBuff_RdPt = (gpsUartRcvBuff_RdPt+1)%1024;
    loop++;
    if(ubxRawData.frameReady == TRUE)
    {
      break;
    }
  }while((loop<100)&&(gpsUartRcvBuff_WrPt!=gpsUartRcvBuff_RdPt));
  Receive_UbxData_byte();
  Decode_UbxData();   // if new gnss data coming,decode
  if(ubxRawData.frameReady == TRUE)
  {
      memset(&ubxRawData, 0, sizeof(ubxRawData));
      ubxRawData.frameReady = FALSE;
  }
  
}
Ejemplo n.º 2
0
/* input receiver raw data from stream -----------------------------------------
* fetch next receiver raw data and input a message from stream
* args   : raw_t  *raw   IO     receiver raw data control struct
*          int    format I      receiver raw data format (STRFMT_???)
*          unsigned char data I stream data (1 byte)
* return : status (-1: error message, 0: no message, 1: input observation data,
*                  2: input ephemeris, 3: input sbas message,
*                  9: input ion/utc parameter, 31: input lex message)
*-----------------------------------------------------------------------------*/
extern int input_raw(raw_t *raw, int format, unsigned char data)
{
    trace(5,"input_raw: format=%d data=0x%02x\n",format,data);

    switch (format) {
    case STRFMT_OEM4 :
        return input_oem4 (raw,data);
    case STRFMT_OEM3 :
        return input_oem3 (raw,data);
    case STRFMT_UBX  :
        return input_ubx  (raw,data);
    case STRFMT_SS2  :
        return input_ss2  (raw,data);
    case STRFMT_CRES :
        return input_cres (raw,data);
    case STRFMT_STQ  :
        return input_stq  (raw,data);
    case STRFMT_GW10 :
        return input_gw10 (raw,data);
    case STRFMT_JAVAD:
        return input_javad(raw,data);
    case STRFMT_NVS  :
        return input_nvs  (raw,data);
    case STRFMT_LEXR :
        return input_lexr (raw,data);
    }
    return 0;
}
Ejemplo n.º 3
0
Archivo: main.c Proyecto: ndhuan/GPSRTK
int decode_raw(rtksvr_t* svr, int index)
{
	uint8_t* i;
	Error err;
	char str[20];
	int res=0,res2=0,res3=0;
	switch (svr->format[index])
	{
		case STRFMT_UBX:
		{
			if (svr->buffPtr[index] + svr->nb[index] <= MAX_RAW_LEN)
			{
				for (i = svr->buff[index] + svr->buffPtr[index] ; 
							i < svr->buff[index] + svr->buffPtr[index] + svr->nb[index]; i++)
				{
					err = input_ubx(&svr->raw[index],*i);
					if (err>=NO_ERROR1)
					{
						updatesvr(svr,err,index);
						if (err==OBS)
						{
							res+=1;
						}
						else if (err==EPHEMERIS)
						{
							res2+=1;
						}
						else if (err==SOLUTION)
						{
							res3+=1;
						}
					}
				}
			}
			else
			{
				for (i = svr->buff[index] + svr->buffPtr[index] ; 
							i < svr->buff[index] + MAX_RAW_LEN; i++)
				{
					err = input_ubx(&svr->raw[index],*i);
					if (err>=NO_ERROR1)
					{
						updatesvr(svr,err,index);
						if (err==OBS)
						{
							res+=1;
						}
						else if (err==EPHEMERIS)
						{
							res2+=1;
						}
						else if (err==SOLUTION)
						{
							res3+=1;
						}
					}
				}
				for (i = svr->buff[index] ; 
					i < svr->buff[index] + svr->nb[index] + svr->buffPtr[index] - MAX_RAW_LEN ; i++)
				{
					err = input_ubx(&svr->raw[index],*i);
					if (err>=NO_ERROR1)
					{
						updatesvr(svr,err,index);
						if (err==OBS)
						{
							res+=1;
						}
						else if (err==EPHEMERIS)
						{
							res2+=1;
						}
						else if (err==SOLUTION)
						{
							res3+=1;
						}
					}
				}		
			}
			break;
		}
		case STRFMT_SS2:
		{
			if (svr->buffPtr[index] + svr->nb[index] <= MAX_RAW_LEN)
			{
				for (i = svr->buff[index] + svr->buffPtr[index] ; 
							i < svr->buff[index] + svr->buffPtr[index] + svr->nb[index]; i++)
				{
					err = input_ss2(&svr->raw[index],*i);
					if (err>=NO_ERROR1)
					{
						updatesvr(svr,err,index);
						if (err==OBS)
						{
							res+=1;
						}
						else if (err==EPHEMERIS)
						{
							res2+=1;
						}
						else if (err==SOLUTION)
						{
							res3+=1;
						}
					}
				}
			}
			else
			{
				for (i = svr->buff[index] + svr->buffPtr[index] ; 
							i < svr->buff[index] + MAX_RAW_LEN; i++)
				{
					err = input_ss2(&svr->raw[index],*i);
					if (err>=NO_ERROR1)
					{
						updatesvr(svr,err,index);
						if (err==OBS)
						{
							res+=1;
						}
						else if (err==EPHEMERIS)
						{
							res2+=1;
						}
						else if (err==SOLUTION)
						{
							res3+=1;
						}
					}
				}
				for (i = svr->buff[index] ; 
					i < svr->buff[index] + svr->nb[index] + svr->buffPtr[index] - MAX_RAW_LEN ; i++)
				{
					err = input_ss2(&svr->raw[index],*i);
					if (err>=NO_ERROR1)
					{
						updatesvr(svr,err,index);
						if (err==OBS)
						{
							res+=1;
						}
						else if (err==EPHEMERIS)
						{
							res2+=1;
						}
						else if (err==SOLUTION)
						{
							res3+=1;
						}
					}
				}		
			}
			break;
		}
	}

/*
	if (index==0)
	{
		sprintf(str,"%d,%d,%d\r\n",res,res2,res3);
		SendStr(str);
	}
*/	
	return res;
}