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.6.2
* switched to new SDK 7.2.1
* added devices: Approach S7 42mm, Descent Mk3 43mm /Mk3i 43mm, Descent Mk3i 51mm, Edge 1050, epix Pro Gen2 42mm, epix Pro Gen2 47mm / quatix 7 pro, epix Pro Gen2 51mm / D2 mach 1 pro / tactix 7
Fenix 7 Pro, Fenix 7 Pro Solar, Fenix 7S Pro, Fenix 7X Pro, Fenix 7xPro Solar, Forerunner 165, Forerunner 165M, Venu 3, Venu 3S, Vivoactive 5
-----------------------------------------------------------------------
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!)

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

 

  • Thanks!
    But I cannot find the 2.1.6 designer tool...   ;-(

  • Designer did not change, still 2.1.5 !

  • New version 2.1.7 is out on clone #4:

    Designer:

    http://public.stattegg.info/HM_DIYD_2.1.7.zip

    Changes:

    2.1.7
    * new graphic elements: rectangle horizontal filled, rectangle vertical filled.
    These elements only work with dynamic colors. The first and last value of a dynamic color defines
    the range of the rectangle. So, for example if the values in the dynamic color range from 100 to 50 and
    the current value of the element is 75 then the rectangle is only drawn half (either horizontal or vertical).
    (In the designer the values are multiplied by 10 of course!)
    The dynamic color is also applied. See examples.zip -> 935/example_dynamic_rectangle.xml
    * new value: temperature
    Current max elements: low mem devices: 22
    medium mem devices: 43
    high mem devices: 500
    * fixed coloring bug for graphic elements with low memory devices

  • Just uploaded version 2.1.7 to all clones.

    For changes please see releasenotes in my first post.

  • Hi @All

    I want to ask if you could test if the temperature field is working on your device.

    Would appreciate it, if you post your results here to see on which devices the value works and on which it doesn't

    thanks in advance

    regards

    Erich

  • Just a note for the use of the rectangle filled horiz/vertical:
    X,Y is always the upper left corner of the rectangle, X2,Y2 always the lower right corner. The horizontal fill is from left to right, the vertical fill is from bottom to top.
    The element is displayed in the Designer tool as 75% filled, and the unfilled area is displayed darkened and transparent.
    Works perfectly!
    Once again a big thank you to HM!

    As for the temperature display: works on Edge 1030 (and therefore probably on all Edge devices). As described before: refresh every 5 minutes. My Edge with German language setting cannot display the circular degree sign.

  • I think I'm done now with my EDGE 1030 layout for my hometrainer Tacx NEO.

    For all who are interested in the XML-code:

    <?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="1" color="000000" x="0" y="156" x2="282" y2="156" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="0" y="214" x2="282" y2="214" 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="156" x2="141" y2="213" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="94" y="214" x2="188" y2="246" eletype="RC" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="141" y="247" x2="141" y2="412" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="94" y="412" x2="94" y2="470" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="188" y="412" x2="188" y2="470" eletype="LN" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="176" y="4" fixedtext="false" eletype="TM" text="$V  C" font="SMALL" halignment="0" precision="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="159" y="10" x2="0" y2="0" eletype="CR" valuetype="FX" radius="2" stroke="2" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="141" y="36" fixedtext="false" eletype="CC" text="$V" font="NR_MILD" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="169" y="42" fixedtext="true" eletype="FX" text="rpm" font="SMALL" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="141" y="576" x2="0" y2="0" eletype="CR" valuetype="FX" radius="500" stroke="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="88" y="96" fixedtext="true" eletype="FX" text="Speed" font="SMALL" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="144" y="84" fixedtext="false" eletype="CS" text="$V" font="NR_MEDIUM" halignment="1" precision="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="191" y="97" fixedtext="true" eletype="FX" text="km/h" font="SMALL" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="29" y="126" fixedtext="false" eletype="AS" text="$V" font="MEDIUM" halignment="1" precision="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="55" y="131" fixedtext="true" eletype="FX" text="km/h" font="TINY" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="143" y="130" fixedtext="true" eletype="FX" text="avg." font="TINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="237" y="126" fixedtext="false" eletype="AC" text="$V" font="MEDIUM" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="274" y="131" fixedtext="true" eletype="FX" text="rpm" font="TINY" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="10" y="160" fixedtext="true" eletype="FX" text="Timer" font="XTINY" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="85" y="178" 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="160" fixedtext="true" eletype="FX" text="Strecke" font="XTINY" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="238" y="178" fixedtext="false" eletype="DS" text="$V" font="NR_MILD" halignment="0" precision="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="258" y="186" fixedtext="true" eletype="FX" text="km" font="SMALL" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="0F82F8" x="122" y="225" fixedtext="true" eletype="FX" text="Tocx" font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="0F82F8" x="124" y="225" fixedtext="true" eletype="FX" text="Tocx" font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="0F82F8" x="123" y="226" fixedtext="true" eletype="FX" text="Tocx" font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="0F82F8" x="123" y="226" fixedtext="true" eletype="FX" text="." font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="177" y="221" fixedtext="true" eletype="FX" text="NEO" font="TINY" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="178" y="221" fixedtext="true" eletype="FX" text="NEO" font="TINY" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="178" y="222" fixedtext="true" eletype="FX" text="NEO" font="TINY" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="1" color="FF000A" x="18" y="273" x2="0" y2="0" eletype="CF" valuetype="AH" radius="12" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FF000A" x="36" y="273" x2="0" y2="0" eletype="CF" valuetype="AH" radius="12" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FF000A" x="27" y="285" x2="0" y2="0" eletype="CF" valuetype="AH" radius="10" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FF000A" x="8" y="278" x2="28" y2="298" eletype="LN" valuetype="AH" radius="12" stroke="3" nr_values="1"/>
        <LayoutElement type="1" color="FF000A" x="46" y="278" x2="26" y2="298" eletype="LN" valuetype="AH" radius="12" stroke="3" nr_values="1"/>
        <LayoutElement type="1" color="007FFA" x="249" y="269" x2="0" y2="0" eletype="CF" valuetype="AB" radius="8" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="007FFA" x="264" y="275" x2="0" y2="0" eletype="CF" valuetype="AB" radius="8" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="007FFA" x="259" y="266" x2="245" y2="306" eletype="LN" valuetype="AB" radius="12" stroke="10" nr_values="1"/>
        <LayoutElement type="1" color="007FFA" x="240" y="297" x2="0" y2="0" eletype="CF" valuetype="AB" radius="8" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="007FFA" x="255" y="302" x2="0" y2="0" eletype="CF" valuetype="AB" radius="8" stroke="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="50" y="225" fixedtext="true" eletype="FX" text="bpm" font="SMALL" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="111" y="266" fixedtext="false" eletype="HR" text="$V" font="NR_MILD" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="120" y="270" fixedtext="true" eletype="FX" text="/" font="MEDIUM" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="123" y="272" fixedtext="false" eletype="HZ" text="$V" font="MEDIUM" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="30" y="312" fixedtext="true" eletype="FX" text="avg." font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="29" y="330" fixedtext="true" eletype="FX" text="HR" font="TINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="111" y="317" fixedtext="false" eletype="AH" text="$V" font="NR_MILD" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="230" y="225" fixedtext="true" eletype="FX" text="Watt" font="SMALL" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="196" y="266" fixedtext="false" eletype="CB" text="$V" font="NR_MILD" halignment="1" precision="0" nr_values="3"/>
        <LayoutElement type="0" color="000000" x="196" y="316" fixedtext="false" eletype="AB" text="$V" font="NR_MILD" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="252" y="313" fixedtext="true" eletype="FX" text="avg." font="XTINY" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="250" y="330" fixedtext="true" eletype="FX" text="W" font="TINY" halignment="1" precision="0" nr_values="1"/>
        <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="50" y="433" fixedtext="false" eletype="CA" text="$V" font="NR_MILD" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="105" y="416" fixedtext="true" eletype="FX" text="TE" font="XTINY" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="142" y="433" fixedtext="false" eletype="TE" text="$V" font="NR_MILD" halignment="1" precision="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="198" y="415" fixedtext="true" eletype="FX" text="Pausezeit" font="XTINY" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="236" y="434" fixedtext="false" eletype="PT" text="$m:$S" font="NR_MILD" halignment="1" precision="0" nr_values="1"/>
        <LayoutElement type="2" replDC="FF000A" valDC00="1700" colDC00="AA0000" valDC01="1550" colDC01="F80000" valDC02="1350" colDC02="00C000" valDC03="1200" colDC03="38A8F8" valDC04="1000" colDC04="E86224" valDC05="650" colDC05="808040" valDC06="1" colDC06="C0C0C0" invertcolor="false"/>
        <LayoutElement type="2" replDC="007FFA" valDC00="1700" colDC00="AA0000" valDC01="1500" colDC01="F80000" valDC02="1100" colDC02="00C000" valDC03="900" colDC03="38A8F8" valDC04="80" colDC04="E86224" valDC05="1" colDC05="C0C0C0" invertcolor="false"/>
        <LayoutElement type="1" color="006FFA" x="250" y="35" x2="-10" y2="-252" eletype="CF" valuetype="AC" radius="21" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="006FFA" x="267" y="12" x2="232" y2="59" eletype="LN" valuetype="AC" radius="12" stroke="8" nr_values="1"/>
        <LayoutElement type="1" color="F8F8F8" x="250" y="35" x2="-10" y2="-252" eletype="CF" valuetype="FX" radius="15" stroke="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="251" y="22" 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="1" color="000000" x="14" y="16" x2="46" y2="30" eletype="RF" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="000000" x="46" y="19" x2="50" y2="27" eletype="RF" valuetype="FX" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FFFFFF" x="16" y="18" x2="44" y2="28" eletype="RF" valuetype="BV" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="FF0000" x="16" y="18" x2="19" y2="28" eletype="RF" valuetype="BV" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="1" color="00B001" x="16" y="18" x2="44" y2="28" eletype="RH" valuetype="BV" radius="0" stroke="1" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="38" y="34" fixedtext="false" eletype="BV" text="$V" font="SMALL" halignment="0" precision="0" nr_values="1"/>
        <LayoutElement type="0" color="000000" x="38" y="34" fixedtext="true" eletype="FX" text="%" font="SMALL" halignment="2" precision="0" nr_values="1"/>
        <LayoutElement type="2" replDC="00B001" valDC00="1000" colDC00="000000" valDC01="200" colDC01="00E000" valDC02="110" colDC02="F8C840" valDC03="1" colDC03="FF0000" invertcolor="false"/>
    </DIYLayout>
    

  • Cool design, will add it to examples!

  • I am wondering, what do the letters in the bracket in front of the field mean? (M) Lap number for example. On my 920XT in current version I noticed that fields without anything seem to work fine but I tried several with (M) and they all show 0 value during entire workout (Lap nr, Lap distance, Calories spent ...).

    Also I am trying to understand the Dynamic color on pace field but cannot understand what values to use for example to show anything faster than 4:00 red. up to 4:30 green and anything slower yellow. I tried to use 4300 and 4000 but it did not seem to work.

  • Hi

    Sorry, forgot that in the description. (M) stands for medium memory devices and (H) for high memory devices.

    Low mem devices are the CIQ1 ones with only 16KB of memory. The medium ones have 32kb and the high ones 128kb memory avaiable for one datafield. Medium values are also avaiable for the high memory ones of course.

    The 920Xt is a CIQ1 device with only 16kb, so there are only the basic values available.

    And because every line of code takes up space I had to remove some of the values for the low memory devices to get the datafield working at all.

    The values in dynamic colors are seconds or for the heartrate bpm. So for a 4:30 pace you have to enter 270s*10 --> 2700

    For a pace of 4:00 you have to enter 2400.

    regards

    Erich