Here is the function call:
/* Set the rate of the NMEA messages used */
PSRF103("00", "00", "01", "02");
// GGA at 1 sec rate
Here is the function:
//-----------------------------------------------------------------------------
// Function: PSRF103
// Description: Send SiRF msg 103 to GPS
//-----------------------------------------------------------------------------
// where: $PSRF103,05,00,01,01*20
// $PSRF103
// 05 00=GGA
// 01=GLL
// 02=GSA
// 03=GSV
// 04=RMC
// 05=VTG
// 00 mode, 0=set rate, 1=query
// 01 rate in seconds, 0-255
// 01 checksum 0=no, 1=yes
// *20 checksum
void PSRF103(char nmeamsg[], char mode[], char rate[], char chksum[])
{
char msg[25] = "$PSRF103"; // NMEA msg
char csum[2];
unsigned short checksum = 0;
int i;
strcat(msg,",");
strcat(msg,nmeamsg); // Add NMEA msg
strcat(msg,",");
strcat(msg,mode); // Add mode
strcat(msg,",");
strcat(msg,rate); // Add rate
strcat(msg,",");
strcat(msg,chksum); // Add checksum mode
for (i=1;i<strlen(msg);i++)
checksum ^= msg[i]; // XOR
sprintf(csum,"%02X",checksum); // Convert hex string
strcat(msg,"*"); // Add checksum delimeter
strcat(msg, csum); // Add checksum
strcat(msg,"\r\n"); // Add CR, LF
USART_SendString(GPS_USART,msg); // Send msg
DPRINT(msg);
}