ProCamera: Add getInfo for getting static metadata (and a test)

Change-Id: I3b87dfbc621d98bf41f37a892a1012baf85b5166
diff --git a/camera/IProCameraUser.cpp b/camera/IProCameraUser.cpp
index e60cfe5..c9d98aa 100644
--- a/camera/IProCameraUser.cpp
+++ b/camera/IProCameraUser.cpp
@@ -44,6 +44,7 @@
     CANCEL_STREAM,
     CREATE_STREAM,
     CREATE_DEFAULT_REQUEST,
+    GET_CAMERA_INFO,
 };
 
 /**
@@ -255,6 +256,17 @@
     }
 
 
+    virtual status_t getCameraInfo(int cameraId, camera_metadata** info)
+    {
+        Parcel data, reply;
+        data.writeInterfaceToken(IProCameraUser::getInterfaceDescriptor());
+        data.writeInt32(cameraId);
+        remote()->transact(GET_CAMERA_INFO, data, &reply);
+        readMetadata(reply, /*out*/info);
+        return reply.readInt32();
+    }
+
+
 private:
 
 
@@ -367,6 +379,24 @@
             writeMetadata(*reply, request);
             reply->writeInt32(ret);
 
+            free_camera_metadata(request);
+
+            return NO_ERROR;
+        } break;
+        case GET_CAMERA_INFO: {
+            CHECK_INTERFACE(IProCameraUser, data, reply);
+
+            int cameraId = data.readInt32();
+
+            camera_metadata_t* info = NULL;
+            status_t ret;
+            ret = getCameraInfo(cameraId, &info);
+
+            writeMetadata(*reply, info);
+            reply->writeInt32(ret);
+
+            free_camera_metadata(info);
+
             return NO_ERROR;
         } break;
         default: