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