1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
3e9629bad30a9f478b336ab46b8e6e02f7f87af46Evan Chu *  Copyright (C) 2012-2014 Broadcom Corporation
4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  you may not use this file except in compliance with the License.
7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  You may obtain a copy of the License at:
8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  See the License for the specific language governing permissions and
15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  limitations under the License.
16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  NFC Hardware Abstraction Layer API
22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef NFC_HAL_API_H
25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NFC_HAL_API_H
26a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu#include <hardware/nfc.h>
27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "data_types.h"
28a6eddd86a10fc3d7e72e589f874bffdfab6d6933Ruchi Kandoi#include "nfc_hal_target.h"
29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
30512ee63c7cc8feb016863e507a5d33cd0f4242bfRuchi Kandoitypedef uint8_t tHAL_NFC_STATUS;
316fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tHAL_NFC_STATUS_CBACK)(tHAL_NFC_STATUS status);
326fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tHAL_NFC_CBACK)(uint8_t event, tHAL_NFC_STATUS status);
336fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tHAL_NFC_DATA_CBACK)(uint16_t data_len, uint8_t* p_data);
34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** tHAL_NFC_ENTRY HAL entry-point lookup table
37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
396fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tHAL_API_INITIALIZE)(void);
406fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tHAL_API_TERMINATE)(void);
416fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tHAL_API_OPEN)(tHAL_NFC_CBACK* p_hal_cback,
426fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi                            tHAL_NFC_DATA_CBACK* p_data_cback);
436fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tHAL_API_CLOSE)(void);
446fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tHAL_API_CORE_INITIALIZED)(uint16_t data_len,
456fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi                                        uint8_t* p_core_init_rsp_params);
466fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tHAL_API_WRITE)(uint16_t data_len, uint8_t* p_data);
476fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef bool(tHAL_API_PREDISCOVER)(void);
486fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tHAL_API_CONTROL_GRANTED)(void);
496fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef void(tHAL_API_POWER_CYCLE)(void);
506fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef uint8_t(tHAL_API_GET_MAX_NFCEE)(void);
516fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi
526fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoitypedef struct {
536fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  tHAL_API_INITIALIZE* initialize;
546fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  tHAL_API_TERMINATE* terminate;
556fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  tHAL_API_OPEN* open;
566fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  tHAL_API_CLOSE* close;
576fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  tHAL_API_CORE_INITIALIZED* core_initialized;
586fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  tHAL_API_WRITE* write;
596fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  tHAL_API_PREDISCOVER* prediscover;
606fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  tHAL_API_CONTROL_GRANTED* control_granted;
616fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  tHAL_API_POWER_CYCLE* power_cycle;
626fca02d5010de7bd31d83b853c32138021da5f29Ruchi Kandoi  tHAL_API_GET_MAX_NFCEE* get_max_ee;
63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tHAL_NFC_ENTRY;
65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** HAL API Function Prototypes
68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* NFC_HAL_API_H  */
71