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