Skip to content

Commit b71478d

Browse files
committed
add AdasisMessageContext
1 parent 2bc2141 commit b71478d

File tree

8 files changed

+71
-7
lines changed

8 files changed

+71
-7
lines changed

build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ allprojects {
6464
// we allow access to snapshots repo if ALLOW_SNAPSHOT_REPOSITORY is set, what means we are running on CI
6565
// with Navigation Native forced to be some snapshot version
6666
// if you need to use snapshots while development, just set `addSnapshotsRepo` to true manually
67-
def addSnapshotsRepo = project.hasProperty('ALLOW_SNAPSHOT_REPOSITORY') ? project.property('ALLOW_SNAPSHOT_REPOSITORY') : (System.getenv("ALLOW_SNAPSHOT_REPOSITORY")?.toBoolean() ?: false)
67+
// def addSnapshotsRepo = project.hasProperty('ALLOW_SNAPSHOT_REPOSITORY') ? project.property('ALLOW_SNAPSHOT_REPOSITORY') : (System.getenv("ALLOW_SNAPSHOT_REPOSITORY")?.toBoolean() ?: false)
68+
def addSnapshotsRepo = true
6869
if (addSnapshotsRepo) {
6970
println("Snapshot repository reference added.")
7071
maven {

examples/src/main/java/com/mapbox/navigation/examples/core/MapboxNavigationActivity.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import com.mapbox.navigation.core.MapboxNavigationProvider
3838
import com.mapbox.navigation.core.adasis.AdasisConfig
3939
import com.mapbox.navigation.core.directions.session.RoutesObserver
4040
import com.mapbox.navigation.core.formatter.MapboxDistanceFormatter
41+
import com.mapbox.navigation.core.replay.route.ReplayRouteSession
4142
import com.mapbox.navigation.core.trip.session.LocationMatcherResult
4243
import com.mapbox.navigation.core.trip.session.LocationObserver
4344
import com.mapbox.navigation.core.trip.session.NavigationSessionStateObserver
@@ -271,6 +272,7 @@ class MapboxNavigationActivity : AppCompatActivity() {
271272
logD("sessionId=${mapboxNavigation.getNavigationSessionState().sessionId}", LOG_CATEGORY)
272273
}
273274

275+
@OptIn(ExperimentalPreviewMapboxNavigationAPI::class)
274276
@SuppressLint("MissingPermission")
275277
override fun onCreate(savedInstanceState: Bundle?) {
276278
super.onCreate(savedInstanceState)
@@ -432,6 +434,7 @@ class MapboxNavigationActivity : AppCompatActivity() {
432434
// start the trip session to being receiving location updates in free drive
433435
// and later when a route is set, also receiving route progress updates
434436
mapboxNavigation.startTripSession()
437+
ReplayRouteSession().onAttached(mapboxNavigation)
435438
}
436439

437440
@OptIn(ExperimentalPreviewMapboxNavigationAPI::class)
@@ -442,8 +445,9 @@ class MapboxNavigationActivity : AppCompatActivity() {
442445
mapboxNavigation.registerRouteProgressObserver(routeProgressObserver)
443446
mapboxNavigation.registerLocationObserver(locationObserver)
444447
mapboxNavigation.registerVoiceInstructionsObserver(voiceInstructionsObserver)
445-
mapboxNavigation.setAdasisMessageCallback(AdasisConfig.Builder().build()) { message ->
448+
mapboxNavigation.setAdasisMessageCallback(AdasisConfig.Builder().build()) { message, context ->
446449
Log.d("AdasisTest.", "Adasis message: $message")
450+
Log.d("AdasisTest.", "Context: $context")
447451
}
448452
}
449453

gradle/artifact-settings.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ ext {
1515
versionName = getVersionName()
1616
}
1717

18+
// latest is 2.18.0-adas-preview-10-SNAPSHOT
1819
def getVersionName() {
1920
if (project.hasProperty('VERSION_NAME')) {
2021
return project.property('VERSION_NAME')

gradle/dependencies.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ ext {
1313
// version which we should use in this build
1414
def mapboxNavigatorVersion = System.getenv("FORCE_MAPBOX_NAVIGATION_NATIVE_VERSION")
1515
if (mapboxNavigatorVersion == null || mapboxNavigatorVersion == '') {
16-
mapboxNavigatorVersion = '182.0.0'
16+
mapboxNavigatorVersion = 'nio-adas-lpo-flatbuffers-vectors-11-SNAPSHOT'
1717
}
1818
println("Navigation Native version: " + mapboxNavigatorVersion)
1919
def androidXWorkManagerVersion = project.hasProperty('WORK_MANAGER_VERSION') ? project.property('WORK_MANAGER_VERSION') : '2.7.0'

libnavigation-core/api/current.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ package com.mapbox.navigation.core {
201201
package com.mapbox.navigation.core.adasis {
202202

203203
@com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public fun interface ADASISv2MessageCallback {
204-
method public void onMessage(java.util.List<java.lang.Byte> messageBuffer);
204+
method public void onMessage(java.util.List<java.lang.Byte> messageBuffer, com.mapbox.navigation.core.adasis.AdasisMessageContext context);
205205
}
206206

207207
@com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public final class AdasisConfig {
@@ -294,6 +294,11 @@ package com.mapbox.navigation.core.adasis {
294294
field public static final com.mapbox.navigation.core.adasis.AdasisMessageBinaryFormat.FlatBuffers INSTANCE;
295295
}
296296

297+
public final class AdasisMessageContext {
298+
method public Long? getPositionMonotonicTimestampNanoseconds();
299+
property public final Long? positionMonotonicTimestampNanoseconds;
300+
}
301+
297302
@com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public final class EdgeAdasAttributes {
298303
method public java.util.List<com.mapbox.navigation.core.adasis.ValueOnEdge> getCurvatures();
299304
method public java.util.List<com.mapbox.navigation.core.adasis.ValueOnEdge> getSlopes();

libnavigation-core/src/main/java/com/mapbox/navigation/core/MapboxNavigation.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import com.mapbox.navigation.base.trip.notification.TripNotificationInterceptor
4646
import com.mapbox.navigation.core.accounts.BillingController
4747
import com.mapbox.navigation.core.adasis.ADASISv2MessageCallback
4848
import com.mapbox.navigation.core.adasis.AdasisConfig
49+
import com.mapbox.navigation.core.adasis.AdasisMessageContext
4950
import com.mapbox.navigation.core.arrival.ArrivalController
5051
import com.mapbox.navigation.core.arrival.ArrivalObserver
5152
import com.mapbox.navigation.core.arrival.ArrivalProgressObserver
@@ -2006,8 +2007,8 @@ class MapboxNavigation @VisibleForTesting internal constructor(
20062007
@ExperimentalPreviewMapboxNavigationAPI
20072008
fun setAdasisMessageCallback(adasisConfig: AdasisConfig, callback: ADASISv2MessageCallback) {
20082009
navigator.setAdasisMessageCallback(
2009-
{ message ->
2010-
callback.onMessage(message)
2010+
{ message, context ->
2011+
callback.onMessage(message, AdasisMessageContext.fromNative(context))
20112012
},
20122013
adasisConfig.toNativeAdasisConfig()
20132014
)

libnavigation-core/src/main/java/com/mapbox/navigation/core/adasis/ADASISv2MessageCallback.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ fun interface ADASISv2MessageCallback {
1111
/**
1212
* Called when ADASIS message is available
1313
* @param messageBuffer Message buffer in format specified via [AdasisConfigDataSending.messageBinaryFormat]
14+
* @param context Message context. For details see [AdasisMessageContext] docs
1415
*/
15-
fun onMessage(messageBuffer: List<Byte>)
16+
fun onMessage(messageBuffer: List<Byte>, context: AdasisMessageContext)
1617
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.mapbox.navigation.core.adasis
2+
3+
/**
4+
* Context of an adasis message.
5+
*
6+
* @param positionMonotonicTimestampNanoseconds the monotonic time of a position message within a message batch.
7+
* This time is determined based on the monotonic time of the previous location and the lookAhead time.
8+
* If the lookAhead is set to 0, then the positionMonotonicTimestampNanoseconds will be the monotonic time
9+
* of the last location update.
10+
*/
11+
class AdasisMessageContext internal constructor(
12+
val positionMonotonicTimestampNanoseconds: Long?,
13+
) {
14+
15+
override fun equals(other: Any?): Boolean {
16+
if (this === other) return true
17+
if (javaClass != other?.javaClass) return false
18+
19+
other as AdasisMessageContext
20+
21+
if (positionMonotonicTimestampNanoseconds != other.positionMonotonicTimestampNanoseconds) return false
22+
23+
return true
24+
}
25+
26+
override fun hashCode(): Int {
27+
return positionMonotonicTimestampNanoseconds.hashCode()
28+
}
29+
30+
override fun toString(): String {
31+
return "AdasisMessageContext(positionMonotonicTimestampNanoseconds=$positionMonotonicTimestampNanoseconds)"
32+
}
33+
34+
/**
35+
* Temporary method to track NN changes. When NN adds a property to their object,
36+
* this method's compilation will fail.
37+
* In that case conversion both from and to native object should be adjusted.
38+
*/
39+
private fun toNative(): com.mapbox.navigator.AdasisMessageContext {
40+
return com.mapbox.navigator.AdasisMessageContext(this.positionMonotonicTimestampNanoseconds)
41+
}
42+
43+
internal companion object {
44+
45+
fun fromNative(
46+
nativeContext: com.mapbox.navigator.AdasisMessageContext
47+
): AdasisMessageContext {
48+
return AdasisMessageContext(nativeContext.positionMessageTimestamp)
49+
}
50+
}
51+
}

0 commit comments

Comments
 (0)