Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2009-2013 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 
     91 /*******************************************************************************
     92 **
     93 ** Function         CE_T3tSetLocalNDEFMsg
     94 **
     95 ** Description      Initialise CE Type 3 Tag with mandatory NDEF message
     96 **
     97 ** Returns          NFC_STATUS_OK if success
     98 **
     99 *******************************************************************************/
    100 NFC_API extern tNFC_STATUS CE_T3tSetLocalNDEFMsg (BOOLEAN read_only,
    101                                 UINT32 size_max,
    102                                 UINT32 size_current,
    103                                 UINT8 *p_buf,
    104                                 UINT8 *p_scratch_buf);
    105 
    106 /*******************************************************************************
    107 **
    108 ** Function         CE_T3tSetLocalNDefParams
    109 **
    110 ** Description      Sets T3T-specific NDEF parameters. (Optional - if not
    111 **                  called, then CE will use default parameters)
    112 **
    113 ** Returns          NFC_STATUS_OK if success
    114 **
    115 *******************************************************************************/
    116 NFC_API extern tNFC_STATUS CE_T3tSetLocalNDefParams (UINT8 nbr, UINT8 nbw);
    117 
    118 /*******************************************************************************
    119 **
    120 ** Function         CE_T3tSendCheckRsp
    121 **
    122 ** Description      Send CHECK response message
    123 **
    124 ** Returns          NFC_STATUS_OK if success
    125 **
    126 *******************************************************************************/
    127 NFC_API extern tNFC_STATUS CE_T3tSendCheckRsp (UINT8 status1, UINT8 status2, UINT8 num_blocks, UINT8 *p_block_data);
    128 
    129 /*******************************************************************************
    130 **
    131 ** Function         CE_T3tSendUpdateRsp
    132 **
    133 ** Description      Send UPDATE response message
    134 **
    135 ** Returns          NFC_STATUS_OK if success
    136 **
    137 *******************************************************************************/
    138 NFC_API extern tNFC_STATUS CE_T3tSendUpdateRsp (UINT8 status1, UINT8 status2);
    139 
    140 /*******************************************************************************
    141 **
    142 ** Function         CE_T4tSetLocalNDEFMsg
    143 **
    144 ** Description      Initialise CE Type 4 Tag with mandatory NDEF message
    145 **
    146 **                  The following event may be returned
    147 **                      CE_T4T_UPDATE_START_EVT for starting update
    148 **                      CE_T4T_UPDATE_CPLT_EVT for complete update
    149 **                      CE_T4T_UPDATE_ABORT_EVT for failure of update
    150 **                      CE_T4T_RAW_FRAME_EVT for raw frame
    151 **
    152 **                  read_only:      TRUE if read only
    153 **                  ndef_msg_max:   Max NDEF message size
    154 **                  ndef_msg_len:   NDEF message size
    155 **                  p_ndef_msg:     NDEF message (excluding NLEN)
    156 **                  p_scratch_buf:  temp storage for update
    157 **
    158 ** Returns          NFC_STATUS_OK if success
    159 **
    160 *******************************************************************************/
    161 NFC_API extern tNFC_STATUS CE_T4tSetLocalNDEFMsg (BOOLEAN    read_only,
    162                                                   UINT16     ndef_msg_max,
    163                                                   UINT16     ndef_msg_len,
    164                                                   UINT8     *p_ndef_msg,
    165                                                   UINT8     *p_scratch_buf);
    166 
    167 /*******************************************************************************
    168 **
    169 ** Function         CE_T4tRegisterAID
    170 **
    171 ** Description      Register AID in CE T4T
    172 **
    173 **                  aid_len: length of AID (up to NFC_MAX_AID_LEN)
    174 **                  p_aid:   AID
    175 **                  p_cback: Raw frame will be forwarded with CE_RAW_FRAME_EVT
    176 **
    177 ** Returns          tCE_T4T_AID_HANDLE if successful,
    178 **                  CE_T4T_AID_HANDLE_INVALID otherwisse
    179 **
    180 *******************************************************************************/
    181 NFC_API extern tCE_T4T_AID_HANDLE CE_T4tRegisterAID (UINT8      aid_len,
    182                                                      UINT8      *p_aid,
    183                                                      tCE_CBACK  *p_cback);
    184 
    185 /*******************************************************************************
    186 **
    187 ** Function         CE_T4tDeregisterAID
    188 **
    189 ** Description      Deregister AID in CE T4T
    190 **
    191 **                  aid_len: length of AID (up to NFC_MAX_AID_LEN)
    192 **                  p_aid:   AID
    193 **
    194 ** Returns          NFC_STATUS_OK if success
    195 **
    196 *******************************************************************************/
    197 NFC_API extern void CE_T4tDeregisterAID (tCE_T4T_AID_HANDLE aid_handle);
    198 
    199 /*******************************************************************************
    200 **
    201 ** Function         CE_T4TTestSetCC
    202 **
    203 ** Description      Set fields in Capability Container File for testing
    204 **
    205 ** Returns          NFC_STATUS_OK if success
    206 **
    207 *******************************************************************************/
    208 NFC_API extern tNFC_STATUS CE_T4TTestSetCC (UINT16 cc_len,
    209                                             UINT8  version,
    210                                             UINT16 max_le,
    211                                             UINT16 max_lc);
    212 
    213 /*******************************************************************************
    214 **
    215 ** Function         CE_T4TTestSetNDEFCtrlTLV
    216 **
    217 ** Description      Set fields in NDEF File Control TLV for testing
    218 **
    219 ** Returns          NFC_STATUS_OK if success
    220 **
    221 *******************************************************************************/
    222 NFC_API extern tNFC_STATUS CE_T4TTestSetNDEFCtrlTLV (UINT8  type,
    223                                                      UINT8  length,
    224                                                      UINT16 file_id,
    225                                                      UINT16 max_file_size,
    226                                                      UINT8  read_access,
    227                                                      UINT8  write_access);
    228 
    229 /*******************************************************************************
    230 **
    231 ** Function         CE_SendRawFrame
    232 **
    233 ** Description      This function sends a raw frame to the peer device.
    234 **
    235 ** Returns          tNFC_STATUS
    236 **
    237 *******************************************************************************/
    238 NFC_API extern tNFC_STATUS CE_SendRawFrame (UINT8 *p_raw_data, UINT16 data_len);
    239 
    240 /*******************************************************************************
    241 **
    242 ** Function         CE_SetActivatedTagType
    243 **
    244 ** Description      This function selects the tag type for Reader/Writer mode.
    245 **
    246 ** Returns          tNFC_STATUS
    247 **
    248 *******************************************************************************/
    249 NFC_API extern tNFC_STATUS CE_SetActivatedTagType (tNFC_ACTIVATE_DEVT *p_activate_params, UINT16 t3t_system_code, tCE_CBACK *p_cback);
    250 
    251 /*******************************************************************************
    252 **
    253 ** Function         CE_SetTraceLevel
    254 **
    255 ** Description      This function sets the trace level for Card Emulation mode.
    256 **                  If called with a value of 0xFF,
    257 **                  it simply returns the current trace level.
    258 **
    259 ** Returns          The new or current trace level
    260 **
    261 *******************************************************************************/
    262 NFC_API extern UINT8 CE_SetTraceLevel (UINT8 new_level);
    263 
    264 #endif /* CE_API_H */
    265