static void android_server_BatteryService_update(JNIEnv* env, jobject obj) { setBooleanField(env, obj, ACO, gFieldIds.mAcOnline); setBooleanField(env, obj, USBO, gFieldIds.mUsbOnline); setBooleanField(env, obj, BPRS, gFieldIds.mBatteryPresent); setPercentageField(env, obj, BCAP, gFieldIds.mBatteryLevel); setVoltageField(env, obj, BVOL, gFieldIds.mBatteryVoltage); setIntField(env, obj, BTMP, gFieldIds.mBatteryTemperature); const int SIZE = 128; char buf[SIZE]; if (readFromFile(BSTS, buf, SIZE) > 0) env->SetIntField(obj, gFieldIds.mBatteryStatus, getBatteryStatus(buf)); else env->SetIntField(obj, gFieldIds.mBatteryStatus, gConstants.statusUnknown); if (readFromFile(BHTH, buf, SIZE) > 0) env->SetIntField(obj, gFieldIds.mBatteryHealth, getBatteryHealth(buf)); if (readFromFile(BTECH, buf, SIZE) > 0) env->SetObjectField(obj, gFieldIds.mBatteryTechnology, env->NewStringUTF(buf)); }
static void android_server_BatteryService_update(JNIEnv* env, jobject obj) { setBooleanField(env, obj, gPaths.acOnlinePath, gFieldIds.mAcOnline); setBooleanField(env, obj, gPaths.usbOnlinePath, gFieldIds.mUsbOnline); setBooleanField(env, obj, gPaths.batteryPresentPath, gFieldIds.mBatteryPresent); setIntField(env, obj, gPaths.batteryCapacityPath, gFieldIds.mBatteryLevel); setVoltageField(env, obj, gPaths.batteryVoltagePath, gFieldIds.mBatteryVoltage); setIntField(env, obj, gPaths.batteryTemperaturePath, gFieldIds.mBatteryTemperature); const int SIZE = 128; char buf[SIZE]; if (readFromFile(gPaths.batteryStatusPath, buf, SIZE) > 0) env->SetIntField(obj, gFieldIds.mBatteryStatus, getBatteryStatus(buf)); else env->SetIntField(obj, gFieldIds.mBatteryStatus, gConstants.statusUnknown); if (readFromFile(gPaths.batteryHealthPath, buf, SIZE) > 0) env->SetIntField(obj, gFieldIds.mBatteryHealth, getBatteryHealth(buf)); if (readFromFile(gPaths.batteryTechnologyPath, buf, SIZE) > 0) env->SetObjectField(obj, gFieldIds.mBatteryTechnology, env->NewStringUTF(buf)); }
static void android_server_OppoBatteryService_update(JNIEnv* env, jobject obj) { setElectricityField(env, obj, gPaths.batteryCharge_NowPath, gFieldIds.mChargerVoltage); setElectricityField(env, obj, gPaths.batteryCurrent_NowPath, gFieldIds.mBatteryCurrent); setBooleanField(env, obj, gPaths.batteryChargeTimeoutPath, gFieldIds.mChargeTimeout); setBooleanField(env, obj, gPaths.batteryChargeSocFallPath, gFieldIds.mChargeSocFall); }
/** * Fills in the fields of target (Java class LongRef) from the fields of source * (uint64_t). */ bool FUSE26Util::fillFUSEConnInfo(JNIEnv *env, const struct fuse_conn_info *source, jobject target) { CSLogTraceEnter("bool FUSE26Util::fillFUSEConnInfo(%p, %p, %p)", env, source, target); bool ret = false; do { jclass clazz = env->GetObjectClass(target); if(clazz == NULL || env->ExceptionCheck() == JNI_TRUE) { CSLogError("Could not get object class!"); if(env->ExceptionCheck()) env->ExceptionDescribe(); break; } if(!setLongField(env, clazz, target, "proto_major", source->proto_major)) break; if(!setLongField(env, clazz, target, "proto_minor", source->proto_minor)) break; if(!setBooleanField(env, clazz, target, "async_read", (source->async_read ? JNI_TRUE : JNI_FALSE))) break; if(!setLongField(env, clazz, target, "max_write", source->max_write)) break; if(!setLongField(env, clazz, target, "max_readahead", source->max_readahead)) break; ret = true; } while(0); CSLogTraceLeave("bool FUSE26Util::fillFUSEConnInfo(%p, %p, %p): %d", env, source, target, ret); return ret; }
bool FUSE26Util::fillFUSEFileInfo(JNIEnv *env, const struct fuse_file_info *fi, jobject ffiObject) { CSLogTraceEnter("bool FUSE26Util::fillFUSEFileInfo(%p, %p, %p)", env, fi, ffiObject); bool ret = false; do { jclass ffiClass = env->GetObjectClass(ffiObject); if(ffiClass == NULL || env->ExceptionCheck() == JNI_TRUE) { CSLogError("Could not get object class!"); if(env->ExceptionCheck()) env->ExceptionDescribe(); break; } if(!setIntField(env, ffiClass, ffiObject, "flags", fi->flags)) break; if(!setLongField(env, ffiClass, ffiObject, "fh_old", fi->fh_old)) break; if(!setIntField(env, ffiClass, ffiObject, "writepage", fi->writepage)) break; if(!setBooleanField(env, ffiClass, ffiObject, "direct_io", (fi->direct_io == 0 ? JNI_FALSE : JNI_TRUE))) break; if(!setBooleanField(env, ffiClass, ffiObject, "keep_cache", (fi->keep_cache == 0 ? JNI_FALSE : JNI_TRUE))) break; if(!setBooleanField(env, ffiClass, ffiObject, "flush", (fi->flush == 0 ? JNI_FALSE : JNI_TRUE))) break; if(!setLongField(env, ffiClass, ffiObject, "fh", fi->fh)) break; if(!setLongField(env, ffiClass, ffiObject, "lock_owner", fi->lock_owner)) break; ret = true; } while(0); CSLogTraceLeave("bool FUSE26Util::fillFUSEFileInfo(%p, %p, %p): %d", env, fi, ffiObject, ret); return ret; }
static void android_server_BatteryService_update(JNIEnv* env, jobject obj) { setBooleanField(env, obj, gPaths.batteryPresentPath, gFieldIds.mBatteryPresent); setIntFieldMax(env, obj, gPaths.batteryCapacityPath, gFieldIds.mBatteryLevel, 100); setVoltageField(env, obj, gPaths.batteryVoltagePath, gFieldIds.mBatteryVoltage); setIntField(env, obj, gPaths.batteryTemperaturePath, gFieldIds.mBatteryTemperature); const int SIZE = 128; char buf[SIZE]; if (readFromFile(gPaths.batteryStatusPath, buf, SIZE) > 0) env->SetIntField(obj, gFieldIds.mBatteryStatus, getBatteryStatus(buf)); else env->SetIntField(obj, gFieldIds.mBatteryStatus, gConstants.statusUnknown); if (readFromFile(gPaths.batteryHealthPath, buf, SIZE) > 0) env->SetIntField(obj, gFieldIds.mBatteryHealth, getBatteryHealth(buf)); if (readFromFile(gPaths.batteryTechnologyPath, buf, SIZE) > 0) env->SetObjectField(obj, gFieldIds.mBatteryTechnology, env->NewStringUTF(buf)); unsigned int i; String8 path; jboolean acOnline = false; jboolean usbOnline = false; jboolean wirelessOnline = false; for (i = 0; i < gChargerNames.size(); i++) { path.clear(); path.appendFormat("%s/%s/online", POWER_SUPPLY_PATH, gChargerNames[i].string()); if (readFromFile(path, buf, SIZE) > 0) { if (buf[0] != '0') { path.clear(); path.appendFormat("%s/%s/type", POWER_SUPPLY_PATH, gChargerNames[i].string()); switch(readPowerSupplyType(path)) { case ANDROID_POWER_SUPPLY_TYPE_AC: acOnline = true; break; case ANDROID_POWER_SUPPLY_TYPE_USB: usbOnline = true; break; case ANDROID_POWER_SUPPLY_TYPE_WIRELESS: wirelessOnline = true; break; default: ALOGW("%s: Unknown power supply type", gChargerNames[i].string()); } } } } env->SetBooleanField(obj, gFieldIds.mAcOnline, acOnline); env->SetBooleanField(obj, gFieldIds.mUsbOnline, usbOnline); env->SetBooleanField(obj, gFieldIds.mWirelessOnline, wirelessOnline); }
w_int RandomAccessFile_createFromString (JNIEnv *env, w_instance thisRAF, w_instance path, int mode) { w_thread thread = JNIEnv2w_thread(env); w_string pathname_string; char *pathname; const char *fmode = "r+"; int openmode; int fdesc; vfs_FILE *file; w_instance fd_obj; struct vfs_STAT statbuf; int rc; if (mustBeInitialized(clazzFileDescriptor) == CLASS_LOADING_FAILED) { return 0; } pathname_string = String2string(path); pathname = (char*)string2UTF8(pathname_string, NULL) + 2; switch(mode) { case 0: openmode = VFS_O_RDONLY; fmode = "r"; break; case 1: openmode = VFS_O_RDWR | VFS_O_CREAT; break; case 2: openmode = VFS_O_RDWR | VFS_O_CREAT | VFS_O_DIRECT; break; case 3: openmode = VFS_O_RDWR | VFS_O_CREAT | VFS_O_SYNC; break; default: openmode = 0; } rc = vfs_stat(pathname, &statbuf); switch(mode) { case 0: if (rc != 0 || !VFS_S_ISREG(statbuf.st_mode) || (((statbuf.st_mode & VFS_S_IRWXU) & VFS_S_IRUSR) != VFS_S_IRUSR)) { return 1; } break; default: if (rc == 0 && (!VFS_S_ISREG(statbuf.st_mode) || (((statbuf.st_mode & VFS_S_IRWXU) & VFS_S_IWUSR) != VFS_S_IWUSR))) { return 1; } } fdesc = vfs_open(pathname, openmode, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); releaseMem(pathname - 2); if(fdesc == -1) { return 1; } file = vfs_fdopen(fdesc, fmode); if (file == NULL) { return 1; } else { enterUnsafeRegion(thread); fd_obj = allocInstance(thread, clazzFileDescriptor); enterSafeRegion(thread); if(fd_obj != NULL) { setReferenceField(thisRAF, fd_obj, F_RandomAccessFile_fd); setBooleanField(fd_obj, F_FileDescriptor_validFD, 1); setWotsitField(fd_obj, F_FileDescriptor_fd, file); setReferenceField(fd_obj, path, F_FileDescriptor_fileName); } } return 0; }