openambitproject / openambit

openambit
281 stars 82 forks source link

Sport modes synchronizing may freeze the watch, requiring a reset #190

Closed gustavo-iniguez-goya closed 5 years ago

gustavo-iniguez-goya commented 6 years ago

I have configured a sport mode, which if I synchronize with latest sources (10/06/2018), after start a new move and detect gps and the pods, the watch freezes and I need to reset the watch:

sports_mode.txt

The problematic sport mode is "Cycling", which is a custom mode I configured for my needs. If I use the movescount app this sport mode works fine.

benedetto commented 6 years ago

Same over here. A solution would be highly appreciated.

centic9 commented 5 years ago

I am hit by that as well and would like to give fixing this a try, any additional information you can provide would help, e.g. which settings for "Cycling" are actually different than in the other modes?

gustavo-iniguez-goya commented 5 years ago

Hey @centic9 , glad to hear that! This is how I've got it configured: movescount-cycling

PODs to search: [x] HR belt [ ] Foot POD [ ] Bike POD [x] Cadence POD [x] Power POD

Advanced settings: (*) Autopause ON

The rest options are as default.

gustavo-iniguez-goya commented 5 years ago

The main difference is the use of PODs. But they're just boolean values in the json downloaded from the server:

    "UsePODs": true,
    "UsePowerPOD": true,

When I was debugging this problem, I thought that maybe it was being written ouf of bounds somewhere, due to the extra screens and options per screen. But no idea really.

centic9 commented 5 years ago

Hm, I have the HR Belt POD enabled but none of the others. And two modes have equal settings for PODs, but one works and the other one not.

I am trying to get it set up so I can check for invalid accesses via valgrind, but unfortunately running the full GUI does not work well in this case, so I'll have a go at some unit-tests or a cli-version of openambit to try to reproduce this.

Another approach would be to have a working mode and a not-working mode and one-by-one make them similar, testing the result every time. Unfortunately I likely do not have enough time to do this anytime soon.

gustavo-iniguez-goya commented 5 years ago

Another option would be by trial and error. Here are some steps to download local routes to the watch from a local web server (that work). However, if you don't configure all the paths correctly, you'll end up with no routes on the watch, so I guess that the same goes for the sport modes and I don't want to try it with my own ambit for now 0:)

curl -L "https://uiservices.movescount.com/userdevices/?blabla..." > /var/www/movescount/

  • get the routes if you have any configured, and create a dir for each of them: mkdir /var/www/movescount/routes/1684232
  • download the content of the route and save it to /var/www/movescount/routes/1684232/index.json:

curl -L http://uiservices.movescount.com/routes/4003112/?blabla... > /var/www/movescount/routes/1684232/index.json

curl -L http://uiservices.movescount.com/routes/3922915/points?blabla.." > /var/www/movescount/routes/1684232/points

To print the urls and ease the process, movescount.cpp:asyncGet() -> qDebug() << "asyncGet url: " << url;

My idea/workflow here would be to delete json objects (i.e.: screens) from the problematic sport mode, and see if fewer screens on a sport mode solves this problem. Or keep changing/deleting options until it works. Dirty, not beautiful, not low level.. but could give some clues on the right direction.

centic9 commented 5 years ago

I found that it is related to "apps" in displays, if I remove all displays which have apps for a sport-mode and resync with Openambit, it starts to work for me.

Finding out why it happens will need a bit more work, maybe an usb-capture from a sync with the official Moveslink application on Windows would help, but I don't know how that can be done.

centic9 commented 5 years ago

I actually could find a rather simple fix, please try with the latest version from master and let me know if it also works for you now.

gustavo-iniguez-goya commented 4 years ago

Confirmed, it works on my Ambit 2.