package mil.navy.nps.testing; import java.text.*; // for class DecimalFormat import java.util.*; // for class Vector import mil.navy.nps.dis.*; // for class EntityStatePdu import mil.navy.nps.util.*; import mil.navy.nps.disEnumerations.*; import mil.navy.nps.relate.*; import java.io.*; //==================================================================== // Designed by Dave Laflam //==================================================================== // read me // // please run the PduTestListener.java in separate console window so it can // receive the PDU from the TransmitPduTestListener.java or any othere PDU Tester // I.E run two windows // usage c:> java mil.navy.nps.testing.PduTestListener //==================================================================== // // Last update 19 Aug 2000 // //==================================================================== public class PduTestListener extends Thread { private float pduSendInterval; // time delay between pdus private DecimalFormat df; // pretty print screen output private BehaviorStreamBufferUDP behaviorStreamBufferUDP; // tie in to the network private String ipAddress; private int portNumber; private static int timeToLive = 15; // default ttl convention is local campus private static int sleepTime = 0; private static boolean rtpMatch = false; private static boolean traceCommandLineFlag = false; private int sleepTimeMilliSeconds = 50; //============================================================================================= // Constructors & Start //============================================================================================= public PduTestListener() // constructor { df = new DecimalFormat("###.00"); // instantiate a BehaviorStreamBufferUDP to handle the network interface, instantiate with // the multicast IP address and port ipAddress = "224.2.181.145"; portNumber = 62040; behaviorStreamBufferUDP = new BehaviorStreamBufferUDP(ipAddress, portNumber); Thread pduReader = new Thread(behaviorStreamBufferUDP); pduReader.start(); behaviorStreamBufferUDP.setTimeToLive (timeToLive); } // end constructor //==================================================================== public void run() // start sending espdus, called from TestFrame.java { collectPdus(); // calls flying which is an infinite espdu-sending loop } //==================================================================== public void stopRun() { behaviorStreamBufferUDP.shutdown (); } //==================================================================== public void collectPdus(){ // System.out.println("CollectingPdus()"); Vector entityPdus = new Vector(); Vector pdus = behaviorStreamBufferUDP.receivedPdus(); // System.out.println("\n# of Pdus in the Vector = " + pdus.size()); for (Enumeration enum = pdus.elements(); enum.hasMoreElements();) { ProtocolDataUnit tempPdu = (ProtocolDataUnit)enum.nextElement(); UnsignedByte pduType = tempPdu.getPduType(); if (pduType.shortValue() == PduTypeField.ENTITYSTATE) { //System.out.println("Receive an entity Pdu"); EntityID mover = ((EntityStatePdu)tempPdu).getEntityID(); } //end if else if (pduType.shortValue() == PduTypeField.COLLISION) { //System.out.println("Receive a collision Pdu"); EntityID collided = ((CollisionPdu)tempPdu).getIssuingEntityID(); } //end else if else if (pduType.shortValue() == PduTypeField.DETONATION) { //System.out.println("Receive a collision Pdu"); EntityID detonated = ((DetonationPdu)tempPdu).getTargetEntityID(); } //end else if else if (pduType.shortValue() == PduTypeField.DATA) { //do nothing } //end else if else if (pduType.shortValue() == PduTypeField.RECEIVER) { ReceiverPdu received = (ReceiverPdu)tempPdu; System.out.println(" "); System.out.println(" "); System.out.println(" "); System.out.println("Testing the get methods "); System.out.println(" "); System.out.println("In PduTestListener, received a Receiver PDU, EntityID = " + received.getEntityID()); System.out.println("In PduTestListener, received a Receiver PDU, RadioID = " + received.getRadioID()); System.out.println("In PduTestListener, received a Receiver PDU, ReceiverState = " + received.getReceiverState()); System.out.println("In PduTestListener, received a Receiver PDU, ReceiverPower = " + received.getReceiverPower()); System.out.println("In PduTestListener, received a Receiver PDU, TransmitterEntityID = " + received.getTransmitterEntityID()); System.out.println("In PduTestListener, received a Receiver PDU, TransmitterRadioID = " + received.getTransmitterRadioID()); System.out.println(" "); System.out.println("Test the toString Method "); System.out.println(" "); System.out.println("In PduTestListener, received a ReceiverPDU, ReceiverObject. = " + received); } //end else if else if (pduType.shortValue() == PduTypeField.SIGNAL) { SignalPdu signal = (SignalPdu)tempPdu; System.out.println(" "); System.out.println(" "); System.out.println(" "); System.out.println("Testing the get methods "); System.out.println(" "); System.out.println("In PduTestListener, received a SignalPdu, EentityID = " + signal.getEntityID()); System.out.println("In PduTestListener, received a SignalPdu, RadioID = " + signal.getRadioID()); System.out.println("In PduTestListener, received a SignalPdu, EncodingScheme = " + signal.getEncodingScheme()); System.out.println("In PduTestListener, received a SignalPdu, tdlType = " + signal.getTdlType()); System.out.println("In PduTestListener, received a SignalPdu, SampleRate = " + signal.getSampleRate()); System.out.println("In PduTestListener, received a SignalPdu, DataLength = " + signal.getDataLength()); System.out.println("In PduTestListener, received a SignalPdu, Samples = " + signal. getSamples()); System.out.println("In PduTestListener, received a SignalPdu, Data0 = " + signal.getData00 ()); System.out.println("In PduTestListener, received a SignalPdu, Data0 = " + signal.getData01 ()); System.out.println("In PduTestListener, received a SignalPdu, Data0 = " + signal.getData02 ()); System.out.println("In PduTestListener, received a SignalPdu, Data0 = " + signal.getData03 ()); System.out.println("In PduTestListener, received a SignalPdu, Data0 = " + signal.getData04 ()); System.out.println("In PduTestListener, received a SignalPdu, Data0 = " + signal.getData05 ()); System.out.println("In PduTestListener, received a SignalPdu, Data0 = " + signal.getData06 ()); System.out.println("In PduTestListener, received a SignalPdu, Data0 = " + signal.getData07 ()); System.out.println("In PduTestListener, received a SignalPdu, Data0 = " + signal.getData08 ()); System.out.println("In PduTestListener, received a SignalPdu, Data0 = " + signal.getData09 ()); System.out.println("In PduTestListener, received a SignalPdu, Data0 = " + signal.getData10 ()); System.out.println(" "); System.out.println("Test the toString Method "); System.out.println(" "); System.out.println("In PduTestListener, received a SignalPdu, SignalObject. = " + signal); } //end else if else if (pduType.shortValue() == PduTypeField.TRANSMITTER) { TransmitterPdu transmitter = (TransmitterPdu)tempPdu; System.out.println(" "); System.out.println(" "); System.out.println(" "); System.out.println("Testing the get methods "); System.out.println(" "); System.out.println("In PduTestListener, received a TransmitterPdu, EntityID = " + transmitter.getEntityID()); System.out.println("In PduTestListener, received a TransmitterPdu, RadioID = " + transmitter.getRadioID()); System.out.println("In PduTestListener, received a TransmitterPdu, RadioEntityType = " + transmitter.getRadioEntityType()); System.out.println("In PduTestListener, received a TransmitterPdu, TransmitState = " + transmitter.getTransmitState()); System.out.println("In PduTestListener, received a TransmitterPdu, InputSource = " + transmitter.getInputSource()); System.out.println("In PduTestListener, received a TransmitterPdu, AntennaLocation = " + transmitter.getAntennaLocation()); System.out.println("In PduTestListener, received a TransmitterPdu, elativeAntennaLocation = " + transmitter.getRelativeAntennaLocation()); System.out.println("In PduTestListener, received a TransmitterPdu, AntennaPatternType = " + transmitter.getAntennaPatternType()); System.out.println("In PduTestListener, received a TransmitterPdu, AntennaPatternLength = " + transmitter.getAntennaPatternLength()); System.out.println("In PduTestListener, received a TransmitterPdu, Frequency = " + transmitter.getFrequency()); System.out.println("In PduTestListener, received a TransmitterPdu, TransmitFrequencyBandwidth = " + transmitter.getTransmitFrequencyBandwidth()); System.out.println("In PduTestListener, received a TransmitterPdu, Power = " + transmitter.getPower()); System.out.println("In PduTestListener, received a TransmitterPdu, ModulationType = "); System.out.println(transmitter.getModulationType()); System.out.println(" "); System.out.println("In PduTestListener, received a TransmitterPdu, CryptoSytem = " + transmitter.getCryptoSytem()); System.out.println("In PduTestListener, received a TransmitterPdu, CryptoKeyId = " + transmitter.getCryptoKeyId()); System.out.println("In PduTestListener, received a TransmitterPdu, LengthOfModulationParameters = " + transmitter.getLengthOfModulationParameters()); System.out.println(" "); System.out.println("Test the toString Method "); System.out.println(" "); System.out.println("In PduTestListener, received a TransmitterPdu, Transmitter Object. = " + transmitter); } //end else if } // end for } // end collectPdus() public static void main(String[] args){ // I could not get the threading to work properly put into an end less while loop /* boolean ttlMatch = false; boolean sleepMatch = false; for (int index = 0; index < args.length; index++) { if (!rtpMatch) try { rtpMatch = ((args[index].compareToIgnoreCase ( "rtp") == 0) || (args[index].compareToIgnoreCase ("-rtp") == 0)); if (rtpMatch) continue; } catch (java.lang.NoSuchMethodError nsme) // prior to jdk 1.2 { rtpMatch = ((args[index].compareTo ( "rtp") == 0) || (args[index].compareTo ("-rtp") == 0) || (args[index].compareTo ( "RTP") == 0) || (args[index].compareTo ("-RTP") == 0)); if (rtpMatch) continue; } if (!traceCommandLineFlag) try { traceCommandLineFlag = ((args[index].compareToIgnoreCase( "trace") == 0) || (args[index].compareToIgnoreCase("-trace") == 0)); if (traceCommandLineFlag) continue; } catch (java.lang.NoSuchMethodError nsme) // prior to jdk 1.2 { traceCommandLineFlag = ((args[index].compareTo( "trace") == 0) || (args[index].compareTo("-trace") == 0) || (args[index].compareTo ( "TRACE") == 0) || (args[index].compareTo ("-TRACE") == 0)); if (traceCommandLineFlag) continue; } if (!(ttlMatch) && (args.length - index > 1)) { try { ttlMatch = ((args[index].compareToIgnoreCase ( "ttl") == 0) || (args[index].compareToIgnoreCase ("-ttl") == 0) || (args[index].compareToIgnoreCase ( "timeToLive") == 0) || (args[index].compareToIgnoreCase ("-timeToLive") == 0)); } catch (java.lang.NoSuchMethodError nsme) // prior to jdk 1.2 { ttlMatch = ((args[index].compareTo ( "ttl") == 0) || (args[index].compareTo ("-ttl") == 0) || (args[index].compareTo ( "timeToLive") == 0) || (args[index].compareTo ("-timeToLive") == 0)); } if (ttlMatch) { try { timeToLive = Integer.parseInt(args[index+1]); index++; } catch(Exception e) { System.out.println(e); System.out.println("illegal timeToLive value, exiting"); System.exit (-1); } if ((timeToLive < 0) || (timeToLive > 127)) { System.out.println ("multicast timeToLive ttl=" + timeToLive + " is out of range [0..127], exiting"); System.exit (-1); } continue; } } if (!(sleepMatch) && (args.length - index > 1)) { try { sleepMatch = ((args[index].compareToIgnoreCase ( "pause") == 0) || (args[index].compareToIgnoreCase ("-pause") == 0) || (args[index].compareToIgnoreCase ( "sleep") == 0) || (args[index].compareToIgnoreCase ("-sleep") == 0) || (args[index].compareToIgnoreCase ( "wait") == 0) || (args[index].compareToIgnoreCase ("-wait") == 0)); } catch (java.lang.NoSuchMethodError nsme) // prior to jdk 1.2 { sleepMatch = ((args[index].compareTo ( "pause") == 0) || (args[index].compareTo ("-pause") == 0) || (args[index].compareTo ( "sleep") == 0) || (args[index].compareTo ("-sleep") == 0) || (args[index].compareTo ( "wait") == 0) || (args[index].compareTo ("-wait") == 0)); } if (sleepMatch) { try { sleepTime = Integer.parseInt(args[index+1]); index++; } catch(Exception e) { System.out.println(e); System.out.println("illegal sleepTime value, exiting"); System.exit (-1); } if ((sleepTime < 0) || (sleepTime > 60)) { System.out.println ("sleepTime=" + sleepTime + " is out of range (0..60 sec), ignored"); System.exit (-1); } else { for (int sleepCount = 0; sleepCount < sleepTime; sleepCount++) { try { Thread.sleep( 1000 ); // ms } catch (InterruptedException ie) { System.out.println ("fitful sleep: " + ie); } if (sleepCount == 0) System.out.print("Pause before starting"); System.out.print("."); } System.out.println(); } continue; } } else { System.out.println("Usage: java demo.helicopter.Referee [-ttl ] [-pause ] [-rtp] [-trace]"); System.exit (-1); } } System.out.println ("multicast timeToLive ttl=" + timeToLive); System.out.println ("RTP headers prepended=" + rtpMatch); */ PduTestListener stripeShirt = new PduTestListener(); // the endless while loop while(true) { stripeShirt.collectPdus(); } } // end main } // end class PduTestListener.java