com_phidgets_Phidget.c
Go to the documentation of this file.
00001 #include "../stdafx.h"
00002 #include <stdlib.h>
00003 #include "com_phidgets_Phidget.h"
00004 #include "../cphidget.h"
00005 #include "../csocket.h"
00006 #include "phidget_jni.h"
00007 
00008 static int CCONV attach_handler(CPhidgetHandle h, void *arg);
00009 static int CCONV detach_handler(CPhidgetHandle h, void *arg);
00010 static int CCONV serverConnect_handler(CPhidgetHandle h, void *arg);
00011 static int CCONV serverDisconnect_handler(CPhidgetHandle h, void *arg);
00012 static int CCONV error_handler(CPhidgetHandle h, void *, int l, const char *arg);
00013 
00014 jfieldID handle_fid;
00015 jfieldID managerPhidget_fid;
00016 static jfieldID nativeAttachHandler_fid;
00017 static jfieldID nativeDetachHandler_fid;
00018 static jfieldID nativeErrorHandler_fid;
00019 static jfieldID nativeServerConnectHandler_fid;
00020 static jfieldID nativeServerDisconnectHandler_fid;
00021 
00022 static jmethodID fireAttach_mid;
00023 static jmethodID fireDetach_mid;
00024 static jmethodID fireError_mid;
00025 static jmethodID fireServerConnect_mid;
00026 static jmethodID fireServerDisconnect_mid;
00027 
00028 void
00029 com_phidgets_Phidget_OnLoad(JNIEnv *env)
00030 {
00031         if (!(handle_fid = (*env)->GetFieldID(env, phidget_class, "handle", "J")))
00032                 JNI_ABORT_STDERR("Couldn't get Field ID handle from phidget_class");
00033         if (!(managerPhidget_fid = (*env)->GetFieldID(env, phidget_class, "managerPhidget", "Z")))
00034                 JNI_ABORT_STDERR("Couldn't get Field ID managerPhidget from phidget_class");
00035         if (!(nativeAttachHandler_fid = (*env)->GetFieldID(env, phidget_class, "nativeAttachHandler", "J")))
00036                 JNI_ABORT_STDERR("Couldn't get Field ID nativeAttachHandler from phidget_class");
00037         if (!(nativeDetachHandler_fid = (*env)->GetFieldID(env, phidget_class, "nativeDetachHandler", "J")))
00038                 JNI_ABORT_STDERR("Couldn't get Field ID nativeDetachHandler from phidget_class");
00039         if (!(nativeErrorHandler_fid = (*env)->GetFieldID(env, phidget_class, "nativeErrorHandler", "J")))
00040                 JNI_ABORT_STDERR("Couldn't get Field ID nativeErrorHandler from phidget_class");
00041         if (!(nativeServerConnectHandler_fid = (*env)->GetFieldID(env, phidget_class, "nativeServerConnectHandler", "J")))
00042                 JNI_ABORT_STDERR("Couldn't get Field ID nativeServerConnectHandler from phidget_class");
00043         if (!(nativeServerDisconnectHandler_fid = (*env)->GetFieldID(env, phidget_class, "nativeServerDisconnectHandler", "J")))
00044                 JNI_ABORT_STDERR("Couldn't get Field ID nativeServerDisconnectHandler from phidget_class");
00045 
00046         if (!(fireAttach_mid = (*env)->GetMethodID(env, phidget_class, "fireAttach", "(Lcom/phidgets/event/AttachEvent;)V")))
00047                 JNI_ABORT_STDERR("Couldn't get method ID fireAttach from phidget_class");
00048         if (!(fireDetach_mid = (*env)->GetMethodID(env, phidget_class, "fireDetach", "(Lcom/phidgets/event/DetachEvent;)V")))
00049                 JNI_ABORT_STDERR("Couldn't get method ID fireDetach from phidget_class");
00050         if (!(fireError_mid = (*env)->GetMethodID(env, phidget_class, "fireError", "(Lcom/phidgets/event/ErrorEvent;)V")))
00051                 JNI_ABORT_STDERR("Couldn't get method ID fireError from phidget_class");
00052         if (!(fireServerConnect_mid = (*env)->GetMethodID(env, phidget_class, "fireServerConnect", "(Lcom/phidgets/event/ServerConnectEvent;)V")))
00053                 JNI_ABORT_STDERR("Couldn't get method ID fireServerConnect from phidget_class");
00054         if (!(fireServerDisconnect_mid = (*env)->GetMethodID(env, phidget_class, "fireServerDisconnect", "(Lcom/phidgets/event/ServerDisconnectEvent;)V")))
00055                 JNI_ABORT_STDERR("Couldn't get method ID fireServerDisconnect from phidget_class");
00056 }
00057 
00058 JNIEXPORT void JNICALL
00059 Java_com_phidgets_Phidget_enableAttachEvents(JNIEnv *env, jobject obj,
00060                                                                                          jboolean b)
00061 {
00062         jlong gr = updateGlobalRef(env, obj, nativeAttachHandler_fid, b);
00063         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00064                 obj, handle_fid);
00065 
00066         CPhidget_set_OnAttach_Handler(h, b ? attach_handler : 0,
00067                 (void *)(uintptr_t)gr);
00068 }
00069 
00070 static int CCONV
00071 attach_handler(CPhidgetHandle h, void *arg)
00072 {
00073         JNIEnv *env;
00074         jobject obj;
00075         jobject attachEvent;
00076 
00077         if ((*ph_vm)->AttachCurrentThread(ph_vm, (JNIEnvPtr)&env, NULL))
00078                 JNI_ABORT_STDERR("Couldn't AttachCurrentThread");
00079 
00080         obj = (jobject)arg;
00081 
00082         if (!(attachEvent = (*env)->NewObject(env, attachEvent_class, attachEvent_cons,
00083                 obj)))
00084                 return -1;
00085         (*env)->CallVoidMethod(env, obj, fireAttach_mid, attachEvent);
00086         (*env)->DeleteLocalRef(env, attachEvent);
00087 
00088         return 0;
00089 }
00090 
00091 JNIEXPORT void JNICALL
00092 Java_com_phidgets_Phidget_enableDetachEvents(JNIEnv *env, jobject obj,
00093                                                                                          jboolean b)
00094 {
00095         jlong gr = updateGlobalRef(env, obj, nativeDetachHandler_fid, b);
00096         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00097                 obj, handle_fid);
00098 
00099         CPhidget_set_OnDetach_Handler(h, b ? detach_handler : 0, (void *)(uintptr_t)gr);
00100 }
00101 
00102 static int CCONV
00103 detach_handler(CPhidgetHandle h, void *arg)
00104 {
00105         JNIEnv *env;
00106         jobject obj;
00107         jobject detachEvent;
00108 
00109         if ((*ph_vm)->AttachCurrentThread(ph_vm, (JNIEnvPtr)&env, NULL))
00110                 JNI_ABORT_STDERR("Couldn't AttachCurrentThread");
00111 
00112         obj = (jobject)arg;
00113 
00114         if (!(detachEvent = (*env)->NewObject(env, detachEvent_class, detachEvent_cons,
00115                 obj)))
00116                 return -1;
00117         (*env)->CallVoidMethod(env, obj, fireDetach_mid, detachEvent);
00118         (*env)->DeleteLocalRef(env, detachEvent);
00119 
00120         return 0;
00121 }
00122 
00123 JNIEXPORT void JNICALL
00124 Java_com_phidgets_Phidget_enableErrorEvents(JNIEnv *env, jobject obj,
00125                                                                                         jboolean b)
00126 {
00127         jlong gr = updateGlobalRef(env, obj, nativeErrorHandler_fid, b);
00128         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00129                 obj, handle_fid);
00130 
00131         CPhidget_set_OnError_Handler(h, b ? error_handler : 0, (void *)(uintptr_t)gr);
00132 }
00133 
00134 static int CCONV
00135 error_handler(CPhidgetHandle h, void *arg, int l, const char *v)
00136 {
00137         JNIEnv *env;
00138         jobject obj;
00139         jobject errorEvent;
00140         jobject eobj;
00141         jstring edesc;
00142 
00143         if ((*ph_vm)->AttachCurrentThread(ph_vm, (JNIEnvPtr)&env, NULL))
00144                 JNI_ABORT_STDERR("Couldn't AttachCurrentThread");
00145 
00146         obj = (jobject)arg;
00147 
00148         if (!(edesc = (*env)->NewStringUTF(env, v)))
00149                 return -1;
00150 
00151         if (!(eobj = (*env)->NewObject(env, ph_exception_class, ph_exception_cons, l, edesc)))
00152                 return -1;
00153 
00154         if (!(errorEvent = (*env)->NewObject(env, errorEvent_class, errorEvent_cons, obj, eobj)))
00155                 return -1;
00156 
00157         (*env)->DeleteLocalRef (env, edesc);
00158         (*env)->CallVoidMethod(env, obj, fireError_mid, errorEvent);
00159         (*env)->DeleteLocalRef(env, errorEvent);
00160 
00161         return 0;
00162 }
00163 
00164 JNIEXPORT void JNICALL
00165 Java_com_phidgets_Phidget_enableServerConnectEvents(JNIEnv *env, jobject obj,
00166                                                                                                         jboolean b)
00167 {
00168         jlong gr = updateGlobalRef(env, obj, nativeServerConnectHandler_fid, b);
00169         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00170                 obj, handle_fid);
00171 
00172         CPhidget_set_OnServerConnect_Handler(h, b ? serverConnect_handler : 0,
00173                 (void *)(uintptr_t)gr);
00174 }
00175 
00176 static int CCONV
00177 serverConnect_handler(CPhidgetHandle h, void *arg)
00178 {
00179         JNIEnv *env;
00180         jobject obj;
00181         jobject serverConnectEvent;
00182 
00183         if ((*ph_vm)->AttachCurrentThread(ph_vm, (JNIEnvPtr)&env, NULL))
00184                 JNI_ABORT_STDERR("Couldn't AttachCurrentThread");
00185 
00186         obj = (jobject)arg;
00187 
00188         if (!(serverConnectEvent = (*env)->NewObject(env, serverConnectEvent_class, serverConnectEvent_cons,
00189                 obj)))
00190                 return -1;
00191         (*env)->CallVoidMethod(env, obj, fireServerConnect_mid, serverConnectEvent);
00192         (*env)->DeleteLocalRef(env, serverConnectEvent);
00193 
00194         return 0;
00195 }
00196 
00197 JNIEXPORT void JNICALL
00198 Java_com_phidgets_Phidget_enableServerDisconnectEvents(JNIEnv *env, jobject obj,
00199                                                                                                            jboolean b)
00200 {
00201         jlong gr = updateGlobalRef(env, obj, nativeServerDisconnectHandler_fid, b);
00202         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00203                 obj, handle_fid);
00204 
00205         CPhidget_set_OnServerDisconnect_Handler(h, b ? serverDisconnect_handler : 0,
00206                 (void *)(uintptr_t)gr);
00207 }
00208 
00209 static int CCONV
00210 serverDisconnect_handler(CPhidgetHandle h, void *arg)
00211 {
00212         JNIEnv *env;
00213         jobject obj;
00214         jobject serverDisconnectEvent;
00215 
00216         if ((*ph_vm)->AttachCurrentThread(ph_vm, (JNIEnvPtr)&env, NULL))
00217                 JNI_ABORT_STDERR("Couldn't AttachCurrentThread");
00218 
00219         obj = (jobject)arg;
00220 
00221         if (!(serverDisconnectEvent = (*env)->NewObject(env, serverDisconnectEvent_class, serverDisconnectEvent_cons,
00222                 obj)))
00223                 return -1;
00224         (*env)->CallVoidMethod(env, obj, fireServerDisconnect_mid, serverDisconnectEvent);
00225         (*env)->DeleteLocalRef(env, serverDisconnectEvent);
00226 
00227         return 0;
00228 }
00229 
00230 JNIEXPORT void JNICALL
00231 Java_com_phidgets_Phidget_nativeOpen(JNIEnv *env, jobject obj, jint ser)
00232 {
00233         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00234                 obj, handle_fid);
00235         int error;
00236 
00237         if ((error = CPhidget_open(h, ser)))
00238                 PH_THROW(error);
00239 }
00240 
00241 JNIEXPORT void JNICALL
00242 Java_com_phidgets_Phidget_nativeOpenRemote(JNIEnv *env, jobject obj, jint ser, jstring serverID, jstring pass)
00243 {
00244         int error;
00245         jboolean iscopy;
00246         const char *serverIDcopy = serverID?(*env)->GetStringUTFChars(
00247                 env, serverID, &iscopy):0;
00248         const char *passcopy = (*env)->GetStringUTFChars(
00249                 env, pass, &iscopy);
00250 
00251         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)
00252                 (*env)->GetLongField(env, obj, handle_fid);
00253 
00254         if ((error = CPhidget_openRemote(h, ser, serverIDcopy, passcopy)))
00255                 PH_THROW(error);
00256 
00257         if(serverID)
00258                 (*env)->ReleaseStringUTFChars(env, serverID, serverIDcopy);
00259         (*env)->ReleaseStringUTFChars(env, pass, passcopy);
00260 }
00261 
00262 JNIEXPORT void JNICALL
00263 Java_com_phidgets_Phidget_nativeOpenRemoteIP(JNIEnv *env, jobject obj, jint ser, jstring ipAddr, jint port, jstring pass)
00264 {
00265         int error;
00266         jboolean iscopy;
00267         const char *ipAddrcopy = (*env)->GetStringUTFChars(
00268                 env, ipAddr, &iscopy);
00269         const char *passcopy = (*env)->GetStringUTFChars(
00270                 env, pass, &iscopy);
00271 
00272         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)
00273                 (*env)->GetLongField(env, obj, handle_fid);
00274 
00275         if ((error = CPhidget_openRemoteIP(h, ser, ipAddrcopy, port, passcopy)))
00276                 PH_THROW(error);
00277 
00278         (*env)->ReleaseStringUTFChars(env, ipAddr, ipAddrcopy);
00279         (*env)->ReleaseStringUTFChars(env, pass, passcopy);
00280 }
00281 
00282 JNIEXPORT void JNICALL
00283 Java_com_phidgets_Phidget_nativeOpenLabel(JNIEnv *env, jobject obj, jstring label)
00284 {
00285         int error;
00286         jboolean iscopy;
00287         const char *labelcopy = (*env)->GetStringUTFChars(
00288                 env, label, &iscopy);
00289 
00290         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00291                 obj, handle_fid);
00292 
00293         if ((error = CPhidget_openLabel(h, labelcopy)))
00294                 PH_THROW(error);
00295 
00296         (*env)->ReleaseStringUTFChars(env, label, labelcopy);
00297 }
00298 
00299 JNIEXPORT void JNICALL
00300 Java_com_phidgets_Phidget_nativeOpenLabelRemote(JNIEnv *env, jobject obj, jstring label, jstring serverID, jstring pass)
00301 {
00302         int error;
00303         jboolean iscopy;
00304         const char *serverIDcopy = serverID?(*env)->GetStringUTFChars(
00305                 env, serverID, &iscopy):0;
00306         const char *passcopy = (*env)->GetStringUTFChars(
00307                 env, pass, &iscopy);
00308         const char *labelcopy = (*env)->GetStringUTFChars(
00309                 env, label, &iscopy);
00310 
00311         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)
00312                 (*env)->GetLongField(env, obj, handle_fid);
00313 
00314         if ((error = CPhidget_openLabelRemote(h, labelcopy, serverIDcopy, passcopy)))
00315                 PH_THROW(error);
00316 
00317         if(serverID)
00318                 (*env)->ReleaseStringUTFChars(env, serverID, serverIDcopy);
00319         (*env)->ReleaseStringUTFChars(env, pass, passcopy);
00320         (*env)->ReleaseStringUTFChars(env, label, labelcopy);
00321 }
00322 
00323 JNIEXPORT void JNICALL
00324 Java_com_phidgets_Phidget_nativeOpenLabelRemoteIP(JNIEnv *env, jobject obj, jstring label, jstring ipAddr, jint port, jstring pass)
00325 {
00326         int error;
00327         jboolean iscopy;
00328         const char *ipAddrcopy = (*env)->GetStringUTFChars(
00329                 env, ipAddr, &iscopy);
00330         const char *passcopy = (*env)->GetStringUTFChars(
00331                 env, pass, &iscopy);
00332         const char *labelcopy = (*env)->GetStringUTFChars(
00333                 env, label, &iscopy);
00334 
00335         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)
00336                 (*env)->GetLongField(env, obj, handle_fid);
00337 
00338         if ((error = CPhidget_openLabelRemoteIP(h, labelcopy, ipAddrcopy, port, passcopy)))
00339                 PH_THROW(error);
00340 
00341         (*env)->ReleaseStringUTFChars(env, ipAddr, ipAddrcopy);
00342         (*env)->ReleaseStringUTFChars(env, pass, passcopy);
00343         (*env)->ReleaseStringUTFChars(env, label, labelcopy);
00344 }
00345 
00346 JNIEXPORT void JNICALL
00347 Java_com_phidgets_Phidget_nativeClose(JNIEnv *env, jobject obj)
00348 {
00349         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00350                 obj, handle_fid);
00351         int error;
00352 
00353         if ((error = CPhidget_close(h)))
00354                 PH_THROW(error);
00355 }
00356 
00357 JNIEXPORT void JNICALL
00358 Java_com_phidgets_Phidget_nativeDelete(JNIEnv *env, jobject obj)
00359 {
00360         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00361                 obj, handle_fid);
00362         int error;
00363 
00364         if ((error = CPhidget_delete(h)))
00365                 PH_THROW(error);
00366 }
00367 
00368 JNIEXPORT jint JNICALL
00369 Java_com_phidgets_Phidget_getSerialNumber(JNIEnv *env, jobject obj)
00370 {
00371         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00372                 obj, handle_fid);
00373         int error;
00374         int ser;
00375 
00376         if ((error = CPhidget_getSerialNumber(h, &ser)))
00377                 PH_THROW(error);
00378 
00379         return ser;
00380 }
00381 
00382 JNIEXPORT jint JNICALL
00383 Java_com_phidgets_Phidget_getServerPort(JNIEnv *env, jobject obj)
00384 {
00385         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00386                 obj, handle_fid);
00387         int error;
00388         int port;
00389         const char *addr;
00390 
00391         if ((error = CPhidget_getServerAddress(h, &addr, &port)))
00392                 PH_THROW(error);
00393 
00394         return port;
00395 }
00396 
00397 JNIEXPORT jstring JNICALL
00398 Java_com_phidgets_Phidget_getServerAddress(JNIEnv *env, jobject obj)
00399 {
00400         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00401                 obj, handle_fid);
00402         int error;
00403         int port;
00404         const char *addr;
00405 
00406         if ((error = CPhidget_getServerAddress(h, &addr, &port)))
00407                 PH_THROW(error);
00408 
00409         return (*env)->NewStringUTF(env, addr);
00410 }
00411 
00412 JNIEXPORT jstring JNICALL
00413 Java_com_phidgets_Phidget_getServerID(JNIEnv *env, jobject obj)
00414 {
00415         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00416                 obj, handle_fid);
00417         int error;
00418         const char *id;
00419 
00420         if ((error = CPhidget_getServerID(h, &id)))
00421                 PH_THROW(error);
00422 
00423         return (*env)->NewStringUTF(env, id);
00424 }
00425 
00426 JNIEXPORT jint JNICALL
00427 Java_com_phidgets_Phidget_getDeviceID(JNIEnv *env, jobject obj)
00428 {
00429         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00430                 obj, handle_fid);
00431         int error;
00432         CPhidget_DeviceID id;
00433 
00434         if ((error = CPhidget_getDeviceID(h, &id)))
00435                 PH_THROW(error);
00436 
00437         return (int)id;
00438 }
00439 
00440 JNIEXPORT jint JNICALL
00441 Java_com_phidgets_Phidget_getDeviceClass(JNIEnv *env, jobject obj)
00442 {
00443         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00444                 obj, handle_fid);
00445         int error;
00446         CPhidget_DeviceClass cls;
00447 
00448         if ((error = CPhidget_getDeviceClass(h, &cls)))
00449                 PH_THROW(error);
00450 
00451         return (int)cls;
00452 }
00453 
00454 JNIEXPORT jint JNICALL
00455 Java_com_phidgets_Phidget_getDeviceVersion(JNIEnv *env, jobject obj)
00456 {
00457         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00458                 obj, handle_fid);
00459         int error;
00460         int ver;
00461 
00462         if ((error = CPhidget_getDeviceVersion(h, &ver)))
00463                 PH_THROW(error);
00464 
00465         return ver;
00466 }
00467 
00468 JNIEXPORT jstring JNICALL
00469 Java_com_phidgets_Phidget_getDeviceType(JNIEnv *env, jobject obj)
00470 {
00471         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00472                 obj, handle_fid);
00473         const char *type;
00474         int error;
00475 
00476         if ((error = CPhidget_getDeviceType(h, &type)))
00477                 PH_THROW(error);
00478 
00479         return (*env)->NewStringUTF(env, type);
00480 }
00481 
00482 JNIEXPORT jstring JNICALL
00483 Java_com_phidgets_Phidget_getDeviceName(JNIEnv *env, jobject obj)
00484 {
00485         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00486                 obj, handle_fid);
00487         const char *type;
00488         int error;
00489 
00490         if ((error = CPhidget_getDeviceName(h, &type)))
00491                 PH_THROW(error);
00492 
00493         return (*env)->NewStringUTF(env, type);
00494 }
00495 
00496 JNIEXPORT jstring JNICALL
00497 Java_com_phidgets_Phidget_getDeviceLabel(JNIEnv *env, jobject obj)
00498 {
00499         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00500                 obj, handle_fid);
00501         const char *label;
00502         int error;
00503 
00504         if ((error = CPhidget_getDeviceLabel(h, &label)))
00505                 PH_THROW(error);
00506 
00507         return (*env)->NewStringUTF(env, label);
00508 }
00509 
00510 JNIEXPORT void JNICALL
00511 Java_com_phidgets_Phidget_setDeviceLabel(JNIEnv *env, jobject obj, jstring v)
00512 {
00513         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)
00514                 (*env)->GetLongField(env, obj, handle_fid);
00515         int error;
00516         jboolean iscopy;
00517         const char *textString = (*env)->GetStringUTFChars(
00518                 env, v, &iscopy);
00519         if ((error = CPhidget_setDeviceLabel(h, (char *)textString)))
00520                 PH_THROW(error);
00521         (*env)->ReleaseStringUTFChars(env, v, textString);
00522 }
00523 
00524 JNIEXPORT void JNICALL
00525 Java_com_phidgets_Phidget_nativeEnableLogging(JNIEnv *env, jclass cls, jint level, jstring file)
00526 {
00527         int error;
00528         jboolean iscopy;
00529         const char *textString = file ? (*env)->GetStringUTFChars(env, file, &iscopy) : NULL;
00530         if ((error = CPhidget_enableLogging(level, (char *)textString)))
00531                 PH_THROW(error);
00532         if(textString != NULL)
00533                 (*env)->ReleaseStringUTFChars(env, file, textString);
00534 }
00535 
00536 JNIEXPORT void JNICALL
00537 Java_com_phidgets_Phidget_disableLogging(JNIEnv *env, jclass cls)
00538 {
00539         int error;
00540         if ((error = CPhidget_disableLogging()))
00541                 PH_THROW(error);
00542 }
00543 
00544 JNIEXPORT void JNICALL
00545 Java_com_phidgets_Phidget_nativeLog(JNIEnv *env, jclass cls, jint level, jstring id, jstring log)
00546 {
00547         int error;
00548         jboolean iscopy1;
00549         const char *textString1 = (*env)->GetStringUTFChars(
00550                 env, id, &iscopy1);
00551         jboolean iscopy2;
00552         const char *textString2 = (*env)->GetStringUTFChars(
00553                 env, log, &iscopy2);
00554         if ((error = CPhidget_log(level, (char *)textString1, (char *)textString2)))
00555                 PH_THROW(error);
00556         (*env)->ReleaseStringUTFChars(env, id, textString1);
00557         (*env)->ReleaseStringUTFChars(env, log, textString2);
00558 }
00559 
00560 JNIEXPORT jstring JNICALL
00561 Java_com_phidgets_Phidget_getLibraryVersion(JNIEnv *env, jclass cls)
00562 {
00563         const char *ver;
00564 
00565         CPhidget_getLibraryVersion(&ver);
00566 
00567         return (*env)->NewStringUTF(env, ver);
00568 }
00569 
00570 JNIEXPORT jboolean JNICALL
00571 Java_com_phidgets_Phidget_isAttached(JNIEnv *env, jobject obj)
00572 {
00573         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00574                 obj, handle_fid);
00575         int error;
00576         int s;
00577 
00578         if ((error = CPhidget_getDeviceStatus(h, &s)))
00579                 PH_THROW(error);
00580 
00581         return s == PHIDGET_ATTACHED;
00582 }
00583 
00584 JNIEXPORT jboolean JNICALL
00585 Java_com_phidgets_Phidget_isAttachedToServer(JNIEnv *env, jobject obj)
00586 {
00587         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env,
00588                 obj, handle_fid);
00589         int error;
00590         int s;
00591 
00592         if ((error = CPhidget_getServerStatus(h, &s)))
00593                 PH_THROW(error);
00594 
00595         return s == PHIDGET_ATTACHED;
00596 }
00597 
00598 JNIEXPORT void JNICALL 
00599 Java_com_phidgets_Phidget_waitForAttachment(JNIEnv *env, jobject obj, jint timeout)
00600 {
00601         int error;
00602         CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env, obj, handle_fid);
00603 
00604         if ((error = CPhidget_waitForAttachment(h, timeout)))
00605                 PH_THROW(error);
00606 
00607         return;
00608 }


pedal_monitor
Author(s): Pedro Mendes
autogenerated on Fri Jun 6 2014 18:37:20