15d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*
25d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Copyright (C) 2010 NXP Semiconductors
35d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
45d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Licensed under the Apache License, Version 2.0 (the "License");
55d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * you may not use this file except in compliance with the License.
65d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * You may obtain a copy of the License at
75d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
85d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *      http://www.apache.org/licenses/LICENSE-2.0
95d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
105d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Unless required by applicable law or agreed to in writing, software
115d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * distributed under the License is distributed on an "AS IS" BASIS,
125d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * See the License for the specific language governing permissions and
145d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * limitations under the License.
155d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
165d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
175d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*!
185d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \file  phLibNfc_Internal.h
195d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
205d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Project: NFC-FRI 1.1
215d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
225d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * $Workfile:: phLibNfc_Internal.h  $
235d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * $Modtime::         $
245d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * $Author: ing07385 $
255d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * $Revision: 1.26 $
265d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
275d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
285d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#ifndef PHLIBNFC_IN_H
295d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#define PHLIBNFC_IN_H
305d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phNfcStatus.h>
315d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phNfcCompId.h>
325d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phNfcHalTypes.h>
335d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phNfcInterface.h>
345d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phNfcConfig.h>
355d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phDbgTrace.h>
365d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phHal4Nfc.h>
375d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_NdefMap.h>
385d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_OvrHal.h>
395d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_SmtCrdFmt.h>
405d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_Llcp.h>
415d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_LlcpTransport.h>
425d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phOsalNfc_Timer.h>
435d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phLibNfc_SE.h>
445d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phFriNfc_NdefReg.h>
455d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phLibNfc.h>
465d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phLibNfc_initiator.h>
475d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phLibNfc_ndef_raw.h>
485d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phNfcLlcpTypes.h>
495d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
505d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/**Maximum number of Records.Presently set to a realistic value of 128
515d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   Configurable upto 1K*/
525d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#define    MAX_NO_OF_RECORDS    128U
535d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#define    CHK_NDEF_NOT_DONE   0x02U
545d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
555d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellytypedef struct phLibNfc_status
565d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly{
575d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    unsigned                    RlsCb_status : 1;
585d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    unsigned                    DiscEnbl_status : 1;
595d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    unsigned                    Connect_status : 1;
605d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    unsigned                    TransProg_status : 1;
615d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    unsigned                    RelsProg_status : 1;
625d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    unsigned                    GenCb_pending_status : 1;
635d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    unsigned                    Shutdown_pending_status : 1;
645d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    unsigned                    Discovery_pending_status : 1;
655d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
665d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly}Status_t;
675d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellytypedef enum phLibNfc_State{
685d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    eLibNfcHalStateShutdown   = 0x00,  /**< closed*/
695d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    eLibNfcHalInitInProgress,
705d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    eLibNfcHalInited,
715d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    eLibNfcHalShutdownInProgress,
725d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    eLibNfcHalStateInitandIdle,
735d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    eLibNfcHalStateConfigReady ,
745d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    eLibNfcHalStateConnect,
755d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    eLibNfcHalStateTransaction,
765d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    eLibNfcHalStatePresenceChk,
775d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    eLibNfcHalStateRelease,
785d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    eLibNfcHalStateInvalid
795d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly} phLibNfc_State_t;
805d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
815d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
825d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
835d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
845d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellytypedef struct phLibNfc_Hal_CB_Info
855d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly{
865d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Init call back & its context*/
875d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_RspCb_t              pClientInitCb;
885d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientInitCntx;
895d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Shutdown call back & its context*/
905d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_RspCb_t              pClientShutdownCb;
915d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientShtdwnCntx;
925d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Connect call back & its context*/
935d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_ConnectCallback_t    pClientConnectCb;
945d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientConCntx;
955d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*DisConnect call back & its context*/
965d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_DisconnectCallback_t pClientDisConnectCb;
975d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientDConCntx;
985d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
995d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Transceive Call back & it's context*/
1005d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_TransceiveCallback_t pClientTransceiveCb;
1015d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientTranseCntx;
1025d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Check Ndef Call back & it's context*/
1035d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_ChkNdefRspCb_t       pClientCkNdefCb;
1045d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientCkNdefCntx;
1055d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Read Ndef Call back & it's context*/
1065d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_RspCb_t              pClientRdNdefCb;
1075d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientRdNdefCntx;
1085d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Write Ndef Call back & it's context*/
1095d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_RspCb_t              pClientWrNdefCb;
1105d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientWrNdefCntx;
1115d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1125d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1135d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Discover Call back & it's context*/
1145d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_RspCb_t              pClientDisConfigCb;
1155d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientDisCfgCntx;
1165d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1175d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Presence check Call back & it's context*/
1185d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_RspCb_t              pClientPresChkCb;
1195d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientPresChkCntx;
1205d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1215d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Register notification Call back & it's context*/
1225d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_NtfRegister_RspCb_t   pClientNtfRegRespCB;
1235d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientNtfRegRespCntx;
1245d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1255d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Ndef Notification CB*/
1265d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_Ndef_Search_RspCb_t   pClientNdefNtfRespCb;
1275d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientNdefNtfRespCntx;
1285d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1295d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*LLCP Check CB*/
1305d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_ChkLlcpRspCb_t       pClientLlcpCheckRespCb;
1315d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                           *pClientLlcpCheckRespCntx;
1325d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
133c56a3c7bc332a6656bedf342236267b636051170Sylvain Fonteneau    /*LLCP Link CB*/
134c56a3c7bc332a6656bedf342236267b636051170Sylvain Fonteneau    pphLibNfc_LlcpLinkStatusCb_t   pClientLlcpLinkCb;
135c56a3c7bc332a6656bedf342236267b636051170Sylvain Fonteneau    void                           *pClientLlcpLinkCntx;
136c56a3c7bc332a6656bedf342236267b636051170Sylvain Fonteneau
1377b187e70a5f0ffc021cc06a9f1a2bf2c0f8f8767Sunil Jogi    /*LLCP service discovery*/
1387b187e70a5f0ffc021cc06a9f1a2bf2c0f8f8767Sunil Jogi    pphLibNfc_RspCb_t              pClientLlcpDiscoveryCb;
1397b187e70a5f0ffc021cc06a9f1a2bf2c0f8f8767Sunil Jogi    void                           *pClientLlcpDiscoveryCntx;
1407b187e70a5f0ffc021cc06a9f1a2bf2c0f8f8767Sunil Jogi
1415d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly}phLibNfc_Hal_CB_Info_t;
1425d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1435d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellytypedef struct phLibNfc_NdefInfo
1445d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly{
1455d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    bool_t                       NdefContinueRead;
1465d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint32_t                     NdefActualSize,
1475d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                                 AppWrLength;
1485d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phFriNfc_NdefMap_t           *psNdefMap;
1495d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint16_t                     NdefSendRecvLen;
1505d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint16_t                     NdefDataCount;
1515d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phNfc_sData_t                *psUpperNdefMsg;
1525d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint32_t                     NdefReadTimerId,
1535d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                                 NdefLength;
1545d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint8_t                      is_ndef ;
1555d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phFriNfc_sNdefSmtCrdFmt_t    *ndef_fmt ;
1565d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_Last_Call_t         eLast_Call;
1575d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint32_t                     Chk_Ndef_Timer_Id;
1585d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1595d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1605d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Format Ndef Call back & it's context*/
1615d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    pphLibNfc_RspCb_t            pClientNdefFmtCb;
1625d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    void                        *pClientNdefFmtCntx;
1635d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_Ndef_SrchType_t    *pNdef_NtfSrch_Type;
1645d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1655d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly}phLibNfc_NdefInfo_t;
1665d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1675d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellytypedef struct phLibNfc_NdefRecInfo
1685d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly{
1695d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phFriNfc_NdefReg_CbParam_t  CbParam;
1705d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phFriNfc_NdefReg_t          NdefReg;
1715d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint8_t                     *NdefTypes_array[100];
1725d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phFriNfc_NdefRecord_t       RecordsExtracted;
1735d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint8_t                     ChunkedRecordsarray[MAX_NO_OF_RECORDS];
1745d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint32_t                    NumberOfRecords;
1755d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint8_t                     IsChunked[MAX_NO_OF_RECORDS];
1765d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint32_t                    NumberOfRawRecords;
1775d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint8_t                     *RawRecords[MAX_NO_OF_RECORDS];
1785d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phFriNfc_NdefReg_Cb_t       *NdefCb;
1795d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phNfc_sData_t               ndef_message;
1805d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly}phLibNfc_NdefRecInfo_t;
1815d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1825d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellytypedef struct phLibNfc_LlcpInfo
1835d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly{
1845d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   /* Local parameters for LLC, given upon config
1855d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    * and used upon detection.
1865d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    */
1875d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   phLibNfc_Llcp_sLinkParameters_t sLocalParams;
1885d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1895d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   /* LLCP compliance flag */
1905d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   bool_t bIsLlcp;
1915d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1925d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   /* Monitor structure for LLCP Transport */
1935d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   phFriNfc_LlcpTransport_t sLlcpTransportContext;
1945d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1955d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   /* Monitor structure for LLCP LLC */
1965d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   phFriNfc_Llcp_t sLlcpContext;
1975d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1985d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   /* LLC Rx buffer */
1994bbf618b661ce7787efab168dd106115268fd539Sunil Jogi   uint8_t pRxBuffer[PHFRINFC_LLCP_PDU_HEADER_MAX + PHFRINFC_LLCP_MIU_DEFAULT + PHFRINFC_LLCP_MIUX_MAX];
2005d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2015d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   /* LLC Tx buffer */
2024bbf618b661ce7787efab168dd106115268fd539Sunil Jogi   uint8_t pTxBuffer[PHFRINFC_LLCP_PDU_HEADER_MAX + PHFRINFC_LLCP_MIU_DEFAULT + PHFRINFC_LLCP_MIUX_MAX];
2035d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2045d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly} phLibNfc_LlcpInfo_t;
2055d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2065d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellytypedef struct phLibNfc_LibContext
2075d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly{
2085d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phHal_sHwReference_t         *psHwReference;
2095d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    Status_t                     status;
2105d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phHal_sEmulationCfg_t        sCardEmulCfg;
2115d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_SeCtxt_t            sSeContext;
2125d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phNfc_sState_t               LibNfcState;
2135d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2145d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phHal_sDevInputParam_t       *psDevInputParam;
2155d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2165d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_NdefInfo_t          ndef_cntx;
2175d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_NfcIpInfo_t         sNfcIp_Context;
2185d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2195d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phFriNfc_OvrHal_t            *psOverHalCtxt;
2205d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_Registry_Info_t     RegNtfType;
2215d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint8_t                      dev_cnt;
2225d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2235d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*To re configure the discovery wheel*/
2245d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_sADD_Cfg_t          sADDconfig;
2255d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint32_t                     Connected_handle,
2265d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                                 Discov_handle[MAX_REMOTE_DEVICES];
2275d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
22834caeca8a5ec2aedade68a77393d0aff03f9bd72Daniel Tomas    /* To store the previous connected handle in case of Multiple protocol tags */
22934caeca8a5ec2aedade68a77393d0aff03f9bd72Daniel Tomas    uint32_t Prev_Connected_handle;
23034caeca8a5ec2aedade68a77393d0aff03f9bd72Daniel Tomas
2315d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Call back function pointers */
2325d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2335d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_eDiscoveryConfigMode_t        eLibNfcCfgMode;
2345d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2355d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phHal4Nfc_DiscoveryInfo_t      *psDiscInfo;
2365d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2375d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_eReleaseType_t        ReleaseType;
2385d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /**Transaction Related Info */
2395d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_sTransceiveInfo_t     *psTransInfo;
2405d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_sTransceiveInfo_t     *psBufferedAuth;
2415d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    uint8_t                        LastTrancvSuccess;
2425d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_RemoteDevList_t       psRemoteDevList[MAX_REMOTE_DEVICES];
2435d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*To Call back function pointers & Client context*/
2445d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_Hal_CB_Info_t           CBInfo;
2455d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2465d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*Ndef RTD search Info*/
2475d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_NdefRecInfo_t    phLib_NdefRecCntx;
2485d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2495d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /*LLCP Info*/
2505d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phLibNfc_LlcpInfo_t          llcp_cntx;
2515d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2525d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    /* Pointer to Lib context */
2535d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly} phLibNfc_LibContext_t,*pphLibNfc_LibContext_t;
2545d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2555d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellyextern void phLibNfc_Pending_Shutdown(void);
2565d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellyextern pphLibNfc_LibContext_t gpphLibContext;
2575d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellyextern NFCSTATUS
2585d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick PellyphLibNfc_UpdateNextState(
2595d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                         pphLibNfc_LibContext_t psNfcHalCtxt,
2605d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                         phLibNfc_State_t        next_state
2615d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                         );
2625d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2635d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellyextern void
2645d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick PellyphLibNfc_UpdateCurState(
2655d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                        NFCSTATUS      status,
2665d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                        pphLibNfc_LibContext_t psNfcHalCtxt
2675d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                        );
2685d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2695d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellyextern void
2705d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick PellyphLibNfc_Reconnect_Mifare_Cb (
2715d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                    void                            *pContext,
2725d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                    phHal_sRemoteDevInformation_t   *psRemoteDevInfo,
2735d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                    NFCSTATUS                       status);
2745d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2755d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2765d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#endif
2775d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2785d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
279