/* * Copyright (C) 2010 NXP Semiconductors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /*! * =========================================================================== * * * * * * \file phHciNfc_Sequence.h * * \brief State Machine Management for the HCI and the Function Sequence * * for a particular State. * * * * * * Project: NFC-FRI-1.1 * * * * $Date: Fri Aug 14 17:01:28 2009 $ * * $Author: ing04880 $ * * $Revision: 1.12 $ * * $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 $ * * * =========================================================================== * */ /*@{*/ #ifndef PHHCINFC_SEQUENCE_H #define PHHCINFC_SEQUENCE_H /*@}*/ /** * \name HCI * * File: \ref phHciNfc_Sequence.h * */ /*@{*/ #define PHHCINFC_SEQUENCE_FILEREVISION "$Revision: 1.12 $" /**< \ingroup grp_file_attributes */ #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 */ /*@}*/ /* ################################################################################ ***************************** Header File Inclusion **************************** ################################################################################ */ #include /* ################################################################################ ****************************** Macro Definitions ******************************* ################################################################################ */ /* ################################################################################ ************************* Function Prototype Declaration *********************** ################################################################################ */ /** * \ingroup grp_hci_nfc * * The phHciNfc_FSM_Update function Validates the HCI State to * the next operation ongoing. * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] state state is the state to which the * current HCI Layer state is validated. * \param[in] validate_type validate the state by the type of the * validation required. * * \retval NFCSTATUS_SUCCESS FSM Validated successfully . * \retval NFCSTATUS_INVALID_STATE The supplied state parameter is invalid. * */ extern NFCSTATUS phHciNfc_FSM_Validate( phHciNfc_sContext_t *psHciContext, phHciNfc_eState_t state, uint8_t validate_type ); /** * \ingroup grp_hci_nfc * * The phHciNfc_FSM_Update function Checks and Updates the HCI State to * the next valid State. * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] next_state next_state is the state to which * we the HCI Layer. * \param[in] transition transiton of the state whether * ongoing or complete . * * \retval NFCSTATUS_SUCCESS FSM Updated successfully . * \retval NFCSTATUS_INVALID_STATE The supplied state parameter is invalid. * */ extern NFCSTATUS phHciNfc_FSM_Update( phHciNfc_sContext_t *psHciContext, phHciNfc_eState_t next_state ); /** * \ingroup grp_hci_nfc * * The phHciNfc_FSM_Complete function completes the ongoing state transition * from the current state to the next state. * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * * \retval NFCSTATUS_SUCCESS FSM Updated successfully . * \retval NFCSTATUS_INVALID_STATE The supplied state parameter is invalid. * */ extern NFCSTATUS phHciNfc_FSM_Complete( phHciNfc_sContext_t *psHciContext ); /** * \ingroup grp_hci_nfc * * The phHciNfc_FSM_Rollback function rolls back to previous valid state * and abort the ongoing state transition. * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * * \retval NONE. * */ extern void phHciNfc_FSM_Rollback( phHciNfc_sContext_t *psHciContext ); /** * \ingroup grp_hci_nfc * * The phHciNfc_Initialise_Sequence function sequence initialises the * HCI layer and the remote device by performing the operations required * setup the reader and discovery functionality. * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_SUCCESS HCI current initialise sequence successful. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Other related errors * */ extern NFCSTATUS phHciNfc_Initialise_Sequence( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_PollLoop_Sequence function sequence starts the * discovery sequence of device. * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_SUCCESS HCI Discovery Configuration sequence successful. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Other related errors * */ extern NFCSTATUS phHciNfc_PollLoop_Sequence( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_EmulationCfg_Sequence function sequence configures the * device for different types of emulation supported. * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_SUCCESS HCI Emulation Configuration * sequence successful. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Other related errors * */ extern NFCSTATUS phHciNfc_EmulationCfg_Sequence( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_SmartMx_Mode_Sequence function sequence configures the * SmartMx device for different modes by enabling and disabling polling. * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_SUCCESS HCI SmartMX Mode Configuration * sequence successful. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Other related errors * */ extern NFCSTATUS phHciNfc_SmartMx_Mode_Sequence( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_Connect_Sequence function sequence selects the * discovered target for performing the transaction. * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_SUCCESS HCI target selection sequence successful. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Other related errors * */ extern NFCSTATUS phHciNfc_Connect_Sequence( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_Disconnect_Sequence function sequence de-selects the * selected target . * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_SUCCESS HCI target de-selection sequence successful. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Other related errors * */ extern NFCSTATUS phHciNfc_Disconnect_Sequence( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_Error_Sequence function sequence notifies the * error in the HCI sequence to the upper layer . * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * \param[in] status Notify status information from the * HCI layer to the Upper Layer. * * * \retval NFCSTATUS_SUCCESS HCI Error sequence Notification successful. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Other related errors * */ extern void phHciNfc_Error_Sequence( void *psContext, void *pHwRef, NFCSTATUS error_status, void *pdata, uint8_t length ); /** * \ingroup grp_hci_nfc * * The phHciNfc_Resume_Sequence function sequence resumes the * previous pending sequence of HCI . * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_SUCCESS HCI sequence resume successful. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Other related errors * */ extern NFCSTATUS phHciNfc_Resume_Sequence( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /** * \ingroup grp_hci_nfc * * The phHciNfc_Release_Sequence function sequence releases the * HCI layer and the remote device by performing the operations required * release the reader and discovery functionality. * * \param[in] psHciContext psHciContext is the context of * the HCI Layer. * \param[in] pHwRef pHwRef is the Information of * the Device Interface Link . * * \retval NFCSTATUS_SUCCESS HCI current release sequence successful. * \retval NFCSTATUS_INVALID_PARAMETER One or more of the supplied parameters * could not be interpreted properly. * \retval Other errors Other related errors * */ extern NFCSTATUS phHciNfc_Release_Sequence( phHciNfc_sContext_t *psHciContext, void *pHwRef ); /* ################################################################################ ***************************** Function Definitions ***************************** ################################################################################ */ #endif