Okeydokey, I'll give it a try and let you know On 12.08.2020 17:36, Michael Balzer wrote:
Soko,
by history of it's origin in the V2 module, the poller currently is only called by the ticker, so runs once per second, and is limited to processing one request at a time. A response may consist of multiple frames (automatically requested by the receiver). The poller doesn't know when/if a request is completed / cancelled.
It should be pretty simple to allow PollerSend() to be called anytime, e.g. by the IncomingPollReply() handler as soon as it detects a completed response.
From a quick glance, the only change necessary for this should be adding a control argument to PollerSend() that inhibits the m_poll_ticker increment & cycling.
You would e.g. call PollerSend(false) in IncomingPollReply() to check for any more polls to be done in the current poller second (m_poll_ticker value). If none is found, the poller exits and leaves the next call to the ticker again. The default (ticker) PollerSend() behaviour remains the same as now.
Do you want to try implementing that change? You can test it on your polls directly. If you submit the change, please keep it in a separate commit / pull request, don't mix it with some UpMiiGo changes.
Regards, Michael
Am 12.08.20 um 15:47 schrieb Soko:
Hey guys,
I'm wondering how the poller ticker works as it seems it doesn't poll as frequently as expected. Here are my (simplified) polls:
const OvmsVehicle::poll_pid_t vwup_polls[] = { {VWUP_CHARGER_TX, VWUP_CHARGER_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, VWUP_CHARGER_AC_U, {0, 0, 5}}, {VWUP_CHARGER_TX, VWUP_CHARGER_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, VWUP_CHARGER_AC_I, {0, 0, 5}}, {VWUP_BAT_MGMT_TX, VWUP_BAT_MGMT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, VWUP_BAT_MGMT_U, {0, 1, 5}}, {VWUP_BAT_MGMT_TX, VWUP_BAT_MGMT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, VWUP_BAT_MGMT_I, {0, 1, 5}}, {VWUP_BAT_MGMT_TX, VWUP_BAT_MGMT_RX, VEHICLE_POLL_TYPE_OBDIIEXTENDED, VWUP_BAT_MGMT_SOC, {0, 20, 20}}, {0, 0, 0, 0, {0, 0, 0}}};
I was expecting to get both voltages and currents every 5 seconds and just milliseconds apart from each other. And (of course) every 20 seconds the SoC.
But I get one of the first four every seconds (taking 4 seconds in total until a I have all) and SoC only ~40 seconds.
Is there some way to change the poller to the expected behavior?
I would like the first 4 very close to each other so I can calculate AC power, DC power and therefore the efficiency of the charging process.
thx
Soko
_______________________________________________ OvmsDev mailing list OvmsDev@lists.openvehicles.com http://lists.openvehicles.com/mailman/listinfo/ovmsdev