diff options
author | Jim Tan <jimtan@google.com> | 2017-06-07 17:40:45 -0700 |
---|---|---|
committer | Jim Tan <jimtan@google.com> | 2017-06-15 18:19:01 -0700 |
commit | afd0ad43555fda4808de6e9dc35717a0fe11fcba (patch) | |
tree | 33b4d8affb1b5e10b121661878a57056105e6295 /PMC/src/com/android/pmc | |
parent | 3aad68c052667ec9b4c833f44432906359530da1 (diff) | |
download | platform_packages_apps_Test_connectivity-afd0ad43555fda4808de6e9dc35717a0fe11fcba.tar.gz platform_packages_apps_Test_connectivity-afd0ad43555fda4808de6e9dc35717a0fe11fcba.tar.bz2 platform_packages_apps_Test_connectivity-afd0ad43555fda4808de6e9dc35717a0fe11fcba.zip |
Save starting/ending times fo scanning to log fileandroid-vts-8.0_r1oreo-dev
Since Android doesn't fire alarms at the exact time we specify
when alarm interval is very short, i.e. 5 seconds so we need to send
starting & ending times for BLE scanning back to Python client to do
an accurate calculation for the average.
Test: Done
Bug: 38234726
Change-Id: I9106ddce8e358e0a7ef222b51110129804395716
(cherry picked from commit cfdbd7def753412a7914bac42e68f3c9659791f7)
Diffstat (limited to 'PMC/src/com/android/pmc')
-rw-r--r-- | PMC/src/com/android/pmc/BleScanReceiver.java | 33 | ||||
-rw-r--r-- | PMC/src/com/android/pmc/PMCStatusLogger.java | 57 |
2 files changed, 82 insertions, 8 deletions
diff --git a/PMC/src/com/android/pmc/BleScanReceiver.java b/PMC/src/com/android/pmc/BleScanReceiver.java index fb97255..56532dd 100644 --- a/PMC/src/com/android/pmc/BleScanReceiver.java +++ b/PMC/src/com/android/pmc/BleScanReceiver.java @@ -50,6 +50,10 @@ public class BleScanReceiver extends BroadcastReceiver { private BluetoothLeScanner mBleScanner; private ScanSettings mScanSettings; private List<ScanFilter> mScanFilterList; + // Use PMCStatusLogger to send status and start & end times back to Python client + private PMCStatusLogger mPMCStatusLogger; + // Test start time is set when receiving the broadcast message from Python client + private long mStartTestTime; private ScanCallback mScanCallback = new ScanCallback() { @Override @@ -74,6 +78,9 @@ public class BleScanReceiver extends BroadcastReceiver { private int mScanTime; private int mNoScanTime; private int mNumAlarms; + private int mFirstScanTime; + private long mScanStartTime; + private long mScanEndTime; /** * Constructor @@ -119,14 +126,15 @@ public class BleScanReceiver extends BroadcastReceiver { mScanTime = scanTime; mNoScanTime = noScanTime; mNumAlarms = numAlarms; + mFirstScanTime = startTime; + mScanSettings = new ScanSettings.Builder().setScanMode( scanMode).build(); Intent alarmIntent = new Intent(BleScanListener.BLESCAN); alarmIntent.putExtra("com.android.pmc.BLESCAN.Action", START_SCAN); alarmIntent.putExtra("com.android.pmc.BLESCAN.CurrentAlarm", INIT_ALARM_NO); - long triggerTime = SystemClock.elapsedRealtime() - + startTime * 1000; + long triggerTime = SystemClock.elapsedRealtime() + startTime * 1000; mAlarmManager.setExactAndAllowWhileIdle( AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerTime, PendingIntent.getBroadcast(mContext, 0, @@ -151,6 +159,7 @@ public class BleScanReceiver extends BroadcastReceiver { return; } if (currentAlarm >= mNumAlarms) { + mPMCStatusLogger.flash(); // To flash out timestamps into log file Log.d(TAG, "All alarms are done"); return; } @@ -185,13 +194,22 @@ public class BleScanReceiver extends BroadcastReceiver { } if (action == START_SCAN) { Log.v(TAG, "Before Start Scan"); + mScanStartTime = System.currentTimeMillis(); mBleScanner.startScan(mScanFilterList, mScanSettings, mScanCallback); repeatAlarm(intent, mScanTime, STOP_SCAN); } else if (action == STOP_SCAN) { Log.v(TAG, "Before Stop scan"); + mScanEndTime = System.currentTimeMillis(); + mPMCStatusLogger.logAlarmTimes(mScanStartTime / 1000.0, mScanEndTime / 1000.0); mBleScanner.stopScan(mScanCallback); - repeatAlarm(intent, mNoScanTime, START_SCAN); + if ((mScanEndTime - mStartTestTime) + < ((mScanTime + mNoScanTime) * mNumAlarms / 2 + mFirstScanTime) * 1000) { + repeatAlarm(intent, mNoScanTime, START_SCAN); + } else { + mPMCStatusLogger.flash(); // To flash out timestamps into log file + Log.d(TAG, "Time is up to end"); + } } else { Log.e(TAG, "Unknown Action"); } @@ -230,6 +248,9 @@ public class BleScanReceiver extends BroadcastReceiver { int repetitions = 1; String str; + mStartTestTime = System.currentTimeMillis(); + mPMCStatusLogger = new PMCStatusLogger(TAG + ".log", TAG); + if (extras == null) { Log.e(TAG, "No parameters specified"); return; @@ -279,6 +300,12 @@ public class BleScanReceiver extends BroadcastReceiver { } mAlarmScanListener.firstAlarm(scanMode, startTime, scanTime, noScanTime, repetitions * 2); + if (mBleScanner != null && mScanFilterList != null && mScanSettings != null + && mScanCallback != null) { + mPMCStatusLogger.logStatus("READY"); + } else { + Log.e(TAG, "BLE scanner is not ready to start test"); + } } } } diff --git a/PMC/src/com/android/pmc/PMCStatusLogger.java b/PMC/src/com/android/pmc/PMCStatusLogger.java index d931adf..500780e 100644 --- a/PMC/src/com/android/pmc/PMCStatusLogger.java +++ b/PMC/src/com/android/pmc/PMCStatusLogger.java @@ -18,11 +18,15 @@ package com.android.pmc; import android.util.Log; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + import java.io.BufferedWriter; import java.io.File; -import java.io.FileOutputStream; +import java.io.FileWriter; import java.io.IOException; -import java.io.OutputStreamWriter; + /** * Logging class to log status so PMC can communicate the status back to client @@ -31,6 +35,8 @@ public class PMCStatusLogger { private File mFile; public static String TAG; public static String LOG_DIR = "/mnt/sdcard/Download"; + public static JSONObject mJObject; + public static JSONArray mJArray; /** * Construtor - check if the file exist. If it is delete and create a new. @@ -41,12 +47,14 @@ public class PMCStatusLogger { TAG = tag; try { - mFile = new File(LOG_DIR + fileName); + mFile = new File(LOG_DIR + "/" + fileName); if (mFile.exists()) mFile.delete(); mFile.createNewFile(); } catch (IOException e) { Log.e(TAG, "Exception creating log file: " + fileName + " " + e); } + mJObject = new JSONObject(); + mJArray = new JSONArray(); } /** @@ -56,8 +64,8 @@ public class PMCStatusLogger { */ public void logStatus(String message) { try { - FileOutputStream fos = new FileOutputStream(mFile, true); - BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos)); + FileWriter fos = new FileWriter(mFile); + BufferedWriter bw = new BufferedWriter(fos); bw.write(message); bw.newLine(); bw.close(); @@ -65,5 +73,44 @@ public class PMCStatusLogger { Log.e(TAG, "Exception writing log: " + message + " " + e); } } + + /** + * Function to add alarm times into JSONArray object + * + * @param startTime - Start time for the cycle + * @param endTime - End time for the cycle + */ + public void logAlarmTimes(double startTime, double endTime) { + JSONObject obj = new JSONObject(); + try { + obj.put("StartTime", startTime); + obj.put("EndTime", endTime); + mJArray.put(obj); + } catch (JSONException e) { + Log.e(TAG, "Exception to put Alarm Times into JSONArray: " + e); + } + } + + /** + * Function to save Json object into log file + * + */ + public void flash() { + try { + mJObject.put("AlarmTimes", mJArray); + + FileWriter fos = new FileWriter(mFile); + BufferedWriter bw = new BufferedWriter(fos); + Log.v(TAG, "JSON: " + mJObject.toString()); + bw.write(mJObject.toString()); + bw.newLine(); + bw.close(); + } catch (JSONException e) { + Log.e(TAG, "Exception to put JSONArray into main JSON object: " + e); + } catch (IOException e) { + Log.e(TAG, "Exception writing JSON to log file: " + e); + } + } + } |