| /* |
| * Copyright (C) 2017 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef _BOOTANIMATION_BOOTACTION_H |
| #define _BOOTANIMATION_BOOTACTION_H |
| |
| #include <string> |
| #include <vector> |
| |
| #include "BootParameters.h" |
| |
| #include <boot_action/boot_action.h> // libandroidthings native API. |
| #include <utils/RefBase.h> |
| |
| namespace android { |
| |
| class BootAction : public RefBase { |
| public: |
| ~BootAction(); |
| |
| // libraryPath is a fully qualified path to the target .so library. |
| bool init(const std::string& libraryPath, |
| const std::unique_ptr<BootParameters>& bootParameters); |
| |
| // The animation is going to start playing partNumber for the playCount'th |
| // time, update the action as needed. |
| // This is run in the same thread as the boot animation, |
| // you must not block here. |
| void startPart(int partNumber, int playCount); |
| |
| // Shutdown the boot action, this will be called shortly before the |
| // process is shut down to allow time for cleanup. |
| void shutdown(); |
| |
| private: |
| typedef bool (*libInit)(const ABootActionParameter* parameters, |
| size_t numParameters); |
| typedef void (*libStartPart)(int partNumber, int playNumber); |
| typedef void (*libShutdown)(); |
| |
| bool loadSymbol(const char* symbol, void** loaded); |
| |
| void* mLibHandle = nullptr; |
| libInit mLibInit = nullptr; |
| libStartPart mLibStartPart = nullptr; |
| libShutdown mLibShutdown = nullptr; |
| |
| // Called only if the boot is silent. |
| libInit mLibSilentBoot = nullptr; |
| }; |
| |
| } // namespace android |
| |
| |
| #endif // _BOOTANIMATION_BOOTACTION_H |