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