int PhidgetManager::OnAttach(CPhidgetHandle handle) { Lock(); if (FindPhidgetByHandle(handle)) { Unlock(); return EPHIDGET_OK; //We've already attached it } PhidgetsCommon* item; if (NULL == handle) //Manager tab { item = new PhidgetsManager(); } else { int status; int serial; CPhidget_DeviceClass device_class; if (EPHIDGET_OK != (status=CPhidget_getDeviceClass(handle, &device_class)) || EPHIDGET_OK != CPhidget_getSerialNumber(handle, &serial)) { Unlock(); return status; } switch(device_class) { case PHIDCLASS_ADVANCEDSERVO: item = new PhidgetsAdvancedServo(serial); break; case PHIDCLASS_INTERFACEKIT: item = new PhidgetsInterfaceKit(serial); break; case PHIDCLASS_RFID: item = new PhidgetsRFID(serial); break; default: { Unlock(); return EPHIDGET_UNSUPPORTED; } } } if (!item) { Unlock(); return EPHIDGET_NOMEMORY; } if (!item->Init()) { delete item; Unlock(); return EPHIDGET_UNEXPECTED; } AddPhidgetToList(item); Unlock(); return EPHIDGET_OK; }
JNIEXPORT jint JNICALL Java_com_phidgets_Phidget_getDeviceClass(JNIEnv *env, jobject obj) { CPhidgetHandle h = (CPhidgetHandle)(uintptr_t)(*env)->GetLongField(env, obj, handle_fid); int error; CPhidget_DeviceClass cls; if ((error = CPhidget_getDeviceClass(h, &cls))) PH_THROW(error); return (int)cls; }
int AttachHandler(CPhidgetHandle phid, void *userPtr) { int serialNo; const char *name; CPhidget_DeviceID id; CPhidget_DeviceClass cls; CPhidget_getDeviceName (phid, &name); CPhidget_getSerialNumber(phid, &serialNo); CPhidget_getDeviceClass(phid, &cls); CPhidget_getDeviceID(phid, &id); printf("%s %10d attached! (%d, %d) \n", name, serialNo, cls, id); display_devices((CPhidgetManagerHandle)userPtr); return 0; }