public void programThresholds(ThermalSensor s) { if (s == null) return; int zoneState = getZoneState(); if (zoneState == ThermalManager.THERMAL_STATE_OFF) return; int lowerTripPoint = ThermalUtils.getLowerThresholdTemp(zoneState, getZoneTempThreshold()); int upperTripPoint = ThermalUtils.getUpperThresholdTemp(zoneState, getZoneTempThreshold()); if (lowerTripPoint != ThermalManager.INVALID_TEMP && upperTripPoint != ThermalManager.INVALID_TEMP) { if (ThermalUtils.writeSysfs(s.getSensorLowTempPath(), lowerTripPoint) == -1) { Log.i( TAG, "error while programming lower trip point:" + lowerTripPoint + "for sensor:" + s.getSensorName()); } if (ThermalUtils.writeSysfs(s.getSensorHighTempPath(), upperTripPoint) == -1) { Log.i( TAG, "error while programming upper trip point:" + upperTripPoint + "for sensor:" + s.getSensorName()); } } }
@Override public void onUEvent(UEventObserver.UEvent event) { String sensorName; int sensorTemp, errorVal, eventType = -1; ThermalZone zone; if (mThermalSensors == null) return; // Name of the sensor and current temperature are mandatory parameters of an UEvent sensorName = event.get("NAME"); sensorTemp = Integer.parseInt(event.get("TEMP")); // eventType is an optional parameter. so, check for null case if (event.get("EVENT") != null) eventType = Integer.parseInt(event.get("EVENT")); if (sensorName != null) { Log.i(TAG, "UEvent received for sensor:" + sensorName + " temp:" + sensorTemp); // check the name against the first sensor ThermalSensor sensor = mThermalSensors.get(0); if (sensor != null && sensor.getSensorName() != null && sensor.getSensorName().equalsIgnoreCase(sensorName)) { // Adjust the sensor temperature based on the 'error correction' temperature. // For 'LOW' event, debounce interval will take care of this. errorVal = sensor.getErrorCorrectionTemp(); if (eventType == ThermalManager.THERMAL_HIGH_EVENT) sensorTemp += errorVal; if (isZoneStateChanged(sensor, sensorTemp)) { sendThermalEvent(); // reprogram threshold programThresholds(sensor); } } } }
private void printSensors() { if (mThermalSensors == null) return; StringBuilder s = new StringBuilder(); for (ThermalSensor ts : mThermalSensors) { if (ts != null) { s.append(ts.getSensorName()); s.append(","); } } Log.i(TAG, "zoneID: " + mZoneID + " sensors mapped:" + s.toString()); }