write_parameter_frame to sensor example
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 3 Oct 2020 18:10:47 +0000 (20:10 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 3 Oct 2020 18:10:47 +0000 (20:10 +0200)
zc-send [new file with mode: 0755]

diff --git a/zc-send b/zc-send
new file mode 100755 (executable)
index 0000000..feeddd2
--- /dev/null
+++ b/zc-send
@@ -0,0 +1,40 @@
+#!/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 = read_parameter_frame( "\x00" => "\x04\xe8\x03\x00\x00",
+       "\x21",
+       "\x44",
+       "\x12",
+       "\x14",
+       "\x1a\x21\x22\x23\x24\x33\x34\x35\x3b" );
+
+# heartbeat interval
+my $raw = write_parameter_frame( "\x21" => "\x04" . pack('l',60) );
+
+# temporary store to done
+my $t = time();
+write_file "$queue/$imei/down/.done/$t", $raw;
+# atomic rename to ensure that file is complete
+
+rename "$queue/$imei/down/.done/$t", "$queue/$imei/down/$t";
+