1
1
package dev.slimevr.config
2
2
3
3
import dev.slimevr.VRServer
4
+ import dev.slimevr.tracking.trackers.udp.MagnetometerStatus
4
5
import kotlinx.coroutines.async
5
6
import kotlinx.coroutines.awaitAll
6
7
import kotlinx.coroutines.coroutineScope
@@ -20,18 +21,33 @@ class ServerConfig {
20
21
21
22
VRServer .instance.deviceManager.devices.filter { it.magSupport }.map {
22
23
async {
24
+ // Not using 255 as it sometimes could make one of the sensors go into
25
+ // error mode (if there is more than one sensor inside the device)
23
26
if (! state) {
24
- it.setMag(false )
27
+ val trackers = it.trackers.filterValues {
28
+ it.magStatus != MagnetometerStatus .NOT_SUPPORTED
29
+ }
30
+ // if(trackers.size == it.trackers.size) {
31
+ // it.setMag(false)
32
+ // } else {
33
+ trackers.map { (_, t) ->
34
+ async { it.setMag(false , t.trackerNum) }
35
+ }.awaitAll()
36
+ // }
25
37
return @async
26
38
}
27
39
28
- val every = it.trackers.all { (_, t) -> t.config.shouldHaveMagEnabled == true }
29
- if (every) {
30
- it.setMag(true )
31
- return @async
32
- }
40
+ // val every = it.trackers.all { (_, t) -> t.config.shouldHaveMagEnabled == true
41
+ // && t.magStatus != MagnetometerStatus.NOT_SUPPORTED }
42
+ // if (every) {
43
+ // it.setMag(true)
44
+ // return@async
45
+ // }
33
46
34
- it.trackers.filterValues { it.config.shouldHaveMagEnabled == true }
47
+ it.trackers.filterValues {
48
+ it.config.shouldHaveMagEnabled == true &&
49
+ it.magStatus != MagnetometerStatus .NOT_SUPPORTED
50
+ }
35
51
.map { (_, t) ->
36
52
async {
37
53
// FIXME: Tracker gets restarted after each setMag, what will happen for devices with 3 trackers?
0 commit comments