Experienced developer, new to Garmin, looking for SOE

We had a fully features yacht racing app ready to go on a pebble (RIP) and want to migrate to Garmin Vivoactive HR.
No prior experience with the platform so big learning curve.
Biggest issue is understanding Garmin's "Standard Operating Environment" (SOE)
As our sailing app is deeply involved in tracks, courses and routes I am interested to discover the details of the facilities available to me as a developer to interact with these features.
For example,
  • is it possible to record the GPS values of SOG and COG in the GPX track file?
  • Can I persist other data that may be downloaded from our web site, such user ID, yacht name, yacht characteristics etc?
  • What are the characteristics of a "course" or "route"?
  • What facilities are there for a user to define a course?
  • Is there any documentation at a level between the very high level Programmers Guide and the API Docs which assumes a detailed understanding of Garmin SOE?

Need help!
  • In my humble opinion, before realy designing or planning an app like this, you really need some hands on time. In the Garmin world, .fit files are very common thing, even for users.

    I'd be willing to guess that your app could really make use of what's in Garmin connect already, Like I said, with the .fit, you have a bunch of data collected, and can do things like insert "laps" that will show a specific location on the map and provide point to point data like distance/speed/time between two points. And if you add developer data (see FitContributor) to the .fit, you can handle the "extras". Even if you convert the .fit for your website, some folks may also want to see it in GC, as if they have a garmin, they are likely doing other things that they look at in GC.

    It would also a chance to check out other sailing related apps in the store (but don't clone them, that's not cool! :) )
  • I've just checked the location object: To my amazement, it only provides latitude and longitude - I need time (GPS time accurate to sub-second of the position report), speed and heading.
    I'm having serious second thoughts.
  • I have installed recordSample into Eclipse but it instructs the user to "Press Menu.." and I can't find a Menu button on the emulator.


    What is your target? if it's a va-hr, it's a "long click" on the right button on the image (or a long press with a touch screen). (Just like you'd do on an actual watch ;) )

    Ok, for the va hr, "back" is the left button, right is start/enter, and long press right is menu.

    Under "Simulation/Fit Data/Simulate Data", you can feed it data.
  • I've just checked the location object: To my amazement, it only provides latitude and longitude - I need time (GPS time accurate to sub-second of the position report), speed and heading.
    I'm having serious second thoughts.


    The GPS accuracy on any consumer device isn't likely to be adequate to get sub-second information. The GPS position error is probably greater than the timing variability. The fit file basically includes a time stamp for each data point, accurate to the second. This will include a bunch of other fields as well, including elevation, speed, and other sensor data like heart rate and cadence. You would add your specific data point like COG to this.
  • I've just checked the location object: To my amazement, it only provides latitude and longitude - I need time (GPS time accurate to sub-second of the position report), speed and heading.

    From a design perspective, why would a Location include information about time, speed or heading?

    I'm having serious second thoughts.

    Everything you seek is there. You're just not looking in the right place.

    To get position data, you'd use the Position module. You can ask that the system call back to your application when GPS data arrives (via Position.enableLocationEvents()) or you can query it with Position.getInfo(). Both of these give you a Position.Info object. That object includes time (probably not as precise as you want), speed and heading.

    Travis
  • "I assumed the GPS data wasn't sufficient." - Not sure what you're getting at here. GPS position is too noisy to derive reliable course and speed.

    I was agreeing with you

    The a partnership program would probably the way to go to access users data, but the $5,000 fee is a bit stiff. After all we'll be opening up a whole new customer base for Garmin.


    Totally agree. There was a big hoopla about this a few years back when they did this. Before that, any hobbyist could access it. My understanding is that there are ways around this so you could contact Garmin. Depends how much they want you. But I generally just develop for myself and close friends so haven't even looked into it. (other wise I might be breaking Jim's "that's not cool" rule).
  • Ah I was looking at location not position, thanks, sorry for the confusion. Still trying to get to grips with the Garmin SOE!

    And yes, thanks, I hadn't found the long click on the right button as the Menu.

    Thanks everybody for the great responses. I have a heap more work to check out this device.
  • I've just checked the location object: To my amazement, it only provides latitude and longitude - I need time (GPS time accurate to sub-second of the position report), speed and heading.
    I'm having serious second thoughts.


    Again, I feel you need to get a bit of experience with the watch. On most (I think the original va is the exception for CIQ devices), the time is set with GPS, and you have access to the millisecond time (Sys.getTimer() ). It's not in the same object as lat/lon, but it's there. onPosition() might be the place to catch the lat/lon and timer in one place. And if you need it in the .fit, use FitContribor to add it.