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