Suunto app Forum Suunto Community Forum
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    [Question] No stupid questions - ask anything here

    Scheduled Pinned Locked Moved Suunto Plus Development
    75 Posts 24 Posters 3.4k Views 24 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ookO Offline
      ook
      last edited by

      guys I need help, anyone know how to use the crown/middle button to scroll to the next ui?

      Tomas5T 1 Reply Last reply Reply Quote 0
      • Tomas5T Offline
        Tomas5 Gold Members @ook
        last edited by

        @ook i would try “onEvent(input, output, eventId)” and display value of eventId on screen and than see if crown produce some events.

        Suunto Ambit 2 > Suunto 5 > Suunto Race 2

        ookO 1 Reply Last reply Reply Quote 0
        • ookO Offline
          ook @Tomas5
          last edited by

          @Tomas5 thanks Tomas I tried your method, it just return 0 to me, but i find out if ur ui is big enough it will able to scroll down,dont have to do anything.

          S 1 Reply Last reply Reply Quote 1
          • Thibault B.T Offline
            Thibault B.
            last edited by

            Hello,

            What I want to do is quite simple but I do lack experience with JS, and it has been a long time since I developed in HTML.

            I would appreciate your help :). I want to override down button press to make a lap type 24, but only if activity is ongoing. If it is paused I want the default behavior (stop activity).

            In my html:

            <userInput>
                  <pushButton name="down" onClick="$.put('/Zapp/{zapp_index}/Event', 123, null, 'int32');" />
            </userInput>
            

            In my js:

            function onEvent(input, output, eventId) {
              if (eventId == 123) {
                // Down button was pressed
                $.put('Activity/Trigger', 24);
              }
            }
            

            I was thinking of conditioning the HTML onClick but do not really know how to access necessary variables, etc. I have tried a few things but I am lost.

            U 1 Reply Last reply Reply Quote 0
            • U Offline
              Unpaired8373 @Thibault B.
              last edited by

              @Thibault-B. There is an example in the examples collection. Essentially have a global variable that is set in the start-handler and unset in the stop-handler and then handle the condition in you event

              Thibault B.T 1 Reply Last reply Reply Quote 0
              • Thibault B.T Offline
                Thibault B. @Unpaired8373
                last edited by

                @Unpaired8373 Not sure to get what you mean.

                function onEvent(input, output, eventId) {
                  if (eventId == 123 && output.isPaused == 0) {
                    // Down button was pressed
                    $.put('Activity/Trigger', 24);
                  }
                }
                

                It is not triggering the lap but it is not doing anything else and I wanted to default to initial behavior (so I didn’t want an explicit call to stop, which seems anyway not available?).

                Thibault B.T 1 Reply Last reply Reply Quote 0
                • Thibault B.T Offline
                  Thibault B. @Thibault B.
                  last edited by

                  I think the issue is that I override the onClick action, so I should keep it empty if in pause. But I do not know how to do it.

                  S 1 Reply Last reply Reply Quote 0
                  • surfboomerangS Online
                    surfboomerang
                    last edited by

                    I’m working on an app for speedsurfers :

                    f78a673a-e1d4-4991-9c48-b6f793e3c88e-image.png

                    I struggle a little bit with the Alpha category.
                    According to the gps-speedsurfing rules the Alpha category is the speed over 500m, including a gybe (180 degree turn), and the start and endpoint needs to be within 50m of eachother.

                    To determine if there was a gybe, I thought about recording the direction for each second, but I noticed that isn’t available as parameter.
                    So the only other option I see is derive the direction from the coordinates, but that includes some calculations.

                    Any other ideas?

                    Suunto Vertical Titanium Solar
                    OnePlus Nord 4

                    1 Reply Last reply Reply Quote 0
                    • U Offline
                      Unpaired8373
                      last edited by

                      Is it expected that even an example app crashes the watch with a Syntax Error ?

                      After having my own app crash - and almost brick the watch or at least having it perform a fault recovery for a couple of minutes - I thought I reduce the app to a bare minimum and work from there but even that crashes the watch. I then copied the Dynamic Icons example but still get the crash log below:

                      #2670816 22.03.2026 18:43:43 : ERR UI_FRAMEWORK : JS:0x8258be29:SyntaxError: 5
                      #2670817 22.03.2026 18:43:43 : ERR APPLICATION : Thread state: name:ui
                      #2670818 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:ui s:0 pc:0 lr:0
                      #2670819 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:UI s:1 pc:78e9c lr:81ab1
                      #2670820 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:ID s:1 pc:9b6d6 lr:84a15
                      #2670821 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:BL s:2 pc:6c324 lr:6c15b
                      #2670822 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:nV s:2 pc:6c324 lr:6c15b
                      #2670823 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:Nt s:2 pc:6c324 lr:6c15b
                      #2670824 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:WI s:2 pc:6c324 lr:6c15b
                      #2670825 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:lo s:2 pc:84020 lr:84051
                      #2670826 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:Po s:2 pc:6c324 lr:6c15b
                      #2670827 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:WB s:2 pc:9b6d6 lr:84a5b
                      #2670828 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:Ap s:2 pc:9b6d6 lr:84a5b
                      #2670829 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:me s:2 pc:9b6d6 lr:84a5b
                      #2670830 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:Tm s:2 pc:b6aca lr:84a15
                      #2670831 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:Se s:2 pc:6c324 lr:6c15b
                      #2670832 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:hc s:2 pc:6c324 lr:6c051
                      #2670833 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:DS s:2 pc:6c324 lr:6c051
                      #2670834 22.03.2026 18:43:43 : ERR APPLICATION : CtxDog n:us s:2 pc:6c320 lr:6c051
                      #2670835 22.03.2026 18:43:43 : TRC UI_FRAMEWORK : wuiDump Assert peFunctionCombiner.cpp:302
                      #2670836 22.03.2026 18:43:43 : EVT MAPS : Tile sz=29840, x17435, y11374, z15
                      #2670837 22.03.2026 18:43:43 : TRC MAPS : Req[0] result: Code=OK
                      #2670838 22.03.2026 18:43:43 : TRC MAPS : Req[0] handle: clientID=1, handle=1153598804039951724, r
                      #2670839 22.03.2026 18:43:43 : EVT TRAININGLAB : TLab: Input source 0 timeout
                      #2670840 22.03.2026 18:43:43 : EVT TRAININGLAB : TLab: Active input source 3
                      #2670841 22.03.2026 18:43:45 : EVT EXT_FLASH : ExtFID 0xc2,0x25,0x39
                      #2670842 22.03.2026 18:43:45 : ERR FAULT : A302:duktapeFunctionCombiner.cpp
                      #2670843 22.03.2026 18:43:45 : EVT BOOTLOOP : Faultcom c:fa017c01 ts:1774201322 n:1774201425
                      

                      As a side-note: I really like the naming of the internal code files 🙂

                      1 Reply Last reply Reply Quote 1
                      • S Offline
                        SuuntoPartnerTeam @Unpaired8373
                        last edited by

                        Hi @Unpaired8373 ,

                        Does the watches JS-runtime support WASM by any chance?

                        Wasm is not available!

                        Is it expected that even an example app crashes the watch with a Syntax Error ? … I then copied the Dynamic Icons example but still get the crash log below

                        That is not expected behaviour 😃 I just now checked the Dynamic Icons example on both a Race 1 and a 9 Peak Pro. Neither crashed during an exercise. Best advice that comes to mind is to first make sure the watch is running the latest firmware.

                        Running JS inside an HTML template can be a bit finicky and seems to have the highest potential for crashes at present.

                        U 1 Reply Last reply Reply Quote 0
                        • S Offline
                          SuuntoPartnerTeam @ook
                          last edited by

                          @ook

                          guys I need help, anyone know how to use the crown/middle button to scroll to the next ui?

                          We do not presently have a way to capture scrolling events, but as you found…

                          i find out if ur ui is big enough it will able to scroll down,dont have to do anything.

                          … the watch will automatically attempt to scroll elements with the crown 🙂

                          1 Reply Last reply Reply Quote 0
                          • S Offline
                            SuuntoPartnerTeam @Thibault B.
                            last edited by SuuntoPartnerTeam

                            @Thibault-B.

                            I think the issue is that I override the onClick action, so I should keep it empty if in pause. But I do not know how to do it.

                            One possible way is to use the uiViewSet in combination with userInput. Simple example:

                            <uiView>
                            
                              <div>
                                <!-- The set allows toggling the capture of 'down' -->
                                <uiViewSet id="test">
                                  <!-- First set element -->
                                  <div>
                                    <userInput>
                                      <!-- systemEvent prints into OUTPUT when running in the simulator -->
                                      <pushButton name="down" onClick="systemEvent('Hello world')"/>
                                    </userInput>
                                  </div>
                                  <!-- Second set element -->
                                  <div>
                                    <!-- Here nothing gets printed -->
                                  </div>
                                </uiViewSet>
                            
                                <!-- Press 'up' to enable/disable the capture of 'down' -->
                                <userInput>
                                  <pushButton name="up" onClick="next('#test')"/>
                                </userInput>
                            
                              </div>
                            
                            </uiView>
                            

                            Edit. Just to add, you would probably then want onExercisePause() to do the toggling of the set

                            Thibault B.T 1 Reply Last reply Reply Quote 0
                            • Thibault B.T Offline
                              Thibault B. @SuuntoPartnerTeam
                              last edited by

                              @SuuntoPartnerTeam Nice! Thank you.
                              I toggle the capture in the onExercisePause, onExerciseStart, etc as you recommended in your edit.

                              1 Reply Last reply Reply Quote 1
                              • U Offline
                                Unpaired8373 @SuuntoPartnerTeam
                                last edited by

                                @SuuntoPartnerTeam Thanks for the reply on a Sunday.

                                I am testing with a Race S if that makes a difference. The firmware is the most recent one according to the watch menu (v2.50.28). Also I ran the mountaineering activity (or what it is called in english language setting) with no GPS fix (ignore and continue when prompted).

                                1 Reply Last reply Reply Quote 1
                                • First post
                                  Last post

                                Suunto Terms | Privacy Policy