- allocate and return Strings (interface changes)

- Version 00.02.00

git-svn-id: https://svn.code.sf.net/p/libusbjava/code/trunk@149 94ad28fe-ef68-46b1-9651-e7ae4fcf1c4c
This commit is contained in:
schlaepfer
2006-05-10 13:17:22 +00:00
parent 2641d0dc11
commit 43628ec1bf
3 changed files with 50 additions and 35 deletions

View File

@@ -49,6 +49,8 @@
</profile> </profile>
</item> </item>
<item id="org.eclipse.cdt.core.pathentry"> <item id="org.eclipse.cdt.core.pathentry">
<pathentry include="C:/Program Files/Java/jdk1.5.0_04/include" kind="inc" path="" system="true"/>
<pathentry include="C:/MinGW/include" kind="inc" path="" system="true"/>
<pathentry kind="src" path=""/> <pathentry kind="src" path=""/>
<pathentry kind="out" path=""/> <pathentry kind="out" path=""/>
<pathentry kind="con" path="org.eclipse.cdt.make.core.DISCOVERED_SCANNER_INFO"/> <pathentry kind="con" path="org.eclipse.cdt.make.core.DISCOVERED_SCANNER_INFO"/>
@@ -57,7 +59,7 @@
<buildTargets> <buildTargets>
<target name="dll" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder"> <target name="dll" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
<buildCommand>make</buildCommand> <buildCommand>make</buildCommand>
<buildArguments></buildArguments> <buildArguments/>
<buildTarget>dll</buildTarget> <buildTarget>dll</buildTarget>
<stopOnError>false</stopOnError> <stopOnError>false</stopOnError>
<useDefaultCommand>true</useDefaultCommand> <useDefaultCommand>true</useDefaultCommand>

View File

@@ -4,6 +4,7 @@
* Computer Science Laboratory, inf.ntb.ch * Computer Science Laboratory, inf.ntb.ch
* Andreas Schl<68>pfer, aschlaepfer@ntb.ch * Andreas Schl<68>pfer, aschlaepfer@ntb.ch
* *
* Version 00.02.00
*/ */
#include <jni.h> #include <jni.h>
@@ -586,51 +587,63 @@ JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbWin_usb_1control_1msg
/* /*
* Class: ch_ntb_usb_LibusbWin * Class: ch_ntb_usb_LibusbWin
* Method: usb_get_string * Method: usb_get_string
* Signature: (IIILjava/lang/String;I)I * Signature: (III)Ljava/lang/String;
*/ */
JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1string JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1string
(JNIEnv *env, jobject obj, jint dev_handle, jint index, jint langid, jstring jbuf, jint buflen) (JNIEnv *env, jobject obj, jint dev_handle, jint index, jint langid)
{ {
const jchar *buf = env->GetStringChars(jbuf, NULL); char string[256];
int retVal = usb_get_string((usb_dev_handle *) dev_handle, index, langid, (char *) buf, buflen); int retVal = usb_get_string((usb_dev_handle *) dev_handle, index, langid, string, 256);
jbuf = env->NewString(buf, buflen); if (retVal > 0)
return retVal; return env->NewStringUTF(string);
return 0;
} }
/* /*
* Class: ch_ntb_usb_LibusbWin * Class: ch_ntb_usb_LibusbWin
* Method: usb_get_string_simple * Method: usb_get_string_simple
* Signature: (IILjava/lang/String;I)I * Signature: (II)Ljava/lang/String;
*/ */
JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1string_1simple JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1string_1simple
(JNIEnv *env, jobject obj, jint dev_handle, jint index, jstring jbuf, jint buflen) (JNIEnv *env, jobject obj, jint dev_handle, jint index)
{ {
const jchar *buf = env->GetStringChars(jbuf, NULL); char string[256];
int retVal = usb_get_string_simple((usb_dev_handle *) dev_handle, index, (char *) buf, buflen); int retVal = usb_get_string_simple((usb_dev_handle *) dev_handle, index, string, 256);
jbuf = env->NewString(buf, buflen); if (retVal > 0)
return retVal; return env->NewStringUTF(string);
return 0;
} }
/* /*
* Class: ch_ntb_usb_LibusbWin * Class: ch_ntb_usb_LibusbWin
* Method: usb_get_descriptor * Method: usb_get_descriptor
* Signature: (IBBLjava/lang/String;I)I * Signature: (IBBI)Ljava/lang/String;
*/ */
JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1descriptor JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1descriptor
(JNIEnv *env, jobject obj, jint dev_handle, jbyte type, jbyte index, jstring buf, jint size) (JNIEnv *env, jobject obj, jint dev_handle, jbyte type, jbyte index, jint size)
{ {
return usb_get_descriptor((usb_dev_handle *) dev_handle, (unsigned) type, (unsigned) index, buf, size); char *string = (char *) malloc(size * sizeof(char));
int retVal = usb_get_descriptor((usb_dev_handle *) dev_handle, (unsigned) type,
(unsigned) index, string, size);
if (retVal > 0)
return env->NewStringUTF(string);
return 0;
} }
/* /*
* Class: ch_ntb_usb_LibusbWin * Class: ch_ntb_usb_LibusbWin
* Method: usb_get_descriptor_by_endpoint * Method: usb_get_descriptor_by_endpoint
* Signature: (IIBBLjava/lang/String;I)I * Signature: (IIBBI)Ljava/lang/String;
*/ */
JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1descriptor_1by_1endpoint JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1descriptor_1by_1endpoint
(JNIEnv *env, jobject obj, jint dev_handle, jint ep, jbyte type, jbyte index, jstring buf, jint size) (JNIEnv *env, jobject obj, jint dev_handle, jint ep, jbyte type, jbyte index, jint size)
{ {
return usb_get_descriptor_by_endpoint((usb_dev_handle *) dev_handle, ep, (unsigned) type, (unsigned) index, buf, size); char *string = (char *) malloc(size * sizeof(char));
int retVal = usb_get_descriptor_by_endpoint((usb_dev_handle *) dev_handle, ep, (unsigned) type,
(unsigned) index, string, size);
if (retVal > 0)
return env->NewStringUTF(string);
return 0;
} }
/* /*

View File

@@ -114,34 +114,34 @@ JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbWin_usb_1control_1msg
/* /*
* Class: ch_ntb_usb_LibusbWin * Class: ch_ntb_usb_LibusbWin
* Method: usb_get_string * Method: usb_get_string
* Signature: (IIILjava/lang/String;I)I * Signature: (III)Ljava/lang/String;
*/ */
JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1string JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1string
(JNIEnv *, jobject, jint, jint, jint, jstring, jint); (JNIEnv *, jobject, jint, jint, jint);
/* /*
* Class: ch_ntb_usb_LibusbWin * Class: ch_ntb_usb_LibusbWin
* Method: usb_get_string_simple * Method: usb_get_string_simple
* Signature: (IILjava/lang/String;I)I * Signature: (II)Ljava/lang/String;
*/ */
JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1string_1simple JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1string_1simple
(JNIEnv *, jobject, jint, jint, jstring, jint); (JNIEnv *, jobject, jint, jint);
/* /*
* Class: ch_ntb_usb_LibusbWin * Class: ch_ntb_usb_LibusbWin
* Method: usb_get_descriptor * Method: usb_get_descriptor
* Signature: (IBBLjava/lang/String;I)I * Signature: (IBBI)Ljava/lang/String;
*/ */
JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1descriptor JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1descriptor
(JNIEnv *, jobject, jint, jbyte, jbyte, jstring, jint); (JNIEnv *, jobject, jint, jbyte, jbyte, jint);
/* /*
* Class: ch_ntb_usb_LibusbWin * Class: ch_ntb_usb_LibusbWin
* Method: usb_get_descriptor_by_endpoint * Method: usb_get_descriptor_by_endpoint
* Signature: (IIBBLjava/lang/String;I)I * Signature: (IIBBI)Ljava/lang/String;
*/ */
JNIEXPORT jint JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1descriptor_1by_1endpoint JNIEXPORT jstring JNICALL Java_ch_ntb_usb_LibusbWin_usb_1get_1descriptor_1by_1endpoint
(JNIEnv *, jobject, jint, jint, jbyte, jbyte, jstring, jint); (JNIEnv *, jobject, jint, jint, jbyte, jbyte, jint);
/* /*
* Class: ch_ntb_usb_LibusbWin * Class: ch_ntb_usb_LibusbWin