Skip to content

Commit 92d93aa

Browse files
authored
Introduce ProvidesSensor annotation + KSP + Lint (#7031)
* Introduce CatalogSensor annotation + KSP + Lint * Annotate all BasicSensor with CatalogSensor annotation * Apply suggestions * Update lockfile * Remove the catalog mention all the way * Apply copilot suggestion
1 parent 2a8006d commit 92d93aa

70 files changed

Lines changed: 1410 additions & 126 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,5 @@ firebaseAppDistributionDefault {
5050
dependencies {
5151
// Most of the dependencies are coming from the convention plugin to avoid duplication with `:automotive` module.
5252
"fullImplementation"(libs.car.projected)
53+
ksp(project(":provides-sensor-processor"))
5354
}

app/gradle.lockfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,7 @@ com.google.dagger:hilt-android-testing:2.60=fullDebugAndroidTestCompileClasspath
359359
com.google.dagger:hilt-android:2.60=fullDebugAndroidTestCompileClasspath,fullDebugAndroidTestLintChecksClasspath,fullDebugAndroidTestRuntimeClasspath,fullDebugCompileClasspath,fullDebugLintChecksClasspath,fullDebugRuntimeClasspath,fullDebugScreenshotTestCompileClasspath,fullDebugScreenshotTestLintChecksClasspath,fullDebugScreenshotTestRuntimeClasspath,fullDebugUnitTestCompileClasspath,fullDebugUnitTestLintChecksClasspath,fullDebugUnitTestRuntimeClasspath,fullReleaseCompileClasspath,fullReleaseLintChecksClasspath,fullReleaseRuntimeClasspath,fullReleaseScreenshotTestCompileClasspath,fullReleaseScreenshotTestLintChecksClasspath,fullReleaseScreenshotTestRuntimeClasspath,minimalDebugAndroidTestCompileClasspath,minimalDebugAndroidTestLintChecksClasspath,minimalDebugAndroidTestRuntimeClasspath,minimalDebugCompileClasspath,minimalDebugLintChecksClasspath,minimalDebugRuntimeClasspath,minimalDebugScreenshotTestCompileClasspath,minimalDebugScreenshotTestLintChecksClasspath,minimalDebugScreenshotTestRuntimeClasspath,minimalDebugUnitTestCompileClasspath,minimalDebugUnitTestLintChecksClasspath,minimalDebugUnitTestRuntimeClasspath,minimalReleaseCompileClasspath,minimalReleaseLintChecksClasspath,minimalReleaseRuntimeClasspath,minimalReleaseScreenshotTestCompileClasspath,minimalReleaseScreenshotTestLintChecksClasspath,minimalReleaseScreenshotTestRuntimeClasspath
360360
com.google.dagger:hilt-compiler:2.60=hiltAnnotationProcessorFullDebug,hiltAnnotationProcessorFullDebugAndroidTest,hiltAnnotationProcessorFullDebugUnitTest,hiltAnnotationProcessorFullRelease,hiltAnnotationProcessorMinimalDebug,hiltAnnotationProcessorMinimalDebugAndroidTest,hiltAnnotationProcessorMinimalDebugUnitTest,hiltAnnotationProcessorMinimalRelease
361361
com.google.dagger:hilt-core:2.60=fullDebugAndroidTestCompileClasspath,fullDebugAndroidTestLintChecksClasspath,fullDebugAndroidTestRuntimeClasspath,fullDebugCompileClasspath,fullDebugLintChecksClasspath,fullDebugRuntimeClasspath,fullDebugScreenshotTestCompileClasspath,fullDebugScreenshotTestLintChecksClasspath,fullDebugScreenshotTestRuntimeClasspath,fullDebugUnitTestCompileClasspath,fullDebugUnitTestLintChecksClasspath,fullDebugUnitTestRuntimeClasspath,fullReleaseCompileClasspath,fullReleaseLintChecksClasspath,fullReleaseRuntimeClasspath,fullReleaseScreenshotTestCompileClasspath,fullReleaseScreenshotTestLintChecksClasspath,fullReleaseScreenshotTestRuntimeClasspath,minimalDebugAndroidTestCompileClasspath,minimalDebugAndroidTestLintChecksClasspath,minimalDebugAndroidTestRuntimeClasspath,minimalDebugCompileClasspath,minimalDebugLintChecksClasspath,minimalDebugRuntimeClasspath,minimalDebugScreenshotTestCompileClasspath,minimalDebugScreenshotTestLintChecksClasspath,minimalDebugScreenshotTestRuntimeClasspath,minimalDebugUnitTestCompileClasspath,minimalDebugUnitTestLintChecksClasspath,minimalDebugUnitTestRuntimeClasspath,minimalReleaseCompileClasspath,minimalReleaseLintChecksClasspath,minimalReleaseRuntimeClasspath,minimalReleaseScreenshotTestCompileClasspath,minimalReleaseScreenshotTestLintChecksClasspath,minimalReleaseScreenshotTestRuntimeClasspath
362-
com.google.devtools.ksp:symbol-processing-api:2.3.7=_agp_internal_fullDebug_kspClasspath,_agp_internal_fullRelease_kspClasspath,_agp_internal_minimalDebug_kspClasspath,_agp_internal_minimalRelease_kspClasspath,hiltAnnotationProcessorFullDebug,hiltAnnotationProcessorFullDebugAndroidTest,hiltAnnotationProcessorFullDebugUnitTest,hiltAnnotationProcessorFullRelease,hiltAnnotationProcessorMinimalDebug,hiltAnnotationProcessorMinimalDebugAndroidTest,hiltAnnotationProcessorMinimalDebugUnitTest,hiltAnnotationProcessorMinimalRelease,kspFullDebugAndroidTestKotlinProcessorClasspath,kspFullDebugKotlinProcessorClasspath,kspFullDebugScreenshotTestKotlinProcessorClasspath,kspFullDebugUnitTestKotlinProcessorClasspath,kspFullReleaseKotlinProcessorClasspath,kspFullReleaseScreenshotTestKotlinProcessorClasspath,kspMinimalDebugAndroidTestKotlinProcessorClasspath,kspMinimalDebugKotlinProcessorClasspath,kspMinimalDebugScreenshotTestKotlinProcessorClasspath,kspMinimalDebugUnitTestKotlinProcessorClasspath,kspMinimalReleaseKotlinProcessorClasspath,kspMinimalReleaseScreenshotTestKotlinProcessorClasspath
363-
com.google.devtools.ksp:symbol-processing-api:2.3.9=kotlinCompilerPluginClasspathFullDebug,kotlinCompilerPluginClasspathFullDebugAndroidTest,kotlinCompilerPluginClasspathFullDebugScreenshotTest,kotlinCompilerPluginClasspathFullDebugUnitTest,kotlinCompilerPluginClasspathFullRelease,kotlinCompilerPluginClasspathFullReleaseScreenshotTest,kotlinCompilerPluginClasspathMinimalDebug,kotlinCompilerPluginClasspathMinimalDebugAndroidTest,kotlinCompilerPluginClasspathMinimalDebugScreenshotTest,kotlinCompilerPluginClasspathMinimalDebugUnitTest,kotlinCompilerPluginClasspathMinimalRelease,kotlinCompilerPluginClasspathMinimalReleaseScreenshotTest,kspPluginClasspath,kspPluginClasspathNonEmbeddable
362+
com.google.devtools.ksp:symbol-processing-api:2.3.9=_agp_internal_fullDebug_kspClasspath,_agp_internal_fullRelease_kspClasspath,_agp_internal_minimalDebug_kspClasspath,_agp_internal_minimalRelease_kspClasspath,hiltAnnotationProcessorFullDebug,hiltAnnotationProcessorFullDebugAndroidTest,hiltAnnotationProcessorFullDebugUnitTest,hiltAnnotationProcessorFullRelease,hiltAnnotationProcessorMinimalDebug,hiltAnnotationProcessorMinimalDebugAndroidTest,hiltAnnotationProcessorMinimalDebugUnitTest,hiltAnnotationProcessorMinimalRelease,kotlinCompilerPluginClasspathFullDebug,kotlinCompilerPluginClasspathFullDebugAndroidTest,kotlinCompilerPluginClasspathFullDebugScreenshotTest,kotlinCompilerPluginClasspathFullDebugUnitTest,kotlinCompilerPluginClasspathFullRelease,kotlinCompilerPluginClasspathFullReleaseScreenshotTest,kotlinCompilerPluginClasspathMinimalDebug,kotlinCompilerPluginClasspathMinimalDebugAndroidTest,kotlinCompilerPluginClasspathMinimalDebugScreenshotTest,kotlinCompilerPluginClasspathMinimalDebugUnitTest,kotlinCompilerPluginClasspathMinimalRelease,kotlinCompilerPluginClasspathMinimalReleaseScreenshotTest,kspFullDebugAndroidTestKotlinProcessorClasspath,kspFullDebugKotlinProcessorClasspath,kspFullDebugScreenshotTestKotlinProcessorClasspath,kspFullDebugUnitTestKotlinProcessorClasspath,kspFullReleaseKotlinProcessorClasspath,kspFullReleaseScreenshotTestKotlinProcessorClasspath,kspMinimalDebugAndroidTestKotlinProcessorClasspath,kspMinimalDebugKotlinProcessorClasspath,kspMinimalDebugScreenshotTestKotlinProcessorClasspath,kspMinimalDebugUnitTestKotlinProcessorClasspath,kspMinimalReleaseKotlinProcessorClasspath,kspMinimalReleaseScreenshotTestKotlinProcessorClasspath,kspPluginClasspath,kspPluginClasspathNonEmbeddable
364363
com.google.errorprone:error_prone_annotation:2.41.0=fullDebugUnitTestLintChecksClasspath,fullDebugUnitTestRuntimeClasspath,minimalDebugUnitTestLintChecksClasspath,minimalDebugUnitTestRuntimeClasspath
365364
com.google.errorprone:error_prone_annotations:2.23.0=unified-test-platform-android-driver-instrumentation,unified-test-platform-android-test-plugin,unified-test-platform-core,unified-test-platform-launcher
366365
com.google.errorprone:error_prone_annotations:2.28.0=androidLintTool,fullDebugAndroidTestRuntimeClasspath,fullDebugLintChecksClasspath,fullDebugRuntimeClasspath,fullDebugScreenshotTestLintChecksClasspath,fullDebugScreenshotTestRuntimeClasspath,fullReleaseLintChecksClasspath,fullReleaseRuntimeClasspath,fullReleaseScreenshotTestLintChecksClasspath,fullReleaseScreenshotTestRuntimeClasspath,minimalDebugAndroidTestRuntimeClasspath,minimalDebugLintChecksClasspath,minimalDebugRuntimeClasspath,minimalDebugScreenshotTestLintChecksClasspath,minimalDebugScreenshotTestRuntimeClasspath,minimalReleaseLintChecksClasspath,minimalReleaseRuntimeClasspath,minimalReleaseScreenshotTestLintChecksClasspath,minimalReleaseScreenshotTestRuntimeClasspath,unified-test-platform-android-device-provider-ddmlib,unified-test-platform-android-test-plugin-host-additional-test-output,unified-test-platform-android-test-plugin-host-apk-installer,unified-test-platform-android-test-plugin-host-coverage,unified-test-platform-android-test-plugin-host-device-info,unified-test-platform-android-test-plugin-host-logcat,unified-test-platform-android-test-plugin-result-listener-gradle,unified-test-platform-gradle-work-action
@@ -465,6 +464,7 @@ com.squareup.retrofit2:retrofit-bom:3.0.0=fullDebugAndroidTestCompileClasspath,f
465464
com.squareup.retrofit2:retrofit:3.0.0=fullDebugAndroidTestCompileClasspath,fullDebugAndroidTestLintChecksClasspath,fullDebugCompileClasspath,fullDebugLintChecksClasspath,fullDebugRuntimeClasspath,fullDebugScreenshotTestCompileClasspath,fullDebugScreenshotTestLintChecksClasspath,fullDebugScreenshotTestRuntimeClasspath,fullDebugUnitTestCompileClasspath,fullDebugUnitTestLintChecksClasspath,fullDebugUnitTestRuntimeClasspath,fullReleaseCompileClasspath,fullReleaseLintChecksClasspath,fullReleaseRuntimeClasspath,fullReleaseScreenshotTestCompileClasspath,fullReleaseScreenshotTestLintChecksClasspath,fullReleaseScreenshotTestRuntimeClasspath,minimalDebugAndroidTestCompileClasspath,minimalDebugAndroidTestLintChecksClasspath,minimalDebugCompileClasspath,minimalDebugLintChecksClasspath,minimalDebugRuntimeClasspath,minimalDebugScreenshotTestCompileClasspath,minimalDebugScreenshotTestLintChecksClasspath,minimalDebugScreenshotTestRuntimeClasspath,minimalDebugUnitTestCompileClasspath,minimalDebugUnitTestLintChecksClasspath,minimalDebugUnitTestRuntimeClasspath,minimalReleaseCompileClasspath,minimalReleaseLintChecksClasspath,minimalReleaseRuntimeClasspath,minimalReleaseScreenshotTestCompileClasspath,minimalReleaseScreenshotTestLintChecksClasspath,minimalReleaseScreenshotTestRuntimeClasspath
466465
com.squareup:javapoet:1.13.0=_agp_internal_fullDebug_kspClasspath,_agp_internal_fullRelease_kspClasspath,_agp_internal_minimalDebug_kspClasspath,_agp_internal_minimalRelease_kspClasspath,hiltAnnotationProcessorFullDebug,hiltAnnotationProcessorFullDebugAndroidTest,hiltAnnotationProcessorFullDebugUnitTest,hiltAnnotationProcessorFullRelease,hiltAnnotationProcessorMinimalDebug,hiltAnnotationProcessorMinimalDebugAndroidTest,hiltAnnotationProcessorMinimalDebugUnitTest,hiltAnnotationProcessorMinimalRelease,kspFullDebugAndroidTestKotlinProcessorClasspath,kspFullDebugKotlinProcessorClasspath,kspFullDebugScreenshotTestKotlinProcessorClasspath,kspFullDebugUnitTestKotlinProcessorClasspath,kspFullReleaseKotlinProcessorClasspath,kspFullReleaseScreenshotTestKotlinProcessorClasspath,kspMinimalDebugAndroidTestKotlinProcessorClasspath,kspMinimalDebugKotlinProcessorClasspath,kspMinimalDebugScreenshotTestKotlinProcessorClasspath,kspMinimalDebugUnitTestKotlinProcessorClasspath,kspMinimalReleaseKotlinProcessorClasspath,kspMinimalReleaseScreenshotTestKotlinProcessorClasspath
467466
com.squareup:javawriter:2.1.1=fullDebugUnitTestLintChecksClasspath,fullDebugUnitTestRuntimeClasspath,minimalDebugUnitTestLintChecksClasspath,minimalDebugUnitTestRuntimeClasspath
467+
com.squareup:kotlinpoet-ksp:1.11.0=_agp_internal_fullDebug_kspClasspath,_agp_internal_fullRelease_kspClasspath,_agp_internal_minimalDebug_kspClasspath,_agp_internal_minimalRelease_kspClasspath,hiltAnnotationProcessorFullDebug,hiltAnnotationProcessorFullDebugAndroidTest,hiltAnnotationProcessorFullDebugUnitTest,hiltAnnotationProcessorFullRelease,hiltAnnotationProcessorMinimalDebug,hiltAnnotationProcessorMinimalDebugAndroidTest,hiltAnnotationProcessorMinimalDebugUnitTest,hiltAnnotationProcessorMinimalRelease,kspFullDebugAndroidTestKotlinProcessorClasspath,kspFullDebugKotlinProcessorClasspath,kspFullDebugScreenshotTestKotlinProcessorClasspath,kspFullDebugUnitTestKotlinProcessorClasspath,kspFullReleaseKotlinProcessorClasspath,kspFullReleaseScreenshotTestKotlinProcessorClasspath,kspMinimalDebugAndroidTestKotlinProcessorClasspath,kspMinimalDebugKotlinProcessorClasspath,kspMinimalDebugScreenshotTestKotlinProcessorClasspath,kspMinimalDebugUnitTestKotlinProcessorClasspath,kspMinimalReleaseKotlinProcessorClasspath,kspMinimalReleaseScreenshotTestKotlinProcessorClasspath
468468
com.squareup:kotlinpoet:1.11.0=_agp_internal_fullDebug_kspClasspath,_agp_internal_fullRelease_kspClasspath,_agp_internal_minimalDebug_kspClasspath,_agp_internal_minimalRelease_kspClasspath,hiltAnnotationProcessorFullDebug,hiltAnnotationProcessorFullDebugAndroidTest,hiltAnnotationProcessorFullDebugUnitTest,hiltAnnotationProcessorFullRelease,hiltAnnotationProcessorMinimalDebug,hiltAnnotationProcessorMinimalDebugAndroidTest,hiltAnnotationProcessorMinimalDebugUnitTest,hiltAnnotationProcessorMinimalRelease,kspFullDebugAndroidTestKotlinProcessorClasspath,kspFullDebugKotlinProcessorClasspath,kspFullDebugScreenshotTestKotlinProcessorClasspath,kspFullDebugUnitTestKotlinProcessorClasspath,kspFullReleaseKotlinProcessorClasspath,kspFullReleaseScreenshotTestKotlinProcessorClasspath,kspMinimalDebugAndroidTestKotlinProcessorClasspath,kspMinimalDebugKotlinProcessorClasspath,kspMinimalDebugScreenshotTestKotlinProcessorClasspath,kspMinimalDebugUnitTestKotlinProcessorClasspath,kspMinimalReleaseKotlinProcessorClasspath,kspMinimalReleaseScreenshotTestKotlinProcessorClasspath
469469
com.sun.istack:istack-commons-runtime:3.0.8=androidLintTool,unified-test-platform-android-test-plugin-result-listener-gradle
470470
com.sun.xml.fastinfoset:FastInfoset:1.2.16=androidLintTool,unified-test-platform-android-test-plugin-result-listener-gradle

app/src/full/kotlin/io/homeassistant/companion/android/sensors/ActivitySensorManager.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.google.android.gms.location.SleepSegmentEvent
1414
import com.google.android.gms.location.SleepSegmentRequest
1515
import dagger.hilt.android.AndroidEntryPoint
1616
import io.homeassistant.companion.android.common.R as commonR
17+
import io.homeassistant.companion.android.common.sensors.ProvidesSensor
1718
import io.homeassistant.companion.android.common.sensors.SensorManager
1819
import io.homeassistant.companion.android.common.sensors.SensorReceiverBase
1920
import io.homeassistant.companion.android.common.util.STATE_UNKNOWN
@@ -39,7 +40,8 @@ class ActivitySensorManager :
3940
"io.homeassistant.companion.android.background.SLEEP_ACTIVITY"
4041
private var sleepRegistration = false
4142

42-
private val activity = SensorManager.BasicSensor(
43+
@ProvidesSensor
44+
internal val activity = SensorManager.BasicSensor(
4345
"detected_activity",
4446
"sensor",
4547
commonR.string.basic_sensor_name_activity,
@@ -48,7 +50,8 @@ class ActivitySensorManager :
4850
deviceClass = "enum",
4951
)
5052

51-
private val sleepConfidence = SensorManager.BasicSensor(
53+
@ProvidesSensor
54+
internal val sleepConfidence = SensorManager.BasicSensor(
5255
"sleep_confidence",
5356
"sensor",
5457
commonR.string.basic_sensor_name_sleep_confidence,
@@ -59,7 +62,8 @@ class ActivitySensorManager :
5962
updateType = SensorManager.BasicSensor.UpdateType.CUSTOM,
6063
)
6164

62-
private val sleepSegment = SensorManager.BasicSensor(
65+
@ProvidesSensor
66+
internal val sleepSegment = SensorManager.BasicSensor(
6367
"sleep_segment",
6468
"sensor",
6569
commonR.string.basic_sensor_name_sleep_segment,

app/src/full/kotlin/io/homeassistant/companion/android/sensors/AndroidAutoSensorManager.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.os.Build
55
import androidx.car.app.connection.CarConnection
66
import androidx.lifecycle.Observer
77
import io.homeassistant.companion.android.common.R as commonR
8+
import io.homeassistant.companion.android.common.sensors.ProvidesSensor
89
import io.homeassistant.companion.android.common.sensors.SensorManager
910
import io.homeassistant.companion.android.common.util.SdkVersion
1011
import kotlinx.coroutines.launch
@@ -15,7 +16,8 @@ class AndroidAutoSensorManager :
1516
Observer<Int> {
1617

1718
companion object {
18-
private val androidAutoConnected = SensorManager.BasicSensor(
19+
@ProvidesSensor
20+
internal val androidAutoConnected = SensorManager.BasicSensor(
1921
"android_auto",
2022
"binary_sensor",
2123
commonR.string.basic_sensor_name_android_auto,

app/src/full/kotlin/io/homeassistant/companion/android/sensors/LocationSensorManager.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import io.homeassistant.companion.android.common.data.integration.UpdateLocation
3333
import io.homeassistant.companion.android.common.data.integration.containsWithAccuracy
3434
import io.homeassistant.companion.android.common.data.prefs.PrefsRepository
3535
import io.homeassistant.companion.android.common.notifications.DeviceCommandData
36+
import io.homeassistant.companion.android.common.sensors.ProvidesSensor
3637
import io.homeassistant.companion.android.common.sensors.SensorManager
3738
import io.homeassistant.companion.android.common.sensors.SensorReceiverBase
3839
import io.homeassistant.companion.android.common.util.DisabledLocationHandler
@@ -102,6 +103,7 @@ class LocationSensorManager :
102103
const val ACTION_FORCE_HIGH_ACCURACY =
103104
"io.homeassistant.companion.android.background.FORCE_HIGH_ACCURACY"
104105

106+
@ProvidesSensor
105107
val backgroundLocation = SensorManager.BasicSensor(
106108
"location_background",
107109
"",
@@ -110,6 +112,8 @@ class LocationSensorManager :
110112
"mdi:map-marker-multiple",
111113
updateType = SensorManager.BasicSensor.UpdateType.LOCATION,
112114
)
115+
116+
@ProvidesSensor
113117
val zoneLocation = SensorManager.BasicSensor(
114118
"zone_background",
115119
"",
@@ -118,6 +122,8 @@ class LocationSensorManager :
118122
"mdi:map-marker-radius",
119123
updateType = SensorManager.BasicSensor.UpdateType.LOCATION,
120124
)
125+
126+
@ProvidesSensor
121127
val singleAccurateLocation = SensorManager.BasicSensor(
122128
"accurate_location",
123129
"",
@@ -127,6 +133,7 @@ class LocationSensorManager :
127133
updateType = SensorManager.BasicSensor.UpdateType.LOCATION,
128134
)
129135

136+
@ProvidesSensor
130137
val highAccuracyMode = SensorManager.BasicSensor(
131138
"high_accuracy_mode",
132139
"binary_sensor",
@@ -137,6 +144,7 @@ class LocationSensorManager :
137144
updateType = SensorManager.BasicSensor.UpdateType.INTENT,
138145
)
139146

147+
@ProvidesSensor
140148
val highAccuracyUpdateInterval = SensorManager.BasicSensor(
141149
"high_accuracy_update_interval",
142150
"sensor",
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package io.homeassistant.companion.android.sensors
2+
3+
import dagger.Module
4+
import dagger.Provides
5+
import dagger.hilt.InstallIn
6+
import dagger.hilt.components.SingletonComponent
7+
import dagger.multibindings.ElementsIntoSet
8+
import io.homeassistant.companion.android.common.sensors.SensorManager
9+
import io.homeassistant.companion.android.sensors.generated.GeneratedProvidesSensorApp
10+
11+
/**
12+
* Contributes the `:app` module's `@ProvidesSensor` sensors into the `Set<BasicSensor>`.
13+
*
14+
* This Hilt module is hand-written (not generated) on purpose: Hilt's KSP processor does not
15+
* reliably aggregate an `@InstallIn` module that is itself *generated* by another KSP processor (the
16+
* KSP2 round model doesn't feed it to Hilt). So the provides-sensor processor generates only a plain
17+
* data object ([GeneratedProvidesSensorApp]), and this source module turns it into the binding.
18+
*
19+
* `:automotive` reuses this source set, so it must also generate `GeneratedProvidesSensorApp` (its
20+
* `providesSensorModuleSuffix` is set to `app`).
21+
*/
22+
@Module
23+
@InstallIn(SingletonComponent::class)
24+
internal object AppProvidesSensorModule {
25+
@Provides
26+
@ElementsIntoSet
27+
fun appProvidesSensors(): Set<SensorManager.BasicSensor> = GeneratedProvidesSensorApp.sensors
28+
}

0 commit comments

Comments
 (0)