Welcome To Our Shell

Mister Spy & Souheyl Bypass Shell

Current Path : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/DivBasicF/

Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
Upload File :
Current File : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/DivBasicF/CanSignals.pm

package DivBasicF::CanSignals;

use strict;
use DivBasicF::BlackBoard;
use Data::Dumper;

sub new {

   my $class = shift;
   my $self  = {};
   $self->{'IN'}   = DivBasicF::BlackBoard->new(shift(@_));  #  Eingehende Signale
   $self->{'OUT'}  = DivBasicF::BlackBoard->new(shift(@_));  #  Ausgehende Signale
   $self->{'TELEGRAMS'} = shift;  # Hash von Telegrammen:
                          # Keys sind die Telegramme
                          # Values ist ein Array der Signale
                          # fuer jedes Telegramm, gefolgt von
                          # der Anzahl der Bits:
                          # [<bytes>,<signal1>=<bits1>,<signals2>=<bits2>, ...]
                          # Erster Parameter <bytes> ist die Byte-Laenge 
   bless($self,$class);
   $self->init_telegrams();
   return($self);

}

#**************************************************************************

sub init_telegrams {

   my $self = shift;

   $self->{'SIGNALS'} = {};  #  Hash mit allen Signalen. Values:
                             #  [<telegramm>,<position>,<laenge>]

   my $o; my $zaehler; my $telegram; my @signalfolge; my $laenge; my $signal;

   foreach $telegram (keys %{$self->{'TELEGRAMS'}}) {
      @signalfolge = @{$self->{'TELEGRAMS'}->{$telegram}};
      shift(@signalfolge);
      $zaehler = 1;
      while (@signalfolge) {
         $signal = shift(@signalfolge);
         next if ($signal !~ /^(.*)\=(.*)$/);
         $laenge = $2;
         $signal = $1;
         $self->{'SIGNALS'}->{$signal} =
                 ["0x".sprintf("%1x",$telegram),$zaehler,$laenge];
         $zaehler = $zaehler + $laenge;
      }
   }

   print Dumper($self->{'TELEGRAMS'});
   print Dumper($self->{'SIGNALS'});


      
}

#***********************************************************************

#   Reads CAN-Signals in Hex-Format

sub fetch {

   my $self          = shift;
   my $max_telegrams = shift;

   my $name; my $len; my $data; my $telegram; my $o; my $time1; my $time2;
   my $telegrams = "";

   my $zaehler = 0;

   while ($zaehler < $max_telegrams) {
      $zaehler = $zaehler + 1;
      $o = $self->{'IN'}->get();
      last if (!@$o);
print "GETXX:  $o " . join(" --- ",@$o) . "\n";
      $telegram = sprintf("%1x",eval($o->[0]));
      $time2    = $o->[1];
      $o        = $self->telegram_to_signal($telegram);
      next if (!$o);
      unshift(@$o,"TELEGRAM=".$telegram);
      push(@$o,"TIME2=".$time2);
      $telegrams = $telegrams . join(",",@$o) . "\n";
   }

   return($telegrams);

}

#***********************************************************************

sub telegram_to_signal {

   my $self     = shift;
   my $telegram = shift;

   my $signal; my $wert;
   my $name  = substr($telegram,0,3);
   my $len   = substr($telegram,3,1);
   my $data  = substr($telegram,4,2*$len);
   my $time2 = substr($telegram,2*$len+4,4);

   if (length($data) != 2*$len or ($time2 and length($time2) != 4)) {
      print "FEHLER\n";
      return([]);
   }  

   my $data_bin = sprintf("%0".sprintf("%1u",8*$len)."b",eval("0x".$data));
   my $ee = $self->{'TELEGRAMS'}->{$name};
   return("") if (!$ee);
   my $telegram1 = [];
   my $zaehler = 0;
   while (@$ee) {
      $signal = shift(@$ee);           
      $wert   = eval("0b".substr($data_bin,$zaehler,shift(@$ee)));
      push(@$telegram1,$signal."=".sprintf("%1u",$wert));
   }
   return($telegram1);

}


#***********************************************************************

sub message {

   my $self    = shift;
   my $signals = shift;

   my $signal; my $wert; my $zaehler; my $laenge; my $wert; my $telegram;

   my $nachrichten = {};
   foreach $signal (split(/,/,$signals)) {
      next if ($signal !~ /^(.*)\=(.*)$/);
      $wert   = $2;
      $signal = $1;
      $telegram = $self->{'SIGNALS'}->{$signal}->[0];
      $zaehler  = $self->{'SIGNALS'}->{$signal}->[1];
      $laenge   = $self->{'SIGNALS'}->{$signal}->[2];
      
      if (!($nachrichten->{$telegram})) { # Telegramm
         $nachrichten->{$telegram} =
               sprintf(
                   "%0" .
                    sprintf("%1u",8*$self->{'TELEGRAMS'}->{$telegram}->[0]) .
                    "u",
                  0
               );         
      }
      $nachrichten->{$telegram} =
            substr($nachrichten->{$telegram},0,$zaehler-1) .
            sprintf("%0" . sprintf("%1u",8*$laenge) . "b",$wert); 
            substr($nachrichten->{$telegram},$zaehler+$laenge);
   }

   foreach $telegram (keys %$nachrichten) {
      $self->{'OUT'}->msg($telegram . $self->{'TELEGRAMS'}->{$telegram}->[0] .
                sprintf("%0" . 2*$self->{'TELEGRAMS'}->{$telegram}->[0] .
                        "x",eval("0b".$nachrichten->{$telegram})));
   }


}

#***************************************************************


1;


bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped)
Email: contact@elmoujehidin.net bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped) Email: contact@elmoujehidin.net