-
Notifications
You must be signed in to change notification settings - Fork 2
/
logsync.c
89 lines (86 loc) · 1.81 KB
/
logsync.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <stdio.h>
#include <string.h>
char syncbuf[1024][256];
int main( int argc, char *argv[] ) {
char buf[256];
int cnt, mstik, newtik, i, jcnt, gcnt, jtik, gtik, icnt;
icnt = 0;
while( !feof(stdin) ) {
memset( buf, 0, sizeof(buf) );
gets(buf);
printf( "%06d%s\r\n", icnt++, buf );
if( buf[3] == '=' )
break;
}
cnt = 0;
// strcpy( syncbuf[cnt++], buf );
while( !feof(stdin) ) {
memset( buf, 0, sizeof(buf) );
gets(buf);
if( buf[3] == 'J' ) {
strcpy(syncbuf[cnt++], buf );
continue;
}
printf( "%06d%s\r\n", icnt++, buf );
if( buf[3] == '$' )
break;
}
mstik = atoi(buf);
while( !feof(stdin) ) {
memset( buf, 0, sizeof(buf) );
gets(buf);
if( buf[3] == 'J' ) {
strcpy(syncbuf[cnt++], buf );
continue;
}
newtik = atoi(buf);
if(newtik < mstik )
break;
mstik = newtik;
printf( "%06d%s\r\n", icnt++, buf );
}
gtik = newtik;
jcnt = 100000;
gcnt = 100000;
icnt = 100000;
jtik = 0;
for( i = 0 ; i < cnt; i++ ) {
jtik = atoi(syncbuf[i]);
printf( "%06d%s\r\n", jcnt, syncbuf[i] );
}
i = 0;
while( !feof(stdin) ) {
memset( buf, 0, sizeof(buf) );
gets(buf);
switch( buf[3] ) {
case '$':
newtik = atoi(buf);
if( newtik < gtik )
gcnt++;
gtik = newtik;
if( !strncmp( "$GPGSA,", &buf[3], 7 ) )
icnt = gcnt; // PPS follows this as it is one-per and after the RMC
printf( "%06d%s\r\n", gcnt, buf );
break;
case '=':
if( icnt < jcnt )
icnt = jcnt;
printf( "%06d%s\r\n", ++icnt, buf );
break;
case 'J':
newtik = atoi(buf);
if( newtik < jtik )
jcnt++;
jtik = newtik;
printf( "%06d%s\r\n", jcnt, buf );
if( jcnt < icnt ) {
jcnt = icnt;
jtik = 0;
}
break;
default:
printf( "???%06d%s", jcnt, buf );
break;
}
}
}