Fixing timeoffset
This commit is contained in:
		
							parent
							
								
									0773de6e08
								
							
						
					
					
						commit
						96c1977037
					
				| 
						 | 
					@ -9,6 +9,8 @@
 | 
				
			||||||
FormatedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
 | 
					FormatedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
 | 
				
			||||||
    FormatedData result;
 | 
					    FormatedData result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    static int dayoffset = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Load configuration values
 | 
					    // Load configuration values
 | 
				
			||||||
    int timeZone = commondata.config->getInt(commondata.config->timeZone);                      // [UTC -12...+12]
 | 
					    int timeZone = commondata.config->getInt(commondata.config->timeZone);                      // [UTC -12...+12]
 | 
				
			||||||
    String lengthFormat = commondata.config->getString(commondata.config->lengthFormat);        // [m|ft]
 | 
					    String lengthFormat = commondata.config->getString(commondata.config->lengthFormat);        // [m|ft]
 | 
				
			||||||
| 
						 | 
					@ -31,7 +33,7 @@ FormatedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
 | 
				
			||||||
    time_t tv = 0;
 | 
					    time_t tv = 0;
 | 
				
			||||||
    if (value->getFormat() == "formatDate"){
 | 
					    if (value->getFormat() == "formatDate"){
 | 
				
			||||||
        tmElements_t parts;
 | 
					        tmElements_t parts;
 | 
				
			||||||
        time_t tv=tNMEA0183Msg::daysToTime_t(value->value);
 | 
					        time_t tv=tNMEA0183Msg::daysToTime_t(value->value + dayoffset);
 | 
				
			||||||
        tNMEA0183Msg::breakTime(tv,parts);
 | 
					        tNMEA0183Msg::breakTime(tv,parts);
 | 
				
			||||||
        if(usesimudata == false) { 
 | 
					        if(usesimudata == false) { 
 | 
				
			||||||
            if(String(dateFormat) == "DE"){
 | 
					            if(String(dateFormat) == "DE"){
 | 
				
			||||||
| 
						 | 
					@ -59,11 +61,12 @@ FormatedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    //########################################################
 | 
					    //########################################################
 | 
				
			||||||
    else if(value->getFormat() == "formatTime"){
 | 
					    else if(value->getFormat() == "formatTime"){
 | 
				
			||||||
        double timeInSeconds;
 | 
					        double timeInSeconds = 0;
 | 
				
			||||||
        double inthr;
 | 
					        double utcTime = 0;
 | 
				
			||||||
        double intmin;
 | 
					        double inthr = 0;
 | 
				
			||||||
        double intsec;
 | 
					        double intmin = 0;
 | 
				
			||||||
        double val;
 | 
					        double intsec = 0;
 | 
				
			||||||
 | 
					        double val = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(timeZone > 0){
 | 
					        if(timeZone > 0){
 | 
				
			||||||
            timeInSeconds = value->value + timeZone * 3600;
 | 
					            timeInSeconds = value->value + timeZone * 3600;
 | 
				
			||||||
| 
						 | 
					@ -74,6 +77,24 @@ FormatedData formatValue(GwApi::BoatValue *value, CommonData &commondata){
 | 
				
			||||||
            timeInSeconds = int(timeInSeconds) % 86400;                 // Reduce to one day (86400s)
 | 
					            timeInSeconds = int(timeInSeconds) % 86400;                 // Reduce to one day (86400s)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Changing day depends on time offset
 | 
				
			||||||
 | 
					        utcTime = value->value;
 | 
				
			||||||
 | 
					        if(timeZone + (utcTime/3600) > 24 && timeZone > 0){
 | 
				
			||||||
 | 
					            dayoffset = 1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else{
 | 
				
			||||||
 | 
					            dayoffset = 0;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if(timeZone == 0){
 | 
				
			||||||
 | 
					            dayoffset = 0;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if(timeZone + (utcTime/3600) > 24 && timeZone < 0){
 | 
				
			||||||
 | 
					            dayoffset = 0;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else{
 | 
				
			||||||
 | 
					            dayoffset = -1;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(usesimudata == false) {    
 | 
					        if(usesimudata == false) {    
 | 
				
			||||||
            val=modf(timeInSeconds/3600.0,&inthr);
 | 
					            val=modf(timeInSeconds/3600.0,&inthr);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@
 | 
				
			||||||
        "type": "number",
 | 
					        "type": "number",
 | 
				
			||||||
        "default": "0",
 | 
					        "default": "0",
 | 
				
			||||||
        "check": "checkMinMax",
 | 
					        "check": "checkMinMax",
 | 
				
			||||||
        "min": -12,
 | 
					        "min": -18,
 | 
				
			||||||
        "max": 14,
 | 
					        "max": 14,
 | 
				
			||||||
        "description": "Time zone [UTC -12...+14]",
 | 
					        "description": "Time zone [UTC -12...+14]",
 | 
				
			||||||
        "category": "OBP60 Settings",
 | 
					        "category": "OBP60 Settings",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue