Skip to content
Snippets Groups Projects
Commit 35b81086 authored by Alexander Diewald's avatar Alexander Diewald
Browse files

TDMAScheduler: Fix infinite message duration if bandwidth == 0


* Instead a zero duration is assumed for this degenerate case.

Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
parent 4b1b9b8d
No related branches found
No related tags found
No related merge requests found
Showing
with 12 additions and 17 deletions
ICommunicationResourceAdapter.java c478971e8ed09b1e10413129cdf094d4a31d69ac RED ICommunicationResourceAdapter.java 819d03833e26df1dcb17a3dd79906d19e132cf85 RED
IComponentAdapter.java 8c510669aa5b1c48bb8f2fad8a48aa26b63e0b4c RED IComponentAdapter.java 8c510669aa5b1c48bb8f2fad8a48aa26b63e0b4c RED
IExecutionUnitAdapter.java ba7879d3ca7045ce0a780a07774e266c47c9fbbb RED IExecutionUnitAdapter.java ba7879d3ca7045ce0a780a07774e266c47c9fbbb RED
IGatewayUnitAdapter.java bf2b7d6f33c1874680958097f2c5bb3d205b0860 RED IGatewayUnitAdapter.java bf2b7d6f33c1874680958097f2c5bb3d205b0860 RED
......
...@@ -26,8 +26,8 @@ public interface ICommunicationResourceAdapter extends IResourceAdapter { ...@@ -26,8 +26,8 @@ public interface ICommunicationResourceAdapter extends IResourceAdapter {
public double getPower(long messageSizeInBits); public double getPower(long messageSizeInBits);
/** /**
* Returns the duration of a transmission of a given number of MB via this * Returns the duration of a transmission of a given number of bits via this
* {@link ITransmissionUnitAdapter}. * {@link ITransmissionUnitAdapter}.
*/ */
double getTransmissionDuration(double messageSizeMB); double getTransmissionDuration(long messageSizeMB);
} }
AF3ComponentAdapter.java 1ac45531defaa21151fd2210f2ce40d45945aaf6 RED AF3ComponentAdapter.java 1ac45531defaa21151fd2210f2ce40d45945aaf6 RED
AF3ExecutionUnitAdapter.java 3f430bb010b8779ca44c1772d839618e98cf74c4 RED AF3ExecutionUnitAdapter.java 3f430bb010b8779ca44c1772d839618e98cf74c4 RED
AF3GatewayAdapter.java 5769b7b1fb706c3c78104029a433b28ae22a3fde RED AF3GatewayAdapter.java 5e7728182f5ec1b1ac1a1f955a8dd3b87245635a RED
AF3MemAccessTask.java 9847d8d4d2717daf19a51af2b43e9f2585e3577c RED AF3MemAccessTask.java 9847d8d4d2717daf19a51af2b43e9f2585e3577c RED
AF3MemoryUnitAdapter.java cbd6d2cacec27413b73208d116c506a84e6f22e5 RED AF3MemoryUnitAdapter.java cbd6d2cacec27413b73208d116c506a84e6f22e5 RED
AF3ModelElementAdapter.java 849ca79f644a7571b0d45f8ca619efda49c0bf2d RED AF3ModelElementAdapter.java 849ca79f644a7571b0d45f8ca619efda49c0bf2d RED
AF3RequestAdapter.java 85b2811a0251cfc1f49637c7d26b547de7c77043 RED AF3RequestAdapter.java 85b2811a0251cfc1f49637c7d26b547de7c77043 RED
AF3ResourceAdapter.java a4679a59cfe897a37e4410e6b9a48fb4d214f5eb RED AF3ResourceAdapter.java a4679a59cfe897a37e4410e6b9a48fb4d214f5eb RED
AF3ResourceConnectionAdapter.java 8741ce49893c49ac9d2ae1b8feb0fde440a71092 RED AF3ResourceConnectionAdapter.java 8741ce49893c49ac9d2ae1b8feb0fde440a71092 RED
AF3SignalAdapter.java c06b7eb4bc0b3036d3d1b8d9fd42391e33513214 RED AF3SignalAdapter.java e2674f6afac65ee55e294f3c9cde8603526bd9fc RED
AF3SystemModelAdapter.java e391d3bb2c075660309944dd0149cd9ec2f314ad RED AF3SystemModelAdapter.java e391d3bb2c075660309944dd0149cd9ec2f314ad RED
AF3TaskAdapter.java b9bfac1fb9d4199eb51a07138f1311816f117719 RED AF3TaskAdapter.java b9bfac1fb9d4199eb51a07138f1311816f117719 RED
AF3TransmissionUnitAdapter.java ddf19d48805623248a260facd4fc00baef2c62ad RED AF3TransmissionUnitAdapter.java c0dd39ec7f71ffe3f7565591b3f016846349a943 RED
...@@ -66,7 +66,7 @@ public class AF3GatewayAdapter extends AF3ResourceAdapter<GatewayUnit> ...@@ -66,7 +66,7 @@ public class AF3GatewayAdapter extends AF3ResourceAdapter<GatewayUnit>
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public double getTransmissionDuration(double messageSizeMB) { public double getTransmissionDuration(long messageSizeBits) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return 0; return 0;
} }
......
...@@ -35,9 +35,6 @@ import org.fortiss.af3.task.model.TaskOutputPort; ...@@ -35,9 +35,6 @@ import org.fortiss.af3.task.model.TaskOutputPort;
* @author barner * @author barner
*/ */
public class AF3SignalAdapter extends AF3RequestAdapter<TaskOutputPort> implements ISignalAdapter { public class AF3SignalAdapter extends AF3RequestAdapter<TaskOutputPort> implements ISignalAdapter {
/** Conversion constant for the message size. */
private static final double MBITS_TO_BITS = 1e6;
/** Message's source component */ /** Message's source component */
private ITaskAdapter source; private ITaskAdapter source;
...@@ -104,7 +101,7 @@ public class AF3SignalAdapter extends AF3RequestAdapter<TaskOutputPort> implemen ...@@ -104,7 +101,7 @@ public class AF3SignalAdapter extends AF3RequestAdapter<TaskOutputPort> implemen
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public double getTransmissionTime(ITransmissionUnitAdapter transmissionUnit) { public double getTransmissionTime(ITransmissionUnitAdapter transmissionUnit) {
return transmissionUnit.getTransmissionDuration(messageSize / MBITS_TO_BITS); return transmissionUnit.getTransmissionDuration(messageSize);
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
......
...@@ -78,9 +78,8 @@ public class AF3TransmissionUnitAdapter extends AF3ResourceAdapter<TransmissionU ...@@ -78,9 +78,8 @@ public class AF3TransmissionUnitAdapter extends AF3ResourceAdapter<TransmissionU
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public double getTransmissionDuration(double messageSizeBits) { public double getTransmissionDuration(long messageSizeBits) {
return (transmissionUnitBandwidth > 0.0)
return (transmissionUnitBandwidth != null)
? ((messageSizeBits / transmissionUnitBandwidth) * MBITS_TO_BITS) : 0; ? ((messageSizeBits / transmissionUnitBandwidth) * MBITS_TO_BITS) : 0;
} }
} }
EDFScheduler.java 693150daf9e46ee095e2b61d6a2356530f2f14e7 YELLOW EDFScheduler.java 693150daf9e46ee095e2b61d6a2356530f2f14e7 YELLOW
EDFSchedulerBase.java 23dc034b56b2c2426da9bf3cd520871fb2f1bb5d RED EDFSchedulerBase.java 23dc034b56b2c2426da9bf3cd520871fb2f1bb5d RED
SchedulerBase.java 243ad1db8f9fcf06c0113e9b1c4b92345d2e3414 RED SchedulerBase.java 243ad1db8f9fcf06c0113e9b1c4b92345d2e3414 RED
TDMABusScheduler.java ca798991165e0ffae22e675d56b06c6fefd7fe61 RED TDMABusScheduler.java c5b81ba1f1f4f9d69ee75713f834bf057069ded2 RED
...@@ -410,7 +410,6 @@ public class TDMABusScheduler extends SchedulerBase { ...@@ -410,7 +410,6 @@ public class TDMABusScheduler extends SchedulerBase {
ICommunicationResourceAdapter communicationResource) { ICommunicationResourceAdapter communicationResource) {
// final double minTransmissionDuration = 0.1; // final double minTransmissionDuration = 0.1;
// Constant used for bit->MByte transformation. // Constant used for bit->MByte transformation.
final double bitsPerMBit = 10e6;
double messageStartTime = message.getSenderTimeSlot().getEndTime(); double messageStartTime = message.getSenderTimeSlot().getEndTime();
// Determine the time required for the transmission of the message. A minimal transmission // Determine the time required for the transmission of the message. A minimal transmission
...@@ -418,7 +417,7 @@ public class TDMABusScheduler extends SchedulerBase { ...@@ -418,7 +417,7 @@ public class TDMABusScheduler extends SchedulerBase {
double resourceWCTT = 0.0; double resourceWCTT = 0.0;
if(communicationResource instanceof ITransmissionUnitAdapter) { if(communicationResource instanceof ITransmissionUnitAdapter) {
resourceWCTT = ((ITransmissionUnitAdapter)communicationResource) resourceWCTT = ((ITransmissionUnitAdapter)communicationResource)
.getTransmissionDuration(message.getMessageSize() / bitsPerMBit); .getTransmissionDuration(message.getMessageSize());
} else if(communicationResource instanceof IGatewayUnitAdapter) { } else if(communicationResource instanceof IGatewayUnitAdapter) {
resourceWCTT = ((IGatewayUnitAdapter)communicationResource).getWCFT(); resourceWCTT = ((IGatewayUnitAdapter)communicationResource).getWCFT();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment