#!/usr/bin/perl # # This code is distributed under the terms of the GPL # # (c) Scott Knight 2004 # scott@scottknight.com # This code is tested on Origo 8400 in half-bridge mode, safecom/origo firmware package Origo_8000; use strict; my $VERSION = 0.1; my $debug = 0; my $params; my $data; use SRK::BMM::Modem::DSLModem; our @ISA = qw(DSLModem); my %defaults = ( 'modem_name' => 'Origo 8000', 'host' => '10.0.0.2', 'port' => '80', 'ui_user' => 'admin', 'ui_pass' => 'epicrouter', ); sub new { my ($class) = @_; $params = $_[1]; $data = $_[2]; if (defined $params->{'debug'}) { $debug = $params->{'debug'} }; printDebug(1, "VERSION $VERSION"); printDebug(2, 'new() starting'); my $self = $class->SUPER::new($params, $data, \%defaults); bless $self, $class; printDebug(2, 'new() finished'); return $self; } sub getData { printDebug(2, "getData() starting"); my $self = shift; use SRK::HTTP; my $httplib = new SRK::HTTP($params); my ($tags, $tage); foreach my $line($httplib->getHTTPData("doc/home.htm")) { if ($line =~ /(var\ st_sw_ver)/ ) { printDebug(2, "Matching 'var st_sw_ver'"); printDebug(3, "$line"); my $fwv = $line; $tags = "var st_sw_ver = \"" ; $tage = "\";"; $fwv = substr($fwv, index($fwv, $tags)+length($tags)); $fwv = substr($fwv, 0, index($fwv, $tage)); $data->{'fwv'} = $fwv; printDebug(1, "fwv: '$data->{'fwv'}'"); } if ($line =~ /(var\ st_customer_sw_ver)/ ) { printDebug(2, "Matching 'var st_customer_sw_ver'"); printDebug(3, "$line"); my $fwv = $line; $tags = "var st_customer_sw_ver = \"" ; $tage = "\";"; $fwv = substr($fwv, index($fwv, $tags)+length($tags)); $fwv = substr($fwv, 0, index($fwv, $tage)); if (defined($data->{'fwv'})) { $data->{'fwv'} = $data->{'fwv'} . " + " . $fwv; } else { $data->{'fwv'} = $fwv; } printDebug(1, "fwv: '$data->{'fwv'}'"); } } foreach my $line($httplib->getHTTPData("doc/adsl.htm")) { if ($line =~ /(var\ st_tx_power)/ ) { printDebug(2, "Matching 'var st_tx_power'"); printDebug(3, "$line"); my $upl = $line; $tags = "var st_tx_power = \"-" ; $tage = "\";"; $upl = substr($upl, index($upl, $tags)+length($tags)); $upl = substr($upl, 0, index($upl, $tage)); if ($self->validateNumber($upl)) { $data->{'upl'} = $upl; } printDebug(1, "upl: '$data->{'upl'}'"); } if ($line =~ /(var\ st_rx_power)/) { printDebug(2, "Matching 'var st_rx_power'"); printDebug(3, "$line"); my $dpl = $line; $tags = "var st_rx_power = \""; $tage = "\";"; $dpl = substr($dpl, index($dpl, $tags)+length($tags)); $dpl = substr($dpl, 0, index($dpl, $tage)); if ($self->validateNumber($dpl)) { $data->{'dpl'} = $dpl; } printDebug(1, "dpl: '$data->{'dpl'}'"); } if ($line =~ /(var\ st_up_line_attenuation)/ ) { printDebug(2, "Matching 'var st_up_line_attenuation'"); printDebug(3, "$line"); my $ula = $line; $tags = "var st_up_line_attenuation = \"" ; $tage = "\";"; $ula = substr($ula, index($ula, $tags)+length($tags)); $ula = substr($ula, 0, index($ula, $tage)); if ($self->validateNumber($ula)) { $data->{'ula'} = $ula; } printDebug(1, "ula: '$data->{'ula'}'"); } if ($line =~ /(var\ st_dw_line_attenuation)/ ) { printDebug(2, "Matching 'var st_dw_line_attenuation'") ; printDebug(3, "$line"); my $dla = $line; $tags = "var st_dw_line_attenuation = \""; $tage = "\";"; $dla = substr($dla, index($dla, $tags)+length($tags)); $dla = substr($dla, 0, index($dla, $tage)); if ($self->validateNumber($dla)) { $data->{'dla'} = $dla; } printDebug(1, "dla: '$data->{'dla'}'"); } if ($line =~ /(var\ st_up_snr_margin)/ ) { printDebug(2, "Matching 'var st_up_snr_margin'"); printDebug(3, "$line"); my $usn = $line; $tags = "var st_up_snr_margin = \""; $tage = "\";"; $usn = substr($usn, index($usn, $tags)+length($tags)); $usn = substr($usn, 0, index($usn, $tage)); if ($self->validateNumber($usn)) { $data->{'usn'} = $usn; } printDebug(1, "usn: '$data->{'usn'}'"); } if ($line =~ /(var\ st_dw_snr_margin)/) { printDebug(2, "Matching 'var st_dw_snr_margin'"); printDebug(3, "$line"); my $dsn = $line; $tags = "var st_dw_snr_margin = \""; $tage = "\";"; $dsn = substr($dsn, index($dsn, $tags)+length($tags)); $dsn = substr($dsn, 0, index($dsn, $tage)); if ($self->validateNumber($dsn)) { $data->{'dsn'} = $dsn; } printDebug(1, "dsn: '$data->{'dsn'}'"); } if ($line =~ /(var\ st_up_data_rate)/) { printDebug(2, "Matching 'var st_up_data_rate'"); printDebug(3, "$line"); my $usp = $line; $tags = "var st_up_data_rate = \""; $tage = "\";"; $usp = substr($usp, index($usp, $tags)+length($tags)); $usp = substr($usp, 0, index($usp, $tage)); if ($self->validateNumber($usp)) { $data->{'usp'} = $usp; } printDebug(1, "usp: '$data->{'usp'}'"); } if ($line =~ /(var\ st_dw_data_rate)/) { printDebug(2, "Matching 'var st_dw_data_rate'"); printDebug(3, "$line"); my $dsp = $line; $tags = "var st_dw_data_rate = \""; $tage = "\";"; $dsp = substr($dsp, index($dsp, $tags)+length($tags)); $dsp = substr($dsp, 0, index($dsp, $tage)); if ($self->validateNumber($dsp)) { $data->{'dsp'} = $dsp; } printDebug(1, "dsp: '$data->{'dsp'}'"); } } printDebug(2, "getData() finished"); return 1; } sub printDebug { if ($debug >= $_[0]) { printf "***Origo_8000.pm*** $_[1]\n"; } } 1;