Hello All,
Today I updated my program as below. I'm able to run this program without any exception. But, it never received even a single cov notification for hours.
Any idea/help/support is much appreciated !
Thank you very much.
Manoj
import java.net.InetSocketAddress;
import com.serotonin.bacnet4j.LocalDevice;
import com.serotonin.bacnet4j.RemoteDevice;
import com.serotonin.bacnet4j.RemoteObject;
import com.serotonin.bacnet4j.event.DeviceEventListener;
import com.serotonin.bacnet4j.npdu.ip.IpNetwork;
import com.serotonin.bacnet4j.obj.BACnetObject;
import com.serotonin.bacnet4j.service.confirmed.ReinitializeDeviceRequest.ReinitializedStateOfDevice;
import com.serotonin.bacnet4j.service.unconfirmed.UnconfirmedCovNotificationRequest;
import com.serotonin.bacnet4j.transport.DefaultTransport;
import com.serotonin.bacnet4j.transport.Transport;
import com.serotonin.bacnet4j.type.constructed.Address;
import com.serotonin.bacnet4j.type.constructed.Choice;
import com.serotonin.bacnet4j.type.constructed.DateTime;
import com.serotonin.bacnet4j.type.constructed.PropertyValue;
import com.serotonin.bacnet4j.type.constructed.Sequence;
import com.serotonin.bacnet4j.type.constructed.SequenceOf;
import com.serotonin.bacnet4j.type.constructed.TimeStamp;
import com.serotonin.bacnet4j.type.enumerated.EventState;
import com.serotonin.bacnet4j.type.enumerated.EventType;
import com.serotonin.bacnet4j.type.enumerated.MessagePriority;
import com.serotonin.bacnet4j.type.enumerated.NotifyType;
import com.serotonin.bacnet4j.type.enumerated.ObjectType;
import com.serotonin.bacnet4j.type.notificationParameters.NotificationParameters;
import com.serotonin.bacnet4j.type.primitive.Boolean;
import com.serotonin.bacnet4j.type.primitive.CharacterString;
import com.serotonin.bacnet4j.type.primitive.ObjectIdentifier;
import com.serotonin.bacnet4j.type.primitive.UnsignedInteger;
import com.serotonin.bacnet4j.util.DiscoveryUtils;
public class UnconfirmedCovTest {
	public static void main(String[] args) {
		IpNetwork network = new IpNetwork("192.23.29.46", 47808);
		Transport transport = new DefaultTransport(network);
        
		LocalDevice localDevice = new LocalDevice(999, transport);
		
		try {
            localDevice.initialize();
            localDevice.getEventHandler().addListener(
					new DeviceEventListener() {
						
						@Override
						public void textMessageReceived(RemoteDevice arg0, Choice arg1, MessagePriority arg2, CharacterString arg3) {
							System.out.println(	"textMessageReceived : "
									+ arg0 );
						}
						
						@Override
						public void synchronizeTime(Address arg0, DateTime arg1, boolean arg2) {
							System.out.println(	"synchronizeTime : "
									+ arg0 );
						}
						
						@Override
						public void reinitializeDevice(Address arg0, ReinitializedStateOfDevice arg1) {
							System.out.println(	"reinitializeDevice : "
									+ arg0 );
						}
						
						@Override
						public void propertyWritten(Address arg0, BACnetObject arg1, PropertyValue arg2) {
							System.out.println(	"propertyWritten : "
									+ arg0 );
						}
						
						@Override
						public void privateTransferReceived(Address arg0, UnsignedInteger arg1, UnsignedInteger arg2, Sequence arg3) {
							System.out.println(	"privateTransferReceived : "
									+ arg0 );							
						}
						
						@Override
						public void listenerException(Throwable arg0) {
							System.out.println(	"listenerException : "
									+ arg0 );
						}
						
						@Override
						public void iHaveReceived(RemoteDevice arg0, RemoteObject arg1) {
							System.out.println(	"iHaveReceived : "
									+ arg0 );
						}
						
						@Override
						public void iAmReceived(RemoteDevice arg0) {
							System.out.println(	"iAmReceived : "
									+ arg0 );
						}
						
						@Override
						public void eventNotificationReceived(UnsignedInteger arg0, RemoteDevice arg1, ObjectIdentifier arg2,
								TimeStamp arg3, UnsignedInteger arg4, UnsignedInteger arg5, EventType arg6, CharacterString arg7,
								NotifyType arg8, Boolean arg9, EventState arg10, EventState arg11, NotificationParameters arg12) {
							System.out.println(	"eventNotificationReceived.arg0 : "
									+ arg0 );
							System.out.println(	"eventNotificationReceived.arg1 : "
									+ arg1 );
							System.out.println(	"eventNotificationReceived.arg2 : "
									+ arg2 );
							System.out.println(	"eventNotificationReceived.arg3 : "
									+ arg3 );
						}
						
						@Override
						public void covNotificationReceived(UnsignedInteger arg0, RemoteDevice arg1, ObjectIdentifier arg2,
								UnsignedInteger arg3, SequenceOf<PropertyValue> arg4) {
							System.out.println(	"covNotificationReceived.arg0 : "
									+ arg0 );
						}
						
						@Override
						public boolean allowPropertyWrite(Address arg0, BACnetObject arg1, PropertyValue arg2) {
							System.out.println(	"allowPropertyWrite.arg0 : "
									+ arg0 );
							return false;
						}
					}
				);
            
            network.registerAsForeignDevice(new InetSocketAddress("192.23.29.46", 47808),9000 );
            Thread.sleep(2000);
            RemoteDevice d = DiscoveryUtils.discoverDevice(localDevice,700710);
            
            if (d == null)
            {
                throw new RuntimeException("Remote device not found");
            } 
            else 
            {
            	final ObjectIdentifier oid = new ObjectIdentifier(ObjectType.analogInput, Integer.valueOf("10"));
            	
            	final SequenceOf<PropertyValue> listOfValues = new SequenceOf<>();
    			
    			final UnconfirmedCovNotificationRequest unconfirmedCovRequest = 
    					new UnconfirmedCovNotificationRequest( new UnsignedInteger(1), 
    							localDevice.getConfiguration().getId(), oid, new UnsignedInteger(60), 
    							listOfValues );
    			
    			localDevice.send( d.getAddress(), unconfirmedCovRequest );
    			//localDevice.sendBroadcast( d.getAddress(), unconfirmedCovRequest );
    			
    			System.out.println( "Sent unconfirmed cov request !!" );
            }
		} catch ( Exception e ) {
			e.printStackTrace();
        }
	}
}