nfc_hal_int.h revision 45e68232b8524aca5165dca28b994ec8c11593b1
16bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis/****************************************************************************** 26bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * 36bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * Copyright (C) 2009-2013 Broadcom Corporation 46bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * 56bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * Licensed under the Apache License, Version 2.0 (the "License"); 66bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * you may not use this file except in compliance with the License. 76bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * You may obtain a copy of the License at: 86bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * 96bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * http://www.apache.org/licenses/LICENSE-2.0 106bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * 116bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * Unless required by applicable law or agreed to in writing, software 126bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * distributed under the License is distributed on an "AS IS" BASIS, 136bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 146bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * See the License for the specific language governing permissions and 156bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * limitations under the License. 166bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * 176bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis ******************************************************************************/ 186bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis 1940d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose 205ac1df3e15f91ed663826faec7efe2462c18d98cAnna Zaks/****************************************************************************** 216bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * 226bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * this file contains the NCI transport internal definitions and functions. 236bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis * 2440d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose ******************************************************************************/ 25964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose 26964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#ifndef NFC_HAL_INT_H 27964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#define NFC_HAL_INT_H 28964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose 29964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#include "nfc_hal_target.h" 30964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#include "gki.h" 31964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#include "nci_defs.h" 32964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#include "nfc_brcm_defs.h" 3340d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose#include "nfc_hal_api.h" 3440d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose#include "nfc_hal_int_api.h" 3540d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose 3640d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose#ifdef __cplusplus 3740d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Roseextern "C" { 3840d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose#endif 3940d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose 40964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose/**************************************************************************** 41964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose** NFC HAL TASK transport definitions 42964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose****************************************************************************/ 43964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose/* NFC HAL Task event masks */ 44964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#define NFC_HAL_TASK_EVT_DATA_RDY EVENT_MASK (APPL_EVT_0) 45964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#define NFC_HAL_TASK_EVT_INITIALIZE EVENT_MASK (APPL_EVT_5) 46964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#define NFC_HAL_TASK_EVT_TERMINATE EVENT_MASK (APPL_EVT_6) 47964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#define NFC_HAL_TASK_EVT_POWER_CYCLE EVENT_MASK (APPL_EVT_7) 48964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose 4940d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose#define NFC_HAL_TASK_EVT_MBOX (TASK_MBOX_0_EVT_MASK) 5040d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose 5140d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose/* NFC HAL Task mailbox definitions */ 5240d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose#define NFC_HAL_TASK_MBOX (TASK_MBOX_0) 5340d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose 5440d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose/* NFC HAL Task Timer events */ 5540d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose#ifndef NFC_HAL_QUICK_TIMER_EVT_MASK 56964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#define NFC_HAL_QUICK_TIMER_EVT_MASK (TIMER_0_EVT_MASK) 57964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#endif 58964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose 59964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#ifndef NFC_HAL_QUICK_TIMER_ID 60964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#define NFC_HAL_QUICK_TIMER_ID (TIMER_0) 61964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose#endif 62964490c0a8bd3398dc85d224a167ca9c35a36c85Jordan Rose 6340d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose/* NFC HAL Task Timer types */ 6440d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose#define NFC_HAL_TTYPE_NCI_WAIT_RSP 0 6540d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose#define NFC_HAL_TTYPE_POWER_CYCLE 1 6640d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose#define NFC_HAL_TTYPE_NFCC_ENABLE 2 6740d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose 6840d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose/* NFC HAL Task Wait Response flag */ 6940d8551890bc8454c4e0a28c9072c9c1d1dd588aJordan Rose#define NFC_HAL_WAIT_RSP_CMD 0x10 /* wait response on an NCI command */ 706bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis#define NFC_HAL_WAIT_RSP_VSC 0x20 /* wait response on an NCI vendor specific command */ 716bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis#define NFC_HAL_WAIT_RSP_PROP 0x40 /* wait response on a proprietary command */ 7257300760964904cc022a175643342f29f46b7e6bAnna Zaks#define NFC_HAL_WAIT_RSP_NONE 0x00 /* not waiting for anything */ 736bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis 7457300760964904cc022a175643342f29f46b7e6bAnna Zakstypedef UINT8 tNFC_HAL_WAIT_RSP; 7557300760964904cc022a175643342f29f46b7e6bAnna Zaks 7657300760964904cc022a175643342f29f46b7e6bAnna Zakstypedef UINT16 tNFC_HAL_HCI_EVT; 7757300760964904cc022a175643342f29f46b7e6bAnna Zaks 7857300760964904cc022a175643342f29f46b7e6bAnna Zaks 793f5e8d87dbf449d8b39fe96068415428594d370eAnna Zaks#define NFC_HAL_HCI_DH_TARGET_HANDLE 0xF2 803152b3cb5b6a2f797d0972c81a5eb3fd69c0d620Anna Zaks#define NFC_HAL_HCI_UICC0_TARGET_HANDLE 0xF3 81063e0887ad65d666d23ee3178436ad6507abbd1bAnna Zaks#define NFC_HAL_HCI_UICC1_TARGET_HANDLE 0xF4 826bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis 83514f2c9dcb9e04b52929c5b141a6fe88bd68b33fTed Kremenek#define NFC_HAL_HCI_SESSION_ID_LEN 0x08 84514f2c9dcb9e04b52929c5b141a6fe88bd68b33fTed Kremenek#define NFC_HAL_HCI_NETWK_INFO_SIZE 184 85514f2c9dcb9e04b52929c5b141a6fe88bd68b33fTed Kremenek#define NFC_HAL_HCI_DH_NETWK_INFO_SIZE 111 86514f2c9dcb9e04b52929c5b141a6fe88bd68b33fTed Kremenek#define NFC_HAL_HCI_MIN_NETWK_INFO_SIZE 12 878ff5c41f2bde7ebbe568b4c15e59f14b8befae66Anna Zaks#define NFC_HAL_HCI_MIN_DH_NETWK_INFO_SIZE 11 8818c66fdc3c4008d335885695fe36fb5353c5f672Ted Kremenek#define NFC_HAL_HCI_PIPE_INFO_SIZE 5 8918c66fdc3c4008d335885695fe36fb5353c5f672Ted Kremenek 90514f2c9dcb9e04b52929c5b141a6fe88bd68b33fTed Kremenek#define NFC_HAL_HCI_ANY_SET_PARAMETER 0x01 91514f2c9dcb9e04b52929c5b141a6fe88bd68b33fTed Kremenek#define NFC_HAL_HCI_ANY_GET_PARAMETER 0x02 928ff5c41f2bde7ebbe568b4c15e59f14b8befae66Anna Zaks#define NFC_HAL_HCI_ADM_NOTIFY_ALL_PIPE_CLEARED 0x15 9318c66fdc3c4008d335885695fe36fb5353c5f672Ted Kremenek 9457300760964904cc022a175643342f29f46b7e6bAnna Zaks#define NFC_HAL_HCI_WHITELIST_INDEX 0x03 953f5e8d87dbf449d8b39fe96068415428594d370eAnna Zaks 96514f2c9dcb9e04b52929c5b141a6fe88bd68b33fTed Kremenek#define NFC_HAL_HCI_ADMIN_PIPE 0x01 97514f2c9dcb9e04b52929c5b141a6fe88bd68b33fTed Kremenek#define NFC_HAL_HCI_HOST_ID_UICC0 0x02 /* Host ID for UICC 0 */ 98777d706547ebc751d998134774d9d5388fff8e02Anna Zaks#define NFC_HAL_HCI_HOST_ID_UICC1 0x03 /* Host ID for UICC 1 */ 99777d706547ebc751d998134774d9d5388fff8e02Anna Zaks#define NFC_HAL_HCI_COMMAND_TYPE 0x00 100777d706547ebc751d998134774d9d5388fff8e02Anna Zaks#define NFC_HAL_HCI_RESPONSE_TYPE 0x02 1016bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis 1026bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis/* NFC HAL HCI responses */ 1036bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis#define NFC_HAL_HCI_ANY_OK 0x00 1046bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis 1056bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis/* Flag defintions for tNFC_HAL_NVM */ 1066bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis#define NFC_HAL_NVM_FLAGS_NO_NVM 0x01 /* No NVM available */ 1076bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis#define NFC_HAL_NVM_FLAGS_LPM_BAD 0x02 /* FPM patch in NVM failed CRC check */ 1086bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis#define NFC_HAL_NVM_FLAGS_FPM_BAD 0x04 /* LPM patch in NVM failed CRC check */ 1096bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis#define NFC_HAL_NVM_FLAGS_PATCH_PRESENT 0x08 /* Patch is present in NVM */ 1106bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis 1116bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis/* NFC HAL transport configuration */ 1126bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidistypedef struct 1136bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis{ 114255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek BOOLEAN shared_transport; /* TRUE if using shared HCI/NCI transport */ 115255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek UINT8 userial_baud; 1167b73e0832b20af1f43601a3d19e76d02d9f4dce5Ted Kremenek UINT8 userial_fc; 1177b73e0832b20af1f43601a3d19e76d02d9f4dce5Ted Kremenek} tNFC_HAL_TRANS_CFG; 118a2a860306e3697fcf7a12c5ba59551ca60578968Anna Zaks 119a2a860306e3697fcf7a12c5ba59551ca60578968Anna Zaks#ifdef TESTER 120a2a860306e3697fcf7a12c5ba59551ca60578968Anna Zaks#define NFC_HAL_TRANS_CFG_QUALIFIER /* For Insight, ncit_cfg is runtime-configurable */ 12139ac1876f6f9a1a8e0070f0df61036c7ba05202bAnna Zaks#else 1228bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek#define NFC_HAL_TRANS_CFG_QUALIFIER const /* For all other platforms, ncit_cfg is constant */ 1236bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis#endif 12457300760964904cc022a175643342f29f46b7e6bAnna Zaksextern NFC_HAL_TRANS_CFG_QUALIFIER tNFC_HAL_TRANS_CFG nfc_hal_trans_cfg; 12557300760964904cc022a175643342f29f46b7e6bAnna Zaks 12657300760964904cc022a175643342f29f46b7e6bAnna Zaks/***************************************************************************** 12757300760964904cc022a175643342f29f46b7e6bAnna Zaks* BT HCI definitions 1285d0ea6d62e076c776ddad028c4eb615783be1323Anna Zaks*****************************************************************************/ 1295d0ea6d62e076c776ddad028c4eb615783be1323Anna Zaks#define BT_HDR NFC_HDR 13066c486f275531df6362b3511fc3af6563561801bTed Kremenek 13166c486f275531df6362b3511fc3af6563561801bTed Kremenek/* Tranport message type */ 132ebae6d0209e1ec3d5ea14f9e63bd0d740218ed14Anna Zaks#define HCIT_TYPE_COMMAND 0x01 1335d0ea6d62e076c776ddad028c4eb615783be1323Anna Zaks#define HCIT_TYPE_EVENT 0x04 1346bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis#define HCIT_TYPE_NFC 0x10 1356bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis 1366bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis/* Vendor-Specific BT HCI definitions */ 137461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks#define HCI_SUCCESS 0x00 1384e4d08403ca5cfd4d558fa2936215d3a4e5a528dDavid Blaikie#define HCI_GRP_VENDOR_SPECIFIC (0x3F << 10) /* 0xFC00 */ 1394e4d08403ca5cfd4d558fa2936215d3a4e5a528dDavid Blaikie#define HCI_BRCM_WRITE_SLEEP_MODE (0x0027 | HCI_GRP_VENDOR_SPECIFIC) 140461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks#define HCI_GRP_HOST_CONT_BASEBAND_CMDS (0x03 << 10) /* 0x0C00 */ 141461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks#define HCI_RESET (0x0003 | HCI_GRP_HOST_CONT_BASEBAND_CMDS) 142eeea7c44a6986752fedee1ef1bcef855db373872Anna Zaks#define HCI_COMMAND_COMPLETE_EVT 0x0E 14339ac1876f6f9a1a8e0070f0df61036c7ba05202bAnna Zaks#define HCI_BRCM_WRITE_SLEEP_MODE_LENGTH 12 14439ac1876f6f9a1a8e0070f0df61036c7ba05202bAnna Zaks#define HCI_BRCM_UPDATE_BAUD_RATE_UNENCODED_LENGTH 0x06 14539ac1876f6f9a1a8e0070f0df61036c7ba05202bAnna Zaks#define HCIE_PREAMBLE_SIZE 2 146955cd444f445bcdbade1cdd3926254c8ee7890d8Anna Zaks 147955cd444f445bcdbade1cdd3926254c8ee7890d8Anna Zaks/**************************************************************************** 148c7ecc43c33a21b82c49664910b19fcc1f555aa51Anna Zaks** Internal constants and definitions 149c7ecc43c33a21b82c49664910b19fcc1f555aa51Anna Zaks****************************************************************************/ 150fadcd5d5bbe1bfc1c6b8d819cc2242f780a49fecAnna Zaks 151fadcd5d5bbe1bfc1c6b8d819cc2242f780a49fecAnna Zaks/* NFC HAL receiving states */ 152fadcd5d5bbe1bfc1c6b8d819cc2242f780a49fecAnna Zaksenum 1536bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis{ 1546bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis NFC_HAL_RCV_IDLE_ST, /* waiting for packet type byte */ 1556bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis NFC_HAL_RCV_NCI_MSG_ST, /* waiting for the first byte of NCI header */ 1566bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis NFC_HAL_RCV_NCI_HDR_ST, /* reading NCI header */ 1576bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis NFC_HAL_RCV_NCI_PAYLOAD_ST, /* reading NCI payload */ 1586bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis NFC_HAL_RCV_BT_MSG_ST, /* waiting for the first byte of BT header */ 1596bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis NFC_HAL_RCV_BT_HDR_ST, /* reading BT HCI header */ 1606bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis NFC_HAL_RCV_BT_PAYLOAD_ST /* reading BT HCI payload */ 1616bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis}; 1626bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis 1636bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis/* errors during NCI packet reassembly process */ 1646bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis#define NFC_HAL_NCI_RAS_TOO_BIG 0x01 1653f10e32b15e54f507aed90cb72d73c7acaa500bbAnna Zaks#define NFC_HAL_NCI_RAS_ERROR 0x02 1663f10e32b15e54f507aed90cb72d73c7acaa500bbAnna Zakstypedef UINT8 tNFC_HAL_NCI_RAS; 1673f10e32b15e54f507aed90cb72d73c7acaa500bbAnna Zaks 1683f10e32b15e54f507aed90cb72d73c7acaa500bbAnna Zaks/* NFC HAL power mode */ 169eeea7c44a6986752fedee1ef1bcef855db373872Anna Zaksenum 17017a38e2636a8b1ce473fc6504c4b16cb09db29f4Jordy Rose{ 17117a38e2636a8b1ce473fc6504c4b16cb09db29f4Jordy Rose NFC_HAL_POWER_MODE_FULL, /* NFCC is full power mode */ 17217a38e2636a8b1ce473fc6504c4b16cb09db29f4Jordy Rose NFC_HAL_POWER_MODE_LAST 1736a93bd526c5136ee5a26871e829cf5a8548a1c6aAnna Zaks}; 1746a93bd526c5136ee5a26871e829cf5a8548a1c6aAnna Zakstypedef UINT8 tNFC_HAL_POWER_MODE; 1756a93bd526c5136ee5a26871e829cf5a8548a1c6aAnna Zaks 1766a93bd526c5136ee5a26871e829cf5a8548a1c6aAnna Zaks 177063e0887ad65d666d23ee3178436ad6507abbd1bAnna Zaks/* NFC HAL event for low power mode */ 178063e0887ad65d666d23ee3178436ad6507abbd1bAnna Zaksenum 179063e0887ad65d666d23ee3178436ad6507abbd1bAnna Zaks{ 180063e0887ad65d666d23ee3178436ad6507abbd1bAnna Zaks NFC_HAL_LP_TX_DATA_EVT, /* DH is sending data to NFCC */ 1813d7c44e01d568e5d5c0fac9c6ccb3f080157ba19Anna Zaks NFC_HAL_LP_RX_DATA_EVT, /* DH received data from NFCC */ 1823d7c44e01d568e5d5c0fac9c6ccb3f080157ba19Anna Zaks NFC_HAL_LP_TIMEOUT_EVT, /* Timeout */ 1833d7c44e01d568e5d5c0fac9c6ccb3f080157ba19Anna Zaks NFC_HAL_LP_LAST_EVT 1843d7c44e01d568e5d5c0fac9c6ccb3f080157ba19Anna Zaks}; 1853d7c44e01d568e5d5c0fac9c6ccb3f080157ba19Anna Zakstypedef UINT8 tNFC_HAL_LP_EVT; 1863d7c44e01d568e5d5c0fac9c6ccb3f080157ba19Anna Zaks 1873d7c44e01d568e5d5c0fac9c6ccb3f080157ba19Anna Zaks#define NFC_HAL_ASSERT_NFC_WAKE 0x00 /* assert NFC_WAKE */ 1883d7c44e01d568e5d5c0fac9c6ccb3f080157ba19Anna Zaks#define NFC_HAL_DEASSERT_NFC_WAKE 0x01 /* deassert NFC_WAKE */ 1893d7c44e01d568e5d5c0fac9c6ccb3f080157ba19Anna Zaks 1903d7c44e01d568e5d5c0fac9c6ccb3f080157ba19Anna Zaks#define NFC_HAL_BT_HCI_CMD_HDR_SIZE 3 /* opcode (2) + length (1) */ 1913d7c44e01d568e5d5c0fac9c6ccb3f080157ba19Anna Zaks#define NFC_HAL_CMD_TOUT (2000) /* timeout for NCI CMD (in ms) */ 1923d7c44e01d568e5d5c0fac9c6ccb3f080157ba19Anna Zaks 193c7ecc43c33a21b82c49664910b19fcc1f555aa51Anna Zaks#define NFC_HAL_SAVED_HDR_SIZE (2) 194c7ecc43c33a21b82c49664910b19fcc1f555aa51Anna Zaks#define NFC_HAL_SAVED_CMD_SIZE (2) 195c7ecc43c33a21b82c49664910b19fcc1f555aa51Anna Zaks 196c7ecc43c33a21b82c49664910b19fcc1f555aa51Anna Zaks#ifndef NFC_HAL_DEBUG 197c7ecc43c33a21b82c49664910b19fcc1f555aa51Anna Zaks#define NFC_HAL_DEBUG TRUE 1980bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks#endif 1990bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks 2000bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks#if (NFC_HAL_DEBUG == TRUE) 201fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Roseextern const char * const nfc_hal_init_state_str[]; 202fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose#define NFC_HAL_SET_INIT_STATE(state) HAL_TRACE_DEBUG3 ("init state: %d->%d(%s)", nfc_hal_cb.dev_cb.initializing_state, state, nfc_hal_init_state_str[state]); nfc_hal_cb.dev_cb.initializing_state = state; 2030bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks#else 2040bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks#define NFC_HAL_SET_INIT_STATE(state) nfc_hal_cb.dev_cb.initializing_state = state; 2050bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks#endif 2060bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks 207fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose 2080bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks/* NFC HAL - NFCC initializing state */ 209fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Roseenum 210063e0887ad65d666d23ee3178436ad6507abbd1bAnna Zaks{ 211063e0887ad65d666d23ee3178436ad6507abbd1bAnna Zaks NFC_HAL_INIT_STATE_IDLE, /* Initialization is done */ 2120bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks NFC_HAL_INIT_STATE_W4_XTAL_SET, /* Waiting for crystal setting rsp */ 2138ba721428af297e540fb40b176eeeea0ee010c1fAnna Zaks NFC_HAL_INIT_STATE_POST_XTAL_SET, /* Waiting for reset ntf after xtal set */ 2140bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks NFC_HAL_INIT_STATE_W4_NFCC_ENABLE, /* Waiting for reset ntf atter REG_PU up */ 2150bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks NFC_HAL_INIT_STATE_W4_BUILD_INFO, /* Waiting for build info rsp */ 2160bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks NFC_HAL_INIT_STATE_W4_PATCH_INFO, /* Waiting for patch info rsp */ 2170bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks NFC_HAL_INIT_STATE_W4_APP_COMPLETE, /* Waiting for complete from application */ 2180bd6b110e908892d4b5c8671a9f435a1d72ad16aAnna Zaks NFC_HAL_INIT_STATE_W4_POST_INIT_DONE, /* Waiting for complete of post init */ 2198bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek NFC_HAL_INIT_STATE_W4_CONTROL_DONE, /* Waiting for control release */ 220fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose NFC_HAL_INIT_STATE_W4_PREDISCOVER_DONE,/* Waiting for complete of prediscover */ 221fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose NFC_HAL_INIT_STATE_CLOSING /* Shutting down */ 222fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose}; 2236bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidistypedef UINT8 tNFC_HAL_INIT_STATE; 2246bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis 225fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose/* NFC HAL - NFCC config items during post initialization */ 2268ba721428af297e540fb40b176eeeea0ee010c1fAnna Zaksenum 227fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose{ 228fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose NFC_HAL_DM_CONFIG_LPTD, 229fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose NFC_HAL_DM_CONFIG_PLL_325, 230fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose NFC_HAL_DM_CONFIG_START_UP, 2316bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis NFC_HAL_DM_CONFIG_I93_DATA_RATE, 2326bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis NFC_HAL_DM_CONFIG_FW_FSM, 233063e0887ad65d666d23ee3178436ad6507abbd1bAnna Zaks NFC_HAL_DM_CONFIG_START_UP_VSC, 234785950e59424dca7ce0081bebf13c0acd2c4fff6Jordan Rose NFC_HAL_DM_CONFIG_NONE 23557300760964904cc022a175643342f29f46b7e6bAnna Zaks}; 236785950e59424dca7ce0081bebf13c0acd2c4fff6Jordan Rosetypedef UINT8 tNFC_HAL_DM_CONFIG; 2376bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis 2386bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis/* callback function prototype */ 239b805c8ff133ef0c62df032fa711d6b13c5afd7f4Anna Zakstypedef struct 240b805c8ff133ef0c62df032fa711d6b13c5afd7f4Anna Zaks{ 241b805c8ff133ef0c62df032fa711d6b13c5afd7f4Anna Zaks UINT16 opcode; 2420e12ebfd3ef9ad5d894466c6e4910ac5e6041034Anna Zaks UINT16 param_len; 2439b0c749a20d0f7d0e63441d76baa15def3f37fdbAnna Zaks UINT8 *p_param_buf; 2449b0c749a20d0f7d0e63441d76baa15def3f37fdbAnna Zaks} tNFC_HAL_BTVSC_CPLT; 2455ac1df3e15f91ed663826faec7efe2462c18d98cAnna Zaks 2465ac1df3e15f91ed663826faec7efe2462c18d98cAnna Zakstypedef void (tNFC_HAL_BTVSC_CPLT_CBACK) (tNFC_HAL_BTVSC_CPLT *p1); 2475ac1df3e15f91ed663826faec7efe2462c18d98cAnna Zaks 2485ac1df3e15f91ed663826faec7efe2462c18d98cAnna Zaks 2495ac1df3e15f91ed663826faec7efe2462c18d98cAnna Zaks/* data type for NFC_HAL_HCI_RSP_NV_READ_EVT */ 2505ac1df3e15f91ed663826faec7efe2462c18d98cAnna Zakstypedef struct 2515ac1df3e15f91ed663826faec7efe2462c18d98cAnna Zaks{ 2525ac1df3e15f91ed663826faec7efe2462c18d98cAnna Zaks NFC_HDR hdr; 2535ac1df3e15f91ed663826faec7efe2462c18d98cAnna Zaks UINT8 block; 2549b0c749a20d0f7d0e63441d76baa15def3f37fdbAnna Zaks UINT16 size; 2559b0c749a20d0f7d0e63441d76baa15def3f37fdbAnna Zaks tHAL_NFC_STATUS status; 2569b0c749a20d0f7d0e63441d76baa15def3f37fdbAnna Zaks} tNFC_HAL_HCI_RSP_NV_READ_EVT; 2579b0c749a20d0f7d0e63441d76baa15def3f37fdbAnna Zaks 2589b0c749a20d0f7d0e63441d76baa15def3f37fdbAnna Zaks/* data type for NFC_HAL_HCI_RSP_NV_WRITE_EVT */ 2599b0c749a20d0f7d0e63441d76baa15def3f37fdbAnna Zakstypedef struct 2602f3017f9cbd3774f690c979410bfec38423d03afJordan Rose{ 2612f3017f9cbd3774f690c979410bfec38423d03afJordan Rose NFC_HDR hdr; 2622f3017f9cbd3774f690c979410bfec38423d03afJordan Rose tHAL_NFC_STATUS status; 2632f3017f9cbd3774f690c979410bfec38423d03afJordan Rose} tNFC_HAL_HCI_RSP_NV_WRITE_EVT; 2642f3017f9cbd3774f690c979410bfec38423d03afJordan Rose 2652f3017f9cbd3774f690c979410bfec38423d03afJordan Rose 2662f3017f9cbd3774f690c979410bfec38423d03afJordan Rose/* union of all event data types */ 2672f3017f9cbd3774f690c979410bfec38423d03afJordan Rosetypedef union 2682f3017f9cbd3774f690c979410bfec38423d03afJordan Rose{ 2692f3017f9cbd3774f690c979410bfec38423d03afJordan Rose NFC_HDR hdr; 2702f3017f9cbd3774f690c979410bfec38423d03afJordan Rose /* Internal events */ 2712f3017f9cbd3774f690c979410bfec38423d03afJordan Rose tNFC_HAL_HCI_RSP_NV_READ_EVT nv_read; 2720e12ebfd3ef9ad5d894466c6e4910ac5e6041034Anna Zaks tNFC_HAL_HCI_RSP_NV_WRITE_EVT nv_write; 273461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks} tNFC_HAL_HCI_EVENT_DATA; 274461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks 275461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks/***************************************************************************** 276461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks** Control block for NFC HAL 277461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks*****************************************************************************/ 278461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks 279461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks/* Patch RAM Download Control block */ 280461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks 281461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks/* PRM states */ 282461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaksenum 283461af1e502c9bd88330bbf17d449a7593fc0d624Anna Zaks{ 2846bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis NFC_HAL_PRM_ST_IDLE, 2858bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek 28639ac1876f6f9a1a8e0070f0df61036c7ba05202bAnna Zaks /* Secure patch download stated */ 28739ac1876f6f9a1a8e0070f0df61036c7ba05202bAnna Zaks NFC_HAL_PRM_ST_SPD_COMPARE_VERSION, 28839ac1876f6f9a1a8e0070f0df61036c7ba05202bAnna Zaks NFC_HAL_PRM_ST_SPD_GET_PATCH_HEADER, 289c8bb3befcad8cd8fc9556bc265289b07dc3c94c8Anna Zaks NFC_HAL_PRM_ST_SPD_DOWNLOADING, 290df95d146c13cf02e106b32b01d147577d6d6b5a1Anna Zaks NFC_HAL_PRM_ST_SPD_AUTHENTICATING, 291df95d146c13cf02e106b32b01d147577d6d6b5a1Anna Zaks NFC_HAL_PRM_ST_SPD_AUTH_DONE, 29257300760964904cc022a175643342f29f46b7e6bAnna Zaks NFC_HAL_PRM_ST_W4_GET_VERSION 293fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose}; 294fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rosetypedef UINT8 tNFC_HAL_PRM_STATE; 295fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose 296fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose/* Maximum number of patches (currently 2: LPM and FPM) */ 297fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose#define NFC_HAL_PRM_MAX_PATCH_COUNT 2 298fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose#define NFC_HAL_PRM_PATCH_MASK_ALL 0xFFFFFFFF 299fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose 300fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rose/* Structures for PRM Control Block */ 301fa06f0464a04bb7fce1fcfb3780d151bb029e00cJordan Rosetypedef struct 3026bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis{ 3036bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis UINT8 power_mode; 3046bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis UINT16 len; 3056bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis} tNFC_HAL_PRM_PATCHDESC; 30657300760964904cc022a175643342f29f46b7e6bAnna Zaks 30757300760964904cc022a175643342f29f46b7e6bAnna Zakstypedef struct 30857300760964904cc022a175643342f29f46b7e6bAnna Zaks{ 30957300760964904cc022a175643342f29f46b7e6bAnna Zaks tNFC_HAL_PRM_STATE state; /* download state */ 31057300760964904cc022a175643342f29f46b7e6bAnna Zaks UINT32 flags; /* internal flags */ 31157300760964904cc022a175643342f29f46b7e6bAnna Zaks UINT16 cur_patch_len_remaining;/* bytes remaining in patchfile to process */ 31257300760964904cc022a175643342f29f46b7e6bAnna Zaks const UINT8* p_cur_patch_data; /* pointer to patch currently being downloaded */ 31357300760964904cc022a175643342f29f46b7e6bAnna Zaks UINT16 cur_patch_offset; /* offset of next byte to process */ 3146bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis UINT32 dest_ram; 3156bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis TIMER_LIST_ENT timer; /* Timer for patch download */ 3166bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis 3176bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis /* Secure Patch Download */ 3186bcb48dc67e417e0ecce803f28d13bbea2ee0243Argyrios Kyrtzidis UINT32 spd_patch_needed_mask; /* Mask of patches that need to be downloaded */ 319 UINT8 spd_patch_count; /* Number of patches left to download */ 320 UINT8 spd_cur_patch_idx; /* Current patch being downloaded */ 321 322 tNFC_HAL_PRM_PATCHDESC spd_patch_desc[NFC_HAL_PRM_MAX_PATCH_COUNT]; 323 324 /* I2C-patch */ 325 UINT8 *p_spd_patch; /* pointer to spd patch */ 326 UINT16 spd_patch_len_remaining;/* patch length */ 327 UINT16 spd_patch_offset; /* offset of next byte to process */ 328 329 tNFC_HAL_PRM_FORMAT format; /* format of patch ram */ 330 tNFC_HAL_PRM_CBACK *p_cback; /* Callback for download status notifications */ 331 UINT32 patchram_delay; /* the dealy after patch */ 332} tNFC_HAL_PRM_CB; 333 334/* Information about current patch in NVM */ 335typedef struct 336{ 337 UINT16 project_id; /* Current project_id of patch in nvm */ 338 UINT16 ver_major; /* Current major version of patch in nvm */ 339 UINT16 ver_minor; /* Current minor version of patch in nvm */ 340 UINT16 fpm_size; /* Current size of FPM patch in nvm */ 341 UINT16 lpm_size; /* Current size of LPM patch in nvm */ 342 UINT8 flags; /* See NFC_HAL_NVM_FLAGS_* flag definitions */ 343 UINT8 nvm_type; /* Current NVM Type - UICC/EEPROM */ 344} tNFC_HAL_NVM; 345 346/* Patch for I2C fix */ 347typedef struct 348{ 349 UINT8 *p_patch; /* patch for i2c fix */ 350 UINT32 prei2c_delay; /* the dealy after preI2C patch */ 351 UINT16 len; /* i2c patch length */ 352} tNFC_HAL_PRM_I2C_FIX_CB; 353 354/* Control block for NCI transport */ 355typedef struct 356{ 357 UINT8 nci_ctrl_size; /* Max size for NCI messages */ 358 UINT8 rcv_state; /* current rx state */ 359 UINT16 rcv_len; /* bytes remaining to be received in current rx state */ 360 NFC_HDR *p_rcv_msg; /* buffer to receive NCI message */ 361 NFC_HDR *p_frag_msg; /* fragmented NCI message; waiting for last fragment */ 362 NFC_HDR *p_pend_cmd; /* pending NCI message; waiting for NFCC state to be free */ 363 tNFC_HAL_NCI_RAS nci_ras; /* nci reassembly error status */ 364 TIMER_LIST_ENT nci_wait_rsp_timer; /* Timer for waiting for nci command response */ 365 tNFC_HAL_WAIT_RSP nci_wait_rsp; /* nci wait response flag */ 366 UINT8 last_hdr[NFC_HAL_SAVED_HDR_SIZE];/* part of last NCI command header */ 367 UINT8 last_cmd[NFC_HAL_SAVED_CMD_SIZE];/* part of last NCI command payload */ 368 void *p_vsc_cback; /* the callback function for last VSC command */ 369} tNFC_HAL_NCIT_CB; 370 371/* Control block for device initialization */ 372typedef struct 373{ 374 tNFC_HAL_INIT_STATE initializing_state; /* state of initializing NFCC */ 375 376 UINT32 brcm_hw_id; /* BRCM NFCC HW ID */ 377 tNFC_HAL_DM_CONFIG next_dm_config; /* next config in post initialization */ 378 UINT8 next_startup_vsc; /* next start-up VSC offset in post init */ 379 380 tNFC_HAL_POWER_MODE power_mode; /* NFCC power mode */ 381 UINT8 snooze_mode; /* current snooze mode */ 382 UINT8 new_snooze_mode; /* next snooze mode after receiving cmpl */ 383 UINT8 nfc_wake_active_mode; /* NFC_HAL_LP_ACTIVE_LOW/HIGH */ 384 TIMER_LIST_ENT lp_timer; /* timer for low power mode */ 385 386 387 tHAL_NFC_STATUS_CBACK *p_prop_cback; /* callback to notify complete of proprietary update */ 388} tNFC_HAL_DEV_CB; 389 390/* data members for NFC_HAL-HCI */ 391typedef struct 392{ 393 TIMER_LIST_ENT hci_timer; /* Timer to avoid indefinitely waiting for response */ 394 UINT8 *p_hci_netwk_info_buf; /* Buffer for reading HCI Network information */ 395 UINT8 *p_hci_netwk_dh_info_buf; /* Buffer for reading HCI Network DH information */ 396 UINT8 hci_netwk_config_block; /* Rsp awaiting for hci network configuration block */ 397 BOOLEAN b_wait_hcp_conn_create_rsp; /* Waiting for hcp connection create response */ 398 BOOLEAN clear_all_pipes_to_uicc1; /* UICC1 was restarted for patch download */ 399 BOOLEAN hci_fw_workaround; /* HAL HCI Workaround need */ 400 BOOLEAN hci_fw_validate_netwk_cmd;/* Flag to indicate if hci network ntf to validate */ 401 UINT8 hcp_conn_id; /* NCI Connection id for HCP */ 402} tNFC_HAL_HCI_CB; 403 404typedef struct 405{ 406 tHAL_NFC_CBACK *p_stack_cback; /* Callback for HAL event notification */ 407 tHAL_NFC_DATA_CBACK *p_data_cback; /* Callback for data event notification */ 408 409 TIMER_LIST_Q quick_timer_queue; /* timer list queue */ 410 TIMER_LIST_ENT timer; /* timer for NCI transport task */ 411 412 tNFC_HAL_NCIT_CB ncit_cb; /* NCI transport */ 413 tNFC_HAL_DEV_CB dev_cb; /* device initialization */ 414 tNFC_HAL_NVM nvm_cb; /* Information about current patch in NVM */ 415 416 /* Patchram control block */ 417 tNFC_HAL_PRM_CB prm; 418 tNFC_HAL_PRM_I2C_FIX_CB prm_i2c; 419 420 /* data members for NFC_HAL-HCI */ 421 tNFC_HAL_HCI_CB hci_cb; 422 423 UINT8 pre_discover_done; /* TRUE, when the prediscover config is complete */ 424 425 UINT8 max_rf_credits; /* NFC Max RF data credits */ 426 UINT8 trace_level; /* NFC HAL trace level */ 427} tNFC_HAL_CB; 428 429/* Global NCI data */ 430#if NFC_DYNAMIC_MEMORY == FALSE 431extern tNFC_HAL_CB nfc_hal_cb; 432#else 433#define nfc_hal_cb (*nfc_hal_cb_ptr) 434extern tNFC_HAL_CB *nfc_hal_cb_ptr; 435#endif 436extern UINT8 *p_nfc_hal_pre_discover_cfg; 437/**************************************************************************** 438** Internal nfc functions 439****************************************************************************/ 440 441/* From nfc_hal_main.c */ 442UINT32 nfc_hal_main_task (UINT32 param); 443void nfc_hal_main_init (void); 444void nfc_hal_main_pre_init_done (tHAL_NFC_STATUS); 445void nfc_hal_main_start_quick_timer (TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout); 446void nfc_hal_main_stop_quick_timer (TIMER_LIST_ENT *p_tle); 447void nfc_hal_main_send_error (tHAL_NFC_STATUS status); 448void nfc_hal_send_nci_msg_to_nfc_task (NFC_HDR * p_msg); 449 450/* nfc_hal_nci.c */ 451BOOLEAN nfc_hal_nci_receive_msg (UINT8 byte); 452BOOLEAN nfc_hal_nci_preproc_rx_nci_msg (NFC_HDR *p_msg); 453NFC_HDR* nfc_hal_nci_postproc_rx_nci_msg (void); 454void nfc_hal_nci_assemble_nci_msg (void); 455void nfc_hal_nci_add_nfc_pkt_type (NFC_HDR *p_msg); 456void nfc_hal_nci_send_cmd (NFC_HDR *p_buf); 457void nfc_hal_nci_cmd_timeout_cback (void *p_tle); 458 459/* nfc_hal_dm.c */ 460void nfc_hal_dm_init (void); 461void nfc_hal_dm_set_xtal_freq_index (void); 462void nfc_hal_dm_send_get_build_info_cmd (void); 463void nfc_hal_dm_proc_msg_during_init (NFC_HDR *p_msg); 464void nfc_hal_dm_config_nfcc (void); 465void nfc_hal_dm_send_nci_cmd (const UINT8 *p_data, UINT16 len, tNFC_HAL_NCI_CBACK *p_cback); 466void nfc_hal_dm_send_bt_cmd (const UINT8 *p_data, UINT16 len, tNFC_HAL_BTVSC_CPLT_CBACK *p_cback); 467void nfc_hal_dm_set_nfc_wake (UINT8 cmd); 468void nfc_hal_dm_pre_init_nfcc (void); 469void nfc_hal_dm_shutting_down_nfcc (void); 470BOOLEAN nfc_hal_dm_power_mode_execute (tNFC_HAL_LP_EVT event); 471void nfc_hal_dm_send_pend_cmd (void); 472tHAL_NFC_STATUS nfc_hal_dm_set_config (UINT8 tlv_size, UINT8 *p_param_tlvs, tNFC_HAL_NCI_CBACK *p_cback); 473 474/* nfc_hal_prm.c */ 475void nfc_hal_prm_spd_reset_ntf (UINT8 reset_reason, UINT8 reset_type); 476void nfc_hal_prm_nci_command_complete_cback (tNFC_HAL_NCI_EVT event, UINT16 data_len, UINT8 *p_data); 477void nfc_hal_prm_process_timeout (void *p_tle); 478 479/* nfc_hal_hci.c */ 480void nfc_hal_hci_enable (void); 481void nfc_hal_hci_evt_hdlr (tNFC_HAL_HCI_EVENT_DATA *p_evt_data); 482void nfc_hal_hci_handle_hci_netwk_info (UINT8 *p_data); 483void nfc_hal_hci_handle_hcp_pkt_from_hc (UINT8 *p_data); 484NFC_HDR* nfc_hal_hci_postproc_hcp (void); 485BOOLEAN nfc_hal_hci_handle_hcp_pkt_to_hc (UINT8 *p_data); 486void nfc_hal_hci_timeout_cback (void *p_tle); 487 488 489/* Define default NCI protocol trace function (if protocol tracing is enabled) */ 490#if (defined(NFC_HAL_TRACE_PROTOCOL) && (NFC_HAL_TRACE_PROTOCOL == TRUE)) 491#if !defined (DISP_NCI) 492#define DISP_NCI (DispNci) 493void DispNci (UINT8 *p, UINT16 len, BOOLEAN is_recv); 494#endif /* DISP_NCI */ 495 496/* For displaying vendor-specific HCI commands */ 497void DispHciCmd (BT_HDR *p_buf); 498void DispHciEvt (BT_HDR *p_buf); 499#endif /* NFC_HAL_TRACE_PROTOCOL */ 500 501#ifdef __cplusplus 502} 503#endif 504 505#endif /* NFC_HAL_INT_H */ 506