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 *                                                                             *
     22 * \file  phHciNfc_Sequence.h                                                  *
     23 * \brief State Machine Management for the HCI and the Function Sequence       *
     24 * for a particular State.                                                     *
     25 *                                                                             *
     26 *                                                                             *
     27 * Project: NFC-FRI-1.1                                                        *
     28 *                                                                             *
     29 * $Date: Fri Aug 14 17:01:28 2009 $                                           *
     30 * $Author: ing04880 $                                                         *
     31 * $Revision: 1.12 $                                                            *
     32 * $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 $
     33 *                                                                             *
     34 * =========================================================================== *
     35 */
     36 
     37 /*@{*/
     38 #ifndef PHHCINFC_SEQUENCE_H
     39 #define PHHCINFC_SEQUENCE_H
     40 
     41 /*@}*/
     42 
     43 
     44 /**
     45  *  \name HCI
     46  *
     47  * File: \ref phHciNfc_Sequence.h
     48  *
     49  */
     50 
     51 /*@{*/
     52 #define PHHCINFC_SEQUENCE_FILEREVISION "$Revision: 1.12 $" /**< \ingroup grp_file_attributes */
     53 #define PHHCINFC_SEQUENCE_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 */
     54 /*@}*/
     55 
     56 
     57 /*
     58 ################################################################################
     59 ***************************** Header File Inclusion ****************************
     60 ################################################################################
     61 */
     62 
     63 #include <phHciNfc_Generic.h>
     64 
     65 /*
     66 ################################################################################
     67 ****************************** Macro Definitions *******************************
     68 ################################################################################
     69 */
     70 
     71 /*
     72 ################################################################################
     73 ************************* Function Prototype Declaration ***********************
     74 ################################################################################
     75 */
     76 
     77 
     78 /**
     79  * \ingroup grp_hci_nfc
     80  *
     81  *  The phHciNfc_FSM_Update function Validates the HCI State to
     82  *  the next operation ongoing.
     83  *
     84  *  \param[in]  psHciContext            psHciContext is the context of
     85  *                                      the HCI Layer.
     86  *  \param[in]  state                   state is the state to which the
     87  *                                      current HCI Layer state is validated.
     88  *  \param[in]  validate_type           validate the state by the type of the
     89  *                                      validation required.
     90  *
     91  *  \retval NFCSTATUS_SUCCESS           FSM Validated successfully .
     92  *  \retval NFCSTATUS_INVALID_STATE     The supplied state parameter is invalid.
     93  *
     94  */
     95 
     96 extern
     97 NFCSTATUS
     98 phHciNfc_FSM_Validate(
     99                         phHciNfc_sContext_t *psHciContext,
    100                         phHciNfc_eState_t state,
    101                         uint8_t validate_type
    102                     );
    103 
    104 /**
    105  * \ingroup grp_hci_nfc
    106  *
    107  *  The phHciNfc_FSM_Update function Checks and Updates the HCI State to
    108  *  the next valid State.
    109  *
    110  *  \param[in]  psHciContext            psHciContext is the context of
    111  *                                      the HCI Layer.
    112  *  \param[in]  next_state              next_state is the state to which
    113  *                                      we the HCI Layer.
    114  *  \param[in]  transition              transiton of the state whether
    115  *                                      ongoing or complete .
    116  *
    117  *  \retval NFCSTATUS_SUCCESS           FSM Updated successfully .
    118  *  \retval NFCSTATUS_INVALID_STATE     The supplied state parameter is invalid.
    119  *
    120  */
    121 
    122 extern
    123 NFCSTATUS
    124 phHciNfc_FSM_Update(
    125                         phHciNfc_sContext_t *psHciContext,
    126                         phHciNfc_eState_t   next_state
    127                    );
    128 
    129 /**
    130  * \ingroup grp_hci_nfc
    131  *
    132  *  The phHciNfc_FSM_Complete function completes the  ongoing state transition
    133  *  from the current state to the next state.
    134  *
    135  *  \param[in]  psHciContext            psHciContext is the context of
    136  *                                      the HCI Layer.
    137  *
    138  *  \retval NFCSTATUS_SUCCESS           FSM Updated successfully .
    139  *  \retval NFCSTATUS_INVALID_STATE     The supplied state parameter is invalid.
    140  *
    141  */
    142 
    143 extern
    144 NFCSTATUS
    145 phHciNfc_FSM_Complete(
    146                         phHciNfc_sContext_t *psHciContext
    147                     );
    148 
    149 
    150 /**
    151  * \ingroup grp_hci_nfc
    152  *
    153  *  The phHciNfc_FSM_Rollback function rolls back to previous valid state
    154  *  and abort the ongoing state transition.
    155  *
    156  *  \param[in]  psHciContext            psHciContext is the context of
    157  *                                      the HCI Layer.
    158  *
    159  *  \retval NONE.
    160  *
    161  */
    162 
    163 extern
    164 void
    165 phHciNfc_FSM_Rollback(
    166                         phHciNfc_sContext_t *psHciContext
    167                     );
    168 
    169 
    170 
    171 /**
    172  * \ingroup grp_hci_nfc
    173  *
    174  *  The phHciNfc_Initialise_Sequence function sequence initialises the
    175  *  HCI layer and the remote device by performing the operations required
    176  *  setup the reader and discovery functionality.
    177  *
    178  *  \param[in]  psHciContext            psHciContext is the context of
    179  *                                      the HCI Layer.
    180  *  \param[in]  pHwRef                  pHwRef is the Information of
    181  *                                      the Device Interface Link .
    182  *
    183  *  \retval NFCSTATUS_SUCCESS           HCI current initialise sequence successful.
    184  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    185  *                                      could not be interpreted properly.
    186  *  \retval Other errors                Other related errors
    187  *
    188  */
    189 
    190 
    191 extern
    192 NFCSTATUS
    193 phHciNfc_Initialise_Sequence(
    194                                 phHciNfc_sContext_t     *psHciContext,
    195                                 void                    *pHwRef
    196                              );
    197 
    198 /**
    199  * \ingroup grp_hci_nfc
    200  *
    201  *  The phHciNfc_PollLoop_Sequence function sequence starts the
    202  *  discovery sequence of device.
    203  *
    204  *  \param[in]  psHciContext            psHciContext is the context of
    205  *                                      the HCI Layer.
    206  *  \param[in]  pHwRef                  pHwRef is the Information of
    207  *                                      the Device Interface Link .
    208  *
    209  *  \retval NFCSTATUS_SUCCESS           HCI Discovery Configuration sequence successful.
    210  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    211  *                                      could not be interpreted properly.
    212  *  \retval Other errors                Other related errors
    213  *
    214  */
    215 
    216 extern
    217 NFCSTATUS
    218 phHciNfc_PollLoop_Sequence(
    219                             phHciNfc_sContext_t     *psHciContext,
    220                             void                    *pHwRef
    221                          );
    222 
    223 
    224 /**
    225  * \ingroup grp_hci_nfc
    226  *
    227  *  The phHciNfc_EmulationCfg_Sequence function sequence configures the
    228  *  device for different types of emulation supported.
    229  *
    230  *  \param[in]  psHciContext            psHciContext is the context of
    231  *                                      the HCI Layer.
    232  *  \param[in]  pHwRef                  pHwRef is the Information of
    233  *                                      the Device Interface Link .
    234  *
    235  *  \retval NFCSTATUS_SUCCESS           HCI Emulation Configuration
    236  *                                      sequence successful.
    237  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    238  *                                      could not be interpreted properly.
    239  *  \retval Other errors                    Other related errors
    240  *
    241  */
    242 
    243 extern
    244 NFCSTATUS
    245 phHciNfc_EmulationCfg_Sequence(
    246                            phHciNfc_sContext_t      *psHciContext,
    247                            void                 *pHwRef
    248                            );
    249 
    250 
    251 /**
    252  * \ingroup grp_hci_nfc
    253  *
    254  *  The phHciNfc_SmartMx_Mode_Sequence function sequence configures the
    255  *  SmartMx device for different modes by enabling and disabling polling.
    256  *
    257  *  \param[in]  psHciContext            psHciContext is the context of
    258  *                                      the HCI Layer.
    259  *  \param[in]  pHwRef                  pHwRef is the Information of
    260  *                                      the Device Interface Link .
    261  *
    262  *  \retval NFCSTATUS_SUCCESS           HCI SmartMX Mode Configuration
    263  *                                      sequence successful.
    264  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    265  *                                      could not be interpreted properly.
    266  *  \retval Other errors                 Other related errors
    267  *
    268  */
    269 
    270 extern
    271 NFCSTATUS
    272 phHciNfc_SmartMx_Mode_Sequence(
    273                            phHciNfc_sContext_t      *psHciContext,
    274                            void                     *pHwRef
    275                           );
    276 
    277 
    278 /**
    279  * \ingroup grp_hci_nfc
    280  *
    281  *  The phHciNfc_Connect_Sequence function sequence selects the
    282  *  discovered target for performing the transaction.
    283  *
    284  *  \param[in]  psHciContext            psHciContext is the context of
    285  *                                      the HCI Layer.
    286  *  \param[in]  pHwRef                  pHwRef is the Information of
    287  *                                      the Device Interface Link .
    288  *
    289  *  \retval NFCSTATUS_SUCCESS           HCI target selection sequence successful.
    290  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    291  *                                      could not be interpreted properly.
    292  *  \retval Other errors                Other related errors
    293  *
    294  */
    295 
    296 extern
    297 NFCSTATUS
    298 phHciNfc_Connect_Sequence(
    299                             phHciNfc_sContext_t     *psHciContext,
    300                             void                    *pHwRef
    301                          );
    302 
    303 
    304 /**
    305  * \ingroup grp_hci_nfc
    306  *
    307  *  The phHciNfc_Disconnect_Sequence function sequence de-selects the
    308  *  selected target .
    309  *
    310  *  \param[in]  psHciContext            psHciContext is the context of
    311  *                                      the HCI Layer.
    312  *  \param[in]  pHwRef                  pHwRef is the Information of
    313  *                                      the Device Interface Link .
    314  *
    315  *  \retval NFCSTATUS_SUCCESS           HCI target de-selection sequence successful.
    316  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    317  *                                      could not be interpreted properly.
    318  *  \retval Other errors                Other related errors
    319  *
    320  */
    321 
    322 extern
    323 NFCSTATUS
    324 phHciNfc_Disconnect_Sequence(
    325                             phHciNfc_sContext_t     *psHciContext,
    326                             void                    *pHwRef
    327                          );
    328 
    329 /**
    330  * \ingroup grp_hci_nfc
    331  *
    332  *  The phHciNfc_Error_Sequence function sequence notifies the
    333  *  error in the HCI sequence to the upper layer .
    334  *
    335  *  \param[in]  psHciContext            psHciContext is the context of
    336  *                                      the HCI Layer.
    337  *  \param[in]  pHwRef                  pHwRef is the Information of
    338  *                                      the Device Interface Link .
    339  *  \param[in]  status                  Notify status information from the
    340  *                                      HCI layer to the Upper Layer.
    341  *
    342  *
    343  *  \retval NFCSTATUS_SUCCESS           HCI Error sequence Notification successful.
    344  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    345  *                                      could not be interpreted properly.
    346  *  \retval Other errors                Other related errors
    347  *
    348  */
    349 extern
    350 void
    351 phHciNfc_Error_Sequence(
    352                                 void            *psContext,
    353                                 void            *pHwRef,
    354                                 NFCSTATUS       error_status,
    355                                 void            *pdata,
    356                                 uint8_t         length
    357                         );
    358 
    359 
    360 /**
    361  * \ingroup grp_hci_nfc
    362  *
    363  *  The phHciNfc_Resume_Sequence function sequence resumes the
    364  *  previous pending sequence of HCI .
    365  *
    366  *  \param[in]  psHciContext            psHciContext is the context of
    367  *                                      the HCI Layer.
    368  *  \param[in]  pHwRef                  pHwRef is the Information of
    369  *                                      the Device Interface Link .
    370  *
    371  *  \retval NFCSTATUS_SUCCESS           HCI sequence resume successful.
    372  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    373  *                                      could not be interpreted properly.
    374  *  \retval Other errors                Other related errors
    375  *
    376  */
    377 
    378 extern
    379 NFCSTATUS
    380 phHciNfc_Resume_Sequence(
    381                                 phHciNfc_sContext_t     *psHciContext,
    382                                 void                    *pHwRef
    383                           );
    384 
    385 
    386 /**
    387  * \ingroup grp_hci_nfc
    388  *
    389  *  The phHciNfc_Release_Sequence function sequence releases the
    390  *  HCI layer and the remote device by performing the operations required
    391  *  release the reader and discovery functionality.
    392  *
    393  *  \param[in]  psHciContext            psHciContext is the context of
    394  *                                      the HCI Layer.
    395  *  \param[in]  pHwRef                  pHwRef is the Information of
    396  *                                      the Device Interface Link .
    397  *
    398  *  \retval NFCSTATUS_SUCCESS           HCI current release sequence successful.
    399  *  \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters
    400  *                                      could not be interpreted properly.
    401  *  \retval Other errors                Other related errors
    402  *
    403  */
    404 
    405 
    406 extern
    407 NFCSTATUS
    408 phHciNfc_Release_Sequence(
    409                             phHciNfc_sContext_t     *psHciContext,
    410                             void                    *pHwRef
    411                          );
    412 
    413 
    414 /*
    415 ################################################################################
    416 ***************************** Function Definitions *****************************
    417 ################################################################################
    418 */
    419 
    420 #endif
    421 
    422