Wie geht es jetzt weiter? Was sind die nächsten Schritte? Was können/sollen wir testen und liefern?
Wie immer steht alles exakt in der oXs.config.description.h, wie immer leider in englisch.
void convertLonLat_Hott( int32_t GPS_LatLon, uint16_t * degMin , uint16_t * decimalMin ) {
/*
static uint32_t GPS_LatLonAbs ;
static uint8_t degre0decimals ;
static uint16_t minute4decimals ;
static uint8_t minute0decimals ;
GPS_LatLonAbs = ( GPS_LatLon < 0 ? - GPS_LatLon : GPS_LatLon) / 100 ; // remove 2 decimals from original value which contains degre with 7 decimals (so next calculation are smaller)
degre0decimals = GPS_LatLonAbs / 100000 ; // extract the degre without decimal
minute4decimals = ( GPS_LatLonAbs - ( ((uint32_t) degre0decimals) * 100000 ) ) * 6 ; // keep the decimal of degree and convert them in minutes (*60) and remove 1 decimal (/10) in order to keep 4 decimals
minute0decimals = minute4decimals / 10000 ; // extract the minutes (without decimals)
*degMin = degre0decimals * 100 + minute0decimals ; // put degree and minutes toegether in a special format
*decimalMin = minute4decimals - ( minute0decimals - 10000 ) ; // Extract the decimal part of the minutes (4 decimals)
*/
static float GPS_LatLonAbs ;
static float lon=0;
static uint8_t lon_D=0;
static uint16_t lon_M=0;
static uint16_t lon_hott_M=0;
static uint32_t lon_hott_S=0;
GPS_LatLonAbs = ( GPS_LatLon < 0 ? - GPS_LatLon : GPS_LatLon) / 100 ; // remove 2 decimals from original value which contains degre with 7 decimals (so next calculation are smaller)
lon = GPS_LatLonAbs / 100000 ; // XX.XXXXXXX DEG
lon_D = (int) lon; // True DEG
lon_M = (int) ((lon-lon_D)*60); // True MIN
lon_hott_M = (int) (lon_D*100) + lon_M; // Hott MIN
lon_hott_S = ((lon * 100000) - (lon_D * 100000)) * 6; // Hott SEC
lon_hott_S = lon_hott_S % 10000; // Hott SEC
*degMin = lon_hott_M;
*decimalMin = lon_hott_S ;
}