1/****************************************************************************** 2 * 3 * Copyright (C) 2009-2014 Broadcom Corporation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19/****************************************************************************** 20 * 21 * This file contains the Near Field Communication (NFC) Card Emulation 22 * mode related API function external definitions. 23 * 24 ******************************************************************************/ 25 26#ifndef CE_API_H 27#define CE_API_H 28 29#include <stdbool.h> 30#include "nfc_api.h" 31#include "nfc_types.h" 32#include "tags_defs.h" 33 34#define CE_T3T_FIRST_EVT 0x60 35#define CE_T4T_FIRST_EVT 0x80 36 37enum { 38 CE_T3T_NDEF_UPDATE_START_EVT = CE_T3T_FIRST_EVT, 39 CE_T3T_NDEF_UPDATE_CPLT_EVT, 40 CE_T3T_UPDATE_EVT, 41 CE_T3T_CHECK_EVT, 42 CE_T3T_RAW_FRAME_EVT, 43 CE_T3T_MAX_EVT, 44 45 CE_T4T_NDEF_UPDATE_START_EVT = CE_T4T_FIRST_EVT, 46 CE_T4T_NDEF_UPDATE_CPLT_EVT, 47 CE_T4T_NDEF_UPDATE_ABORT_EVT, 48 CE_T4T_RAW_FRAME_EVT, 49 CE_T4T_MAX_EVT 50}; 51 52#define CE_RAW_FRAME_EVT 0xFF 53 54typedef uint8_t tCE_EVENT; 55 56typedef struct { 57 tNFC_STATUS status; 58 NFC_HDR* p_data; 59} tCE_T2T_DATA; 60 61typedef struct { 62 tNFC_STATUS status; 63 uint8_t* p_data; 64 bool b_updated; 65 uint32_t length; 66} tCE_UPDATE_INFO; 67 68typedef struct { 69 tNFC_STATUS status; 70 uint8_t aid_handle; 71 NFC_HDR* p_data; 72} tCE_RAW_FRAME; 73 74typedef union { 75 tNFC_STATUS status; 76 tCE_UPDATE_INFO update_info; 77 tCE_RAW_FRAME raw_frame; 78} tCE_DATA; 79 80typedef void(tCE_CBACK)(tCE_EVENT event, tCE_DATA* p_data); 81 82/* T4T definitions */ 83typedef uint8_t tCE_T4T_AID_HANDLE; /* Handle for AID registration */ 84/* Invalid tCE_T4T_AID_HANDLE */ 85#define CE_T4T_AID_HANDLE_INVALID 0xFF 86/* reserved handle for wildcard aid */ 87#define CE_T4T_WILDCARD_AID_HANDLE (CE_T4T_MAX_REG_AID) 88 89/******************************************************************************* 90** 91** Function CE_T3tSetLocalNDEFMsg 92** 93** Description Initialise CE Type 3 Tag with mandatory NDEF message 94** 95** Returns NFC_STATUS_OK if success 96** 97*******************************************************************************/ 98extern tNFC_STATUS CE_T3tSetLocalNDEFMsg(bool read_only, uint32_t size_max, 99 uint32_t size_current, uint8_t* p_buf, 100 uint8_t* p_scratch_buf); 101 102/******************************************************************************* 103** 104** Function CE_T3tSetLocalNDefParams 105** 106** Description Sets T3T-specific NDEF parameters. (Optional - if not 107** called, then CE will use default parameters) 108** 109** Returns NFC_STATUS_OK if success 110** 111*******************************************************************************/ 112extern tNFC_STATUS CE_T3tSetLocalNDefParams(uint8_t nbr, uint8_t nbw); 113 114/******************************************************************************* 115** 116** Function CE_T3tSendCheckRsp 117** 118** Description Send CHECK response message 119** 120** Returns NFC_STATUS_OK if success 121** 122*******************************************************************************/ 123extern tNFC_STATUS CE_T3tSendCheckRsp(uint8_t status1, uint8_t status2, 124 uint8_t num_blocks, 125 uint8_t* p_block_data); 126 127/******************************************************************************* 128** 129** Function CE_T3tSendUpdateRsp 130** 131** Description Send UPDATE response message 132** 133** Returns NFC_STATUS_OK if success 134** 135*******************************************************************************/ 136extern tNFC_STATUS CE_T3tSendUpdateRsp(uint8_t status1, uint8_t status2); 137 138/******************************************************************************* 139** 140** Function CE_T4tSetLocalNDEFMsg 141** 142** Description Initialise CE Type 4 Tag with mandatory NDEF message 143** 144** The following event may be returned 145** CE_T4T_UPDATE_START_EVT for starting update 146** CE_T4T_UPDATE_CPLT_EVT for complete update 147** CE_T4T_UPDATE_ABORT_EVT for failure of update 148** CE_T4T_RAW_FRAME_EVT for raw frame 149** 150** read_only: TRUE if read only 151** ndef_msg_max: Max NDEF message size 152** ndef_msg_len: NDEF message size 153** p_ndef_msg: NDEF message (excluding NLEN) 154** p_scratch_buf: temp storage for update 155** 156** Returns NFC_STATUS_OK if success 157** 158*******************************************************************************/ 159extern tNFC_STATUS CE_T4tSetLocalNDEFMsg(bool read_only, uint16_t ndef_msg_max, 160 uint16_t ndef_msg_len, 161 uint8_t* p_ndef_msg, 162 uint8_t* p_scratch_buf); 163 164/******************************************************************************* 165** 166** Function CE_T4tRegisterAID 167** 168** Description Register AID in CE T4T 169** 170** aid_len: length of AID (up to NFC_MAX_AID_LEN) 171** p_aid: AID 172** p_cback: Raw frame will be forwarded with CE_RAW_FRAME_EVT 173** 174** Returns tCE_T4T_AID_HANDLE if successful, 175** CE_T4T_AID_HANDLE_INVALID otherwisse 176** 177*******************************************************************************/ 178extern tCE_T4T_AID_HANDLE CE_T4tRegisterAID(uint8_t aid_len, uint8_t* p_aid, 179 tCE_CBACK* p_cback); 180 181/******************************************************************************* 182** 183** Function CE_T4tDeregisterAID 184** 185** Description Deregister AID in CE T4T 186** 187** aid_len: length of AID (up to NFC_MAX_AID_LEN) 188** p_aid: AID 189** 190** Returns NFC_STATUS_OK if success 191** 192*******************************************************************************/ 193extern void CE_T4tDeregisterAID(tCE_T4T_AID_HANDLE aid_handle); 194 195/******************************************************************************* 196** 197** Function CE_T4TTestSetCC 198** 199** Description Set fields in Capability Container File for testing 200** 201** Returns NFC_STATUS_OK if success 202** 203*******************************************************************************/ 204extern tNFC_STATUS CE_T4TTestSetCC(uint16_t cc_len, uint8_t version, 205 uint16_t max_le, uint16_t max_lc); 206 207/******************************************************************************* 208** 209** Function CE_T4TTestSetNDEFCtrlTLV 210** 211** Description Set fields in NDEF File Control TLV for testing 212** 213** Returns NFC_STATUS_OK if success 214** 215*******************************************************************************/ 216extern tNFC_STATUS CE_T4TTestSetNDEFCtrlTLV(uint8_t type, uint8_t length, 217 uint16_t file_id, 218 uint16_t max_file_size, 219 uint8_t read_access, 220 uint8_t write_access); 221 222/******************************************************************************* 223** 224** Function CE_SendRawFrame 225** 226** Description This function sends a raw frame to the peer device. 227** 228** Returns tNFC_STATUS 229** 230*******************************************************************************/ 231extern tNFC_STATUS CE_SendRawFrame(uint8_t* p_raw_data, uint16_t data_len); 232 233/******************************************************************************* 234** 235** Function CE_SetActivatedTagType 236** 237** Description This function selects the tag type for Reader/Writer mode. 238** 239** Returns tNFC_STATUS 240** 241*******************************************************************************/ 242extern tNFC_STATUS CE_SetActivatedTagType(tNFC_ACTIVATE_DEVT* p_activate_params, 243 uint16_t t3t_system_code, 244 tCE_CBACK* p_cback); 245 246/******************************************************************************* 247** 248** Function CE_SetTraceLevel 249** 250** Description This function sets the trace level for Card Emulation mode. 251** If called with a value of 0xFF, 252** it simply returns the current trace level. 253** 254** Returns The new or current trace level 255** 256*******************************************************************************/ 257extern uint8_t CE_SetTraceLevel(uint8_t new_level); 258 259#endif /* CE_API_H */ 260