[prev in list] [next in list] [prev in thread] [next in thread] 

List:       rxtx
Subject:    [Rxtx] =?koi8-r?b?UGF0Y2ggZm9yIFdpbkNFIChyeHR4LWRldmVsXzJfMSk=?=
From:       Ivan Maidanski <ivmai () mail ! ru>
Date:       2009-11-21 21:10:19
Message-ID: E1NBxDn-0001ph-00.ivmai-mail-ru () f10 ! mail ! ru
[Download RAW message or body]

Hello all!

The attached patch fixes several compilation errors (and eliminates some warnings) in \
WinCE gnu_io_RXTXCommDriver.cpp, gnu_io_RXTXPort.cpp, rxtxHelpers.cpp. Tested with \
arm-mingw32ce-gcc.

PS. I've also upgraded WinCE rxtx sources to version RXTX-2.2pre2 but the patch is \
not ready at this moment.

Thanks.


["rxtx-devel-ivmai1.diff" (application/octet-stream)]

diff -ru CVS/rxtx-devel_2_1/WinCE/gnu_io_RXTXCommDriver.cpp \
                updated/rxtx-devel_2_1/WinCE/gnu_io_RXTXCommDriver.cpp
--- CVS/rxtx-devel_2_1/WinCE/gnu_io_RXTXCommDriver.cpp	2007-04-26 08:26:04.000000000 \
                +0300
+++ updated/rxtx-devel_2_1/WinCE/gnu_io_RXTXCommDriver.cpp	2009-11-18 \
20:04:50.000000000 +0300 @@ -170,7 +170,7 @@
 
   if ( type == PORT_SERIAL )
   {
-    const WCHAR *wszDev = env->GetStringChars(dev, NULL); 
+    const WCHAR *wszDev = (const WCHAR *)env->GetStringChars(dev, NULL); 
     HANDLE hPort = CreateFileW(wszDev,       // Pointer to the name of the port
                                GENERIC_READ | GENERIC_WRITE,
                                              // Access (read-write) mode
@@ -202,7 +202,7 @@
       )
       retVal = JNI_TRUE;
     }
-    env->ReleaseStringChars(dev, wszDev);
+    env->ReleaseStringChars(dev, (const jchar*)wszDev);
   }
   else
     retVal = JNI_FALSE;
diff -ru CVS/rxtx-devel_2_1/WinCE/gnu_io_RXTXPort.cpp \
                updated/rxtx-devel_2_1/WinCE/gnu_io_RXTXPort.cpp
--- CVS/rxtx-devel_2_1/WinCE/gnu_io_RXTXPort.cpp	2007-04-26 08:26:04.000000000 +0300
+++ updated/rxtx-devel_2_1/WinCE/gnu_io_RXTXPort.cpp	2009-11-18 22:49:56.000000000 \
+0300 @@ -97,7 +97,7 @@
   EventInfoStruct *EventInfo;
   DWORD dwErr;
 
-  LPCWSTR wszName = env->GetStringChars(name, NULL);
+  LPCWSTR wszName = (LPCWSTR)env->GetStringChars(name, NULL);
   HANDLE hPort = CreateFileW(wszName,      // Pointer to the name of the port
                              GENERIC_READ | GENERIC_WRITE,// Access (read-write) \
mode  0,            // Share mode
@@ -112,7 +112,7 @@
     throw_java_exceptionW(env, PORT_IN_USE_EXCEPTION, L"open - CreateFile", lpMsgBuf \
);  // Free the buffers.
     ReleaseErrorMsg(lpMsgBuf);
-    env->ReleaseStringChars(name, wszName);
+    env->ReleaseStringChars(name, (const jchar*)wszName);
     return (jint)INVALID_HANDLE_VALUE;
   }
 
@@ -141,7 +141,7 @@
     throw_java_exceptionW(env, PORT_IN_USE_EXCEPTION, L"open - SetCommState", \
lpMsgBuf);  // Free the buffers.
     ReleaseErrorMsg(lpMsgBuf);
-    env->ReleaseStringChars(name, wszName);
+    env->ReleaseStringChars(name, (const jchar*)wszName);
     return (jint)INVALID_HANDLE_VALUE;
   }
 
@@ -164,7 +164,7 @@
     throw_java_exceptionW(env, PORT_IN_USE_EXCEPTION, L"open - SetCommTimeouts", \
lpMsgBuf);  // Free the buffers.
     ReleaseErrorMsg(lpMsgBuf);
-    env->ReleaseStringChars(name, wszName);
+    env->ReleaseStringChars(name, (const jchar*)wszName);
     return (jint)INVALID_HANDLE_VALUE;
   }
 
@@ -172,13 +172,13 @@
   EscapeCommFunction(hPort, SETRTS);
 
 
-  if(dwErr = InitialiseEventInfoStruct(hPort, &EventInfo))
+  if((dwErr = InitialiseEventInfoStruct(hPort, &EventInfo)) != 0)
   { // Unable to set up EventInfo structure for event processing
     CreateErrorMsg(dwErr, lpMsgBuf);
     throw_java_exceptionW(env, IO_EXCEPTION, L"open - InitialiseEventInfoStruct", \
lpMsgBuf);  // Free the buffers.
     ReleaseErrorMsg(lpMsgBuf);
-    env->ReleaseStringChars(name, wszName);
+    env->ReleaseStringChars(name, (const jchar*)wszName);
     return (jint)INVALID_HANDLE_VALUE;
   }
 
@@ -191,12 +191,12 @@
     )
 		env->ExceptionClear();
     // Free the buffers.
-    env->ReleaseStringChars(name, wszName);
+    env->ReleaseStringChars(name, (const jchar*)wszName);
 		return (jint)INVALID_HANDLE_VALUE;
 	}
 	env->SetIntField(jobj, jfEis, (jint)EventInfo);
 
-  env->ReleaseStringChars(name, wszName);
+  env->ReleaseStringChars(name, (const jchar*)wszName);
   // Returning HANDLE (which is a pointer) as file descriptor... Anyway, 32 bits are \
32 bits  return (jint)hPort;
 }
@@ -902,7 +902,7 @@
 {
   //COMSTAT Stat;
   //DWORD dwErrors;
-  HANDLE hPort = get_fd(env, jobj);
+  //HANDLE hPort = get_fd(env, jobj);
 
   IF_DEBUG
   (
@@ -1073,7 +1073,7 @@
   HANDLE hCommEventThread;
   DWORD dwThreadID, dwWaitResult, dwEvent;
   int RetVal;
-  HANDLE hPort = get_fd(env, jobj);
+  //HANDLE hPort = get_fd(env, jobj);
   EventInfoStruct *EventInfo = get_eis(env, jobj);
 
   IF_DEBUG
@@ -1155,7 +1155,7 @@
       // Clearing event - event thread will continue
       EventInfo->event = 0;
       // Send events to Java
-      if(RetVal = SendEvents(env, jobj, dwEvent, EventInfo, jmSendEvent))
+      if((RetVal = SendEvents(env, jobj, dwEvent, EventInfo, jmSendEvent)) != 0)
       {
         IF_DEBUG
         (
@@ -1193,7 +1193,7 @@
 JNIEXPORT void JNICALL Java_gnu_io_RXTXPort_interruptEventLoop(JNIEnv *env, jobject \
jobj)  {
   jfieldID jfid;
-  HANDLE hPort = get_fd(env, jobj);
+  //HANDLE hPort = get_fd(env, jobj);
 
   jclass cls = env->GetObjectClass(jobj);
   jfid = env->GetFieldID(cls, "monThreadisInterrupted", "Z");
@@ -1260,6 +1260,10 @@
       NewFlag = EV_BREAK;
     break;
 
+    default:
+      /* Shouldn't happen. */
+      /* Return here to prevent warning about uninitialized NewFlag. */
+      return;
   }
 
   if(flag == JNI_TRUE)
diff -ru CVS/rxtx-devel_2_1/WinCE/rxtxHelpers.cpp \
                updated/rxtx-devel_2_1/WinCE/rxtxHelpers.cpp
--- CVS/rxtx-devel_2_1/WinCE/rxtxHelpers.cpp	2007-04-26 08:26:04.000000000 +0300
+++ updated/rxtx-devel_2_1/WinCE/rxtxHelpers.cpp	2009-11-18 20:16:36.000000000 +0300
@@ -1,8 +1,8 @@
+/*-------------------------------------------------------------------------
 |   RXTX License v 2.1 - LGPL v 2.1 + Linking Over Controlled Interface.
 |   RXTX is a native interface to serial ports in java.
 |   Copyright 1997-2007 by Trent Jarvi tjarvi@qbang.org and others who
 |   Copyright 2002-2004 Michal Hobot MichalHobot@netscape.net
-/*-------------------------------------------------------------------------
 |   actually wrote it.  See individual source files for more information.
 |
 |   A copy of the LGPL v 2.1 may be found at
@@ -300,7 +300,7 @@
     return -1;
   }
   
-	jsBuf = env->NewString(buf, wcslen(buf));
+	jsBuf = env->NewString((const jchar*)buf, wcslen(buf));
 
   env->CallVoidMethod(objOut, midPrint, jsBuf);
 
@@ -506,7 +506,11 @@
   }
 
   // Set initial event flags: It should be not empty, but unused here and relatively \
rare event +#ifdef EV_POWER
   (*EventInfoPtr)->ef = EV_POWER; //In WinNT you can use EV_EVENT2 instead
+#else
+  (*EventInfoPtr)->ef = EV_EVENT2;
+#endif
   return 0;
 }
 



_______________________________________________
Rxtx mailing list
Rxtx@qbang.org
http://mailman.qbang.org/mailman/listinfo/rxtx


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic