/******************************************************************************
 *
 *  Copyright (C) 2012 Broadcom Corporation
 *
 *  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.
 *
 ******************************************************************************/

/******************************************************************************
 *
 *  HAL Adaptation Interface (HAI). This interface regulates the interaction
 *  between standard Android HAL and Broadcom-specific HAL.  It adapts
 *  Broadcom-specific features to the Android framework.
 *
 ******************************************************************************/
#pragma once
#include <hardware/hardware.h>
#include <hardware/nfc.h>


#ifdef __cplusplus
extern "C" {
#endif


typedef struct
{
    struct nfc_nci_device nci_device;
    //below declarations are private variables within Broadcom HAL
    void* data;
}
bcm2079x_dev_t;


/*
All functions return POSIX error codes (see errno):
  0 means success.
  non-zero means failure; for example EACCES.
*/


extern int HaiInitializeLibrary (const bcm2079x_dev_t* device);
extern int HaiTerminateLibrary ();
extern int HaiOpen (const bcm2079x_dev_t* device, nfc_stack_callback_t* halCallbackFunc, nfc_stack_data_callback_t* halDataCallbackFunc);
extern int HaiClose (const bcm2079x_dev_t* device);
extern int HaiCoreInitialized (const bcm2079x_dev_t* device, uint8_t* coreInitResponseParams);
extern int HaiWrite (const bcm2079x_dev_t* dev, uint16_t dataLen, const uint8_t* data);
extern int HaiPreDiscover (const bcm2079x_dev_t* device);
extern int HaiControlGranted (const bcm2079x_dev_t* device);
extern int HaiPowerCycle (const bcm2079x_dev_t* device);


#ifdef __cplusplus
}
#endif
