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 37 enum { 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_RAW_FRAME_EVT, 42 43 CE_T4T_NDEF_UPDATE_START_EVT = CE_T4T_FIRST_EVT, 44 CE_T4T_NDEF_UPDATE_CPLT_EVT, 45 CE_T4T_NDEF_UPDATE_ABORT_EVT, 46 CE_T4T_RAW_FRAME_EVT 47 }; 48 49 typedef uint8_t tCE_EVENT; 50 51 typedef struct { 52 tNFC_STATUS status; 53 uint8_t* p_data; 54 bool b_updated; 55 uint32_t length; 56 } tCE_UPDATE_INFO; 57 58 typedef struct { 59 tNFC_STATUS status; 60 uint8_t aid_handle; 61 NFC_HDR* p_data; 62 } tCE_RAW_FRAME; 63 64 typedef union { 65 tNFC_STATUS status; 66 tCE_UPDATE_INFO update_info; 67 tCE_RAW_FRAME raw_frame; 68 } tCE_DATA; 69 70 typedef void(tCE_CBACK)(tCE_EVENT event, tCE_DATA* p_data); 71 72 /* T4T definitions */ 73 typedef uint8_t tCE_T4T_AID_HANDLE; /* Handle for AID registration */ 74 /* Invalid tCE_T4T_AID_HANDLE */ 75 #define CE_T4T_AID_HANDLE_INVALID 0xFF 76 /* reserved handle for wildcard aid */ 77 #define CE_T4T_WILDCARD_AID_HANDLE (CE_T4T_MAX_REG_AID) 78 79 /******************************************************************************* 80 ** 81 ** Function CE_T3tSetLocalNDEFMsg 82 ** 83 ** Description Initialise CE Type 3 Tag with mandatory NDEF message 84 ** 85 ** Returns NFC_STATUS_OK if success 86 ** 87 *******************************************************************************/ 88 extern tNFC_STATUS CE_T3tSetLocalNDEFMsg(bool read_only, uint32_t size_max, 89 uint32_t size_current, uint8_t* p_buf, 90 uint8_t* p_scratch_buf); 91 92 /******************************************************************************* 93 ** 94 ** Function CE_T3tSetLocalNDefParams 95 ** 96 ** Description Sets T3T-specific NDEF parameters. (Optional - if not 97 ** called, then CE will use default parameters) 98 ** 99 ** Returns NFC_STATUS_OK if success 100 ** 101 *******************************************************************************/ 102 extern tNFC_STATUS CE_T3tSetLocalNDefParams(uint8_t nbr, uint8_t nbw); 103 104 /******************************************************************************* 105 ** 106 ** Function CE_T3tSendCheckRsp 107 ** 108 ** Description Send CHECK response message 109 ** 110 ** Returns NFC_STATUS_OK if success 111 ** 112 *******************************************************************************/ 113 extern tNFC_STATUS CE_T3tSendCheckRsp(uint8_t status1, uint8_t status2, 114 uint8_t num_blocks, 115 uint8_t* p_block_data); 116 117 /******************************************************************************* 118 ** 119 ** Function CE_T3tSendUpdateRsp 120 ** 121 ** Description Send UPDATE response message 122 ** 123 ** Returns NFC_STATUS_OK if success 124 ** 125 *******************************************************************************/ 126 extern tNFC_STATUS CE_T3tSendUpdateRsp(uint8_t status1, uint8_t status2); 127 128 /******************************************************************************* 129 ** 130 ** Function CE_T4tSetLocalNDEFMsg 131 ** 132 ** Description Initialise CE Type 4 Tag with mandatory NDEF message 133 ** 134 ** The following event may be returned 135 ** CE_T4T_UPDATE_START_EVT for starting update 136 ** CE_T4T_UPDATE_CPLT_EVT for complete update 137 ** CE_T4T_UPDATE_ABORT_EVT for failure of update 138 ** CE_T4T_RAW_FRAME_EVT for raw frame 139 ** 140 ** read_only: TRUE if read only 141 ** ndef_msg_max: Max NDEF message size 142 ** ndef_msg_len: NDEF message size 143 ** p_ndef_msg: NDEF message (excluding NLEN) 144 ** p_scratch_buf: temp storage for update 145 ** 146 ** Returns NFC_STATUS_OK if success 147 ** 148 *******************************************************************************/ 149 extern tNFC_STATUS CE_T4tSetLocalNDEFMsg(bool read_only, uint16_t ndef_msg_max, 150 uint16_t ndef_msg_len, 151 uint8_t* p_ndef_msg, 152 uint8_t* p_scratch_buf); 153 154 /******************************************************************************* 155 ** 156 ** Function CE_T4tRegisterAID 157 ** 158 ** Description Register AID in CE T4T 159 ** 160 ** aid_len: length of AID (up to NFC_MAX_AID_LEN) 161 ** p_aid: AID 162 ** p_cback: Raw frame will be forwarded with CE_RAW_FRAME_EVT 163 ** 164 ** Returns tCE_T4T_AID_HANDLE if successful, 165 ** CE_T4T_AID_HANDLE_INVALID otherwisse 166 ** 167 *******************************************************************************/ 168 extern tCE_T4T_AID_HANDLE CE_T4tRegisterAID(uint8_t aid_len, uint8_t* p_aid, 169 tCE_CBACK* p_cback); 170 171 /******************************************************************************* 172 ** 173 ** Function CE_T4tDeregisterAID 174 ** 175 ** Description Deregister AID in CE T4T 176 ** 177 ** aid_len: length of AID (up to NFC_MAX_AID_LEN) 178 ** p_aid: AID 179 ** 180 ** Returns NFC_STATUS_OK if success 181 ** 182 *******************************************************************************/ 183 extern void CE_T4tDeregisterAID(tCE_T4T_AID_HANDLE aid_handle); 184 185 /******************************************************************************* 186 ** 187 ** Function CE_SendRawFrame 188 ** 189 ** Description This function sends a raw frame to the peer device. 190 ** 191 ** Returns tNFC_STATUS 192 ** 193 *******************************************************************************/ 194 extern tNFC_STATUS CE_SendRawFrame(uint8_t* p_raw_data, uint16_t data_len); 195 196 /******************************************************************************* 197 ** 198 ** Function CE_SetActivatedTagType 199 ** 200 ** Description This function selects the tag type for Reader/Writer mode. 201 ** 202 ** Returns tNFC_STATUS 203 ** 204 *******************************************************************************/ 205 extern tNFC_STATUS CE_SetActivatedTagType(tNFC_ACTIVATE_DEVT* p_activate_params, 206 uint16_t t3t_system_code, 207 tCE_CBACK* p_cback); 208 #endif /* CE_API_H */ 209