1 /* JORTEDomainMgrCreate.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_DomainMgr.h"
33 #include "jorte/4all.h"
34 #include "jorte/jorte_typedefs_defines.h"
35 #include "jorte/jorte_protos_api.h"
37 /* ****************************** *
38 * create default manager domain *
39 * ****************************** */
40 JNIEXPORT jlong JNICALL
41 Java_org_ocera_orte_DomainMgr_jORTEDomainDefaultMgrCreate
42 (JNIEnv *env, jobject obj, jint jdomain, jboolean susp)
47 d = (jlong) ORTEDomainMgrCreate((int)jdomain,
53 printf(":!c: creating mgrDomain failed! \n");
57 printf(":c: mgrDomain created.. \n");
63 /* *************************** *
64 * create user manager domain *
65 * *************************** */
66 JNIEXPORT jlong JNICALL
67 Java_org_ocera_orte_DomainMgr_jORTEDomainMgrCreate
68 (JNIEnv *env, jobject obj,
80 ORTEDomainAppEvents *dom_events;
81 JORTEDomainEventsContext_t *domain_events_cont;
82 //assign domain events only if not null
85 domain_events_cont = (JORTEDomainEventsContext_t *) malloc(sizeof(JORTEDomainEventsContext_t));
87 jint b = (*env)->GetJavaVM(env,&jvm);
90 printf(":!c: getJavaVM() failed! \n");
93 // create global references
94 domain_events_cont->jvm = jvm;
96 domain_events_cont->obj_de = (*env)->NewGlobalRef(env, obj_de);
98 dom_events = (ORTEDomainAppEvents *) eventsHandle;
99 ////////////////////////////////////////////////
100 // set new events & their prarameters
102 dom_events->onRegFail = (ORTEOnRegFail) onRegFail;
103 dom_events->onRegFailParam = (void *) domain_events_cont;
105 dom_events->onMgrNew = (ORTEOnMgrNew) onMgrNew;
106 dom_events->onMgrNewParam = (void *) domain_events_cont;
108 dom_events->onMgrDelete = (ORTEOnMgrDelete) onMgrDelete;
109 dom_events->onMgrDeleteParam = (void *) domain_events_cont;
111 dom_events->onAppRemoteNew = (ORTEOnAppRemoteNew) onAppRemoteNew;
112 dom_events->onAppRemoteNewParam = (void *) domain_events_cont;
114 dom_events->onAppDelete = (ORTEOnAppDelete) onAppDelete;
115 dom_events->onAppDeleteParam = (void *) domain_events_cont;
117 dom_events->onPubRemoteNew = (ORTEOnPubRemote) onPubRemoteNew;
118 dom_events->onPubRemoteNewParam = (void *) domain_events_cont;
119 // onPubRemoteChanged
120 dom_events->onPubRemoteChanged = (ORTEOnPubRemote) onPubRemoteChanged;
121 dom_events->onPubRemoteChangedParam = (void *) domain_events_cont;
123 dom_events->onPubDelete = (ORTEOnPubDelete) onPubDelete;
124 dom_events->onPubDeleteParam = (void *) domain_events_cont;
126 dom_events->onSubRemoteNew = (ORTEOnSubRemote) onSubRemoteNew;
127 dom_events->onSubRemoteNewParam = (void *) domain_events_cont;
128 // onSubRemoteChanged
129 dom_events->onSubRemoteChanged = (ORTEOnSubRemote) onSubRemoteChanged;
130 dom_events->onSubRemoteChangedParam = (void *) domain_events_cont;
132 dom_events->onSubDelete = (ORTEOnSubDelete) onSubDelete;
133 dom_events->onSubDeleteParam = (void *) domain_events_cont;
134 ////////////////////////////////////////////////
135 cls = (*env)->GetObjectClass(env, obj);
139 printf(":!c: cls = NULL \n");
143 // fieldID - domainEventsContextHandle
144 fid = (*env)->GetFieldID(env,
146 "domainEventsContextHandle",
151 printf(":!c: fid = NULL \n");
155 (*env)->SetLongField(env,
158 (jlong) domain_events_cont);
160 // call ORTE function
161 d = (jlong) ORTEDomainMgrCreate((int)jdomain,
162 (ORTEDomainProp *) propHandle,
163 (ORTEDomainAppEvents *) eventsHandle,
167 printf(":!c: creating mgrDomain failed! \n");
171 printf(":c: mgrDomain created.. \n");