Bugfix Keycard F6-04-01

Begonnen von kubuntufan, 07 September 2014, 12:31:22

Vorheriges Thema - Nächstes Thema

kubuntufan

Hallo,

Ich habe mal das Profile F6-04-01 überarbeitet.
Sollte jetzt vollständig unterstützt werden.

Im Anhang die Patch Datei.

Gruß Kubuntufan

klaus.schauer

Mit welchem Gerät wurde der Patch getestet?


    } elsif ($st eq "keycard") {
      if ($db[0] == 0x70 && $status == 30){
$msg = "keycard_inserted";
      } elsif ($db[0] == 0x00 && $status == 20){
        $msg = "keycard_removed";
      }


Ich halte es nicht für sinnvoll, auf das gesamte Status-Byte statt auf das NU-Bit zu prüfen. Das Statusbyte enthält zusätzlich das Feld T21 und Repeater Count. Außerdem müsste dann nicht auf 0x20 und 0x30 abgefragt werden?

Was funktionierte denn bisher nicht?

kubuntufan

Hallo,

Im Original werde beide Zustände bei einem NU von 0 abgefragt.
Falls ich das richtig interpretiere,

   if ($nu) {
      # Theoretically there can be a released event with some of the A0,BI
      # pins set, but with the plastic cover on this wont happen.
      $msg  = $EnO_ptm200btn[($db[0] & 0xE0) >> 5];
      $msg .= ",".$EnO_ptm200btn[($db[0] & 0x0E) >> 1] if ($db[0] & 1);
      $msg .= " released" if (!($db[0] & 0x10));
      push @event, "3:buttons:" . ($db[0] & 0x10 ? "pressed" : "released");

    } else {
      if ($db[0] == 112) {
        # Key Card, not tested
        $msg = "keycard inserted";

      } elsif ($db[0] & 0xC0) {
        # Only a Mechanical Handle is setting these bits when nu=0
        $msg = "closed"           if ($db[0] == 0xF0);
        $msg = "open"             if ($db[0] == 0xE0);
        $msg = "tilted"           if ($db[0] == 0xD0);
        $msg = "open from tilted" if ($db[0] == 0xC0);

      } else {
        if($st eq "keycard") {
          $msg = "keycard removed";
        }
        else {
          $msg = (($db[0] & 0x10) ? "pressed" : "released");
        }
      }
      push @event, "3:buttons:" . ($db[0] & 0x10 ? "pressed" : "released");
    }


Das mit dem T21 und dem Repeater Level hatte ich nicht bedacht.
Mein Fehler.

Ich hatte die Abfrage mit 0x20 und 0x30 getestet führte aber nicht zu erfolg.

Naja ich habe gegen die EEP Spezifikationen gestestet.

Gruß Kubuntufan