{"action":"created","issue":{"url":"https://api.github.com/repos/ColinPitrat/kalenji-gps-watch-reader/issues/55","repository_url":"https://api.github.com/repos/ColinPitrat/kalenji-gps-watch-reader","labels_url":"https://api.github.com/repos/ColinPitrat/kalenji-gps-watch-reader/issues/55/labels{/name}","comments_url":"https://api.github.com/repos/ColinPitrat/kalenji-gps-watch-reader/issues/55/comments","events_url":"https://api.github.com/repos/ColinPitrat/kalenji-gps-watch-reader/issues/55/events","html_url":"https://github.com/ColinPitrat/kalenji-gps-watch-reader/issues/55","id":175346116,"number":55,"title":"OnMove200","user":{"login":"dinbo31","id":20625313,"avatar_url":"https://avatars.githubusercontent.com/u/20625313?v=3","gravatar_id":"","url":"https://api.github.com/users/dinbo31","html_url":"https://github.com/dinbo31","followers_url":"https://api.github.com/users/dinbo31/followers","following_url":"https://api.github.com/users/dinbo31/following{/other_user}","gists_url":"https://api.github.com/users/dinbo31/gists{/gist_id}","starred_url":"https://api.github.com/users/dinbo31/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dinbo31/subscriptions","organizations_url":"https://api.github.com/users/dinbo31/orgs","repos_url":"https://api.github.com/users/dinbo31/repos","events_url":"https://api.github.com/users/dinbo31/events{/privacy}","received_events_url":"https://api.github.com/users/dinbo31/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-09-06T20:39:44Z","updated_at":"2016-09-07T10:05:26Z","closed_at":null,"body":"Bonjour Colin,\r\n\r\nTout d'abord, je tiens à te remercier pour ce programme qui m'a permis de récupérer mes traces sur ma montre OnMove200.\r\n\r\nLa OnMove200 permet de faire des laps manuels, et aussi des fractionnés au temps.\r\nJe ne connaissais pas la programmation en c++, mais j'ai suivi quelques cours de programmation en c il y a une dizaine d'années, je connaissais donc un peu l'architecture de ce type de programme.\r\nEn me basant sur le code de la OnMove710, j'ai modifié le code de la OnMove200, et il me génère maintenant les laps quand je lance le programme. Le nouveau code n'est sans doute pas conforme à la norme de ce type de programme, mais je retrouve les bonnes distances et les bons temps (les points ne s'affichent par contre pas au bon endroit sur une carte).\r\nCertains laps s'affichent sans distance, ni vitesse, mais avec le filtre \"EmptyLaps\" permet de résoudre ce problème.\r\nJe n'ai pas de cardio, donc je n'ai pas pu fixer le cardio dans le programme, mais c'est assez simple à rajouter si l'emplacement des bytes du cardio sont identifés.\r\n\r\nJ'ai mis deux fichiers omd et omh en pièces jointes pour faire les tests, ainsi que la composition du fichier omd que j'ai trouvé.\r\n\r\nJe vais continuer à travailler sur le fichier pour essayer de ficher la vitesse max, ce qui doit être possible par lap, et essayer de faire en sorte que les points de départs et d'arrivées des laps correspondent à la réalité (la distance et le temps collent parfaitement).\r\n\r\nLes laps sont identifiés sur le fichier omd par l'affichage de 3 points identiques pour la lap manuel, et par deux points identiques pour le lap du fractionné.\r\n\r\nJe te laisse regarder mes modifications et revenir vers moi si nécessaire,\r\n\r\nCordialement,\r\n\r\nThomas\r\n\r\n\r\n\r\n\r\n[omd.txt](https://github.com/ColinPitrat/kalenji-gps-watch-reader/files/457710/omd.txt)\r\n[20160831_124700.gpx.txt](https://github.com/ColinPitrat/kalenji-gps-watch-reader/files/457712/20160831_124700.gpx.txt)\r\n[20160903_220600.gpx.txt](https://github.com/ColinPitrat/kalenji-gps-watch-reader/files/457714/20160903_220600.gpx.txt)\r\n[ACT_0000.OMD.txt](https://github.com/ColinPitrat/kalenji-gps-watch-reader/files/457716/ACT_0000.OMD.txt)\r\n[ACT_0000.OMH.txt](https://github.com/ColinPitrat/kalenji-gps-watch-reader/files/457715/ACT_0000.OMH.txt)\r\n[ACT_0002.OMD.txt](https://github.com/ColinPitrat/kalenji-gps-watch-reader/files/457717/ACT_0002.OMD.txt)\r\n[ACT_0002.OMH.txt](https://github.com/ColinPitrat/kalenji-gps-watch-reader/files/457713/ACT_0002.OMH.txt)\r\n\r\n[OnMove200.cc.txt](https://github.com/ColinPitrat/kalenji-gps-watch-reader/files/457719/OnMove200.cc.txt)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/ColinPitrat/kalenji-gps-watch-reader/issues/comments/245234870","html_url":"https://github.com/ColinPitrat/kalenji-gps-watch-reader/issues/55#issuecomment-245234870","issue_url":"https://api.github.com/repos/ColinPitrat/kalenji-gps-watch-reader/issues/55","id":245234870,"user":{"login":"ColinPitrat","id":1541863,"avatar_url":"https://avatars.githubusercontent.com/u/1541863?v=3","gravatar_id":"","url":"https://api.github.com/users/ColinPitrat","html_url":"https://github.com/ColinPitrat","followers_url":"https://api.github.com/users/ColinPitrat/followers","following_url":"https://api.github.com/users/ColinPitrat/following{/other_user}","gists_url":"https://api.github.com/users/ColinPitrat/gists{/gist_id}","starred_url":"https://api.github.com/users/ColinPitrat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ColinPitrat/subscriptions","organizations_url":"https://api.github.com/users/ColinPitrat/orgs","repos_url":"https://api.github.com/users/ColinPitrat/repos","events_url":"https://api.github.com/users/ColinPitrat/events{/privacy}","received_events_url":"https://api.github.com/users/ColinPitrat/received_events","type":"User","site_admin":false},"created_at":"2016-09-07T10:05:25Z","updated_at":"2016-09-07T10:05:25Z","body":"Super ! Cette contribution m'intéresse.\r\n\r\nSi je comprends bien, chaque point contient l'information du temps courant (que je décodais déjà), du temps de début du lap (bytes 32 et 33) et de temps du fin du lap (bytes 52 et 53) c'est ça ?\r\n\r\nJ'ai l'impression que tu n'es pas parti de la dernière version du code (repository git) car il manque le support du cardio. Ce n'est pas gênant car c'est très localisé. Mais si tu fais la modif en partant du repository git, tu peux ensuite soumettre une pull-request qui me facilite le travail pour l'integration et facilite aussi les commentaires.\r\n\r\nLe code me semble bon, et ne casse pas les tests existant (enfin, il y a l'information de lap en plus avec 1 seul lap ce qui est attendu). Il va falloir que j'ajoute un test avec tes fichiers pour tester plusieurs laps. Ou si ça t'intéresse et que tu veux faire une pull-request, tu peux écrire le test toi même en t'inspirant de ce qui est fait dans le sous répertoire `test/integrated`.\r\n\r\nQuelques remarques sur le format:\r\n - le code utilise des espaces pour indenter, pas des tabulations\r\n - à certains endroits, l'indentation n'est pas bonne (contenu d'un for au même niveau que le for) ce qui nuit un peu à la lecture\r\n - les commentaires sont en français alors que tout le reste du projet est en anglais :-)\r\n - il y a quelques retour à la ligne de type DOS/Windows à des endroits\r\n\r\nQuelques remarques sur le contenu:\r\n- Il y a un commentaire `// déclaration de la variable chunk` qui n'est pas très utile, on s'attend à ce que quelqu'un qui lit du code sait ce qu'est une déclaration de variable\r\n- Dans la `Recherche du nombre de points`, il n'est pas nécessaire de faire `chunk = &bytes[i]` puisque chunk n'est pas utilisé ensuite. D'autre part, la boucle for revient à faire la division `totalPoint = length / 30;` (en fait pour être précis c'est l'équivalent de `totalPoint = (length + 29)/30-1` mais je ne pense pas que `length` puisse ne pas être un multiple de 30 ni que le cas `totalPoint = -1` soit vraiment voulu.\r\n- Il y a du code dupliqué pour créer le lap selon que c'est le dernier (dernier point atteint) ou un autre (comparaison des temps). Il est possible de l'éviter en faisant `if((time == time2) || (time == time3) || (endPoint == totalPoint))`. Cette partie pour le coup mériterait un commentaire expliquant à quoi correspondent time2 et time3.\r\n- Il y a encore une duplication de plusieurs ligne dans la partie `Recherche de points` juste pour différencier la façon de décoder la vitesse. Il suffit de mettre un if autour de la ligne décodant la vitesse (en déclarant la variable avant) pour éviter la répétition. C'est ce que j'ai fait pour le heartrate qui est disponible dans le repo git mais apparemment pas dans la version dont tu es parti.\r\n - Le test `if((numPoints % 3 == 1)||(numPoints == 1))` est redondant (idem pour 2) car 1 % 3 vaut 1 (et 2 % 3 vaut 2).\r\n\r\nEncore merci pour cette contribution."}}
{"actor":{"display_login":"ColinPitrat"}}