NAME
    Device::Modem - Perl extension to talk to AT devices connected via
    serial port

WARNING
       This is C<PRE-ALPHA> software, still needs extensive testing and
       support for generic AT commads, so use it at your own risk,
       and without C<ANY> warranty! Have fun.

SYNOPSIS
      use Device::Modem;

      my $modem = new Device::Modem( port => '/dev/ttyS1', baud => 9600 )

      if( $modem->connect() ) {
          print "connected!\n";
      } else {
          print "sorry, no connection with serial port!\n';
      }

      $modem->attention();          # send `attention' sequence (+++)
 
      $modem->dial( '022704690' );  # dial number (*NOT WORKING YET*)
 
      $modem->echo(1);              # enable local echo
      $modem->echo(0);              # disable it

      $modem->offhook();            # Take off hook (ready to dial)
      $modem->hangup();             # returns modem answer
      $modem->reset();              # hangup + attention + restore setting 0 (Z0)

      $modem->restore_factory_settings();
                                    # Handle with care!

      $modem->send_init_string();   # Send initialization string
                                    # Now this is fixed to `ATZ0H0V1Q0E0'

      $modem->repeat();             # Repeat last command

      $modem->verbose(0);           # Modem responses are numerical
      $modem->verbose(1);           # Normal text responses
 
      #
      # Some raw at commands
      #
      $modem->atsend( 'ATH0' );
      print $modem->answer();

      $modem->atsend( 'ATDT01234567' . Device::Modem::CR );
      print $modem->answer();

DESCRIPTION
    Device::Modem class implements basic AT device abstraction. It is meant
    to be inherited by sub classes (as Device::Gsm), which are based on
    serial connections.

  REQUIRES

    Device::SerialPort (Win32::SerialPort for Windows machines)
  EXPORT

    None

TO-DO
    *   Logging mechanism

        Explain which type of logging hooks you can use with Device::Modem
        and its sub-classes (Device::Gsm). For now, they are only `file' and
        `syslog'

    *   AutoScan

        An AT command script with all interesting commands is run when
        `autoscan' is invoked, creating a `profile' of the current device,
        with list of supported commands, and database of
        brand/model-specific commands

    *   Time::HiRes

        Check if Time::HiRes module is installed and use it to wait
        milliseconds instead of whole seconds

    *   Many more to come!

AUTHOR
    Cosimo Streppone, cosimo@cpan.org

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

SEE ALSO
    the Device::SerialPort manpage, the Win32::SerialPort manpage, the perl
    manpage.

