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