HI,

gateway :     modem.com22", "COM6", 115200, "huawei", "E1750"

I am able to read the message. But the problem is with inbound listener.

It printing all the messages in the inbox every time(Say in frequent 
period) instead of the latest Incoming Message.

I want the notification listener only to print the latest message. Please 
help me



Code here (Same in SRC)
__________________________________


// ReadMessages.java - Sample application.
//
// This application shows you the basic procedure needed for reading
// SMS messages from your GSM modem, in synchronous mode.
//
// Operation description:
// The application setup the necessary objects and connects to the phone.
// As a first step, it reads all messages found in the phone.
// Then, it goes to sleep, allowing the asynchronous callback handlers to
// be called. Furthermore, for callback demonstration purposes, it responds
// to each received message with a "Got It!" reply.
//
// Tasks:
// 1) Setup Service object.
// 2) Setup one or more Gateway objects.
// 3) Attach Gateway objects to Service object.
// 4) Setup callback notifications.
// 5) Run

package com.hp;

import java.util.ArrayList;
import java.util.List;
import javax.crypto.spec.SecretKeySpec;
import org.smslib.AGateway;
import org.smslib.AGateway.GatewayStatuses;
import org.smslib.AGateway.Protocols;
import org.smslib.ICallNotification;
import org.smslib.IGatewayStatusNotification;
import org.smslib.IInboundMessageNotification;
import org.smslib.IOrphanedMessageNotification;
import org.smslib.InboundMessage;
import org.smslib.InboundMessage.MessageClasses;
import org.smslib.Library;
import org.smslib.Message.MessageTypes;
import org.smslib.Service;
import org.smslib.crypto.AESKey;
import org.smslib.modem.SerialModemGateway;

public class ReadMessages
{
    public void doIt() throws Exception
    {
        // Define a list which will hold the read messages.
        List<InboundMessage> msgList;
        // Create the notification callback method for inbound & status 
report
        // messages.
        InboundNotification inboundNotification = new InboundNotification();
        // Create the notification callback method for inbound voice calls.
        CallNotification callNotification = new CallNotification();
        //Create the notification callback method for gateway statuses.
        GatewayStatusNotification statusNotification = new 
GatewayStatusNotification();
        OrphanedMessageNotification orphanedMessageNotification = new 
OrphanedMessageNotification();
        try
        {
            System.out.println("Example: Read messages from a serial gsm 
modem.");
            System.out.println(Library.getLibraryDescription());
            System.out.println("Version: " + Library.getLibraryVersion());
            // Create the Gateway representing the serial GSM modem.
            SerialModemGateway gateway = new 
SerialModemGateway("modem.com1", "COM6", 115200, "Huawei", "E160");
            // Set the modem protocol to PDU (alternative is TEXT). PDU is 
the default, anyway...
            gateway.setProtocol(Protocols.PDU);
            // Do we want the Gateway to be used for Inbound messages?
            gateway.setInbound(true);
            // Do we want the Gateway to be used for Outbound messages?
            gateway.setOutbound(true);
            // Let SMSLib know which is the SIM PIN.
            gateway.setSimPin("0000");
            // Set up the notification methods.
            
Service.getInstance().setInboundMessageNotification(inboundNotification);
            Service.getInstance().setCallNotification(callNotification);
            
Service.getInstance().setGatewayStatusNotification(statusNotification);
            
Service.getInstance().setOrphanedMessageNotification(orphanedMessageNotification);
            // Add the Gateway to the Service object.
            Service.getInstance().addGateway(gateway);
            // Similarly, you may define as many Gateway objects, 
representing
            // various GSM modems, add them in the Service object and 
control all of them.
            // Start! (i.e. connect to all defined Gateways)
            Service.getInstance().startService();
            // Printout some general information about the modem.
            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();
            // In case you work with encrypted messages, its a good time to 
declare your keys.
            // Create a new AES Key with a known key value. 
            // Register it in KeyManager in order to keep it active. SMSLib 
will then automatically
            // encrypt / decrypt all messages send to / received from this 
number.
            
Service.getInstance().getKeyManager().registerKey("+306948494037", new 
AESKey(new SecretKeySpec("0011223344556677".getBytes(), "AES")));
            // Read Messages. The reading is done via the Service object and
            // affects all Gateway objects defined. This can also be more 
directed to a specific
            // Gateway - look the JavaDocs for information on the Service 
method calls.
            msgList = new ArrayList<InboundMessage>();
            Service.getInstance().readMessages(msgList, MessageClasses.ALL);
            for (InboundMessage msg : msgList)
                System.out.println(msg);
            // Sleep now. Emulate real world situation and give a chance to 
the notifications
            // methods to be called in the event of message or voice call 
reception.
            System.out.println("Now Sleeping - Hit <enter> to stop 
service.");
            System.in.read();
            System.in.read();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            Service.getInstance().stopService();
        }
    }

    public class InboundNotification implements IInboundMessageNotification
    {
        public void process(AGateway gateway, MessageTypes msgType, 
InboundMessage msg)
        {
            if (msgType == MessageTypes.INBOUND) System.out.println(">>> 
New Inbound message detected from Gateway: " + gateway.getGatewayId());
            else if (msgType == MessageTypes.STATUSREPORT) 
System.out.println(">>> New Inbound Status Report message detected from 
Gateway: " + gateway.getGatewayId());
            System.out.println(msg);
        }
    }

    public class CallNotification implements ICallNotification
    {
        public void process(AGateway gateway, String callerId)
        {
            System.out.println(">>> New call detected from Gateway: " + 
gateway.getGatewayId() + " : " + callerId);
        }
    }

    public class GatewayStatusNotification implements 
IGatewayStatusNotification
    {
        public void process(AGateway gateway, GatewayStatuses oldStatus, 
GatewayStatuses newStatus)
        {
            System.out.println(">>> Gateway Status change for " + 
gateway.getGatewayId() + ", OLD: " + oldStatus + " -> NEW: " + newStatus);
        }
    }

    public class OrphanedMessageNotification implements 
IOrphanedMessageNotification
    {
        public boolean process(AGateway gateway, InboundMessage msg)
        {
            System.out.println(">>> Orphaned message part detected from " + 
gateway.getGatewayId());
            System.out.println(msg);
            // Since we are just testing, return FALSE and keep the 
orphaned message part.
            return false;
        }
    }

    public static void main(String args[])
    {
        ReadMessages app = new ReadMessages();
        try
        {
            app.doIt();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

-- 
You received this message because you are subscribed to the Google Groups 
"SMSLib Discussion Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msg/smslib/-/1QLjsg8egsgJ.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to