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 19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * This is the public interface file for the BTA system manager. 22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFA_SYS_H 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_SYS_H 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "gki.h" 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_api.h" 296fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#include "nfc_target.h" 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Constants and data types 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* SW sub-systems */ 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectenum { 376fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_ID_SYS, /* system manager */ 386fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_ID_DM, /* device manager */ 396fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_ID_EE, /* NFCEE sub-system */ 406fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_ID_P2P, /* Peer-to-Peer sub-system */ 416fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_ID_SNEP, /* SNEP sub-system */ 426fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_ID_RW, /* Reader/writer sub-system */ 436fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_ID_CE, /* Card-emulation sub-system */ 446fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_ID_HCI, /* Host controller interface sub-system*/ 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (NFA_DTA_INCLUDED == TRUE) 466fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_ID_DTA, /* Device Test Application sub-system */ 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 486fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi NFA_ID_MAX 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}; 50512ee63c7cc8feb016863e507a5d33cd0f4242bfRuchi Kandoitypedef uint8_t tNFA_SYS_ID; 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* enable function type */ 536fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tNFA_SYS_ENABLE)(void); 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* event handler function type */ 566fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef bool(tNFA_SYS_EVT_HDLR)(NFC_HDR* p_msg); 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* disable function type */ 596fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tNFA_SYS_DISABLE)(void); 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* function type for processing the change of NFCC power mode */ 626fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tNFA_SYS_PROC_NFCC_PWR_MODE)(uint8_t nfcc_power_mode); 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 646fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tNFA_SYS_ENABLE_CBACK)(void); 656fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tNFA_SYS_PROC_NFCC_PWR_MODE_CMPL)(void); 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* registration structure */ 686fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 696fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_SYS_ENABLE* enable; 706fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_SYS_EVT_HDLR* evt_hdlr; 716fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_SYS_DISABLE* disable; 726fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_SYS_PROC_NFCC_PWR_MODE* proc_nfcc_pwr_mode; 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_SYS_REG; 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* system manager configuration structure */ 766fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct { 776fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint16_t mbox_evt; /* GKI mailbox event */ 786fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t mbox; /* GKI mailbox id */ 796fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi uint8_t timer; /* GKI timer id */ 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_SYS_CFG; 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Global data 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Macros 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Calculate start of event enumeration; id is top 8 bits of event */ 916fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi#define NFA_SYS_EVT_START(id) ((id) << 8) 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function declarations 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 976fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_init(void); 986fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_event(NFC_HDR* p_msg); 996fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_timer_update(void); 1006fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_disable_timers(void); 1016fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 1026fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_register(uint8_t id, const tNFA_SYS_REG* p_reg); 1036fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_deregister(uint8_t id); 1046fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_check_disabled(void); 1056fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern bool nfa_sys_is_register(uint8_t id); 1066fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_disable_subsystems(bool graceful); 1076fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_enable_subsystems(void); 1086fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 1096fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern bool nfa_sys_is_graceful_disable(void); 1106fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_sendmsg(void* p_msg); 1116fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_start_timer(TIMER_LIST_ENT* p_tle, uint16_t type, 1126fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi int32_t timeout); 1136fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_stop_timer(TIMER_LIST_ENT* p_tle); 1146fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 1156fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_cback_reg_enable_complete(tNFA_SYS_ENABLE_CBACK* p_cback); 1166fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_cback_notify_enable_complete(uint8_t id); 1176fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi 1186fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_notify_nfcc_power_mode(uint8_t nfcc_power_mode); 1196fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_cback_reg_nfcc_power_mode_proc_complete( 1206fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi tNFA_SYS_PROC_NFCC_PWR_MODE_CMPL* p_cback); 1216fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoiextern void nfa_sys_cback_notify_nfcc_power_mode_proc_complete(uint8_t id); 122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* NFA_SYS_H */ 124