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