Hi,

I recommend you to experiment by yourself by putting traces into the code to see what is executed and when.

I think ATK does something like that (pseudo-code) for your attributes which are not configured to send events:
while true do
    foreach attribute from List of Attributes to be refreshed/displayed do
        deviceproxy.read_attribute(attribute.name)
    end_foreach
    sleep(refreshing_period_ms)
end_while

On your server side, I think you will receive many requests to read single attributes (I think read_attributes is not used in this case by atkpanel).
So on your server side, for each single read_attribute request coming from atkpanel to read AAA attribute, the following methods will be executed if the attribute AAA is not polled:
  • always_executed_hook
  • read_attr_hardware
  • read_AAA
If the attribute is polled, the server will return the latest value from the polling buffer cache.
In this case, the polling thread will take care of executing the 3 methods above once every polling period (which might be different than the Atkpanel refreshing period).

I hope this clarifies a bit.
Cheers,
Reynald
Rosenberg's Law: Software is easy to make, except when you want it to do something new.
Corollary: The only software that's worth making is software that does something new.