I have a version working. But first, I want to keep the internal GPS as the default so I don't want to change the Settings -> Location Services -> GPS source to anything but the internal. To make the Bluetooth Autoconnect app work, that's what I had to do. Works great if you are willing to use only the external GPS, but if I'm not in my car, I want to use the internal GPS without any manual intervention. I am not aware of a way to programmatically change the GPS source, although I thought I ask on this forum. Maybe it can be done under Java.
So that leaves a helper app to make the connection for me without using the internal GPS service. I settled on the free Bluetooth GPS app because the developer added several intents which would allow tasker to trigger it's service and shut it down. From my first post, all that was "wrong" was the
Cat:Default should be
Cat:None. Now I can launch the service for Bluetooth GPS which does the work. For any of the following to work, you must be able to connect through the app itself and have all of the settings figured out first. If it doesn't work directly launching Bluetooth GPS, it will not work by calling the service.
Next problem for me, and I gather by reading the web, for many people regardless what external antenna helper app they are using, the connection fails multiple times with a service discovery error before you can actually make the connection. This is reflected in needing to tap the app widget (or connect button inside the app) several times before getting the connection. So, I set-up a loop that mimics this behaviour and as of today, have been able to get wait times in my loop configured that allow a connection every time I launch the task. It does run through the loop multiple times before succeeding. I have a separate profile that monitors the connect status to help with this process. While it's kludgy, the following has been working for me with a TomTom external GPS antenna, Sprint Epic 4g and ICS (CM9).
<sidebar> That TomTom antenna dates back to the Palm Lifedrive. </sidebar>
Profile: Car Dock (2)
Event: Button: Long Search
State: Power [ Source:Any ]
Enter: Car Dock (113)
A1: Bluetooth [ Set:On ]
A2: Popup [ Title:Bluetooth GPS Text:Make sure the external antenna is turned on! Background Image: Layout:Popup Timeout (Seconds):5 Show Over Keyguard:On ] // I had issues remembering to turn on the silly thing
<intent>
A3: Send Intent [ Action:googoo.android.btgps.action.SERVICE_START Cat:None Mime Type: Data: Extra: Extra: Package: Class: Target:Broadcast Receiver ]
A4: Wait [ MS:0 Seconds:7 Minutes:0 Hours:0 Days:0 ]
A5: Goto [ Type:Action Label Number:2 Label:intent ] If [ %extGPS !~ connected ]
A6: Wait [ MS:0 Seconds:20 Minutes:0 Hours:0 Days:0 ]
A7: Goto [ Type:Action Label Number:1 Label:intent ] If [ %extGPS !~ connected ]
A8: Variable Set [ Name:%carDock To:true Do Maths:Off Append:Off ]
Profile: External GPS (60)
State: Bluetooth Connected [ Name:* Address:00:00:00:00:00:00 ] // actual mac address or use the name field whatever
Enter: Anon (61)
A1: Variable Set [ Name:%extGPS To:connected Do Maths:Off Append:Off ]
A2: Flash [ Text:Ext GPS = %extGPS Long:On ]
Exit: Anon (109)
A1: Variable Set [ Name:%extGPS To:disconnected Do Maths:Off Append:Off ]