@sports-alliance/sports-lib 7.0.7 → 7.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +14 -0
- package/.eslintignore +4 -0
- package/.eslintrc.js +9 -0
- package/.prettierignore +25 -0
- package/.prettierrc.json +12 -0
- package/CODE_OF_CONDUCT.md +76 -0
- package/jest.config.js +23 -0
- package/lib/esm/index.js +12034 -152
- package/package.json +3 -2
- package/tsconfig.cjs.json +7 -0
- package/tsconfig.esm.json +8 -0
- package/tsconfig.lib.json +8 -0
- package/lib/esm/activities/activity-parsing-options.js +0 -19
- package/lib/esm/activities/activity.interface.js +0 -1
- package/lib/esm/activities/activity.js +0 -281
- package/lib/esm/activities/activity.json.interface.js +0 -1
- package/lib/esm/activities/activity.spec.js +0 -348
- package/lib/esm/activities/activity.types.js +0 -1046
- package/lib/esm/activities/activityt-types.spec.js +0 -16
- package/lib/esm/activities/devices/device.interface.js +0 -1
- package/lib/esm/activities/devices/device.js +0 -26
- package/lib/esm/activities/devices/device.json.interface.js +0 -1
- package/lib/esm/constants/constants.js +0 -8
- package/lib/esm/creators/creator.interface.js +0 -1
- package/lib/esm/creators/creator.js +0 -37
- package/lib/esm/creators/creator.json.interface.js +0 -1
- package/lib/esm/creators/creator.spec.js +0 -25
- package/lib/esm/data/data-active-lap.js +0 -4
- package/lib/esm/data/data-active-lengths.js +0 -4
- package/lib/esm/data/data-aerobic-training-effect.js +0 -8
- package/lib/esm/data/data-anaerobic-training-effect.js +0 -8
- package/lib/esm/data/data-stance-time-balance-left.js +0 -4
- package/lib/esm/data/data-stance-time-balance-right.js +0 -4
- package/lib/esm/data/data-stance-time-balance.js +0 -3
- package/lib/esm/data/data-store.spec.js +0 -78
- package/lib/esm/data/data-total-cycles.js +0 -4
- package/lib/esm/data/data.absolute-pressure.js +0 -5
- package/lib/esm/data/data.accumulated-power.js +0 -8
- package/lib/esm/data/data.activity-types.js +0 -7
- package/lib/esm/data/data.air-power-avg.js +0 -4
- package/lib/esm/data/data.air-power-max.js +0 -4
- package/lib/esm/data/data.air-power-min.js +0 -4
- package/lib/esm/data/data.air-power.js +0 -8
- package/lib/esm/data/data.alti-baro-profile.js +0 -4
- package/lib/esm/data/data.altitude-avg.js +0 -4
- package/lib/esm/data/data.altitude-gps.js +0 -5
- package/lib/esm/data/data.altitude-max.js +0 -4
- package/lib/esm/data/data.altitude-min.js +0 -4
- package/lib/esm/data/data.altitude-smooth.js +0 -4
- package/lib/esm/data/data.altitude.js +0 -8
- package/lib/esm/data/data.array.js +0 -13
- package/lib/esm/data/data.ascent-time.js +0 -4
- package/lib/esm/data/data.ascent.js +0 -4
- package/lib/esm/data/data.auto-lap-distance.js +0 -5
- package/lib/esm/data/data.auto-lap-duration.js +0 -4
- package/lib/esm/data/data.auto-lap-used.js +0 -7
- package/lib/esm/data/data.auto-pause-used.js +0 -7
- package/lib/esm/data/data.avg-stride-length.js +0 -4
- package/lib/esm/data/data.balance.js +0 -6
- package/lib/esm/data/data.bare.js +0 -4
- package/lib/esm/data/data.battery-charge.js +0 -8
- package/lib/esm/data/data.battery-consumption.js +0 -8
- package/lib/esm/data/data.battery-current.js +0 -8
- package/lib/esm/data/data.battery-life-estimation.js +0 -4
- package/lib/esm/data/data.battery-voltage.js +0 -8
- package/lib/esm/data/data.bike-pod-used.js +0 -7
- package/lib/esm/data/data.boolean.js +0 -9
- package/lib/esm/data/data.cadence-avg.js +0 -4
- package/lib/esm/data/data.cadence-max.js +0 -4
- package/lib/esm/data/data.cadence-min.js +0 -4
- package/lib/esm/data/data.cadence.js +0 -8
- package/lib/esm/data/data.cycling-dynamics.js +0 -3
- package/lib/esm/data/data.cycling-position.js +0 -37
- package/lib/esm/data/data.cycling-seated-time.js +0 -5
- package/lib/esm/data/data.cycling-standing-time.js +0 -5
- package/lib/esm/data/data.descent-time.js +0 -4
- package/lib/esm/data/data.descent.js +0 -4
- package/lib/esm/data/data.description.js +0 -4
- package/lib/esm/data/data.device-location.js +0 -4
- package/lib/esm/data/data.device-names.js +0 -7
- package/lib/esm/data/data.distance.js +0 -15
- package/lib/esm/data/data.duration.js +0 -56
- package/lib/esm/data/data.ehpe.js +0 -5
- package/lib/esm/data/data.enabled-navigation-systems.js +0 -4
- package/lib/esm/data/data.end-altitude.js +0 -4
- package/lib/esm/data/data.end-position.js +0 -4
- package/lib/esm/data/data.energy.js +0 -8
- package/lib/esm/data/data.epoc.js +0 -5
- package/lib/esm/data/data.event.js +0 -3
- package/lib/esm/data/data.evpe.js +0 -4
- package/lib/esm/data/data.feeling.js +0 -15
- package/lib/esm/data/data.foot-pod-used.js +0 -7
- package/lib/esm/data/data.form-power.js +0 -4
- package/lib/esm/data/data.fused-altitude.js +0 -7
- package/lib/esm/data/data.fused-location.js +0 -7
- package/lib/esm/data/data.gnss-distance.js +0 -4
- package/lib/esm/data/data.grade-adjusted-pace-avg.js +0 -15
- package/lib/esm/data/data.grade-adjusted-pace-max.js +0 -15
- package/lib/esm/data/data.grade-adjusted-pace-min.js +0 -15
- package/lib/esm/data/data.grade-adjusted-pace.js +0 -25
- package/lib/esm/data/data.grade-adjusted-speed-avg.js +0 -46
- package/lib/esm/data/data.grade-adjusted-speed-max.js +0 -46
- package/lib/esm/data/data.grade-adjusted-speed-min.js +0 -46
- package/lib/esm/data/data.grade-adjusted-speed.js +0 -78
- package/lib/esm/data/data.grade-smooth.js +0 -7
- package/lib/esm/data/data.grade.js +0 -7
- package/lib/esm/data/data.ground-time.js +0 -8
- package/lib/esm/data/data.heart-rate-avg.js +0 -4
- package/lib/esm/data/data.heart-rate-max.js +0 -4
- package/lib/esm/data/data.heart-rate-min.js +0 -4
- package/lib/esm/data/data.heart-rate-used.js +0 -7
- package/lib/esm/data/data.heart-rate-zone-five-duration.js +0 -4
- package/lib/esm/data/data.heart-rate-zone-four-duration.js +0 -4
- package/lib/esm/data/data.heart-rate-zone-one-duration.js +0 -4
- package/lib/esm/data/data.heart-rate-zone-three-duration.js +0 -4
- package/lib/esm/data/data.heart-rate-zone-two-duration.js +0 -4
- package/lib/esm/data/data.heart-rate.js +0 -8
- package/lib/esm/data/data.ibi.js +0 -8
- package/lib/esm/data/data.interface.js +0 -5
- package/lib/esm/data/data.js +0 -62
- package/lib/esm/data/data.json.interface.js +0 -1
- package/lib/esm/data/data.latitude-degrees.js +0 -5
- package/lib/esm/data/data.left-balance.js +0 -4
- package/lib/esm/data/data.leg-stiffness.js +0 -16
- package/lib/esm/data/data.longitude-degrees.js +0 -5
- package/lib/esm/data/data.moving-time.js +0 -4
- package/lib/esm/data/data.number-of-satellites.js +0 -7
- package/lib/esm/data/data.number-of.samples.js +0 -4
- package/lib/esm/data/data.number.js +0 -13
- package/lib/esm/data/data.pace-avg.js +0 -8
- package/lib/esm/data/data.pace-max.js +0 -8
- package/lib/esm/data/data.pace-min.js +0 -8
- package/lib/esm/data/data.pace.js +0 -46
- package/lib/esm/data/data.pause.js +0 -4
- package/lib/esm/data/data.peak-epoc.js +0 -7
- package/lib/esm/data/data.peak-training-effect.js +0 -4
- package/lib/esm/data/data.percent.js +0 -4
- package/lib/esm/data/data.pool-length.js +0 -5
- package/lib/esm/data/data.position.interface.js +0 -1
- package/lib/esm/data/data.position.js +0 -18
- package/lib/esm/data/data.power-avg.js +0 -4
- package/lib/esm/data/data.power-down.js +0 -4
- package/lib/esm/data/data.power-intensity-factor.js +0 -5
- package/lib/esm/data/data.power-left.js +0 -4
- package/lib/esm/data/data.power-max.js +0 -4
- package/lib/esm/data/data.power-min.js +0 -4
- package/lib/esm/data/data.power-normalized.js +0 -4
- package/lib/esm/data/data.power-pedal-smoothness-left.js +0 -4
- package/lib/esm/data/data.power-pedal-smoothness-right.js +0 -4
- package/lib/esm/data/data.power-pod-used.js +0 -7
- package/lib/esm/data/data.power-right.js +0 -4
- package/lib/esm/data/data.power-torque-effectiveness-left.js +0 -4
- package/lib/esm/data/data.power-torque-effectiveness-right.js +0 -4
- package/lib/esm/data/data.power-training-stress-score.js +0 -5
- package/lib/esm/data/data.power-up.js +0 -4
- package/lib/esm/data/data.power-work.js +0 -5
- package/lib/esm/data/data.power-zone-five-duration.js +0 -4
- package/lib/esm/data/data.power-zone-four-duration.js +0 -4
- package/lib/esm/data/data.power-zone-one-duration.js +0 -4
- package/lib/esm/data/data.power-zone-three-duration.js +0 -4
- package/lib/esm/data/data.power-zone-two-duration.js +0 -4
- package/lib/esm/data/data.power.js +0 -8
- package/lib/esm/data/data.recovery-time.js +0 -7
- package/lib/esm/data/data.rider-position-change-event.js +0 -8
- package/lib/esm/data/data.right-balance.js +0 -4
- package/lib/esm/data/data.rpe.js +0 -23
- package/lib/esm/data/data.satellite-5-best-snr.js +0 -4
- package/lib/esm/data/data.sea-level-pressure.js +0 -5
- package/lib/esm/data/data.spec.js +0 -25
- package/lib/esm/data/data.speed-avg.js +0 -46
- package/lib/esm/data/data.speed-max.js +0 -46
- package/lib/esm/data/data.speed-min.js +0 -46
- package/lib/esm/data/data.speed-zone-five-duration.js +0 -4
- package/lib/esm/data/data.speed-zone-four-duration.js +0 -4
- package/lib/esm/data/data.speed-zone-one-duration.js +0 -4
- package/lib/esm/data/data.speed-zone-three-duration.js +0 -4
- package/lib/esm/data/data.speed-zone-two-duration.js +0 -4
- package/lib/esm/data/data.speed.js +0 -88
- package/lib/esm/data/data.sport-profile-name.js +0 -4
- package/lib/esm/data/data.stance-time.js +0 -5
- package/lib/esm/data/data.start-altitude.js +0 -4
- package/lib/esm/data/data.start-event.js +0 -4
- package/lib/esm/data/data.start-position.js +0 -4
- package/lib/esm/data/data.step-length.js +0 -4
- package/lib/esm/data/data.steps-old.js +0 -4
- package/lib/esm/data/data.steps.js +0 -4
- package/lib/esm/data/data.stop-all-event.js +0 -4
- package/lib/esm/data/data.stop-event.js +0 -4
- package/lib/esm/data/data.store.export.spec.js +0 -66
- package/lib/esm/data/data.store.js +0 -1213
- package/lib/esm/data/data.string.js +0 -13
- package/lib/esm/data/data.stryd-altitude.js +0 -4
- package/lib/esm/data/data.stryd-distance.js +0 -4
- package/lib/esm/data/data.stryd-speed.js +0 -4
- package/lib/esm/data/data.swim-pace-avg.js +0 -8
- package/lib/esm/data/data.swim-pace-max.js +0 -8
- package/lib/esm/data/data.swim-pace-min.js +0 -8
- package/lib/esm/data/data.swim-pace.js +0 -19
- package/lib/esm/data/data.swolf-25m.js +0 -4
- package/lib/esm/data/data.swolf-50m.js +0 -4
- package/lib/esm/data/data.target-distance.js +0 -4
- package/lib/esm/data/data.target-heart-rate-zone.js +0 -4
- package/lib/esm/data/data.target-power-zone.js +0 -4
- package/lib/esm/data/data.target-speed-zone.js +0 -4
- package/lib/esm/data/data.target-time.js +0 -4
- package/lib/esm/data/data.temperature-avg.js +0 -4
- package/lib/esm/data/data.temperature-max.js +0 -4
- package/lib/esm/data/data.temperature-min.js +0 -4
- package/lib/esm/data/data.temperature.js +0 -8
- package/lib/esm/data/data.time.js +0 -6
- package/lib/esm/data/data.timer-time.js +0 -4
- package/lib/esm/data/data.vertical-oscillation.js +0 -5
- package/lib/esm/data/data.vertical-ratio.js +0 -5
- package/lib/esm/data/data.vertical-speed-avg.js +0 -53
- package/lib/esm/data/data.vertical-speed-max.js +0 -53
- package/lib/esm/data/data.vertical-speed-min.js +0 -53
- package/lib/esm/data/data.vertical-speed.js +0 -103
- package/lib/esm/data/data.vo2-max.js +0 -7
- package/lib/esm/data/ibi/data.ibi.filters.js +0 -52
- package/lib/esm/data/ibi/data.ibi.js +0 -98
- package/lib/esm/data/ibi/data.ibi.spec.js +0 -66
- package/lib/esm/duration/duration.class.abstract.js +0 -36
- package/lib/esm/duration/duration.class.interface.js +0 -1
- package/lib/esm/errors/duration-exceeded-event-lib.error.js +0 -9
- package/lib/esm/errors/empty-event-sports-libs.error.js +0 -9
- package/lib/esm/errors/event-lib.error.js +0 -8
- package/lib/esm/errors/lib.error.js +0 -6
- package/lib/esm/errors/parsing-event-lib.error.js +0 -9
- package/lib/esm/events/adapters/exporters/exporter.gpx.js +0 -75
- package/lib/esm/events/adapters/exporters/exporter.interface.js +0 -1
- package/lib/esm/events/adapters/exporters/exporter.json.js +0 -20
- package/lib/esm/events/adapters/file-type.enum.js +0 -7
- package/lib/esm/events/adapters/importers/fit/importer.fit.ant-plus.device.names.js +0 -25
- package/lib/esm/events/adapters/importers/fit/importer.fit.coros.device.names.js +0 -5
- package/lib/esm/events/adapters/importers/fit/importer.fit.development.device.names.js +0 -4
- package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.device.names.js +0 -462
- package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.profile.data.js +0 -877
- package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.profile.mapper.js +0 -106
- package/lib/esm/events/adapters/importers/fit/importer.fit.garmin.profile.mapper.spec.js +0 -32
- package/lib/esm/events/adapters/importers/fit/importer.fit.hammerhead.device.names.js +0 -4
- package/lib/esm/events/adapters/importers/fit/importer.fit.integration.spec.js +0 -44
- package/lib/esm/events/adapters/importers/fit/importer.fit.js +0 -978
- package/lib/esm/events/adapters/importers/fit/importer.fit.lezyne.device.names.js +0 -3
- package/lib/esm/events/adapters/importers/fit/importer.fit.magellan.device.names.js +0 -5
- package/lib/esm/events/adapters/importers/fit/importer.fit.mapper.js +0 -231
- package/lib/esm/events/adapters/importers/fit/importer.fit.saris.device.names.js +0 -3
- package/lib/esm/events/adapters/importers/fit/importer.fit.spec.js +0 -326
- package/lib/esm/events/adapters/importers/fit/importer.fit.srm.device.names.js +0 -7
- package/lib/esm/events/adapters/importers/fit/importer.fit.suunto.device.names.js +0 -16
- package/lib/esm/events/adapters/importers/fit/importer.fit.wahoo.device.names.js +0 -10
- package/lib/esm/events/adapters/importers/gpx/gx-parser.js +0 -36
- package/lib/esm/events/adapters/importers/gpx/importer.gpx.integration.spec.js +0 -44
- package/lib/esm/events/adapters/importers/gpx/importer.gpx.js +0 -102
- package/lib/esm/events/adapters/importers/gpx/importer.gpx.mapper.js +0 -142
- package/lib/esm/events/adapters/importers/gpx/importer.gpx.spec.js +0 -71
- package/lib/esm/events/adapters/importers/json/importer.json.js +0 -160
- package/lib/esm/events/adapters/importers/sample-info.interface.js +0 -1
- package/lib/esm/events/adapters/importers/suunto/importer.suunto.activity.ids.js +0 -85
- package/lib/esm/events/adapters/importers/suunto/importer.suunto.device.names.js +0 -26
- package/lib/esm/events/adapters/importers/suunto/importer.suunto.integration.spec.js +0 -44
- package/lib/esm/events/adapters/importers/suunto/importer.suunto.json.js +0 -717
- package/lib/esm/events/adapters/importers/suunto/importer.suunto.sml.js +0 -125
- package/lib/esm/events/adapters/importers/tcx/importer.tcx.integration.spec.js +0 -46
- package/lib/esm/events/adapters/importers/tcx/importer.tcx.js +0 -442
- package/lib/esm/events/adapters/importers/tcx/importer.tcx.mapper.js +0 -91
- package/lib/esm/events/adapters/importers/tcx/utils.tcx.js +0 -36
- package/lib/esm/events/event.interface.js +0 -1
- package/lib/esm/events/event.js +0 -123
- package/lib/esm/events/event.json.interface.js +0 -1
- package/lib/esm/events/event.spec.js +0 -51
- package/lib/esm/events/utilities/activity.utilities.js +0 -1841
- package/lib/esm/events/utilities/activity.utilities.spec.js +0 -373
- package/lib/esm/events/utilities/event.utilities.js +0 -57
- package/lib/esm/events/utilities/grade-calculator/grade-calculator.js +0 -121
- package/lib/esm/events/utilities/grade-calculator/grade-calculator.spec.js +0 -93
- package/lib/esm/events/utilities/grade-calculator/low-pass-filter.js +0 -86
- package/lib/esm/events/utilities/helpers.js +0 -162
- package/lib/esm/geodesy/adapters/adapter.interface.js +0 -1
- package/lib/esm/geodesy/adapters/geolib.adapter.js +0 -28
- package/lib/esm/id/id.abstract.class.js +0 -9
- package/lib/esm/id/id.class.interface.js +0 -1
- package/lib/esm/id/id.class.spec.js +0 -13
- package/lib/esm/intensity-zones/intensity-zones.interface.js +0 -1
- package/lib/esm/intensity-zones/intensity-zones.js +0 -29
- package/lib/esm/intensity-zones/intensity-zones.json.interface.js +0 -1
- package/lib/esm/intensity-zones/intensity-zones.spec.js +0 -30
- package/lib/esm/laps/lap.interface.js +0 -1
- package/lib/esm/laps/lap.js +0 -29
- package/lib/esm/laps/lap.json.interface.js +0 -1
- package/lib/esm/laps/lap.types.js +0 -52
- package/lib/esm/meta-data/event-meta-data.interface.js +0 -6
- package/lib/esm/meta-data/meta-data.js +0 -57
- package/lib/esm/meta-data/meta-data.json.interface.js +0 -1
- package/lib/esm/privacy/privacy.class.interface.js +0 -5
- package/lib/esm/serializable/serializable.class.interface.js +0 -1
- package/lib/esm/service-tokens/oauth1-service-token.interface.js +0 -1
- package/lib/esm/service-tokens/oauth2-service-token.interface.js +0 -1
- package/lib/esm/specs/activities-parsing.integration.spec.js +0 -1847
- package/lib/esm/specs/activity-duration-stream.integration.spec.js +0 -57
- package/lib/esm/specs/fixtures/streams/strava/rides/3171472783.json +0 -52534
- package/lib/esm/specs/fixtures/streams/strava/rides/3171487458.json +0 -78818
- package/lib/esm/specs/fixtures/streams/strava/rides/343080886.json +0 -105090
- package/lib/esm/specs/fixtures/streams/strava/rides/5910143591.json +0 -110711
- package/lib/esm/specs/fixtures/streams/strava/runs/2451375851.json +0 -74846
- package/lib/esm/specs/fixtures/streams/strava/runs/2709634581.json +0 -66817
- package/lib/esm/specs/fixtures/streams/strava/runs/3156040843.json +0 -17594
- package/lib/esm/specs/fixtures/streams/strava/runs/3182900697.json +0 -17322
- package/lib/esm/specs/fixtures/streams/strava/runs/3183465494.json +0 -20463
- package/lib/esm/specs/fixtures/streams/strava/runs/3183490558.json +0 -58202
- package/lib/esm/specs/spec-utils.js +0 -159
- package/lib/esm/specs/strava-streams-compliance.spec.js +0 -951
- package/lib/esm/stats/stats.class.abstract.js +0 -32
- package/lib/esm/stats/stats.class.interface.js +0 -1
- package/lib/esm/stats/stats.json.interface.js +0 -1
- package/lib/esm/streams/compressed.stream.interface.js +0 -12
- package/lib/esm/streams/ibi-stream.js +0 -43
- package/lib/esm/streams/low-pass.stream.filter.js +0 -9
- package/lib/esm/streams/stream.filter.interface.js +0 -1
- package/lib/esm/streams/stream.interface.js +0 -1
- package/lib/esm/streams/stream.js +0 -72
- package/lib/esm/streams/stream.spec.js +0 -168
- package/lib/esm/tiles/tile.settings.interface.js +0 -41
- package/lib/esm/users/settings/dashboard/user.dashboard.settings.interface.js +0 -13
- package/lib/esm/users/settings/user.app.settings.interface.js +0 -5
- package/lib/esm/users/settings/user.chart.settings.interface.js +0 -23
- package/lib/esm/users/settings/user.map.settings.interface.js +0 -22
- package/lib/esm/users/settings/user.my-tracks.settings.interface.js +0 -1
- package/lib/esm/users/settings/user.settings.interface.js +0 -1
- package/lib/esm/users/settings/user.stats-settings.interface.js +0 -1
- package/lib/esm/users/settings/user.summaries.settings.interface.js +0 -1
- package/lib/esm/users/settings/user.unit.settings.interface.js +0 -73
- package/lib/esm/users/user.account.privileges.interface.js +0 -1
- package/lib/esm/users/user.export-to-csv.settings.interface.js +0 -1
- package/lib/esm/users/user.interface.js +0 -1
- package/lib/esm/users/user.js +0 -38
- package/lib/esm/users/user.service.meta.interface.js +0 -1
|
@@ -1,462 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
To update this list:
|
|
3
|
-
- Download fit sdk here: https://developer.garmin.com/fit/download/
|
|
4
|
-
- Extract & go inside folder "c/"
|
|
5
|
-
- Create a new file named "garmin_devices.py" inside folder "c/"
|
|
6
|
-
- Copy paste below python script (code between "START/END SCRIPT") into the "garmin_devices.py" file
|
|
7
|
-
- Run `python "garmin_devices.py"`
|
|
8
|
-
- Retrieve list, then copy/rework it here using git diff.
|
|
9
|
-
|
|
10
|
-
###### START SCRIPT ######
|
|
11
|
-
import re
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def list_garmin_products(header_file):
|
|
15
|
-
black_list = ["AXB0", "HRM", "LEGACY", "VARIA", "VECTOR", "DSI_ALF"]
|
|
16
|
-
replace_words_blank = ["CHN", "JPN", "SEA", "KOR", "EA", "CHINA", "JAPAN", "TAIWAN", "KOREA", "ASIA", "RUSSIA",
|
|
17
|
-
"TWN", "OLED", "THAI", "HEBREW", "SMALL", "LARGE", "OLD", "APAC", "WIN", "MAC", "ANDROID",
|
|
18
|
-
"IOS", "DAIMLER"]
|
|
19
|
-
pre_replace_words_map = {
|
|
20
|
-
"JR": "JUNIOR",
|
|
21
|
-
"FR": "FORERUNNER",
|
|
22
|
-
"D2AIRVENU": "D2 AIR",
|
|
23
|
-
"VENU(\w+)": r"VENU \1",
|
|
24
|
-
"VIRB(\w+)": r"VIRB \1",
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
post_replace_words_map = {
|
|
28
|
-
"Vivo Fit": "VivoFit",
|
|
29
|
-
"Vivo Smart": "VivoSmart",
|
|
30
|
-
"Vivo Active": "VivoActive",
|
|
31
|
-
"Vivoactive": "VivoActive",
|
|
32
|
-
"Vivo Move": "VivoMove",
|
|
33
|
-
"Vivo Sport": "VivoSport",
|
|
34
|
-
"Vivo KI": "VivoKi",
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
garmin_sdk_data = open(header_file, "r").readlines()
|
|
38
|
-
results = dict()
|
|
39
|
-
for line in garmin_sdk_data:
|
|
40
|
-
product_search = re.search("^#define FIT_GARMIN_PRODUCT_(\w*).*\(\(FIT_GARMIN_PRODUCT\)(\d+)\)$", line)
|
|
41
|
-
if product_search:
|
|
42
|
-
name = product_search.groups()[0]
|
|
43
|
-
product_id = product_search.groups()[1]
|
|
44
|
-
|
|
45
|
-
# Don't keep if not matching
|
|
46
|
-
is_matching_black_list = any(ele in name for ele in black_list)
|
|
47
|
-
if not is_matching_black_list:
|
|
48
|
-
# Remove unwanted words in product name
|
|
49
|
-
for word in replace_words_blank:
|
|
50
|
-
name = name.replace(word, "")
|
|
51
|
-
|
|
52
|
-
# Add spaces after product names with version
|
|
53
|
-
name = re.sub(r"([a-zA-Z][a-zA-Z]+)(\d+)", r"\1 \2", name)
|
|
54
|
-
|
|
55
|
-
# Pre-replace words by others when matching
|
|
56
|
-
for src, target in pre_replace_words_map.items():
|
|
57
|
-
name = re.sub(src, target, name)
|
|
58
|
-
|
|
59
|
-
# Cleaning
|
|
60
|
-
name = name.replace("_", " ")
|
|
61
|
-
name = name.replace(" ", " ")
|
|
62
|
-
name = name.strip()
|
|
63
|
-
name = name.lower()
|
|
64
|
-
name_arr = []
|
|
65
|
-
|
|
66
|
-
for word in name.split(" "):
|
|
67
|
-
# First capitalize every words
|
|
68
|
-
word = word.capitalize()
|
|
69
|
-
|
|
70
|
-
# If word start with number then upper case word or size if 2-3 length
|
|
71
|
-
if re.match(r"^[0-9]+.*", word) or re.match(r"^\w{2}$", word):
|
|
72
|
-
word = word.upper()
|
|
73
|
-
|
|
74
|
-
name_arr.append(word)
|
|
75
|
-
|
|
76
|
-
name = " ".join(name_arr)
|
|
77
|
-
|
|
78
|
-
# Post-replace words by others when matching
|
|
79
|
-
for src, target in post_replace_words_map.items():
|
|
80
|
-
name = re.sub(src, target, name)
|
|
81
|
-
|
|
82
|
-
results[product_id] = "{}".format(name)
|
|
83
|
-
return results
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
def main():
|
|
87
|
-
products = list_garmin_products("fit_example.h")
|
|
88
|
-
|
|
89
|
-
for pid, pname in products.items():
|
|
90
|
-
print("{}: '{}',".format(pid, pname))
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
if __name__ == '__main__':
|
|
94
|
-
main()
|
|
95
|
-
|
|
96
|
-
###### END SCRIPT ######
|
|
97
|
-
*/
|
|
98
|
-
export const ImporterFitGarminDeviceNames = {
|
|
99
|
-
473: 'Forerunner 301',
|
|
100
|
-
474: 'Forerunner 301',
|
|
101
|
-
475: 'Forerunner 301',
|
|
102
|
-
494: 'Forerunner 301',
|
|
103
|
-
717: 'Forerunner 405',
|
|
104
|
-
782: 'Forerunner 50',
|
|
105
|
-
987: 'Forerunner 405',
|
|
106
|
-
988: 'Forerunner 60',
|
|
107
|
-
1018: 'Forerunner 310XT',
|
|
108
|
-
1036: 'Edge 500',
|
|
109
|
-
1124: 'Forerunner 110',
|
|
110
|
-
1169: 'Edge 800',
|
|
111
|
-
1199: 'Edge 500',
|
|
112
|
-
1213: 'Edge 500',
|
|
113
|
-
1253: 'Chirp',
|
|
114
|
-
1274: 'Forerunner 110',
|
|
115
|
-
1325: 'Edge 200',
|
|
116
|
-
1328: 'Forerunner 910XT',
|
|
117
|
-
1333: 'Edge 800',
|
|
118
|
-
1334: 'Edge 800',
|
|
119
|
-
1341: 'Alf 04',
|
|
120
|
-
1345: 'Forerunner 610',
|
|
121
|
-
1360: 'Forerunner 210',
|
|
122
|
-
1386: 'Edge 800',
|
|
123
|
-
1387: 'Edge 500',
|
|
124
|
-
1405: 'Approach G10',
|
|
125
|
-
1410: 'Forerunner 610',
|
|
126
|
-
1422: 'Edge 500',
|
|
127
|
-
1436: 'Forerunner 70',
|
|
128
|
-
1446: 'Forerunner 310XT 4T',
|
|
129
|
-
1461: 'Amx',
|
|
130
|
-
1482: 'Forerunner 10',
|
|
131
|
-
1497: 'Edge 800',
|
|
132
|
-
1499: 'Swim',
|
|
133
|
-
1537: 'Forerunner 910XT',
|
|
134
|
-
1551: 'Fenix',
|
|
135
|
-
1555: 'Edge 200',
|
|
136
|
-
1561: 'Edge 510',
|
|
137
|
-
1567: 'Edge 810',
|
|
138
|
-
1570: 'Tempe',
|
|
139
|
-
1600: 'Forerunner 910XT',
|
|
140
|
-
1623: 'Forerunner 620',
|
|
141
|
-
1632: 'Forerunner 220',
|
|
142
|
-
1664: 'Forerunner 910XT',
|
|
143
|
-
1688: 'Forerunner 10',
|
|
144
|
-
1721: 'Edge 810',
|
|
145
|
-
1735: 'Virb Elite',
|
|
146
|
-
1736: 'Edge Touring',
|
|
147
|
-
1742: 'Edge 510',
|
|
148
|
-
1765: 'Forerunner 920XT',
|
|
149
|
-
1821: 'Edge 510',
|
|
150
|
-
1822: 'Edge 810',
|
|
151
|
-
1823: 'Edge 810',
|
|
152
|
-
1836: 'Edge 1000',
|
|
153
|
-
1837: 'VivoFit',
|
|
154
|
-
1853: 'Virb Remote',
|
|
155
|
-
1885: 'VivoKi',
|
|
156
|
-
1903: 'Forerunner 15',
|
|
157
|
-
1907: 'VivoActive',
|
|
158
|
-
1918: 'Edge 510',
|
|
159
|
-
1928: 'Forerunner 620',
|
|
160
|
-
1929: 'Forerunner 620',
|
|
161
|
-
1930: 'Forerunner 220',
|
|
162
|
-
1931: 'Forerunner 220',
|
|
163
|
-
1936: 'Approach S6',
|
|
164
|
-
1956: 'VivoSmart',
|
|
165
|
-
1967: 'Fenix 2',
|
|
166
|
-
1988: 'Epix',
|
|
167
|
-
2050: 'Fenix 3',
|
|
168
|
-
2052: 'Edge 1000',
|
|
169
|
-
2053: 'Edge 1000',
|
|
170
|
-
2061: 'Forerunner 15',
|
|
171
|
-
2067: 'Edge 520',
|
|
172
|
-
2070: 'Edge 1000',
|
|
173
|
-
2072: 'Forerunner 620',
|
|
174
|
-
2073: 'Forerunner 220',
|
|
175
|
-
2100: 'Edge 1000',
|
|
176
|
-
2130: 'Forerunner 920XT',
|
|
177
|
-
2131: 'Forerunner 920XT',
|
|
178
|
-
2132: 'Forerunner 920XT',
|
|
179
|
-
2134: 'Virb X',
|
|
180
|
-
2135: 'VivoSmart',
|
|
181
|
-
2140: 'Etrex Touch',
|
|
182
|
-
2147: 'Edge 25',
|
|
183
|
-
2148: 'Forerunner 25',
|
|
184
|
-
2150: 'VivoFit 2',
|
|
185
|
-
2153: 'Forerunner 225',
|
|
186
|
-
2156: 'Forerunner 630',
|
|
187
|
-
2157: 'Forerunner 230',
|
|
188
|
-
2158: 'Forerunner 735XT',
|
|
189
|
-
2160: 'VivoActive',
|
|
190
|
-
2172: 'Virb XE',
|
|
191
|
-
2173: 'Forerunner 620',
|
|
192
|
-
2174: 'Forerunner 220',
|
|
193
|
-
2175: 'Truswing',
|
|
194
|
-
2187: 'D2 Air',
|
|
195
|
-
2188: 'Fenix 3',
|
|
196
|
-
2189: 'Fenix 3',
|
|
197
|
-
2204: 'Edge Explore 1000',
|
|
198
|
-
2219: 'Forerunner 225',
|
|
199
|
-
2238: 'Edge 20',
|
|
200
|
-
2260: 'Edge 520',
|
|
201
|
-
2261: 'Edge 520',
|
|
202
|
-
2262: 'D2 Bravo',
|
|
203
|
-
2266: 'Approach S20',
|
|
204
|
-
2271: 'VivoSmart 2',
|
|
205
|
-
2274: 'Edge 1000',
|
|
206
|
-
2288: 'Edge 25',
|
|
207
|
-
2289: 'Edge 25',
|
|
208
|
-
2290: 'Edge 20',
|
|
209
|
-
2292: 'Approach X40',
|
|
210
|
-
2293: 'Fenix 3',
|
|
211
|
-
2294: 'VivoSmart EM',
|
|
212
|
-
2310: 'Forerunner 630',
|
|
213
|
-
2311: 'Forerunner 630',
|
|
214
|
-
2313: 'Forerunner 230',
|
|
215
|
-
2332: 'Epix',
|
|
216
|
-
2337: 'VivoActive HR',
|
|
217
|
-
2347: 'VivoSmart Gps HR',
|
|
218
|
-
2348: 'VivoSmart HR',
|
|
219
|
-
2361: 'VivoSmart HR',
|
|
220
|
-
2362: 'VivoSmart Gps HR',
|
|
221
|
-
2368: 'VivoMove',
|
|
222
|
-
2396: 'Forerunner 235',
|
|
223
|
-
2397: 'Forerunner 235',
|
|
224
|
-
2406: 'VivoFit 3',
|
|
225
|
-
2407: 'Fenix 3',
|
|
226
|
-
2408: 'Fenix 3',
|
|
227
|
-
2413: 'Fenix 3 HR',
|
|
228
|
-
2417: 'Virb Ultra 30',
|
|
229
|
-
2429: 'Index Smart Scale',
|
|
230
|
-
2431: 'Forerunner 235',
|
|
231
|
-
2432: 'Fenix 3 Chronos',
|
|
232
|
-
2441: 'Oregon 7XX',
|
|
233
|
-
2444: 'Rino 7XX',
|
|
234
|
-
2457: 'Epix',
|
|
235
|
-
2473: 'Fenix 3 HR',
|
|
236
|
-
2474: 'Fenix 3 HR',
|
|
237
|
-
2475: 'Fenix 3 HR',
|
|
238
|
-
2476: 'Fenix 3 HR',
|
|
239
|
-
2477: 'Fenix 3 HR',
|
|
240
|
-
2496: 'Nautix',
|
|
241
|
-
2497: 'VivoActive HR',
|
|
242
|
-
2503: 'Forerunner 35',
|
|
243
|
-
2512: 'Oregon 7XX WW',
|
|
244
|
-
2530: 'Edge 820',
|
|
245
|
-
2531: 'Edge Explore 820',
|
|
246
|
-
2533: 'Forerunner 735XT',
|
|
247
|
-
2534: 'Forerunner 735XT',
|
|
248
|
-
2544: 'Fenix 5S',
|
|
249
|
-
2547: 'D2 Bravo Titanium',
|
|
250
|
-
2593: 'Running Dynamics Pod',
|
|
251
|
-
2599: 'Edge 820',
|
|
252
|
-
2600: 'Edge 820',
|
|
253
|
-
2604: 'Fenix 5X',
|
|
254
|
-
2606: 'VivoFit Junior',
|
|
255
|
-
2622: 'VivoSmart 3',
|
|
256
|
-
2623: 'VivoSport',
|
|
257
|
-
2628: 'Edge 820',
|
|
258
|
-
2629: 'Edge 820',
|
|
259
|
-
2630: 'Edge 820',
|
|
260
|
-
2650: 'Forerunner 35',
|
|
261
|
-
2656: 'Approach S60',
|
|
262
|
-
2667: 'Forerunner 35',
|
|
263
|
-
2668: 'Forerunner 35',
|
|
264
|
-
2675: 'Fenix 3 Chronos',
|
|
265
|
-
2687: 'Virb 360',
|
|
266
|
-
2691: 'Forerunner 935',
|
|
267
|
-
2697: 'Fenix 5',
|
|
268
|
-
2700: 'VivoActive 3',
|
|
269
|
-
2733: 'Forerunner 235',
|
|
270
|
-
2769: 'Foretrex 601 701',
|
|
271
|
-
2772: 'VivoMove HR',
|
|
272
|
-
2713: 'Edge 1030',
|
|
273
|
-
2727: 'Forerunner 35',
|
|
274
|
-
2796: 'Fenix 5',
|
|
275
|
-
2797: 'Fenix 5S',
|
|
276
|
-
2798: 'Fenix 5X',
|
|
277
|
-
2806: 'Approach Z80',
|
|
278
|
-
2814: 'Forerunner 35',
|
|
279
|
-
2819: 'D2charlie',
|
|
280
|
-
2831: 'VivoSmart 3',
|
|
281
|
-
2832: 'VivoSport',
|
|
282
|
-
2833: 'Forerunner 935',
|
|
283
|
-
2859: 'Descent',
|
|
284
|
-
2878: 'VivoFit 4',
|
|
285
|
-
2886: 'Forerunner 645',
|
|
286
|
-
2888: 'Forerunner 645M',
|
|
287
|
-
2891: 'Forerunner 30',
|
|
288
|
-
2900: 'Fenix 5S Plus',
|
|
289
|
-
2909: 'Edge 130',
|
|
290
|
-
2924: 'Edge 1030',
|
|
291
|
-
2927: 'Vivosmart 4',
|
|
292
|
-
2945: 'VivoMove HR',
|
|
293
|
-
2962: 'Approach X10',
|
|
294
|
-
2977: 'Forerunner 30',
|
|
295
|
-
2988: 'VivoActive 3M W',
|
|
296
|
-
3003: 'Forerunner 645',
|
|
297
|
-
3004: 'Forerunner 645M',
|
|
298
|
-
3011: 'Edge Explore',
|
|
299
|
-
3028: 'Gpsmap 66',
|
|
300
|
-
3049: 'Approach S10',
|
|
301
|
-
3066: 'VivoActive 3M L',
|
|
302
|
-
3077: 'Forerunner 245',
|
|
303
|
-
3085: 'Approach G80',
|
|
304
|
-
3092: 'Edge 130',
|
|
305
|
-
3095: 'Edge 1030 Bontrager',
|
|
306
|
-
3110: 'Fenix 5 Plus',
|
|
307
|
-
3111: 'Fenix 5X Plus',
|
|
308
|
-
3112: 'Edge 520 Plus',
|
|
309
|
-
3113: 'Forerunner 945',
|
|
310
|
-
3121: 'Edge 530',
|
|
311
|
-
3122: 'Edge 830',
|
|
312
|
-
3126: 'Instinct Esports',
|
|
313
|
-
3134: 'Fenix 5S Plus',
|
|
314
|
-
3135: 'Fenix 5X Plus',
|
|
315
|
-
3142: 'Edge 520 Plus',
|
|
316
|
-
3143: 'Descent T1',
|
|
317
|
-
3144: 'Forerunner 235L',
|
|
318
|
-
3145: 'Forerunner 245',
|
|
319
|
-
3163: 'VivoActive 3M',
|
|
320
|
-
3192: 'Speed Sensor 2 ',
|
|
321
|
-
3218: 'VivoSmart 4',
|
|
322
|
-
3224: 'VivoActive 4',
|
|
323
|
-
3225: 'VivoActive 4',
|
|
324
|
-
3226: 'Venu',
|
|
325
|
-
3246: 'Marq Driver',
|
|
326
|
-
3247: 'Marq Aviator',
|
|
327
|
-
3248: 'Marq Captain',
|
|
328
|
-
3249: 'Marq Commander',
|
|
329
|
-
3250: 'Marq Expedition',
|
|
330
|
-
3251: 'Marq Athlete',
|
|
331
|
-
3258: 'Descent MK 2',
|
|
332
|
-
3284: 'Gpsmap 66I',
|
|
333
|
-
3287: 'Fenix 6S Sport',
|
|
334
|
-
3288: 'Fenix 6S',
|
|
335
|
-
3289: 'Fenix 6 Sport',
|
|
336
|
-
3290: 'Fenix 6',
|
|
337
|
-
3291: 'Fenix 6X',
|
|
338
|
-
3308: 'VivoMove 3 Premium',
|
|
339
|
-
3314: 'Approach S40',
|
|
340
|
-
3321: 'Forerunner 245',
|
|
341
|
-
3349: 'Edge 530',
|
|
342
|
-
3350: 'Edge 830',
|
|
343
|
-
3378: 'VivoMove 3',
|
|
344
|
-
3387: 'VivoActive 4',
|
|
345
|
-
3388: 'VivoActive 4',
|
|
346
|
-
3389: 'VivoActive 4',
|
|
347
|
-
3405: 'Swim 2',
|
|
348
|
-
3420: 'Marq Driver',
|
|
349
|
-
3421: 'Marq Aviator',
|
|
350
|
-
3422: 'VivoMove 3',
|
|
351
|
-
3441: 'Forerunner 945',
|
|
352
|
-
3446: 'VivoActive 3T',
|
|
353
|
-
3448: 'Marq Captain',
|
|
354
|
-
3449: 'Marq Commander',
|
|
355
|
-
3450: 'Marq Expedition',
|
|
356
|
-
3451: 'Marq Athlete',
|
|
357
|
-
3466: 'Instinct Solar',
|
|
358
|
-
3469: 'Forerunner 45',
|
|
359
|
-
3473: 'VivoActive 3',
|
|
360
|
-
3512: 'Fenix 6S Sport',
|
|
361
|
-
3513: 'Fenix 6S',
|
|
362
|
-
3514: 'Fenix 6 Sport',
|
|
363
|
-
3515: 'Fenix 6',
|
|
364
|
-
3516: 'Fenix 6X',
|
|
365
|
-
3542: 'Descent MK 2S',
|
|
366
|
-
3558: 'Edge 130 Plus',
|
|
367
|
-
3570: 'Edge 1030 Plus',
|
|
368
|
-
3589: 'Forerunner 745',
|
|
369
|
-
3596: 'Venu SQ',
|
|
370
|
-
3600: 'Venu SQ',
|
|
371
|
-
3615: 'Lily',
|
|
372
|
-
3624: 'Marq Adventurer',
|
|
373
|
-
3638: 'Enduro',
|
|
374
|
-
3639: 'Swim 2',
|
|
375
|
-
3648: 'Marq Adventurer',
|
|
376
|
-
3652: 'Forerunner 945',
|
|
377
|
-
3703: 'Venu 2',
|
|
378
|
-
3704: 'Venu 2S',
|
|
379
|
-
3737: 'Venu',
|
|
380
|
-
3739: 'Marq Golfer',
|
|
381
|
-
3740: 'Venu',
|
|
382
|
-
3794: 'Forerunner 745',
|
|
383
|
-
3809: 'Lily',
|
|
384
|
-
3812: 'Edge 1030 Plus',
|
|
385
|
-
3813: 'Edge 130 Plus',
|
|
386
|
-
3823: 'Approach S12',
|
|
387
|
-
3872: 'Enduro',
|
|
388
|
-
3837: 'Venu SQ',
|
|
389
|
-
3843: 'Edge 1040',
|
|
390
|
-
3850: 'Marq Golfer',
|
|
391
|
-
3851: 'Venu 2 Plus',
|
|
392
|
-
3865: 'Gnss',
|
|
393
|
-
3869: 'Forerunner 55',
|
|
394
|
-
3888: 'Instinct 2',
|
|
395
|
-
3905: 'Fenix 7S',
|
|
396
|
-
3906: 'Fenix 7',
|
|
397
|
-
3907: 'Fenix 7X',
|
|
398
|
-
3908: 'Fenix 7S',
|
|
399
|
-
3909: 'Fenix 7',
|
|
400
|
-
3910: 'Fenix 7X',
|
|
401
|
-
3930: 'Descent MK 2S',
|
|
402
|
-
3934: 'Approach S42',
|
|
403
|
-
3943: 'Epix Gen 2',
|
|
404
|
-
3944: 'Epix Gen 2',
|
|
405
|
-
3949: 'Venu 2S',
|
|
406
|
-
3950: 'Venu 2',
|
|
407
|
-
3978: 'Forerunner 945',
|
|
408
|
-
3986: 'Approach S12',
|
|
409
|
-
3990: 'Forerunner 255 Music',
|
|
410
|
-
3991: 'Forerunner 255 Music',
|
|
411
|
-
3992: 'Forerunner 255',
|
|
412
|
-
3993: 'Forerunner 255',
|
|
413
|
-
4002: 'Approach S42',
|
|
414
|
-
4005: 'Descent G1',
|
|
415
|
-
4017: 'Venu 2 Plus',
|
|
416
|
-
4024: 'Forerunner 955',
|
|
417
|
-
4033: 'Forerunner 55',
|
|
418
|
-
4061: 'Edge 540',
|
|
419
|
-
4062: 'Edge 840',
|
|
420
|
-
4063: 'Vivosmart 5',
|
|
421
|
-
4071: 'Instinct 2',
|
|
422
|
-
4115: 'Venu SQ 2',
|
|
423
|
-
4116: 'Venu SQ 2MUSIC',
|
|
424
|
-
4124: 'Marq Gen 2 Aviator',
|
|
425
|
-
4125: 'D2 Air X10',
|
|
426
|
-
4132: 'Descent G1',
|
|
427
|
-
4135: 'Tactix 7',
|
|
428
|
-
4155: 'Instinct Crossover',
|
|
429
|
-
4169: 'Edge Explore 2',
|
|
430
|
-
4222: 'Descent MK 3',
|
|
431
|
-
4223: 'Descent MK 3I',
|
|
432
|
-
4233: 'Approach S70',
|
|
433
|
-
4257: 'Forerunner 265',
|
|
434
|
-
4258: 'Forerunner 265',
|
|
435
|
-
4260: 'Venu 3',
|
|
436
|
-
4261: 'Venu 3S',
|
|
437
|
-
4305: 'Edge 1040',
|
|
438
|
-
4312: 'Epix Gen 2 Pro 42',
|
|
439
|
-
4313: 'Epix Gen 2 Pro 47',
|
|
440
|
-
4314: 'Epix Gen 2 Pro 51',
|
|
441
|
-
4315: 'Forerunner 965',
|
|
442
|
-
4341: 'Enduro 2',
|
|
443
|
-
4374: 'Fenix 7S Pro Solar',
|
|
444
|
-
4375: 'Fenix 7 Pro Solar',
|
|
445
|
-
4376: 'Fenix 7X Pro Solar',
|
|
446
|
-
4380: 'Lily 2',
|
|
447
|
-
4394: 'Instinct 2X',
|
|
448
|
-
4426: 'VivoActive 5',
|
|
449
|
-
4442: 'Descent T2',
|
|
450
|
-
4472: 'Marq Gen 2 Commander',
|
|
451
|
-
4556: 'D2 H1 Pro',
|
|
452
|
-
10014: 'Edge Remote',
|
|
453
|
-
20533: 'Tacx Training App',
|
|
454
|
-
20534: 'Tacx Training App',
|
|
455
|
-
20565: 'Tacx Training App Catalyst',
|
|
456
|
-
20119: 'Training Center',
|
|
457
|
-
30045: 'Tacx Training App',
|
|
458
|
-
30046: 'Tacx Training App',
|
|
459
|
-
65531: 'Connectiq Simulator',
|
|
460
|
-
65532: 'Antplus Plugin',
|
|
461
|
-
65534: 'Connect'
|
|
462
|
-
};
|