diff --git a/build.gradle b/build.gradle index 069f28c88d0..bdb995d4132 100644 --- a/build.gradle +++ b/build.gradle @@ -64,7 +64,8 @@ allprojects { // we allow access to snapshots repo if ALLOW_SNAPSHOT_REPOSITORY is set, what means we are running on CI // with Navigation Native forced to be some snapshot version // if you need to use snapshots while development, just set `addSnapshotsRepo` to true manually - def addSnapshotsRepo = project.hasProperty('ALLOW_SNAPSHOT_REPOSITORY') ? project.property('ALLOW_SNAPSHOT_REPOSITORY') : (System.getenv("ALLOW_SNAPSHOT_REPOSITORY")?.toBoolean() ?: false) + // TODO revert conditional snapshot repository set up. + def addSnapshotsRepo = true//project.hasProperty('ALLOW_SNAPSHOT_REPOSITORY') ? project.property('ALLOW_SNAPSHOT_REPOSITORY') : (System.getenv("ALLOW_SNAPSHOT_REPOSITORY")?.toBoolean() ?: false) if (addSnapshotsRepo) { println("Snapshot repository reference added.") maven { diff --git a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxNavigationActivity.kt b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxNavigationActivity.kt index 84ea81b9275..c6d49cfad60 100644 --- a/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxNavigationActivity.kt +++ b/examples/src/main/java/com/mapbox/navigation/examples/core/MapboxNavigationActivity.kt @@ -21,6 +21,7 @@ import com.mapbox.maps.plugin.LocationPuck2D import com.mapbox.maps.plugin.animation.camera import com.mapbox.maps.plugin.gestures.gestures import com.mapbox.maps.plugin.locationcomponent.location +import com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI import com.mapbox.navigation.base.TimeFormat import com.mapbox.navigation.base.extensions.applyDefaultNavigationOptions import com.mapbox.navigation.base.extensions.applyLanguageAndVoiceUnitOptions @@ -70,6 +71,20 @@ import com.mapbox.navigation.ui.voice.model.SpeechError import com.mapbox.navigation.ui.voice.model.SpeechValue import com.mapbox.navigation.ui.voice.model.SpeechVolume import com.mapbox.navigation.utils.internal.logD +import com.mapbox.navigator.ADASISv2Message +import com.mapbox.navigator.ADASISv2MessageCallback +import com.mapbox.navigator.AdasisConfig +import com.mapbox.navigator.AdasisConfigCycleTimes +import com.mapbox.navigator.AdasisConfigDataSending +import com.mapbox.navigator.AdasisConfigMessageOptions +import com.mapbox.navigator.AdasisConfigPathLevelOptions +import com.mapbox.navigator.AdasisConfigPathsConfigs +import com.mapbox.navigator.AdasisConfigProfilelongTypeOptions +import com.mapbox.navigator.AdasisConfigProfileshortTypeOptions +import com.mapbox.navigator.Profilelong +import com.mapbox.navigator.Profileshort +import com.mapbox.navigator.Segment +import com.mapbox.navigator.Stub import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -268,6 +283,7 @@ class MapboxNavigationActivity : AppCompatActivity() { logD("sessionId=${mapboxNavigation.getNavigationSessionState().sessionId}", LOG_CATEGORY) } + @OptIn(ExperimentalPreviewMapboxNavigationAPI::class) @SuppressLint("MissingPermission") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -429,6 +445,37 @@ class MapboxNavigationActivity : AppCompatActivity() { // start the trip session to being receiving location updates in free drive // and later when a route is set, also receiving route progress updates mapboxNavigation.startTripSession() + mapboxNavigation.setAdasisMessageCallback( + object : ADASISv2MessageCallback { + override fun run(message: ADASISv2Message) { + println("[Adasis] message: ${message.toJson()}") + } + }, + AdasisConfig( + AdasisConfigCycleTimes(), + AdasisConfigDataSending(), + AdasisConfigPathsConfigs( + AdasisConfigPathLevelOptions( + Stub(AdasisConfigMessageOptions()), + Segment(AdasisConfigMessageOptions()), + Profileshort(AdasisConfigMessageOptions(), AdasisConfigProfileshortTypeOptions()), + Profilelong(AdasisConfigMessageOptions(), AdasisConfigProfilelongTypeOptions()) + ), + AdasisConfigPathLevelOptions( + Stub(AdasisConfigMessageOptions()), + Segment(AdasisConfigMessageOptions()), + Profileshort(AdasisConfigMessageOptions(), AdasisConfigProfileshortTypeOptions()), + Profilelong(AdasisConfigMessageOptions(), AdasisConfigProfilelongTypeOptions()) + ), + AdasisConfigPathLevelOptions( + Stub(AdasisConfigMessageOptions()), + Segment(AdasisConfigMessageOptions()), + Profileshort(AdasisConfigMessageOptions(), AdasisConfigProfileshortTypeOptions()), + Profilelong(AdasisConfigMessageOptions(), AdasisConfigProfilelongTypeOptions()) + ), + ) + ) + ) } override fun onStart() { diff --git a/gradle/artifact-settings.gradle b/gradle/artifact-settings.gradle index 265023dc4ab..d75e211c859 100644 --- a/gradle/artifact-settings.gradle +++ b/gradle/artifact-settings.gradle @@ -16,13 +16,14 @@ ext { } def getVersionName() { - if (project.hasProperty('VERSION_NAME')) { - return project.property('VERSION_NAME') - } - def prefix = project.ext.releaseTagPrefix - def cmd = ["git", "describe", "--tag", "--match", "$prefix*", "--abbrev=0"] - def version = cmd.execute().text - return project.ext.snapshot ? getSnapshotVersion(version) : getReleaseVersion(version) +// if (project.hasProperty('VERSION_NAME')) { +// return project.property('VERSION_NAME') +// } +// def prefix = project.ext.releaseTagPrefix +// def cmd = ["git", "describe", "--tag", "--match", "$prefix*", "--abbrev=0"] +// def version = cmd.execute().text +// return project.ext.snapshot ? getSnapshotVersion(version) : getReleaseVersion(version) + return "2.17.0-adas-preview-SNAPSHOT" } def getReleaseVersion(String version) { diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 3de73c21a26..1ce9cd62591 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -13,7 +13,7 @@ ext { // version which we should use in this build def mapboxNavigatorVersion = System.getenv("FORCE_MAPBOX_NAVIGATION_NATIVE_VERSION") if (mapboxNavigatorVersion == null || mapboxNavigatorVersion == '') { - mapboxNavigatorVersion = '158.0.0' + mapboxNavigatorVersion = 'nio-adas-main-6-SNAPSHOT' } println("Navigation Native version: " + mapboxNavigatorVersion) diff --git a/libnavigation-base/build.gradle b/libnavigation-base/build.gradle index 60b0c36ebcb..5257cb280a6 100644 --- a/libnavigation-base/build.gradle +++ b/libnavigation-base/build.gradle @@ -31,7 +31,7 @@ dependencies { api dependenciesList.mapboxSdkDirectionsModels api dependenciesList.mapboxSdkServicesCore // Navigator - implementation dependenciesList.mapboxNavigator + api dependenciesList.mapboxNavigator implementation dependenciesList.androidXAnnotation implementation dependenciesList.androidXCoreKtx diff --git a/libnavigation-core/api/current.txt b/libnavigation-core/api/current.txt index d758e391f0d..f4671c6cb9c 100644 --- a/libnavigation-core/api/current.txt +++ b/libnavigation-core/api/current.txt @@ -82,8 +82,10 @@ package com.mapbox.navigation.core { method public void requestRoadGraphDataUpdate(com.mapbox.navigation.core.RoadGraphDataUpdateCallback callback); method @Deprecated public long requestRoutes(com.mapbox.api.directions.v5.models.RouteOptions routeOptions, com.mapbox.navigation.base.route.RouterCallback routesRequestCallback); method public long requestRoutes(com.mapbox.api.directions.v5.models.RouteOptions routeOptions, com.mapbox.navigation.base.route.NavigationRouterCallback callback); + method @com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public void resetAdasisMessageCallback(); method @Deprecated public void resetTripSession(); method public void resetTripSession(com.mapbox.navigation.core.TripSessionResetCallback callback); + method @com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public void setAdasisMessageCallback(com.mapbox.navigator.ADASISv2MessageCallback callback, com.mapbox.navigator.AdasisConfig adasisConfig); method public void setArrivalController(com.mapbox.navigation.core.arrival.ArrivalController? arrivalController = com.mapbox.navigation.core.arrival.AutoArrivalController()); method public void setArrivalController(); method public void setNavigationRoutes(java.util.List routes, int initialLegIndex = 0, com.mapbox.navigation.core.RoutesSetCallback? callback = null); @@ -120,6 +122,7 @@ package com.mapbox.navigation.core { method @com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public void unregisterRoutesPreviewObserver(com.mapbox.navigation.core.preview.RoutesPreviewObserver observer); method public void unregisterTripSessionStateObserver(com.mapbox.navigation.core.trip.session.TripSessionStateObserver tripSessionStateObserver); method public void unregisterVoiceInstructionsObserver(com.mapbox.navigation.core.trip.session.VoiceInstructionsObserver voiceInstructionsObserver); + method @com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public void updateExternalSensorData(com.mapbox.navigation.core.sensor.SensorData data, com.mapbox.navigation.core.sensor.UpdateExternalSensorDataCallback callback); property public final com.mapbox.navigation.core.EtcGateApi etcGateAPI; property public final com.mapbox.navigator.Experimental experimental; property public final com.mapbox.navigation.core.trip.session.eh.GraphAccessor graphAccessor; @@ -950,7 +953,8 @@ package com.mapbox.navigation.core.routeoptions { package com.mapbox.navigation.core.routerefresh { - @com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public final class RouteRefreshController { + @com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public final class RouteRefreshController implements com.mapbox.navigation.core.directions.session.RoutesObserver { + method public void onRoutesChanged(com.mapbox.navigation.core.directions.session.RoutesUpdatedResult result); method public void pauseRouteRefreshes(); method public void registerRouteRefreshStateObserver(com.mapbox.navigation.core.routerefresh.RouteRefreshStatesObserver routeRefreshStatesObserver); method public void requestImmediateRouteRefresh(); @@ -983,6 +987,46 @@ package com.mapbox.navigation.core.routerefresh { } +package com.mapbox.navigation.core.sensor { + + @com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public abstract class SensorData { + } + + public static final class SensorData.Lane extends com.mapbox.navigation.core.sensor.SensorData { + ctor public SensorData.Lane(int currentLaneIndex, int laneCount); + method public int getCurrentLaneIndex(); + method public int getLaneCount(); + property public final int currentLaneIndex; + property public final int laneCount; + } + + public static final class SensorData.Weather extends com.mapbox.navigation.core.sensor.SensorData { + ctor public SensorData.Weather(com.mapbox.navigation.core.sensor.SensorData.Weather.Condition condition); + method public com.mapbox.navigation.core.sensor.SensorData.Weather.Condition getCondition(); + property public final com.mapbox.navigation.core.sensor.SensorData.Weather.Condition condition; + } + + public abstract static class SensorData.Weather.Condition { + } + + public static final class SensorData.Weather.Condition.Fog extends com.mapbox.navigation.core.sensor.SensorData.Weather.Condition { + field public static final com.mapbox.navigation.core.sensor.SensorData.Weather.Condition.Fog INSTANCE; + } + + public static final class SensorData.Weather.Condition.Rain extends com.mapbox.navigation.core.sensor.SensorData.Weather.Condition { + field public static final com.mapbox.navigation.core.sensor.SensorData.Weather.Condition.Rain INSTANCE; + } + + public static final class SensorData.Weather.Condition.Snow extends com.mapbox.navigation.core.sensor.SensorData.Weather.Condition { + field public static final com.mapbox.navigation.core.sensor.SensorData.Weather.Condition.Snow INSTANCE; + } + + @com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI public fun interface UpdateExternalSensorDataCallback { + method public void onResult(boolean result); + } + +} + package com.mapbox.navigation.core.telemetry { public final class MapboxNavigationTelemetryKt { diff --git a/libnavigation-core/src/main/java/com/mapbox/navigation/core/MapboxNavigation.kt b/libnavigation-core/src/main/java/com/mapbox/navigation/core/MapboxNavigation.kt index e7f438a939f..234400c70fc 100644 --- a/libnavigation-core/src/main/java/com/mapbox/navigation/core/MapboxNavigation.kt +++ b/libnavigation-core/src/main/java/com/mapbox/navigation/core/MapboxNavigation.kt @@ -91,6 +91,8 @@ import com.mapbox.navigation.core.routealternatives.RouteAlternativesRequestCall import com.mapbox.navigation.core.routeoptions.RouteOptionsUpdater import com.mapbox.navigation.core.routerefresh.RouteRefreshController import com.mapbox.navigation.core.routerefresh.RouteRefreshControllerProvider +import com.mapbox.navigation.core.sensor.SensorData +import com.mapbox.navigation.core.sensor.UpdateExternalSensorDataCallback import com.mapbox.navigation.core.telemetry.MapboxNavigationTelemetry import com.mapbox.navigation.core.telemetry.events.FeedbackEvent import com.mapbox.navigation.core.telemetry.events.FeedbackHelper @@ -134,6 +136,8 @@ import com.mapbox.navigation.utils.internal.logD import com.mapbox.navigation.utils.internal.logE import com.mapbox.navigation.utils.internal.logI import com.mapbox.navigation.utils.internal.monitorChannelWithException +import com.mapbox.navigator.ADASISv2MessageCallback +import com.mapbox.navigator.AdasisConfig import com.mapbox.navigator.AlertsServiceOptions import com.mapbox.navigator.ConfigHandle import com.mapbox.navigator.ElectronicHorizonOptions @@ -1961,6 +1965,40 @@ class MapboxNavigation @VisibleForTesting internal constructor( ) } + /** + * Asynchronously passes in the current sensor data of the user. + * + * @param data The current sensor data of user + * @param callback Callback which is called when the async operation is completed + */ + @ExperimentalPreviewMapboxNavigationAPI + fun updateExternalSensorData(data: SensorData, callback: UpdateExternalSensorDataCallback) { + navigator.updateExternalSensorData(data.toNativeSensorData()) { + callback.onResult(it) + } + } + + /** + * TODO use platform types? + * + * Sets a callback for ADASIS messages + * + * @param callback Message callback + * @param adasisConfig Adasis config + */ + @ExperimentalPreviewMapboxNavigationAPI + fun setAdasisMessageCallback(callback: ADASISv2MessageCallback, adasisConfig: AdasisConfig) { + navigator.setAdasisMessageCallback(callback, adasisConfig) + } + + /** + * Resets a callback for ADASIS messages + */ + @ExperimentalPreviewMapboxNavigationAPI + fun resetAdasisMessageCallback() { + navigator.resetAdasisMessageCallback() + } + internal fun registerOnRoutesSetStartedObserver(observer: SetNavigationRoutesStartedObserver) { directionsSession.registerSetNavigationRoutesStartedObserver(observer) } diff --git a/libnavigation-core/src/main/java/com/mapbox/navigation/core/sensor/SensorData.kt b/libnavigation-core/src/main/java/com/mapbox/navigation/core/sensor/SensorData.kt new file mode 100644 index 00000000000..330fab032f9 --- /dev/null +++ b/libnavigation-core/src/main/java/com/mapbox/navigation/core/sensor/SensorData.kt @@ -0,0 +1,149 @@ +package com.mapbox.navigation.core.sensor + +import android.os.SystemClock +import com.mapbox.bindgen.Value +import com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI +import com.mapbox.navigator.SensorType + +/** + * Data obtained from sensors + */ +@ExperimentalPreviewMapboxNavigationAPI +abstract class SensorData internal constructor() { + + /** + * Weather condition obtained from sensors + * + * @param condition weather condition type + */ + class Weather(val condition: Condition) : SensorData() { + + /** + * Indicates whether some other object is "equal to" this one. + */ + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as Weather + + if (condition != other.condition) return false + + return true + } + + /** + * Returns a hash code value for the object. + */ + override fun hashCode(): Int { + return condition.hashCode() + } + + /** + * Returns a string representation of the object. + */ + override fun toString(): String { + return "Weather(condition=$condition)" + } + + /** + * Weather condition type. + */ + abstract class Condition internal constructor() { + + /** + * Rain weather condition + */ + object Rain : Condition() + + /** + * Snow weather condition + */ + object Snow : Condition() + + /** + * Fog weather condition + */ + object Fog : Condition() + } + } + + /** + * Lane information obtained from sensors + * + * @param currentLaneIndex the index of the current lane. For right-hand traffic 1 is the very right lane and so on. + * Should be zero if lane information is not available + * + * @param laneCount the number of lanes + */ + class Lane(val currentLaneIndex: Int, val laneCount: Int) : SensorData() { + + /** + * Indicates whether some other object is "equal to" this one. + */ + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as Lane + + if (currentLaneIndex != other.currentLaneIndex) return false + if (laneCount != other.laneCount) return false + + return true + } + + /** + * Returns a hash code value for the object. + */ + override fun hashCode(): Int { + var result = currentLaneIndex + result = 31 * result + laneCount + return result + } + + /** + * Returns a string representation of the object. + */ + override fun toString(): String { + return "Lane(currentLaneIndex=$currentLaneIndex, laneCount=$laneCount)" + } + } + + internal fun toNativeSensorData(): com.mapbox.navigator.SensorData { + /** + * NN requires [com.mapbox.navigator.SensorData.monotonicTimestampNanoseconds] to be based + * on the same source as [com.mapbox.navigator.FixLocation.monotonicTimestampNanoseconds], + * which is in turn based on [Location#getElapsedRealtimeNanos()](https://developer.android.com/reference/android/location/Location#getElapsedRealtimeNanos()), + * + * @see [com.mapbox.navigation.core.navigator.toFixLocation] + */ + val elapsedRealtimeNanos = SystemClock.elapsedRealtimeNanos() + + val (type, value) = when (this) { + is Weather -> { + SensorType.WEATHER to toValue() + } + is Lane -> { + SensorType.LANE to toValue() + } + else -> error("Unsupported type: $javaClass") + } + return com.mapbox.navigator.SensorData(type, elapsedRealtimeNanos, value) + } + + private fun Weather.toValue(): Value { + val order: Long = when (condition) { + is Weather.Condition.Rain -> 0 + is Weather.Condition.Snow -> 1 + is Weather.Condition.Fog -> 2 + else -> error("Unsupported weather condition type: $condition") + } + return Value.valueOf(order) + } + + private fun Lane.toValue(): Value { + val str = "{\"currentLaneIndex\": $currentLaneIndex, \"laneCount\": $laneCount}" + return Value.valueOf(str) + } +} diff --git a/libnavigation-core/src/main/java/com/mapbox/navigation/core/sensor/UpdateExternalSensorDataCallback.kt b/libnavigation-core/src/main/java/com/mapbox/navigation/core/sensor/UpdateExternalSensorDataCallback.kt new file mode 100644 index 00000000000..3595775ec23 --- /dev/null +++ b/libnavigation-core/src/main/java/com/mapbox/navigation/core/sensor/UpdateExternalSensorDataCallback.kt @@ -0,0 +1,19 @@ +package com.mapbox.navigation.core.sensor + +import com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI + +/** + * Callback which is getting called to report + * [com.mapbox.navigation.core.MapboxNavigation.updateExternalSensorData] result + */ +@ExperimentalPreviewMapboxNavigationAPI +fun interface UpdateExternalSensorDataCallback { + + /** + * Called when [com.mapbox.navigation.core.MapboxNavigation.updateExternalSensorData] + * function call result is available + * + * @param result true if the sensor data was usable, false otherwise + */ + fun onResult(result: Boolean) +} diff --git a/libnavigator/src/main/java/com/mapbox/navigation/navigator/internal/MapboxNativeNavigator.kt b/libnavigator/src/main/java/com/mapbox/navigation/navigator/internal/MapboxNativeNavigator.kt index 95beec77f0f..1c1e8f72b72 100644 --- a/libnavigator/src/main/java/com/mapbox/navigation/navigator/internal/MapboxNativeNavigator.kt +++ b/libnavigator/src/main/java/com/mapbox/navigation/navigator/internal/MapboxNativeNavigator.kt @@ -8,6 +8,8 @@ import com.mapbox.navigation.base.options.NavigationOptions import com.mapbox.navigation.base.options.PredictiveCacheLocationOptions import com.mapbox.navigation.base.options.RoutingTilesOptions import com.mapbox.navigation.base.route.NavigationRoute +import com.mapbox.navigator.ADASISv2MessageCallback +import com.mapbox.navigator.AdasisConfig import com.mapbox.navigator.CacheHandle import com.mapbox.navigator.ConfigHandle import com.mapbox.navigator.ElectronicHorizonObserver @@ -25,9 +27,11 @@ import com.mapbox.navigator.RoadObjectsStoreObserver import com.mapbox.navigator.RouteAlternative import com.mapbox.navigator.RouteAlternativesControllerInterface import com.mapbox.navigator.RouterInterface +import com.mapbox.navigator.SensorData import com.mapbox.navigator.SetRoutesReason import com.mapbox.navigator.SetRoutesResult import com.mapbox.navigator.TilesConfig +import com.mapbox.navigator.UpdateExternalSensorDataCallback /** * Provides API to work with native Navigator class. Exposed for internal usage only. @@ -181,6 +185,25 @@ interface MapboxNativeNavigator { predictiveCacheLocationOptions: PredictiveCacheLocationOptions ): PredictiveCacheController + /** + * Asynchronously passes in the current sensor data of the user. + * The callback is scheduled using the `common::Scheduler` of the thread calling the `Navigator` constructor. + * + * @param data The current sensor data of user. + * @param callback Callback which is called when the async operation is completed + */ + fun updateExternalSensorData(data: SensorData, callback: UpdateExternalSensorDataCallback) + + /** + * Sets a callback for ADASIS messages + */ + fun setAdasisMessageCallback(callback: ADASISv2MessageCallback, adasisConfig: AdasisConfig) + + /** + * Resets a callback for ADASIS messages + */ + fun resetAdasisMessageCallback() + val routeAlternativesController: RouteAlternativesControllerInterface val graphAccessor: GraphAccessor? diff --git a/libnavigator/src/main/java/com/mapbox/navigation/navigator/internal/MapboxNativeNavigatorImpl.kt b/libnavigator/src/main/java/com/mapbox/navigation/navigator/internal/MapboxNativeNavigatorImpl.kt index 8269d3fa3eb..1143d6c0c43 100644 --- a/libnavigator/src/main/java/com/mapbox/navigation/navigator/internal/MapboxNativeNavigatorImpl.kt +++ b/libnavigator/src/main/java/com/mapbox/navigation/navigator/internal/MapboxNativeNavigatorImpl.kt @@ -18,6 +18,8 @@ import com.mapbox.navigation.base.route.NavigationRoute import com.mapbox.navigation.utils.internal.ThreadController import com.mapbox.navigation.utils.internal.logD import com.mapbox.navigation.utils.internal.logE +import com.mapbox.navigator.ADASISv2MessageCallback +import com.mapbox.navigator.AdasisConfig import com.mapbox.navigator.CacheDataDomain import com.mapbox.navigator.CacheHandle import com.mapbox.navigator.ConfigHandle @@ -40,10 +42,12 @@ import com.mapbox.navigator.RoadObjectsStoreObserver import com.mapbox.navigator.RouteAlternative import com.mapbox.navigator.RouteAlternativesControllerInterface import com.mapbox.navigator.RouterInterface +import com.mapbox.navigator.SensorData import com.mapbox.navigator.SetRoutesParams import com.mapbox.navigator.SetRoutesReason import com.mapbox.navigator.SetRoutesResult import com.mapbox.navigator.TilesConfig +import com.mapbox.navigator.UpdateExternalSensorDataCallback import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.withContext import java.util.concurrent.CopyOnWriteArraySet @@ -412,4 +416,19 @@ object MapboxNativeNavigatorImpl : MapboxNativeNavigator { MAX_NUMBER_TILES_LOAD_PARALLEL_REQUESTS, 0 ) + + override fun updateExternalSensorData( + data: SensorData, + callback: UpdateExternalSensorDataCallback, + ) { + navigator!!.updateExternalSensorData(data, callback) + } + + override fun setAdasisMessageCallback(callback: ADASISv2MessageCallback, adasisConfig: AdasisConfig) { + navigator!!.setAdasisMessageCallback(callback, adasisConfig) + } + + override fun resetAdasisMessageCallback() { + navigator!!.resetAdasisMessageCallback() + } }