1/******************************************************************************
2 *
3 *  Copyright (C) 2014 Google, Inc.
4 *
5 *  Licensed under the Apache License, Version 2.0 (the "License");
6 *  you may not use this file except in compliance with the License.
7 *  You may obtain a copy of the License at:
8 *
9 *  http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 *
17 ******************************************************************************/
18
19#pragma once
20
21#include "hci_layer.h"
22
23typedef struct thread_t thread_t;
24typedef struct vendor_t vendor_t;
25
26typedef struct low_power_manager_t {
27  // Initialize the low power manager, and use |post_thread| to synchronize
28  // actions.
29  void (*init)(thread_t* post_thread);
30
31  // Clean up the low power manager and release resources.
32  void (*cleanup)(void);
33
34  // Performs |command| synchronized on the thread that was provided
35  // at initialization time.
36  void (*post_command)(low_power_command_t command);
37
38  // Assert wake (for transmission). Must be called on the thread provided
39  // at initialization time.
40  void (*wake_assert)(void);
41
42  // Tell the low power manager that you're done transmitting data. Must be
43  // called on the thread provided at initialization time.
44  void (*transmit_done)(void);
45} low_power_manager_t;
46
47const low_power_manager_t* low_power_manager_get_interface();
48const low_power_manager_t* low_power_manager_get_test_interface(
49    const vendor_t* vendor_interface);
50