static KFileMem mem;
-static char nmea_test_vector[] =
+static char nmea_test1[] =
{
-"$GPGGA,123519.021,3929.946667,N,11946.086667,E,1,08,0.9,545.4,M,46.9,M,,*4A\r\n" /* good */
-"$xyz,1234,asdfadfasdfasdfljsadfkjasdfk\r\n" /* junk */
-"$GPRMC,225446,A,4916.45,N,12311.120,W,000.5,054.7,191194,020.3,E*68\r\n" /* good */
-"$GPRMC,225446,A,4916.45,N,12311.120,W,000.5,054.7,191194,020.3,E*48\r\n" /* checksum error */
-"$GPGGA,091144.698,0000.0000,S,00000.0000,W,0,00,00.0,0.0,M,0.0,M,,*5C\r\n" /* acquired */
-"$GPRMC,091144.698,V,0000.0000,S,00000.0000,W,0.00,0.00,051009,,,A*75\r\n" /* acquired */
-"$GPVTG,0.00,T,,,0.00,N,0.00,K,A*70\r\n" /* acquired */
-"$GPGGA,091145.698,0000.0000,S,00000.0000,W,0,00,00.0,0.0,M,0.0,M,,*5D\r\n" /* acquired */
-"$GPGSV,1,1,02,1,,,41,12,,,35,,,,,,,,*4A\r\n" /* acquired */
-"$GPRMC,091145.698,V,0000.0000,S,00000.0000,W,0.00,0.00,051009,,,A*74\r\n" /* acquired */
-"$GPVTG,0.00,T,,,0.00,N,0.00,K,A*70\r\n" /* acquired */
-"$GPGGA,170529.948,4351.0841,N,01108.8685,E,1,05,02.6,57.4,M,45.2,M,,*50\r\n" /* acquired */
"$GPRMC,170525.949,A,4351.0843,N,01108.8687,E,0.00,237.67,051009,,,A*61\r\n" /* acquired */
"$GPVTG,237.67,T,,,0.00,N,0.00,K,A*77\r\n" /* acquired */
"$GPGSV,3,1,09,3,78,302,37,6,87,031,,7,05,292,37,14,05,135,*48\r\n" /* acquired */
"$GPGGA,170527.949,4351.0842,N,01108.8685,E,1,05,02.6,57.4,M,45.2,M,,*5C\r\n" /* acquired */
};
-NmeaGga gga_test =
+static NmeaGga gga_test =
{
.latitude = 43851403,
.longitude = 11147808,
.altitude = 57,
- .time = 2736328,
+ .time = 57928,
.satellites = 5,
.quality = 1,
.hdop = 26,
.geoid = 45,
};
+static NmeaRmc rmc_test =
+{
+ .time = 1254758726,
+ .warn = 'A',
+ .latitude = 43851405,
+ .longitude = 11147812,
+ .speed = 0,
+ .course = 237,
+ .mag_var = 0
+};
+
+
+static NmeaVtg vtg_test =
+{
+ .track_good = 237,
+ .knot_speed = 0,
+ .km_speed = 0
+};
+
+static NmeaGsv gsv_test =
+{
+ .tot_message = 3,
+ .message_num = 1,
+ .tot_svv = 9,
+ .info =
+ {
+ { 3, 78, 302, 37 },
+ { 6, 87, 31, 0 },
+ { 7, 5, 292, 37 },
+ { 14, 5, 135, 0 }
+ }
+};
+
+
#define TOT_GOOD_SENTENCE_NUM 12
#define MAX_SENTENCE_POLL 20
/**
* do something with the GGA data
*/
-static void gpgga_callout(nmeap_context_t *context, void *data, void *user_data)
+static void gpgga_callout_test(nmeap_context_t *context, void *data, void *user_data)
{
(void)context;
(void)user_data;
gga->satellites,
gga->quality,
gga->hdop,
- gga->geoid
- );
+ gga->geoid);
}
/**
- * called when a gpgga message is received and parsed
+ * do something with the RMC data
*/
-static void gprmc_callout(nmeap_context_t *context, void *data, void *user_data)
+static void gprmc_callout_test(nmeap_context_t *context, void *data, void *user_data)
{
(void)context;
(void)user_data;
(long)rmc->longitude,
rmc->speed,
rmc->course,
- rmc->mag_var
- );
+ rmc->mag_var);
}
/**
- * do something with the GGA data
+ * do something with the GSV data
*/
-static void gpgsv_callout(nmeap_context_t *context, void *data, void *user_data)
+static void gpgsv_callout_test(nmeap_context_t *context, void *data, void *user_data)
{
(void)context;
(void)user_data;
/**
* do something with the VTG data
*/
-static void gpvtg_callout(nmeap_context_t *context, void *data, void *user_data)
+static void gpvtg_callout_test(nmeap_context_t *context, void *data, void *user_data)
{
(void)context;
(void)user_data;
LOG_INFO("[%d]found GPVTG message %d %d %d\n",tot_sentence_parsed,
vtg->track_good,
vtg->knot_speed,
- vtg->km_speed
- );
+ vtg->km_speed);
}
int nmea_testSetup(void)
{
kdbg_init();
- kfilemem_init(&mem, nmea_test_vector, sizeof(nmea_test_vector));
+ kfilemem_init(&mem, nmea_test1, sizeof(nmea_test1));
LOG_INFO("Init test buffer..done.\n");
- nmeap_init(&nmea, NULL);
- nmeap_addParser(&nmea, "GPGGA", nmea_gpgga, gpgga_callout, &gga);
- nmeap_addParser(&nmea, "GPRMC", nmea_gprmc, gprmc_callout, &rmc);
- nmeap_addParser(&nmea, "GPGSV", nmea_gpgsv, gpgsv_callout, &gsv);
- nmeap_addParser(&nmea, "GPVTG", nmea_gpvtg, gpvtg_callout, &vtg);
+ nmeap_init(&nmea, NULL);
+ nmeap_addParser(&nmea, "GPGGA", nmea_gpgga, gpgga_callout_test, &gga);
+ nmeap_addParser(&nmea, "GPRMC", nmea_gprmc, gprmc_callout_test, &rmc);
+ nmeap_addParser(&nmea, "GPGSV", nmea_gpgsv, gpgsv_callout_test, &gsv);
+ nmeap_addParser(&nmea, "GPVTG", nmea_gpvtg, gpvtg_callout_test, &vtg);
return 0;
}
nmea_poll(&nmea, &mem.fd);
}
- if (tot_sentence_parsed != TOT_GOOD_SENTENCE_NUM)
- {
- LOG_ERR("No all test sentence have been parser.\n");
- return -1;
- }
-
- if (memcmp(&gga_test, &gga, sizeof(gga_test)))
+ if (memcmp(&gga_test, &gga, sizeof(gga_test)) &&
+ memcmp(&rmc_test, &rmc, sizeof(rmc_test)) &&
+ memcmp(&vtg_test, &vtg, sizeof(vtg_test)) &&
+ memcmp(&gsv_test, &gsv, sizeof(gsv_test)))
{
LOG_ERR("Last gga test sentence had unexpected value\n");
return -1;
}
+
return 0;
}