Ability to force warm start GPS

Falco shared this idea 5 years ago
Gathering feedback

Sometimes, once every 50-100 hours I got a wired behaivor of my GPS. I get very good accuracy but my position has 20-30m offset and it doesn't get fixed it keeps the 20m offset with 1m accuracy.

To fix it I need to turn GPS off and on again on hardware level to force a restart. Then the offset disappears and my location it right on track again.

I did thought this was a bug of my GPS transmitter, maybe wrong calculation of incomming signals. But last weekend I got the same error on my new GPS module from another company.

Maybe it is related to the forced bad accuracy of free gps service? Is this a thing?

The fix "restart GPS" isn't that easy for me because I use a external GPS on my backpack. For that reason I did implement warm start over bluetooth.

Unfortunantly locus does use the bluetooth connection it's not possible to open a secound bt connection to my device. Which means I have to:

  1. disable bluetooth (to steal the connection from locus)
  2. enable bluetooth
  3. connect
  4. send command over bluetooth serial connection
  5. disconnect to make locus able to connect again
  6. click on the locus bluetooth device selection screen (appears after it lost connection)

I did automate this things with tasker and create a long click volume done profile which handle all of this.

I still need to test if HotStart is enoght or if I really need to make a warmStart or even a coldStart to fix this issue. Which means I have to wait until the error does appear again.

I did need Tasker Bluetooth Serial Plugin and AutoInput plugin to get this workarround done

here the profile in text form:

Profile: GPSRestart (18)
	Event: AutoInput Key [ Configuration:Keys: Volume Down
Key Action: All
Manual Key Codes: 25, ]
	Application: Locus Map
Enter: GPSHotStart Longpress (19)
	Abort Existing Task
	<if long key is not down>
	A1: If [ %longKey neq 0 ]
	A2: Wait [ MS:500 Seconds:0 Minutes:0 Hours:0 Days:0 ] 
	A3: Variable Set [ Name:%longKey To:%aikeyaction Recurse Variables:Off Do Maths:Off Append:Off ] 
	A4: Stop [ With Error:Off Task: ] 
	A5: End If 
	<Reset long key to up>
	A6: Variable Set [ Name:%longKey To:1 Recurse Variables:Off Do Maths:Off Append:Off ] 
	<revert vol btn action>
	A7: Send Intent [ Action:com.asamm.locus.ACTION_TASK Cat:None Mime Type: Data: Extra:tasks: { map_zoom: { action: "+" } } Extra: Extra: Package:menion.android.locus.pro Class: Target:Broadcast Receiver ] 
	A8: Bluetooth [ Set:Off ] 
	A9: Bluetooth [ Set:On ] 
	A10: Variable Set [ Name:%btmac To:00:1C:88:30:47:26 Recurse Variables:Off Do Maths:Off Append:Off ] 
	A11: Bluetooth Serial [ Configuration:%btmac <- $PMTK101*32\r\n Timeout (Seconds):0 ] 
	A12: AutoInput Action [ Configuration:Type: Text
Value: %btmac
Action : Click Timeout (Seconds):60 Continue Task After Error:On ] 

Leave a Comment
Attach a file