X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=SCX%2FParser.pm;h=6f0b61b3e58dfdf2f70947300492aafcc39a801e;hb=1ae1ef53e1bc6383b599782616b656a25094a7e6;hp=b71f26b75639c01c8477bd68cc0b867c643cfa54;hpb=6c1770adb57a99f638708c4679c7867fb8a4633b;p=slotcarman.git diff --git a/SCX/Parser.pm b/SCX/Parser.pm index b71f26b..6f0b61b 100644 --- a/SCX/Parser.pm +++ b/SCX/Parser.pm @@ -124,7 +124,7 @@ sub parse_packet { sub bus_free_time_packet { my ($self, @bytes) = @_; - $self->strange_packet('bus free time', @bytes) + $self->strange_packet('bus_free_time', @bytes) if $bytes[2] != 0xF0 || $bytes[3] != 0xF0 || $bytes[4] != 0xF0 @@ -136,7 +136,7 @@ sub bus_free_time_packet { sub car_programming_packet { my ($self, @bytes) = @_; - $self->strange_packet('car programming', @bytes) + $self->strange_packet('car_programming', @bytes) if ($bytes[0] & 0xF8) != 0 || ($bytes[0] & 0x07) > 5 || $bytes[1] != 0xFE || $bytes[2] != 0xFF @@ -176,7 +176,7 @@ sub standings_packet { sub car_lap_time_packet { my ($self, @bytes) = @_; - $self->strange_packet('car lap time', @bytes) + $self->strange_packet('car_lap_time', @bytes) if $bytes[0] > 5 || $bytes[1] & 0x01 || $bytes[2] & 0x01 @@ -185,9 +185,12 @@ sub car_lap_time_packet { || $bytes[5] & 0x01; $self->car_lap_time($bytes[0], - 256*$bytes[1] + $bytes[2] + ($bytes[3] & 0x01 ? 1 : 0), + 256*$bytes[1] + $bytes[2] + + ($bytes[3] & 0x02 ? 256 : 0) + + ($bytes[3] & 0x01 ? 1 : 0), sprintf('%.3f', 0.01024 * (256*$bytes[4] + $bytes[5] - + ($bytes[3] & 0x08 ? 1 : 0))), + + ($bytes[3] & 0x08 ? 256 : 0) + + ($bytes[3] & 0x04 ? 1 : 0))), sprintf('%04b', $bytes[3]) ); } @@ -195,7 +198,7 @@ sub car_lap_time_packet { sub race_setup_packet { my ($self, @bytes) = @_; - $self->strange_packet('race setup') + $self->strange_packet('race_setup', @bytes) if ($bytes[0] != 0x00 && $bytes[0] != 0xFF) || $bytes[1] & 0xF0 || $bytes[2] & 0xF0 @@ -215,7 +218,7 @@ sub race_setup_packet { sub fuel_level_packet { my ($self, @bytes) = @_; - $self->strange_packet('fuel level') + $self->strange_packet('fuel_level', @bytes) if ($bytes[0] >> 4) > 8 || ($bytes[0] & 0x0F) > 8 || ($bytes[1] >> 4) > 8 @@ -236,7 +239,7 @@ sub fuel_level_packet { sub brake_set_packet { my ($self, @bytes) = @_; - $self->strange_packet('brake set') + $self->strange_packet('brake_set', @bytes) if ($bytes[0] > 5) || ($bytes[1] != 0x00 && $bytes[1] != 0x02 && $bytes[1] != 0x04) || $bytes[2] != 0x83 @@ -253,7 +256,7 @@ sub brake_set_packet { sub qualification_packet { my ($self, @bytes) = @_; - $self->strange_packet('qualification') + $self->strange_packet('qualification', @bytes) if $bytes[0] & 0xF0 || $bytes[1] & 0xF0 || $bytes[2] & 0xF0 @@ -272,7 +275,7 @@ sub qualification_packet { sub end_of_race_packet { my ($self, @bytes) = @_; - $self->strange_packet('end of race') + $self->strange_packet('end_of_race', @bytes) if $bytes[0] != 0xFF || $bytes[1] != 0xFF || $bytes[2] != 0xFF @@ -286,7 +289,7 @@ sub end_of_race_packet { sub race_start_packet { my ($self, @bytes) = @_; - $self->strange_packet('race start') + $self->strange_packet('race_start', @bytes) if $bytes[0] != 0x00 || $bytes[1] != 0xAA || $bytes[2] != 0xAA @@ -300,7 +303,7 @@ sub race_start_packet { sub display_change_packet { my ($self, @bytes) = @_; - $self->strange_packet('display change') + $self->strange_packet('display_change', @bytes) if $bytes[0] & 0xFE || $bytes[1] != 0xFF || $bytes[2] != 0xFF @@ -363,7 +366,7 @@ sub finish_line_packet { && $byte != 0xFE } - $self->strange_packet('finish line') + $self->strange_packet('finish_line', @bytes) if $fail; my $regular = 1; @@ -391,7 +394,7 @@ sub controller_status_packet { || ($byte & 0x0F) > 12 } - $self->strange_packet('controller status') + $self->strange_packet('controller_status', @bytes) if $fail; my @ctrl_data;