UNPKG

@sports-alliance/sports-lib

Version:

A Library to for importing / exporting and processing GPX, TCX, FIT and JSON files from services such as Strava, Movescount, Garmin, Polar etc

466 lines (444 loc) 12.8 kB
"use strict"; /* To update this list: - Download fit sdk here: https://developer.garmin.com/fit/download/ - Extract & go inside folder "c/" - Create a new file named "garmin_devices.py" inside folder "c/" - Copy paste below python script (code between "START/END SCRIPT") into the "garmin_devices.py" file - Run `python "garmin_devices.py"` - Retrieve list, then copy/rework it here using git diff. ###### START SCRIPT ###### import re def list_garmin_products(header_file): black_list = ["AXB0", "HRM", "LEGACY", "VARIA", "VECTOR", "DSI_ALF"] replace_words_blank = ["CHN", "JPN", "SEA", "KOR", "EA", "CHINA", "JAPAN", "TAIWAN", "KOREA", "ASIA", "RUSSIA", "TWN", "OLED", "THAI", "HEBREW", "SMALL", "LARGE", "OLD", "APAC", "WIN", "MAC", "ANDROID", "IOS", "DAIMLER"] pre_replace_words_map = { "JR": "JUNIOR", "FR": "FORERUNNER", "D2AIRVENU": "D2 AIR", "VENU(\w+)": r"VENU \1", "VIRB(\w+)": r"VIRB \1", } post_replace_words_map = { "Vivo Fit": "VivoFit", "Vivo Smart": "VivoSmart", "Vivo Active": "VivoActive", "Vivoactive": "VivoActive", "Vivo Move": "VivoMove", "Vivo Sport": "VivoSport", "Vivo KI": "VivoKi", } garmin_sdk_data = open(header_file, "r").readlines() results = dict() for line in garmin_sdk_data: product_search = re.search("^#define FIT_GARMIN_PRODUCT_(\w*).*\(\(FIT_GARMIN_PRODUCT\)(\d+)\)$", line) if product_search: name = product_search.groups()[0] product_id = product_search.groups()[1] # Don't keep if not matching is_matching_black_list = any(ele in name for ele in black_list) if not is_matching_black_list: # Remove unwanted words in product name for word in replace_words_blank: name = name.replace(word, "") # Add spaces after product names with version name = re.sub(r"([a-zA-Z][a-zA-Z]+)(\d+)", r"\1 \2", name) # Pre-replace words by others when matching for src, target in pre_replace_words_map.items(): name = re.sub(src, target, name) # Cleaning name = name.replace("_", " ") name = name.replace(" ", " ") name = name.strip() name = name.lower() name_arr = [] for word in name.split(" "): # First capitalize every words word = word.capitalize() # If word start with number then upper case word or size if 2-3 length if re.match(r"^[0-9]+.*", word) or re.match(r"^\w{2}$", word): word = word.upper() name_arr.append(word) name = " ".join(name_arr) # Post-replace words by others when matching for src, target in post_replace_words_map.items(): name = re.sub(src, target, name) results[product_id] = "{}".format(name) return results def main(): products = list_garmin_products("fit_example.h") for pid, pname in products.items(): print("{}: '{}',".format(pid, pname)) if __name__ == '__main__': main() ###### END SCRIPT ###### */ Object.defineProperty(exports, "__esModule", { value: true }); exports.ImporterFitGarminDeviceNames = void 0; exports.ImporterFitGarminDeviceNames = { 473: 'Forerunner 301', 474: 'Forerunner 301', 475: 'Forerunner 301', 494: 'Forerunner 301', 717: 'Forerunner 405', 782: 'Forerunner 50', 987: 'Forerunner 405', 988: 'Forerunner 60', 1018: 'Forerunner 310XT', 1036: 'Edge 500', 1124: 'Forerunner 110', 1169: 'Edge 800', 1199: 'Edge 500', 1213: 'Edge 500', 1253: 'Chirp', 1274: 'Forerunner 110', 1325: 'Edge 200', 1328: 'Forerunner 910XT', 1333: 'Edge 800', 1334: 'Edge 800', 1341: 'Alf 04', 1345: 'Forerunner 610', 1360: 'Forerunner 210', 1386: 'Edge 800', 1387: 'Edge 500', 1405: 'Approach G10', 1410: 'Forerunner 610', 1422: 'Edge 500', 1436: 'Forerunner 70', 1446: 'Forerunner 310XT 4T', 1461: 'Amx', 1482: 'Forerunner 10', 1497: 'Edge 800', 1499: 'Swim', 1537: 'Forerunner 910XT', 1551: 'Fenix', 1555: 'Edge 200', 1561: 'Edge 510', 1567: 'Edge 810', 1570: 'Tempe', 1600: 'Forerunner 910XT', 1623: 'Forerunner 620', 1632: 'Forerunner 220', 1664: 'Forerunner 910XT', 1688: 'Forerunner 10', 1721: 'Edge 810', 1735: 'Virb Elite', 1736: 'Edge Touring', 1742: 'Edge 510', 1765: 'Forerunner 920XT', 1821: 'Edge 510', 1822: 'Edge 810', 1823: 'Edge 810', 1836: 'Edge 1000', 1837: 'VivoFit', 1853: 'Virb Remote', 1885: 'VivoKi', 1903: 'Forerunner 15', 1907: 'VivoActive', 1918: 'Edge 510', 1928: 'Forerunner 620', 1929: 'Forerunner 620', 1930: 'Forerunner 220', 1931: 'Forerunner 220', 1936: 'Approach S6', 1956: 'VivoSmart', 1967: 'Fenix 2', 1988: 'Epix', 2050: 'Fenix 3', 2052: 'Edge 1000', 2053: 'Edge 1000', 2061: 'Forerunner 15', 2067: 'Edge 520', 2070: 'Edge 1000', 2072: 'Forerunner 620', 2073: 'Forerunner 220', 2100: 'Edge 1000', 2130: 'Forerunner 920XT', 2131: 'Forerunner 920XT', 2132: 'Forerunner 920XT', 2134: 'Virb X', 2135: 'VivoSmart', 2140: 'Etrex Touch', 2147: 'Edge 25', 2148: 'Forerunner 25', 2150: 'VivoFit 2', 2153: 'Forerunner 225', 2156: 'Forerunner 630', 2157: 'Forerunner 230', 2158: 'Forerunner 735XT', 2160: 'VivoActive', 2172: 'Virb XE', 2173: 'Forerunner 620', 2174: 'Forerunner 220', 2175: 'Truswing', 2187: 'D2 Air', 2188: 'Fenix 3', 2189: 'Fenix 3', 2204: 'Edge Explore 1000', 2219: 'Forerunner 225', 2238: 'Edge 20', 2260: 'Edge 520', 2261: 'Edge 520', 2262: 'D2 Bravo', 2266: 'Approach S20', 2271: 'VivoSmart 2', 2274: 'Edge 1000', 2288: 'Edge 25', 2289: 'Edge 25', 2290: 'Edge 20', 2292: 'Approach X40', 2293: 'Fenix 3', 2294: 'VivoSmart EM', 2310: 'Forerunner 630', 2311: 'Forerunner 630', 2313: 'Forerunner 230', 2332: 'Epix', 2337: 'VivoActive HR', 2347: 'VivoSmart Gps HR', 2348: 'VivoSmart HR', 2361: 'VivoSmart HR', 2362: 'VivoSmart Gps HR', 2368: 'VivoMove', 2396: 'Forerunner 235', 2397: 'Forerunner 235', 2406: 'VivoFit 3', 2407: 'Fenix 3', 2408: 'Fenix 3', 2413: 'Fenix 3 HR', 2417: 'Virb Ultra 30', 2429: 'Index Smart Scale', 2431: 'Forerunner 235', 2432: 'Fenix 3 Chronos', 2441: 'Oregon 7XX', 2444: 'Rino 7XX', 2457: 'Epix', 2473: 'Fenix 3 HR', 2474: 'Fenix 3 HR', 2475: 'Fenix 3 HR', 2476: 'Fenix 3 HR', 2477: 'Fenix 3 HR', 2496: 'Nautix', 2497: 'VivoActive HR', 2503: 'Forerunner 35', 2512: 'Oregon 7XX WW', 2530: 'Edge 820', 2531: 'Edge Explore 820', 2533: 'Forerunner 735XT', 2534: 'Forerunner 735XT', 2544: 'Fenix 5S', 2547: 'D2 Bravo Titanium', 2593: 'Running Dynamics Pod', 2599: 'Edge 820', 2600: 'Edge 820', 2604: 'Fenix 5X', 2606: 'VivoFit Junior', 2622: 'VivoSmart 3', 2623: 'VivoSport', 2628: 'Edge 820', 2629: 'Edge 820', 2630: 'Edge 820', 2650: 'Forerunner 35', 2656: 'Approach S60', 2667: 'Forerunner 35', 2668: 'Forerunner 35', 2675: 'Fenix 3 Chronos', 2687: 'Virb 360', 2691: 'Forerunner 935', 2697: 'Fenix 5', 2700: 'VivoActive 3', 2733: 'Forerunner 235', 2769: 'Foretrex 601 701', 2772: 'VivoMove HR', 2713: 'Edge 1030', 2727: 'Forerunner 35', 2796: 'Fenix 5', 2797: 'Fenix 5S', 2798: 'Fenix 5X', 2806: 'Approach Z80', 2814: 'Forerunner 35', 2819: 'D2charlie', 2831: 'VivoSmart 3', 2832: 'VivoSport', 2833: 'Forerunner 935', 2859: 'Descent', 2878: 'VivoFit 4', 2886: 'Forerunner 645', 2888: 'Forerunner 645M', 2891: 'Forerunner 30', 2900: 'Fenix 5S Plus', 2909: 'Edge 130', 2924: 'Edge 1030', 2927: 'Vivosmart 4', 2945: 'VivoMove HR', 2962: 'Approach X10', 2977: 'Forerunner 30', 2988: 'VivoActive 3M W', 3003: 'Forerunner 645', 3004: 'Forerunner 645M', 3011: 'Edge Explore', 3028: 'Gpsmap 66', 3049: 'Approach S10', 3066: 'VivoActive 3M L', 3077: 'Forerunner 245', 3085: 'Approach G80', 3092: 'Edge 130', 3095: 'Edge 1030 Bontrager', 3110: 'Fenix 5 Plus', 3111: 'Fenix 5X Plus', 3112: 'Edge 520 Plus', 3113: 'Forerunner 945', 3121: 'Edge 530', 3122: 'Edge 830', 3126: 'Instinct Esports', 3134: 'Fenix 5S Plus', 3135: 'Fenix 5X Plus', 3142: 'Edge 520 Plus', 3143: 'Descent T1', 3144: 'Forerunner 235L', 3145: 'Forerunner 245', 3163: 'VivoActive 3M', 3192: 'Speed Sensor 2 ', 3218: 'VivoSmart 4', 3224: 'VivoActive 4', 3225: 'VivoActive 4', 3226: 'Venu', 3246: 'Marq Driver', 3247: 'Marq Aviator', 3248: 'Marq Captain', 3249: 'Marq Commander', 3250: 'Marq Expedition', 3251: 'Marq Athlete', 3258: 'Descent MK 2', 3284: 'Gpsmap 66I', 3287: 'Fenix 6S Sport', 3288: 'Fenix 6S', 3289: 'Fenix 6 Sport', 3290: 'Fenix 6', 3291: 'Fenix 6X', 3308: 'VivoMove 3 Premium', 3314: 'Approach S40', 3321: 'Forerunner 245', 3349: 'Edge 530', 3350: 'Edge 830', 3378: 'VivoMove 3', 3387: 'VivoActive 4', 3388: 'VivoActive 4', 3389: 'VivoActive 4', 3405: 'Swim 2', 3420: 'Marq Driver', 3421: 'Marq Aviator', 3422: 'VivoMove 3', 3441: 'Forerunner 945', 3446: 'VivoActive 3T', 3448: 'Marq Captain', 3449: 'Marq Commander', 3450: 'Marq Expedition', 3451: 'Marq Athlete', 3466: 'Instinct Solar', 3469: 'Forerunner 45', 3473: 'VivoActive 3', 3512: 'Fenix 6S Sport', 3513: 'Fenix 6S', 3514: 'Fenix 6 Sport', 3515: 'Fenix 6', 3516: 'Fenix 6X', 3542: 'Descent MK 2S', 3558: 'Edge 130 Plus', 3570: 'Edge 1030 Plus', 3589: 'Forerunner 745', 3596: 'Venu SQ', 3600: 'Venu SQ', 3615: 'Lily', 3624: 'Marq Adventurer', 3638: 'Enduro', 3639: 'Swim 2', 3648: 'Marq Adventurer', 3652: 'Forerunner 945', 3703: 'Venu 2', 3704: 'Venu 2S', 3737: 'Venu', 3739: 'Marq Golfer', 3740: 'Venu', 3794: 'Forerunner 745', 3809: 'Lily', 3812: 'Edge 1030 Plus', 3813: 'Edge 130 Plus', 3823: 'Approach S12', 3872: 'Enduro', 3837: 'Venu SQ', 3843: 'Edge 1040', 3850: 'Marq Golfer', 3851: 'Venu 2 Plus', 3865: 'Gnss', 3869: 'Forerunner 55', 3888: 'Instinct 2', 3905: 'Fenix 7S', 3906: 'Fenix 7', 3907: 'Fenix 7X', 3908: 'Fenix 7S', 3909: 'Fenix 7', 3910: 'Fenix 7X', 3930: 'Descent MK 2S', 3934: 'Approach S42', 3943: 'Epix Gen 2', 3944: 'Epix Gen 2', 3949: 'Venu 2S', 3950: 'Venu 2', 3978: 'Forerunner 945', 3986: 'Approach S12', 3990: 'Forerunner 255 Music', 3991: 'Forerunner 255 Music', 3992: 'Forerunner 255', 3993: 'Forerunner 255', 4002: 'Approach S42', 4005: 'Descent G1', 4017: 'Venu 2 Plus', 4024: 'Forerunner 955', 4033: 'Forerunner 55', 4061: 'Edge 540', 4062: 'Edge 840', 4063: 'Vivosmart 5', 4071: 'Instinct 2', 4115: 'Venu SQ 2', 4116: 'Venu SQ 2MUSIC', 4124: 'Marq Gen 2 Aviator', 4125: 'D2 Air X10', 4132: 'Descent G1', 4135: 'Tactix 7', 4155: 'Instinct Crossover', 4169: 'Edge Explore 2', 4222: 'Descent MK 3', 4223: 'Descent MK 3I', 4233: 'Approach S70', 4257: 'Forerunner 265', 4258: 'Forerunner 265', 4260: 'Venu 3', 4261: 'Venu 3S', 4305: 'Edge 1040', 4312: 'Epix Gen 2 Pro 42', 4313: 'Epix Gen 2 Pro 47', 4314: 'Epix Gen 2 Pro 51', 4315: 'Forerunner 965', 4341: 'Enduro 2', 4374: 'Fenix 7S Pro Solar', 4375: 'Fenix 7 Pro Solar', 4376: 'Fenix 7X Pro Solar', 4380: 'Lily 2', 4394: 'Instinct 2X', 4426: 'VivoActive 5', 4442: 'Descent T2', 4472: 'Marq Gen 2 Commander', 4556: 'D2 H1 Pro', 10014: 'Edge Remote', 20533: 'Tacx Training App', 20534: 'Tacx Training App', 20565: 'Tacx Training App Catalyst', 20119: 'Training Center', 30045: 'Tacx Training App', 30046: 'Tacx Training App', 65531: 'Connectiq Simulator', 65532: 'Antplus Plugin', 65534: 'Connect' };