1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 3e9629bad30a9f478b336ab46b8e6e02f7f87af46Evan Chu * Copyright (C) 2010-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 NFA Connection Handover, 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Broadcom's NFC application layer for mobile phones. 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFA_CHO_API_H 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_API_H 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfa_api.h" 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "ndef_utils.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/* Handover version */ 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_VERSION 0x12 /* version 1.2 */ 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_GET_MAJOR_VERSION(x) ((UINT8)(x) >> 4) 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_GET_MINOR_VERSION(x) ((UINT8)(x) & 0x0F) 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA Connection Handover callback events 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_REG_EVT 0x00 /* Registered */ 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_ACTIVATED_EVT 0x01 /* LLCP link activated */ 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_DEACTIVATED_EVT 0x02 /* LLCP link deactivated */ 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_CONNECTED_EVT 0x03 /* data link connected */ 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_DISCONNECTED_EVT 0x04 /* data link disconnected */ 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_REQUEST_EVT 0x05 /* AC information in "Hr" record */ 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_SELECT_EVT 0x06 /* AC information in "Hs" record */ 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_SEL_ERR_EVT 0x07 /* Received select with error */ 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_TX_FAIL_EVT 0x08 /* Cannot send message to peer */ 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_CHO_EVT; 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Data for NFA_CHO_ACTIVATED_EVT 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project BOOLEAN is_initiator; /* TRUE if local LLCP is initiator */ 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_CHO_ACTIVATED; 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA Connection Handover Carrier Power State */ 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_CPS_INACTIVE 0x00 /* Carrier is currently off */ 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_CPS_ACTIVE 0x01 /* Carrier is currently on */ 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_CPS_ACTIVATING 0x02 /* Activating carrier */ 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_CPS_UNKNOWN 0x03 /* Unknown */ 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_CHO_CPS; 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Data for Alternative Carrier Information */ 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_CPS cps; /* carrier power state */ 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 num_aux_data; /* number of Auxiliary NDEF records */ 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_CHO_AC_INFO; 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Device Role of Handover */ 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_ROLE_REQUESTER 0 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_ROLE_SELECTOR 1 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_ROLE_UNDECIDED 2 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_CHO_ROLE_TYPE; 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Data for NFA_CHO_CONNECTED_EVT 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_ROLE_TYPE initial_role; /* NFA_CHO_ROLE_REQUESTER if local initiated */ 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFA_CHO_ROLE_SELECTOR if remote initiated */ 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_CHO_CONNECTED; 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Disconnected reason */ 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_DISC_REASON_API_REQUEST 0 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_DISC_REASON_ALEADY_CONNECTED 1 98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_DISC_REASON_CONNECTION_FAIL 2 99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_DISC_REASON_PEER_REQUEST 3 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_DISC_REASON_LINK_DEACTIVATED 4 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_DISC_REASON_TIMEOUT 5 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_DISC_REASON_UNKNOWN_MSG 6 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_DISC_REASON_INVALID_MSG 7 104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_DISC_REASON_SEMANTIC_ERROR 8 105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_DISC_REASON_INTERNAL_ERROR 9 106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNFA_CHO_DISC_REASON; 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* 110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Data for NFA_CHO_DISCONNECTED_EVT 111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_DISC_REASON reason; /* disconnected reason */ 115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_CHO_DISCONNECTED; 116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Reference ID */ 118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 ref_len; 121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 ref_name[NFA_CHO_MAX_REF_NAME_LEN]; 122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_CHO_REF_ID; 123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Alternative Carrier records including carrier power state, carrier data reference and aux data reference */ 125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_CPS cps; /* carrier power state */ 128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_REF_ID carrier_data_ref; /* carrier data reference */ 129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 aux_data_ref_count; /* number of aux data */ 130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_REF_ID aux_data_ref[NFA_CHO_MAX_AUX_DATA_COUNT]; /* aux data reference */ 131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_CHO_AC_REC; 132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* 134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Data for NFA_CHO_REQUEST_EVT 135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Application may receive it while waiting for NFA_CHO_SELECT_EVT because of handover collision. 136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_STATUS status; 140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 num_ac_rec; /* number of Alternative Carrier records*/ 141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_AC_REC ac_rec[NFA_CHO_MAX_AC_INFO]; /* Alternative Carrier records */ 142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_ref_ndef; /* pointer of NDEF including AC records */ 143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 ref_ndef_len; /* length of NDEF */ 144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_CHO_REQUEST; 145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* 147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Data for NFA_CHO_SELECT_EVT 148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_STATUS status; 152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 num_ac_rec; /* number of Alternative Carrier records*/ 153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_AC_REC ac_rec[NFA_CHO_MAX_AC_INFO]; /* Alternative Carrier records */ 154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_ref_ndef; /* pointer of NDEF including AC records */ 155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 ref_ndef_len; /* length of NDEF */ 156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_CHO_SELECT; 157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Error reason */ 159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_ERROR_TEMP_MEM 0x01 160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_ERROR_PERM_MEM 0x02 161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_ERROR_CARRIER 0x03 162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* 164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Data for NFA_CHO_SEL_ERR_EVT 165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 error_reason; /* Error reason */ 169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 error_data; /* Error Data per reason */ 170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_CHO_SEL_ERR; 171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Union of all Connection Handover callback structures */ 173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef union 174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_STATUS status; /* NFA_CHO_REG_EVT */ 176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFA_CHO_DEACTIVATED_EVT */ 177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /* NFA_CHO_TX_FAIL_EVT */ 178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_ACTIVATED activated; /* NFA_CHO_ACTIVATED_EVT */ 179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_CONNECTED connected; /* NFA_CHO_CONNECTED_EVT */ 180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_DISCONNECTED disconnected; /* NFA_CHO_DISCONNECTED_EVT */ 181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_SELECT select; /* NFA_CHO_SELECT_EVT */ 182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_REQUEST request; /* NFA_CHO_REQUEST_EVT */ 183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_SEL_ERR sel_err; /* NFA_CHO_SEL_ERR_EVT */ 184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNFA_CHO_EVT_DATA; 185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFA Connection Handover callback */ 187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (tNFA_CHO_CBACK) (tNFA_CHO_EVT event, tNFA_CHO_EVT_DATA *p_data); 188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/***************************************************************************** 190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** External Function Declarations 191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*****************************************************************************/ 192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus 193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern "C" 194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_ChoRegister 200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to register callback function to receive 202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** connection handover events. 203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** On this registration, "urn:nfc:sn:handover" server will be 205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** registered on LLCP if enable_server is TRUE. 206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The result of the registration is reported with NFA_CHO_REG_EVT. 208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern tNFA_STATUS NFA_ChoRegister (BOOLEAN enable_server, 217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_CBACK *p_cback); 218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_ChoDeregister 222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to deregister callback function from NFA 224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Connection Handover Application. 225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** If this is the valid deregistration, NFA Connection Handover 227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Application will close the service with "urn:nfc:sn:handover" 228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** on LLCP and deregister NDEF type handler if any. 229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Note: If RF discovery is started, NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT 231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** should happen before calling this function 232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern tNFA_STATUS NFA_ChoDeregister (void); 238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_ChoConnect 242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to create data link connection to 244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Connection Handover server on peer device. 245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** It must be called after receiving NFA_CHO_ACTIVATED_EVT. 247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_CHO_CONNECTED_EVT will be returned if successful. 248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Otherwise, NFA_CHO_DISCONNECTED_EVT will be returned. 249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern tNFA_STATUS NFA_ChoConnect (void); 255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_ChoDisconnect 259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to disconnect data link connection with 261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Connection Handover server on peer device. 262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_CHO_DISCONNECTED_EVT will be returned. 264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern tNFA_STATUS NFA_ChoDisconnect (void); 270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_ChoSendHr 274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to send Handover Request Message with 276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Handover Carrier records or Alternative Carrier records. 277e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** It must be called after receiving NFA_CHO_CONNECTED_EVT. 279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NDEF may include one or more Handover Carrier records or Alternative 281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Carrier records with auxiliary data. 282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The records in NDEF must be matched with tNFA_CHO_AC_INFO in order. 283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Payload ID must be unique and Payload ID length must be less than 284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** or equal to NFA_CHO_MAX_REF_NAME_LEN. 285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The alternative carrier information of Handover Select record 287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** will be sent to application by NFA_CHO_SELECT_EVT. Application 288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** may receive NFA_CHO_REQUEST_EVT because of handover collision. 289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern tNFA_STATUS NFA_ChoSendHr (UINT8 num_ac_info, 295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_AC_INFO *p_ac_info, 296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_ndef, 297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 ndef_len); 298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_ChoSendHs 302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to send Handover Select message with 304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Alternative Carrier records as response to Handover Request 305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** message. 306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NDEF may include one or more Alternative Carrier records with 308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** auxiliary data. 309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The records in NDEF must be matched with tNFA_CHO_AC_INFO in order. 310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Payload ID must be unique and Payload ID length must be less than 311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** or equal to NFA_CHO_MAX_REF_NAME_LEN. 312e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 314e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 315e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 316e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 317e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern tNFA_STATUS NFA_ChoSendHs (UINT8 num_ac_info, 318e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNFA_CHO_AC_INFO *p_ac_info, 319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *p_ndef, 320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 ndef_len); 321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 324e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_ChoSendSelectError 325e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 326e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to send Error record to indicate failure 327e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** to process the most recently received Handover Request message. 328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** error_reason : NFA_CHO_ERROR_TEMP_MEM 330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_CHO_ERROR_PERM_MEM 331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_CHO_ERROR_CARRIER 332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 333e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns NFA_STATUS_OK if successfully initiated 334e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NFA_STATUS_FAILED otherwise 335e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 336e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern tNFA_STATUS NFA_ChoSendSelectError (UINT8 error_reason, 338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT32 error_data); 339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_ChoSetTraceLevel 343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 344e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function sets the trace level for CHO. If called with 345e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** a value of 0xFF, it simply returns the current trace level. 346e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 347e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns The new or current trace level 348e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 349e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern UINT8 NFA_ChoSetTraceLevel (UINT8 new_level); 351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (defined (NFA_CHO_TEST_INCLUDED) && (NFA_CHO_TEST_INCLUDED == TRUE)) 353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_TEST_VERSION 0x01 355e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFA_CHO_TEST_RANDOM 0x02 356e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************* 357e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 358e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Function NFA_ChoSetTestParam 359e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 360e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description This function is called to set test parameters. 361e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** 362e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/ 363e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectNFC_API extern void NFA_ChoSetTestParam (UINT8 test_enable, 364e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 test_version, 365e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 test_random_number); 366e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 367e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 368e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus 369e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 370e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 371e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 372e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* NFA_CHO_API_H */ 373e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 374