[PATCH] - fhem.pl - Optionale Angabe einer Funktion bei RemoveInternalTimer()

Begonnen von Markus Bloch, 05 März 2016, 12:29:07

Vorheriges Thema - Nächstes Thema

Markus Bloch

Hallo Rudi,

anbei ein Patch für fhem.pl um optional den Funktionsnamen bei RemoveInternalTimer() angeben zu können. Man kann damit folgendes machen:



# Definition von 2 Timern mit $hash als Argument
InternalTimer(gettimeofday()+30, "functionA", $hash);
InternalTimer(gettimeofday()+60, "functionB", $hash);

# Löschen des ersten Timers, der zweite läuft weiter
RemoveInternalTimer($hash, "functionA");

InternalTimer(gettimeofday()+30, "functionA", $hash);

# löschen von beiden Timern (functionA und function B)
RemoveInternalTimer($hash);


Ich habe bei YAMAHA_AVR zwei Timer laufen. Einen für den regelmäßigen Status-Request und einen zweiten der Befehle in der Command-Queue regelmäßig versucht beim Device abzusetzen. Beide benutzen $hash als Argument, rufen aber verschiedene Funktionen auf.

Die bisherige Funktionsweise bleibt davon unberührt.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

dev0


rudolfkoenig


Markus Bloch

Hallo Rudi,

vielen Dank. In diesem Zusammenhang würde ich ebenfalls vorschlagen den Prototype für InternalTimer zu ändern:

aktuell:
InternalTimer($$$$)

Vorschlag:
InternalTimer($$$;$)

So muss man $waitIfInitNotDone nicht immer explizit mit 0 oder 1 angeben. Hier würde mich eh mal interessieren in welchen Fällen das wirklich gebraucht wird?

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

Hab gerade gesehen, dass du den Prototype geändert hast.

Müsste aber in Zeile 2794 ebenfalls geändert werden.

Prototype mismatch: sub main::InternalTimer ($$$;$) vs ($$$$) at /usr/local/FHEM/bin/fhem.pl line 2794.


Vielen Dank schonmal.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

ZitatMüsste aber in Zeile 2794 ebenfalls geändert werden.
Danke fuer den Hinweis, habs gemacht.

Laut svn blame/log habe ich den Parameter bei der "FHT softbuffer rewrite" benoetigt.
Warum genau, kann ich dir aber nicht mehr sagen, immerhin ist es 8+ Jahre her.

justme1968

das hatten wir vor einer weile mal diskutiert :)

der parameter ist überflüssig und das verhalten mit dem wait das scheinbar mal vorgesehen war funktioniert auch nicht wirklich sondern wartet blockierend und ruft dann $fn aus.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Markus Bloch

Ich hab im Wiki genau wegen dem blockierenden Aufruf einen entsprechenden Warnhinweis in Großbuchstaben gemacht.
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)