/****************************************************************************** * * Copyright (C) 2003-2014 Broadcom Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ /****************************************************************************** * * This is the public interface file for the BTA system manager. * ******************************************************************************/ #ifndef NFA_SYS_H #define NFA_SYS_H #include "gki.h" #include "nfa_api.h" #include "nfc_target.h" /***************************************************************************** ** Constants and data types *****************************************************************************/ /* SW sub-systems */ enum { NFA_ID_SYS, /* system manager */ NFA_ID_DM, /* device manager */ NFA_ID_EE, /* NFCEE sub-system */ NFA_ID_P2P, /* Peer-to-Peer sub-system */ NFA_ID_SNEP, /* SNEP sub-system */ NFA_ID_RW, /* Reader/writer sub-system */ NFA_ID_CE, /* Card-emulation sub-system */ NFA_ID_HCI, /* Host controller interface sub-system*/ #if (NFA_DTA_INCLUDED == TRUE) NFA_ID_DTA, /* Device Test Application sub-system */ #endif NFA_ID_MAX }; typedef uint8_t tNFA_SYS_ID; /* enable function type */ typedef void(tNFA_SYS_ENABLE)(void); /* event handler function type */ typedef bool(tNFA_SYS_EVT_HDLR)(NFC_HDR* p_msg); /* disable function type */ typedef void(tNFA_SYS_DISABLE)(void); /* function type for processing the change of NFCC power mode */ typedef void(tNFA_SYS_PROC_NFCC_PWR_MODE)(uint8_t nfcc_power_mode); typedef void(tNFA_SYS_ENABLE_CBACK)(void); typedef void(tNFA_SYS_PROC_NFCC_PWR_MODE_CMPL)(void); /* registration structure */ typedef struct { tNFA_SYS_ENABLE* enable; tNFA_SYS_EVT_HDLR* evt_hdlr; tNFA_SYS_DISABLE* disable; tNFA_SYS_PROC_NFCC_PWR_MODE* proc_nfcc_pwr_mode; } tNFA_SYS_REG; /* system manager configuration structure */ typedef struct { uint16_t mbox_evt; /* GKI mailbox event */ uint8_t mbox; /* GKI mailbox id */ uint8_t timer; /* GKI timer id */ } tNFA_SYS_CFG; /***************************************************************************** ** Global data *****************************************************************************/ /***************************************************************************** ** Macros *****************************************************************************/ /* Calculate start of event enumeration; id is top 8 bits of event */ #define NFA_SYS_EVT_START(id) ((id) << 8) /***************************************************************************** ** Function declarations *****************************************************************************/ extern void nfa_sys_init(void); extern void nfa_sys_event(NFC_HDR* p_msg); extern void nfa_sys_timer_update(void); extern void nfa_sys_disable_timers(void); extern void nfa_sys_register(uint8_t id, const tNFA_SYS_REG* p_reg); extern void nfa_sys_deregister(uint8_t id); extern void nfa_sys_check_disabled(void); extern bool nfa_sys_is_register(uint8_t id); extern void nfa_sys_disable_subsystems(bool graceful); extern void nfa_sys_enable_subsystems(void); extern bool nfa_sys_is_graceful_disable(void); extern void nfa_sys_sendmsg(void* p_msg); extern void nfa_sys_start_timer(TIMER_LIST_ENT* p_tle, uint16_t type, int32_t timeout); extern void nfa_sys_stop_timer(TIMER_LIST_ENT* p_tle); extern void nfa_sys_cback_reg_enable_complete(tNFA_SYS_ENABLE_CBACK* p_cback); extern void nfa_sys_cback_notify_enable_complete(uint8_t id); extern void nfa_sys_notify_nfcc_power_mode(uint8_t nfcc_power_mode); extern void nfa_sys_cback_reg_nfcc_power_mode_proc_complete( tNFA_SYS_PROC_NFCC_PWR_MODE_CMPL* p_cback); extern void nfa_sys_cback_notify_nfcc_power_mode_proc_complete(uint8_t id); #endif /* NFA_SYS_H */