1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 35c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen * Copyright (C) 1999-2013 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 file contains the definition from NCI specification 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_NCI_DEFS_H 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_NCI_DEFS_H 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern "C" { 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_BRCM_CO_ID 0x2E 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define the message header size for all NCI Commands and Notifications. 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_HDR_SIZE 3 /* per NCI spec */ 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DATA_HDR_SIZE 3 /* per NCI spec */ 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MAX_PAYLOAD_SIZE 0xFE 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MAX_CTRL_SIZE 0xFF/* max control message size */ 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CTRL_INIT_SIZE 32 /* initial NFCC control payload size */ 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MAX_VSC_SIZE 0xFF 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_VSC_MSG_HDR_SIZE 12 /* NCI header (3) + callback function pointer(8; use 8 to be safe) + HCIT (1 byte) */ 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_TL_SIZE 2 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_ISO_DEP_MAX_INFO 253 /* Max frame size (256) - Prologue (1) - Epilogue (2) in ISO-DEP, CID and NAD are not used*/ 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFC_DEP_MAX_DATA 251 /* Max payload (254) - Protocol Header (3) in NFC-DEP, DID and NAD are not used */ 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NCI Command and Notification Format: 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 3 byte message header: 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * byte 0: MT PBF GID 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * byte 1: OID 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * byte 2: Message Length */ 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* MT: Message Type (byte 0) */ 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MT_MASK 0xE0 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MT_SHIFT 5 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MT_DATA 0x00 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MT_CMD 1 /* (NCI_MT_CMD << NCI_MT_SHIFT) = 0x20 */ 59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MT_RSP 2 /* (NCI_MT_RSP << NCI_MT_SHIFT) = 0x40 */ 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MT_NTF 3 /* (NCI_MT_NTF << NCI_MT_SHIFT) = 0x60 */ 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MT_CFG 4 /* (NCI_MT_CFG << NCI_MT_SHIFT) = 0x80 */ 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MTS_CMD 0x20 64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MTS_RSP 0x40 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MTS_NTF 0x60 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MTS_CFG 0x80 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NTF_BIT 0x80 /* the tNFC_VS_EVT is a notification */ 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RSP_BIT 0x40 /* the tNFC_VS_EVT is a response */ 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* for internal use only; not from specification */ 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* the following 2 flags are used in layer_specific for fragmentation/reassembly of data packets */ 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LS_DATA 0x00 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LS_DATA_PBF 0x01 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* PBF: Packet Boundary Flag (byte 0) */ 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PBF_MASK 0x10 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PBF_SHIFT 4 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PBF_NO_OR_LAST 0x00 /* not fragmented or last fragment */ 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PBF_ST_CONT 0x10 /* start or continuing fragment */ 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* GID: Group Identifier (byte 0) */ 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_GID_MASK 0x0F 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_GID_SHIFT 0 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_GID_CORE 0x00 /* 0000b NCI Core group */ 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_GID_RF_MANAGE 0x01 /* 0001b RF Management group */ 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_GID_EE_MANAGE 0x02 /* 0010b NFCEE Management group */ 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_GID_PROP 0x0F /* 1111b Proprietary */ 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* 0111b - 1110b RFU */ 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* OID: Opcode Identifier (byte 1) */ 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_OID_MASK 0x3F 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_OID_SHIFT 0 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* For routing */ 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DH_ID 0 /* for DH */ 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* To identify the loopback test */ 98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_TEST_ID 0xFE/* for loopback test */ 99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Destination Type */ 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DEST_TYPE_NFCC 1 /* NFCC - loopback */ 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DEST_TYPE_REMOTE 2 /* Remote NFC Endpoint */ 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DEST_TYPE_NFCEE 3 /* NFCEE */ 104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* builds byte0 of NCI Command and Notification packet */ 106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_BLD_HDR0(p, mt, gid) \ 107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *(p)++ = (UINT8) (((mt) << NCI_MT_SHIFT) | (gid)); 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_PBLD_HDR0(p, mt, pbf, gid) \ 110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *(p)++ = (UINT8) (((mt) << NCI_MT_SHIFT) | ((pbf) << NCI_PBF_SHIFT) | (gid)); 111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* builds byte1 of NCI Command and Notification packet */ 113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_BLD_HDR1(p, oid) \ 114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *(p)++ = (UINT8) (((oid) << NCI_OID_SHIFT)); 115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* parse byte0 of NCI packet */ 117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_PRS_HDR0(p, mt, pbf, gid) \ 118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project mt = (*(p) & NCI_MT_MASK) >> NCI_MT_SHIFT; \ 119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pbf = (*(p) & NCI_PBF_MASK) >> NCI_PBF_SHIFT; \ 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project gid = *(p)++ & NCI_GID_MASK; 121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* parse MT and PBF bits of NCI packet */ 123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_PRS_MT_PBF(p, mt, pbf) \ 124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project mt = (*(p) & NCI_MT_MASK) >> NCI_MT_SHIFT; \ 125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pbf = (*(p) & NCI_PBF_MASK) >> NCI_PBF_SHIFT; 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* parse byte1 of NCI Cmd/Ntf */ 128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_PRS_HDR1(p, oid) \ 129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project oid = (*(p) & NCI_OID_MASK); (p)++; 130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NCI Data Format: 132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * byte 0: MT(0) PBF CID 133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * byte 1: RFU 134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * byte 2: Data Length */ 135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* CID: Connection Identifier (byte 0) 1-0xF Dynamically assigned (by NFCC), 0 is predefined */ 136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CID_MASK 0x0F 137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* builds 3-byte message header of NCI Data packet */ 139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DATA_BLD_HDR(p, cid, len) \ 140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *(p)++ = (UINT8) (cid); *(p)++ = 0; *(p)++ = (UINT8) (len); 141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DATA_PBLD_HDR(p, pbf, cid, len) \ 143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *(p)++ = (UINT8) (((pbf) << NCI_PBF_SHIFT) | (cid)); *(p)++=0; *(p)++ = (len); 144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DATA_PRS_HDR(p, pbf, cid, len) \ 146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project (pbf) = (*(p) & NCI_PBF_MASK) >> NCI_PBF_SHIFT; (cid) = (*(p) & NCI_CID_MASK); p++; p++; (len) = *(p)++; 147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Logical target ID 0x01-0xFE */ 150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Status Codes */ 154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_OK 0x00 155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_REJECTED 0x01 156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_MESSAGE_CORRUPTED 0x02 157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_BUFFER_FULL 0xE0 158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_FAILED 0x03 159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_NOT_INITIALIZED 0x04 160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_SYNTAX_ERROR 0x05 161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_SEMANTIC_ERROR 0x06 162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_UNKNOWN_GID 0x07 163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_UNKNOWN_OID 0x08 164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_INVALID_PARAM 0x09 165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_MSG_SIZE_TOO_BIG 0x0A 166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* discovery */ 167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_ALREADY_STARTED 0xA0 168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_ACTIVATION_FAILED 0xA1 169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_TEAR_DOWN 0xA2 170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* RF Interface */ 171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_RF_TRANSMISSION_ERR 0xB0 172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_RF_PROTOCOL_ERR 0xB1 173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_TIMEOUT 0xB2 174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NFCEE Interface */ 175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_EE_INTF_ACTIVE_FAIL 0xC0 176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_EE_TRANSMISSION_ERR 0xC1 177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_EE_PROTOCOL_ERR 0xC2 178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_STATUS_EE_TIMEOUT 0xC3 179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNCI_STATUS; 182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* RF Technologies */ 184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RF_TECHNOLOGY_A 0x00 185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RF_TECHNOLOGY_B 0x01 186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RF_TECHNOLOGY_F 0x02 187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RF_TECHNOLOGY_15693 0x03 188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Bit Rates */ 190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_BIT_RATE_106 0x00/* 106 kbit/s */ 191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_BIT_RATE_212 0x01/* 212 kbit/s */ 192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_BIT_RATE_424 0x02/* 424 kbit/s */ 193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_BIT_RATE_848 0x03/* 848 Kbit/s */ 194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_BIT_RATE_1696 0x04/* 1696 Kbit/s*/ 195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_BIT_RATE_3392 0x05/* 3392 Kbit/s*/ 196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_BIT_RATE_6784 0x06/* 6784 Kbit/s*/ 197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * NCI Core Group Opcode - 0 200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_CORE_RESET 0 202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_CORE_INIT 1 203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_CORE_SET_CONFIG 2 204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_CORE_GET_CONFIG 3 205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_CORE_CONN_CREATE 4 206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_CORE_CONN_CLOSE 5 207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_CORE_CONN_CREDITS 6 208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_CORE_GEN_ERR_STATUS 7 209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_CORE_INTF_ERR_STATUS 8 210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * RF MANAGEMENT Group Opcode - 1 213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_RF_DISCOVER_MAP 0 215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_RF_SET_ROUTING 1 216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_RF_GET_ROUTING 2 217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_RF_DISCOVER 3 218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_RF_DISCOVER_SELECT 4 219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_RF_INTF_ACTIVATED 5 220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_RF_DEACTIVATE 6 221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_RF_FIELD 7 222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_RF_T3T_POLLING 8 223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_RF_EE_ACTION 9 224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_RF_EE_DISCOVERY_REQ 10 225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_RF_PARAMETER_UPDATE 11 226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * NFCEE MANAGEMENT Group Opcode - 2 229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_NFCEE_DISCOVER 0 231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MSG_NFCEE_MODE_SET 1 232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * NCI Proprietary Group - F 235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * NCI Core Group Params 239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_RESET 0x01 241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_RESET_RSP 0x03 242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_RESET_NTF 0x02 243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_INIT 0x00 /* no payload */ 245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_INIT_RSP 0x11 246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_INIT_RSP_OFFSET_NUM_INTF 0x05 247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_SET_CONFIG_RSP 0x02 /* Status (1 octet) and number of params */ 249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* octet 0 */ 252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_FEAT_DISCOVERY_FREG 0x00000001 253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_FEAT_DISCOVERY_CFGM 0x00000006 254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* octet 1 */ 255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_FEAT_TECHNOLOGY_ROUTING 0x00000200 256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_FEAT_PROTOCOL_ROUTING 0x00000400 257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_FEAT_AID_ROUTING 0x00000800 258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* octet 2 */ 259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_FEAT_BATTERY_OFF_MD 0x00010000 260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_FEAT_SWITCH_OFF_MD 0x00020000 261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* supported Interfaces */ 264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_SUP_INTF_FRAME 0x0001 265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_SUP_INTF_ISO_DEP 0x0002 266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_SUP_INTF_NFC_DEP 0x0004 267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_CON_CREATE 0x02 /* handle, num_tlv, (tlv) */ 271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_CON_CREATE_RSP 0x04 /* status, size, credits, conn_id */ 272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CON_CREATE_TAG_EE_INTF 0x00 /* old */ 273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CON_CREATE_TAG_RF_DISC_ID 0x00 274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CON_CREATE_TAG_NFCEE_VAL 0x01 275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_CON_CLOSE 0x01 /* Conn ID (1 octet) */ 277e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_CON_CLOSE_RSP 0x01 /* Status (1 octet) */ 278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_RF_FIELD_NTF 0x01 /* RF Field Status (1 octet) */ 280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RESET_TYPE_KEEP_CFG 0x00 /* Keep the NCI configuration (if possible) and perform NCI initialization. */ 282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RESET_TYPE_RESET_CFG 0x01 /* Reset the NCI configuration, and perform NCI initialization. */ 283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RESET_STATUS_KEPT_CFG 0x00 /* NCI Configuration has been kept */ 285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RESET_STATUS_RESET_CFG 0x01 /* NCI Configuration has been reset */ 286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RF_STS_NO_REMOTE 0x00 /* No operating field generated by remote device */ 288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RF_STS_REMOTE 0x01 /* Operating field generated by remote device */ 289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_SIZE_DISCOVER_NFCEE 0x01 /* Discovery Action (1 octet) */ 292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_SIZE_DISCOVER_NFCEE_RSP 0x02 /* Status (1 octet)Number of NFCEEs (1 octet) */ 293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_ACTION_DISABLE 0 295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_ACTION_ENABLE 1 296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_EE_DISCOVER_REQ_TYPE_LISTEN 0x01 298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_EE_DISCOVER_REQ_TYPE_POLL 0x02 299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RF_PARAM_ID_TECH_N_MODE 0x00 /* RF Technology and Mode */ 301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RF_PARAM_ID_TX_BIT_RATE 0x01 /* Transmit Bit Rate */ 302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RF_PARAM_ID_RX_BIT_RATE 0x02 /* Receive Bit Rate */ 303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RF_PARAM_ID_B_DATA_EX_PARAM 0x03 /* B Data Exchange config param */ 304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_INTERFACE_APDU 0x00 307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_INTERFACE_HCI_ACCESS 0x01 308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_INTERFACE_T3T 0x02 309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_INTERFACE_TRANSPARENT 0x03 310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_INTERFACE_PROPRIETARY 0x80 311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 312e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_STS_CONN_ACTIVE 0x00 313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_STS_CONN_INACTIVE 0x01 314e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_STS_REMOVED 0x02 315e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NUM_NFCEE_STS 3 316e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 317e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_NFCEE_MODE_SET 0x02 /* Logical Target ID (1 octet)NFCEE Mode (1 octet) */ 318e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_CORE_PARAM_SIZE_NFCEE_MODE_SET_RSP 0x01 /* Status (1 octet) */ 319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_MD_DEACTIVATE 0x00 /* Deactivate the connected NFCEE */ 321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_MD_ACTIVATE 0x01 /* Activate the connected NFCEE */ 322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NUM_NFCEE_MODE 2 323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 324e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 325e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * NCI Deactivation Type 326e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 327e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DEACTIVATE_TYPE_IDLE 0 /* Idle Mode */ 328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DEACTIVATE_TYPE_SLEEP 1 /* Sleep Mode */ 329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DEACTIVATE_TYPE_SLEEP_AF 2 /* Sleep_AF Mode */ 330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DEACTIVATE_TYPE_DISCOVERY 3 /* Discovery */ 331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 333e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * NCI Deactivation Reasons 334e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 335e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DEACTIVATE_REASON_DH_REQ 0 /* DH Request */ 336e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DEACTIVATE_REASON_ENDPOINT_REQ 1 /* Endpoint Request */ 337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DEACTIVATE_REASON_RF_LINK_LOSS 2 /* RF Link Loss */ 338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DEACTIVATE_REASON_NFCB_BAD_AFI 3 /* NFC-B Bad AFI */ 339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project /********************************************** 341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * NCI Interface Mode 342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_INTERFACE_MODE_POLL 1 344e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_INTERFACE_MODE_LISTEN 2 345e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_INTERFACE_MODE_POLL_N_LISTEN 3 346e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 347e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 348e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * NCI Interface Types 349e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_INTERFACE_EE_DIRECT_RF 0 351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_INTERFACE_FRAME 1 352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_INTERFACE_ISO_DEP 2 353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_INTERFACE_NFC_DEP 3 354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_INTERFACE_MAX NCI_INTERFACE_NFC_DEP 355e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_INTERFACE_FIRST_VS 0x80 356e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNCI_INTF_TYPE; 357e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 358e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 359e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * NCI RF Management / DISCOVERY Group Params 360e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 361e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_PARAM_SIZE_RSP 0x01 362e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 363e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_PARAM_SIZE_SELECT 0x03 /* ID, protocol, interface */ 364e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_PARAM_SIZE_SELECT_RSP 0x01 /* Status (1 octet) */ 365e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_PARAM_SIZE_STOP 0x00 /* */ 366e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_PARAM_SIZE_STOP_RSP 0x01 /* Status (1 octet) */ 367e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_PARAM_SIZE_DEACT 0x01 /* type */ 368e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_PARAM_SIZE_DEACT_RSP 0x01 /* Status (1 octet) */ 369e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_PARAM_SIZE_DEACT_NTF 0x01 /* type */ 370e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 371e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 372e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Supported Protocols 373e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 374e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PROTOCOL_UNKNOWN 0x00 375e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PROTOCOL_T1T 0x01 376e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PROTOCOL_T2T 0x02 377e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PROTOCOL_T3T 0x03 378e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PROTOCOL_ISO_DEP 0x04 379e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PROTOCOL_NFC_DEP 0x05 380e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 381e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Proprietary Protocols 382e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 383e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NCI_PROTOCOL_18092_ACTIVE 384e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PROTOCOL_18092_ACTIVE 0x80 385e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 386e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NCI_PROTOCOL_B_PRIME 387e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PROTOCOL_B_PRIME 0x81 388e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 389e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NCI_PROTOCOL_DUAL 390e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PROTOCOL_DUAL 0x82 391e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 392e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NCI_PROTOCOL_15693 393e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PROTOCOL_15693 0x83 394e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 395e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NCI_PROTOCOL_KOVIO 396e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PROTOCOL_KOVIO 0x8a 397e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 398e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 399e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 400e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Discovery Types/Detected Technology and Mode */ 401e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_POLL_A 0x00 402e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_POLL_B 0x01 403e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_POLL_F 0x02 404e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_POLL_A_ACTIVE 0x03 405e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_POLL_F_ACTIVE 0x05 406e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_POLL_B_PRIME 0x74 407e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_POLL_KOVIO 0x77 408e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_LISTEN_A 0x80 409e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_LISTEN_B 0x81 410e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_LISTEN_F 0x82 411e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_LISTEN_A_ACTIVE 0x83 412e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE 0x85 413e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_LISTEN_B_PRIME 0xF4 414e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_POLL_ISO15693 0x06 415e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_LISTEN_ISO15693 0x86 416e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVERY_TYPE_MAX NCI_DISCOVERY_TYPE_LISTEN_ISO15693 417e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 418e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tNCI_DISCOVERY_TYPE; 419e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 420e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_EE_TRIG_7816_SELECT 0x00 421e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_EE_TRIG_RF_PROTOCOL 0x01 422e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_EE_TRIG_RF_TECHNOLOGY 0x02 423e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_EE_TRIG_APP_INIT 0x10 424e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 425e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_EE_ACT_TAG_AID 0xC0 /* AID */ 426e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_EE_ACT_TAG_PROTO 0xC1 /* RF protocol */ 427e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_EE_ACT_TAG_TECH 0xC2 /* RF technology */ 428e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_EE_ACT_TAG_DATA 0xC3 /* hex data for app */ 429e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_EE_ACT_TAG_DEBUG 0xC4 /* debug trace */ 430e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 431e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_ROUTE_TAG_TECH 0x00 /* Technology based routing */ 432e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_ROUTE_TAG_PROTO 0x01 /* Protocol based routing */ 433e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_ROUTE_TAG_AID 0x02 /* AID routing */ 434e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 435e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_ROUTE_PWR_STATE_ON 0x01 /* The device is on */ 436e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_ROUTE_PWR_STATE_SWITCH_OFF 0x02 /* The device is switched off */ 437e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_ROUTE_PWR_STATE_BATT_OFF 0x04 /* The device's battery is removed */ 438e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 439e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_TAG_HW_ID 0x00 /* Hardware / Registration Identification */ 440e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_TAG_ATR_BYTES 0x01 /* ATR Bytes */ 441e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_TAG_T3T_INFO 0x02 /* T3T Command Set Interface Supplementary Info */ 442e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCEE_TAG_HCI_HOST_ID 0xA0 /* HCI host ID */ 443e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 444e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_NTF_LAST 0x00 445e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_NTF_LAST_ABORT 0x01 446e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_NTF_MORE 0x02 447e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 448e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 449e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NCI RF Management Group Params */ 450e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RF_PARAM_SIZE_T3T_POLLING 0x04 /* System Code, RC, TSN */ 451e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 452e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 453e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * NCI Parameter IDs 454e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 455e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 456e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_TOTAL_DURATION 0x00 457e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_CON_DEVICES_LIMIT 0x01 458e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_PA_BAILOUT 0x08 459e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_PB_AFI 0x10 460e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_PB_BAILOUT 0x11 461e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_PB_ATTRIB_PARAM1 0x12 462e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_PF_BIT_RATE 0x18 463e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_PB_H_INFO 0x20 464e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_PI_BIT_RATE 0x21 465e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 466e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_BITR_NFC_DEP 0x28 467e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_ATR_REQ_GEN_BYTES 0x29 468e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_ATR_REQ_CONFIG 0x2A 469e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 470e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LA_BIT_FRAME_SDD 0x30 471e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LA_PLATFORM_CONFIG 0x31 472e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LA_SEL_INFO 0x32 473e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LA_NFCID1 0x33 474e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LB_SENSB_INFO 0x38 475e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LB_NFCID0 0x39 476e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LB_APPDATA 0x3A 477e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LB_SFGI 0x3B 478e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LB_ADC_FO 0x3C 479e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LB_PROTOCOL NCI_PARAM_ID_LB_SENSB_INFO 480e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 481e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID1 0x40 482e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID2 0x41 483e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID3 0x42 484e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID4 0x43 485e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID5 0x44 486e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID6 0x45 487e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID7 0x46 488e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID8 0x47 489e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID9 0x48 490e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID10 0x49 491e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID11 0x4A 492e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID12 0x4B 493e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID13 0x4C 494e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID14 0x4D 495e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID15 0x4E 496e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_ID16 0x4F 497e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_PROTOCOL 0x50 498e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_PMM 0x51 499e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_MAX 0x52 /* max num of LF_T3T_ID supported by NFCC (1 for now) */ 500e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_T3T_FLAGS2 0x53 501e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LF_CON_BITR_F 0x54 502e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_FWI 0x58 503e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LA_HIST_BY 0x59 504e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LB_H_INFO_RSP 0x5A 505e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_LI_BIT_RATE 0x5B 506e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 507e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_WT 0x60 508e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_ATR_RES_GEN_BYTES 0x61 509e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_ATR_RSP_CONFIG 0x62 510e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 511e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_RF_FIELD_INFO 0x80 512e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_RF_NFCEE_ACTION 0x81 513e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_ID_NFC_DEP_OP 0x82 514e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 515e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 516e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 517e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* NCI_PARAM_ID_HOST_LISTEN_MASK (byte1 for DH, byte2 for UICC) */ 518e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LISTEN_MASK_A 0x01 /* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_A_PASSIVE & 0x0F)) */ 519e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LISTEN_MASK_B 0x02 /* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_B_PASSIVE & 0x0F)) */ 520e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LISTEN_MASK_F 0x04 /* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_F_PASSIVE & 0x0F)) */ 521e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LISTEN_MASK_A_ACTIVE 0x08 /* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_A_ACTIVE & 0x0F)) */ 522e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LISTEN_MASK_B_PRIME 0x10 /* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_B_PRIME & 0x0F)) */ 523e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LISTEN_MASK_F_ACTIVE 0x20 /* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE & 0x0F)) */ 524e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LISTEN_MASK_ISO15693 0x40 /* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_ISO15693 & 0x0F)) */ 525e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 526e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Type A Parameters */ 527e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_PLATFORM_T1T 0x0C 528e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_SEL_INFO_ISODEP 0x20 529e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_SEL_INFO_NFCDEP 0x40 530e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************** 531e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * NCI Parameter ID Lens 532e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project **********************************************/ 533e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_TOTAL_DURATION 2 534e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 535e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_PA_FSDI 1 536e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 537e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_LA_BIT_FRAME_SDD 1 538e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_LA_PLATFORM_CONFIG 1 539e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_LA_SEL_INFO 1 540e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 541e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_LB_SENSB_INFO 1 542e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_LB_NFCID0 4 543e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_LB_APPDATA 4 544e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_LB_ADC_FO 1 545e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 546e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_LF_PROTOCOL 1 547e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_LF_T3T_FLAGS2 2 548e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_LF_T3T_PMM 8 549e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_LF_T3T_ID 10 550e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 551e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_FWI 1 552e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_PARAM_LEN_WT 1 553e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* GEN_BYTES - variable */ 554e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 555e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Listen protocol bits - NCI_PARAM_ID_LF_PROTOCOL and NCI_PARAM_ID_LB_SENSB_INFO */ 556e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LISTEN_PROTOCOL_ISO_DEP 0x01 557e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LISTEN_PROTOCOL_NFC_DEP 0x02 558e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 559e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_DISCOVER_PARAM_SIZE_TEST_RF 0x06 560e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 561e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 562e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* LF_T3T_FLAGS2 listen bits all-disabled definition */ 563e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LF_T3T_FLAGS2_ALL_DISABLED 0x0000 564e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_LF_T3T_FLAGS2_ID1_ENABLED 0x0001 565e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 566e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 567e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 568e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 addr; 569e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 len; 570e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *data; 571e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} NCIP_T1T_SETMEM_CMD_t; 572e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 573e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 574e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 575e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 status; 576e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} NCIP_T1T_SETMEM_RSP_t; 577e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 578e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 579e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 580e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT16 addr; 581e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} NCIP_T1T_GETMEM_CMD_t; 582e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 583e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 584e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 585e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 status; 586e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 *data; 587e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} NCIP_T1T_GETMEM_RSP_t; 588e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 589e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 590e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 591e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 hr0; 592e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 hr1; 593e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} NCIP_T1T_SETHR_CMD_t; 594e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 595e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 596e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 597e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 status; 598e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} NCIP_T1T_SETHR_RSP_t; 599e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 600e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 601e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NCI_GET_CMD_BUF 602e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (!defined (HCI_USE_VARIABLE_SIZE_CMD_BUF) || (HCI_USE_VARIABLE_SIZE_CMD_BUF == FALSE)) 603e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Allocate fixed-size buffer from HCI_CMD_POOL (default case) */ 604e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_GET_CMD_BUF(paramlen) ((BT_HDR *) GKI_getpoolbuf (NFC_NCI_POOL_ID)) 605e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 606e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Allocate smallest possible buffer (for platforms with limited RAM) */ 607e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_GET_CMD_BUF(paramlen) ((BT_HDR *) GKI_getbuf ((UINT16) (BT_HDR_SIZE + NCI_MSG_HDR_SIZE + NCI_MSG_OFFSET_SIZE + (paramlen)))) 608e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 609e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* NCI_GET_CMD_BUF */ 610e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 611e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 612e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MAX_AID_LEN 16 613e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 614e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 615e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 616e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 617e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 type; 618e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 frequency; 619e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_DISCOVER_PARAMS; 620e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 621e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 622e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 623e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 protocol; 624e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 mode; 625e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 intf_type; 626e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_DISCOVER_MAPS; 627e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 628e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCID1_MAX_LEN 10 6295c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define NCI_T1T_HR_LEN 2 630e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 631e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 632e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 sens_res[2];/* SENS_RES Response (ATQA). Available after Technology Detection */ 6335c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen UINT8 nfcid1_len; /* 4, 7 or 10 */ 634e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 nfcid1[NCI_NFCID1_MAX_LEN]; /* AKA NFCID1 */ 635e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 sel_rsp; /* SEL_RSP (SAK) Available after Collision Resolution */ 6365c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen UINT8 hr_len; /* 2, if T1T HR0/HR1 is reported */ 6375c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen UINT8 hr[NCI_T1T_HR_LEN]; /* T1T HR0 is in hr[0], HR1 is in hr[1] */ 638e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_RF_PA_PARAMS; 639e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 640e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 641e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MAX_SENSB_RES_LEN 12 642e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 643e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 644e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 sensb_res_len;/* Length of SENSB_RES Response (Byte 2 - Byte 12 or 13) Available after Technology Detection */ 645e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 sensb_res[NCI_MAX_SENSB_RES_LEN]; /* SENSB_RES Response (ATQ) */ 646e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_RF_PB_PARAMS; 647e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 648e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MAX_SENSF_RES_LEN 18 649e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_SENSF_RES_OFFSET_PAD0 8 650e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_SENSF_RES_OFFSET_RD 16 651e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_NFCID2_LEN 8 652e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_T3T_PMM_LEN 8 653e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_SYSTEMCODE_LEN 2 654e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_RF_F_UID_LEN NCI_NFCID2_LEN 655e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MRTI_CHECK_INDEX 13 656e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MRTI_UPDATE_INDEX 14 657e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 658e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 659e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 bit_rate;/* NFC_BIT_RATE_212 or NFC_BIT_RATE_424 */ 660e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 sensf_res_len;/* Length of SENSF_RES Response (Byte 2 - Byte 17 or 19) Available after Technology Detection */ 661e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 sensf_res[NCI_MAX_SENSF_RES_LEN]; /* SENSB_RES Response */ 662e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_RF_PF_PARAMS; 663e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 664e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 665e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 666e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 nfcid2[NCI_NFCID2_LEN]; /* NFCID2 generated by the Local NFCC for NFC-DEP Protocol.Available for Frame Interface */ 667e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_RF_LF_PARAMS; 668e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 669e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 670e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 671e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_DISCOVERY_TYPE mode; 672e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project union 673e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 674e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_RF_PA_PARAMS pa; 675e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_RF_PB_PARAMS pb; 676e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_RF_PF_PARAMS pf; 677e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_RF_LF_PARAMS lf; 678e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } param; /* Discovery Type specific parameters */ 679e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_RF_TECH_PARAMS; 680e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 681e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 682e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NCI_MAX_ATS_LEN 683e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MAX_ATS_LEN 60 684e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 685e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NCI_MAX_HIS_BYTES_LEN 686e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MAX_HIS_BYTES_LEN 50 687e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 688e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NCI_MAX_GEN_BYTES_LEN 689e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MAX_GEN_BYTES_LEN 48 690e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 691e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 692e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_ATS_T0_INDEX 0 693e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_ATS_TC_MASK 0x40 694e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_ATS_TB_MASK 0x20 695e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_ATS_TA_MASK 0x10 696e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_ATS_FSCI_MASK 0x0F 697e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 698e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 699e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 ats_res_len; /* Length of ATS RES */ 700e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 ats_res[NCI_MAX_ATS_LEN]; /* ATS RES defined in [DIGPROT] */ 701e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_INTF_PA_ISO_DEP; 702e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 703e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 704e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 705e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 rats; /* RATS */ 706e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_INTF_LA_ISO_DEP; 707e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 708e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_P_GEN_BYTE_INDEX 15 709e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_L_GEN_BYTE_INDEX 14 710e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_L_NFC_DEP_TO_INDEX 13 711e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 712e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 713e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 atr_res_len; /* Length of ATR_RES */ 714e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 atr_res[NCI_MAX_ATS_LEN]; /* ATR_RES (Byte 3 - Byte 17+n) as defined in [DIGPROT] */ 715e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_INTF_PA_NFC_DEP; 716e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 717e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Note: keep tNCI_INTF_PA_NFC_DEP data member in the same order as tNCI_INTF_LA_NFC_DEP */ 718e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 719e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 720e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 atr_req_len; /* Length of ATR_REQ */ 721e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 atr_req[NCI_MAX_ATS_LEN]; /* ATR_REQ (Byte 3 - Byte 18+n) as defined in [DIGPROT] */ 722e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_INTF_LA_NFC_DEP; 723e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef tNCI_INTF_LA_NFC_DEP tNCI_INTF_LF_NFC_DEP; 724e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef tNCI_INTF_PA_NFC_DEP tNCI_INTF_PF_NFC_DEP; 725e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 726e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NCI_MAX_ATTRIB_LEN (10 + NCI_MAX_GEN_BYTES_LEN) 727e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 728e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 729e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 730e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 attrib_res_len; /* Length of ATTRIB RES */ 731e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 attrib_res[NCI_MAX_ATTRIB_LEN]; /* ATTRIB RES as defined in [DIGPROT] */ 732e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_INTF_PB_ISO_DEP; 733e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 734e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 735e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 736e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 attrib_req_len; /* Length of ATTRIB REQ */ 737e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 attrib_req[NCI_MAX_ATTRIB_LEN]; /* ATTRIB REQ (Byte 2 - Byte 10+k) as defined in [DIGPROT] */ 738e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_INTF_LB_ISO_DEP; 739e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 740e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 741e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 742e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_INTF_TYPE type; /* Interface Type 1 Byte See Table 67 */ 743e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project union 744e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project { 745e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_INTF_LA_ISO_DEP la_iso; 746e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_INTF_PA_ISO_DEP pa_iso; 747e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_INTF_LB_ISO_DEP lb_iso; 748e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_INTF_PB_ISO_DEP pb_iso; 749e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_INTF_LA_NFC_DEP la_nfc; 750e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_INTF_PA_NFC_DEP pa_nfc; 751e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_INTF_LF_NFC_DEP lf_nfc; 752e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_INTF_PF_NFC_DEP pf_nfc; 753e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } intf_param; /* Activation Parameters 0 - n Bytes */ 754e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_INTF_PARAMS; 755e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 756e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* 757e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** HCI Network CMD/NTF structure 758e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 759e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 760e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 761e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 762e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 mode; /* Type A card emulation enabled indicator, 0x02:enabled */ 763e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 sak; 764e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 uid_reg_len; 765e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 uid_reg[10]; 766e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 atqa[2]; /* ATQA response code */ 767e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 app_data_len; 768e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 app_data[15]; /* 15 bytes optional storage for historic data, use 2 slots */ 769e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 fwi_sfgi; /* FRAME WAITING TIME, START-UP FRAME GUARD TIME */ 770e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 cid_support; 771e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 datarate_max[3]; 772e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 clt_support; 773e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_HCI_CE_RF_A; 774e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 775e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 776e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 777e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 778e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 mode; /* Type B card emulation enabled indicator, 0x02:enabled */ 779e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 pupi_len; 780e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 pupi_reg[4]; 781e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 afi; 782e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 atqb[4]; /* 4 bytes ATQB application data */ 783e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 higherlayer_resp[61]; /* 0~ 61 bytes ATRB_INF use 1~4 personality slots */ 784e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 datarate_max[3]; 785e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 natrb; 786e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_HCI_CE_RF_B; 787e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 788e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 789e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 790e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 791e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 mode; /* Type B prime card emulation enabled indicator, 0x02:enabled */ 792e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 pat_in_len; 793e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 pat_in[8]; 794e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 dat_out_len; 795e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 dat_out[40]; /* ISO7816-3 <=64 byte, and other fields are 9 bytes */ 796e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 natr; 797e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_HCI_CE_RF_BP; 798e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 799e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 800e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 801e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 802e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 mode; /* Type F card emulation enabled indicator, 0x02:enabled */ 803e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 speed_cap; 804e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 clt_support; 805e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_HCI_CE_RF_F; 806e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 807e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 808e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 809e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 810e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 datarate_max; 811e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_HCI_RD_RF_A; 812e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 813e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 814e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 815e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 816e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 afi; 817e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 hldata_len; 818e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 high_layer_data[61]; /* INF field in ATTRIB command */ 819e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_HCI_RD_RF_B; 820e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 821e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 822e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 823e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 source_host; 824e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 dest_host; 825e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 source_gate; 826e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 dest_gate; 827e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */ 828e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_HCI_DYN_PIPE_INFO; 829e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 830e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 831e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 832e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 target_handle; 833e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 session_id[8]; 834e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 sync_id[2]; 835e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 static_pipe_info; 836e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_HCI_CE_RF_A ce_rf_a; 837e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_HCI_CE_RF_B ce_rf_b; 838e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_HCI_CE_RF_BP ce_rf_bp; 839e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_HCI_CE_RF_F ce_rf_f; 840e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_HCI_NETWK; 841e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 842e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 843e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 844e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 target_handle; 845e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 session_id[8]; 846e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 static_pipe_info; 847e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UINT8 num_dyn_pipes; 848e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tNCI_HCI_DYN_PIPE_INFO dyn_pipe_info[20]; 849e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tNCI_HCI_NETWK_DH; 850e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 851e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus 852e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 853e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 854e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 855e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* NFC_NCI_DEFS_H */ 856