1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
3e9629bad30a9f478b336ab46b8e6e02f7f87af46Evan Chu *  Copyright (C) 2010-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
195c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  This file contains the call-in functions for NFC HAL HCI
23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <string.h>
265c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#include "gki.h"
27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfc_hal_api.h"
28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfc_hal_int.h"
29a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu
30a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu#if (defined(NFC_HAL_HCI_INCLUDED) && (NFC_HAL_HCI_INCLUDED == TRUE))
31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfc_hal_nv_ci.h"
32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "nfc_hal_nv_co.h"
33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
365c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** Function         nfc_hal_nv_ci_read
37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description      call-in function for non volatile memory read acess
39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          none
41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfc_hal_nv_ci_read (UINT16 num_bytes_read, tNFC_HAL_NV_CO_STATUS status, UINT8 block)
44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFC_HAL_HCI_EVENT_DATA *p_msg;
46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    /* Send message to NCIT task */
48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    if ((p_msg = (tNFC_HAL_HCI_EVENT_DATA *) GKI_getbuf (sizeof (tNFC_HAL_HCI_EVENT_DATA))) != NULL)
49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    {
50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        p_msg->nv_read.hdr.event  = NFC_HAL_HCI_RSP_NV_READ_EVT;
51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        p_msg->hdr.offset         = 0;
52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        p_msg->hdr.len            = sizeof (tNFC_HAL_HCI_RSP_NV_READ_EVT);
53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        p_msg->hdr.layer_specific = 0;
54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        if (  (status == NFC_HAL_NV_CO_OK)
56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project            &&(num_bytes_read != 0) )
57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project            p_msg->nv_read.status = HAL_NFC_STATUS_OK;
58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        else
59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project            p_msg->nv_read.status = HAL_NFC_STATUS_FAILED;
60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        p_msg->nv_read.size  = num_bytes_read;
62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        p_msg->nv_read.block = block;
63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        GKI_send_msg (NFC_HAL_TASK, NFC_HAL_TASK_MBOX, p_msg);
65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    }
66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*******************************************************************************
69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
705c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen** Function         nfc_hal_nv_ci_write
71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Description      call-in function for non volatile memory write acess
73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Returns          none
75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*******************************************************************************/
77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid nfc_hal_nv_ci_write (tNFC_HAL_NV_CO_STATUS status)
78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tNFC_HAL_HCI_EVENT_DATA *p_msg;
80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    if ((p_msg = (tNFC_HAL_HCI_EVENT_DATA *) GKI_getbuf (sizeof (tNFC_HAL_HCI_EVENT_DATA))) != NULL)
82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    {
83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        p_msg->nv_write.hdr.event          = NFC_HAL_HCI_RSP_NV_WRITE_EVT;
84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        p_msg->nv_write.hdr.offset         = 0;
85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        p_msg->nv_write.hdr.len            = sizeof (tNFC_HAL_HCI_RSP_NV_READ_EVT);
86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        p_msg->nv_write.hdr.layer_specific = 0;
87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        p_msg->nv_write.status             = HAL_NFC_STATUS_OK;
88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        GKI_send_msg (NFC_HAL_TASK, NFC_HAL_TASK_MBOX, p_msg);
90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    }
91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project}
92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
93a24be4f06674b2707b57904deaa0dff5a95823bdEvan Chu#endif
94