summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-10-12 21:13:50 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-10-12 21:13:50 +0000
commit613bc557850f60c2561d3514599425ac6c2bec99 (patch)
treef1d1a5008b06483e37b3a8f44a48c5a88fb5b692
parenta88b7a97bdb197f3e20e9d51559ae151efb3c747 (diff)
parentfd47f4032da128e78d605e10f9e67786b08a14e2 (diff)
Merge "Checking for errors opening/parsing ALSA "cards" file."
-rw-r--r--core/java/com/android/internal/alsa/AlsaCardsParser.java32
-rw-r--r--core/java/com/android/internal/alsa/AlsaDevicesParser.java30
-rw-r--r--services/usb/java/com/android/server/usb/UsbAlsaManager.java9
-rw-r--r--services/usb/java/com/android/server/usb/UsbHostManager.java2
4 files changed, 65 insertions, 8 deletions
diff --git a/core/java/com/android/internal/alsa/AlsaCardsParser.java b/core/java/com/android/internal/alsa/AlsaCardsParser.java
index 5b92a1734d47..bb75bf6e6fb8 100644
--- a/core/java/com/android/internal/alsa/AlsaCardsParser.java
+++ b/core/java/com/android/internal/alsa/AlsaCardsParser.java
@@ -37,6 +37,12 @@ public class AlsaCardsParser {
private ArrayList<AlsaCardRecord> mCardRecords = new ArrayList<AlsaCardRecord>();
+ public static final int SCANSTATUS_NOTSCANNED = -1;
+ public static final int SCANSTATUS_SUCCESS = 0;
+ public static final int SCANSTATUS_FAIL = 1;
+ public static final int SCANSTATUS_EMPTY = 2;
+ private int mScanStatus = SCANSTATUS_NOTSCANNED;
+
public class AlsaCardRecord {
private static final String TAG = "AlsaCardRecord";
private static final String kUsbCardKeyStr = "at usb-";
@@ -104,10 +110,11 @@ public class AlsaCardsParser {
public AlsaCardsParser() {}
- public void scan() {
+ public int scan() {
if (DEBUG) {
- Slog.i(TAG, "AlsaCardsParser.scan()");
+ Slog.i(TAG, "AlsaCardsParser.scan()....");
}
+
mCardRecords = new ArrayList<AlsaCardRecord>();
File cardsFile = new File(kCardsFilePath);
@@ -134,11 +141,26 @@ public class AlsaCardsParser {
mCardRecords.add(cardRecord);
}
reader.close();
+ if (mCardRecords.size() > 0) {
+ mScanStatus = SCANSTATUS_SUCCESS;
+ } else {
+ mScanStatus = SCANSTATUS_EMPTY;
+ }
} catch (FileNotFoundException e) {
e.printStackTrace();
+ mScanStatus = SCANSTATUS_FAIL;
} catch (IOException e) {
e.printStackTrace();
+ mScanStatus = SCANSTATUS_FAIL;
+ }
+ if (DEBUG) {
+ Slog.i(TAG, " status:" + mScanStatus);
}
+ return mScanStatus;
+ }
+
+ public int getScanStatus() {
+ return mScanStatus;
}
public ArrayList<AlsaCardRecord> getScanRecords() {
@@ -182,7 +204,11 @@ public class AlsaCardsParser {
}
// get the new list of devices
- scan();
+ if (scan() != SCANSTATUS_SUCCESS) {
+ Slog.e(TAG, "Error scanning Alsa cards file.");
+ return -1;
+ }
+
if (DEBUG) {
LogDevices("Current Devices:", mCardRecords);
}
diff --git a/core/java/com/android/internal/alsa/AlsaDevicesParser.java b/core/java/com/android/internal/alsa/AlsaDevicesParser.java
index 6e3d5966c00d..15261bafd299 100644
--- a/core/java/com/android/internal/alsa/AlsaDevicesParser.java
+++ b/core/java/com/android/internal/alsa/AlsaDevicesParser.java
@@ -46,6 +46,12 @@ public class AlsaDevicesParser {
private boolean mHasPlaybackDevices = false;
private boolean mHasMIDIDevices = false;
+ public static final int SCANSTATUS_NOTSCANNED = -1;
+ public static final int SCANSTATUS_SUCCESS = 0;
+ public static final int SCANSTATUS_FAIL = 1;
+ public static final int SCANSTATUS_EMPTY = 2;
+ private int mScanStatus = SCANSTATUS_NOTSCANNED;
+
public class AlsaDeviceRecord {
public static final int kDeviceType_Unknown = -1;
public static final int kDeviceType_Audio = 0;
@@ -258,7 +264,11 @@ public class AlsaDevicesParser {
return line.charAt(kIndex_CardDeviceField) == '[';
}
- public boolean scan() {
+ public int scan() {
+ if (DEBUG) {
+ Slog.i(TAG, "AlsaDevicesParser.scan()....");
+ }
+
mDeviceRecords.clear();
File devicesFile = new File(kDevicesFilePath);
@@ -274,13 +284,27 @@ public class AlsaDevicesParser {
}
}
reader.close();
- return true;
+ // success if we add at least 1 record
+ if (mDeviceRecords.size() > 0) {
+ mScanStatus = SCANSTATUS_SUCCESS;
+ } else {
+ mScanStatus = SCANSTATUS_EMPTY;
+ }
} catch (FileNotFoundException e) {
e.printStackTrace();
+ mScanStatus = SCANSTATUS_FAIL;
} catch (IOException e) {
e.printStackTrace();
+ mScanStatus = SCANSTATUS_FAIL;
}
- return false;
+ if (DEBUG) {
+ Slog.i(TAG, " status:" + mScanStatus);
+ }
+ return mScanStatus;
+ }
+
+ public int getScanStatus() {
+ return mScanStatus;
}
//
diff --git a/services/usb/java/com/android/server/usb/UsbAlsaManager.java b/services/usb/java/com/android/server/usb/UsbAlsaManager.java
index acc27beec32d..d359b7045007 100644
--- a/services/usb/java/com/android/server/usb/UsbAlsaManager.java
+++ b/services/usb/java/com/android/server/usb/UsbAlsaManager.java
@@ -132,7 +132,9 @@ public final class UsbAlsaManager {
mHasMidiFeature = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_MIDI);
// initial scan
- mCardsParser.scan();
+ if (mCardsParser.scan() != AlsaCardsParser.SCANSTATUS_SUCCESS) {
+ Slog.e(TAG, "Error scanning ASLA cards file.");
+ }
}
public void systemReady() {
@@ -314,7 +316,7 @@ public final class UsbAlsaManager {
return null;
}
- if (!mDevicesParser.scan()) {
+ if (mDevicesParser.scan() != AlsaDevicesParser.SCANSTATUS_SUCCESS) {
Slog.e(TAG, "Error parsing ALSA devices file.");
return null;
}
@@ -530,6 +532,9 @@ public final class UsbAlsaManager {
//
// called by UsbService.dump
public void dump(IndentingPrintWriter pw) {
+ pw.println("Parsers Scan Status:");
+ pw.println(" Cards Parser: " + mCardsParser.getScanStatus());
+ pw.println(" Devices Parser: " + mDevicesParser.getScanStatus());
pw.println("USB Audio Devices:");
for (UsbDevice device : mAudioDevices.keySet()) {
pw.println(" " + device.getDeviceName() + ": " + mAudioDevices.get(device));
diff --git a/services/usb/java/com/android/server/usb/UsbHostManager.java b/services/usb/java/com/android/server/usb/UsbHostManager.java
index c657a1b4cc98..095fdc63975c 100644
--- a/services/usb/java/com/android/server/usb/UsbHostManager.java
+++ b/services/usb/java/com/android/server/usb/UsbHostManager.java
@@ -376,6 +376,8 @@ public class UsbHostManager {
}
}
}
+
+ mUsbAlsaManager.dump(pw);
}
private native void monitorUsbHostBus();