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