1046205c058ab70be78163ebcacfdc344a7f8750aZhijun He/*
2046205c058ab70be78163ebcacfdc344a7f8750aZhijun He * Copyright (C) 2015 The Android Open Source Project
3046205c058ab70be78163ebcacfdc344a7f8750aZhijun He *
4046205c058ab70be78163ebcacfdc344a7f8750aZhijun He * Licensed under the Apache License, Version 2.0 (the "License");
5046205c058ab70be78163ebcacfdc344a7f8750aZhijun He * you may not use this file except in compliance with the License.
6046205c058ab70be78163ebcacfdc344a7f8750aZhijun He * You may obtain a copy of the License at
7046205c058ab70be78163ebcacfdc344a7f8750aZhijun He *
8046205c058ab70be78163ebcacfdc344a7f8750aZhijun He *      http://www.apache.org/licenses/LICENSE-2.0
9046205c058ab70be78163ebcacfdc344a7f8750aZhijun He *
10046205c058ab70be78163ebcacfdc344a7f8750aZhijun He * Unless required by applicable law or agreed to in writing, software
11046205c058ab70be78163ebcacfdc344a7f8750aZhijun He * distributed under the License is distributed on an "AS IS" BASIS,
12046205c058ab70be78163ebcacfdc344a7f8750aZhijun He * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13046205c058ab70be78163ebcacfdc344a7f8750aZhijun He * See the License for the specific language governing permissions and
14046205c058ab70be78163ebcacfdc344a7f8750aZhijun He * limitations under the License.
15046205c058ab70be78163ebcacfdc344a7f8750aZhijun He */
16046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
17046205c058ab70be78163ebcacfdc344a7f8750aZhijun He//#define LOG_NDEBUG 0
18046205c058ab70be78163ebcacfdc344a7f8750aZhijun He#define LOG_TAG "HotplugThread"
19046205c058ab70be78163ebcacfdc344a7f8750aZhijun He#include <cutils/log.h>
20046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
21046205c058ab70be78163ebcacfdc344a7f8750aZhijun He#include "HotplugThread.h"
22046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
23046205c058ab70be78163ebcacfdc344a7f8750aZhijun Henamespace usb_camera_hal {
24046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
25046205c058ab70be78163ebcacfdc344a7f8750aZhijun HeHotplugThread::HotplugThread(CameraHAL *hal)
26046205c058ab70be78163ebcacfdc344a7f8750aZhijun He    : mModule(hal) {
27046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
28046205c058ab70be78163ebcacfdc344a7f8750aZhijun He}
29046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
30046205c058ab70be78163ebcacfdc344a7f8750aZhijun HeHotplugThread::~HotplugThread() {
31046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
32046205c058ab70be78163ebcacfdc344a7f8750aZhijun He}
33046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
34046205c058ab70be78163ebcacfdc344a7f8750aZhijun Hevoid HotplugThread::requestExit() {
35046205c058ab70be78163ebcacfdc344a7f8750aZhijun He    // Call parent to set up shutdown
36046205c058ab70be78163ebcacfdc344a7f8750aZhijun He    Thread::requestExit();
37046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
38046205c058ab70be78163ebcacfdc344a7f8750aZhijun He    // Cleanup other states?
39046205c058ab70be78163ebcacfdc344a7f8750aZhijun He}
40046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
41046205c058ab70be78163ebcacfdc344a7f8750aZhijun Hebool HotplugThread::threadLoop() {
42046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
43046205c058ab70be78163ebcacfdc344a7f8750aZhijun He    /**
44046205c058ab70be78163ebcacfdc344a7f8750aZhijun He     * Check camera connection status change, if connected, do below:
45046205c058ab70be78163ebcacfdc344a7f8750aZhijun He     * 1. Create camera device, add to mCameras.
46046205c058ab70be78163ebcacfdc344a7f8750aZhijun He     * 2. Init static info (mCameras[id]->initStaticInfo())
47046205c058ab70be78163ebcacfdc344a7f8750aZhijun He     * 3. Notify on_status_change callback
48046205c058ab70be78163ebcacfdc344a7f8750aZhijun He     *
49046205c058ab70be78163ebcacfdc344a7f8750aZhijun He     * If unconnected, similarly, do below:
50046205c058ab70be78163ebcacfdc344a7f8750aZhijun He     * 1. Destroy camera device and remove it from mCameras.
51046205c058ab70be78163ebcacfdc344a7f8750aZhijun He     * 2. Notify on_status_change callback
52046205c058ab70be78163ebcacfdc344a7f8750aZhijun He     *
53046205c058ab70be78163ebcacfdc344a7f8750aZhijun He     * DO NOT have a tight polling loop here, to avoid excessive CPU utilization.
54046205c058ab70be78163ebcacfdc344a7f8750aZhijun He     */
55046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
56046205c058ab70be78163ebcacfdc344a7f8750aZhijun He    return true;
57046205c058ab70be78163ebcacfdc344a7f8750aZhijun He}
58046205c058ab70be78163ebcacfdc344a7f8750aZhijun He
59046205c058ab70be78163ebcacfdc344a7f8750aZhijun He} // namespace usb_camera_hal
60