Camera2: Add more dump information, connect HAL device dump

Bug: 6243944
Change-Id: I79a302f68786d815b9ab9984dbb31d237522416b
diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp
index 7f28c67..d8b8081 100644
--- a/services/camera/libcameraservice/Camera2Client.cpp
+++ b/services/camera/libcameraservice/Camera2Client.cpp
@@ -104,7 +104,7 @@
 
 status_t Camera2Client::dump(int fd, const Vector<String16>& args) {
     String8 result;
-    result.appendFormat("Client2[%d] (%p) PID: %d:\n",
+    result.appendFormat("Client2[%d] (%p) PID: %d, dump:\n",
             mCameraId,
             getCameraClient()->asBinder().get(),
             mClientPid);
@@ -248,19 +248,48 @@
                 mParameters.meteringAreas[i].weight);
     }
 
-    result.appendFormat("   Zoom index: %d\n", mParameters.zoom);
-    result.appendFormat("   Video size: %d x %d\n", mParameters.videoWidth,
+    result.appendFormat("    Zoom index: %d\n", mParameters.zoom);
+    result.appendFormat("    Video size: %d x %d\n", mParameters.videoWidth,
             mParameters.videoHeight);
 
-    result.appendFormat("   Recording hint is %s\n",
+    result.appendFormat("    Recording hint is %s\n",
             mParameters.recordingHint ? "set" : "not set");
 
-    result.appendFormat("   Video stabilization is %s\n",
+    result.appendFormat("    Video stabilization is %s\n",
             mParameters.videoStabilization ? "enabled" : "disabled");
 
+    result.append("  Current streams:\n");
+    result.appendFormat("    Preview stream ID: %d\n", mPreviewStreamId);
+    result.appendFormat("    Capture stream ID: %d\n", mCaptureStreamId);
+
+    result.append("  Current requests:\n");
+    if (mPreviewRequest != NULL) {
+        result.append("    Preview request:\n");
+        write(fd, result.string(), result.size());
+        dump_camera_metadata(mPreviewRequest, fd, 2);
+    } else {
+        result.append("    Preview request: undefined\n");
+        write(fd, result.string(), result.size());
+    }
+
+    if (mCaptureRequest != NULL) {
+        result = "    Capture request:\n";
+        write(fd, result.string(), result.size());
+        dump_camera_metadata(mCaptureRequest, fd, 2);
+    } else {
+        result = "    Capture request: undefined\n";
+        write(fd, result.string(), result.size());
+    }
+
+    result = "  Device dump:\n";
     write(fd, result.string(), result.size());
 
-    // TODO: Dump Camera2Device
+    status_t res = mDevice->dump(fd, args);
+    if (res != OK) {
+        result = String8::format("   Error dumping device: %s (%d)",
+                strerror(-res), res);
+        write(fd, result.string(), result.size());
+    }
 
 #undef CASE_APPEND_ENUM
     return NO_ERROR;