diff --git a/README.md b/README.md index bf72e43..b1e6332 100644 --- a/README.md +++ b/README.md @@ -288,6 +288,28 @@ Calculate the vertical speed in meter/min or feet/min depending on the watch set ## Release Notes +### Version 1.31 + - Added support for new watches (Epix Gen 2, Fenix 7, Fenix 7s, Fenix 7x, Venu 2 Plus) + +| Memory Usage on va3 (28.6 KB) | Current | Peak | +| --------------------------------- |:-------:|:-------:| +| At startup | 25.5 kB | 27.1 kB | +| 10 sec running | 25.5 kB | 27.5 kB | +| After setting change | 25.5 kB | 28.4 kB | + +| Memory Usage on fenix5 (28.6 KB) | Current | Peak | +| --------------------------------- |:-------:|:-------:| +| At startup | 25.4 kB | 27.4 kB | +| 10 sec running | 25.4 kB | 27.7 kB | +| After setting change | 25.4 kB | 28.4 kB | + + +| Memory Usage on fr945 (124.6 KB) | Current | Peak | +| --------------------------------- |:-------:|:-------:| +| At startup | 30.5 kB | 32.6 kB | +| 10 sec running | 30.5 kB | 33.0 kB | +| After setting change | 30.5 kB | 33.7 kB | + ### Version 1.30 - Added Lap Average Heart Rate on high memory devices diff --git a/manifest.xml b/manifest.xml index cdc65aa..d88e90e 100644 --- a/manifest.xml +++ b/manifest.xml @@ -21,6 +21,7 @@ + @@ -32,6 +33,9 @@ + + + @@ -58,6 +62,7 @@ + diff --git a/monkey.jungle b/monkey.jungle index 37ce6e5..49201e3 100644 --- a/monkey.jungle +++ b/monkey.jungle @@ -6,8 +6,13 @@ project.manifest = manifest.xml base.sourcePath = source # High Memory (252.6 KB) +epix2.sourcePath = source;source-highmem;source-highmem-epix2 +fenix7.sourcePath = source;source-highmem;source-highmem-fenix7 +fenix7s.sourcePath = source;source-highmem;source-highmem-fenix7s +fenix7x.sourcePath = source;source-highmem;source-highmem-fenix7 venu2.sourcePath = source;source-lowmem-venu venu2s.sourcePath = source;source-lowmem-venu +venu2plus.sourcePath = source;source-highmem;source-highmem-venu2 # High Memory (124.7 KB) approachs62.sourcePath = source;source-highmem;source-highmem-approachs62 @@ -84,6 +89,13 @@ vivoactive4s.sourcePath = source;source-lowmem-vivoactive4s ####################################################### base.resourcePath = resources +# High Memory (252.6 KB) with "Power" and "Training Effect" support +epix2.resourcePath = resources;resources-highmem;resources-highmem-power-te +fenix7.resourcePath = resources;resources-highmem;resources-highmem-power-te +fenix7s.resourcePath = resources;resources-highmem;resources-highmem-power-te +fenix7x.resourcePath = resources;resources-highmem;resources-highmem-power-te +venu2plus.resourcePath = resources;resources-highmem;resources-highmem-power-te + # High Memory (124.7 KB) with no specific feature approachs62.resourcePath = resources;resources-highmem;resources-highmem-basic edgeexplore.resourcePath = resources;resources-highmem;resources-highmem-basic diff --git a/resources/settings/properties.xml b/resources/settings/properties.xml index 8bc26fd..fe3364e 100644 --- a/resources/settings/properties.xml +++ b/resources/settings/properties.xml @@ -1,5 +1,5 @@ - 1.30 + 1.31 30 false 0 diff --git a/source-highmem-epix2/GRunApp.mc b/source-highmem-epix2/GRunApp.mc new file mode 100644 index 0000000..648619e --- /dev/null +++ b/source-highmem-epix2/GRunApp.mc @@ -0,0 +1,56 @@ +using Toybox.Application; +using Toybox.Graphics; + + +class GRunApp extends Application.AppBase +{ + protected var gRunView; + + function initialize() + { + //System.println("Garmin Epix Gen 2 (High Memory)"); + AppBase.initialize(); + gRunView = new GRunViewHighMem(); + } + + + public static function getTextDimensions(dc, value, font) + { + var textDimensions = dc.getTextDimensions(value, font); + + var yFactor = 1.65; + if (font > 5) { yFactor = 1.75; } + if (font < 2) { yFactor = 1.4; } + textDimensions[1] = textDimensions[1] - (yFactor * dc.getFontDescent(font)); + + return textDimensions; + } + + + public static function getYOffset(font) + { + var yOffset = -2; + if (font >= 8) { yOffset = 2; } + else if (font >= 7) { yOffset = 1; } + else if (font >= 6) { yOffset = -1; } + else if (font >= 5) { yOffset = 0; } + else if (font >= 4) { yOffset = -3; } + else if (font == 2) { yOffset = -3; } + else if (font == 1) { yOffset = -1; } + + return yOffset; + } + + + function onSettingsChanged() + { + AppBase.onSettingsChanged(); + gRunView.initializeUserData(); + } + + + function getInitialView() + { + return [ gRunView ]; + } +} \ No newline at end of file diff --git a/source-highmem-fenix7/GRunApp.mc b/source-highmem-fenix7/GRunApp.mc new file mode 100644 index 0000000..92dd0ac --- /dev/null +++ b/source-highmem-fenix7/GRunApp.mc @@ -0,0 +1,55 @@ +using Toybox.Application; +using Toybox.Graphics; + + +class GRunApp extends Application.AppBase +{ + protected var gRunView; + + function initialize() + { + //System.println("Garmin Fenix 7/7x (High Memory)"); + AppBase.initialize(); + gRunView = new GRunViewHighMem(); + } + + + public static function getTextDimensions(dc, value, font) + { + var textDimensions = dc.getTextDimensions(value, font); + + if (font <= 4) { textDimensions[0] += 1; } + + var yFactor = 1.65; + if (font < 5) { yFactor = 1.4; } + textDimensions[1] = textDimensions[1] - (yFactor * dc.getFontDescent(font)); + + return textDimensions; + } + + + public static function getYOffset(font) + { + var yOffset = -1; + if (font >= 8) { yOffset = 1; } + else if (font >= 6) { yOffset = 0; } + else if (font >= 4) { yOffset = -1; } + else if (font >= 3) { yOffset = -2; } + else if (font <= 1) { yOffset = -2; } + + return yOffset; + } + + + function onSettingsChanged() + { + AppBase.onSettingsChanged(); + gRunView.initializeUserData(); + } + + + function getInitialView() + { + return [ gRunView ]; + } +} \ No newline at end of file diff --git a/source-highmem-fenix7s/GRunApp.mc b/source-highmem-fenix7s/GRunApp.mc new file mode 100644 index 0000000..ffb3ba7 --- /dev/null +++ b/source-highmem-fenix7s/GRunApp.mc @@ -0,0 +1,54 @@ +using Toybox.Application; +using Toybox.Graphics; + + +class GRunApp extends Application.AppBase +{ + protected var gRunView; + + function initialize() + { + //System.println("Garmin Fenix 7s (High Memory)"); + AppBase.initialize(); + gRunView = new GRunViewHighMem(); + } + + + public static function getTextDimensions(dc, value, font) + { + var textDimensions = dc.getTextDimensions(value, font); + + if (font <= 4) { textDimensions[0] += 1; } + + var yFactor = 1.65; + if (font == 5) { yFactor = 1.5; } + else if (font < 5) { yFactor = 1.35; } + textDimensions[1] = textDimensions[1] - (yFactor * dc.getFontDescent(font)); + + return textDimensions; + } + + + public static function getYOffset(font) + { + var yOffset = 0; + if (font == 7) { yOffset = 1; } + else if (font <= 2) { yOffset = -2; } + else if (font <= 4) { yOffset = -1; } + + return yOffset; + } + + + function onSettingsChanged() + { + AppBase.onSettingsChanged(); + gRunView.initializeUserData(); + } + + + function getInitialView() + { + return [ gRunView ]; + } +} \ No newline at end of file diff --git a/source-highmem-venu2/GRunApp.mc b/source-highmem-venu2/GRunApp.mc new file mode 100644 index 0000000..b4d9a31 --- /dev/null +++ b/source-highmem-venu2/GRunApp.mc @@ -0,0 +1,55 @@ +using Toybox.Application; +using Toybox.Graphics; + + +class GRunApp extends Application.AppBase +{ + protected var gRunView; + + function initialize() + { + //System.println("Garmin Venu2 (High Memory)"); + AppBase.initialize(); + gRunView = new GRunViewHighMem(); + } + + + public static function getTextDimensions(dc, value, font) + { + var textDimensions = dc.getTextDimensions(value, font); + + if (font <= 4) { textDimensions[0] += 1; } + + var yFactor = 1.7; + if (font == 6) { yFactor = 1.6; } + else if (font == 5) { yFactor = 1.6; } + else if (font < 5) { yFactor = 1.55; } + textDimensions[1] = textDimensions[1] - (yFactor * dc.getFontDescent(font)); + + return textDimensions; + } + + + public static function getYOffset(font) + { + var yOffset = -2; + if (font >= 7) { yOffset = 1; } + if (font == 6) { yOffset = -1; } + if (font == 5) { yOffset = 0; } + + return yOffset; + } + + + function onSettingsChanged() + { + AppBase.onSettingsChanged(); + gRunView.initializeUserData(); + } + + + function getInitialView() + { + return [ gRunView ]; + } +} \ No newline at end of file