From 4f4810f6ebdeef1864a6aac5319576f1b1e30d33 Mon Sep 17 00:00:00 2001 From: betateilchen <> Date: Sat, 15 Feb 2014 03:59:16 +0000 Subject: [PATCH] added: new module 51_BBB_WATCHDOG.pm fixed: added CUL_HM as "known type" in 98_PID.pm git-svn-id: https://svn.fhem.de/fhem/trunk@4930 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/51_BBB_WATCHDOG.pm | 106 +++++++++++++++++++++++++++++++++++ fhem/FHEM/98_PID.pm | 2 +- fhem/MAINTAINER.txt | 5 +- 4 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 fhem/FHEM/51_BBB_WATCHDOG.pm diff --git a/fhem/CHANGED b/fhem/CHANGED index 8ad3cfed0..884d3cf57 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,6 +1,7 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. - SVN + - added: new module 51_BBB_WATCHDOG.pm (betateilchen) - bugfix: SYSMON: Fix: uninitialized variable - feature: new modul 73_MPD added (Wzut) - bugfix: SYSMON: Fix: root fs with /dev/mapper diff --git a/fhem/FHEM/51_BBB_WATCHDOG.pm b/fhem/FHEM/51_BBB_WATCHDOG.pm new file mode 100644 index 000000000..5c49638b8 --- /dev/null +++ b/fhem/FHEM/51_BBB_WATCHDOG.pm @@ -0,0 +1,106 @@ +# $Id: + +package main; + +use strict; +use warnings; +use Time::HiRes qw(gettimeofday); + +sub BBB_WATCHDOG_Initialize($){ + my ($hash) = @_; + require "$attr{global}{modpath}/FHEM/DevIo.pm"; + $hash->{DefFn} = "BBB_WATCHDOG_Define"; + $hash->{UndefFn} = "BBB_WATCHDOG_Undefine"; + $hash->{ShutdownFn} = "BBB_WATCHDOG_Shutdown"; + $hash->{AttrList} = $readingFnAttributes; +} + +sub BBB_WATCHDOG_Define($$){ + my ($hash, $def) = @_; + my $name = $hash->{NAME}; + my @a = split("[ \t][ \t]*", $def); + my $dev = '/dev/watchdog@directio'; + + DevIo_CloseDev($hash); + $hash->{PARTIAL} = ""; + $hash->{DeviceName} = $dev; + my $ret = DevIo_OpenDev($hash, 0, undef); + triggerWD($hash); + return $ret; +} + +sub BBB_WATCHDOG_Undefine($$){ + my($hash, $name) = @_; + DevIo_CloseDev($hash); + RemoveInternalTimer($hash); + return; +} + +sub BBB_WATCHDOG_Shutdown($) { + my ($hash) = @_; + my $name = $hash->{NAME}; + Log3 ($name,4,"BBB_WATCHDOG $name: shutdown requested"); + DevIo_CloseDev($hash); + return undef; +} + +sub triggerWD($) { + my ($hash) = @_; + Log3(undef, 4, "triggered"); + DevIo_SimpleWrite($hash, "X", undef); + InternalTimer(gettimeofday()+40, "triggerWD", $hash, 0); +} + +1; + +=pod +not to be translated +=begin html + + +
SUBSYSTEM=="misc" ACTION=="add" DRIVER=="" KERNEL=="watchdog" MODE=="666"
define <name> BBB_WATCHDOG