kopia lustrzana https://github.com/rs1729/RS
				
				
				
			lmsX: gpstime (float64)
							rodzic
							
								
									8208bbd85b
								
							
						
					
					
						commit
						e1923c8f87
					
				| 
						 | 
				
			
			@ -464,7 +464,8 @@ int bits2bytes(char *bitstr, ui8_t *bytes) {
 | 
			
		|||
typedef struct {
 | 
			
		||||
    int frnr;
 | 
			
		||||
    int sn;
 | 
			
		||||
    int week; int gpstow;
 | 
			
		||||
    int week;
 | 
			
		||||
    double gpstow;
 | 
			
		||||
    int jahr; int monat; int tag;
 | 
			
		||||
    int wday;
 | 
			
		||||
    int std; int min; float sek;
 | 
			
		||||
| 
						 | 
				
			
			@ -482,7 +483,7 @@ gpx_t gpx0 = { 0 };
 | 
			
		|||
#define pos_SondeSN  (OFS+0x00)  // ?4 byte 00 7A....
 | 
			
		||||
#define pos_FrameNb  (OFS+0x04)  // 2 byte
 | 
			
		||||
//GPS Position
 | 
			
		||||
#define pos_GPSTOW   (OFS+0x06)  // 4 byte
 | 
			
		||||
#define pos_GPSTOW   (OFS+0x06)  // 8 byte
 | 
			
		||||
#define pos_GPSlat   (OFS+0x0E)  // 4 byte
 | 
			
		||||
#define pos_GPSlon   (OFS+0x12)  // 4 byte
 | 
			
		||||
#define pos_GPSalt   (OFS+0x16)  // 4 byte
 | 
			
		||||
| 
						 | 
				
			
			@ -522,30 +523,33 @@ int get_FrameNb() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
char weekday[7][3] = { "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"};
 | 
			
		||||
//char weekday[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
 | 
			
		||||
//char weekday[7][3] = { "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"};
 | 
			
		||||
char weekday[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
 | 
			
		||||
 | 
			
		||||
int get_GPStime() {
 | 
			
		||||
    int i;
 | 
			
		||||
    unsigned byte;
 | 
			
		||||
    ui8_t gpstime_bytes[4];
 | 
			
		||||
    int gpstime = 0, // 32bit
 | 
			
		||||
        day;
 | 
			
		||||
    ui32_t gpstime, tow_u4;
 | 
			
		||||
    ui32_t w[2]; // 64bit float
 | 
			
		||||
    int day;
 | 
			
		||||
    float ms;
 | 
			
		||||
    double *f64 = (double*)w;
 | 
			
		||||
 | 
			
		||||
    w[0] = 0;
 | 
			
		||||
    for (i = 0; i < 4; i++) {
 | 
			
		||||
        byte = p_frame[pos_GPSTOW + i];
 | 
			
		||||
        gpstime_bytes[i] = byte;
 | 
			
		||||
        w[0] |= byte << (8*(3-i));
 | 
			
		||||
    }
 | 
			
		||||
    gpstime = 0;
 | 
			
		||||
    w[1] = 0;
 | 
			
		||||
    for (i = 0; i < 4; i++) {
 | 
			
		||||
        gpstime |= gpstime_bytes[i] << (8*(3-i));
 | 
			
		||||
        byte = p_frame[pos_GPSTOW+4 + i];
 | 
			
		||||
        w[1] |= byte << (8*(3-i));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    gpx.gpstow = gpstime;
 | 
			
		||||
 | 
			
		||||
    ms = gpstime % 1000;
 | 
			
		||||
    gpstime /= 1000;
 | 
			
		||||
    gpx.gpstow = *f64;
 | 
			
		||||
    tow_u4 = (ui32_t)gpx.gpstow;
 | 
			
		||||
    gpstime = tow_u4;
 | 
			
		||||
 | 
			
		||||
    day = gpstime / (24 * 3600);
 | 
			
		||||
    gpstime %= (24*3600);
 | 
			
		||||
| 
						 | 
				
			
			@ -555,7 +559,7 @@ int get_GPStime() {
 | 
			
		|||
    gpx.wday = day;
 | 
			
		||||
    gpx.std = gpstime / 3600;
 | 
			
		||||
    gpx.min = (gpstime % 3600) / 60;
 | 
			
		||||
    gpx.sek = gpstime % 60 + ms/1000.0;
 | 
			
		||||
    gpx.sek = (gpstime % 60) + gpx.gpstow - tow_u4;
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -755,7 +759,8 @@ void print_frame(int crc_err, int len) {
 | 
			
		|||
            get_SondeSN();
 | 
			
		||||
            if (option_verbose) printf(" (%7d) ", gpx.sn);
 | 
			
		||||
            printf(" [%5d] ", gpx.frnr);
 | 
			
		||||
            //
 | 
			
		||||
            printf("%s ", weekday[gpx.wday]);
 | 
			
		||||
            printf("(%02d:%02d:%06.3f) ", gpx.std, gpx.min, gpx.sek);
 | 
			
		||||
            get_GPSlat();
 | 
			
		||||
            get_GPSlon();
 | 
			
		||||
            err = get_GPSalt();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue