Skip to content

Commit

Permalink
Merge pull request #142 from Eihof/ua-beam-data-fix
Browse files Browse the repository at this point in the history
Update AcousticBeamData.java
  • Loading branch information
leif81 authored Apr 18, 2024
2 parents 5d24384 + 43756fe commit 2eb4023
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 6 deletions.
12 changes: 6 additions & 6 deletions src/main/java/edu/nps/moves/dis/AcousticBeamData.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class AcousticBeamData extends Object implements Serializable {
/**
* beam data length
*/
protected int beamDataLength;
protected short beamDataLength;

/**
* beamIDNumber
Expand All @@ -42,19 +42,19 @@ public AcousticBeamData() {
public int getMarshalledSize() {
int marshalSize = 0;

marshalSize = marshalSize + 2; // beamDataLength
marshalSize = marshalSize + 1; // beamDataLength
marshalSize = marshalSize + 1; // beamIDNumber
marshalSize = marshalSize + 2; // pad2
marshalSize = marshalSize + fundamentalDataParameters.getMarshalledSize(); // fundamentalDataParameters

return marshalSize;
}

public void setBeamDataLength(int pBeamDataLength) {
public void setBeamDataLength(short pBeamDataLength) {
beamDataLength = pBeamDataLength;
}

public int getBeamDataLength() {
public short getBeamDataLength() {
return beamDataLength;
}

Expand Down Expand Up @@ -92,7 +92,7 @@ public AcousticBeamFundamentalParameter getFundamentalDataParameters() {
* @since ??
*/
public void marshal(java.nio.ByteBuffer buff) {
buff.putShort((short) beamDataLength);
buff.put((byte) beamDataLength);
buff.put((byte) beamIDNumber);
buff.putShort((short) pad2);
fundamentalDataParameters.marshal(buff);
Expand All @@ -107,7 +107,7 @@ public void marshal(java.nio.ByteBuffer buff) {
* @since ??
*/
public void unmarshal(java.nio.ByteBuffer buff) {
beamDataLength = (int) (buff.getShort() & 0xFFFF);
beamDataLength = (short) (buff.get() & 0xFF);
beamIDNumber = (short) (buff.get() & 0xFF);
pad2 = (int) (buff.getShort() & 0xFFFF);
fundamentalDataParameters.unmarshal(buff);
Expand Down
109 changes: 109 additions & 0 deletions src/test/java/edu/nps/moves/dis/UaPduTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package edu.nps.moves.dis;

import static org.junit.Assert.assertEquals;

import java.io.IOException;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import edu.nps.moves.disutil.PduFactory;

/**
*
* @author fo
*/
public class UaPduTest {

public UaPduTest() {
}

@BeforeClass
public static void setUpClass() {
}

@AfterClass
public static void tearDownClass() {
}

@Before
public void setUp() {
}

@After
public void tearDown() {
}

@Test
public void marshal() {
UaPdu uapdu = new UaPdu();

byte[] buffer = uapdu.marshal();

assertEquals(buffer.length, uapdu.getLength());
}

@Test
public void unmarshal() throws IOException {
PduFactory factory = new PduFactory();
Pdu pdu = factory.createPdu(edu.nps.moves.dis.PduFileLoader.load("UAPduV6.raw"));

// Header
assertEquals(6, pdu.getProtocolVersion());
assertEquals(1, pdu.getExerciseID());
assertEquals(29, pdu.getPduType());
assertEquals(6, pdu.getProtocolFamily());
assertEquals(76, pdu.getLength());

UaPdu uaPdu = (UaPdu) pdu;

// Emitting Entity ID
assertEquals(1000, uaPdu.getEmittingEntityID().getSite());
assertEquals(224, uaPdu.getEmittingEntityID().getApplication());
assertEquals(413, uaPdu.getEmittingEntityID().getEntity());

// Event ID
assertEquals(0, uaPdu.getEventID().getSite());
assertEquals(0, uaPdu.getEventID().getApplication());
assertEquals(0, uaPdu.getEventID().getEventNumber());

// Change Indicator
assertEquals(0, uaPdu.getStateChangeIndicator());

// Passive Parameter Index
assertEquals(0, uaPdu.getPassiveParameterIndex());

// Shaft
assertEquals(0, uaPdu.getNumberOfShafts());

// APA
assertEquals(0, uaPdu.getNumberOfAPAs());

// Emitter Systems
assertEquals(1, uaPdu.getNumberOfUAEmitterSystems());
assertEquals(11, uaPdu.getEmitterSystems().get(0).getEmitterSystemDataLength());
assertEquals(1, uaPdu.getEmitterSystems().get(0).getAcousticEmitterSystem().getAcousticID());
assertEquals(2001, uaPdu.getEmitterSystems().get(0).getAcousticEmitterSystem().getAcousticName());
assertEquals(1, uaPdu.getEmitterSystems().get(0).getAcousticEmitterSystem().getAcousticFunction());

// Relative Position
assertEquals(-0.00572799, uaPdu.getEmitterSystems().get(0).getEmitterLocation().getX(), 0.00001);
assertEquals(-0.0106909, uaPdu.getEmitterSystems().get(0).getEmitterLocation().getY(), 0.00001);
assertEquals(-5.99993, uaPdu.getEmitterSystems().get(0).getEmitterLocation().getZ(), 0.00001);

// Acoustic Beams
assertEquals(1, uaPdu.getEmitterSystems().get(0).getBeamRecords().size());
assertEquals(1, uaPdu.getEmitterSystems().get(0).getNumberOfBeams());
assertEquals(6, uaPdu.getEmitterSystems().get(0).getBeamRecords().get(0).getBeamDataLength());
assertEquals(0, uaPdu.getEmitterSystems().get(0).getBeamRecords().get(0).getBeamIDNumber());
assertEquals(1, uaPdu.getEmitterSystems().get(0).getBeamRecords().get(0).getFundamentalDataParameters().getActiveEmissionParameterIndex());
assertEquals(0, uaPdu.getEmitterSystems().get(0).getBeamRecords().get(0).getFundamentalDataParameters().getScanPattern());
assertEquals(6.28319, uaPdu.getEmitterSystems().get(0).getBeamRecords().get(0).getFundamentalDataParameters().getAzimuthalBeamwidth(), 0.00001);
assertEquals(0, uaPdu.getEmitterSystems().get(0).getBeamRecords().get(0).getFundamentalDataParameters().getBeamCenterAzimuth(), 0.00001);
assertEquals(0, uaPdu.getEmitterSystems().get(0).getBeamRecords().get(0).getFundamentalDataParameters().getBeamCenterDE(), 0.00001);
assertEquals(0, uaPdu.getEmitterSystems().get(0).getBeamRecords().get(0).getFundamentalDataParameters().getDeBeamwidth(), 0.00001);
}
}
Binary file added src/test/resources/edu/nps/moves/dis/UAPduV6.raw
Binary file not shown.

0 comments on commit 2eb4023

Please sign in to comment.