added temperature correction
[zc] / zc-queue-inspect
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4
5 use Data::Dump qw(dump);
6 use File::Slurp;
7 use POSIX qw(strftime);
8
9 use lib '.';
10 use Protocol;
11
12 my $debug = $ENV{DEBUG} // 0;
13 $| = 1;
14
15 if ( $debug > 1 ) {
16         warn "## protocol = ",dump( $protocol );
17         warn "## function_code_description = ",dump( $function_code_description );
18 }
19
20 my $raw;
21
22 foreach my $filename ( @ARGV ) {
23         my ( $up_down, $t );
24         if ( $filename =~ m/(\d+)\.(up|down|sent)/ ) {
25                 $t = $1;
26                 $up_down = $2;
27         } else {
28                 warn "ERROR: can't parse $filename, skipping\n";
29                 next;
30         }
31         my $raw = read_file $filename;
32         print "# ",strftime("%Y-%m-%dT%H:%M:%S",localtime($t)), " $filename size:", -s $filename, " ";
33         $up_down = 'down' if $up_down eq 'sent';
34         my $hash = protocol_decode( $up_down, $raw );
35
36         warn "hash = ",dump($hash) if $debug;
37
38         my $imei = $1 if $filename =~ m{queue/(\d+)};
39
40         my $function_code = $hash->{function_code} || die "no function_code";
41         my $fc_desc = $function_code_description->{$up_down}->{$function_code} || die "no function_code_description for $up_down $function_code";
42         print " function_code=$function_code ",
43                 $fc_desc,
44                 " ver=", $hash->{ver},
45                 " len=", $hash->{len},
46                 "\n";
47
48         foreach my $data_id ( @{ $hash->{data_id_order} } ) {
49                 print join(" | ", 
50                         $imei,
51                         $hash->{up_down},
52                         unpack('H*', chr($data_id)),
53                         $protocol->{$data_id}->{description},
54                         $hash->{data_id}->{$data_id},
55                         "hex:" . unpack('H*', $hash->{data_range}->{$data_id}),
56                         "len:" . $hash->{data_len}->{$data_id},
57                         "fmt:" . $protocol->{$data_id}->{pack_fmt},
58                         "range:" . $protocol->{$data_id}->{range}, 
59                         "remark:" . $protocol->{$data_id}->{remark}
60                 ),"\n";
61         }
62         print "\n";
63
64 }
65