ThermalManagerService: only update thermal status for SKIN type thermistor
Skin thermistors are the ones to monitor long term thermal stress. The public thermal API for app is meant to be used mitigation Tskin. This CL will eliminate status update from other types of thermistors. Test: atest ThermalManagerServiceTest Change-Id: I333f358ee49fc83ad6d7b4944541f6fc428023ce
This commit is contained in:
@@ -200,7 +200,7 @@ public class ThermalManagerService extends SystemService {
|
||||
final int count = mTemperatureMap.size();
|
||||
for (int i = 0; i < count; i++) {
|
||||
Temperature t = mTemperatureMap.valueAt(i);
|
||||
if (t.getStatus() >= newStatus) {
|
||||
if (t.getType() == Temperature.TYPE_SKIN && t.getStatus() >= newStatus) {
|
||||
newStatus = t.getStatus();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -284,28 +284,29 @@ public class ThermalManagerServiceTest {
|
||||
@Test
|
||||
public void testNotify() throws RemoteException {
|
||||
int status = Temperature.THROTTLING_SEVERE;
|
||||
// Should only notify event not status
|
||||
Temperature newBattery = new Temperature(50, Temperature.TYPE_BATTERY, "batt", status);
|
||||
mFakeHal.mCallback.onValues(newBattery);
|
||||
verify(mEventListener1, timeout(CALLBACK_TIMEOUT_MILLI_SEC)
|
||||
.times(1)).notifyThrottling(newBattery);
|
||||
verify(mStatusListener1, timeout(CALLBACK_TIMEOUT_MILLI_SEC)
|
||||
.times(1)).onStatusChange(status);
|
||||
.times(0)).onStatusChange(anyInt());
|
||||
verify(mEventListener2, timeout(CALLBACK_TIMEOUT_MILLI_SEC)
|
||||
.times(0)).notifyThrottling(newBattery);
|
||||
verify(mStatusListener2, timeout(CALLBACK_TIMEOUT_MILLI_SEC)
|
||||
.times(1)).onStatusChange(status);
|
||||
.times(0)).onStatusChange(anyInt());
|
||||
resetListenerMock();
|
||||
// Should only notify event not status
|
||||
// Notify both event and status
|
||||
Temperature newSkin = new Temperature(50, Temperature.TYPE_SKIN, "skin1", status);
|
||||
mFakeHal.mCallback.onValues(newSkin);
|
||||
verify(mEventListener1, timeout(CALLBACK_TIMEOUT_MILLI_SEC)
|
||||
.times(1)).notifyThrottling(newSkin);
|
||||
verify(mStatusListener1, timeout(CALLBACK_TIMEOUT_MILLI_SEC)
|
||||
.times(0)).onStatusChange(anyInt());
|
||||
.times(1)).onStatusChange(status);
|
||||
verify(mEventListener2, timeout(CALLBACK_TIMEOUT_MILLI_SEC)
|
||||
.times(1)).notifyThrottling(newSkin);
|
||||
verify(mStatusListener2, timeout(CALLBACK_TIMEOUT_MILLI_SEC)
|
||||
.times(0)).onStatusChange(anyInt());
|
||||
.times(1)).onStatusChange(status);
|
||||
resetListenerMock();
|
||||
// Back to None, should only notify event not status
|
||||
status = Temperature.THROTTLING_NONE;
|
||||
@@ -345,10 +346,13 @@ public class ThermalManagerServiceTest {
|
||||
|
||||
@Test
|
||||
public void testGetCurrentStatus() throws RemoteException {
|
||||
int status = Temperature.THROTTLING_EMERGENCY;
|
||||
int status = Temperature.THROTTLING_SEVERE;
|
||||
Temperature newSkin = new Temperature(100, Temperature.TYPE_SKIN, "skin1", status);
|
||||
mFakeHal.mCallback.onValues(newSkin);
|
||||
assertEquals(status, mService.mService.getCurrentThermalStatus());
|
||||
int battStatus = Temperature.THROTTLING_EMERGENCY;
|
||||
Temperature newBattery = new Temperature(60, Temperature.TYPE_BATTERY, "batt", battStatus);
|
||||
assertEquals(status, mService.mService.getCurrentThermalStatus());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user