1 /* JORTEPublicationCreate.c */
4 * This code provides conversion between JAVA a C environments.
5 * The C functions are calling here and results are send to JAVA
6 * native functions. It uses the header pregenerated by JAVA
7 * (by command 'javah -jni class_with_native_function')
9 * @author Lukas Pokorny (lukas_pokorny@centrum.cz)
10 * @author CTU FEE Prague - Department of Control Engineering (dce.felk.cvut.cz)
11 * @author Project ORTE - OCERA Real Time Ethernet (www.ocera.org)
12 * @author dedication to Kj
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation; either version 2 of the License, or
19 * (at your option) any later version.
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
29 // origin orte headers
32 // pregenerated header
33 #include "jorte/org_ocera_orte_Publication.h"
34 #include "jorte/jorte_protos_api.h"
35 #include "jorte/4all.h"
37 // ### DOCASNE ##################################################################
39 // ### DOCASNE ##################################################################
43 sendCallBack(const ORTESendInfo *info,void *vinstance, void *sendCallBackParam)
45 char *instance=(char*)vinstance;
47 printf(":c: zacatek sendCallBack()..\n");
49 switch (info->status) {
51 printf(":c:PUB: Sampling publication, count %d\n", counter);
52 printf(":c:PUB: !! DOCASNE - ZRUSIT!! - callback() u Publishera \n");
53 sprintf(instance,"Hello Universe! (%d)",counter++);
55 case CQL: //criticalQueueLevel
59 // ### DOCASNE ##################################################################
61 // ### DOCASNE ##################################################################
65 JNIEXPORT jlong JNICALL
66 Java_org_ocera_orte_Publication_jORTEPublicationCreate
74 jobject j_persistence,
77 ORTEPublication *p = 0;
86 // check domain handle
87 d = (ORTEDomain *) dom_handle;
90 printf(":!c: publication create failed! [bad domain handle] \n");
94 topic = (*env)->GetStringUTFChars(env, j_topic, 0);
97 // OutOfMemoryError already thrown
99 printf(":!c: topic = NULL \n");
104 typeName = (*env)->GetStringUTFChars(env, j_type_name, 0);
107 // OutOfMemoryError already thrown
109 printf(":!c: typeName = NULL \n");
112 (*env)->ReleaseStringUTFChars(env, j_topic, topic);
119 persistence = getNtpTime(env, j_persistence);
121 strength = (int) j_strength;
123 buffer = (char*) malloc((int32_t) jbufflen);
126 printf(":!c: buffer create failed! \n");
129 // call ORTE function
130 p = ORTEPublicationCreate(d,
136 sendCallBack, // BUDE NULL!!
141 printf(":!c: publication create failed! \n");
148 // free memory in every case
149 (*env)->ReleaseStringUTFChars(env, j_topic, topic);
150 (*env)->ReleaseStringUTFChars(env, j_type_name, typeName);
155 if(buffer != 0) free(buffer);