NAME
   Device::CableModem::SURFboard - Get info from a Motorola 'SURFboard'

SYNOPSYS
       use Device::CableModem::SURFboard;
       my $modem = Device::CableModem::SURFboard->new
           or die Device::CableModem::SURFboard->errstr;

       # print upstream power range check
       print $modem->upPowerStr . ' ' . $modem->upPowerCheck;

       # print downstream power range check
       print $modem->dnPowerStr . ' ' . $modem->dnPowerCheck;

       # print Signal/Noise range check
       print $modem->SNRatioStr . ' ' . $modem->SNRatioCheck;

DESCRIPTION
   The Motorola 'SURFboard' cable modem includes a built in web interface
   that contains useful information like signal to noise ratios and power
   levels. These values can be used to aid in trouble shooting modem
   connection problems, or monitoring the health of the modem or cable
   connection.

   "Device::CableModem::SURFboard" connects to several different models of
   'SURFboard' modems (currently confirmed: SB4100, SB4200, SB5100,
   SB5100E, SB5101, SBV5120E), scraping the status page for the most
   useful information regarding cable line condition.

 CREATING A NEW MODEM OBJECT
       $modem = Device::CableModem::SURFboard->new();

   This will create a new modem object using default values. You can also
   initialize the modem object from an associative array reference:

       $modem = Device::CableModem::SURFboard->new(
           dnPowerMax => 16,
           dnPowerMin => -16,
           upPowerMax => 54,
           upPowerMin => 36,
           SNRatioMax => 100,
           SNRatioMin => 0,
           modemIP => '192.168.100.1',
           loginUsername => 'admin',
           loginPassword => 'motorola');

   The above example also demonstrates all of the configurable options with
   their defaults.

METHODS
   errstr()
     Returns the last error message (or empty). Currently this isn't much
     use as a method as only pageRef() (used internally) will generate
     errors. errstr() can also be called directly to determine why a new()
     method failed.

   modelGroup()
     Returns the model group found. Different models of SURFboard modems
     have different URL/page layouts. These can be grouped into similar
     model groups that share the same basic layout. When a new modem object
     is created, modelGroup will be set according to the first successful
     status page retrieved.

   channel()
     Returns the up stream channel id (number).

   upFreq()
     Returns the up stream frequency value (Hz) as a simple number.

   upFreqStr()
     Returns the up stream frequency value as a text string with the unit
     description attached. For example "25250000 Hz".

   dnFreq()
     Returns the down stream frequency value (Hz) as a simple number.

   dnFreqStr()
     Returns the down stream frequency value as a text string with the unit
     description attached. For example "477000000 Hz".

   SNRatio()
     Returns the down stream Signal to Noise ratio value (dB) as a simple
     number.

   SNRatioStr()
     Returns the down stream Signal to Noise ratio value as a text string
     with the unit description attached. For example "40.5 dB".

   SNRatioCheck()
     Checks the current down stream Signal to Noise ratio against pre-
     defined max/min limits and returns either "high", "low" or blank. The
     pre-defined max/min (default 100/0) can be also be set with the
     SNRatioMax/SNRatioMin parameters when the object is created.

   dnPower()
     Returns the down stream power value (dBmV) as a simple number.

   dnPowerStr()
     Returns the down stream power value as a text string with the unit
     description attached. For example "7.3 dBmV".

   dnPowerCheck()
     Checks the current down stream power against pre-defined max/min
     limits and returns either "high", "low" or blank. The pre-defined
     max/min (default 16/-16) can be also be set with the
     dnPowerMax/dnPowerMin parameters when the object is created.

   upPower()
     Returns the up stream power value (dBmV) as a simple number.

   upPowerStr()
     Returns the up stream power value as a text string with the unit
     description attached. For example "49.5 dBmV".

   upPowerCheck()
     Checks the current up stream power against pre-defined max/min limits
     and returns either "high", "low" or blank. The pre-defined max/min
     (default 54/36) can be also be set with the upPowerMax/upPowerMin
     parameters when the object is created.

   pageRef()
     Takes a URL path and an optional IP address to read a page from the
     modem. pageRef() is used internally to get the signal information
     page. It could also be used for grabbing other information pages from
     modems. A valid page request returns a reference to a string
     containing the page contents. A page request failure will return
     undefined (check the $errstr value or call errstr() to find out why).

SUPPORT
   This script was developed and tested on a Motorla SURFboard cable modem.
   (Models: SB4100, SB4200, SB5100, SB5100E, SB5101, SBV5120E).

   It may work on other Motorla modems, but likely will not. If you have a
   different cable modem that works, or you would like to have work, please
   let me know.

AUTHOR
       Scott Mazur
       CPAN ID: RUZAM
       littlefish.ca
       [email protected]
       http://littlefish.ca

COPYRIGHT
   copyright(C) 2007 Scott Mazur, all rights reserved.

   This program is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself.

   The full text of the license can be found in the LICENSE file included
   with this module.

SEE ALSO
   perl(1).