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 connection: ConnectThread
|
||||||
private lateinit var processing: ProcessingThread
|
private val observer = ProcessingThreadObserver()
|
||||||
private val cache = DataCache()
|
private val cache = DataCache()
|
||||||
|
|
||||||
fun start() {
|
fun start() {
|
||||||
|
@ -36,15 +36,11 @@ class Garmin(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun process(maneuver: Maneuver) {
|
fun process(maneuver: Maneuver) {
|
||||||
processing = ManeuverProcessingThread(maneuver)
|
ManeuverProcessingThread(maneuver).start()
|
||||||
processing.start()
|
|
||||||
processing.join()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun process(location: LocationMatcherResult) {
|
fun process(location: LocationMatcherResult) {
|
||||||
processing = LocationProcessingThread(location)
|
LocationProcessingThread(location).start()
|
||||||
processing.start()
|
|
||||||
processing.join()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun process(navigationSessionState: NavigationSessionState) {
|
fun process(navigationSessionState: NavigationSessionState) {
|
||||||
|
@ -83,6 +79,15 @@ class Garmin(
|
||||||
connection.enqueue(GarminMapper.setDirection(incoming))
|
connection.enqueue(GarminMapper.setDirection(incoming))
|
||||||
}
|
}
|
||||||
cache.update(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 {
|
companion object {
|
||||||
|
|
||||||
|
lateinit var instance: Garmin
|
||||||
|
|
||||||
fun prepareData(input: IntArray): IntArray {
|
fun prepareData(input: IntArray): IntArray {
|
||||||
val n = input.size
|
val n = input.size
|
||||||
var crc = (0xeb + n + n).toUInt()
|
var crc = (0xeb + n + n).toUInt()
|
||||||
|
|
|
@ -30,7 +30,7 @@ import java.lang.ref.WeakReference
|
||||||
@SuppressLint("MissingPermission")
|
@SuppressLint("MissingPermission")
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
lateinit var garmin: Garmin
|
// lateinit var garmin: Garmin
|
||||||
|
|
||||||
private lateinit var binding: ActivityMainBinding
|
private lateinit var binding: ActivityMainBinding
|
||||||
private lateinit var mapControl: MapControl
|
private lateinit var mapControl: MapControl
|
||||||
|
@ -95,8 +95,8 @@ class MainActivity : AppCompatActivity() {
|
||||||
Log.d(TAG, device.name)
|
Log.d(TAG, device.name)
|
||||||
device.name.equals("GARMIN HUD")
|
device.name.equals("GARMIN HUD")
|
||||||
}?.apply {
|
}?.apply {
|
||||||
garmin = Garmin(context, this, bluetoothAdapter)
|
Garmin.instance = Garmin(context, this, bluetoothAdapter)
|
||||||
garmin.start()
|
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.api.MapboxRouteLineView
|
||||||
import com.mapbox.navigation.ui.maps.route.line.model.MapboxRouteLineApiOptions
|
import com.mapbox.navigation.ui.maps.route.line.model.MapboxRouteLineApiOptions
|
||||||
import com.mapbox.navigation.ui.maps.route.line.model.MapboxRouteLineViewOptions
|
import com.mapbox.navigation.ui.maps.route.line.model.MapboxRouteLineViewOptions
|
||||||
|
import eu.ztsh.garmin.Garmin
|
||||||
import eu.ztsh.garmin.UI
|
import eu.ztsh.garmin.UI
|
||||||
|
|
||||||
class RouteControl(private val mapControl: MapControl, ui: UI, private val context: Context) {
|
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.visibility = View.VISIBLE
|
||||||
mapControl.ui.maneuverView.renderManeuvers(maneuvers)
|
mapControl.ui.maneuverView.renderManeuvers(maneuvers)
|
||||||
|
Garmin.instance.process(it[0])
|
||||||
/*
|
// dump(maneuvers.value[0])
|
||||||
dump(maneuvers.value[0])
|
|
||||||
garmin.process(maneuvers.value[0])
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue