Home | History | Annotate | Download | only in src
      1 /*
      2  * Copyright (C) 2010 NXP Semiconductors
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 /*!
     18 * =========================================================================== *
     19 *                                                                             *
     20 *                                                                             *
     21 * \file  phHciNfc_CE_A.h                                             *
     22 * \brief HCI card emulation management routines.                              *
     23 *                                                                             *
     24 *                                                                             *
     25 * Project: NFC-FRI-1.1                                                        *
     26 *                                                                             *
     27 * $Date: Fri Aug 14 17:01:27 2009 $                                           *
     28 * $Author: ing04880 $                                                         *
     29 * $Revision: 1.5 $                                                            *
     30 * $Aliases: NFC_FRI1.1_WK934_R31_1,NFC_FRI1.1_WK941_PREP1,NFC_FRI1.1_WK941_PREP2,NFC_FRI1.1_WK941_1,NFC_FRI1.1_WK943_R32_1,NFC_FRI1.1_WK949_PREP1,NFC_FRI1.1_WK943_R32_10,NFC_FRI1.1_WK943_R32_13,NFC_FRI1.1_WK943_R32_14,NFC_FRI1.1_WK1007_R33_1,NFC_FRI1.1_WK1007_R33_4,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $                                                                *
     31 *                                                                             *
     32 * =========================================================================== *
     33 */
     34 
     35 
     36 #ifndef PHHCINFC_CE_A_H
     37 #define PHHCINFC_CE_A_H
     38 
     39 /*@}*/
     40 
     41 
     42 /**
     43 *  \name HCI
     44 *
     45 * File: \ref phHciNfc_CE_A.h
     46 *
     47 */
     48 /*@{*/
     49 #define PHHCINFC_CE_A_FILEREVISION "$Revision: 1.5 $" /**< \ingroup grp_file_attributes */
     50 #define PHHCINFC_CE_A_FILEALIASES  "$Aliases: NFC_FRI1.1_WK934_R31_1,NFC_FRI1.1_WK941_PREP1,NFC_FRI1.1_WK941_PREP2,NFC_FRI1.1_WK941_1,NFC_FRI1.1_WK943_R32_1,NFC_FRI1.1_WK949_PREP1,NFC_FRI1.1_WK943_R32_10,NFC_FRI1.1_WK943_R32_13,NFC_FRI1.1_WK943_R32_14,NFC_FRI1.1_WK1007_R33_1,NFC_FRI1.1_WK1007_R33_4,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $"     /**< \ingroup grp_file_attributes */
     51 /*@}*/
     52 
     53 /*
     54 ***************************** Header File Inclusion ****************************
     55 */
     56 
     57 #include <phHciNfc_Generic.h>
     58 
     59 /*
     60 ****************************** Macro Definitions *******************************
     61 */
     62 
     63 #define HOST_CE_A_MODE_INDEX                (0x01U)
     64 #define HOST_CE_A_UID_REG_INDEX             (0x02U)
     65 #define HOST_CE_A_SAK_INDEX                 (0x03U)
     66 #define HOST_CE_A_ATQA_INDEX                (0x04U)
     67 #define HOST_CE_A_APP_DATA_INDEX            (0x05U)
     68 #define HOST_CE_A_FWI_SFGT_INDEX            (0x06U)
     69 #define HOST_CE_A_CID_INDEX                 (0x07U)
     70 #define HOST_CE_A_CLT_INDEX                 (0x08U)
     71 #define HOST_CE_A_DATA_RATE_INDEX           (0x09U)
     72 
     73 
     74 /*
     75 ******************** Enumeration and Structure Definition **********************
     76 */
     77 
     78 /* Sequence list */
     79 typedef enum phHciNfc_CE_A_Seq{
     80     HOST_CE_A_INVALID_SEQ,
     81     HOST_CE_A_PIPE_OPEN,
     82     HOST_CE_A_SAK_SEQ,
     83     HOST_CE_A_ATQA_SEQ,
     84     HOST_CE_A_ENABLE_SEQ,
     85     HOST_CE_A_DISABLE_SEQ,
     86     HOST_CE_A_PIPE_CLOSE,
     87     HOST_CE_A_PIPE_DELETE
     88 }phHciNfc_CE_A_Seq_t;
     89 
     90 /* Information structure for the card emulation A Gate */
     91 typedef struct phHciNfc_CE_A_Info{
     92 
     93     phHciNfc_CE_A_Seq_t         current_seq;
     94     phHciNfc_CE_A_Seq_t         next_seq;
     95     /* Pointer to the card emulation A pipe information */
     96     phHciNfc_Pipe_Info_t        *p_pipe_info;
     97     uint8_t                     pipe_id;
     98 
     99 } phHciNfc_CE_A_Info_t;
    100 
    101 /*
    102 *********************** Function Prototype Declaration *************************
    103 */
    104 
    105 /*!
    106  * \brief Allocates the resources of card emulation A management gate.
    107  *
    108  * This function Allocates the resources of the card emulation A management
    109  * gate Information Structure.
    110  *
    111  */
    112 extern
    113 NFCSTATUS
    114 phHciNfc_CE_A_Init_Resources(
    115                                 phHciNfc_sContext_t     *psHciContext
    116                          );
    117 
    118 /**
    119 * \ingroup grp_hci_nfc
    120 *
    121 *   The phHciNfc_CE_A_Get_PipeID function gives the pipe id of the card
    122 *   emulation A gate
    123 *
    124 *   \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    125 *                                       context Structure.
    126 *   \param[in]  pHwRef                  pHwRef is the Information of
    127 *                                       the Device Interface Link
    128 *
    129 *   \retval NFCSTATUS_SUCCESS           Function execution is successful.
    130 *   \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    131 *                                       could not be interpreted properly.
    132 *
    133 */
    134 extern
    135 NFCSTATUS
    136 phHciNfc_CE_A_Get_PipeID(
    137                             phHciNfc_sContext_t     *psHciContext,
    138                             uint8_t                 *ppipe_id
    139                             );
    140 
    141 /**
    142 * \ingroup grp_hci_nfc
    143 *
    144 *  The phHciNfc_CE_A_Update_PipeInfo function updates the pipe_id of the card
    145 *  emulation A gate management Structure.
    146 *
    147 *  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    148 *                                      context Structure.
    149 *  \param[in]  pipeID                  pipeID of the card emulation A gate
    150 *  \param[in]  pPipeInfo               Update the pipe Information of the reader
    151 *                                      A gate
    152 *
    153 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
    154 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    155 *                                      could not be interpreted properly.
    156 *
    157 */
    158 
    159 extern
    160 NFCSTATUS
    161 phHciNfc_CE_A_Update_PipeInfo(
    162                                   phHciNfc_sContext_t     *psHciContext,
    163                                   uint8_t                 pipeID,
    164                                   phHciNfc_Pipe_Info_t    *pPipeInfo
    165                                   );
    166 
    167 /**
    168 * \ingroup grp_hci_nfc
    169 *
    170 *  The phHciNfc_CE_A_SendData_Event function sends data to the lo
    171 *
    172 *  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    173 *                                      context Structure.
    174 *  \param[in]  pHwRef                  pHwRef is the Information of
    175 *                                      the Device Interface Link
    176 *  \param[in]  pipeID                  pipeID of the card emulation A gate
    177 *  \param[in]  pPipeInfo               Update the pipe Information of the reader
    178 *                                      A gate
    179 *
    180 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
    181 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    182 *                                      could not be interpreted properly.
    183 *
    184 */
    185 #ifdef CE_A_SEND_EVENT
    186 extern
    187 NFCSTATUS
    188 phHciNfc_CE_A_SendData_Event(
    189                              void               *psContext,
    190                              void               *pHwRef,
    191                              uint8_t            *pEvent,
    192                              uint8_t            length
    193                        );
    194 #endif /* #ifdef CE_A_SEND_EVENT */
    195 
    196 /**
    197 * \ingroup grp_hci_nfc
    198 *
    199 *  The phHciNfc_CE_A_Mode function sends data to the set the card emulation mode
    200 *
    201 *  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    202 *                                      context Structure.
    203 *  \param[in]  pHwRef                  pHwRef is the Information of
    204 *                                      the Device Interface Link
    205 *  \param[in]  enable_type             type to enable
    206 *
    207 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
    208 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    209 *                                      could not be interpreted properly.
    210 *
    211 */
    212 extern
    213 NFCSTATUS
    214 phHciNfc_CE_A_Mode(
    215                             void        *psHciHandle,
    216                             void        *pHwRef,
    217                             uint8_t     enable_type
    218                   );
    219 
    220 /**
    221 * \ingroup grp_hci_nfc
    222 *
    223 *  The phHciNfc_CE_A_Initialise function opens the CE A and set all the
    224 *   required parameters for CE A
    225 *
    226 *  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    227 *                                      context Structure.
    228 *  \param[in]  pHwRef                  pHwRef is the Information of
    229 *                                      the Device Interface Link
    230 *
    231 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
    232 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    233 *                                      could not be interpreted properly.
    234 *
    235 */
    236 extern
    237 NFCSTATUS
    238 phHciNfc_CE_A_Initialise(
    239                         phHciNfc_sContext_t     *psHciContext,
    240                         void                    *pHwRef
    241                         );
    242 
    243 /**
    244 * \ingroup grp_hci_nfc
    245 *
    246 *  The phHciNfc_CE_A_Initialise function close the CE A and reset all the
    247 *   required parameters to default value of CE A
    248 *
    249 *  \param[in]  psHciContext            psHciContext is the pointer to HCI Layer
    250 *                                      context Structure.
    251 *  \param[in]  pHwRef                  pHwRef is the Information of
    252 *                                      the Device Interface Link
    253 *
    254 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
    255 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    256 *                                      could not be interpreted properly.
    257 *
    258 */
    259 extern
    260 NFCSTATUS
    261 phHciNfc_CE_A_Release(
    262                         phHciNfc_sContext_t     *psHciContext,
    263                         void                    *pHwRef
    264                         );
    265 
    266 
    267 /**
    268 * \ingroup grp_hci_nfc
    269 *
    270 *  The phHciNfc_CE_A_Update_Seq function to update CE A sequence depending on the
    271 *  specified \ref seq_type
    272 *
    273 *  \param[in]  psHciContext             psHciContext is the pointer to HCI Layer
    274 *                                       context Structure.
    275 *  \param[in]  seq_type                 sequence type specified in
    276 *                                       \ref phHciNfc_eSeqType_t
    277 *
    278 *  \retval NFCSTATUS_SUCCESS           Function execution is successful.
    279 *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    280 *                                      could not be interpreted properly.
    281 *
    282 */
    283 extern
    284 NFCSTATUS
    285 phHciNfc_CE_A_Update_Seq(
    286                         phHciNfc_sContext_t     *psHciContext,
    287                         phHciNfc_eSeqType_t     seq_type
    288                     );
    289 #endif /* PHHCINFC_CE_A_H */
    290 
    291 
    292