App-EventStreamr

 view release on metacpan or  search on metacpan

lib/App/EventStreamr/Devices.pm  view on Meta::CPAN

package App::EventStreamr::Devices;
use Moo; # libmoo-perl
use Cwd 'realpath';
use File::Slurp 'read_file'; #libfile-slurp-perl
use Hash::Merge::Simple; # libhash-merge-simple-perl
use Data::Dumper;

# ABSTRACT: Devices Methods

our $VERSION = '0.5'; # VERSION: Generated by DZP::OurPkg:Version


# TODO: Needs a cleanup!

sub all {
  my $self = shift;
  my $v4l = v4l();
  my $dv = dv();
  my $alsa = alsa();
  @{$self->{devices}{v4l}{all}} = ();
  @{$self->{devices}{dv}{all}} = ();
  @{$self->{devices}{alsa}{all}} = ();

  if ($v4l) { $self->{devices}{v4l} = $v4l;       }
  if ($dv)  { $self->{devices}{dv} = $dv;         }
  if ($alsa)  { $self->{devices}{alsa} = $alsa;   }
  if ($v4l || $dv || $alsa) {
    $self->{devices}{all} = Hash::Merge::Simple->merge($v4l,$dv,$alsa);
    @{$self->{devices}{array}} = (@{$self->{devices}{v4l}{all}}, @{$self->{devices}{dv}{all}},@{$self->{devices}{alsa}{all}});
  } else {
    $self->{devices}{all} = undef;
    @{$self->{devices}{array}} = [];
  }

  return $self->{devices};
}

sub v4l {
  my @v4ldevices = glob "/dev/video*";
  my $v4l_devices;
  foreach my $device (@v4ldevices) {
    $device =~ m/\/dev\/(?<index>.+)/;
    my $index = $+{index};
    $v4l_devices->{$index}{device} = $device;
    $v4l_devices->{$index}{name} = get_v4l_name($index);
    $v4l_devices->{$index}{type} = "V4L";
    $v4l_devices->{$index}{id} = $index;
    push (@{$v4l_devices->{all}}, $v4l_devices->{$index});
  }
  return $v4l_devices;
}

sub dv {
  my @dvs =  glob "/sys/bus/firewire/devices/*";
  my $dv_devices;

  foreach my $dv (@dvs) {
    if (-e "$dv/vendor") {
      my $vendor_name = read_file("$dv/vendor");
      $vendor_name = read_file("$dv/vendor_name") if ( -e "$dv/vendor_name" );
      chomp $vendor_name;
      $vendor_name = "Canopus" if ( $vendor_name eq "0x002011" );
      
      unless ($vendor_name eq "Linux Firewire") {
        my $guid = read_file("$dv/guid");
        my $model = "unknown";



( run in 0.732 second using v1.01-cache-2.11-cpan-39bf76dae61 )