summaryrefslogtreecommitdiff
path: root/comms/rxtx/files/patch-SerialImp.cpp
blob: 0a2688dab8d3dcaf002955e2fba4846b174c22be (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
--- src/SerialImp.cpp.orig	2004-10-12 01:59:27.000000000 -0700
+++ src/SerialImp.cpp	2010-12-06 21:48:20.000000000 -0800
@@ -1736,10 +1736,50 @@
 		report("invalid file descriptor\n");
 #endif
 	return result;
 }
 
+void deref_java_object( JNIEnv *env, jobject jobj )
+{
+  jclass jclazz = env->GetObjectClass( env, jobj );
+  env->DeleteLocalRef( env, jclazz );
+}
+
+void * get_java_varP( JNIEnv *env, jobject jobj, char *id, char *type )
+{
+
+
+   ////////////////// Open Log File /////////////////////
+   fp = fopen("RXTXOut.log", "a");
+   fprintf(fp, "Brian is inside get_java_varP\n"); // !!!
+   fclose(fp);
+   ////////////////// Close Log File ////////////////////
+
+	void * result = 0;
+	//jclass jclazz = (*env)->GetObjectClass( env, jobj );
+	jclass jclazz = env->GetObjectClass( jobj ); // !!!
+	//jfieldID jfd = (*env)->GetFieldID( env, jclazz, id, type );
+    jfieldID jfd = env->GetFieldID( jclazz, id, type ); // !!!
+    
+	if( !jfd ) {
+		//(*env)->ExceptionDescribe( env );
+		env->ExceptionDescribe(); // !!!
+		//(*env)->ExceptionClear( env );
+		env->ExceptionClear(); // !!!
+		return result;
+	}
+	//result = (int)( (*env)->GetIntField( env, jobj, jfd ) );
+	result = (void *)( env->GetIntField( jobj, jfd ) ); // !!!
+/* ct7 & gel * Added DeleteLocalRef */
+	//(*env)->DeleteLocalRef( env, jclazz );
+//	env->DeleteLocalRef( jclazz ); // !!!
+#ifdef DEBUG
+	if(!strncmp("fd",id,2) && result == 0)
+		report("invalid file descriptor\n");
+#endif
+	return result;
+}
 /*----------------------------------------------------------
 throw_java_exception
 
    accept:      env (keyhole to java)
                 *exc (exception class name)