HMs DIY #1-6

Store Link

Because I want to keep this datafield and the app free for use I would be very grateful about a small donation to PayPal

A detailed description of how to use it can be found here: 

HMs_DIY_GUIDANCE.pdf
HMs_DIY_ANLEITUNG.pdf

Thanks very much to mcinner1 for putting so much time into this documentation!

Designer download

You can contribute on my github page.
You can upload your layout so others can use it as well.
Also any changes to the fonts.txt can be updated there as well.

Garmin_HMsDIY

=======================================================================
RELEASE NOTES
=======================================================================
-----------------------------------------------------------------------
3.5.1
* switched to new SDK 4.2.4
* added devices: FR265, FR265S, FR965, GPSMAP 67/67i, Marq (Gen 2), Marq (Gen 2) Aviator, EDGE 540, EDGE 840, Instinct 2x Solar
* added two new font types GLANCE, GLANCENR (only available if device supports it!)
-----------------------------------------------------------------------
3.4.2
* switched to new SDK 4.1.5
* added devices: Edge Explore 2, Venu Sq 2, Venu Sq 2 Music Edition
-----------------------------------------------------------------------
3.4.1
* switched to new SDK 4.1.3
* added devices: Instinct 2S / Solar / Dual Power, D2 Air X10, D2 Mach 1, Descent G1 / G1 Solar,
Edge 1040 / 1040 Solar, Forerunner 255, Forerunner 255 Music, Forerunner 255s, Forerunner 255s Music, Forerunner 955 / Solar, Instinct 2 / Solar / Dual Power / dezl Edition
* fixed crash when windspeed was not available from device
-----------------------------------------------------------------------
3.3.1
* switched to new SDK 4.0.9
* added devices: D2 Air, Descent MK2/MK2i, Descent Mk2S, Enduro, epix Gen2, Fenix 7, Fenix 7S, Fenix 7X, Forerunner 55, Forerunner 945 LTE, Venu2, Venu2 Plus,
Venus 2S, Venu Sq, Venu Sq Music,

for full releasenotes see: releasenotes.txt
=======================================================================

 

  • But you are cutting the value short by allowing a max of 9:59 for mins per k or 19:59 for mins per mile.

    I am suggesting not to cut the values short and let the user decide.

  • Example:
    1 minute is shown as "01" instead of "00:01". 59 minutes are shown as "59" instead of "00:59"

    I use the formatstring (text) for timer: $H:$M:$C
    That means: no hours are shown under 1 hour, no seconds are shown beyond 1 hour - but always format: 00:00.
    Then you'll get for 0 hours, 0 minutes and 20 seconds: 00:20
    for 59 minutes and 10 seconds: 59:10
    for 1 hour and 13 minutes: 01:13 

    For ETA I also use $H:$M:$C - then it shows 00:00 (see above).
    For clock I have $H:$M - which is ok, because clock always has a hour-value.
    (Ok, maybe not between midnight and 1 o'clock - but then I sleep...)

    And just for your interest: there is one more time-format-string option: small characters h and m.
    $h:$M cuts off the leading zero of hours - if there is one.

  • I would appreciate any testing, because I did some substantial rework to get some more memory.

    regards

    Erich

    If colors in Dynamic Colors are changed or defined by pasting the RGB-string the little color field is not updated. If one uses the button, then it's ok!

    If you leave the Color-Element after pasting the color string and return - so that the element is loaded anew - it's ok, too!

  • Ok, thanks for the info. Will take a look at it....

    regards

    Erich

  • Hi Erich,

    I just mad a run with 2.3.1 and it went very well! My FR935 got about 1200 bytes more free memory than before - it was about 2400 at the start and didn't get lower than 1300 during the run (it was like 1200/200 at 2.3.0).

    Keep up the good work and thank you!

    Evgeny

  • New version 2.3.2 available on clone #4.

    2.3.2
    * fixed a bug in the designer where color rectangles were not updated when value changed in editfield.
    * corrected time format when no seconds are used ($H:$M)
    * memory, memory, memory. Everytime I take a look in the code I find some parts I can optimize to save memory and performance

    -----------------------------------------------------------------------

    This time I am interested in performance. I did some optimizations to get better performance, but I removed one part to save a good amount of memory but with the cost of some performance. I hope it has not much impact.

    Please notify me, if performance is bad!

    regards

    Erich

  • Great job, time format is correct and dynamic colors are "back" now! Thanks a lot!

  • This time I am interested in performance. I did some optimizations to get better performance, but I removed one part to save a good amount of memory but with the cost of some performance. I hope it has not much impact.

    I did a quick test on my Edge 1030 - without a real training.

    First I run the attached XML-design with version 2.3.0 and looked at free bytes and whether the timer is running without jumps:
    88,036 bytes free
    2 jumps (12356790) within 10 seconds

    Then I run the same layout with version 2.3.2 on Clone #4:
    89.424 free bytes
    0 jumps (1234567890) within 10 seconds - and that's real surprising!

    That means (at least for Edge 1030) more free memory (what is not so important with this device),
    and a much better performance!
    WELL DONE!

    <?xml version="1.0" encoding="UTF-8"?>
    <DIYLayout>
        <Device name="Edge 1030"/>
        <LayoutElement type="1" color="FFFFFF" x="0" y="0" x2="282" y2="470" eletype="RF" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="3" text="*** DATENFELD BEGRENZUNG"/>
        <LayoutElement type="1" color="000000" x="141" y="580" x2="0" y2="0" eletype="CR" valuetype="FX" radius="500" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="0" y="166" x2="282" y2="166" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="0" y="224" x2="282" y2="224" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="0" y="354" x2="282" y2="354" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="0" y="412" x2="282" y2="412" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="141" y="166" x2="141" y2="223" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="141" y="355" x2="141" y2="412" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="92" y="412" x2="92" y2="470" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="190" y="412" x2="190" y2="470" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="3" text="*** BATTERY"/>
        <LayoutElement type="1" color="000000" x="14" y="19" x2="46" y2="33" eletype="RF" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="46" y="22" x2="50" y2="30" eletype="RF" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="16" y="21" x2="44" y2="31" eletype="RF" valuetype="BV" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FF0000" x="16" y="21" x2="19" y2="31" eletype="RF" valuetype="BV" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="00B001" x="16" y="21" x2="44" y2="31" eletype="RH" valuetype="BV" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="38" y="37" fixedtext="false" eletype="BV" text="$V" font="SMALL" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="38" y="37" fixedtext="true" eletype="FX" text="%" font="SMALL" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="2" replDC="00B001" valDC00="1000" colDC00="00E000" valDC01="200" colDC01="00E000" valDC02="110" colDC02="F8C840" valDC03="1" colDC03="FF0000" invertcolor="false"/>
        <LayoutElement type="3" text="*** TEMPERATUR"/>
        <LayoutElement type="0" color="000000" x="176" y="7" fixedtext="false" eletype="TM" text="$V  C" font="SMALL" halignment="0" precision="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="159" y="13" x2="0" y2="0" eletype="CR" valuetype="FX" radius="2" stroke="2" nr_values="1"/>
        <LayoutElement type="3" text="*** BYTES FREE"/>
        <LayoutElement type="0" color="000000" x="270" y="17" fixedtext="false" eletype="XX" text="$V" font="TINY" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="270" y="38" fixedtext="true" eletype="FX" text="bytes free" font="XTINY" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="3" text="*** DATEN IM OBEREN BEREICH"/>
        <LayoutElement type="0" color="000000" x="140" y="40" fixedtext="false" eletype="CC" text="$V" font="NR_MILD" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="168" y="49" fixedtext="true" eletype="FX" text="rpm" font="SMALL" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="88" y="103" fixedtext="true" eletype="FX" text="Speed" font="SMALL" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="144" y="91" fixedtext="false" eletype="CS" text="$V" font="NR_MEDIUM" halignment="1" precision="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="191" y="103" fixedtext="true" eletype="FX" text="km/h" font="SMALL" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="29" y="136" fixedtext="false" eletype="AS" text="$V" font="MEDIUM" halignment="1" precision="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="30" y="136" fixedtext="false" eletype="AS" text="$V" font="MEDIUM" halignment="1" precision="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="56" y="141" fixedtext="true" eletype="FX" text="km/h" font="TINY" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="143" y="140" fixedtext="true" eletype="FX" text="avg." font="TINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="237" y="136" fixedtext="false" eletype="AC" text="$V" font="MEDIUM" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="236" y="136" fixedtext="false" eletype="AC" text="$V" font="MEDIUM" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="274" y="141" fixedtext="true" eletype="FX" text="rpm" font="TINY" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="10" y="170" fixedtext="true" eletype="FX" text="Timer" font="XTINY" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="85" y="188" fixedtext="false" eletype="TT" text="$H:$M:$C" font="NR_MILD" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="150" y="170" fixedtext="true" eletype="FX" text="Strecke" font="XTINY" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="238" y="188" fixedtext="false" eletype="DS" text="$V" font="NR_MILD" halignment="0" precision="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="259" y="197" fixedtext="true" eletype="FX" text="km" font="SMALL" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="3" text="*** HERZ + POWER+ TE Bereich"/>
        <LayoutElement type="1" color="F80001" x="71" y="238" x2="0" y2="0" eletype="CF" valuetype="FX" radius="7" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="F80001" x="82" y="238" x2="0" y2="0" eletype="CF" valuetype="FX" radius="7" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="F80001" x="77" y="244" x2="0" y2="0" eletype="CF" valuetype="FX" radius="6" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="F80001" x="66" y="241" x2="78" y2="252" eletype="LN" valuetype="FX" radius="6" stroke="3" nr_values="1"/>
        <LayoutElement type="1" color="F80001" x="87" y="241" x2="76" y2="252" eletype="LN" valuetype="FX" radius="6" stroke="3" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="99" y="224" x2="183" y2="255" eletype="RC" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="141" y="229" fixedtext="false" eletype="TE" text="TE  $V" font="SMALL" halignment="1" precision="1" nr_values="1"/>
        <LayoutElement type="1" color="0F4FFF" x="204" y="232" x2="216" y2="241" eletype="LN" valuetype="FX" radius="0" stroke="7" nr_values="1"/>
        <LayoutElement type="1" color="0F4FFF" x="196" y="243" x2="207" y2="252" eletype="LN" valuetype="FX" radius="0" stroke="7" nr_values="1"/>
        <LayoutElement type="1" color="0F4FFF" x="208" y="238" x2="203" y2="245" eletype="LN" valuetype="FX" radius="0" stroke="5" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="36" y="229" fixedtext="true" eletype="FX" text="200" font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="1" color="D0D0D0" x="141" y="290" x2="159" y2="202" eletype="AC" valuetype="FX" radius="122" stroke="20" nr_values="1"/>
        <LayoutElement type="1" color="F80001" x="141" y="290" x2="160" y2="201" eletype="AF" valuetype="HR" radius="122" stroke="16" nr_values="1"/>
        <LayoutElement type="1" color="FF000A" x="141" y="290" x2="160" y2="201" eletype="AF" valuetype="AH" radius="106" stroke="8" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="141" y="290" x2="160" y2="201" eletype="AC" valuetype="FX" radius="102" stroke="1" nr_values="1"/>
        <LayoutElement type="2" replDC="FF000A" valDC00="2000" colDC00="AA0000" valDC01="1550" colDC01="F80000" valDC02="1350" colDC02="00C000" valDC03="1200" colDC03="38A8F8" valDC04="600" colDC04="C0C0C0" invertcolor="false"/>
        <LayoutElement type="2" replDC="F80001" valDC00="2000" colDC00="F80000" valDC01="600" colDC01="F80000" invertcolor="false"/>
        <LayoutElement type="0" color="000000" x="34" y="336" fixedtext="true" eletype="FX" text="60" font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="78" y="274" fixedtext="false" eletype="HR" text="$V" font="NR_MILD" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="78" y="321" fixedtext="false" eletype="AH" text="$V" font="MEDIUM" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="79" y="321" fixedtext="false" eletype="AH" text="$V" font="MEDIUM" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="245" y="229" fixedtext="true" eletype="FX" text="300" font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="1" color="D0D0D0" x="141" y="290" x2="382" y2="338" eletype="AC" valuetype="FX" radius="122" stroke="20" nr_values="1"/>
        <LayoutElement type="1" color="F80002" x="141" y="290" x2="381" y2="339" eletype="AF" valuetype="CB" radius="122" stroke="16" nr_values="1"/>
        <LayoutElement type="1" color="007FFA" x="141" y="290" x2="381" y2="339" eletype="AF" valuetype="AB" radius="106" stroke="8" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="141" y="290" x2="381" y2="339" eletype="AC" valuetype="FX" radius="102" stroke="1" nr_values="1"/>
        <LayoutElement type="2" replDC="007FFA" valDC00="3000" colDC00="AA0000" valDC01="1500" colDC01="F80000" valDC02="1000" colDC02="00A800" valDC03="800" colDC03="0F82F8" valDC04="1" colDC04="F8C840" invertcolor="false"/>
        <LayoutElement type="2" replDC="F80002" valDC00="3000" colDC00="F80000" valDC01="1" colDC01="F80000" invertcolor="false"/>
        <LayoutElement type="0" color="000000" x="248" y="336" fixedtext="true" eletype="FX" text="0" font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="205" y="274" fixedtext="false" eletype="CB" text="$V" font="NR_MILD" halignment="1" precision="0" nr_values="3"/>
        <LayoutElement type="0" color="000000" x="205" y="321" fixedtext="false" eletype="AB" text="$V" font="MEDIUM" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="206" y="321" fixedtext="false" eletype="AB" text="$V" font="MEDIUM" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="3" text="*** TACX ZEICHEN"/>
        <LayoutElement type="0" color="0F82F8" x="139" y="260" fixedtext="true" eletype="FX" text="Tocx" font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="0F82F8" x="140" y="260" fixedtext="true" eletype="FX" text="Tocx" font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="0F82F8" x="141" y="260" fixedtext="true" eletype="FX" text="Tocx" font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="0F82F8" x="141" y="260" fixedtext="true" eletype="FX" text="." font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="141" y="276" fixedtext="true" eletype="FX" text="NEO" font="TINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="142" y="276" fixedtext="true" eletype="FX" text="NEO" font="TINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="142" y="277" fixedtext="true" eletype="FX" text="NEO" font="TINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="3" text="*** GANG ANGABE + ZEICHEN"/>
        <LayoutElement type="1" color="006FFA" x="141" y="324" x2="-10" y2="-252" eletype="CF" valuetype="AC" radius="20" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="006FFA" x="161" y="305" x2="120" y2="343" eletype="LN" valuetype="AC" radius="12" stroke="8" nr_values="1"/>
        <LayoutElement type="1" color="F8F8F8" x="141" y="324" x2="-10" y2="-252" eletype="CF" valuetype="FX" radius="15" stroke="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="142" y="311" fixedtext="false" eletype="BG" text="210;32;11;13;15;17;19;21;24;28;32;36" font="MEDIUM" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="2" replDC="006FFA" valDC00="600" colDC00="00C000" valDC01="100" colDC01="E86224" valDC02="1" colDC02="38A8F8" invertcolor="false"/>
        <LayoutElement type="3" text="*** DATEN IM UNTEREN BEREICH"/>
        <LayoutElement type="0" color="000000" x="9" y="358" fixedtext="true" eletype="FX" text="Uhrzeit" font="XTINY" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="75" y="377" fixedtext="false" eletype="CT" text="$H:$M" font="NR_MILD" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="150" y="358" fixedtext="true" eletype="FX" text="Runde" font="XTINY" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="270" y="358" fixedtext="false" eletype="LD" text="$V km" font="XTINY" halignment="0" precision="2" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="151" y="382" fixedtext="false" eletype="LR" text="$V" font="MEDIUM" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="224" y="377" fixedtext="false" eletype="LT" text="$H:$M:$C" font="NR_MILD" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="10" y="416" fixedtext="true" eletype="FX" text="kCal" font="XTINY" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="45" y="433" fixedtext="false" eletype="CA" text="$V" font="NR_MILD" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="141" y="416" fixedtext="true" eletype="FX" text="Gesamt km" font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="141" y="437" fixedtext="false" eletype="OM" text="$V" font="MEDIUM" halignment="1" precision="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="142" y="437" fixedtext="false" eletype="OM" text="$V" font="MEDIUM" halignment="1" precision="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="200" y="415" fixedtext="true" eletype="FX" text="Pause" font="XTINY" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="240" y="434" fixedtext="false" eletype="PT" text="$m:$S" font="NR_MILD" halignment="1" precision="0" nr_values="1"/>
    </DIYLayout>
    

  • Hi

    Thats good news, thanks!

    So, if there are no more complaints I will rollout the version 2.3.2 to the other clones tomorrow at about the same time.

    For now I have nothing on my todo list. The problem with the DPI awareness is not easy solvable in the current designer.

    So I decided to start the designer from scratch to tackle the existing problems from the beginning (flickering, high DPI values, ugly code, ...). I am in no hurry for that, so it will be at least a few weeks for the new designer.

    But for now I think the current version is stable and quite usable.

    regards

    Erich