1b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu/****************************************************************************** 2b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 3b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * Copyright (C) 2012 Broadcom Corporation 4b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 5b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * Licensed under the Apache License, Version 2.0 (the "License"); 6b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * you may not use this file except in compliance with the License. 7b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * You may obtain a copy of the License at: 8b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 9b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * http://www.apache.org/licenses/LICENSE-2.0 10b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 11b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * Unless required by applicable law or agreed to in writing, software 12b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * distributed under the License is distributed on an "AS IS" BASIS, 13b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * See the License for the specific language governing permissions and 15b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * limitations under the License. 16b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 17b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu ******************************************************************************/ 18b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu 19b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu/****************************************************************************** 20b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 21b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * NFC Hardware Abstraction Layer API 22b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu * 23b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu ******************************************************************************/ 24eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#ifndef NFC_HAL_API_H 25eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#define NFC_HAL_API_H 26eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#include <hardware/nfc.h> 27eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#include "data_types.h" 28eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 29eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/**************************************************************************** 30eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** NFC_HDR header definition for NFC messages 31eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu*****************************************************************************/ 32eb190654c5fbaea2f396bb5523f57062f291879aEvan Chutypedef struct 33eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu{ 34eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu UINT16 event; 35eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu UINT16 len; 36eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu UINT16 offset; 37eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu UINT16 layer_specific; 38eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu} NFC_HDR; 39eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#define NFC_HDR_SIZE (sizeof (NFC_HDR)) 40eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 41eb190654c5fbaea2f396bb5523f57062f291879aEvan Chutypedef UINT8 tHAL_NFC_STATUS; 42eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 43ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chutypedef void (tHAL_NFC_STATUS_CBACK) (tHAL_NFC_STATUS status); 44ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chutypedef void (tHAL_NFC_CBACK) (UINT8 event, tHAL_NFC_STATUS status); 45ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chutypedef void (tHAL_NFC_DATA_CBACK) (UINT16 data_len, UINT8 *p_data); 46eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 47eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/******************************************************************************* 48eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** tHAL_NFC_ENTRY HAL entry-point lookup table 49eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu*******************************************************************************/ 50eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 51eb190654c5fbaea2f396bb5523f57062f291879aEvan Chutypedef void (tHAL_API_INITIALIZE) (void); 52eb190654c5fbaea2f396bb5523f57062f291879aEvan Chutypedef void (tHAL_API_TERMINATE) (void); 53ba4c17ee1d31e1b9f396292711f1414d449dd361Evan Chutypedef void (tHAL_API_OPEN) (tHAL_NFC_CBACK *p_hal_cback, tHAL_NFC_DATA_CBACK *p_data_cback); 54eb190654c5fbaea2f396bb5523f57062f291879aEvan Chutypedef void (tHAL_API_CLOSE) (void); 55eb190654c5fbaea2f396bb5523f57062f291879aEvan Chutypedef void (tHAL_API_CORE_INITIALIZED) (UINT8 *p_core_init_rsp_params); 56eb190654c5fbaea2f396bb5523f57062f291879aEvan Chutypedef void (tHAL_API_WRITE) (UINT16 data_len, UINT8 *p_data); 57eb190654c5fbaea2f396bb5523f57062f291879aEvan Chutypedef BOOLEAN (tHAL_API_PREDISCOVER) (void); 58eb190654c5fbaea2f396bb5523f57062f291879aEvan Chutypedef void (tHAL_API_CONTROL_GRANTED) (void); 59eb190654c5fbaea2f396bb5523f57062f291879aEvan Chutypedef void (tHAL_API_POWER_CYCLE) (void); 60eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 61eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 62eb190654c5fbaea2f396bb5523f57062f291879aEvan Chutypedef struct 63eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu{ 64eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu tHAL_API_INITIALIZE *initialize; 65eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu tHAL_API_TERMINATE *terminate; 66eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu tHAL_API_OPEN *open; 67eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu tHAL_API_CLOSE *close; 68eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu tHAL_API_CORE_INITIALIZED *core_initialized; 69eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu tHAL_API_WRITE *write; 70eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu tHAL_API_PREDISCOVER *prediscover; 71eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu tHAL_API_CONTROL_GRANTED *control_granted; 72eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu tHAL_API_POWER_CYCLE *power_cycle; 73eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 74eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 75eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu} tHAL_NFC_ENTRY; 76eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 77eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 78eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/******************************************************************************* 79eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** HAL API Function Prototypes 80eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu*******************************************************************************/ 81eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#ifdef __cplusplus 82eb190654c5fbaea2f396bb5523f57062f291879aEvan Chuextern "C" 83eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu{ 84eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#endif 85eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 86eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/* Toolset-specific macro for exporting API funcitons */ 87eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#if (defined(NFC_HAL_TARGET) && (NFC_HAL_TARGET == TRUE)) && (defined(_WINDLL)) 88eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#define EXPORT_HAL_API __declspec(dllexport) 89eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#else 90eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#define EXPORT_HAL_API 91eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#endif 92eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 93eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/******************************************************************************* 94eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 95eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Function HAL_NfcInitialize 96eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 97eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Description Called when HAL library is loaded. 98eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 99eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Initialize GKI and start the HCIT task 100eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 101eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Returns void 102eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 103eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu*******************************************************************************/ 104eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuEXPORT_HAL_API void HAL_NfcInitialize(void); 105eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 106eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/******************************************************************************* 107eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 108eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Function HAL_NfcTerminate 109eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 110eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Description Called to terminate NFC HAL 111eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 112eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Returns void 113eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 114eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu*******************************************************************************/ 115eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuEXPORT_HAL_API void HAL_NfcTerminate(void); 116eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 117eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/******************************************************************************* 118eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 119eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Function HAL_NfcOpen 120eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 121eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Description Open transport and intialize the NFCC, and 122eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Register callback for HAL event notifications, 123eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 124eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** HAL_OPEN_CPLT_EVT will notify when operation is complete. 125eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 126eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Returns void 127eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 128eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu*******************************************************************************/ 129ba4c17ee1d31e1b9f396292711f1414d449dd361Evan ChuEXPORT_HAL_API void HAL_NfcOpen (tHAL_NFC_CBACK *p_hal_cback, tHAL_NFC_DATA_CBACK *p_data_cback); 130eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 131eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/******************************************************************************* 132eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 133eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Function HAL_NfcClose 134eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 135eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Description Prepare for shutdown. A HAL_CLOSE_CPLT_EVT will be 136eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** reported when complete. 137eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 138eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Returns void 139eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 140eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu*******************************************************************************/ 141eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuEXPORT_HAL_API void HAL_NfcClose (void); 142eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 143eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/******************************************************************************* 144eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 145eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Function HAL_NfcCoreInitialized 146eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 147eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Description Called after the CORE_INIT_RSP is received from the NFCC. 148eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** At this time, the HAL can do any chip-specific configuration, 149eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** and when finished signal the libnfc-nci with event 150eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** HAL_POST_INIT_CPLT_EVT. 151eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 152eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Returns void 153eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 154eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu*******************************************************************************/ 155eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuEXPORT_HAL_API void HAL_NfcCoreInitialized (UINT8 *p_core_init_rsp_params); 156eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 157eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/******************************************************************************* 158eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 159eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Function HAL_NfcWrite 160eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 161eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Description Send an NCI control message or data packet to the 162eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** transport. If an NCI command message exceeds the transport 163eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** size, HAL is responsible for fragmenting it, Data packets 164eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** must be of the correct size. 165eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 166eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Returns void 167eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 168eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu*******************************************************************************/ 169eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuEXPORT_HAL_API void HAL_NfcWrite (UINT16 data_len, UINT8 *p_data); 170eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 171eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/******************************************************************************* 172eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 173eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Function HAL_NfcPreDiscover 174eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 175eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Description Perform any vendor-specific pre-discovery actions (if needed) 176eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** If any actions were performed TRUE will be returned, and 177eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** HAL_PRE_DISCOVER_CPLT_EVT will notify when actions are 178eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** completed. 179eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 180eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Returns TRUE if vendor-specific pre-discovery actions initialized 181eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** FALSE if no vendor-specific pre-discovery actions are needed. 182eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 183eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu*******************************************************************************/ 184eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuEXPORT_HAL_API BOOLEAN HAL_NfcPreDiscover (void); 185eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 186eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/******************************************************************************* 187eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 188eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Function HAL_NfcControlGranted 189eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 190eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Description Grant control to HAL control for sending NCI commands. 191eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 192eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Call in response to HAL_REQUEST_CONTROL_EVT. 193eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 194eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Must only be called when there are no NCI commands pending. 195eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 196eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** HAL_RELEASE_CONTROL_EVT will notify when HAL no longer 197eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** needs control of NCI. 198eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 199eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 200eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Returns void 201eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 202eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu*******************************************************************************/ 203eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuEXPORT_HAL_API void HAL_NfcControlGranted (void); 204eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 205eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu/******************************************************************************* 206eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 207eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Function HAL_NfcPowerCycle 208eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 209eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Description Restart NFCC by power cyle 210eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 211eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** HAL_OPEN_CPLT_EVT will notify when operation is complete. 212eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 213eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** Returns void 214eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu** 215eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu*******************************************************************************/ 216eb190654c5fbaea2f396bb5523f57062f291879aEvan ChuEXPORT_HAL_API void HAL_NfcPowerCycle (void); 217eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 218eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 219eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#ifdef __cplusplus 220eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu} 221eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#endif 222eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu 223eb190654c5fbaea2f396bb5523f57062f291879aEvan Chu#endif /* NFC_HAL_API_H */ 224