Skip to content

Commit

Permalink
Rename omnet native interface class to OMNeTNative
Browse files Browse the repository at this point in the history
  • Loading branch information
vladamatena committed Feb 17, 2015
1 parent ce7319f commit 950b65e
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,44 @@

import cz.cuni.mff.d3s.deeco.runtime.DEECoContainer;
import cz.cuni.mff.d3s.deeco.runtime.DEECoPlugin;
import cz.cuni.mff.d3s.deeco.simulation.omnet.OMNeTNative;
import cz.cuni.mff.d3s.deeco.timer.SimulationTimer;
import cz.cuni.mff.d3s.deeco.timer.TimerEventListener;

public class OMNeTSimulation implements SimulationTimer, DEECoPlugin {
@Override
public List<Class<? extends DEECoPlugin>> getDependencies() {
return new LinkedList<Class<? extends DEECoPlugin>>();
}
public class OMNeTSimulation implements DEECoPlugin {
class TimerProvider implements SimulationTimer {
@Override
public void notifyAt(long time, TimerEventListener listener) {

}

@Override
public void init(DEECoContainer container) {
throw new UnsupportedOperationException();
}
@Override
public long getCurrentMilliseconds() {
double time = OMNeTNative.nativeGetCurrentTime();
return (long) (time * 1000);
}

@Override
public long getCurrentMilliseconds() {
// TODO Auto-generated method stub
return 0;
@Override
public void start(long duration) {
// TODO Auto-generated method stub

}

}


private TimerProvider timeProvider = new TimerProvider();

public SimulationTimer getTimer() {
return timeProvider;
}

@Override
public void notifyAt(long time, TimerEventListener listener) {
// throw new UnsupportedOperationException();
public List<Class<? extends DEECoPlugin>> getDependencies() {
return new LinkedList<Class<? extends DEECoPlugin>>();
}

@Override
public void start(long duration) {
public void init(DEECoContainer container) {
throw new UnsupportedOperationException();
}
}
3 changes: 2 additions & 1 deletion jdeeco-simulation-omnet-native/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@ all: checkmakefiles header
cd src && $(MAKE) LDFLAGS="$(LDFLAGS)"

header:
$(JDK_HOME)/bin/javah -o src/OMNeTJDEECoAPI.h -classpath ../jdeeco-simulation/src cz.cuni.mff.d3s.deeco.simulation.omnet.OMNetSimulation
$(JDK_HOME)/bin/javah -o src/OMNeTJDEECoAPI.h -classpath src cz.cuni.mff.d3s.deeco.simulation.omnet.OMNeTNative

clean: checkmakefiles
cd src && $(MAKE) clean
rm -f src/OMNeTJDEECoAPI.h

cleanall: checkmakefiles
cd src && $(MAKE) clean
Expand Down
60 changes: 34 additions & 26 deletions jdeeco-simulation-omnet-native/src/OMNeTJDEECoAPI.cc
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
#include "OMNeTJDEECoAPI.h"

#include <omnetpp.h>

#include "OMNeTJDEECoAPI.h"

#include "JDEECoRuntime.h"
#include "JDEECoModule.h"
#include "simulation.h"

JNIEXPORT jdouble JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulation_nativeGetCurrentTime(
JNIEnv *env, jobject jsimulation) {
#ifdef __cplusplus
extern "C" {
#endif

JNIEXPORT jdouble JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNeTNative_nativeGetCurrentTime(
JNIEnv *env, jclass) {
//std::cout << "nativeGetCurrentTime: Begin" << std::endl;
jdouble result = -1.0;
if (cSimulation::getActiveSimulation() != NULL)
Expand All @@ -17,8 +21,8 @@ JNIEXPORT jdouble JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimul
return result;
}

JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulation_nativeRegister(
JNIEnv *env, jobject jsimulation, jobject object, jstring id) {
JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNeTNative_nativeRegister(
JNIEnv *env, jclass, jobject object, jstring id) {
std::cout << "nativeRegister: Begin" << std::endl;

if (JDEECoRuntime::findRuntime(env, id) != NULL) {
Expand All @@ -43,8 +47,8 @@ JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulati
std::cout << "nativeRegister: End" << std::endl;
}

JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulation_nativeSendPacket(
JNIEnv *env, jobject jsimulation, jstring id, jbyteArray packet,
JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNeTNative_nativeSendPacket(
JNIEnv *env, jclass, jstring id, jbyteArray packet,
jstring recipient) {
//std::cout << "nativeSendPacket: Begin" << std::endl;
JDEECoModule *module = JDEECoModule::findModule(env, id);
Expand All @@ -56,7 +60,7 @@ JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulati
//Setting data
jPacket->setDataArraySize(length);
for (int i = 0; i < length; i++)
jPacket->setData(i, buffer[i]);
jPacket->setData(i, buffer[i]);
const char *cRecipient = env->GetStringUTFChars(recipient, 0);
EV << "OMNET++ ("<< simTime() <<") : " << module->getModuleId() << " sending packet with ID = " << jPacket->getId() << endl;
module->sendPacket(jPacket, cRecipient);
Expand All @@ -67,23 +71,23 @@ JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulati
//std::cout << "nativeSendPacket: End" << std::endl;
}

JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulation_nativeRun(
JNIEnv *env, jobject jsimulation, jstring environment, jstring confFile) {
JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNeTNative_nativeRun(
JNIEnv *env, jclass, jstring environment, jstring confFile) {
std::cout << "nativeRun: Begin" << std::endl;
const char * cEnv = env->GetStringUTFChars(environment, 0);
const char * cConfFile = env->GetStringUTFChars(confFile, 0);
std::cout << "nativeRun: simulate" << std::endl;
std::cout << "nativeRun: simulate" << std::endl;
simulate(cEnv, cConfFile);
std::cout << "nativeRun: clearing runtimes" << std::endl;
std::cout << "nativeRun: clearing runtimes" << std::endl;
JDEECoModule::clear();
JDEECoRuntime::clear();
env->ReleaseStringUTFChars(environment, cEnv);
env->ReleaseStringUTFChars(confFile, cConfFile);
std::cout << "nativeRun: End" << std::endl;
}

JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulation_nativeCallAt(
JNIEnv *env, jobject jsimulation, jdouble absoluteTime, jstring id) {
JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNeTNative_nativeCallAt(
JNIEnv *env, jclass, jdouble absoluteTime, jstring id) {
//std::cout << "nativeCallAt: Begin" << std::endl;
if (cSimulation::getActiveSimulation() != NULL) {
JDEECoModule *module = JDEECoModule::findModule(env, id);
Expand All @@ -103,8 +107,8 @@ JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulati
//std::cout << "nativeCallAt: End" << std::endl;
}

JNIEXPORT jboolean JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulation_nativeIsPositionInfoAvailable
(JNIEnv *env, jobject jsimulation, jstring id) {
JNIEXPORT jboolean JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNeTNative_nativeIsPositionInfoAvailable(
JNIEnv *env, jobject, jstring id) {
//std::cout << "nativeIsPositionInfoAvailable: Begin" << std::endl;
jboolean result = JNI_FALSE;
JDEECoModule *module = JDEECoModule::findModule(env, id);
Expand All @@ -119,10 +123,10 @@ JNIEXPORT jboolean JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimu

// XXX: These three methods should be replaced by one method that returns a triplet (X,Y,Z)

JNIEXPORT jdouble JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulation_nativeGetPositionX
(JNIEnv *env, jobject jsimulation, jstring id) {
JNIEXPORT jdouble JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNeTNative_nativeGetPositionX(
JNIEnv *env, jclass, jstring id) {

//std::cout << "nativeGetPositionX: Begin" << std::endl;
//std::cout << "nativeGetPositionX: Begin" << std::endl;
jdouble result = 0;
JDEECoModule *module = JDEECoModule::findModule(env, id);

Expand All @@ -134,8 +138,8 @@ JNIEXPORT jdouble JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimul
return result;
}

JNIEXPORT jdouble JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulation_nativeGetPositionY
(JNIEnv *env, jobject jsimulation, jstring id) {
JNIEXPORT jdouble JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNeTNative_nativeGetPositionY(
JNIEnv *env, jclass, jstring id) {
//std::cout << "nativeGetPositionY: Begin" << std::endl;
jdouble result = 0;
JDEECoModule *module = JDEECoModule::findModule(env, id);
Expand All @@ -148,8 +152,8 @@ JNIEXPORT jdouble JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimul
return result;
}

JNIEXPORT jdouble JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulation_nativeGetPositionZ
(JNIEnv *env, jobject jsimulation, jstring id) {
JNIEXPORT jdouble JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNeTNative_nativeGetPositionZ(
JNIEnv *env, jclass, jstring id) {
//std::cout << "nativeGetPositionZ: Begin" << std::endl;
jdouble result = 0;
JDEECoModule *module = JDEECoModule::findModule(env, id);
Expand All @@ -162,11 +166,15 @@ JNIEXPORT jdouble JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimul
return result;
}

JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNetSimulation_nativeSetPosition
(JNIEnv *env, jobject jsimulation, jstring id, jdouble valX, jdouble valY, jdouble valZ) {
JNIEXPORT void JNICALL Java_cz_cuni_mff_d3s_deeco_simulation_omnet_OMNeTNative_nativeSetPosition
(JNIEnv *env, jclass, jstring id, jdouble valX, jdouble valY, jdouble valZ) {
JDEECoModule *module = JDEECoModule::findModule(env, id);

if (module != NULL) {
module->setPosition(valX, valY, valZ);
}
}

#ifdef __cplusplus
}
#endif
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package cz.cuni.mff.d3s.deeco.simulation.omnet;

public class OMNetSimulation {
public class OMNeTNative {
static {
System.loadLibrary("jdeeco-omnetpp");
}
Expand Down

0 comments on commit 950b65e

Please sign in to comment.