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