1c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung/*
2c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung * Copyright (C) 2017 The Android Open Source Project
3c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung *
4c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung * Licensed under the Apache License, Version 2.0 (the "License");
5c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung * you may not use this file except in compliance with the License.
6c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung * You may obtain a copy of the License at
7c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung *
8c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung *      http://www.apache.org/licenses/LICENSE-2.0
9c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung *
10c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung * Unless required by applicable law or agreed to in writing, software
11c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung * distributed under the License is distributed on an "AS IS" BASIS,
12c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung * See the License for the specific language governing permissions and
14c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung * limitations under the License.
15c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung */
16c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung
17a06ab05018d0ed64015452108b2400f3c5e39fedMeng-hsuan Chung#ifndef CHRE_PLATFORM_SLPI_SMGR_SMGR_CLIENT_H_
18a06ab05018d0ed64015452108b2400f3c5e39fedMeng-hsuan Chung#define CHRE_PLATFORM_SLPI_SMGR_SMGR_CLIENT_H_
19c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung
20a06ab05018d0ed64015452108b2400f3c5e39fedMeng-hsuan Chung#include "chre/platform/slpi/smgr/smr_helper.h"
21b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie#include "chre/util/singleton.h"
22c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung
23b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie/**
24b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie * @file
25b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie * Exposes the SMR helper and SMGR (non-internal) client handle used by the
26b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie * platform sensor implementation, for use in other modules.
27b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie */
28c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung
29c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chungnamespace chre {
30c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung
31b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie//! A singleton instance of SmrHelper that can be used for making synchronous
32b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie//! sensor requests while remaining in micro-image. This must only be used from
33b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie//! the CHRE thread.
34b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddietypedef Singleton<SmrHelper> SmrHelperSingleton;
35b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie
36b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie/**
37b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie * Convenience method for fetching the SMR helper singleton instance. Must only
38b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie * be used from the CHRE thread.
39b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie */
40b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddieinline SmrHelper *getSmrHelper() {
41b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie  return SmrHelperSingleton::get();
42b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie}
43b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie
44c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung/**
45b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie * @return The SMR client handle to the SMGR (non-internal) API, created by the
46b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddie *         SLPI platform-specific sensors implementation
47c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung */
48b9d199936165f42ac7e7eabac1bdb4968d938f4fBrian Duddiesmr_client_hndl getSensorServiceSmrClientHandle();
49c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung
50c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung}  // namespace chre
51c6ef3f619155a7f6e2f0ff5fbc77a11526d9970fMeng-hsuan Chung
52a06ab05018d0ed64015452108b2400f3c5e39fedMeng-hsuan Chung#endif  // CHRE_PLATFORM_SLPI_SMGR_SMGR_CLIENT_H_
53