use of com.att.aro.core.peripheral.pojo.ScreenStateInfo in project VideoOptimzer by attdevsupport.
the class ScreenStateInfoReaderImpl method readData.
@Override
public List<ScreenStateInfo> readData(String directory, double startTime, double traceDuration) {
List<ScreenStateInfo> screenStateInfos = new ArrayList<ScreenStateInfo>();
String filepath = directory + Util.FILE_SEPARATOR + TraceDataConst.FileName.SCREEN_STATE_FILE;
if (!filereader.fileExist(filepath)) {
return screenStateInfos;
}
double beginTime = 0.0;
double endTime = 0.0;
ScreenState prevScreenState = null;
ScreenState screenState;
String prevBrigtness = null;
String brightness = null;
int prevTimeOut = 0;
int timeout = 0;
String firstLine;
String strLineBuf;
String[] lines = null;
try {
lines = filereader.readAllLine(filepath);
} catch (IOException e1) {
LOGGER.error("failed to open Screen State info file: " + filepath);
}
if (lines != null && lines.length > 0) {
firstLine = lines[0];
String[] strFieldsFirstLine = firstLine.split(" ");
if (strFieldsFirstLine.length >= 2) {
try {
beginTime = Util.normalizeTime(Double.parseDouble(strFieldsFirstLine[0]), startTime);
if (TraceDataConst.SCREEN_ON.equals(strFieldsFirstLine[1])) {
prevScreenState = ScreenState.SCREEN_ON;
if (strFieldsFirstLine.length >= 4) {
prevTimeOut = Integer.parseInt(strFieldsFirstLine[2]);
prevBrigtness = strFieldsFirstLine[3];
}
} else if (TraceDataConst.SCREEN_OFF.equals(strFieldsFirstLine[1])) {
prevScreenState = ScreenState.SCREEN_OFF;
} else {
LOGGER.warn("Unknown screen state: " + firstLine);
prevScreenState = ScreenState.SCREEN_UNKNOWN;
}
} catch (Exception e) {
LOGGER.warn("Unexpected error in screen events: " + firstLine, e);
}
} else {
LOGGER.warn("Unrecognized screen state event: " + firstLine);
}
for (int i = 1; i < lines.length; i++) {
strLineBuf = lines[i];
String[] strFields = strLineBuf.split(" ");
if (strFields.length >= 2) {
try {
endTime = Util.normalizeTime(Double.parseDouble(strFields[0]), startTime);
brightness = null;
timeout = 0;
if (TraceDataConst.SCREEN_ON.equals(strFields[1])) {
screenState = ScreenState.SCREEN_ON;
if (strFields.length >= 4) {
timeout = Integer.parseInt(strFields[2]);
brightness = strFields[3];
}
} else if (TraceDataConst.SCREEN_OFF.equals(strFields[1])) {
screenState = ScreenState.SCREEN_OFF;
} else {
LOGGER.warn("Unknown screen state: " + strLineBuf);
screenState = ScreenState.SCREEN_UNKNOWN;
}
ScreenStateInfo screenInfo = new ScreenStateInfo(beginTime, endTime, prevScreenState, prevBrigtness, prevTimeOut);
screenStateInfos.add(screenInfo);
prevScreenState = screenState;
prevBrigtness = brightness;
prevTimeOut = timeout;
beginTime = endTime;
} catch (Exception e) {
LOGGER.warn("Unexpected error in screen events: " + strLineBuf, e);
}
} else {
LOGGER.warn("Unrecognized screen state event: " + strLineBuf);
}
}
screenStateInfos.add(new ScreenStateInfo(beginTime, traceDuration, prevScreenState, prevBrigtness, prevTimeOut));
}
return screenStateInfos;
}
use of com.att.aro.core.peripheral.pojo.ScreenStateInfo in project VideoOptimzer by attdevsupport.
the class EnergyModelFactoryImplTest method create_Test.
@Test
public void create_Test() {
Date date = new Date();
Profile profile = Mockito.mock(Profile.class);
Mockito.when(profile.getPowerGpsActive()).thenReturn(1.0);
GpsInfo gpsInfo01 = Mockito.mock(GpsInfo.class);
Mockito.when(gpsInfo01.getBeginTimeStamp()).thenReturn(date.getTime() + 0.0);
Mockito.when(gpsInfo01.getEndTimeStamp()).thenReturn(date.getTime() + 1000.0);
Mockito.when(gpsInfo01.getGpsState()).thenReturn(GpsState.GPS_ACTIVE);
GpsInfo gpsInfo02 = Mockito.mock(GpsInfo.class);
Mockito.when(profile.getPowerGpsStandby()).thenReturn(0.5);
Mockito.when(gpsInfo02.getBeginTimeStamp()).thenReturn(date.getTime() + 0.0);
Mockito.when(gpsInfo02.getEndTimeStamp()).thenReturn(date.getTime() + 1000.0);
Mockito.when(gpsInfo02.getGpsState()).thenReturn(GpsState.GPS_STANDBY);
List<GpsInfo> gpsList = new ArrayList<GpsInfo>();
gpsList.add(gpsInfo01);
gpsList.add(gpsInfo02);
CameraInfo cameraInfo01 = Mockito.mock(CameraInfo.class);
Mockito.when(cameraInfo01.getBeginTimeStamp()).thenReturn(date.getTime() + 0.0);
Mockito.when(cameraInfo01.getEndTimeStamp()).thenReturn(date.getTime() + 1000.0);
Mockito.when(cameraInfo01.getCameraState()).thenReturn(CameraState.CAMERA_ON);
Mockito.when(profile.getPowerCameraOn()).thenReturn(0.3);
List<CameraInfo> cameraList = new ArrayList<CameraInfo>();
cameraList.add(cameraInfo01);
BluetoothInfo bluetoothInfo01 = Mockito.mock(BluetoothInfo.class);
Mockito.when(bluetoothInfo01.getBeginTimeStamp()).thenReturn(date.getTime() + 0.0);
Mockito.when(bluetoothInfo01.getEndTimeStamp()).thenReturn(date.getTime() + 1000.0);
Mockito.when(bluetoothInfo01.getBluetoothState()).thenReturn(BluetoothState.BLUETOOTH_CONNECTED);
BluetoothInfo bluetoothInfo02 = Mockito.mock(BluetoothInfo.class);
Mockito.when(bluetoothInfo02.getBeginTimeStamp()).thenReturn(date.getTime() + 0.0);
Mockito.when(bluetoothInfo02.getEndTimeStamp()).thenReturn(date.getTime() + 1000.0);
Mockito.when(bluetoothInfo02.getBluetoothState()).thenReturn(BluetoothState.BLUETOOTH_DISCONNECTED);
List<BluetoothInfo> bluetoothList = new ArrayList<BluetoothInfo>();
bluetoothList.add(bluetoothInfo01);
bluetoothList.add(bluetoothInfo02);
Mockito.when(profile.getPowerBluetoothActive()).thenReturn(1.0);
Mockito.when(profile.getPowerBluetoothStandby()).thenReturn(0.5);
ScreenStateInfo screenStateInfo01 = Mockito.mock(ScreenStateInfo.class);
Mockito.when(screenStateInfo01.getBeginTimeStamp()).thenReturn(date.getTime() + 0.0);
Mockito.when(screenStateInfo01.getEndTimeStamp()).thenReturn(date.getTime() + 1000.0);
Mockito.when(screenStateInfo01.getScreenState()).thenReturn(ScreenState.SCREEN_ON);
List<ScreenStateInfo> screenStateList = new ArrayList<ScreenStateInfo>();
screenStateList.add(screenStateInfo01);
Mockito.when(profile.getPowerScreenOn()).thenReturn(0.3);
EnergyModel model = eMdlFctr.create(profile, 0.0, gpsList, cameraList, bluetoothList, screenStateList);
assertEquals(1000.0, model.getGpsActiveEnergy(), 0.0);
assertEquals(500.0, model.getGpsStandbyEnergy(), 0.0);
assertEquals(1500.0, model.getTotalGpsEnergy(), 0.0);
assertEquals(300.0, model.getTotalCameraEnergy(), 0.0);
assertEquals(1000.0, model.getBluetoothActiveEnergy(), 0.0);
assertEquals(500.0, model.getBluetoothStandbyEnergy(), 0.0);
assertEquals(1500.0, model.getTotalBluetoothEnergy(), 0.0);
assertEquals(300.0, model.getTotalScreenEnergy(), 0.0);
}
use of com.att.aro.core.peripheral.pojo.ScreenStateInfo in project VideoOptimzer by attdevsupport.
the class EnergyModelFactoryImpl method create.
@Override
public EnergyModel create(Profile profile, double totalRrcEnergy, List<GpsInfo> gpsinfos, List<CameraInfo> camerainfos, List<BluetoothInfo> bluetoothinfos, List<ScreenStateInfo> screenstateinfos) {
double gpsActiveEnergy = 0, gpsStandbyEnergy = 0, totalGpsEnergy = 0, totalCameraEnergy = 0;
double bluetoothActiveEnergy = 0, bluetoothStandbyEnergy = 0, totalBluetoothEnergy = 0;
double totalScreenEnergy = 0;
EnergyModel model = new EnergyModel();
model.setTotalRrcEnergy(totalRrcEnergy);
// GPS Energy
Iterator<GpsInfo> gpsIter = gpsinfos.iterator();
if (gpsIter.hasNext()) {
while (gpsIter.hasNext()) {
GpsInfo gps = gpsIter.next();
GpsState gpsState = gps.getGpsState();
switch(gpsState) {
case GPS_ACTIVE:
gpsActiveEnergy += profile.getPowerGpsActive() * (gps.getEndTimeStamp() - gps.getBeginTimeStamp());
break;
case GPS_STANDBY:
gpsStandbyEnergy += profile.getPowerGpsStandby() * (gps.getEndTimeStamp() - gps.getBeginTimeStamp());
break;
default:
break;
}
}
}
totalGpsEnergy = gpsActiveEnergy + gpsStandbyEnergy;
// Camera Energy
Iterator<CameraInfo> cameraIter = camerainfos.iterator();
if (cameraIter.hasNext()) {
while (cameraIter.hasNext()) {
CameraInfo camera = cameraIter.next();
CameraInfo.CameraState cameraState = camera.getCameraState();
if (cameraState == CameraInfo.CameraState.CAMERA_ON) {
totalCameraEnergy += profile.getPowerCameraOn() * (camera.getEndTimeStamp() - camera.getBeginTimeStamp());
}
}
}
// Bluetooth Energy
Iterator<BluetoothInfo> bluetoothIter = bluetoothinfos.iterator();
if (bluetoothIter.hasNext()) {
while (bluetoothIter.hasNext()) {
BluetoothInfo btInfo = bluetoothIter.next();
if (btInfo == null || btInfo.getBluetoothState() == null) {
continue;
}
switch(btInfo.getBluetoothState()) {
case BLUETOOTH_CONNECTED:
bluetoothActiveEnergy += profile.getPowerBluetoothActive() * (btInfo.getEndTimeStamp() - btInfo.getBeginTimeStamp());
break;
case BLUETOOTH_DISCONNECTED:
bluetoothStandbyEnergy += profile.getPowerBluetoothStandby() * (btInfo.getEndTimeStamp() - btInfo.getBeginTimeStamp());
break;
default:
break;
}
}
}
totalBluetoothEnergy = bluetoothActiveEnergy + bluetoothStandbyEnergy;
// Screen Energy
Iterator<ScreenStateInfo> screenIter = screenstateinfos.iterator();
if (screenIter.hasNext()) {
while (screenIter.hasNext()) {
ScreenStateInfo screenInfo = screenIter.next();
if (screenInfo.getScreenState() == ScreenStateInfo.ScreenState.SCREEN_ON) {
totalScreenEnergy += profile.getPowerScreenOn() * (screenInfo.getEndTimeStamp() - screenInfo.getBeginTimeStamp());
}
}
}
model.setBluetoothActiveEnergy(bluetoothActiveEnergy);
model.setBluetoothStandbyEnergy(bluetoothStandbyEnergy);
model.setGpsActiveEnergy(gpsActiveEnergy);
model.setGpsStandbyEnergy(gpsStandbyEnergy);
model.setTotalBluetoothEnergy(totalBluetoothEnergy);
model.setTotalCameraEnergy(totalCameraEnergy);
model.setTotalGpsEnergy(totalGpsEnergy);
model.setTotalRrcEnergy(totalRrcEnergy);
model.setTotalScreenEnergy(totalScreenEnergy);
return model;
}
use of com.att.aro.core.peripheral.pojo.ScreenStateInfo in project VideoOptimzer by attdevsupport.
the class TraceDataReaderImpl method readFileUtil.
/**
* some of the trace files read here
*
* Parses the user event trace
*
* @throws IOException
*
* Reads the screen rotations information contained in the
* "screen_rotations" file found inside the trace directory and adds
* them to the user events list.
* @throws IOException
* Reads the CPU trace information from the CPU file.
*
* @throws IOException
* Method to read the GPS data from the trace file and store it in
* the gpsInfos list. It also updates the active duration for GPS.
* Method to read the Bluetooth data from the trace file and store
* it in the bluetoothInfos list. It also updates the active
* duration for Bluetooth.
*
* @throws IOException
* Method to read the Camera data from the trace file and store it
* in the cameraInfos list. It also updates the active duration for
* Camera.
*
* Method to read the WIFI data from the trace file and store it in
* the wifiInfos list. It also updates the active duration for Wifi.
*
* Method to read the Screen State data from the trace file and
* store it in the ScreenStateInfos list.
*
* Method to read the Battery data from the trace file and store it
* in the batteryInfos list.
*
* Method to read the alarm event from the trace file and store it
* in the alarmInfos list.
*
* Reads the Radio data from the file and stores it in the
* RadioInfo.
* @param result
*/
public void readFileUtil(TraceDirectoryResult result) {
NetworkTypeObject obj = networktypereader.readData(result.getTraceDirectory(), result.getPcapTime0(), result.getTraceDuration());
if (obj != null) {
result.setNetworkTypeInfos(obj.getNetworkTypeInfos());
result.setNetworkTypesList(obj.getNetworkTypesList());
}
CollectOptions collectOptions = collectOptionsReader.readData(result.getTraceDirectory());
result.setCollectOptions(collectOptions);
List<UserEvent> userEvents = usereventreader.readData(result.getTraceDirectory(), result.getEventTime0(), result.getPcapTime0());
result.setUserEvents(userEvents);
List<UserEvent> list = this.screenrotationreader.readData(result.getTraceDirectory(), result.getPcapTime0());
result.setScreenRotationCounter(list.size());
result.getUserEvents().addAll(list);
List<TemperatureEvent> temperatureEvents = cputemperaturereader.readData(result.getTraceDirectory(), result.getPcapTime0());
result.setTemperatureInfos(temperatureEvents);
List<LocationEvent> locationEvents = locationreader.readData(result.getTraceDirectory(), result.getPcapTime0());
result.setLocationEventInfos(locationEvents);
CpuActivityList cpuActivityList = cpureader.readData(result.getTraceDirectory(), result.getPcapTime0());
result.setCpuActivityList(cpuActivityList);
List<GpsInfo> gpsInfos = gpsreader.readData(result.getTraceDirectory(), result.getPcapTime0(), result.getTraceDuration());
result.setGpsInfos(gpsInfos);
result.setGpsActiveDuration(gpsreader.getGpsActiveDuration());
List<BluetoothInfo> bluetoothInfos = bluetoothreader.readData(result.getTraceDirectory(), result.getPcapTime0(), result.getTraceDuration());
result.setBluetoothInfos(bluetoothInfos);
result.setBluetoothActiveDuration(bluetoothreader.getBluetoothActiveDuration());
List<WifiInfo> wifiInfos = wifireader.readData(result.getTraceDirectory(), result.getPcapTime0(), result.getTraceDuration());
result.setWifiInfos(wifiInfos);
result.setWifiActiveDuration(wifireader.getWifiActiveDuration());
List<CameraInfo> cameraInfos = camerareader.readData(result.getTraceDirectory(), result.getPcapTime0(), result.getTraceDuration());
result.setCameraInfos(cameraInfos);
result.setCameraActiveDuration(camerareader.getActiveDuration());
List<ThermalStatusInfo> thermalStatusInfos = new ThermalStatusReaderImpl(filereader).readData(result.getTraceDirectory(), result.getPcapTime0(), result.getTraceDuration());
result.setThermalstatusInfos(thermalStatusInfos);
List<ScreenStateInfo> screenStateInfos = screenstatereader.readData(result.getTraceDirectory(), result.getPcapTime0(), result.getTraceDuration());
result.setScreenStateInfos(screenStateInfos);
List<BatteryInfo> batteryInfos = batteryinforeader.readData(result.getTraceDirectory(), result.getPcapTime0());
result.setBatteryInfos(batteryInfos);
// alarm info from kernel log file
List<AlarmInfo> alarmInfos = alarminforeader.readData(result.getTraceDirectory(), result.getDumpsysEpochTimestamp(), result.getDumpsysElapsedTimestamp(), result.getTraceDateTime());
result.setAlarmInfos(alarmInfos);
List<RadioInfo> radioInfos = radioinforeader.readData(result.getTraceDirectory(), result.getPcapTime0());
result.setRadioInfos(radioInfos);
VideoStreamStartupData videoStreamStartupData = videoStartupReader.readData(result.getTraceDirectory());
result.setVideoStartupData(videoStreamStartupData);
result.setMetaData(metaDataReadWrite.readData(result.getTraceDirectory()));
}
use of com.att.aro.core.peripheral.pojo.ScreenStateInfo in project VideoOptimzer by attdevsupport.
the class ScreenStatePlot method populate.
@Override
public void populate(XYPlot plot, AROTraceData analysis) {
if (analysis == null) {
LOGGER.info("analysis data is null");
} else {
screenData.removeAllSeries();
TraceResultType resultType = analysis.getAnalyzerResult().getTraceresult().getTraceResultType();
if (resultType.equals(TraceResultType.TRACE_FILE)) {
LOGGER.info("didn't get analysis trace data!");
} else {
TraceDirectoryResult traceresult = (TraceDirectoryResult) analysis.getAnalyzerResult().getTraceresult();
XYIntervalSeries series = new XYIntervalSeries(ScreenState.SCREEN_ON);
screenData.addSeries(series);
// Populate the data set
final Map<Double, ScreenStateInfo> dataMap = new HashMap<Double, ScreenStateInfo>();
Iterator<ScreenStateInfo> iter = traceresult.getScreenStateInfos().iterator();
if (iter.hasNext()) {
while (iter.hasNext()) {
ScreenStateInfo screenEvent = iter.next();
if (screenEvent.getScreenState() == ScreenState.SCREEN_ON) {
series.add(screenEvent.getBeginTimeStamp(), screenEvent.getBeginTimeStamp(), screenEvent.getEndTimeStamp(), 0.5, 0, 1);
dataMap.put(screenEvent.getBeginTimeStamp(), screenEvent);
}
}
}
// Assign ToolTip to renderer
XYItemRenderer renderer = plot.getRenderer();
renderer.setBaseToolTipGenerator(new XYToolTipGenerator() {
@Override
public String generateToolTip(XYDataset dataset, int series, int item) {
ScreenStateInfo si = dataMap.get(dataset.getXValue(series, item));
if (si != null) {
StringBuffer displayInfo = new StringBuffer(ResourceBundleHelper.getMessageString("screenstate.tooltip.prefix"));
int timeout = si.getScreenTimeout();
displayInfo.append(MessageFormat.format(ResourceBundleHelper.getMessageString("screenstate.tooltip.content"), ResourceBundleHelper.getEnumString(si.getScreenState()), si.getScreenBrightness(), timeout > 0 ? timeout : ResourceBundleHelper.getMessageString("screenstate.noTimeout")));
displayInfo.append(ResourceBundleHelper.getMessageString("screenstate.tooltip.suffix"));
return displayInfo.toString();
}
return null;
}
});
}
}
plot.setDataset(screenData);
// return plot;
}
Aggregations