NAME
    Device::Gsm - Perl extension to interface GSM cellular / modems

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

SYNOPSIS
      use Device::Gsm;

      my $gsm = new Device::Gsm( port => '/dev/ttyS1', pin => 'xxxx' );

      if( $gsm->connect() ) {
          print "connected!\n";
      } else {
          print "sorry, no connection with gsm phone on serial port!\n';
      }
 
      # Register to GSM network (you must supply PIN number in above new() call)
      $gsm->register();
 
      # Get the manufacturer and model code of device
      my $mnf   = $gsm->manufacturer();
      my $model = $gsm->model();
      print 'soft version is ", $gsm->software_version(), "\n";

      my $imei = $gsm->imei() or
            $imei = $gsm->serial_number();
 
      # Test for command support
      if( $self->test_command('CGMI') ) {
          # `AT+CGMI' is supported!
      } else {
          # No luck, CGMI command not available
      }
 
      print 'Service number is now: ', $gsm->service_number(), "\n";
      $gsm->service_number( '+001505050' );   # Sets new number
  
      # Send quickly a short text message
      $modem->send_sms(
          recipient => '+3934910203040',
          content   => 'Hello world! from Device::Gsm'
      );

      # The long way...
      $modem->send_sms(

          recipient => '34910203040',
          content   => 'Hello world again, with more args',

          # SMS Class (can be `normal' or `flash')
          # `flash' mode delivers instantly!
          class     => 'normal',

          # SMS sending mode
          # try `text' or old phones or GSM modems (as Falcom or Digicom),
          # `pdu' is the default nowadays
          mode      => 'pdu'
      );
 
DESCRIPTION
    `Device::Gsm' class implements basic GSM functions, network registration
    and SMS sending.

    This class supports also `PDU' mode to send `SMS' messages, and should
    be fairly usable. I'm developing and testing it under `Linux RedHat 7.1'
    with a 16550 serial port and `Siemens C35i' / `C45' GSM phones attached
    with a Siemens-compatible serial cable.

    Please be kind to the universe and contact me if you have troubles or
    you are interested in this.

  REQUIRES

    *   Device::Modem, which in turn requires

    *   Device::SerialPort

  EXPORT

    None

TO-DO
    Validity Period
        Support `validity period' option on SMS sending. Tells how much time
        the SMS Service Center must hold the SMS for delivery.

    Profiles
        Build a profile of the GSM device used, so that we don't have to
        `always' test each command to know whether it is supported or not,
        because this takes too time to be done every time.

AUTHOR
    Cosimo Streppone, cosimo@cpan.org

SEE ALSO
    Device::Modem(3), Device::SerialPort(3), perl(1)

