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);
99 printf(":!c: getJavaVM() failed! \n");
102 // create global references
103 domain_events_cont->jvm = jvm;
105 domain_events_cont->obj_de = (*env)->NewGlobalRef(env, obj_de);
107 dom_events = (ORTEDomainAppEvents *)eventsHandle;
108 ////////////////////////////////////////////////
109 // set new events & their prarameters
111 dom_events->onRegFail = (ORTEOnRegFail)onRegFail;
112 dom_events->onRegFailParam = (void *)domain_events_cont;
114 dom_events->onMgrNew = (ORTEOnMgrNew)onMgrNew;
115 dom_events->onMgrNewParam = (void *)domain_events_cont;
117 dom_events->onMgrDelete = (ORTEOnMgrDelete)onMgrDelete;
118 dom_events->onMgrDeleteParam = (void *)domain_events_cont;
120 dom_events->onAppRemoteNew = (ORTEOnAppRemoteNew)onAppRemoteNew;
121 dom_events->onAppRemoteNewParam = (void *)domain_events_cont;
123 dom_events->onAppDelete = (ORTEOnAppDelete)onAppDelete;
124 dom_events->onAppDeleteParam = (void *)domain_events_cont;
126 dom_events->onPubRemoteNew = (ORTEOnPubRemote)onPubRemoteNew;
127 dom_events->onPubRemoteNewParam = (void *)domain_events_cont;
128 // onPubRemoteChanged
129 dom_events->onPubRemoteChanged = (ORTEOnPubRemote)onPubRemoteChanged;
130 dom_events->onPubRemoteChangedParam = (void *)domain_events_cont;
132 dom_events->onPubDelete = (ORTEOnPubDelete)onPubDelete;
133 dom_events->onPubDeleteParam = (void *)domain_events_cont;
135 dom_events->onSubRemoteNew = (ORTEOnSubRemote)onSubRemoteNew;
136 dom_events->onSubRemoteNewParam = (void *)domain_events_cont;
137 // onSubRemoteChanged
138 dom_events->onSubRemoteChanged = (ORTEOnSubRemote)onSubRemoteChanged;
139 dom_events->onSubRemoteChangedParam = (void *)domain_events_cont;
141 dom_events->onSubDelete = (ORTEOnSubDelete)onSubDelete;
142 dom_events->onSubDeleteParam = (void *)domain_events_cont;
143 ////////////////////////////////////////////////
144 cls = (*env)->GetObjectClass(env, obj);
147 printf(":!c: cls = NULL \n");
151 // fieldID - domainEventsContextHandle
152 fid = (*env)->GetFieldID(env,
154 "domainEventsContextHandle",
158 printf(":!c: fid = NULL \n");
162 (*env)->SetLongField(env,
165 (jlong)domain_events_cont);
167 // call ORTE function
168 d = (jlong)ORTEDomainAppCreate((int)jdomain,
169 (ORTEDomainProp *)propHandle,
170 (ORTEDomainAppEvents *)eventsHandle,
173 printf(":!c: creating app domain failed! [NULL handle] \n");
177 printf(":c: ORTEDomainAppCreate() ok.. + %#" PRIxPTR "\n", (intptr_t)d);