fix: Proces threading fix
This commit is contained in:
parent
116b13adcb
commit
75e10c1579
3 changed files with 20 additions and 16 deletions
|
@ -23,7 +23,7 @@ class Garmin(
|
|||
) {
|
||||
|
||||
private lateinit var connection: ConnectThread
|
||||
private lateinit var processing: ProcessingThread
|
||||
private val observer = ProcessingThreadObserver()
|
||||
private val cache = DataCache()
|
||||
|
||||
fun start() {
|
||||
|
@ -36,15 +36,11 @@ class Garmin(
|
|||
}
|
||||
|
||||
fun process(maneuver: Maneuver) {
|
||||
processing = ManeuverProcessingThread(maneuver)
|
||||
processing.start()
|
||||
processing.join()
|
||||
ManeuverProcessingThread(maneuver).start()
|
||||
}
|
||||
|
||||
fun process(location: LocationMatcherResult) {
|
||||
processing = LocationProcessingThread(location)
|
||||
processing.start()
|
||||
processing.join()
|
||||
LocationProcessingThread(location).start()
|
||||
}
|
||||
|
||||
fun process(navigationSessionState: NavigationSessionState) {
|
||||
|
@ -83,6 +79,15 @@ class Garmin(
|
|||
connection.enqueue(GarminMapper.setDirection(incoming))
|
||||
}
|
||||
cache.update(incoming)
|
||||
observer.join(this)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private inner class ProcessingThreadObserver {
|
||||
|
||||
fun join(thread: ProcessingThread) {
|
||||
thread.join()
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -165,6 +170,8 @@ class Garmin(
|
|||
|
||||
companion object {
|
||||
|
||||
lateinit var instance: Garmin
|
||||
|
||||
fun prepareData(input: IntArray): IntArray {
|
||||
val n = input.size
|
||||
var crc = (0xeb + n + n).toUInt()
|
||||
|
|
|
@ -30,7 +30,7 @@ import java.lang.ref.WeakReference
|
|||
@SuppressLint("MissingPermission")
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
||||
lateinit var garmin: Garmin
|
||||
// lateinit var garmin: Garmin
|
||||
|
||||
private lateinit var binding: ActivityMainBinding
|
||||
private lateinit var mapControl: MapControl
|
||||
|
@ -95,8 +95,8 @@ class MainActivity : AppCompatActivity() {
|
|||
Log.d(TAG, device.name)
|
||||
device.name.equals("GARMIN HUD")
|
||||
}?.apply {
|
||||
garmin = Garmin(context, this, bluetoothAdapter)
|
||||
garmin.start()
|
||||
Garmin.instance = Garmin(context, this, bluetoothAdapter)
|
||||
Garmin.instance.start()
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ import com.mapbox.navigation.ui.maps.route.line.api.MapboxRouteLineApi
|
|||
import com.mapbox.navigation.ui.maps.route.line.api.MapboxRouteLineView
|
||||
import com.mapbox.navigation.ui.maps.route.line.model.MapboxRouteLineApiOptions
|
||||
import com.mapbox.navigation.ui.maps.route.line.model.MapboxRouteLineViewOptions
|
||||
import eu.ztsh.garmin.Garmin
|
||||
import eu.ztsh.garmin.UI
|
||||
|
||||
class RouteControl(private val mapControl: MapControl, ui: UI, private val context: Context) {
|
||||
|
@ -166,12 +167,8 @@ class RouteControl(private val mapControl: MapControl, ui: UI, private val conte
|
|||
{
|
||||
mapControl.ui.maneuverView.visibility = View.VISIBLE
|
||||
mapControl.ui.maneuverView.renderManeuvers(maneuvers)
|
||||
|
||||
/*
|
||||
dump(maneuvers.value[0])
|
||||
garmin.process(maneuvers.value[0])
|
||||
*/
|
||||
|
||||
Garmin.instance.process(it[0])
|
||||
// dump(maneuvers.value[0])
|
||||
}
|
||||
)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue