<div dir="ltr"><div>please have a good look at the function names.. when I have Get and Set prefixes.. should I have them.. etc to be consistent.</div><div><br></div><div>But Just FYI (a couple of silly bugs later) - This is the full output from a test proving that both the 'Times' property works and that at least as a concept- having the "Poll:PRI" as a key works.</div><div>//.</div><div>----8<-------------------</div><div dir="ltr"><br><div><font face="monospace" style="background-color:rgb(207,226,243)">JSON.print(OvmsPoller.Times.GetStatus())</font><br><font face="monospace" style="background-color:rgb(238,238,238)"><br>{<br> "items": {<br> "Poll:PRI": {<br> "count_hz": 1.00600004196167,<br> "avg_util_pm": 0.5598000288009644,<br> "peak_util_pm": 0.6503999829292297,<br> "avg_time_ms": 0.05350000038743019,<br> "peak_time_ms": 0.9779999852180481<br> },<br> "Poll:SRX": {<br> "count_hz": 1.1330000162124634,<br> "avg_util_pm": 0.18970000743865967,<br> "peak_util_pm": 0.23240000009536743,<br> "avg_time_ms": 0.015799999237060547,<br> "peak_time_ms": 0.3319999873638153<br> },<br> "RxCan1[778]": {<br> "count_hz": 1.8489999771118164,<br> "avg_util_pm": 1.2870999574661255,<br> "peak_util_pm": 1.8909000158309937,<br> "avg_time_ms": 0.06909999996423721,<br> "peak_time_ms": 2.7119998931884766<br> },<br> "RxCan1[7bb]": {<br> "count_hz": 0.2240000069141388,<br> "avg_util_pm": 0.10409999638795853,<br> "peak_util_pm": 0.25859999656677246,<br> "avg_time_ms": 0.043800000101327896,<br> "peak_time_ms": 1.50600004196167<br> },<br> "RxCan1[7ea]": {<br> "count_hz": 1.0670000314712524,<br> "avg_util_pm": 0.4699000120162964,<br> "peak_util_pm": 0.7283999919891357,<br> "avg_time_ms": 0.04830000177025795,<br> "peak_time_ms": 1.5379999876022339<br> },<br> "RxCan1[7ec]": {<br> "count_hz": 1.8669999837875366,<br> "avg_util_pm": 0.8090000152587891,<br> "peak_util_pm": 0.9458000063896179,<br> "avg_time_ms": 0.04639999940991402,<br> "peak_time_ms": 2.2769999504089355<br> },<br> "TxCan1[770]": {<br> "count_hz": 0.9240000247955322,<br> "avg_util_pm": 0.039400000125169754,<br> "peak_util_pm": 0.054499998688697815,<br> "avg_time_ms": 0.0038999998942017555,<br> "peak_time_ms": 0.08699999749660492<br> },<br> "TxCan1[7b3]": {<br> "count_hz": 0.041999999433755875,<br> "avg_util_pm": 0.0035000001080334187,<br> "peak_util_pm": 0.008299999870359898,<br> "avg_time_ms": 0.008500000461935997,<br> "peak_time_ms": 0.09200000017881393<br> },<br> "TxCan1[7e2]": {<br> "count_hz": 0.21199999749660492,<br> "avg_util_pm": 0.01600000075995922,<br> "peak_util_pm": 0.020500000566244125,<br> "avg_time_ms": 0.006800000090152025,<br> "peak_time_ms": 0.08500000089406967<br> },<br> "TxCan1[7e4]": {<br> "count_hz": 0.21199999749660492,<br> "avg_util_pm": 0.006899999920278788,<br> "peak_util_pm": 0.009800000116229057,<br> "avg_time_ms": 0.002899999963119626,<br> "peak_time_ms": 0.05299999937415123<br> },<br> "Cmd:Thrtl": {<br> "count_hz": 0.014999999664723873,<br> "avg_util_pm": 0.0006000000284984708,<br> "peak_util_pm": 0,<br> "avg_time_ms": 0.004699999932199717,<br> "peak_time_ms": 0.04699999839067459<br> },<br> "Cmd:State": {<br> "count_hz": 0.039000000804662704,<br> "avg_util_pm": 0.002300000051036477,<br> "peak_util_pm": 0.007000000216066837,<br> "avg_time_ms": 0.006500000134110451,<br> "peak_time_ms": 0.09000000357627869<br> }<br> },<br> "tot_count_hz": 8.59000015258789,<br> "tot_util_pm": 3.488300085067749,<br> "tot_time_ms": 3.1019999980926514<br>}</font></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 3 Jul 2024 at 14:31, Michael Geddes <<a href="mailto:frog@bunyip.wheelycreek.net">frog@bunyip.wheelycreek.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">OH, and also,<div><br></div><div>What do you think of treating the O<span style="font-family:monospace">vmsPoller.Times.GetStatus() </span><font face="arial, sans-serif">items as an associative array - or should I treat it as a normal array?</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">//.ichael</font></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 3 Jul 2024 at 14:24, Michael Geddes <<a href="mailto:frog@bunyip.wheelycreek.net" target="_blank">frog@bunyip.wheelycreek.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I figured I may as well add an OvmsPoller object to DukTape for Ovms. I'm waiting to get back to my OVMS so that I can test it.. but this is the documentation I have for the stuff I have coded. Thoughts on this?<div><br></div><div>What do people think of OvmsPoller.Times sub-object? I've added a general mechanism for this. </div><div><br></div><div>Also should I have OvmsPoller.Pause() or OvmsPoller.SetUserPaused(true) ?</div><div>//.</div><div><br></div><div><br></div><div><font face="monospace">OvmsPoller<br>^^^^^^^^^^<br>The Ovms Poller object represents the poller sub-system. It contains the following methods:<br><br>- ``ispaused = OvmsPoller.GetPaused()``: Return true if the poller is paused by the system/user.<br>- ``ispaused = OvmsPoller.GetUserPaused()``: Return true if the poller is paused by the user.<br>- ``OvmsPoller.Pause()``: Pause the poller (adds User poller pause)<br>- ``OvmsPoller.Resume()``: Remove the User poller pause.<br><br>- ``tracemode = OvmsPoller.GetTrace()``: Return the current trace mode.<br>- ``OvmsPoller.SetTrace(tracemode)``: Set the current trace mode.<br><br> The Traces still require that 'Verbose' and 'Debug' levels (depending) for the 'vehicle-poll'<br> debug tag are set.<br> Trace modes for verbose logging can be one of:<br> - ``on``: On for poller loop<br> - ``txrx``: On for txrx queue (this can be hazardous for some cars)<br> - ``all``: On for both poller loop and txrx queuing<br> - ``off``: Logging Off<br> Note that only ``on`` and ``off`` are recommended.<br><br>The poller object also contains a ``Times`` property for the OBD Poll-Time tracing<br>which contains the following methods:<br>- ``isrunning = OvmsPoller.Times.GetEnabled()``: Returns true if the time-tracing is enabled<br>- ``OvmsPoller.Times.SetEnabled(isrunning)``: Sets the enabled status of the timer-tracing<br>- ``OvmsPoller.Times.Reset()``: Reset the timers (doesn't affect their current state).<br>- ``OvmsPoller.Times.GetStatus()``: Gets the status of the various times. This returns an object<br> of this format:<br> .. code-block:: javascript<br> return_value = {<br> "items": {<br> "Poll:PRI" : {<br> "count_hz": 1,<br> "avg_util_pm": 0.529,<br> "peak_util_pm":0.652,<br> "avg_time_ms": 0.052,<br> "peak_time_ms":1.516<br> },<br> "Poll:SRX": {<br> "count_hz": 1.47,<br> "avg_util_pm": 0.302,<br> "peak_util_pm":0.44,<br> "avg_time_ms": 0.02,<br> "peak_time_ms":0.573<br> },<br> "RxCan1[778]": {<br> "count_hz": 0.74,<br> "avg_util_pm": 0.427,<br> "peak_util_pm":0.826,<br> "avg_time_ms": 0.063,<br> "peak_time_ms":1.872<br> },<br> "RxCan1[7a8]": {<br> "count_hz": 0.35,<br> "avg_util_pm": 0.183,<br> "peak_util_pm":0.355,<br> "avg_time_ms": 0.052,<br> "peak_time_ms":1.382<br> },<br> "TxCan1[7b3]": {<br> "count_hz": 0.07,<br> "avg_util_pm": 0.005,<br> "peak_util_pm":0.01,<br> "avg_time_ms": 0.007,<br> "peak_time_ms":0.099<br> },<br> "TxCan1[7c6]": {<br> "count_hz": 0,<br> "avg_util_pm": 0,<br> "peak_util_pm":0.009,<br> "avg_time_ms": 0.004,<br> "peak_time_ms":0.098<br> },<br> "Cmd:State": {<br> "count_hz": 0,<br> "avg_util_pm": 0,<br> "peak_util_pm":0,<br> "avg_time_ms": 0.011,<br> "peak_time_ms":0.109<br> }<br> },<br><br> "tot_count_hz": 11.76,<br> "tot_util_pm": 6.247,<br> "tot_time_ms": 4.628<br> };</font><br></div></div>
</blockquote></div>
</blockquote></div></div>