V4L2 HALv3 initial check in
Decent outline of an initial HALv3. Still a lot to be filled in.
Adapted from the reference implementation in libhardware.
BUG: 29006356
TEST: Ran simple test program. Connects to the HAL and then
fails because there are no cameras (expected behavior right now).
Change-Id: I11c7e00dca1bbb6ade6b5a0f55fedac3d2d01695
diff --git a/modules/camera/3_4/V4L2CameraHAL.h b/modules/camera/3_4/V4L2CameraHAL.h
new file mode 100644
index 0000000..858ad32
--- /dev/null
+++ b/modules/camera/3_4/V4L2CameraHAL.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Modified from hardware/libhardware/modules/camera/CameraHAL.h
+
+#ifndef V4L2_CAMERA_HAL_H
+#define V4L2_CAMERA_HAL_H
+
+#include <vector>
+
+#include <hardware/camera_common.h>
+#include <hardware/hardware.h>
+
+#include "Camera.h"
+#include "Common.h"
+
+namespace v4l2_camera_hal {
+/*
+ * V4L2CameraHAL contains all module state that isn't specific to an
+ * individual camera device. This class is based off of the sample
+ * default CameraHAL from /hardware/libhardware/modules/camera.
+ */
+class V4L2CameraHAL {
+public:
+ V4L2CameraHAL();
+ ~V4L2CameraHAL();
+
+ // Camera Module Interface (see <hardware/camera_common.h>).
+ int getNumberOfCameras();
+ int getCameraInfo(int camera_id, camera_info_t* info);
+ int setCallbacks(const camera_module_callbacks_t* callbacks);
+ void getVendorTagOps(vendor_tag_ops_t* ops);
+ int openLegacy(const hw_module_t* module, const char* id,
+ uint32_t halVersion, hw_device_t** device);
+ int setTorchMode(const char* camera_id, bool enabled);
+
+ // Hardware Module Interface (see <hardware/hardware.h>).
+ int open(const hw_module_t* mod, const char* name, hw_device_t** dev);
+
+private:
+ // Vector of cameras.
+ std::vector<std::unique_ptr<default_camera_hal::Camera>> mCameras;
+ // Callback handle.
+ const camera_module_callbacks_t *mCallbacks;
+
+ DISALLOW_COPY_AND_ASSIGN(V4L2CameraHAL);
+};
+
+} // namespace v4l2_camera_hal
+
+extern camera_module_t HAL_MODULE_INFO_SYM;
+
+#endif // V4L2_CAMERA_HAL_H