#!/usr/bin/perl use strict; use warnings; use File::Slurp; use autodie; use lib '.'; use Protocol; my $queue = "queue"; my $path = shift @ARGV; die "Usage: $0 queue/IMEI\n" unless $path; my $imei; if ( $path =~ m{$queue/(\w+)/} ) { $imei = $1; } else { die "can't find IMEI in $path\n"; } my $raw; if ( $ARGV[0] =~ m/interval/ ) { # heartbeat interval my $interval = $ARGV[1] || 300; print "set heartbeat interval to $interval s\n"; $raw = write_parameter_frame( "\x21" => "\x04" . pack('l',$interval) ); } else { print "read_parameter_frame\n"; $raw = read_parameter_frame( "\x00" => "\x04\xe8\x03\x00\x00", "\x21", "\x44", "\x12", "\x14", "\x1a\x21\x22\x23\x24\x33\x34\x35\x3b" ); } # temporary store to done my $t = time(); write_file "$queue/$imei/.todo.$t", $raw; # atomic rename to ensure that file is complete rename "$queue/$imei/.todo.$t", "$queue/$imei/.pending/$t";