]> rtime.felk.cvut.cz Git - orte.git/blobdiff - orte/libjorte/JORTETypeRegisterAdd.c
JORTE: update license headers and clean-up includes
[orte.git] / orte / libjorte / JORTETypeRegisterAdd.c
index f5e6718c2e01c9335ae63e62d4bdf49caa8e258c..a2fc83b61b9d016504d036f221d21772cdf34443 100644 (file)
@@ -7,6 +7,7 @@
   * (by command 'javah -jni class_with_native_function')
   *
   * @author Lukas Pokorny (lukas_pokorny@centrum.cz)
+  * @author Martin Vajnar (martin.vajnar@gmail.com)
   * @author CTU FEE Prague - Department of Control Engineering (dce.felk.cvut.cz)
   * @author Project ORTE - OCERA Real Time Ethernet (www.ocera.org)
   * @author dedication to Kj
   *
   */
 
-#include <jni.h>
-#include <string.h>
-// library header file's path
-#include "orte.h"
-// pregenerated header
-#include "jorte/org_ocera_orte_DomainApp.h"
-#include "jorte/jorte_protos_api.h"
-#include "jorte/4all.h"
 
-extern JavaVM *javavm;
-static jobject byte_buf;
-
-void deserialize(CDR_Codec *cdrCodec, void *instance) {
-  JNIEnv        *env = 0;
-  jclass         cls = 0;
-  jfieldID       fid = 0;
-  jmethodID      mid = 0;
-  jobject        obj_bo = 0;
-
-  //set byte order only once
-  if(byte_buf) {
-    // get environment
-    (*javavm)->AttachCurrentThread(javavm, (void **)&env, NULL);
-    if(env == 0)
-    {
-      #ifdef TEST_STAGE
-       printf(":!c: env = NULL \n");
-      #endif
-    }
-
-    //prepare ByteOrder
-    cls = (*env)->FindClass(env, "java/nio/ByteOrder");
-    if (cls == 0) {
-      #ifdef TEST_STAGE
-        printf(":!c: cls = NULL \n");
-      #endif
-    }
-    if(cdrCodec->data_endian == BigEndian) {
-      fid = (*env)->GetStaticFieldID(env,
-                                        cls,
-                                        "BIG_ENDIAN",
-                                        "Ljava/nio/ByteOrder;");
-    }
-    else {
-      fid = (*env)->GetStaticFieldID(env,
-                                        cls,
-                                        "LITTLE_ENDIAN",
-                                        "Ljava/nio/ByteOrder;");
-    }
-    if(fid == 0) {
-      #ifdef TEST_STAGE
-           printf(":!c: fid = NULL \n");
-         #endif
-    }
-    obj_bo = (*env)->GetStaticObjectField(env, cls, fid);
-    if(obj_bo == 0) {
-      #ifdef TEST_STAGE
-           printf(":!c: cls = NULL \n");
-         #endif
-    }
-
-    // set byte order to ByteBuffer
-    // get BB class
-    cls = (*env)->GetObjectClass(env, byte_buf);
-    if(cls == 0)
-    {
-      #ifdef TEST_STAGE
-        printf(":!c: cls = NULL \n");
-      #endif
-    }
-    // get methodID - order(ByteOrder)
-    mid = (*env)->GetMethodID(env,
-                             cls,
-                             "order",
-                             "(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;");
-    if(mid == 0)
-    {
-      #ifdef TEST_STAGE
-        printf(":!c: mid = NULL \n");
-      #endif
-    }
-
-    // set ByteOrder
-    if((*env)->CallObjectMethod(env,byte_buf,mid,obj_bo) == 0)
-    {
-      #ifdef TEST_STAGE
-        printf(":!c: set byte order failed.. \n");
-      #endif
-    }
-
-    // delete global reference
-    (*env)->DeleteGlobalRef(env, byte_buf);
-    byte_buf = 0;
-
-    (*javavm)->DetachCurrentThread(javavm);
-  }
-
-  //copy over the message instance
-  memcpy(instance,
-         cdrCodec->buffer,
-         cdrCodec->buf_len);
-}
+#include "jorte/jorte.h"
 
 JNIEXPORT jint JNICALL
 Java_org_ocera_orte_DomainApp_jORTETypeRegisterAdd
-(JNIEnv *env, jclass cls, jlong handle, jstring jname, jlong jlength, jobject obj_bb)
+(JNIEnv *env, jclass cls, jlong handle, jstring jname, jlong jlength)
 {
   const char     *name;
   int            b;
@@ -141,14 +42,11 @@ Java_org_ocera_orte_DomainApp_jORTETypeRegisterAdd
   b = ORTETypeRegisterAdd((ORTEDomain *) handle,
                           name,
                           NULL,
-                          (ORTETypeDeserialize)deserialize,
+                          NULL,
                           NULL,
                           (unsigned int) jlength);
   // free memmory space
   (*env)->ReleaseStringUTFChars(env,jname,name);
-
-  byte_buf = (*env)->NewGlobalRef(env, obj_bb);
-
   #ifdef TEST_STAGE
   printf(":c: jORTETypeRegisterAdd vraci %d [%d = ORTE_OK, %d = ORTE_BAD_HANDLE] \n",
          b,ORTE_OK,ORTE_BAD_HANDLE);