host_link_base.h revision 938774101712ba48f54521aff2c1b7aa21d4a123
1a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie/* 2a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * Copyright (C) 2017 The Android Open Source Project 3a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * 4a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * Licensed under the Apache License, Version 2.0 (the "License"); 5a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * you may not use this file except in compliance with the License. 6a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * You may obtain a copy of the License at 7a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * 8a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * http://www.apache.org/licenses/LICENSE-2.0 9a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * 10a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * Unless required by applicable law or agreed to in writing, software 11a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * distributed under the License is distributed on an "AS IS" BASIS, 12a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * See the License for the specific language governing permissions and 14a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie * limitations under the License. 15a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie */ 16a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie 17a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie#ifndef CHRE_PLATFORM_SLPI_HOST_LINK_BASE_H_ 18a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie#define CHRE_PLATFORM_SLPI_HOST_LINK_BASE_H_ 19a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie 20938774101712ba48f54521aff2c1b7aa21d4a123Brian Duddie#include "timer.h" 21a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie 22a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddienamespace chre { 23a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie 24a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddieclass HostLinkBase { 25a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie public: 26deb80985800c215b695dc968c01a06e43c76823bBrian Duddie /** 27deb80985800c215b695dc968c01a06e43c76823bBrian Duddie * Blocks the current thread until the host has retrieved all messages pending 28deb80985800c215b695dc968c01a06e43c76823bBrian Duddie * in the outbound queue, or a timeout occurs. For proper function, it should 29deb80985800c215b695dc968c01a06e43c76823bBrian Duddie * not be possible for new messages to be added to the queue at the point when 30deb80985800c215b695dc968c01a06e43c76823bBrian Duddie * this is called. 31deb80985800c215b695dc968c01a06e43c76823bBrian Duddie * 32deb80985800c215b695dc968c01a06e43c76823bBrian Duddie * @return true if the outbound queue was successfully emptied 33deb80985800c215b695dc968c01a06e43c76823bBrian Duddie */ 34deb80985800c215b695dc968c01a06e43c76823bBrian Duddie static bool flushOutboundQueue(); 35deb80985800c215b695dc968c01a06e43c76823bBrian Duddie 36deb80985800c215b695dc968c01a06e43c76823bBrian Duddie /** 37deb80985800c215b695dc968c01a06e43c76823bBrian Duddie * Attempts to flush the outbound queue and gracefully inform the host that we 38deb80985800c215b695dc968c01a06e43c76823bBrian Duddie * are exiting. 39deb80985800c215b695dc968c01a06e43c76823bBrian Duddie */ 40a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie static void shutdown(); 41deb80985800c215b695dc968c01a06e43c76823bBrian Duddie 42deb80985800c215b695dc968c01a06e43c76823bBrian Duddie private: 43938774101712ba48f54521aff2c1b7aa21d4a123Brian Duddie static constexpr time_timetick_type kPollingIntervalUsec = 5000; 44a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie}; 45a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie 46589e0f01fa3fb1512b52da3a52f6e41e7a765bcaAndrew Rossignol/** 47589e0f01fa3fb1512b52da3a52f6e41e7a765bcaAndrew Rossignol * Requests that the HostLink send the log buffer to the host. 48589e0f01fa3fb1512b52da3a52f6e41e7a765bcaAndrew Rossignol */ 49589e0f01fa3fb1512b52da3a52f6e41e7a765bcaAndrew Rossignolvoid requestHostLinkLogBufferFlush(); 50589e0f01fa3fb1512b52da3a52f6e41e7a765bcaAndrew Rossignol 51e738e3119e121fff776c49ec75f518c5b1695e43Arthur Ishiguro/** 52e738e3119e121fff776c49ec75f518c5b1695e43Arthur Ishiguro * Sends a request to the host for a time sync message. 53e738e3119e121fff776c49ec75f518c5b1695e43Arthur Ishiguro */ 54e738e3119e121fff776c49ec75f518c5b1695e43Arthur Ishigurovoid sendTimeSyncRequest(); 55e738e3119e121fff776c49ec75f518c5b1695e43Arthur Ishiguro 56a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie} // namespace chre 57a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie 58a0ead37f82267c65e220bd08e28856dce6badf82Brian Duddie#endif // CHRE_PLATFORM_SLPI_HOST_LINK_BASE_H_ 59