1 /* JORTEDomainAppCreate.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
31 // pregenerated header
32 #include "jorte/org_ocera_orte_DomainApp.h"
33 // enable TEST_STAGE run level
34 #include "jorte/4all.h"
36 #include "jorte/jorte_typedefs_defines.h"
37 #include "jorte/jorte_protos_api.h"
41 // /////////////////////////////////////////////////////////////////////
42 // create default application domain
43 // /////////////////////////////////////////////////////////////////////
44 JNIEXPORT jlong JNICALL
45 Java_org_ocera_orte_DomainApp_jORTEDomainDefaultAppCreate
46 (JNIEnv *env, jobject obj, jint jdomain, jboolean jsusp)
51 printf(":c: jsem pred ORTEDomainDefaultAppCreate() \n");
54 d = (jlong) ORTEDomainAppCreate((int)jdomain,
59 printf(":!c: ORTEDomainDefaultAppCreate() FAILED.. \n");
63 printf(":c: ORTEDomainDefautlAppCreate() ok.. + %#"PRIxPTR"\n", (intptr_t)d);
68 // //////////////////////////////////////////////////////////////////////
69 // create user application domain
70 // //////////////////////////////////////////////////////////////////////
71 JNIEXPORT jlong JNICALL
72 Java_org_ocera_orte_DomainApp_jORTEDomainAppCreate
73 (JNIEnv *env, jobject obj,
86 ORTEDomainAppEvents *dom_events;
87 JORTEDomainEventsContext_t *domain_events_cont;
90 printf(":c: ORTEDomainAppCreate() called.. \n");
92 //assign domain events only if not null
95 domain_events_cont = (JORTEDomainEventsContext_t *) malloc(sizeof(JORTEDomainEventsContext_t));
97 jint b = (*env)->GetJavaVM(env,&jvm);
100 printf(":!c: getJavaVM() failed! \n");
103 // create global references
104 domain_events_cont->jvm = jvm;
106 domain_events_cont->obj_de = (*env)->NewGlobalRef(env, obj_de);
108 dom_events = (ORTEDomainAppEvents *) eventsHandle;
109 ////////////////////////////////////////////////
110 // set new events & their prarameters
112 dom_events->onRegFail = (ORTEOnRegFail) onRegFail;
113 dom_events->onRegFailParam = (void *) domain_events_cont;
115 dom_events->onMgrNew = (ORTEOnMgrNew) onMgrNew;
116 dom_events->onMgrNewParam = (void *) domain_events_cont;
118 dom_events->onMgrDelete = (ORTEOnMgrDelete) onMgrDelete;
119 dom_events->onMgrDeleteParam = (void *) domain_events_cont;
121 dom_events->onAppRemoteNew = (ORTEOnAppRemoteNew) onAppRemoteNew;
122 dom_events->onAppRemoteNewParam = (void *) domain_events_cont;
124 dom_events->onAppDelete = (ORTEOnAppDelete) onAppDelete;
125 dom_events->onAppDeleteParam = (void *) domain_events_cont;
127 dom_events->onPubRemoteNew = (ORTEOnPubRemote) onPubRemoteNew;
128 dom_events->onPubRemoteNewParam = (void *) domain_events_cont;
129 // onPubRemoteChanged
130 dom_events->onPubRemoteChanged = (ORTEOnPubRemote) onPubRemoteChanged;
131 dom_events->onPubRemoteChangedParam = (void *) domain_events_cont;
133 dom_events->onPubDelete = (ORTEOnPubDelete) onPubDelete;
134 dom_events->onPubDeleteParam = (void *) domain_events_cont;
136 dom_events->onSubRemoteNew = (ORTEOnSubRemote) onSubRemoteNew;
137 dom_events->onSubRemoteNewParam = (void *) domain_events_cont;
138 // onSubRemoteChanged
139 dom_events->onSubRemoteChanged = (ORTEOnSubRemote) onSubRemoteChanged;
140 dom_events->onSubRemoteChangedParam = (void *) domain_events_cont;
142 dom_events->onSubDelete = (ORTEOnSubDelete) onSubDelete;
143 dom_events->onSubDeleteParam = (void *) domain_events_cont;
144 ////////////////////////////////////////////////
145 cls = (*env)->GetObjectClass(env, obj);
149 printf(":!c: cls = NULL \n");
153 // fieldID - domainEventsContextHandle
154 fid = (*env)->GetFieldID(env,
156 "domainEventsContextHandle",
161 printf(":!c: fid = NULL \n");
165 (*env)->SetLongField(env,
168 (jlong) domain_events_cont);
170 // call ORTE function
171 d = (jlong) ORTEDomainAppCreate((int)jdomain,
172 (ORTEDomainProp *) propHandle,
173 (ORTEDomainAppEvents *) eventsHandle,
176 printf(":!c: creating app domain failed! [NULL handle] \n");
180 printf(":c: ORTEDomainAppCreate() ok.. + %#"PRIxPTR"\n", (intptr_t)d);