1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
3e9629bad30a9f478b336ab46b8e6e02f7f87af46Evan Chu *  Copyright (C) 2003-2014 Broadcom Corporation
4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  you may not use this file except in compliance with the License.
7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  You may obtain a copy of the License at:
8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  See the License for the specific language governing permissions and
15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  limitations under the License.
16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
195c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  This is the public interface file for the BTA system manager.
23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFA_SYS_H
26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_SYS_H
27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfc_target.h"
29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "gki.h"
30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_api.h"
31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Constants and data types
34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/
35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* SW sub-systems */
37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum {
38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_ID_SYS,         /* system manager                      */
39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_ID_DM,          /* device manager                      */
40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_ID_EE,          /* NFCEE sub-system                    */
41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_ID_P2P,         /* Peer-to-Peer sub-system             */
42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_ID_CHO,         /* Connection Handover sub-system      */
43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_ID_SNEP,        /* SNEP sub-system                     */
44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_ID_RW,          /* Reader/writer sub-system            */
45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_ID_CE,          /* Card-emulation sub-system           */
46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_ID_HCI,         /* Host controller interface sub-system*/
47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (NFA_DTA_INCLUDED == TRUE)
48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_ID_DTA,         /* Device Test Application sub-system  */
49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    NFA_ID_MAX
51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project};
52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_SYS_ID;
53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* enable function type */
55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (tNFA_SYS_ENABLE) (void);
56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* event handler function type */
58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef BOOLEAN (tNFA_SYS_EVT_HDLR) (BT_HDR *p_msg);
59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* disable function type */
61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (tNFA_SYS_DISABLE) (void);
62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* function type for processing the change of NFCC power mode */
64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (tNFA_SYS_PROC_NFCC_PWR_MODE) (UINT8 nfcc_power_mode);
65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (tNFA_SYS_CBACK) (void);
67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (tNFA_SYS_ENABLE_CBACK) (void);
68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (tNFA_SYS_PROC_NFCC_PWR_MODE_CMPL) (void);
69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* registration structure */
71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_SYS_ENABLE                 *enable;
74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_SYS_EVT_HDLR               *evt_hdlr;
75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_SYS_DISABLE                *disable;
76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFA_SYS_PROC_NFCC_PWR_MODE     *proc_nfcc_pwr_mode;
77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_SYS_REG;
78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* system manager configuration structure */
80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT16          mbox_evt;                       /* GKI mailbox event */
83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8           mbox;                           /* GKI mailbox id */
84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8           timer;                          /* GKI timer id */
85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8           trace_level;                    /* initial trace level */
86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_SYS_CFG;
87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Global data
91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/
92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Macros
95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/
96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Calculate start of event enumeration; id is top 8 bits of event */
98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_SYS_EVT_START(id)       ((id) << 8)
99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**  Function declarations
103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/
104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus
106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern "C" {
107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern void nfa_sys_init (void);
110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern void nfa_sys_event (BT_HDR *p_msg);
111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern void nfa_sys_timer_update (void);
112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern void nfa_sys_disable_timers (void);
113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern void nfa_sys_set_trace_level (UINT8 level);
114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_register (UINT8 id, const tNFA_SYS_REG *p_reg);
116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_deregister (UINT8 id);
117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_check_disabled (void);
118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern BOOLEAN nfa_sys_is_register (UINT8 id);
119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_disable_subsystems (BOOLEAN graceful);
120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_enable_subsystems (void);
121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern BOOLEAN nfa_sys_is_graceful_disable (void);
123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_sendmsg (void *p_msg);
124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_start_timer (TIMER_LIST_ENT *p_tle, UINT16 type, INT32 timeout);
125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_stop_timer (TIMER_LIST_ENT *p_tle);
126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_cback_reg_enable_complete (tNFA_SYS_ENABLE_CBACK *p_cback);
128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_cback_notify_enable_complete (UINT8 id);
129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_notify_nfcc_power_mode (UINT8 nfcc_power_mode);
131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_cback_reg_nfcc_power_mode_proc_complete (tNFA_SYS_PROC_NFCC_PWR_MODE_CMPL *p_cback);
132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void nfa_sys_cback_notify_nfcc_power_mode_proc_complete (UINT8 id);
133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus
135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* NFA_SYS_H */
139