X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=SCX%2FReader.pm;h=ea012b49ce1e2dfbf9354797028505fedd813930;hb=e22f8cbb94df063c77cc9ee5f5bae839e252777d;hp=c60ec95ea6f7fe65a949f90381efb6b44a690e0c;hpb=79abcddf3469dac53d814fa6de206b42acb917d1;p=slotcarman.git diff --git a/SCX/Reader.pm b/SCX/Reader.pm index c60ec95..ea012b4 100644 --- a/SCX/Reader.pm +++ b/SCX/Reader.pm @@ -42,7 +42,7 @@ sub new { log_gen => $log_gen, log_start => $now, starttime => $now, - callback => $callback, + track => $track, bytes => [], }; @@ -243,23 +243,17 @@ sub fuel_level_packet { || $bytes[2] & 0x0F > 8 || ($bytes[5] != 0xAA && $bytes[5] != 0xFF); -=comment - my @fuel = (0, - $data[1] >> 4, $data[1] & 0x0f, - $data[2] >> 4, $data[2] & 0x0f, - $data[3] >> 4, $data[3] & 0x0f, - ); - for my $car (1..6) { - next if defined $controllers[$car-1] - &&$controllers[$car-1] == $fuel[$car]; - - my $progressbar = $builder->get_object( - 'progressbar_fuel'.$car); - $progressbar->set_fraction($fuel[$car]/8); - } -=cut + my @fuel = ( + $bytes[1] >> 4, $bytes[1] & 0x0f, + $bytes[2] >> 4, $bytes[2] & 0x0f, + $bytes[3] >> 4, $bytes[3] & 0x0f, + ); - return $msg; # FIXME - to be implemented + for my $car (0..5) { + $track->car($car)->set_fuel($fuel[$car]); + } + + return $msg; } @@ -362,31 +356,30 @@ sub controller_status_packet { my $msg = 'Strange controller_status packet' if $fail; -=comment - for my $controller (1..6) { - my $byte = $data[$controller]; - next if defined $controllers[$controller-1] - && $controllers[$controller-1] == $byte; - $controllers[$controller-1] = $byte; - - my $progressbar = $builder->get_object( - 'progressbar_controller'.$controller); - if ($byte == 0xaa) { - $progressbar->set_text('inactive'); - $progressbar->set_fraction(0); - next; - } - my $light = !($byte & 0x20); - my $backbutton = !($byte & 0x10); - my $speed = $byte & 0x0f; - - my $text = ($backbutton ? '+' : '') . $speed; - $progressbar->set_text($text); - $progressbar->set_fraction($speed / 12); + my @fuel = ( + $bytes[1] >> 4, $bytes[1] & 0x0f, + $bytes[2] >> 4, $bytes[2] & 0x0f, + $bytes[3] >> 4, $bytes[3] & 0x0f, + ); + + for my $car (0..5) { + my $byte = $bytes[$car]; + + if ($byte == 0xAA) { + $track->car($car)->set_throttle(undef); + next; } -=cut - return $msg; # FIXME - to be implemented + my $light = !($byte & 0x20); + my $backbutton = !($byte & 0x10); + my $throttle = $byte & 0x0f; + + $track->car($car)->set_throttle($throttle); + $track->car($car)->set_light($light); + $track->car($car)->set_backbutton($backbutton); + } + + return $msg; } 1;