#!/usr/bin/perl -w
# Copyright 2004 Francois Gouget
# Released under the GNU General Public License, version 2 or later.
#
# Based on information found in Markus Heinz's libinklevel.
# http://libinklevel.sourceforge.net/

use strict;

my $name0=$0;
$name0 =~ s+^.*/++;


if (@ARGV!=1)
{
    print STDERR "Usage: $name0 <devname>\n";
    print STDERR "Where <devname> may be one of:\n";
    system("ptal-device");
    exit 2;
}
my $device=$ARGV[0];

my $ptal_devid=`ptal-devid \"$device\"`;
chomp $ptal_devid;

my @tags=grep /^S:/, (split /;/, $ptal_devid);
if (@tags==0)
{
    print STDERR "$name0:warning: Information not found.\n";
    exit 1;
}
elsif (@tags>1)
{
    print STDERR "$name0:warning: Got multiple fields from which to compute the ink level:\n";
    map { print STDERR "\t$_\n" } @tags;
    print STDERR "Using the first one.\n";
}
my $tag=$tags[0];


if (substr($tag,-17,2) =~ /2c/i)
{
    # Two cartridges
    my $cartridge1=hex substr($tag,-10,2);
    my $cartridge2=hex substr($tag, -2,2);
    if (substr($tag,-15,1) eq "1")
    {
        print "Color: $cartridge2%\n";
        print "Black: $cartridge1%\n";
    }
    elsif (substr($tag,-15,1) eq "3")
    {
        print "Color: $cartridge2%\n";
        print "Photo: $cartridge1%\n";
    }
    else
    {
        print "Cartridge1: $cartridge1%\n";
        print "Cartridge2: $cartridge2%\n";
    }
}
elsif (substr($tag, -4,1) eq "8" and substr($tag, -8,1) eq "7" and
       substr($tag,-12,1) eq "6" and substr($tag,-16,1) eq "5")
{
    # CMYK cartridges
    my $yellow =hex substr($tag, -2,2);
    my $magenta=hex substr($tag, -6,2);
    my $cyan   =hex substr($tag,-10,2);
    my $black  =hex substr($tag,-14,2);
    print "Cyan:    $cyan%\n";
    print "Magenta: $magenta%\n";
    print "Yellow:  $yellow%\n";
    print "Black:   $black%\n";
}
else
{
    print STDERR "$name0:warning: Unknown printer type\n";
    print STDERR "\t$tag\n";
    exit 1;
}
