Hi All I make use of two modems to send and recieve sms. I initialize smslib service instance only once. RXTX removes the stale lock files created which is shown below
RXTX Warning: Removing stale lock file. /var/lock/LCK..ttyUSB1 RXTX Warning: Removing stale lock file. /var/lock/LCK..ttyUSB0 but again warns me that file exits as shown below RXTX fhs_lock() Error: creating lock file: /var/lock/LCK..ttyUSB1: File exists RXTX fhs_lock() Error: creating lock file: /var/lock/LCK..ttyUSB0: File exists and the program shuts down. Whenever a Lock file is created it means a port is held by smslib. I dont understand, that after removing the stale files how do they exist. Is this a probable bug. Full exception trace is given below, Stable Library ========================================= Native lib Version = RXTX-2.1-7 Java lib Version = RXTX-2.1-7 RXTX Warning: Removing stale lock file. /var/lock/LCK..ttyUSB1 RXTX Warning: Removing stale lock file. /var/lock/LCK..ttyUSB0 25409 2013-05-14 11:11:24,958 [SwingWorker-pool-1-thread-1] INFO org.smslib.Service - SMSLib: A Java API library for sending and receiving SMS via a GSM modem or other supported gateways. This software is distributed under the terms of the Apache v2.0 License. Web Site: http://smslib.org 25418 2013-05-14 11:11:24,967 [SwingWorker-pool-1-thread-1] INFO org.smslib.Service - Version: 3.5.3 25419 2013-05-14 11:11:24,968 [SwingWorker-pool-1-thread-1] INFO org.smslib.Service - JRE Version: 1.6.0_20 25419 2013-05-14 11:11:24,968 [SwingWorker-pool-1-thread-1] INFO org.smslib.Service - JRE Impl Version: 16.3-b01 25419 2013-05-14 11:11:24,968 [SwingWorker-pool-1-thread-1] INFO org.smslib.Service - O/S: Linux / x86_64 / 10.04 25451 2013-05-14 11:11:25,000 [SwingWorker-pool-1-thread-1] INFO org.smslib.queues.DefaultQueueManager - Queue directory not defined. Queued messages will not be saved to filesystem. 25453 2013-05-14 11:11:25,002 [SwingWorker-pool-1-thread-1] DEBUG org.smslib.threading.AServiceThread - Initialized. 25454 2013-05-14 11:11:25,003 [SwingWorker-pool-1-thread-1] DEBUG org.smslib.threading.AServiceThread - Initialized. 25454 2013-05-14 11:11:25,003 [NotifyQueueManager] DEBUG org.smslib.threading.AServiceThread - Running... 25461 2013-05-14 11:11:25,010 [NotifyQueueManager] DEBUG org.smslib.notify.NotifyQueueManager$NotificationQueueManager - NotifyQueueManager running... 25461 2013-05-14 11:11:25,010 [DelayQueueManager] DEBUG org.smslib.threading.AServiceThread - Running... 25455 2013-05-14 11:11:25,004 [SwingWorker-pool-1-thread-1] DEBUG org.smslib.threading.AServiceThread - Initialized. 25462 2013-05-14 11:11:25,011 [DelayQueueManager] DEBUG org.smslib.queues.AbstractQueueManager$DelayQueueManager - DelayQueueManager running... 25463 2013-05-14 11:11:25,012 [WatchDog] DEBUG org.smslib.threading.AServiceThread - Running... 25463 2013-05-14 11:11:25,012 [Thread-15] INFO org.smslib.modem.ModemGateway - GTW: Device1: Starting gateway, using Generic AT Handler. 25465 2013-05-14 11:11:25,014 [Thread-15] INFO org.smslib.modem.SerialModemDriver - GTW: Device1: Comm port flushing is disabled. 25467 2013-05-14 11:11:25,016 [Thread-15] INFO org.smslib.modem.SerialModemDriver - GTW: Device1: Using polled serial port mode. 25467 2013-05-14 11:11:25,016 [Thread-15] INFO org.smslib.modem.SerialModemDriver - GTW: Device1: Opening: /dev/ttyUSB1 @115200 25465 2013-05-14 11:11:25,014 [Thread-16] INFO org.smslib.modem.ModemGateway - GTW: Device2: Starting gateway, using Generic AT Handler. 25472 2013-05-14 11:11:25,021 [Thread-16] INFO org.smslib.modem.SerialModemDriver - GTW: Device2: Comm port flushing is disabled. 25472 2013-05-14 11:11:25,021 [Thread-16] INFO org.smslib.modem.SerialModemDriver - GTW: Device2: Using polled serial port mode. 25472 2013-05-14 11:11:25,021 [Thread-16] INFO org.smslib.modem.SerialModemDriver - GTW: Device2: Opening: /dev/ttyUSB0 @115200 RXTX fhs_lock() Error: creating lock file: /var/lock/LCK..ttyUSB1: File exists RXTX fhs_lock() Error: creating lock file: /var/lock/LCK..ttyUSB0: File exists 25592 2013-05-14 11:11:25,141 [Thread-16] INFO org.smslib.modem.SerialModemDriver - GTW: Device2: Closing: /dev/ttyUSB0 @115200 25627 2013-05-14 11:11:25,176 [Thread-15] DEBUG org.smslib.threading.AServiceThread - Initialized. 25628 2013-05-14 11:11:25,177 [Thread-15] DEBUG org.smslib.threading.AServiceThread - Initialized. 25628 2013-05-14 11:11:25,177 [PortReader() [/dev/ttyUSB1]] DEBUG org.smslib.threading.AServiceThread - Running... 25631 2013-05-14 11:11:25,180 [Thread-15] DEBUG org.smslib.threading.AServiceThread - Initialized. 25631 2013-05-14 11:11:25,180 [KeepAlive [Device1]] DEBUG org.smslib.threading.AServiceThread - Running... 25632 2013-05-14 11:11:25,181 [Thread-15] DEBUG org.smslib.modem.AModemDriver$ModemReader - GTW: Device1: ModemReader thread started. 25631 2013-05-14 11:11:25,180 [CNMIEmulatorProcessor [Device1]] DEBUG org.smslib.threading.AServiceThread - ** disabled ** 25634 2013-05-14 11:11:25,183 [Thread-15] DEBUG org.smslib.modem.AModemDriver$AsyncNotifier - GTW: Device1: AsyncNotifier thread started. 25634 2013-05-14 11:11:25,183 [Thread-15] DEBUG org.smslib.modem.AModemDriver$AsyncMessageProcessor - GTW: Device1: AsyncMessageProcessor thread started. 25635 2013-05-14 11:11:25,184 [Thread-15] DEBUG org.smslib.modem.AModemDriver - GTW: Device1: clearBuffer() called. 25831 2013-05-14 11:11:25,380 [PortReader() [/dev/ttyUSB1]] DEBUG org.smslib.threading.AServiceThread - Running... 26031 2013-05-14 11:11:25,580 [PortReader() [/dev/ttyUSB1]] DEBUG org.smslib.threading.AServiceThread - Running... 26231 2013-05-14 11:11:25,780 [PortReader() [/dev/ttyUSB1]] DEBUG org.smslib.threading.AServiceThread - Running... 26432 2013-05-14 11:11:25,981 [PortReader() [/dev/ttyUSB1]] DEBUG org.smslib.threading.AServiceThread - Running... 26466 2013-05-14 11:11:26,015 [NotifyQueueManager] DEBUG org.smslib.notify.NotifyQueueManager$NotificationQueueManager - NotifyQueueManager end... 26466 2013-05-14 11:11:26,015 [DelayQueueManager] DEBUG org.smslib.queues.AbstractQueueManager$DelayQueueManager - DelayQueueManager end... 26566 2013-05-14 11:11:26,115 [NotifyQueueManager] DEBUG org.smslib.threading.AServiceThread - Running... 26567 2013-05-14 11:11:26,116 [NotifyQueueManager] DEBUG org.smslib.notify.NotifyQueueManager$NotificationQueueManager - NotifyQueueManager running... 26632 2013-05-14 11:11:26,181 [PortReader() [/dev/ttyUSB1]] DEBUG org.smslib.threading.AServiceThread - Running... 26635 2013-05-14 11:11:26,184 [Thread-15] DEBUG org.smslib.modem.AModemDriver - GTW: Device1: SEND :(27) 26667 2013-05-14 11:11:26,216 [WatchDog] DEBUG org.smslib.threading.AServiceThread - Stopped. 26667 2013-05-14 11:11:26,216 [SwingWorker-pool-1-thread-1] INFO org.smslib.modem.ModemGateway - GTW: Device1: Stopping gateway... 26667 2013-05-14 11:11:26,216 [NotifyQueueManager] DEBUG org.smslib.notify.NotifyQueueManager$NotificationQueueManager - NotifyQueueManager end... 26667 2013-05-14 11:11:26,216 [KeepAlive [Device1]] DEBUG org.smslib.threading.AServiceThread - Stopped. 26667 2013-05-14 11:11:26,216 [CNMIEmulatorProcessor [Device1]] DEBUG org.smslib.threading.AServiceThread - Stopped. 26668 2013-05-14 11:11:26,217 [SMSLib-AsyncNotifier : Device1] DEBUG org.smslib.modem.AModemDriver$AsyncNotifier - GTW: Device1: AsyncNotifier thread ended. 26668 2013-05-14 11:11:26,217 [SMSLib-AsyncMessageProcessor : Device1] DEBUG org.smslib.modem.AModemDriver$AsyncMessageProcessor - GTW: Device1: AsyncMessageProcessor thread ended. 26668 2013-05-14 11:11:26,217 [SMSlib-ModemReader-Device1] DEBUG org.smslib.modem.AModemDriver$ModemReader - GTW: Device1: ModemReader thread ended. 26668 2013-05-14 11:11:26,217 [PortReader() [/dev/ttyUSB1]] DEBUG org.smslib.threading.AServiceThread - Stopped. 26767 2013-05-14 11:11:26,316 [NotifyQueueManager] DEBUG org.smslib.threading.AServiceThread - Running... 26768 2013-05-14 11:11:26,317 [NotifyQueueManager] DEBUG org.smslib.notify.NotifyQueueManager$NotificationQueueManager - NotifyQueueManager running... 26768 2013-05-14 11:11:26,317 [NotifyQueueManager] DEBUG org.smslib.notify.NotifyQueueManager$NotificationQueueManager - NotifyQueueManager end... 26769 2013-05-14 11:11:26,318 [SwingWorker-pool-1-thread-1] INFO org.smslib.modem.SerialModemDriver - GTW: Device1: Closing: /dev/ttyUSB1 @115200 26769 2013-05-14 11:11:26,318 [SwingWorker-pool-1-thread-1] INFO org.smslib.modem.ModemGateway - GTW: Device1: Gateway stopped. 26769 2013-05-14 11:11:26,318 [SwingWorker-pool-1-thread-1] INFO org.smslib.modem.ModemGateway - GTW: Device2: Stopping gateway... 26769 2013-05-14 11:11:26,318 [SwingWorker-pool-1-thread-1] INFO org.smslib.modem.SerialModemDriver - GTW: Device2: Closing: /dev/ttyUSB0 @115200 26769 2013-05-14 11:11:26,318 [SwingWorker-pool-1-thread-1] INFO org.smslib.modem.ModemGateway - GTW: Device2: Gateway stopped. 26836 2013-05-14 11:11:26,385 [Thread-15] DEBUG org.smslib.modem.AModemDriver - GTW: Device1: SEND :+++ 26868 2013-05-14 11:11:26,417 [NotifyQueueManager] DEBUG org.smslib.threading.AServiceThread - Running... 26868 2013-05-14 11:11:26,417 [NotifyQueueManager] DEBUG org.smslib.notify.NotifyQueueManager$NotificationQueueManager - NotifyQueueManager running... 26868 2013-05-14 11:11:26,417 [NotifyQueueManager] DEBUG org.smslib.notify.NotifyQueueManager$NotificationQueueManager - NotifyQueueManager end... 26968 2013-05-14 11:11:26,517 [NotifyQueueManager] DEBUG org.smslib.threading.AServiceThread - Running... 26969 2013-05-14 11:11:26,518 [NotifyQueueManager] DEBUG org.smslib.notify.NotifyQueueManager$NotificationQueueManager - NotifyQueueManager running... 26969 2013-05-14 11:11:26,518 [NotifyQueueManager] DEBUG org.smslib.notify.NotifyQueueManager$NotificationQueueManager - NotifyQueueManager end... 26970 2013-05-14 11:11:26,519 [NotifyQueueManager] DEBUG org.smslib.threading.AServiceThread - Stopped. 27036 2013-05-14 11:11:26,585 [Thread-15] DEBUG org.smslib.modem.AModemDriver - GTW: Device1: SEND :ATZ(cr) 27236 2013-05-14 11:11:26,785 [Thread-15] DEBUG org.smslib.modem.AModemDriver - GTW: Device1: clearBuffer() called. 28237 2013-05-14 11:11:27,786 [Thread-15] DEBUG org.smslib.modem.AModemDriver - GTW: Device1: SEND :ATZ(cr) 28437 2013-05-14 11:11:27,986 [Thread-15] DEBUG org.smslib.modem.AModemDriver - GTW: Device1: SEND :ATE0(cr) 28637 2013-05-14 11:11:28,186 [Thread-15] DEBUG org.smslib.modem.AModemDriver - GTW: Device1: clearBuffer() called. Experimental: JNI_OnLoad called. On Sun, May 12, 2013 at 10:28 AM, yashodha srimal via SMSLib Discussion Group < smslib+noreply-apn2wqcd50gz1_mcxtztbx6b_y7lrza3nmw4jlo1ikbkth...@googlegroups.com > wrote: > > > On Tuesday, April 23, 2013 2:51:17 PM UTC+5:30, Clement Murimi wrote: >> >> I have the same problem. How do can I be able to start the application >> once >> >> >> package marksheet; >> import java.awt.*; >> import java.util.logging.Level; >> import java.util.logging.Logger; >> import javax.swing.JOptionPane; >> import org.smslib.AGateway; >> > > > > >> import org.smslib.**IOutboundMessageNotification; >> import org.smslib.Library; >> import org.smslib.OutboundMessage; >> import org.smslib.Service; >> import org.smslib.modem.**SerialModemGateway; >> >> /** >> * >> * @author user >> */ >> public class MessageFrame extends javax.swing.JFrame { >> >> /** Creates new form MessageFrame */ >> public MessageFrame() { >> initComponents(); >> >> } >> >> >> >> } >> /** This method is called from within the constructor to >> * initialize the form. >> * WARNING: Do NOT modify this code. The content of this method is >> * always regenerated by the Form Editor. >> */ >> @SuppressWarnings("unchecked") >> // <editor-fold defaultstate="collapsed" desc="Generated Code"> >> >> private void initComponents() { >> >> jPanel1 = new javax.swing.JPanel(); >> jLabel1 = new javax.swing.JLabel(); >> jLabel2 = new javax.swing.JLabel(); >> number = new javax.swing.JTextField(); >> sendbutton = new javax.swing.JButton(); >> jScrollPane1 = new javax.swing.JScrollPane(); >> message = new javax.swing.JTextArea(); >> jLabel3 = new javax.swing.JLabel(); >> jButton1 = new javax.swing.JButton(); >> >> setDefaultCloseOperation(**javax.swing.WindowConstants.** >> DISPOSE_ON_CLOSE); >> >> jLabel1.setFont(new java.awt.Font("Tw Cen MT Condensed Extra >> Bold", 1, 14)); // NOI18N >> jLabel1.setText("SEND SMS"); >> >> jLabel2.setText("TO"); >> >> number.addActionListener(new java.awt.event.ActionListener(**) { >> public void actionPerformed(java.awt.**event.ActionEvent >> evt) { >> numberActionPerformed(evt); >> } >> }); >> >> sendbutton.setText("SEND"); >> sendbutton.addActionListener(**new java.awt.event.ActionListener( >> **) { >> public void actionPerformed(java.awt.**event.ActionEvent >> evt) { >> sendbuttonActionPerformed(evt)**; >> } >> }); >> >> message.setColumns(20); >> message.setRows(5); >> jScrollPane1.setViewportView(**message); >> >> jLabel3.setText("Message"); >> >> jButton1.setText("CANCEL"); >> jButton1.addActionListener(new java.awt.event.ActionListener(**) >> { >> public void actionPerformed(java.awt.**event.ActionEvent >> evt) { >> jButton1ActionPerformed(evt); >> } >> }); >> >> javax.swing.GroupLayout jPanel1Layout = new >> javax.swing.GroupLayout(**jPanel1); >> jPanel1.setLayout(**jPanel1Layout); >> jPanel1Layout.**setHorizontalGroup( >> jPanel1Layout.**createParallelGroup(javax.** >> swing.GroupLayout.Alignment.**LEADING) >> .addGroup(javax.swing.**GroupLayout.Alignment.**TRAILING, >> jPanel1Layout.**createSequentialGroup() >> .addContainerGap(151, Short.MAX_VALUE) >> .addComponent(jLabel1, >> javax.swing.GroupLayout.**PREFERRED_SIZE, >> 100, javax.swing.GroupLayout.**PREFERRED_SIZE) >> .addGap(144, 144, 144)) >> .addGroup(jPanel1Layout.**createSequentialGroup() >> .addContainerGap() >> .addGroup(jPanel1Layout.**createParallelGroup(javax.** >> swing.GroupLayout.Alignment.**LEADING) >> .addComponent(jLabel2, >> javax.swing.GroupLayout.**PREFERRED_SIZE, >> 41, javax.swing.GroupLayout.**PREFERRED_SIZE) >> .addComponent(jLabel3)) >> .addGap(38, 38, 38) >> .addGroup(jPanel1Layout.**createParallelGroup(javax.** >> swing.GroupLayout.Alignment.**LEADING, false) >> .addGroup(jPanel1Layout.**createSequentialGroup() >> .addComponent(sendbutton, javax.swing.GroupLayout. >> **PREFERRED_SIZE, 89, javax.swing.GroupLayout.**PREFERRED_SIZE) >> >> .addPreferredGap(javax.swing.**LayoutStyle.**ComponentPlacement.RELATED, >> javax.swing.GroupLayout.**DEFAULT_SIZE, Short.MAX_VALUE) >> .addComponent(jButton1)) >> .addComponent(jScrollPane1) >> .addComponent(number, >> javax.swing.GroupLayout.**DEFAULT_SIZE, >> 203, Short.MAX_VALUE)) >> .addContainerGap(javax.swing.**GroupLayout.DEFAULT_SIZE, >> Short.MAX_VALUE)) >> ); >> jPanel1Layout.**setVerticalGroup( >> jPanel1Layout.**createParallelGroup(javax.** >> swing.GroupLayout.Alignment.**LEADING) >> .addGroup(jPanel1Layout.**createSequentialGroup() >> .addContainerGap() >> .addComponent(jLabel1) >> .addGap(15, 15, 15) >> .addGroup(jPanel1Layout.**createParallelGroup(javax.** >> swing.GroupLayout.Alignment.**BASELINE) >> .addComponent(jLabel2, >> javax.swing.GroupLayout.**PREFERRED_SIZE, >> 24, javax.swing.GroupLayout.**PREFERRED_SIZE) >> .addComponent(number, >> javax.swing.GroupLayout.**PREFERRED_SIZE, >> javax.swing.GroupLayout.**DEFAULT_SIZE, javax.swing.GroupLayout.** >> PREFERRED_SIZE)) >> .addPreferredGap(javax.swing.**LayoutStyle.** >> ComponentPlacement.UNRELATED) >> .addGroup(jPanel1Layout.**createParallelGroup(javax.** >> swing.GroupLayout.Alignment.**LEADING) >> .addComponent(jScrollPane1, javax.swing.GroupLayout.* >> *PREFERRED_SIZE, 147, javax.swing.GroupLayout.**PREFERRED_SIZE) >> .addComponent(jLabel3)) >> .addGap(18, 18, 18) >> .addGroup(jPanel1Layout.**createParallelGroup(javax.** >> swing.GroupLayout.Alignment.**LEADING) >> .addComponent(sendbutton) >> .addComponent(jButton1)) >> .addContainerGap(22, Short.MAX_VALUE)) >> ); >> >> javax.swing.GroupLayout layout = new javax.swing.GroupLayout(** >> getContentPane()); >> getContentPane().setLayout(**layout); >> layout.setHorizontalGroup( >> layout.createParallelGroup(**javax.swing.GroupLayout.** >> Alignment.LEADING) >> .addComponent(jPanel1, >> javax.swing.GroupLayout.**Alignment.TRAILING, >> javax.swing.GroupLayout.**DEFAULT_SIZE, >> javax.swing.GroupLayout.**DEFAULT_SIZE, >> Short.MAX_VALUE) >> ); >> layout.setVerticalGroup( >> layout.createParallelGroup(**javax.swing.GroupLayout.** >> Alignment.LEADING) >> .addComponent(jPanel1, >> javax.swing.GroupLayout.**Alignment.TRAILING, >> javax.swing.GroupLayout.**DEFAULT_SIZE, >> javax.swing.GroupLayout.**DEFAULT_SIZE, >> Short.MAX_VALUE) >> ); >> >> pack(); >> }// </editor-fold> >> >> private void sendbuttonActionPerformed(**java.awt.event.ActionEvent >> evt) { >> try { >> doIt(); >> >> } catch (Exception ex) { >> >> Logger.getLogger(MessageFrame.**class.getName()).log(Level.**SEVERE, >> null, ex); >> JOptionPane.showMessageDialog(**this, "Message Sending >> Failed"); >> } >> >> } >> >> private void numberActionPerformed(java.**awt.event.ActionEvent evt) >> { >> // TODO add your handling code here: >> } >> >> private void jButton1ActionPerformed(java.**awt.event.ActionEvent >> evt) { >> this.dispose(); // TODO add your handling code here: >> } >> >> public void doIt() throws Exception >> { >> >> OutboundNotification outboundNotification = new >> OutboundNotification(); >> System.out.println("Example: Send message from a serial gsm modem."); >> System.out.println(Library.**getLibraryDescription()); >> System.out.println("Version: " + Library.getLibraryVersion()); >> SerialModemGateway gateway = new SerialModemGateway("modem.**com39", >> "COM39", 115200, "Huawei", ""); >> gateway.setInbound(true); >> gateway.setOutbound(true); >> gateway.setSimPin("4057"); >> // Explicit SMSC address set is required for some modems. >> gateway.setSmscNumber("+**254722500029"); >> Service.getInstance().**setOutboundMessageNotification** >> (outboundNotification); >> Service.getInstance().**addGateway(gateway); >> Service.getInstance().**startService(); >> System.out.println(); >> System.out.println("Modem Information:"); >> System.out.println(" Manufacturer: " + gateway.getManufacturer()); >> System.out.println(" Model: " + gateway.getModel()); >> System.out.println(" Serial No: " + gateway.getSerialNo()); >> System.out.println(" SIM IMSI: " + gateway.getImsi()); >> System.out.println(" Signal Level: " + gateway.getSignalLevel() + " >> dBm"); >> System.out.println(" Battery Level: " + gateway.getBatteryLevel() + "%"); >> System.out.println(); >> // Send a message synchronously. >> String phonenumber=number.getText(); >> String text=message.getText(); >> OutboundMessage msg = new OutboundMessage(phonenumber, >> text); >> Service.getInstance().**sendMessage(msg); >> System.out.println(msg); >> Service.getInstance().**stopService(); >> JOptionPane.showMessageDialog(**null, "Message sent"); >> System.out.println("Now Sleeping - Hit <enter> to terminate."); >> System.in.read(); >> Service.getInstance().**stopService(); >> number.setText(null); >> message.setText(null); >> //this.dispose(); >> } >> >> public class OutboundNotification implements >> IOutboundMessageNotification >> { >> public void process(AGateway gateway, OutboundMessage msg) >> { >> System.out.println("Outbound handler called from Gateway: " + >> gateway.getGatewayId()); >> System.out.println(msg); >> } >> } >> /** >> * @param args the command line arguments >> */ >> >> // Variables declaration - do not modify >> private javax.swing.JButton jButton1; >> private javax.swing.JLabel jLabel1; >> private javax.swing.JLabel jLabel2; >> private javax.swing.JLabel jLabel3; >> private javax.swing.JPanel jPanel1; >> private javax.swing.JScrollPane jScrollPane1; >> private javax.swing.JTextArea message; >> private javax.swing.JTextField number; >> private javax.swing.JButton sendbutton; >> // End of variables declaration >> } >> >>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "SMSLib Discussion Group" group. >>>> >>>> stop gateway and remove gateway in the same method >>> >>> >>> -- > You received this message because you are subscribed to the Google Groups > "SMSLib Discussion Group" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/smslib/-/nvbdUoh5EGIJ. > > > -- Thanks and Regards, Balvant Desai. -- You received this message because you are subscribed to the Google Groups "SMSLib Discussion Group" group.
