Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2010-2014 Broadcom Corporation
      4  *
      5  *  Licensed under the Apache License, Version 2.0 (the "License");
      6  *  you may not use this file except in compliance with the License.
      7  *  You may obtain a copy of the License at:
      8  *
      9  *  http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  *
     17  ******************************************************************************/
     18 
     19 /******************************************************************************
     20  *
     21  *  NFA interface to NFCEE
     22  *
     23  ******************************************************************************/
     24 #ifndef NFA_EE_API_H
     25 #define NFA_EE_API_H
     26 
     27 #include "nfa_api.h"
     28 #include "nfc_api.h"
     29 #include "nfc_target.h"
     30 
     31 /*****************************************************************************
     32 **  Constants and data types
     33 *****************************************************************************/
     34 /* 16 per ISO 7816 specification    */
     35 #define NFA_MAX_AID_LEN NFC_MAX_AID_LEN
     36 
     37 /* NFA EE callback events */
     38 enum {
     39   NFA_EE_DISCOVER_EVT,   /* The status for NFA_EeDiscover () */
     40   NFA_EE_REGISTER_EVT,   /* The status for NFA_EeRegister () */
     41   NFA_EE_DEREGISTER_EVT, /* The status for NFA_EeDeregister () */
     42   NFA_EE_MODE_SET_EVT, /* The status for activating or deactivating an NFCEE */
     43   NFA_EE_ADD_AID_EVT,  /* The status for adding an AID to a routing table entry
     44                         */
     45   NFA_EE_REMOVE_AID_EVT,  /* The status for removing an AID from a routing table
     46                            */
     47   NFA_EE_ADD_SYSCODE_EVT, /* The status for adding an System Code to a routing
     48                              table entry */
     49   NFA_EE_REMOVE_SYSCODE_EVT, /* The status for removing an System Code from
     50                               routing table */
     51   NFA_EE_REMAINING_SIZE_EVT, /* The remaining size of the Listen Mode Routing
     52                                 Table   */
     53   NFA_EE_SET_TECH_CFG_EVT,   /* The status for setting the routing based on RF
     54                                 tech.  */
     55   NFA_EE_SET_PROTO_CFG_EVT,  /* The status for setting the routing based on
     56                                 protocols */
     57   NFA_EE_UPDATED_EVT,        /* The status for NFA_EeUpdateNow */
     58   NFA_EE_CONNECT_EVT,        /* Result of NFA_EeConnect */
     59   NFA_EE_DATA_EVT, /* Received data from NFCEE.                             */
     60   NFA_EE_DISCONNECT_EVT, /* NFCEE connection closed. */
     61   NFA_EE_NEW_EE_EVT, /* A new NFCEE is discovered                             */
     62   NFA_EE_ACTION_EVT, /* An action happened in NFCEE                           */
     63   NFA_EE_DISCOVER_REQ_EVT, /* NFCEE Discover Request Notification */
     64   NFA_EE_NO_MEM_ERR_EVT,   /* Error - out of GKI buffers */
     65   NFA_EE_NO_CB_ERR_EVT /* Error - Can not find control block or wrong state */
     66 };
     67 typedef uint8_t tNFA_EE_EVT;
     68 
     69 /* tNFA_NFCEE_INTERFACE values */
     70 /* HCI Access Interface*/
     71 #define NFA_EE_INTERFACE_HCI_ACCESS NFC_NFCEE_INTERFACE_HCI_ACCESS
     72 typedef uint8_t tNFA_EE_INTERFACE;
     73 
     74 typedef uint8_t tNFA_EE_TAG;
     75 
     76 /* for NFA_EeModeSet () */
     77 #define NFA_EE_MD_ACTIVATE NFC_MODE_ACTIVATE
     78 #define NFA_EE_MD_DEACTIVATE NFC_MODE_DEACTIVATE
     79 typedef uint8_t tNFA_EE_MD;
     80 
     81 /* The device is on                 */
     82 #define NFA_EE_PWR_STATE_ON 0x01
     83 /* The device is switched off       */
     84 #define NFA_EE_PWR_STATE_SWITCH_OFF 0x02
     85 /* The device's battery is removed  */
     86 #define NFA_EE_PWR_STATE_BATT_OFF 0x04
     87 typedef uint8_t tNFA_EE_PWR_STATE;
     88 
     89 /* NFCEE connected and inactive */
     90 #define NFA_EE_STATUS_INACTIVE NFC_NFCEE_STATUS_INACTIVE
     91 /* NFCEE connected and active   */
     92 #define NFA_EE_STATUS_ACTIVE NFC_NFCEE_STATUS_ACTIVE
     93 /* NFCEE removed                */
     94 #define NFA_EE_STATUS_REMOVED NFC_NFCEE_STATUS_REMOVED
     95 /* waiting for response from NFCC */
     96 #define NFA_EE_STATUS_PENDING 0x10
     97 typedef uint8_t tNFA_EE_STATUS;
     98 
     99 /* additional NFCEE Info */
    100 typedef struct {
    101   tNFA_EE_TAG tag;
    102   uint8_t len;
    103   uint8_t info[NFC_MAX_EE_INFO];
    104 } tNFA_EE_TLV;
    105 
    106 typedef struct {
    107   tNFA_HANDLE ee_handle;    /* handle for NFCEE oe DH   */
    108   tNFA_EE_STATUS ee_status; /* The NFCEE status         */
    109   uint8_t num_interface;    /* number of NFCEE interface*/
    110   tNFA_EE_INTERFACE
    111       ee_interface[NFC_MAX_EE_INTERFACE]; /* NFCEE supported interface */
    112   uint8_t num_tlvs;                       /* number of TLVs           */
    113   tNFA_EE_TLV ee_tlv[NFC_MAX_EE_TLVS];    /* the TLV                  */
    114   uint8_t ee_power_supply_status;         /* The NFCEE Power supply */
    115 } tNFA_EE_INFO;
    116 
    117 typedef struct {
    118   tNFA_STATUS status; /* NFA_STATUS_OK is successful      */
    119   uint8_t num_ee;     /* number of NFCEEs found           */
    120   tNFA_EE_INFO ee_info[NFA_EE_MAX_EE_SUPPORTED]; /*NFCEE information */
    121 } tNFA_EE_DISCOVER;
    122 
    123 typedef struct {
    124   tNFA_HANDLE ee_handle; /* Handle of NFCEE                                  */
    125   tNFA_STATUS status;    /* NFA_STATUS_OK is successful                      */
    126   tNFA_EE_INTERFACE
    127       ee_interface; /* NFCEE interface associated with this connection  */
    128 } tNFA_EE_CONNECT;
    129 
    130 typedef tNFC_EE_TRIGGER tNFA_EE_TRIGGER;
    131 
    132 /* Union of NFCEE action parameter depending on the associated trigger */
    133 typedef union {
    134   tNFA_NFC_PROTOCOL protocol; /* NFA_EE_TRGR_RF_PROTOCOL: the protocol that
    135                                  triggers this event */
    136   tNFC_RF_TECH technology;    /* NFA_EE_TRGR_RF_TECHNOLOGY:the technology that
    137                                  triggers this event */
    138   tNFC_AID aid; /* NFA_EE_TRGR_SELECT      : the AID in the received SELECT AID
    139                    command */
    140   tNFC_APP_INIT app_init; /* NFA_EE_TRGR_APP_INIT:     The information for the
    141                              application initiated trigger */
    142 } tNFA_EE_ACTION_PARAM;
    143 
    144 typedef struct {
    145   tNFA_HANDLE ee_handle;   /* Handle of NFCEE                  */
    146   tNFA_EE_TRIGGER trigger; /* the trigger of this event        */
    147   tNFA_EE_ACTION_PARAM param;
    148 } tNFA_EE_ACTION;
    149 
    150 typedef struct {
    151   tNFA_HANDLE ee_handle;    /* Handle of NFCEE              */
    152   tNFA_STATUS status;       /* NFA_STATUS_OK is successful  */
    153   tNFA_EE_STATUS ee_status; /* The NFCEE status             */
    154 } tNFA_EE_MODE_SET;
    155 
    156 typedef struct {
    157   tNFA_HANDLE ee_handle;          /* Handle of MFCEE      */
    158   tNFA_NFC_PROTOCOL la_protocol;  /* Listen A protocol    */
    159   tNFA_NFC_PROTOCOL lb_protocol;  /* Listen B protocol    */
    160   tNFA_NFC_PROTOCOL lf_protocol;  /* Listen F protocol    */
    161   tNFA_NFC_PROTOCOL lbp_protocol; /* Listen B' protocol   */
    162 } tNFA_EE_DISCOVER_INFO;
    163 
    164 /* Data for NFA_EE_DISCOVER_REQ_EVT */
    165 typedef struct {
    166   uint8_t status; /* NFA_STATUS_OK if successful   */
    167   uint8_t num_ee; /* number of MFCEE information   */
    168   tNFA_EE_DISCOVER_INFO ee_disc_info[NFA_EE_MAX_EE_SUPPORTED -
    169                                      1]; /* NFCEE DISCOVER Request info   */
    170 } tNFA_EE_DISCOVER_REQ;
    171 
    172 /* Data for NFA_EE_DATA_EVT */
    173 typedef struct {
    174   tNFA_HANDLE handle; /* Connection handle */
    175   uint16_t len;       /* Length of data    */
    176   uint8_t* p_buf;     /* Data buffer       */
    177 } tNFA_EE_DATA;
    178 
    179 /* Union of all EE callback structures */
    180 typedef union {
    181   tNFA_STATUS
    182       status; /* NFA_STATUS_OK is successful; otherwise NFA_STATUS_FAILED */
    183   tNFA_EE_DATA data;
    184   tNFA_HANDLE handle;
    185   tNFA_EE_DISCOVER ee_discover;
    186   tNFA_STATUS ee_register;
    187   tNFA_STATUS deregister;
    188   tNFA_STATUS add_aid;
    189   tNFA_STATUS remove_aid;
    190   tNFA_STATUS add_sc;
    191   tNFA_STATUS remove_sc;
    192   tNFA_STATUS set_tech;
    193   tNFA_STATUS set_proto;
    194   uint16_t size;
    195   tNFA_EE_CONNECT connect;
    196   tNFA_EE_ACTION action;
    197   tNFA_EE_MODE_SET mode_set;
    198   tNFA_EE_INFO new_ee;
    199   tNFA_EE_DISCOVER_REQ discover_req;
    200 } tNFA_EE_CBACK_DATA;
    201 
    202 /* EE callback */
    203 typedef void(tNFA_EE_CBACK)(tNFA_EE_EVT event, tNFA_EE_CBACK_DATA* p_data);
    204 
    205 /*****************************************************************************
    206 **  External Function Declarations
    207 *****************************************************************************/
    208 
    209 /*******************************************************************************
    210 **
    211 ** Function         NFA_EeDiscover
    212 **
    213 ** Description      This function retrieves the NFCEE information from NFCC.
    214 **                  The NFCEE information is reported in NFA_EE_DISCOVER_EVT.
    215 **
    216 **                  This function may be called when a system supports removable
    217 **                  NFCEEs,
    218 **
    219 ** Returns          NFA_STATUS_OK if information is retrieved successfully
    220 **                  NFA_STATUS_FAILED If wrong state (retry later)
    221 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    222 **
    223 *******************************************************************************/
    224 extern tNFA_STATUS NFA_EeDiscover(tNFA_EE_CBACK* p_cback);
    225 
    226 /*******************************************************************************
    227 **
    228 ** Function         NFA_EeGetInfo
    229 **
    230 ** Description      This function retrieves the NFCEE information from NFA.
    231 **                  The actual number of NFCEE is returned in p_num_nfcee
    232 **                  and NFCEE information is returned in p_info
    233 **
    234 ** Returns          NFA_STATUS_OK if information is retrieved successfully
    235 **                  NFA_STATUS_FAILED If wrong state (retry later)
    236 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    237 **
    238 *******************************************************************************/
    239 extern tNFA_STATUS NFA_EeGetInfo(uint8_t* p_num_nfcee, tNFA_EE_INFO* p_info);
    240 
    241 /*******************************************************************************
    242 **
    243 ** Function         NFA_EeRegister
    244 **
    245 ** Description      This function registers a callback function to receive the
    246 **                  events from NFA-EE module.
    247 **
    248 ** Returns          NFA_STATUS_OK if successfully initiated
    249 **                  NFA_STATUS_FAILED otherwise
    250 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    251 **
    252 *******************************************************************************/
    253 extern tNFA_STATUS NFA_EeRegister(tNFA_EE_CBACK* p_cback);
    254 
    255 /*******************************************************************************
    256 **
    257 ** Function         NFA_EeDeregister
    258 **
    259 ** Description      This function de-registers the callback function
    260 **
    261 ** Returns          NFA_STATUS_OK if successfully initiated
    262 **                  NFA_STATUS_FAILED otherwise
    263 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    264 **
    265 *******************************************************************************/
    266 extern tNFA_STATUS NFA_EeDeregister(tNFA_EE_CBACK* p_cback);
    267 
    268 /*******************************************************************************
    269 **
    270 ** Function         NFA_EeModeSet
    271 **
    272 ** Description      This function is called to activate
    273 **                  (mode = NFA_EE_MD_ACTIVATE) or deactivate
    274 **                  (mode = NFA_EE_MD_DEACTIVATE) the NFCEE identified by the
    275 **                  given ee_handle. The result of this operation is reported
    276 **                  with the NFA_EE_MODE_SET_EVT.
    277 **
    278 ** Returns          NFA_STATUS_OK if successfully initiated
    279 **                  NFA_STATUS_FAILED otherwise
    280 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    281 **
    282 *******************************************************************************/
    283 extern tNFA_STATUS NFA_EeModeSet(tNFA_HANDLE ee_handle, tNFA_EE_MD mode);
    284 
    285 /*******************************************************************************
    286 **
    287 ** Function         NFA_EeSetDefaultTechRouting
    288 **
    289 ** Description      This function is called to add, change or remove the
    290 **                  default routing based on RF technology in the listen mode
    291 **                  routing table for the given ee_handle. The status of this
    292 **                  operation is reported as the NFA_EE_SET_TECH_CFG_EVT.
    293 **
    294 ** Note:            If RF discovery is started,
    295 **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
    296 **                  happen before calling this function
    297 **
    298 ** Note:            NFA_EeUpdateNow() should be called after last NFA-EE
    299 **                  function to change the listen mode routing is called.
    300 **
    301 ** Returns          NFA_STATUS_OK if successfully initiated
    302 **                  NFA_STATUS_FAILED otherwise
    303 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    304 **
    305 *******************************************************************************/
    306 extern tNFA_STATUS NFA_EeSetDefaultTechRouting(
    307     tNFA_HANDLE ee_handle, tNFA_TECHNOLOGY_MASK technologies_switch_on,
    308     tNFA_TECHNOLOGY_MASK technologies_switch_off,
    309     tNFA_TECHNOLOGY_MASK technologies_battery_off,
    310     tNFA_TECHNOLOGY_MASK technologies_screen_lock,
    311     tNFA_TECHNOLOGY_MASK technologies_screen_off,
    312     tNFA_TECHNOLOGY_MASK technologies_screen_off_lock);
    313 
    314 /*******************************************************************************
    315 **
    316 ** Function         NFA_EeSetDefaultProtoRouting
    317 **
    318 ** Description      This function is called to add, change or remove the
    319 **                  default routing based on Protocol in the listen mode routing
    320 **                  table for the given ee_handle. The status of this
    321 **                  operation is reported as the NFA_EE_SET_PROTO_CFG_EVT.
    322 **
    323 ** Note:            If RF discovery is started,
    324 **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
    325 **                  happen before calling this function
    326 **
    327 ** Note:            NFA_EeUpdateNow() should be called after last NFA-EE
    328 **                  function to change the listen mode routing is called.
    329 **
    330 ** Returns          NFA_STATUS_OK if successfully initiated
    331 **                  NFA_STATUS_FAILED otherwise
    332 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    333 **
    334 *******************************************************************************/
    335 extern tNFA_STATUS NFA_EeSetDefaultProtoRouting(
    336     tNFA_HANDLE ee_handle, tNFA_PROTOCOL_MASK protocols_switch_on,
    337     tNFA_PROTOCOL_MASK protocols_switch_off,
    338     tNFA_PROTOCOL_MASK protocols_battery_off,
    339     tNFA_PROTOCOL_MASK technologies_screen_lock,
    340     tNFA_PROTOCOL_MASK technologies_screen_off,
    341     tNFA_PROTOCOL_MASK technologies_screen_off_lock);
    342 
    343 /*******************************************************************************
    344 **
    345 ** Function         NFA_EeAddAidRouting
    346 **
    347 ** Description      This function is called to add an AID entry in the
    348 **                  listen mode routing table in NFCC. The status of this
    349 **                  operation is reported as the NFA_EE_ADD_AID_EVT.
    350 **
    351 ** Note:            If RF discovery is started,
    352 **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
    353 **                  happen before calling this function
    354 **
    355 ** Note:            NFA_EeUpdateNow() should be called after last NFA-EE
    356 **                  function to change the listen mode routing is called.
    357 **
    358 ** Returns          NFA_STATUS_OK if successfully initiated
    359 **                  NFA_STATUS_FAILED otherwise
    360 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    361 **
    362 *******************************************************************************/
    363 extern tNFA_STATUS NFA_EeAddAidRouting(tNFA_HANDLE ee_handle, uint8_t aid_len,
    364                                        uint8_t* p_aid,
    365                                        tNFA_EE_PWR_STATE power_state,
    366                                        uint8_t aidInfo);
    367 
    368 /*******************************************************************************
    369 **
    370 ** Function         NFA_EeRemoveAidRouting
    371 **
    372 ** Description      This function is called to remove the given AID entry from
    373 **                  the listen mode routing table. If the entry configures VS,
    374 **                  it is also removed. The status of this operation is reported
    375 **                  as the NFA_EE_REMOVE_AID_EVT.
    376 **
    377 ** Note:            If RF discovery is started,
    378 **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
    379 **                  happen before calling this function
    380 **
    381 ** Note:            NFA_EeUpdateNow() should be called after last NFA-EE
    382 **                  function to change the listen mode routing is called.
    383 **
    384 ** Returns          NFA_STATUS_OK if successfully initiated
    385 **                  NFA_STATUS_FAILED otherwise
    386 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    387 **
    388 *******************************************************************************/
    389 extern tNFA_STATUS NFA_EeRemoveAidRouting(uint8_t aid_len, uint8_t* p_aid);
    390 
    391 /*******************************************************************************
    392  **
    393  ** Function         NFA_EeAddSystemCodeRouting
    394  **
    395  ** Description      This function is called to add an system code entry in the
    396  **                  listen mode routing table in NFCC. The status of this
    397  **                  operation is reported as the NFA_EE_ADD_SYSCODE_EVT.
    398  **
    399  ** Note:            If RF discovery is started,
    400  **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
    401  **                  happen before calling this function
    402  **
    403  ** Note:            NFA_EeUpdateNow() should be called after last NFA-EE
    404  **                  function to change the listen mode routing is called.
    405  **
    406  ** Returns          NFA_STATUS_OK if successfully initiated
    407  **                  NFA_STATUS_FAILED otherwise
    408  **                  NFA_STATUS_INVALID_PARAM If bad parameter
    409  **
    410  *******************************************************************************/
    411 extern tNFA_STATUS NFA_EeAddSystemCodeRouting(uint16_t systemcode,
    412                                               tNFA_HANDLE ee_handle,
    413                                               tNFA_EE_PWR_STATE power_state);
    414 
    415 /*******************************************************************************
    416 **
    417 ** Function         NFA_EeRemoveSystemCodeRouting
    418 **
    419 ** Description      This function is called to remove the given System Code
    420 *based entry from
    421 **                  the listen mode routing table. The status of this operation
    422 *is reported
    423 **                  as the NFA_EE_REMOVE_SYSCODE_EVT.
    424 **
    425 ** Note:            If RF discovery is started,
    426 **                  NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
    427 **                  happen before calling this function
    428 **
    429 ** Note:            NFA_EeUpdateNow() should be called after last NFA-EE
    430 **                  function to change the listen mode routing is called.
    431 **
    432 ** Returns          NFA_STATUS_OK if successfully initiated
    433 **                  NFA_STATUS_FAILED otherwise
    434 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    435 **
    436 *******************************************************************************/
    437 extern tNFA_STATUS NFA_EeRemoveSystemCodeRouting(uint16_t systemcode);
    438 
    439 /*******************************************************************************
    440 **
    441 ** Function         NFA_EeGetLmrtRemainingSize
    442 **
    443 ** Description      This function is called to get remaining size of the
    444 **                  Listen Mode Routing Table.
    445 **                  The remaining size is reported in NFA_EE_REMAINING_SIZE_EVT
    446 **
    447 ** Returns          NFA_STATUS_OK if successfully initiated
    448 **                  NFA_STATUS_FAILED otherwise
    449 **
    450 *******************************************************************************/
    451 extern tNFA_STATUS NFA_EeGetLmrtRemainingSize(void);
    452 
    453 /*******************************************************************************
    454 **
    455 ** Function         NFA_EeUpdateNow
    456 **
    457 ** Description      This function is called to send the current listen mode
    458 **                  routing table and VS configuration to the NFCC (without
    459 **                  waiting for NFA_EE_ROUT_TIMEOUT_VAL).
    460 **
    461 **                  The status of this operation is
    462 **                  reported with the NFA_EE_UPDATED_EVT.
    463 **
    464 ** Returns          NFA_STATUS_OK if successfully initiated
    465 **                  NFA_STATUS_SEMANTIC_ERROR is update is currently in progress
    466 **                  NFA_STATUS_FAILED otherwise
    467 **
    468 *******************************************************************************/
    469 extern tNFA_STATUS NFA_EeUpdateNow(void);
    470 
    471 /*******************************************************************************
    472 **
    473 ** Function         NFA_EeConnect
    474 **
    475 ** Description      Open connection to an NFCEE attached to the NFCC
    476 **
    477 **                  The status of this operation is
    478 **                  reported with the NFA_EE_CONNECT_EVT.
    479 **
    480 ** Returns          NFA_STATUS_OK if successfully initiated
    481 **                  NFA_STATUS_FAILED otherwise
    482 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    483 **
    484 *******************************************************************************/
    485 extern tNFA_STATUS NFA_EeConnect(tNFA_HANDLE ee_handle, uint8_t ee_interface,
    486                                  tNFA_EE_CBACK* p_cback);
    487 
    488 /*******************************************************************************
    489 **
    490 ** Function         NFA_EeSendData
    491 **
    492 ** Description      Send data to the given NFCEE.
    493 **                  This function shall be called after NFA_EE_CONNECT_EVT is
    494 **                  reported and before NFA_EeDisconnect is called on the given
    495 **                  ee_handle.
    496 **
    497 ** Returns          NFA_STATUS_OK if successfully initiated
    498 **                  NFA_STATUS_FAILED otherwise
    499 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    500 **
    501 *******************************************************************************/
    502 extern tNFA_STATUS NFA_EeSendData(tNFA_HANDLE ee_handle, uint16_t data_len,
    503                                   uint8_t* p_data);
    504 
    505 /*******************************************************************************
    506 **
    507 ** Function         NFA_EeDisconnect
    508 **
    509 ** Description      Disconnect (if a connection is currently open) from an
    510 **                  NFCEE interface. The result of this operation is reported
    511 **                  with the NFA_EE_DISCONNECT_EVT.
    512 **
    513 ** Returns          NFA_STATUS_OK if successfully initiated
    514 **                  NFA_STATUS_FAILED otherwise
    515 **                  NFA_STATUS_INVALID_PARAM If bad parameter
    516 **
    517 *******************************************************************************/
    518 extern tNFA_STATUS NFA_EeDisconnect(tNFA_HANDLE ee_handle);
    519 
    520 #endif /* NFA_EE_API_H */
    521