Skip to content
Closed

CP 5191 #5219

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ workflows:
filters:
branches:
only:
- main
- pg-cp-5191
- release:
filters:
tags:
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=mapbox
POM_DEVELOPER_NAME=Mapbox

POM_SNAPSHOT_VERSION_NAME=2.1.0-SNAPSHOT
POM_SNAPSHOT_VERSION_NAME=2.1.0-cp-5191.1-SNAPSHOT

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import com.mapbox.navigation.base.metrics.MetricsReporter
import com.mapbox.navigation.base.options.NavigationOptions
import com.mapbox.navigation.base.trip.model.RouteLegProgress
import com.mapbox.navigation.base.trip.model.RouteProgress
import com.mapbox.navigation.base.trip.model.RouteProgressState
import com.mapbox.navigation.core.BuildConfig
import com.mapbox.navigation.core.MapboxNavigation
import com.mapbox.navigation.core.arrival.ArrivalObserver
Expand Down Expand Up @@ -93,18 +94,31 @@ private data class SessionMetadata(
* @param timeOfReroute time of reroute. Unit is **time in millis**.
* @param timeSinceLastReroute time since last reroute. Unit is **millis**.
* @param driverModeArrivalTime arrival time of driver mode
* @param currentDistanceTraveled for the active session
*/
private data class DynamicSessionValues(
var rerouteCount: Int = 0,
var timeOfReroute: Long = 0L,
var timeSinceLastReroute: Int = 0,
var driverModeArrivalTime: Date? = null,
var currentDistanceTraveled: Int = 0,
var accumulatedDistanceTraveled: Int = 0,
) {
fun reset() {
rerouteCount = 0
timeOfReroute = 0
timeSinceLastReroute = 0
driverModeArrivalTime = null
currentDistanceTraveled = 0
accumulatedDistanceTraveled = 0
}

fun accumulateDistanceTraveled(distance: Int) {
accumulatedDistanceTraveled += distance
}

fun resetCurrentDistanceTraveled() {
currentDistanceTraveled = 0
}
}

Expand Down Expand Up @@ -289,6 +303,16 @@ internal object MapboxNavigationTelemetry {

private val routeProgressObserver = RouteProgressObserver { routeProgress ->
this.routeData.routeProgress = routeProgress
val dynamicValues = getSessionMetadataIfTelemetryRunning()?.dynamicValues
if (routeProgress.currentState == RouteProgressState.OFF_ROUTE) {
dynamicValues?.accumulateDistanceTraveled(
routeProgress.distanceTraveled.toInt()
)
dynamicValues?.resetCurrentDistanceTraveled()
} else {
dynamicValues?.currentDistanceTraveled =
routeProgress.distanceTraveled.toInt()
}
}

private val onRouteDataChanged: () -> Unit = {
Expand Down Expand Up @@ -480,6 +504,10 @@ internal object MapboxNavigationTelemetry {
this.feedbackSubType = feedbackSubType
this.locationsBefore = feedbackMetadata.locationsBeforeEvent
this.locationsAfter = feedbackMetadata.locationsAfterEvent
val dynamicValues = getSessionMetadataIfTelemetryRunning()?.dynamicValues
val currentDistanceTraveled = dynamicValues?.currentDistanceTraveled ?: 0
val accumulatedDistanceTraveled = dynamicValues?.accumulatedDistanceTraveled ?: 0
val distanceCompleted = currentDistanceTraveled + accumulatedDistanceTraveled
populate(
[email protected],
null,
Expand All @@ -493,6 +521,7 @@ internal object MapboxNavigationTelemetry {
feedbackMetadata.driverMode,
feedbackMetadata.driverModeStartTime,
feedbackMetadata.rerouteCount,
distanceCompleted,
feedbackMetadata.eventVersion,
feedbackMetadata.appMetadata,
)
Expand Down Expand Up @@ -727,6 +756,10 @@ internal object MapboxNavigationTelemetry {
}

private fun NavigationEvent.populateWithLocalVars(sessionMetadata: SessionMetadata?) {
val dynamicValues = sessionMetadata?.dynamicValues
val currentDistanceTraveled = dynamicValues?.currentDistanceTraveled ?: 0
val accumulatedDistanceTraveled = dynamicValues?.accumulatedDistanceTraveled ?: 0
val distanceCompleted = currentDistanceTraveled + accumulatedDistanceTraveled
this.populate(
[email protected],
routeData.originalRoute,
Expand All @@ -740,6 +773,7 @@ internal object MapboxNavigationTelemetry {
sessionMetadata?.telemetryNavSessionState?.getModeName(),
sessionMetadata?.driverModeStartTime?.let { generateCreateDateFormatted(it) },
sessionMetadata?.dynamicValues?.rerouteCount,
distanceCompleted,
EVENT_VERSION,
createAppMetadata()
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import com.mapbox.navigation.utils.internal.logD
* @param driverModeStartTime driver mode start time.
* Use [TelemetryUtils.generateCreateDateFormatted]
* @param rerouteCount reroute count
* @param distanceTraveled accumulated for the session
* @param eventVersion events version [MapboxNavigationTelemetry.EVENT_VERSION]
* @param appMetadata use [MapboxNavigationTelemetry.createAppMetadata]
*/
Expand All @@ -44,6 +45,7 @@ internal fun NavigationEvent.populate(
@FeedbackEvent.DriverMode driverMode: String?,
driverModeStartTime: String?,
rerouteCount: Int?,
distanceTraveled: Int?,
eventVersion: Int,
appMetadata: AppMetadata?,
) {
Expand All @@ -56,7 +58,7 @@ internal fun NavigationEvent.populate(

distanceRemaining = routeProgressNonNull.distanceRemaining.toInt()
durationRemaining = routeProgressNonNull.durationRemaining.toInt()
distanceCompleted = routeProgressNonNull.distanceTraveled.toInt()
distanceCompleted = distanceTraveled ?: 0

routeProgressNonNull.route.let {
geometry = it.geometry()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,7 @@ class MapboxNavigationTelemetryTest {

val departEvent = events[1] as NavigationDepartEvent
checkOriginalParams(departEvent, originalRoute)
assertEquals(0, departEvent.distanceCompleted)
}

@Test
Expand All @@ -733,6 +734,7 @@ class MapboxNavigationTelemetryTest {

val rerouteEvent = events[2] as NavigationRerouteEvent
checkOriginalParams(rerouteEvent, anotherRoute)
assertEquals(routeProgress.distanceTraveled.toInt(), rerouteEvent.distanceCompleted)
}

@Test
Expand Down Expand Up @@ -1449,7 +1451,6 @@ class MapboxNavigationTelemetryTest {
)
assertEquals(routeProgress.distanceRemaining.toInt(), event.distanceRemaining)
assertEquals(routeProgress.durationRemaining.toInt(), event.durationRemaining)
assertEquals(routeProgress.distanceTraveled.toInt(), event.distanceCompleted)
assertEquals(currentRoute.geometry(), event.geometry)
assertEquals(currentRoute.routeOptions()?.profile(), event.profile)
assertEquals(currentRoute.routeIndex()?.toInt(), event.legIndex)
Expand Down