1e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/* 2e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Copyright (C) 2016 The Android Open Source Project 3e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * 4e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Licensed under the Apache License, Version 2.0 (the "License"); 5e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * you may not use this file except in compliance with the License. 6e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * You may obtain a copy of the License at 7e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * 8e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * http://www.apache.org/licenses/LICENSE-2.0 9e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * 10e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Unless required by applicable law or agreed to in writing, software 11e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * distributed under the License is distributed on an "AS IS" BASIS, 12e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * See the License for the specific language governing permissions and 14e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * limitations under the License. 15e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */ 16e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie 17e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#include "chre/core/init.h" 18e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie 19b1c45b9446bd6bf2e95b0768353165e8009594f6Andrew Rossignol#include "chre/core/event_loop_manager.h" 200d94eb2fcf599754d9a1087c3292ab6ac6495de6Andrew Rossignol#include "chre/platform/platform_sensor.h" 21e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#include "chre/platform/system_time.h" 22b1c45b9446bd6bf2e95b0768353165e8009594f6Andrew Rossignol#include "chre/util/singleton.h" 23e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie 24b8ba15efb67b70862c4b8ee0089d8f42b5da8bc8Andrew Rossignol#ifndef CHRE_VERSION_STRING 25b8ba15efb67b70862c4b8ee0089d8f42b5da8bc8Andrew Rossignol#define CHRE_VERSION_STRING "undefined" 26b8ba15efb67b70862c4b8ee0089d8f42b5da8bc8Andrew Rossignol#endif // CHRE_VERSION_STRING 27b8ba15efb67b70862c4b8ee0089d8f42b5da8bc8Andrew Rossignol 28b8ba15efb67b70862c4b8ee0089d8f42b5da8bc8Andrew Rossignol//! The CHRE version string. Placed in a variable in the global namespace for 29b8ba15efb67b70862c4b8ee0089d8f42b5da8bc8Andrew Rossignol//! easy access with debugging tools. 30b8ba15efb67b70862c4b8ee0089d8f42b5da8bc8Andrew Rossignolstatic const char kChreVersionString[] = CHRE_VERSION_STRING; 31b8ba15efb67b70862c4b8ee0089d8f42b5da8bc8Andrew Rossignol 32e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddienamespace chre { 33e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie 34e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddievoid init() { 35b8ba15efb67b70862c4b8ee0089d8f42b5da8bc8Andrew Rossignol LOGI("CHRE init, version: %s", kChreVersionString); 36b8ba15efb67b70862c4b8ee0089d8f42b5da8bc8Andrew Rossignol 37e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie SystemTime::init(); 380d94eb2fcf599754d9a1087c3292ab6ac6495de6Andrew Rossignol PlatformSensor::init(); 39b1c45b9446bd6bf2e95b0768353165e8009594f6Andrew Rossignol EventLoopManagerSingleton::init(); 40e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie} 41e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie 42b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignolvoid deinit() { 430d94eb2fcf599754d9a1087c3292ab6ac6495de6Andrew Rossignol PlatformSensor::deinit(); 44b8ba15efb67b70862c4b8ee0089d8f42b5da8bc8Andrew Rossignol 4538d470f47be1afcd788c08b795211fcda7521464Meng-hsuan Chung // EventLoopManager has to be the last one to deinit to handle callback 4638d470f47be1afcd788c08b795211fcda7521464Meng-hsuan Chung // functions in PlatformSensor potentially from a different thread. 4738d470f47be1afcd788c08b795211fcda7521464Meng-hsuan Chung EventLoopManagerSingleton::deinit(); 4838d470f47be1afcd788c08b795211fcda7521464Meng-hsuan Chung 492ff52c6627054f8708e83eaccbcbd0db0af2899cBrian Duddie LOGD("CHRE deinit"); 50b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol} 51b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol 52e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie} // namespace chre 53