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#ifndef CHRE_CORE_INIT_H_ 18e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#define CHRE_CORE_INIT_H_ 19e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie 20e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddienamespace chre { 21e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie 22e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie/** 23e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * Performs initialization of CHRE. The CHRE is designed to be portable and as 24e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * such the order of initialization must be as follows: 25e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * 26e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * 1) [optional] Perform platform initialization if needed. 27e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * 2) [required] Perform CHRE initialization by invoking this function. All 28e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * platforms must invoke chre::init() prior to loading apps. 29e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * 30e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * When step 2) is performed, the platform must be ready for any and all 31e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * platform-specific code to be invoked as part of CHRE initialization. (as an 32e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * example for the Linux platform, any functions provided by the platform/linux 33e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * directory must be available). If any platform specific initialization is 34e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie * required, it must be performed in step 1). 35e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie */ 36e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddievoid init(); 37e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie 38b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol/** 39b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * Performs deinitialization of CHRE. The order of deinitialization must be as 40b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * follows: 41b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * 42b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * 1) [required] Perform CHRE deinitialization by invoking this function. All 43b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * platforms must invoke chre::deinit() after unloading all apps 44b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * and upon termination. 45b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * 2) [optional] Perform any additional teardown as required by the platform but 46b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * not covered by common deinitialization logic. 47b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * 48b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * After step 1 is complete, chre common code has been deinitialized and calling 49b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * into it is undefined behavior. Portions of the platform (ie: sensors) are 50b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * also deinitialized by step 1. Only perform additional deinitialization after 51b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * this function as not handled by common CHRE code. The goal is to minimize 52b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol * this additional teardown as much as possible. 53b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol */ 54b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignolvoid deinit(); 55b5ef2cebc2d8b17e1dd4fa026d3842f97c79d8fbAndrew Rossignol 56e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie} // namespace chre 57e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie 58e64f180233e64c40b56993cfea3696c5b4b16395Brian Duddie#endif // CHRE_CORE_INIT_H_ 59