From a382e1cf9a63d13fd0a9be9064b787fe2d025894 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sat, 3 Aug 2019 18:49:06 +0200 Subject: [PATCH] convert ir-ctl -r output into sigrok file for pulseview --- ir/ir-ctl2sr.pl | 67 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 ir/ir-ctl2sr.pl diff --git a/ir/ir-ctl2sr.pl b/ir/ir-ctl2sr.pl new file mode 100755 index 0000000..9e29de9 --- /dev/null +++ b/ir/ir-ctl2sr.pl @@ -0,0 +1,67 @@ +#!/usr/bin/perl +use warnings; +use strict; + +my @pulses = @ARGV || die "usage: $0 *.pulses"; + +my $khz = 50; # ir-ctl --features | grep Resolution +# 1 ms = 1000 Hz = 1 kHz + +mkdir 'new'; +open(my $metadata, '>', 'new/metadata'); + +print $metadata qq{ +[global] +sigrok version=0.5.1 + +[device 1] +capturefile=logic-1 +total probes=8 +total analog=0 +unitsize=1 +samplerate=$khz kHz +probe1=IR +}; + +=for later +foreach my $ch ( 1 .. scalar($#pulses) ) { + my $name = $pulses[ $ch - 1 ]; + print $metadata qq{probe$ch=$name\n}; +} +=cut + +open(my $logic, '>', 'new/logic-1-1'); + +my $bits_left = 0; +my $state_left = 0; + +sub write_logic { + my ($t,$s) = @_; + + $t = $t / $khz; # convert time to bits + + my $patt = $s ? "\x01" : "\x00"; + print $logic ( $patt x $t ); +}; + + +while(<>) { + if (/^pulse\s(\d+)/ ) { + write_logic( $1, 1 ); + } elsif ( /^space\s(\d+)/ ) { + write_logic( $1, 0 ); + } elsif ( /^timeout\s(\d+)/ ) { + write_logic( $1, 0 ); + } else { + warn "IGNORE: $_\n"; + } +} + +close($metadata); +close($logic); + +open(my $version, '>', 'new/version'); +print $version '2'; +close($version); + +system "cd new ; zip ../new.sr *"; -- 2.20.1