Acpi

 view release on metacpan or  search on metacpan

Battery.pm  view on Meta::CPAN

package Acpi::Battery;
use Acpi::Field;
use strict;

our $VERSION = '0.1';

my $rfield;

sub new{
	my($class) = shift;
	my($self) = {};

	bless($self,$class);

	$rfield = Acpi::Field->new; 
	return $self;
}

sub getBatteryInfo{
	my($self,$what) = @_;
	my(%value);
	my($i) = 0;
	my($numbatt) = $self->nbBattery;

	for($i=1;$i<=$numbatt;$i++){
		$value{"BAT".$i} = $rfield->getValueField("/proc/acpi/battery/BAT".$i."/info",$what);
	}

	return (%value);
}

sub getBatteryState{
	my($self,$what)= @_;
	my(%value);
	my($i) = 0;
	my($numbatt) = $self->nbBattery;

	for($i=1;$i<=$numbatt;$i++){
		$value{"BAT".$i} = $rfield->getValueField("/proc/acpi/battery/BAT".$i."/state",$what);
	}

	return (%value);
}

sub batteryOnLine{
	my($self) = shift;
	my($file) = "/proc/acpi/ac_adapter/ACAD/state";
	
	if($rfield->getValueField($file,"state") eq "on-line"){
		return -1;
	}
	else{
		return 0;
	}
}

sub nbBattery{
	my($self) = shift;
	my($dir) = "/proc/acpi/battery";
	my($nb) = 0;
	
	opendir(BATTERYDIR,$dir) || die "Impossible d'ouvrir $dir : $!";
	while(readdir(BATTERYDIR)){
		$nb++;	
	}

	$nb -= 2; #SOUSTRACT "." and ".."

	closedir(BATTERYDIR);
	return $nb;
}

sub getLastFull{



( run in 2.457 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )