kopia lustrzana https://github.com/meshtastic/firmware
				
				
				
			
							rodzic
							
								
									94258cfd1c
								
							
						
					
					
						commit
						42c1967e7b
					
				|  | @ -558,20 +558,19 @@ void drawNodeListWithCompasses(OLEDDisplay *display, OLEDDisplayUiState *state, | |||
|     double lat = 0; | ||||
|     double lon = 0; | ||||
| 
 | ||||
|     if (!config.display.compass_north_top) { | ||||
| #if HAS_GPS | ||||
|         if (screen->hasHeading()) { | ||||
|             heading = screen->getHeading(); // degrees
 | ||||
|             validHeading = true; | ||||
|         } else { | ||||
|             heading = screen->estimatedHeading(lat, lon); | ||||
|             validHeading = !isnan(heading); | ||||
|         } | ||||
|     if (screen->hasHeading()) { | ||||
|         heading = screen->getHeading(); // degrees
 | ||||
|         validHeading = true; | ||||
|     } else { | ||||
|         heading = screen->estimatedHeading(lat, lon); | ||||
|         validHeading = !isnan(heading); | ||||
|     } | ||||
| #endif | ||||
| 
 | ||||
|         if (!validHeading) | ||||
|             return; | ||||
|     } | ||||
|     if (!validHeading) | ||||
|         return; | ||||
| 
 | ||||
|     drawNodeListScreen(display, state, x, y, "Bearings", drawEntryCompass, drawCompassArrow, heading, lat, lon); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -444,11 +444,8 @@ void UIRenderer::drawNodeInfo(OLEDDisplay *display, const OLEDDisplayUiState *st | |||
|                 GeoCoord::latLongToMeter(DegD(p.latitude_i), DegD(p.longitude_i), DegD(op.latitude_i), DegD(op.longitude_i)); | ||||
|             */ | ||||
|             float bearing = GeoCoord::bearing(DegD(op.latitude_i), DegD(op.longitude_i), DegD(p.latitude_i), DegD(p.longitude_i)); | ||||
|             if (config.display.compass_north_top) { | ||||
|                 myHeading = 0; | ||||
|             } else { | ||||
|             if (!config.display.compass_north_top) | ||||
|                 bearing -= myHeading; | ||||
|             } | ||||
| 
 | ||||
|             display->drawCircle(compassX, compassY, compassRadius); | ||||
|             CompassRenderer::drawCompassNorth(display, compassX, compassY, myHeading, compassRadius); | ||||
|  | @ -488,11 +485,8 @@ void UIRenderer::drawNodeInfo(OLEDDisplay *display, const OLEDDisplayUiState *st | |||
|             int compassY = yBelowContent + availableHeight / 2; | ||||
| 
 | ||||
|             const auto &op = ourNode->position; | ||||
|             float myHeading = 0; | ||||
|             if (!config.display.compass_north_top) { | ||||
|                 myHeading = screen->hasHeading() ? screen->getHeading() * PI / 180 | ||||
|                                                  : screen->estimatedHeading(DegD(op.latitude_i), DegD(op.longitude_i)); | ||||
|             } | ||||
|             float myHeading = screen->hasHeading() ? screen->getHeading() * PI / 180 | ||||
|                                                    : screen->estimatedHeading(DegD(op.latitude_i), DegD(op.longitude_i)); | ||||
|             graphics::CompassRenderer::drawCompassNorth(display, compassX, compassY, myHeading, compassRadius); | ||||
| 
 | ||||
|             const auto &p = node->position; | ||||
|  | @ -932,18 +926,15 @@ void UIRenderer::drawCompassAndLocationScreen(OLEDDisplay *display, OLEDDisplayU | |||
|                           int32_t(gpsStatus->getAltitude())); | ||||
| 
 | ||||
|     // === Determine Compass Heading ===
 | ||||
|     float heading = 0; | ||||
|     float heading; | ||||
|     bool validHeading = false; | ||||
|     if (config.display.compass_north_top) { | ||||
| 
 | ||||
|     if (screen->hasHeading()) { | ||||
|         heading = radians(screen->getHeading()); | ||||
|         validHeading = true; | ||||
|     } else { | ||||
|         if (screen->hasHeading()) { | ||||
|             heading = radians(screen->getHeading()); | ||||
|             validHeading = true; | ||||
|         } else { | ||||
|             heading = screen->estimatedHeading(geoCoord.getLatitude() * 1e-7, geoCoord.getLongitude() * 1e-7); | ||||
|             validHeading = !isnan(heading); | ||||
|         } | ||||
|         heading = screen->estimatedHeading(geoCoord.getLatitude() * 1e-7, geoCoord.getLongitude() * 1e-7); | ||||
|         validHeading = !isnan(heading); | ||||
|     } | ||||
| 
 | ||||
|     // If GPS is off, no need to display these parts
 | ||||
|  |  | |||
|  | @ -137,14 +137,10 @@ void WaypointModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, | |||
|     if (ourNode && (nodeDB->hasValidPosition(ourNode) || screen->hasHeading())) { | ||||
|         const meshtastic_PositionLite &op = ourNode->position; | ||||
|         float myHeading; | ||||
|         if (config.display.compass_north_top) { | ||||
|             myHeading = 0; | ||||
|         } else { | ||||
|             if (screen->hasHeading()) | ||||
|                 myHeading = (screen->getHeading()) * PI / 180; // gotta convert compass degrees to Radians
 | ||||
|             else | ||||
|                 myHeading = screen->estimatedHeading(DegD(op.latitude_i), DegD(op.longitude_i)); | ||||
|         } | ||||
|         if (screen->hasHeading()) | ||||
|             myHeading = (screen->getHeading()) * PI / 180; // gotta convert compass degrees to Radians
 | ||||
|         else | ||||
|             myHeading = screen->estimatedHeading(DegD(op.latitude_i), DegD(op.longitude_i)); | ||||
|         graphics::CompassRenderer::drawCompassNorth(display, compassX, compassY, myHeading, (compassDiam / 2)); | ||||
| 
 | ||||
|         // Compass bearing to waypoint
 | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Jonathan Bennett
						Jonathan Bennett