[automerger skipped] Fix heap overflow in nfa_rw_store_ndef_rx_buf am: f75e4bfe4a am: 170489f6f5
am: 30545c7bc9 -s ours
am skip reason: change_id I712c1af4442dea526a1fb27123eefdb2ac60c830 with SHA1 11d0ac5fea is in history
Change-Id: I40724aff97fafb418c5879f4bdb8ed74c7dbfc89
diff --git a/Android.bp b/Android.bp
index f049a1d..9679a81 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,45 +1 @@
-subdirs = ["src"]
-cc_library_shared {
- name: "nfc_nci.bcm2079x.default",
- proprietary: true,
- relative_install_path: "hw",
- srcs: [
- "halimpl/bcm2079x/gki/common/*.c",
- "halimpl/bcm2079x/gki/ulinux/*.c",
- "halimpl/bcm2079x/hal/hal/*.c",
- "halimpl/bcm2079x/adaptation/*.cpp",
- "halimpl/bcm2079x/adaptation/*.c",
- "halimpl/bcm2079x/nfc_nci.c",
- "src/adaptation/CrcChecksum.cpp",
- "src/nfca_version.c",
- ],
- header_libs: [
- "libhardware_headers",
- "libhardware_legacy_headers",
- ],
- shared_libs: [
- "libcutils",
- "liblog",
- "libhwbinder",
- ],
- local_include_dirs: [
- "halimpl/bcm2079x/include",
- "halimpl/bcm2079x/gki/ulinux",
- "halimpl/bcm2079x/gki/common",
- "halimpl/bcm2079x/adaptation",
- "src/hal/include",
- "src/hal/int",
- "src/nfc/include",
- "src/nfa/include",
- "src/udrv/include",
- "src/include",
- ],
- cflags: [
- "-DBUILDCFG=1",
- "-Wno-deprecated-register",
- "-Wno-unused-parameter",
- "-Wno-missing-field-initializers",
- "-DNFC_HAL_TARGET=TRUE",
- "-DNFC_RW_ONLY=TRUE",
- ],
-}
+subdirs = ["src", "utils"]
diff --git a/halimpl/Android.mk b/halimpl/Android.mk
deleted file mode 100644
index cfd03be..0000000
--- a/halimpl/Android.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/halimpl/bcm2079x/adaptation/CondVar.cpp b/halimpl/bcm2079x/adaptation/CondVar.cpp
deleted file mode 100644
index 44b6f2c..0000000
--- a/halimpl/bcm2079x/adaptation/CondVar.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Encapsulate a condition variable for thread synchronization.
- *
- ******************************************************************************/
-#define LOG_TAG "NfcNciHal"
-#include "CondVar.h"
-#include <errno.h>
-#include <string.h>
-#include "_OverrideLog.h"
-
-/*******************************************************************************
-**
-** Function: CondVar
-**
-** Description: Initialize member variables.
-**
-** Returns: None.
-**
-*******************************************************************************/
-CondVar::CondVar() {
- pthread_condattr_t attr;
- pthread_condattr_init(&attr);
- pthread_condattr_setclock(&attr, CLOCK_MONOTONIC);
- memset(&mCondition, 0, sizeof(mCondition));
- int const res = pthread_cond_init(&mCondition, &attr);
- if (res) {
- ALOGE("CondVar::CondVar: fail init; error=0x%X", res);
- }
-}
-
-/*******************************************************************************
-**
-** Function: ~CondVar
-**
-** Description: Cleanup all resources.
-**
-** Returns: None.
-**
-*******************************************************************************/
-CondVar::~CondVar() {
- int const res = pthread_cond_destroy(&mCondition);
- if (res) {
- ALOGE("CondVar::~CondVar: fail destroy; error=0x%X", res);
- }
-}
-
-/*******************************************************************************
-**
-** Function: wait
-**
-** Description: Block the caller and wait for a condition.
-**
-** Returns: None.
-**
-*******************************************************************************/
-void CondVar::wait(Mutex& mutex) {
- int const res = pthread_cond_wait(&mCondition, mutex.nativeHandle());
- if (res) {
- ALOGE("CondVar::wait: fail wait; error=0x%X", res);
- }
-}
-
-/*******************************************************************************
-**
-** Function: wait
-**
-** Description: Block the caller and wait for a condition.
-** millisec: Timeout in milliseconds.
-**
-** Returns: True if wait is successful; false if timeout occurs.
-**
-*******************************************************************************/
-bool CondVar::wait(Mutex& mutex, long millisec) {
- bool retVal = false;
- struct timespec absoluteTime;
-
- if (clock_gettime(CLOCK_MONOTONIC, &absoluteTime) == -1) {
- ALOGE("CondVar::wait: fail get time; errno=0x%X", errno);
- } else {
- absoluteTime.tv_sec += millisec / 1000;
- long ns = absoluteTime.tv_nsec + ((millisec % 1000) * 1000000);
- if (ns > 1000000000) {
- absoluteTime.tv_sec++;
- absoluteTime.tv_nsec = ns - 1000000000;
- } else
- absoluteTime.tv_nsec = ns;
- }
-
- int waitResult =
- pthread_cond_timedwait(&mCondition, mutex.nativeHandle(), &absoluteTime);
- if ((waitResult != 0) && (waitResult != ETIMEDOUT))
- ALOGE("CondVar::wait: fail timed wait; error=0x%X", waitResult);
- retVal = (waitResult == 0); // waited successfully
- return retVal;
-}
-
-/*******************************************************************************
-**
-** Function: notifyOne
-**
-** Description: Unblock the waiting thread.
-**
-** Returns: None.
-**
-*******************************************************************************/
-void CondVar::notifyOne() {
- int const res = pthread_cond_signal(&mCondition);
- if (res) {
- ALOGE("CondVar::notifyOne: fail signal; error=0x%X", res);
- }
-}
diff --git a/halimpl/bcm2079x/adaptation/CondVar.h b/halimpl/bcm2079x/adaptation/CondVar.h
deleted file mode 100644
index 82e5c6c..0000000
--- a/halimpl/bcm2079x/adaptation/CondVar.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Encapsulate a condition variable for thread synchronization.
- *
- ******************************************************************************/
-
-#pragma once
-#include <pthread.h>
-#include "Mutex.h"
-
-class CondVar {
- public:
- /*******************************************************************************
- **
- ** Function: CondVar
- **
- ** Description: Initialize member variables.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- CondVar();
-
- /*******************************************************************************
- **
- ** Function: ~CondVar
- **
- ** Description: Cleanup all resources.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- ~CondVar();
-
- /*******************************************************************************
- **
- ** Function: wait
- **
- ** Description: Block the caller and wait for a condition.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- void wait(Mutex& mutex);
-
- /*******************************************************************************
- **
- ** Function: wait
- **
- ** Description: Block the caller and wait for a condition.
- ** millisec: Timeout in milliseconds.
- **
- ** Returns: True if wait is successful; false if timeout occurs.
- **
- *******************************************************************************/
- bool wait(Mutex& mutex, long millisec);
-
- /*******************************************************************************
- **
- ** Function: notifyOne
- **
- ** Description: Unblock the waiting thread.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- void notifyOne();
-
- private:
- pthread_cond_t mCondition;
-};
diff --git a/halimpl/bcm2079x/adaptation/HalAdaptation.cpp b/halimpl/bcm2079x/adaptation/HalAdaptation.cpp
deleted file mode 100644
index 1c84426..0000000
--- a/halimpl/bcm2079x/adaptation/HalAdaptation.cpp
+++ /dev/null
@@ -1,373 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-#define LOG_TAG "NfcNciHal"
-#include "HalAdaptation.h"
-#include <cutils/properties.h>
-#include <errno.h>
-#include <pthread.h>
-#include "SyncEvent.h"
-#include "_OverrideLog.h"
-#include "android_logmsg.h"
-#include "buildcfg.h"
-#include "config.h"
-#include "nfc_hal_int.h"
-#include "nfc_hal_post_reset.h"
-extern void delete_hal_non_volatile_store(bool forceDelete);
-extern void verify_hal_non_volatile_store();
-extern void resetConfig();
-extern "C" {
-#include "userial.h"
-}
-
-extern void configureCrystalFrequency();
-
-///////////////////////////////////////
-// private declaration, definition
-
-static nfc_stack_callback_t* gAndroidHalCallback = NULL;
-static nfc_stack_data_callback_t* gAndroidHalDataCallback = NULL;
-static SyncEvent gOpenCompletedEvent;
-static SyncEvent gPostInitCompletedEvent;
-static SyncEvent gCloseCompletedEvent;
-
-uint32_t ScrProtocolTraceFlag = SCR_PROTO_TRACE_ALL; // 0x017F00;
-
-static void BroadcomHalCallback(uint8_t event, tHAL_NFC_STATUS status);
-static void BroadcomHalDataCallback(uint16_t data_len, uint8_t* p_data);
-
-static bool isColdBoot = true;
-
-extern tNFC_HAL_CFG* p_nfc_hal_cfg;
-extern const uint8_t nfca_version_string[];
-extern const uint8_t nfa_version_string[];
-
-tNFC_HAL_DM_PRE_SET_MEM nfc_hal_pre_set_mem_20795a1[] = {
- {0x0016403c, 0x00000008},
- {0x0016403c, 0x00000000},
- {0x0014008c, 0x00000001},
- {0, 0}};
-
-extern tNFC_HAL_DM_PRE_SET_MEM* p_nfc_hal_dm_pre_set_mem;
-
-///////////////////////////////////////
-
-int HaiInitializeLibrary(const bcm2079x_dev_t* device) {
- ALOGD("%s: enter", __func__);
- ALOGE("%s: ver=%s nfa=%s", __func__, nfca_version_string, nfa_version_string);
- int retval = EACCES;
- unsigned long freq = 0;
- unsigned long num = 0;
- char temp[120];
- int8_t prop_value;
- uint8_t logLevel = 0;
-
- logLevel = InitializeGlobalAppLogLevel();
-
- if (GetNumValue(NAME_GLOBAL_RESET, &num, sizeof(num))) {
- if (num == 1) {
- // Send commands to disable boc
- p_nfc_hal_dm_pre_set_mem = nfc_hal_pre_set_mem_20795a1;
- }
- }
-
- configureCrystalFrequency();
- verify_hal_non_volatile_store();
- if (GetNumValue(NAME_PRESERVE_STORAGE, (char*)&num, sizeof(num)) &&
- (num == 1))
- ALOGD("%s: preserve HAL NV store", __func__);
- else {
- delete_hal_non_volatile_store(false);
- }
-
- if (GetNumValue(NAME_USE_RAW_NCI_TRACE, &num, sizeof(num))) {
- if (num == 1) {
- // display protocol traces in raw format
- ProtoDispAdapterUseRawOutput(TRUE);
- }
- }
-
- // Initialize protocol logging level
- InitializeProtocolLogLevel();
-
- tUSERIAL_OPEN_CFG cfg;
- struct tUART_CONFIG uart;
-
- if (GetStrValue(NAME_UART_PARITY, temp, sizeof(temp))) {
- if (strcmp(temp, "even") == 0)
- uart.m_iParity = USERIAL_PARITY_EVEN;
- else if (strcmp(temp, "odd") == 0)
- uart.m_iParity = USERIAL_PARITY_ODD;
- else if (strcmp(temp, "none") == 0)
- uart.m_iParity = USERIAL_PARITY_NONE;
- } else
- uart.m_iParity = USERIAL_PARITY_NONE;
-
- if (GetStrValue(NAME_UART_STOPBITS, temp, sizeof(temp))) {
- if (strcmp(temp, "1") == 0)
- uart.m_iStopbits = USERIAL_STOPBITS_1;
- else if (strcmp(temp, "2") == 0)
- uart.m_iStopbits = USERIAL_STOPBITS_2;
- else if (strcmp(temp, "1.5") == 0)
- uart.m_iStopbits = USERIAL_STOPBITS_1_5;
- } else if (GetNumValue(NAME_UART_STOPBITS, &num, sizeof(num))) {
- if (num == 1)
- uart.m_iStopbits = USERIAL_STOPBITS_1;
- else if (num == 2)
- uart.m_iStopbits = USERIAL_STOPBITS_2;
- } else
- uart.m_iStopbits = USERIAL_STOPBITS_1;
-
- if (GetNumValue(NAME_UART_DATABITS, &num, sizeof(num))) {
- if (5 <= num && num <= 8) uart.m_iDatabits = (1 << (num + 1));
- } else
- uart.m_iDatabits = USERIAL_DATABITS_8;
-
- if (GetNumValue(NAME_UART_BAUD, &num, sizeof(num))) {
- if (num == 300)
- uart.m_iBaudrate = USERIAL_BAUD_300;
- else if (num == 600)
- uart.m_iBaudrate = USERIAL_BAUD_600;
- else if (num == 1200)
- uart.m_iBaudrate = USERIAL_BAUD_1200;
- else if (num == 2400)
- uart.m_iBaudrate = USERIAL_BAUD_2400;
- else if (num == 9600)
- uart.m_iBaudrate = USERIAL_BAUD_9600;
- else if (num == 19200)
- uart.m_iBaudrate = USERIAL_BAUD_19200;
- else if (num == 57600)
- uart.m_iBaudrate = USERIAL_BAUD_57600;
- else if (num == 115200)
- uart.m_iBaudrate = USERIAL_BAUD_115200;
- else if (num == 230400)
- uart.m_iBaudrate = USERIAL_BAUD_230400;
- else if (num == 460800)
- uart.m_iBaudrate = USERIAL_BAUD_460800;
- else if (num == 921600)
- uart.m_iBaudrate = USERIAL_BAUD_921600;
- } else if (GetStrValue(NAME_UART_BAUD, temp, sizeof(temp))) {
- if (strcmp(temp, "auto") == 0) uart.m_iBaudrate = USERIAL_BAUD_AUTO;
- } else
- uart.m_iBaudrate = USERIAL_BAUD_115200;
-
- memset(&cfg, 0, sizeof(tUSERIAL_OPEN_CFG));
- cfg.fmt = uart.m_iDatabits | uart.m_iParity | uart.m_iStopbits;
- cfg.baud = uart.m_iBaudrate;
-
- ALOGD("%s: uart config=0x%04x, %d\n", __func__, cfg.fmt, cfg.baud);
- USERIAL_Init(&cfg);
-
- if (GetNumValue(NAME_NFCC_ENABLE_TIMEOUT, &num, sizeof(num))) {
- p_nfc_hal_cfg->nfc_hal_nfcc_enable_timeout = num;
- }
-
- if (GetNumValue(NAME_NFA_MAX_EE_SUPPORTED, &num, sizeof(num)) && num == 0) {
- // Since NFA_MAX_EE_SUPPORTED is explicetly set to 0, no UICC support is
- // needed.
- p_nfc_hal_cfg->nfc_hal_hci_uicc_support = 0;
- }
-
- prop_value = property_get_bool("nfc.bcm2079x.isColdboot", 0);
- if (prop_value) {
- isColdBoot = true;
- property_set("nfc.bcm2079x.isColdboot", "0");
- }
- // Set 'first boot' flag based on static variable that will get set to false
- // after the stack has first initialized the EE.
- p_nfc_hal_cfg->nfc_hal_first_boot = isColdBoot ? TRUE : FALSE;
-
- HAL_NfcInitialize();
- HAL_NfcSetTraceLevel(logLevel); // Initialize HAL's logging level
-
- retval = 0;
- ALOGD("%s: exit %d", __func__, retval);
- return retval;
-}
-
-int HaiTerminateLibrary() {
- int retval = EACCES;
- ALOGD("%s: enter", __func__);
-
- HAL_NfcTerminate();
- gAndroidHalCallback = NULL;
- gAndroidHalDataCallback = NULL;
- GKI_shutdown();
- resetConfig();
- retval = 0;
- ALOGD("%s: exit %d", __func__, retval);
- return retval;
-}
-
-int HaiOpen(const bcm2079x_dev_t* device, nfc_stack_callback_t* halCallbackFunc,
- nfc_stack_data_callback_t* halDataCallbackFunc) {
- ALOGD("%s: enter", __func__);
- int retval = EACCES;
-
- gAndroidHalCallback = halCallbackFunc;
- gAndroidHalDataCallback = halDataCallbackFunc;
-
- SyncEventGuard guard(gOpenCompletedEvent);
- HAL_NfcOpen(BroadcomHalCallback, BroadcomHalDataCallback);
- gOpenCompletedEvent.wait();
-
- retval = 0;
- ALOGD("%s: exit %d", __func__, retval);
- return retval;
-}
-
-void BroadcomHalCallback(uint8_t event, tHAL_NFC_STATUS status) {
- ALOGD("%s: enter; event=0x%X", __func__, event);
- switch (event) {
- case HAL_NFC_OPEN_CPLT_EVT: {
- ALOGD("%s: HAL_NFC_OPEN_CPLT_EVT; status=0x%X", __func__, status);
- SyncEventGuard guard(gOpenCompletedEvent);
- gOpenCompletedEvent.notifyOne();
- break;
- }
-
- case HAL_NFC_POST_INIT_CPLT_EVT: {
- ALOGD("%s: HAL_NFC_POST_INIT_CPLT_EVT", __func__);
- SyncEventGuard guard(gPostInitCompletedEvent);
- gPostInitCompletedEvent.notifyOne();
- break;
- }
-
- case HAL_NFC_CLOSE_CPLT_EVT: {
- ALOGD("%s: HAL_NFC_CLOSE_CPLT_EVT", __func__);
- SyncEventGuard guard(gCloseCompletedEvent);
- gCloseCompletedEvent.notifyOne();
- break;
- }
-
- case HAL_NFC_ERROR_EVT: {
- ALOGD("%s: HAL_NFC_ERROR_EVT", __func__);
- {
- SyncEventGuard guard(gOpenCompletedEvent);
- gOpenCompletedEvent.notifyOne();
- }
- {
- SyncEventGuard guard(gPostInitCompletedEvent);
- gPostInitCompletedEvent.notifyOne();
- }
- {
- SyncEventGuard guard(gCloseCompletedEvent);
- gCloseCompletedEvent.notifyOne();
- }
- break;
- }
- }
- gAndroidHalCallback(event, status);
- ALOGD("%s: exit; event=0x%X", __func__, event);
-}
-
-void BroadcomHalDataCallback(uint16_t data_len, uint8_t* p_data) {
- ALOGD("%s: enter; len=%u", __func__, data_len);
- gAndroidHalDataCallback(data_len, p_data);
-}
-
-int HaiClose(const bcm2079x_dev_t* device) {
- ALOGD("%s: enter", __func__);
- int retval = EACCES;
-
- SyncEventGuard guard(gCloseCompletedEvent);
- HAL_NfcClose();
- gCloseCompletedEvent.wait();
- retval = 0;
- ALOGD("%s: exit %d", __func__, retval);
- return retval;
-}
-
-int HaiCoreInitialized(const bcm2079x_dev_t* device,
- uint8_t* coreInitResponseParams) {
- ALOGD("%s: enter", __func__);
- int retval = EACCES;
-
- SyncEventGuard guard(gPostInitCompletedEvent);
- HAL_NfcCoreInitialized(0, coreInitResponseParams);
- gPostInitCompletedEvent.wait();
- retval = 0;
- ALOGD("%s: exit %d", __func__, retval);
- return retval;
-}
-
-int HaiWrite(const bcm2079x_dev_t* dev, uint16_t dataLen, const uint8_t* data) {
- ALOGD("%s: enter; len=%u", __func__, dataLen);
- int retval = EACCES;
-
- HAL_NfcWrite(dataLen, const_cast<uint8_t*>(data));
- retval = 0;
- ALOGD("%s: exit %d", __func__, retval);
- return retval;
-}
-
-int HaiPreDiscover(const bcm2079x_dev_t* device) {
- ALOGD("%s: enter", __func__);
- int retval = EACCES;
-
- // This function is a clear indication that the stack is initializing
- // EE. So we can reset the cold-boot flag here.
- isColdBoot = false;
- retval = HAL_NfcPreDiscover() ? 1 : 0;
- ALOGD("%s: exit %d", __func__, retval);
- return retval;
-}
-
-int HaiControlGranted(const bcm2079x_dev_t* device) {
- ALOGD("%s: enter", __func__);
- int retval = EACCES;
-
- HAL_NfcControlGranted();
- retval = 0;
- ALOGD("%s: exit %d", __func__, retval);
- return retval;
-}
-
-int HaiPowerCycle(const bcm2079x_dev_t* device) {
- ALOGD("%s: enter", __func__);
- int retval = EACCES;
-
- HAL_NfcPowerCycle();
- retval = 0;
- ALOGD("%s: exit %d", __func__, retval);
- return retval;
-}
-
-int HaiGetMaxNfcee(const bcm2079x_dev_t* device, uint8_t* maxNfcee) {
- ALOGD("%s: enter", __func__);
- int retval = EACCES;
-
- // This function is a clear indication that the stack is initializing
- // EE. So we can reset the cold-boot flag here.
- isColdBoot = false;
-
- if (maxNfcee) {
- *maxNfcee = HAL_NfcGetMaxNfcee();
- ALOGD("%s: max_ee from HAL to use %d", __func__, *maxNfcee);
- retval = 0;
- }
- ALOGD("%s: exit %d", __func__, retval);
- return retval;
-}
diff --git a/halimpl/bcm2079x/adaptation/Mutex.cpp b/halimpl/bcm2079x/adaptation/Mutex.cpp
deleted file mode 100644
index c8ebd63..0000000
--- a/halimpl/bcm2079x/adaptation/Mutex.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Encapsulate a mutex for thread synchronization.
- *
- ******************************************************************************/
-
-#define LOG_TAG "NfcNciHal"
-#include "Mutex.h"
-#include <errno.h>
-#include <string.h>
-#include "_OverrideLog.h"
-
-/*******************************************************************************
-**
-** Function: Mutex
-**
-** Description: Initialize member variables.
-**
-** Returns: None.
-**
-*******************************************************************************/
-Mutex::Mutex() {
- memset(&mMutex, 0, sizeof(mMutex));
- int res = pthread_mutex_init(&mMutex, NULL);
- if (res != 0) {
- ALOGE("Mutex::Mutex: fail init; error=0x%X", res);
- }
-}
-
-/*******************************************************************************
-**
-** Function: ~Mutex
-**
-** Description: Cleanup all resources.
-**
-** Returns: None.
-**
-*******************************************************************************/
-Mutex::~Mutex() {
- int res = pthread_mutex_destroy(&mMutex);
- if (res != 0) {
- ALOGE("Mutex::~Mutex: fail destroy; error=0x%X", res);
- }
-}
-
-/*******************************************************************************
-**
-** Function: lock
-**
-** Description: Block the thread and try lock the mutex.
-**
-** Returns: None.
-**
-*******************************************************************************/
-void Mutex::lock() {
- int res = pthread_mutex_lock(&mMutex);
- if (res != 0) {
- ALOGE("Mutex::lock: fail lock; error=0x%X", res);
- }
-}
-
-/*******************************************************************************
-**
-** Function: unlock
-**
-** Description: Unlock a mutex to unblock a thread.
-**
-** Returns: None.
-**
-*******************************************************************************/
-void Mutex::unlock() {
- int res = pthread_mutex_unlock(&mMutex);
- if (res != 0) {
- ALOGE("Mutex::unlock: fail unlock; error=0x%X", res);
- }
-}
-
-/*******************************************************************************
-**
-** Function: tryLock
-**
-** Description: Try to lock the mutex.
-**
-** Returns: True if the mutex is locked.
-**
-*******************************************************************************/
-bool Mutex::tryLock() {
- int res = pthread_mutex_trylock(&mMutex);
- if ((res != 0) && (res != EBUSY)) {
- ALOGE("Mutex::tryLock: error=0x%X", res);
- }
- return res == 0;
-}
-
-/*******************************************************************************
-**
-** Function: nativeHandle
-**
-** Description: Get the handle of the mutex.
-**
-** Returns: Handle of the mutex.
-**
-*******************************************************************************/
-pthread_mutex_t* Mutex::nativeHandle() { return &mMutex; }
diff --git a/halimpl/bcm2079x/adaptation/Mutex.h b/halimpl/bcm2079x/adaptation/Mutex.h
deleted file mode 100644
index 741563c..0000000
--- a/halimpl/bcm2079x/adaptation/Mutex.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Encapsulate a mutex for thread synchronization.
- *
- ******************************************************************************/
-
-#pragma once
-#include <pthread.h>
-
-class Mutex {
- public:
- /*******************************************************************************
- **
- ** Function: Mutex
- **
- ** Description: Initialize member variables.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- Mutex();
-
- /*******************************************************************************
- **
- ** Function: ~Mutex
- **
- ** Description: Cleanup all resources.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- ~Mutex();
-
- /*******************************************************************************
- **
- ** Function: lock
- **
- ** Description: Block the thread and try lock the mutex.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- void lock();
-
- /*******************************************************************************
- **
- ** Function: unlock
- **
- ** Description: Unlock a mutex to unblock a thread.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- void unlock();
-
- /*******************************************************************************
- **
- ** Function: tryLock
- **
- ** Description: Try to lock the mutex.
- **
- ** Returns: True if the mutex is locked.
- **
- *******************************************************************************/
- bool tryLock();
-
- /*******************************************************************************
- **
- ** Function: nativeHandle
- **
- ** Description: Get the handle of the mutex.
- **
- ** Returns: Handle of the mutex.
- **
- *******************************************************************************/
- pthread_mutex_t* nativeHandle();
-
- private:
- pthread_mutex_t mMutex;
-};
diff --git a/halimpl/bcm2079x/adaptation/NonVolatileStore.cpp b/halimpl/bcm2079x/adaptation/NonVolatileStore.cpp
deleted file mode 100644
index f5b3f0c..0000000
--- a/halimpl/bcm2079x/adaptation/NonVolatileStore.cpp
+++ /dev/null
@@ -1,253 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-
-#define LOG_TAG "NfcNciHal"
-
-#include "_OverrideLog.h"
-#include "gki.h"
-extern "C" {
-#include "nfc_hal_nv_ci.h"
-#include "nfc_hal_target.h"
-}
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <string>
-#include "CrcChecksum.h"
-#include "config.h"
-
-// directory of HAL's non-volatile storage
-static const char* default_location = "/data/nfc";
-static const char* filename_prefix = "/halStorage.bin";
-static const std::string get_storage_location();
-void delete_hal_non_volatile_store(bool forceDelete);
-void verify_hal_non_volatile_store();
-
-/*******************************************************************************
-**
-** Function nfc_hal_nv_co_read
-**
-** Description This function is called by NFA to read in data from the
-** previously opened file.
-**
-** Parameters p_buf - buffer to read the data into.
-** nbytes - number of bytes to read into the buffer.
-**
-** Returns void
-**
-** Note: Upon completion of the request, nfc_hal_nv_ci_read ()
-*is
-** called with the buffer of data, along with the number
-** of bytes read into the buffer, and a status. The
-** call-in function should only be called when ALL
-*requested
-** bytes have been read, the end of file has been
-*detected,
-** or an error has occurred.
-**
-*******************************************************************************/
-void nfc_hal_nv_co_read(uint8_t* p_buf, uint16_t nbytes, uint8_t block) {
- std::string fn = get_storage_location();
- char filename[256];
-
- fn.append(filename_prefix);
- if (fn.length() > 200) {
- ALOGE("%s: filename too long", __func__);
- return;
- }
- snprintf(filename, sizeof(filename), "%s%u", fn.c_str(), block);
-
- ALOGD("%s: buffer len=%u; file=%s", __func__, nbytes, filename);
- int fileStream = open(filename, O_RDONLY);
- if (fileStream >= 0) {
- unsigned short checksum = 0;
- size_t actualReadCrc = read(fileStream, &checksum, sizeof(checksum));
- size_t actualReadData = read(fileStream, p_buf, nbytes);
- close(fileStream);
- if (actualReadData > 0) {
- ALOGD("%s: data size=%zu", __func__, actualReadData);
- nfc_hal_nv_ci_read(actualReadData, NFC_HAL_NV_CO_OK, block);
- } else {
- ALOGE("%s: fail to read", __func__);
- nfc_hal_nv_ci_read(0, NFC_HAL_NV_CO_FAIL, block);
- }
- } else {
- ALOGD("%s: fail to open", __func__);
- nfc_hal_nv_ci_read(0, NFC_HAL_NV_CO_FAIL, block);
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_nv_co_write
-**
-** Description This function is called by io to send file data to the
-** phone.
-**
-** Parameters p_buf - buffer to read the data from.
-** nbytes - number of bytes to write out to the file.
-**
-** Returns void
-**
-** Note: Upon completion of the request, nfc_hal_nv_ci_write ()
-*is
-** called with the file descriptor and the status. The
-** call-in function should only be called when ALL
-*requested
-** bytes have been written, or an error has been
-*detected,
-**
-*******************************************************************************/
-void nfc_hal_nv_co_write(const uint8_t* p_buf, uint16_t nbytes, uint8_t block) {
- std::string fn = get_storage_location();
- char filename[256];
- int fileStream = 0;
-
- fn.append(filename_prefix);
- if (fn.length() > 200) {
- ALOGE("%s: filename too long", __func__);
- return;
- }
- snprintf(filename, sizeof(filename), "%s%u", fn.c_str(), block);
- ALOGD("%s: bytes=%u; file=%s", __func__, nbytes, filename);
-
- fileStream = open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
- if (fileStream >= 0) {
- unsigned short checksum = crcChecksumCompute(p_buf, nbytes);
- size_t actualWrittenCrc = write(fileStream, &checksum, sizeof(checksum));
- size_t actualWrittenData = write(fileStream, p_buf, nbytes);
- ALOGD("%s: %zu bytes written", __func__, actualWrittenData);
- if ((actualWrittenData == nbytes) &&
- (actualWrittenCrc == sizeof(checksum))) {
- nfc_hal_nv_ci_write(NFC_HAL_NV_CO_OK);
- } else {
- ALOGE("%s: fail to write", __func__);
- nfc_hal_nv_ci_write(NFC_HAL_NV_CO_FAIL);
- }
- close(fileStream);
- } else {
- ALOGE("%s: fail to open, error = %d", __func__, errno);
- nfc_hal_nv_ci_write(NFC_HAL_NV_CO_FAIL);
- }
-}
-
-/*******************************************************************************
-**
-** Function get_storage_location
-**
-** Description Get the absolute directory path of the HAL's storage
-*location.
-**
-** Parameters none
-**
-** Returns Absolute path.
-**
-*******************************************************************************/
-const std::string get_storage_location() {
- char buffer[100];
- memset(buffer, 0, sizeof(buffer));
- if (!GetStrValue(NAME_NFA_STORAGE, buffer, sizeof(buffer)))
- return default_location;
- else
- return std::string(buffer);
-}
-
-/*******************************************************************************
-**
-** Function delete_hal_non_volatile_store
-**
-** Description Delete all the content of the HAL's storage location.
-**
-** Parameters forceDelete: unconditionally delete the storage.
-**
-** Returns none
-**
-*******************************************************************************/
-void delete_hal_non_volatile_store(bool forceDelete) {
- static bool firstTime = true;
- std::string fn = get_storage_location();
- char filename[256];
- int stat = 0;
-
- if ((firstTime == false) && (forceDelete == false)) return;
- firstTime = false;
-
- ALOGD("%s", __func__);
-
- fn.append(filename_prefix);
- if (fn.length() > 200) {
- ALOGE("%s: filename too long", __func__);
- return;
- }
-
- snprintf(filename, sizeof(filename), "%s%u", fn.c_str(), DH_NV_BLOCK);
- remove(filename);
- snprintf(filename, sizeof(filename), "%s%u", fn.c_str(), HC_F3_NV_BLOCK);
- remove(filename);
- snprintf(filename, sizeof(filename), "%s%u", fn.c_str(), HC_F4_NV_BLOCK);
- remove(filename);
- snprintf(filename, sizeof(filename), "%s%u", fn.c_str(), HC_F2_NV_BLOCK);
- remove(filename);
- snprintf(filename, sizeof(filename), "%s%u", fn.c_str(), HC_F5_NV_BLOCK);
- remove(filename);
-}
-
-/*******************************************************************************
-**
-** Function verify_hal_non_volatile_store
-**
-** Description Verify the content of all non-volatile store.
-**
-** Parameters none
-**
-** Returns none
-**
-*******************************************************************************/
-void verify_hal_non_volatile_store() {
- ALOGD("%s", __func__);
- std::string fn = get_storage_location();
- char filename[256];
- bool isValid = false;
-
- fn.append(filename_prefix);
- if (fn.length() > 200) {
- ALOGE("%s: filename too long", __func__);
- return;
- }
-
- snprintf(filename, sizeof(filename), "%s%u", fn.c_str(), DH_NV_BLOCK);
- if (crcChecksumVerifyIntegrity(filename)) {
- snprintf(filename, sizeof(filename), "%s%u", fn.c_str(), HC_F3_NV_BLOCK);
- if (crcChecksumVerifyIntegrity(filename)) {
- snprintf(filename, sizeof(filename), "%s%u", fn.c_str(), HC_F4_NV_BLOCK);
- if (crcChecksumVerifyIntegrity(filename)) {
- snprintf(filename, sizeof(filename), "%s%u", fn.c_str(),
- HC_F2_NV_BLOCK);
- if (crcChecksumVerifyIntegrity(filename)) {
- snprintf(filename, sizeof(filename), "%s%u", fn.c_str(),
- HC_F5_NV_BLOCK);
- if (crcChecksumVerifyIntegrity(filename)) isValid = true;
- }
- }
- }
- }
-
- if (isValid == false) delete_hal_non_volatile_store(true);
-}
diff --git a/halimpl/bcm2079x/adaptation/StartupConfig.cpp b/halimpl/bcm2079x/adaptation/StartupConfig.cpp
deleted file mode 100644
index 333bc3b..0000000
--- a/halimpl/bcm2079x/adaptation/StartupConfig.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- * Construct a buffer that contains multiple Type-Length-Value contents
- * that is used by the HAL in a CORE_SET_CONFIG NCI command.
- ******************************************************************************/
-
-#define LOG_TAG "NfcNciHal"
-#include "StartupConfig.h"
-#include "_OverrideLog.h"
-
-const uint8_t StartupConfig::mMaxLength = 255;
-
-/*******************************************************************************
-**
-** Function: initialize
-**
-** Description: Initialize all member variables.
-**
-** Returns: None
-**
-*******************************************************************************/
-StartupConfig::StartupConfig() {
- // set first byte to 0, which is length of payload
- mBuffer.append((uint8_string::size_type)1, (uint8_string::value_type)0);
-}
-
-/*******************************************************************************
-**
-** Function: initialize
-**
-** Description: Reset all member variables.
-**
-** Returns: None
-**
-*******************************************************************************/
-void StartupConfig::initialize() {
- mBuffer.clear();
- // set first byte to 0, which is length of payload
- mBuffer.append((uint8_string::size_type)1, (uint8_string::value_type)0);
-}
-
-/*******************************************************************************
-**
-** Function: getInternalBuffer
-**
-** Description: Get the pointer to buffer that contains multiple
-** Type-Length-Value contents.
-**
-** Returns: Pointer to buffer.
-**
-*******************************************************************************/
-const uint8_t* StartupConfig::getInternalBuffer() { return mBuffer.data(); }
-
-/*******************************************************************************
-**
-** Function: append
-**
-** Description: Append new config data to internal buffer.
-** newContent: buffer containing new content; newContent[0] is
-** payload length; newContent[1..end] is payload.
-** newContentLen: total length of newContent.
-**
-** Returns: True if ok.
-**
-*******************************************************************************/
-bool StartupConfig::append(const uint8_t* newContent, uint8_t newContentLen) {
- static const char fn[] = "StartupConfig::append";
- if ((newContentLen + mBuffer.size()) > mMaxLength) {
- ALOGE("%s: exceed max length", fn);
- return false;
- }
-
- ALOGD("%s: try append %zu bytes", fn,
- (uint8_string::size_type)(newContentLen));
- // append new payload into private buffer
- mBuffer.append(newContent + 1, (uint8_string::size_type)(newContentLen - 1));
- // increase size counter of payload in private buffer
- mBuffer[0] = mBuffer[0] + newContentLen - 1;
- ALOGD("%s: new size %u bytes", fn, mBuffer[0]);
- return true;
-};
-
-/*******************************************************************************
-**
-** Function: disableSecureElement
-**
-** Description: Adjust a TLV to disable secure element(s). The TLV's type
-*is 0xC2.
-** bitmask: 0xC0 = do not detect any secure element.
-** 0x40 = do not detect secure element in slot 0.
-** 0x80 = do not detect secure element in slot 1.
-**
-** Returns: True if ok.
-**
-*******************************************************************************/
-bool StartupConfig::disableSecureElement(uint8_t bitmask) {
- const uint8_t maxLen = mBuffer[0];
- uint8_t index = 1, tlvType = 0, tlvLen = 0;
- bool found0xC2 = false;
-
- while (true) {
- if (index > maxLen) break;
- tlvType = mBuffer[index];
- index++;
- tlvLen = mBuffer[index];
- index++;
- if (tlvType == 0xC2) // this TLV controls secure elements
- {
- index++; // index of second byte in TLV's value
- mBuffer[index] = mBuffer[index] | bitmask; // turn on certain bits
- found0xC2 = true;
- } else
- index += tlvLen;
- }
-
- if (found0xC2 == false) {
- uint8_t tlv[] = {0x04, 0xC2, 0x02, 0x61, 0x00};
- tlv[4] = tlv[4] | bitmask;
- found0xC2 = append(tlv, 5);
- }
- return found0xC2;
-}
diff --git a/halimpl/bcm2079x/adaptation/SyncEvent.h b/halimpl/bcm2079x/adaptation/SyncEvent.h
deleted file mode 100644
index 4f9384f..0000000
--- a/halimpl/bcm2079x/adaptation/SyncEvent.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Synchronize two or more threads using a condition variable and a mutex.
- *
- ******************************************************************************/
-#pragma once
-#include "CondVar.h"
-#include "Mutex.h"
-
-class SyncEvent {
- public:
- /*******************************************************************************
- **
- ** Function: ~SyncEvent
- **
- ** Description: Cleanup all resources.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- ~SyncEvent() {}
-
- /*******************************************************************************
- **
- ** Function: start
- **
- ** Description: Start a synchronization operation.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- void start() { mMutex.lock(); }
-
- /*******************************************************************************
- **
- ** Function: wait
- **
- ** Description: Block the thread and wait for the event to occur.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- void wait() { mCondVar.wait(mMutex); }
-
- /*******************************************************************************
- **
- ** Function: wait
- **
- ** Description: Block the thread and wait for the event to occur.
- ** millisec: Timeout in milliseconds.
- **
- ** Returns: True if wait is successful; false if timeout occurs.
- **
- *******************************************************************************/
- bool wait(long millisec) {
- bool retVal = mCondVar.wait(mMutex, millisec);
- return retVal;
- }
-
- /*******************************************************************************
- **
- ** Function: notifyOne
- **
- ** Description: Notify a blocked thread that the event has occured.
- *Unblocks it.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- void notifyOne() { mCondVar.notifyOne(); }
-
- /*******************************************************************************
- **
- ** Function: end
- **
- ** Description: End a synchronization operation.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- void end() { mMutex.unlock(); }
-
- private:
- CondVar mCondVar;
- Mutex mMutex;
-};
-
-/*****************************************************************************/
-/*****************************************************************************/
-
-/*****************************************************************************
-**
-** Name: SyncEventGuard
-**
-** Description: Automatically start and end a synchronization event.
-**
-*****************************************************************************/
-class SyncEventGuard {
- public:
- /*******************************************************************************
- **
- ** Function: SyncEventGuard
- **
- ** Description: Start a synchronization operation.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- SyncEventGuard(SyncEvent& event) : mEvent(event) {
- event.start(); // automatically start operation
- };
-
- /*******************************************************************************
- **
- ** Function: ~SyncEventGuard
- **
- ** Description: End a synchronization operation.
- **
- ** Returns: None.
- **
- *******************************************************************************/
- ~SyncEventGuard() {
- mEvent.end(); // automatically end operation
- };
-
- private:
- SyncEvent& mEvent;
-};
diff --git a/halimpl/bcm2079x/adaptation/_OverrideLog.cpp b/halimpl/bcm2079x/adaptation/_OverrideLog.cpp
deleted file mode 100644
index 0fe9bae..0000000
--- a/halimpl/bcm2079x/adaptation/_OverrideLog.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-
-#define LOG_TAG "NfcNciHal"
-
-/******************************************************************************
- *
- * Override the ALOGD(), ALOGE(), and other logging macros from
- * /system/core/include/cutils/log.h
- *
- ******************************************************************************/
-#include "_OverrideLog.h"
-#include <cutils/properties.h>
-#include <stdio.h>
-#include <string.h>
-#include "android_logmsg.h"
-#include "config.h"
-
-unsigned char appl_trace_level = BT_TRACE_LEVEL_DEBUG;
-
-/*******************************************************************************
-**
-** Function: InitializeGlobalAppLogLevel
-**
-** Description: Initialize and get global logging level from
-** Android property nfc.app_log_level.
-**
-** Returns: Global log level:
-** BT_TRACE_LEVEL_NONE 0 * No trace messages to be
-*generated
-** BT_TRACE_LEVEL_ERROR 1 * Error condition trace
-*messages
-** BT_TRACE_LEVEL_WARNING 2 * Warning condition trace
-*messages
-** BT_TRACE_LEVEL_API 3 * API traces
-** BT_TRACE_LEVEL_EVENT 4 * Debug messages for events
-** BT_TRACE_LEVEL_DEBUG 5 * Debug messages (general)
-**
-*******************************************************************************/
-unsigned char InitializeGlobalAppLogLevel() {
- unsigned long num = 0;
- char valueStr[PROPERTY_VALUE_MAX] = {0};
-
- num = 1;
- if (GetNumValue(NAME_APPL_TRACE_LEVEL, &num, sizeof(num)))
- appl_trace_level = (unsigned char)num;
-
- int len = property_get("nfc.app_log_level", valueStr, "");
- if (len > 0) {
- // let Android property override default value
- sscanf(valueStr, "%lu", &num);
- appl_trace_level = (unsigned char)num;
- }
-
- // 0xFF is a special value used by the stack to query the current
- // trace level; it does not change any trace level
- if (appl_trace_level == 0xFF) appl_trace_level = BT_TRACE_LEVEL_DEBUG;
- ALOGD("%s: level=%u", __func__, appl_trace_level);
-
- if (appl_trace_level < BT_TRACE_LEVEL_DEBUG) {
- // display protocol traces in raw format
- ProtoDispAdapterUseRawOutput(TRUE);
- }
- return appl_trace_level;
-}
-
-uint32_t InitializeProtocolLogLevel() {
- uint32_t num = 0;
- char valueStr[PROPERTY_VALUE_MAX] = {0};
-
- if (GetNumValue(NAME_PROTOCOL_TRACE_LEVEL, &num, sizeof(num)))
- ScrProtocolTraceFlag = num;
-
- int len = property_get("nfc.enable_protocol_log", valueStr, "");
- if (len > 0) {
- if (strncmp("0", valueStr, 1) == 0) {
- ScrProtocolTraceFlag = 0;
- } else {
- ScrProtocolTraceFlag = ~0;
- }
- }
-
- return ScrProtocolTraceFlag;
-}
diff --git a/halimpl/bcm2079x/adaptation/android_logmsg.cpp b/halimpl/bcm2079x/adaptation/android_logmsg.cpp
deleted file mode 100644
index afd03c2..0000000
--- a/halimpl/bcm2079x/adaptation/android_logmsg.cpp
+++ /dev/null
@@ -1,301 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#include "android_logmsg.h"
-#include <cutils/log.h>
-#include "_OverrideLog.h"
-#include "buildcfg.h"
-#include "nfc_target.h"
-
-extern uint32_t ScrProtocolTraceFlag;
-#define MAX_NCI_PACKET_SIZE 259
-#define BTE_LOG_BUF_SIZE 1024
-#define BTE_LOG_MAX_SIZE (BTE_LOG_BUF_SIZE - 12)
-#define MAX_LOGCAT_LINE 4096
-#define PRINT(s) __android_log_write(ANDROID_LOG_DEBUG, "BrcmNci", s)
-static char log_line[MAX_LOGCAT_LINE];
-static const char* sTable = "0123456789abcdef";
-static bool sIsUseRaw = FALSE;
-static void ToHex(const uint8_t* data, uint16_t len, char* hexString,
- uint16_t hexStringSize);
-static void dumpbin(const char* data, int size, uint32_t trace_layer,
- uint32_t trace_type);
-static inline void word2hex(const char* data, char** hex);
-static inline void byte2char(const char* data, char** str);
-static inline void byte2hex(const char* data, char** str);
-
-void BTDISP_LOCK_LOG() {}
-
-void BTDISP_UNLOCK_LOG() {}
-
-void BTDISP_INIT_LOCK() {}
-
-void BTDISP_UNINIT_LOCK() {}
-
-void ProtoDispAdapterUseRawOutput(bool isUseRaw) { sIsUseRaw = isUseRaw; }
-
-void ProtoDispAdapterDisplayNciPacket(uint8_t* nciPacket, uint16_t nciPacketLen,
- bool is_recv) {
- // Protocol decoder is not available, so decode NCI packet into hex numbers.
- if (!(ScrProtocolTraceFlag & SCR_PROTO_TRACE_NCI)) return;
- char line_buf[(MAX_NCI_PACKET_SIZE * 2) + 1];
- ToHex(nciPacket, nciPacketLen, line_buf, sizeof(line_buf));
- __android_log_write(ANDROID_LOG_DEBUG, (is_recv) ? "BrcmNciR" : "BrcmNciX",
- line_buf);
-}
-
-void ToHex(const uint8_t* data, uint16_t len, char* hexString,
- uint16_t hexStringSize) {
- int i = 0, j = 0;
- for (i = 0, j = 0; i < len && j < hexStringSize - 3; i++) {
- hexString[j++] = sTable[(*data >> 4) & 0xf];
- hexString[j++] = sTable[*data & 0xf];
- data++;
- }
- hexString[j] = '\0';
-}
-
-// Protodisp code calls ScrLog() to print decoded texts.
-void ScrLog(uint32_t trace_set_mask, const char* fmt_str, ...) {
- static char buffer[BTE_LOG_BUF_SIZE];
- va_list ap;
-
- va_start(ap, fmt_str);
- vsnprintf(buffer, BTE_LOG_MAX_SIZE, fmt_str, ap);
- va_end(ap);
- __android_log_write(ANDROID_LOG_INFO, "BrcmNci", buffer);
-}
-
-uint8_t* scru_dump_hex(uint8_t* p, char* pTitle, uint32_t len, uint32_t layer,
- uint32_t type) {
- if (pTitle && *pTitle) PRINT(pTitle);
- dumpbin((char*)p, len, layer, type);
- return p;
-}
-
-void dumpbin(const char* data, int size, uint32_t trace_layer,
- uint32_t trace_type) {
- char line_buff[256];
- char* line;
- int i, j, addr;
- const int width = 16;
- if (size <= 0) return;
- for (i = 0; i < size / width; i++) {
- line = line_buff;
- // write address:
- addr = i * width;
- word2hex((const char*)&addr, &line);
- *line++ = ':';
- *line++ = ' ';
- // write hex of data
- for (j = 0; j < width; j++) {
- byte2hex(&data[j], &line);
- *line++ = ' ';
- }
- // write char of data
- for (j = 0; j < width; j++) byte2char(data++, &line);
- // wirte the end of line
- *line = 0;
- // output the line
- PRINT(line_buff);
- }
- // last line of left over if any
- int leftover = size % width;
- if (leftover > 0) {
- line = line_buff;
- // write address:
- addr = i * width;
- word2hex((const char*)&addr, &line);
- *line++ = ':';
- *line++ = ' ';
- // write hex of data
- for (j = 0; j < leftover; j++) {
- byte2hex(&data[j], &line);
- *line++ = ' ';
- }
- // write hex padding
- for (; j < width; j++) {
- *line++ = ' ';
- *line++ = ' ';
- *line++ = ' ';
- }
- // write char of data
- for (j = 0; j < leftover; j++) byte2char(data++, &line);
- // write the end of line
- *line = 0;
- // output the line
- PRINT(line_buff);
- }
-}
-
-inline void word2hex(const char* data, char** hex) {
- byte2hex(&data[1], hex);
- byte2hex(&data[0], hex);
-}
-
-inline void byte2char(const char* data, char** str) {
- **str = *data < ' ' ? '.' : *data > '~' ? '.' : *data;
- ++(*str);
-}
-
-inline void byte2hex(const char* data, char** str) {
- **str = sTable[(*data >> 4) & 0xf];
- ++*str;
- **str = sTable[*data & 0xf];
- ++*str;
-}
-
-// Decode a few Bluetooth HCI packets into hex numbers.
-void DispHciCmd(NFC_HDR* p_buf) {
- uint32_t nBytes = ((NFC_HDR_SIZE + p_buf->offset + p_buf->len) * 2) + 1;
- uint8_t* data = (uint8_t*)p_buf;
- int data_len = NFC_HDR_SIZE + p_buf->offset + p_buf->len;
-
- if (appl_trace_level < BT_TRACE_LEVEL_DEBUG) return;
-
- if (nBytes > sizeof(log_line)) return;
-
- ToHex(data, data_len, log_line, sizeof(log_line));
- __android_log_write(ANDROID_LOG_DEBUG, "BrcmHciX", log_line);
-}
-
-// Decode a few Bluetooth HCI packets into hex numbers.
-void DispHciEvt(NFC_HDR* p_buf) {
- uint32_t nBytes = ((NFC_HDR_SIZE + p_buf->offset + p_buf->len) * 2) + 1;
- uint8_t* data = (uint8_t*)p_buf;
- int data_len = NFC_HDR_SIZE + p_buf->offset + p_buf->len;
-
- if (appl_trace_level < BT_TRACE_LEVEL_DEBUG) return;
-
- if (nBytes > sizeof(log_line)) return;
-
- ToHex(data, data_len, log_line, sizeof(log_line));
- __android_log_write(ANDROID_LOG_DEBUG, "BrcmHciR", log_line);
-}
-
-/*******************************************************************************
-**
-** Function DispLLCP
-**
-** Description Log LLCP packet as hex-ascii bytes.
-**
-** Returns None.
-**
-*******************************************************************************/
-void DispLLCP(NFC_HDR* p_buf, bool is_recv) {
- uint32_t nBytes = ((NFC_HDR_SIZE + p_buf->offset + p_buf->len) * 2) + 1;
- uint8_t* data = (uint8_t*)p_buf;
- int data_len = NFC_HDR_SIZE + p_buf->offset + p_buf->len;
-
- if (appl_trace_level < BT_TRACE_LEVEL_DEBUG) return;
-
- if (nBytes > sizeof(log_line)) return;
-
- ToHex(data, data_len, log_line, sizeof(log_line));
- __android_log_write(ANDROID_LOG_DEBUG, (is_recv) ? "BrcmLlcpR" : "BrcmLlcpX",
- log_line);
-}
-
-/*******************************************************************************
-**
-** Function DispHcp
-**
-** Description Log raw HCP packet as hex-ascii bytes
-**
-** Returns None.
-**
-*******************************************************************************/
-void DispHcp(uint8_t* data, uint16_t len, bool is_recv) {
- uint32_t nBytes = (len * 2) + 1;
-
- if (appl_trace_level < BT_TRACE_LEVEL_DEBUG) return;
-
- // Only trace HCP if we're tracing HCI as well
- if (!(ScrProtocolTraceFlag & SCR_PROTO_TRACE_HCI_SUMMARY)) return;
-
- if (nBytes > sizeof(log_line)) return;
-
- ToHex(data, len, log_line, sizeof(log_line));
- __android_log_write(ANDROID_LOG_DEBUG, (is_recv) ? "BrcmHcpR" : "BrcmHcpX",
- log_line);
-}
-
-void DispSNEP(uint8_t local_sap, uint8_t remote_sap, NFC_HDR* p_buf,
- bool is_first, bool is_rx) {}
-void DispCHO(uint8_t* pMsg, uint32_t MsgLen, bool is_rx) {}
-void DispT3TagMessage(NFC_HDR* p_msg, bool is_rx) {}
-void DispRWT4Tags(NFC_HDR* p_buf, bool is_rx) {}
-void DispCET4Tags(NFC_HDR* p_buf, bool is_rx) {}
-void DispRWI93Tag(NFC_HDR* p_buf, bool is_rx, uint8_t command_to_respond) {}
-void DispNDEFMsg(uint8_t* pMsg, uint32_t MsgLen, bool is_recv) {}
-
-/*******************************************************************************
-**
-** Function: LogMsg
-**
-** Description: Print messages from NFC stack.
-**
-** Returns: None.
-**
-*******************************************************************************/
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {
- static char buffer[BTE_LOG_BUF_SIZE];
- va_list ap;
- uint32_t trace_type =
- trace_set_mask & 0x07; // lower 3 bits contain trace type
- int android_log_type = ANDROID_LOG_INFO;
-
- va_start(ap, fmt_str);
- vsnprintf(buffer, BTE_LOG_MAX_SIZE, fmt_str, ap);
- va_end(ap);
- if (trace_type == TRACE_TYPE_ERROR) android_log_type = ANDROID_LOG_ERROR;
- __android_log_write(android_log_type, LOGMSG_TAG_NAME, buffer);
-}
-
-void LogMsg_0(uint32_t maskTraceSet, const char* p_str) {
- LogMsg(maskTraceSet, p_str);
-}
-
-void LogMsg_1(uint32_t maskTraceSet, const char* fmt_str, uintptr_t p1) {
- LogMsg(maskTraceSet, fmt_str, p1);
-}
-
-void LogMsg_2(uint32_t maskTraceSet, const char* fmt_str, uintptr_t p1,
- uintptr_t p2) {
- LogMsg(maskTraceSet, fmt_str, p1, p2);
-}
-
-void LogMsg_3(uint32_t maskTraceSet, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3) {
- LogMsg(maskTraceSet, fmt_str, p1, p2, p3);
-}
-
-void LogMsg_4(uint32_t maskTraceSet, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4) {
- LogMsg(maskTraceSet, fmt_str, p1, p2, p3, p4);
-}
-
-void LogMsg_5(uint32_t maskTraceSet, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4, uintptr_t p5) {
- LogMsg(maskTraceSet, fmt_str, p1, p2, p3, p4, p5);
-}
-
-void LogMsg_6(uint32_t maskTraceSet, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4, uintptr_t p5,
- uintptr_t p6) {
- LogMsg(maskTraceSet, fmt_str, p1, p2, p3, p4, p5, p6);
-}
diff --git a/halimpl/bcm2079x/adaptation/config.cpp b/halimpl/bcm2079x/adaptation/config.cpp
deleted file mode 100644
index 709ea19..0000000
--- a/halimpl/bcm2079x/adaptation/config.cpp
+++ /dev/null
@@ -1,672 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2011-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.
- *
- ******************************************************************************/
-
-#define LOG_TAG "NfcNciHal"
-
-#include "config.h"
-#include <stdio.h>
-#include <sys/stat.h>
-#include <list>
-#include <string>
-#include <vector>
-#include "_OverrideLog.h"
-
-const char* transport_config_paths[] = {"/odm/etc/", "/vendor/etc/", "/etc/"};
-const int transport_config_path_size =
- (sizeof(transport_config_paths) / sizeof(transport_config_paths[0]));
-
-#define config_name "libnfc-brcm.conf"
-#define extra_config_base "libnfc-brcm-"
-#define extra_config_ext ".conf"
-#define IsStringValue 0x80000000
-
-using namespace ::std;
-
-class CNfcParam : public string {
- public:
- CNfcParam();
- CNfcParam(const char* name, const string& value);
- CNfcParam(const char* name, unsigned long value);
- virtual ~CNfcParam();
- unsigned long numValue() const { return m_numValue; }
- const char* str_value() const { return m_str_value.c_str(); }
- size_t str_len() const { return m_str_value.length(); }
-
- private:
- string m_str_value;
- unsigned long m_numValue;
-};
-
-class CNfcConfig : public vector<const CNfcParam*> {
- public:
- virtual ~CNfcConfig();
- static CNfcConfig& GetInstance();
- friend void readOptionalConfig(const char* optional);
-
- bool getValue(const char* name, char* pValue, size_t& len) const;
- bool getValue(const char* name, unsigned long& rValue) const;
- bool getValue(const char* name, unsigned short& rValue) const;
- const CNfcParam* find(const char* p_name) const;
- void clean();
-
- private:
- CNfcConfig();
- bool readConfig(const char* name, bool bResetContent);
- void moveFromList();
- void moveToList();
- void add(const CNfcParam* pParam);
- list<const CNfcParam*> m_list;
- bool mValidFile;
-
- unsigned long state;
-
- inline bool Is(unsigned long f) { return (state & f) == f; }
- inline void Set(unsigned long f) { state |= f; }
- inline void Reset(unsigned long f) { state &= ~f; }
-};
-
-/*******************************************************************************
-**
-** Function: isPrintable()
-**
-** Description: detremine if a char is printable
-**
-** Returns: none
-**
-*******************************************************************************/
-inline bool isPrintable(char c) {
- return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') ||
- (c >= '0' && c <= '9') || c == '/' || c == '_' || c == '-' || c == '.';
-}
-
-/*******************************************************************************
-**
-** Function: isDigit()
-**
-** Description: detremine if a char is numeral digit
-**
-** Returns: none
-**
-*******************************************************************************/
-inline bool isDigit(char c, int base) {
- if ('0' <= c && c <= '9') return true;
- if (base == 16) {
- if (('A' <= c && c <= 'F') || ('a' <= c && c <= 'f')) return true;
- }
- return false;
-}
-
-/*******************************************************************************
-**
-** Function: getDigitValue()
-**
-** Description: return numercal value of a char
-**
-** Returns: none
-**
-*******************************************************************************/
-inline int getDigitValue(char c, int base) {
- if ('0' <= c && c <= '9') return c - '0';
- if (base == 16) {
- if ('A' <= c && c <= 'F')
- return c - 'A' + 10;
- else if ('a' <= c && c <= 'f')
- return c - 'a' + 10;
- }
- return 0;
-}
-
-/*******************************************************************************
-**
-** Function: findConfigFilePathFromTransportConfigPaths()
-**
-** Description: find a config file path with a given config name from transport
-** config paths
-**
-** Returns: none
-**
-*******************************************************************************/
-void findConfigFilePathFromTransportConfigPaths(const string& configName,
- string& filePath) {
- for (int i = 0; i < transport_config_path_size - 1; i++) {
- filePath.assign(transport_config_paths[i]);
- filePath += configName;
- struct stat file_stat;
- if (stat(filePath.c_str(), &file_stat) == 0 && S_ISREG(file_stat.st_mode)) {
- return;
- }
- }
- filePath.assign(transport_config_paths[transport_config_path_size - 1]);
- filePath += configName;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::readConfig()
-**
-** Description: read Config settings and parse them into a linked list
-** move the element from linked list to a array at the end
-**
-** Returns: none
-**
-*******************************************************************************/
-bool CNfcConfig::readConfig(const char* name, bool bResetContent) {
- enum {
- BEGIN_LINE = 1,
- TOKEN,
- STR_VALUE,
- NUM_VALUE,
- BEGIN_HEX,
- BEGIN_QUOTE,
- END_LINE
- };
-
- FILE* fd = NULL;
- string token;
- string strValue;
- unsigned long numValue = 0;
- CNfcParam* pParam = NULL;
- int i = 0;
- int base = 0;
- char c = 0;
-
- state = BEGIN_LINE;
- /* open config file, read it into a buffer */
- if ((fd = fopen(name, "rb")) == NULL) {
- ALOGD("%s Cannot open config file %s\n", __func__, name);
- if (bResetContent) {
- ALOGD("%s Using default value for all settings\n", __func__);
- mValidFile = false;
- }
- return false;
- }
- ALOGD("%s Opened %s config %s\n", __func__,
- (bResetContent ? "base" : "optional"), name);
-
- mValidFile = true;
- if (size() > 0) {
- if (bResetContent)
- clean();
- else
- moveToList();
- }
-
- while (!feof(fd) && fread(&c, 1, 1, fd) == 1) {
- switch (state & 0xff) {
- case BEGIN_LINE:
- if (c == '#')
- state = END_LINE;
- else if (isPrintable(c)) {
- i = 0;
- token.erase();
- strValue.erase();
- state = TOKEN;
- token.push_back(c);
- }
- break;
- case TOKEN:
- if (c == '=') {
- token.push_back('\0');
- state = BEGIN_QUOTE;
- } else if (isPrintable(c))
- token.push_back(c);
- else
- state = END_LINE;
- break;
- case BEGIN_QUOTE:
- if (c == '"') {
- state = STR_VALUE;
- base = 0;
- } else if (c == '0')
- state = BEGIN_HEX;
- else if (isDigit(c, 10)) {
- state = NUM_VALUE;
- base = 10;
- numValue = getDigitValue(c, base);
- i = 0;
- } else if (c == '{') {
- state = NUM_VALUE;
- base = 16;
- i = 0;
- Set(IsStringValue);
- } else
- state = END_LINE;
- break;
- case BEGIN_HEX:
- if (c == 'x' || c == 'X') {
- state = NUM_VALUE;
- base = 16;
- numValue = 0;
- i = 0;
- break;
- } else if (isDigit(c, 10)) {
- state = NUM_VALUE;
- base = 10;
- numValue = getDigitValue(c, base);
- break;
- } else if (c != '\n' && c != '\r') {
- state = END_LINE;
- break;
- }
- // fal through to numValue to handle numValue
-
- case NUM_VALUE:
- if (isDigit(c, base)) {
- numValue *= base;
- numValue += getDigitValue(c, base);
- ++i;
- } else if (base == 16 &&
- (c == ':' || c == '-' || c == ' ' || c == '}')) {
- if (i > 0) {
- int n = (i + 1) / 2;
- while (n-- > 0) {
- unsigned char c = (numValue >> (n * 8)) & 0xFF;
- strValue.push_back(c);
- }
- }
- Set(IsStringValue);
- numValue = 0;
- i = 0;
- } else {
- if (c == '\n' || c == '\r')
- state = BEGIN_LINE;
- else
- state = END_LINE;
- if (Is(IsStringValue) && base == 16 && i > 0) {
- int n = (i + 1) / 2;
- while (n-- > 0) strValue.push_back(((numValue >> (n * 8)) & 0xFF));
- }
- if (strValue.length() > 0)
- pParam = new CNfcParam(token.c_str(), strValue);
- else
- pParam = new CNfcParam(token.c_str(), numValue);
- add(pParam);
- strValue.erase();
- numValue = 0;
- }
- break;
- case STR_VALUE:
- if (c == '"') {
- strValue.push_back('\0');
- state = END_LINE;
- pParam = new CNfcParam(token.c_str(), strValue);
- add(pParam);
- } else if (isPrintable(c))
- strValue.push_back(c);
- break;
- case END_LINE:
- if (c == '\n' || c == '\r') state = BEGIN_LINE;
- break;
- default:
- break;
- }
- }
-
- fclose(fd);
-
- moveFromList();
- return size() > 0;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::CNfcConfig()
-**
-** Description: class constructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcConfig::CNfcConfig() : mValidFile(true) {}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::~CNfcConfig()
-**
-** Description: class destructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcConfig::~CNfcConfig() {}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::GetInstance()
-**
-** Description: get class singleton object
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcConfig& CNfcConfig::GetInstance() {
- static CNfcConfig theInstance;
-
- if (theInstance.size() == 0 && theInstance.mValidFile) {
- string strPath;
- findConfigFilePathFromTransportConfigPaths(config_name, strPath);
- theInstance.readConfig(strPath.c_str(), true);
- }
-
- return theInstance;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::getValue()
-**
-** Description: get a string value of a setting
-**
-** Returns: true if setting exists
-** false if setting does not exist
-**
-*******************************************************************************/
-bool CNfcConfig::getValue(const char* name, char* pValue, size_t& len) const {
- const CNfcParam* pParam = find(name);
- if (pParam == NULL) return false;
-
- if (pParam->str_len() > 0) {
- memset(pValue, 0, len);
- if (len > pParam->str_len()) len = pParam->str_len();
- memcpy(pValue, pParam->str_value(), len);
- return true;
- }
- return false;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::getValue()
-**
-** Description: get a long numerical value of a setting
-**
-** Returns: true if setting exists
-** false if setting does not exist
-**
-*******************************************************************************/
-bool CNfcConfig::getValue(const char* name, unsigned long& rValue) const {
- const CNfcParam* pParam = find(name);
- if (pParam == NULL) return false;
-
- if (pParam->str_len() == 0) {
- rValue = static_cast<unsigned long>(pParam->numValue());
- return true;
- }
- return false;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::getValue()
-**
-** Description: get a short numerical value of a setting
-**
-** Returns: true if setting exists
-** false if setting does not exist
-**
-*******************************************************************************/
-bool CNfcConfig::getValue(const char* name, unsigned short& rValue) const {
- const CNfcParam* pParam = find(name);
- if (pParam == NULL) return false;
-
- if (pParam->str_len() == 0) {
- rValue = static_cast<unsigned short>(pParam->numValue());
- return true;
- }
- return false;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::find()
-**
-** Description: search if a setting exist in the setting array
-**
-** Returns: pointer to the setting object
-**
-*******************************************************************************/
-const CNfcParam* CNfcConfig::find(const char* p_name) const {
- if (size() == 0) return NULL;
-
- for (const_iterator it = begin(), itEnd = end(); it != itEnd; ++it) {
- if (**it < p_name)
- continue;
- else if (**it == p_name) {
- if ((*it)->str_len() > 0)
- ALOGD("%s found %s=%s\n", __func__, p_name, (*it)->str_value());
- else
- ALOGD("%s found %s=(0x%lX)\n", __func__, p_name, (*it)->numValue());
- return *it;
- } else
- break;
- }
- return NULL;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::clean()
-**
-** Description: reset the setting array
-**
-** Returns: none
-**
-*******************************************************************************/
-void CNfcConfig::clean() {
- if (size() == 0) return;
-
- for (iterator it = begin(), itEnd = end(); it != itEnd; ++it) delete *it;
- clear();
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::Add()
-**
-** Description: add a setting object to the list
-**
-** Returns: none
-**
-*******************************************************************************/
-void CNfcConfig::add(const CNfcParam* pParam) {
- if (m_list.size() == 0) {
- m_list.push_back(pParam);
- return;
- }
- for (list<const CNfcParam *>::iterator it = m_list.begin(),
- itEnd = m_list.end();
- it != itEnd; ++it) {
- if (**it < pParam->c_str()) continue;
- m_list.insert(it, pParam);
- return;
- }
- m_list.push_back(pParam);
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::moveFromList()
-**
-** Description: move the setting object from list to array
-**
-** Returns: none
-**
-*******************************************************************************/
-void CNfcConfig::moveFromList() {
- if (m_list.size() == 0) return;
-
- for (list<const CNfcParam *>::iterator it = m_list.begin(),
- itEnd = m_list.end();
- it != itEnd; ++it)
- push_back(*it);
- m_list.clear();
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::moveToList()
-**
-** Description: move the setting object from array to list
-**
-** Returns: none
-**
-*******************************************************************************/
-void CNfcConfig::moveToList() {
- if (m_list.size() != 0) m_list.clear();
-
- for (iterator it = begin(), itEnd = end(); it != itEnd; ++it)
- m_list.push_back(*it);
- clear();
-}
-
-/*******************************************************************************
-**
-** Function: CNfcParam::CNfcParam()
-**
-** Description: class constructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcParam::CNfcParam() : m_numValue(0) {}
-
-/*******************************************************************************
-**
-** Function: CNfcParam::~CNfcParam()
-**
-** Description: class destructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcParam::~CNfcParam() {}
-
-/*******************************************************************************
-**
-** Function: CNfcParam::CNfcParam()
-**
-** Description: class copy constructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcParam::CNfcParam(const char* name, const string& value)
- : string(name), m_str_value(value), m_numValue(0) {}
-
-/*******************************************************************************
-**
-** Function: CNfcParam::CNfcParam()
-**
-** Description: class copy constructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcParam::CNfcParam(const char* name, unsigned long value)
- : string(name), m_numValue(value) {}
-
-/*******************************************************************************
-**
-** Function: GetStrValue
-**
-** Description: API function for getting a string value of a setting
-**
-** Returns: none
-**
-*******************************************************************************/
-extern "C" int GetStrValue(const char* name, char* pValue, unsigned long l) {
- size_t len = l;
- CNfcConfig& rConfig = CNfcConfig::GetInstance();
-
- bool b = rConfig.getValue(name, pValue, len);
- return b ? len : 0;
-}
-
-/*******************************************************************************
-**
-** Function: GetNumValue
-**
-** Description: API function for getting a numerical value of a setting
-**
-** Returns: none
-**
-*******************************************************************************/
-extern "C" int GetNumValue(const char* name, void* pValue, unsigned long len) {
- if (!pValue) return false;
-
- CNfcConfig& rConfig = CNfcConfig::GetInstance();
- const CNfcParam* pParam = rConfig.find(name);
-
- if (pParam == NULL) return false;
- unsigned long v = pParam->numValue();
- if (v == 0 && pParam->str_len() > 0 && pParam->str_len() < 4) {
- const unsigned char* p = (const unsigned char*)pParam->str_value();
- for (size_t i = 0; i < pParam->str_len(); ++i) {
- v *= 256;
- v += *p++;
- }
- }
- switch (len) {
- case sizeof(unsigned long):
- *(static_cast<unsigned long*>(pValue)) = (unsigned long)v;
- break;
- case sizeof(unsigned short):
- *(static_cast<unsigned short*>(pValue)) = (unsigned short)v;
- break;
- case sizeof(unsigned char):
- *(static_cast<unsigned char*>(pValue)) = (unsigned char)v;
- break;
- default:
- return false;
- }
- return true;
-}
-
-/*******************************************************************************
-**
-** Function: resetConfig
-**
-** Description: reset settings array
-**
-** Returns: none
-**
-*******************************************************************************/
-extern void resetConfig() {
- CNfcConfig& rConfig = CNfcConfig::GetInstance();
-
- rConfig.clean();
-}
-
-/*******************************************************************************
-**
-** Function: readOptionalConfig()
-**
-** Description: read Config settings from an optional conf file
-**
-** Returns: none
-**
-*******************************************************************************/
-void readOptionalConfig(const char* extra) {
- string strPath;
- string configName(extra_config_base);
- configName += extra;
- configName += extra_config_ext;
-
- findConfigFilePathFromTransportConfigPaths(configName, strPath);
- CNfcConfig::GetInstance().readConfig(strPath.c_str(), false);
-}
diff --git a/halimpl/bcm2079x/adaptation/patchram.cpp b/halimpl/bcm2079x/adaptation/patchram.cpp
deleted file mode 100644
index 3fc4b5a..0000000
--- a/halimpl/bcm2079x/adaptation/patchram.cpp
+++ /dev/null
@@ -1,594 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-
-#define LOG_TAG "NfcNciHal"
-
-#include "_OverrideLog.h"
-#include "config.h"
-#include "nfc_hal_int.h"
-#include "userial.h"
-extern "C" {
-#include "nfc_hal_post_reset.h"
-}
-#include <cutils/properties.h>
-#include <inttypes.h>
-#include <malloc.h>
-#include <string>
-#include "StartupConfig.h"
-#include "spdhelper.h"
-
-#define FW_PRE_PATCH "FW_PRE_PATCH"
-#define FW_PATCH "FW_PATCH"
-#define MAX_RF_DATA_CREDITS "MAX_RF_DATA_CREDITS"
-
-#define MAX_BUFFER (512)
-static char sPrePatchFn[MAX_BUFFER + 1];
-static char sPatchFn[MAX_BUFFER + 1];
-static void* sPrmBuf = NULL;
-static void* sI2cFixPrmBuf = NULL;
-
-#define CONFIG_MAX_LEN 256
-static uint8_t sConfig[CONFIG_MAX_LEN];
-static StartupConfig sStartupConfig;
-static StartupConfig sLptdConfig;
-static StartupConfig sPreDiscoveryConfig;
-static StartupConfig sXtalCustomParam;
-extern uint8_t* p_nfc_hal_dm_start_up_cfg; // defined in the HAL
-static uint8_t nfa_dm_start_up_vsc_cfg[CONFIG_MAX_LEN];
-extern uint8_t* p_nfc_hal_dm_start_up_vsc_cfg; // defined in the HAL
-extern uint8_t* p_nfc_hal_dm_lptd_cfg; // defined in the HAL
-static uint8_t sDontSendLptd[] = {0};
-extern uint8_t* p_nfc_hal_pre_discover_cfg; // defined in the HAL
-extern uint8_t* p_nfc_hal_dm_xtal_params_cfg; // defined in HAL
-
-extern tSNOOZE_MODE_CONFIG gSnoozeModeCfg;
-extern tNFC_HAL_CFG* p_nfc_hal_cfg;
-static void mayDisableSecureElement(StartupConfig& config);
-
-/* Default patchfile (in NCD format) */
-#ifndef NFA_APP_DEFAULT_PATCHFILE_NAME
-#define NFA_APP_DEFAULT_PATCHFILE_NAME "\0"
-#endif
-
-/* Default patchfile (in NCD format) */
-#ifndef NFA_APP_DEFAULT_I2C_PATCHFILE_NAME
-#define NFA_APP_DEFAULT_I2C_PATCHFILE_NAME "\0"
-#endif
-
-tNFC_POST_RESET_CB nfc_post_reset_cb = {
- /* Default Patch & Pre-Patch */
- NFA_APP_DEFAULT_PATCHFILE_NAME,
- NULL,
- NFA_APP_DEFAULT_I2C_PATCHFILE_NAME,
- NULL,
-
- /* Default UART baud rate */
- NFC_HAL_DEFAULT_BAUD,
-
- /* Default tNFC_HAL_DEV_INIT_CFG (flags, num_xtal_cfg, {brcm_hw_id,
- xtal-freq, xtal-index} ) */
- {2, /* number of valid entries */
- {
- {0x43341000, 37400,
- NFC_HAL_XTAL_INDEX_37400}, // All revisions of 43341 use 37,400
- {0x20795000, 26000, NFC_HAL_XTAL_INDEX_26000},
- {0, 0, 0},
- {0, 0, 0},
- {0, 0, 0},
- }},
-
- /* Default low power mode settings */
- NFC_HAL_LP_SNOOZE_MODE_NONE, /* Snooze Mode */
- NFC_HAL_LP_IDLE_THRESHOLD_HOST, /* Idle Threshold Host */
- NFC_HAL_LP_IDLE_THRESHOLD_HC, /* Idle Threshold HC */
- NFC_HAL_LP_ACTIVE_LOW, /* NFC_WAKE Active Mode */
- NFC_HAL_LP_ACTIVE_HIGH, /* DH_WAKE Active Mode */
-
- NFA_APP_MAX_NUM_REINIT, /* max retry to get NVM type */
- 0, /* current retry count */
- TRUE, /* debug mode for downloading patchram */
- FALSE /* skip downloading patchram after reinit because of patch download
- failure */
-};
-
-/*******************************************************************************
-**
-** Function getFileLength
-**
-** Description return the size of a file
-**
-** Returns file size in number of bytes
-**
-*******************************************************************************/
-static long getFileLength(FILE* fp) {
- long sz;
- fseek(fp, 0L, SEEK_END);
- sz = ftell(fp);
- fseek(fp, 0L, SEEK_SET);
-
- return (sz > 0) ? sz : 0;
-}
-
-/*******************************************************************************
-**
-** Function isFileExist
-**
-** Description Check if file name exists (android does not support fexists)
-**
-** Returns TRUE if file exists
-**
-*******************************************************************************/
-static bool isFileExist(const char* pFilename) {
- FILE* pf;
-
- pf = fopen(pFilename, "r");
- if (pf != NULL) {
- fclose(pf);
- return TRUE;
- }
- return FALSE;
-}
-
-/*******************************************************************************
-**
-** Function findPatchramFile
-**
-** Description Find the patchram file name specified in the .conf
-**
-** Returns pointer to the file name
-**
-*******************************************************************************/
-static const char* findPatchramFile(const char* pConfigName, char* pBuffer,
- int bufferLen) {
- ALOGD("%s: config=%s", __func__, pConfigName);
-
- if (pConfigName == NULL) {
- ALOGD("%s No patchfile defined\n", __func__);
- return NULL;
- }
-
- if (GetStrValue(pConfigName, &pBuffer[0], bufferLen)) {
- ALOGD("%s found patchfile %s\n", __func__, pBuffer);
- return (pBuffer[0] == '\0') ? NULL : pBuffer;
- }
-
- ALOGD("%s Cannot find patchfile '%s'\n", __func__, pConfigName);
- return NULL;
-}
-
-/*******************************************************************************
-**
-** Function: continueAfterSetSnoozeMode
-**
-** Description: Called after Snooze Mode is enabled.
-**
-** Returns: none
-**
-*******************************************************************************/
-static void continueAfterSetSnoozeMode(tHAL_NFC_STATUS status) {
- ALOGD("%s: status=%u", __func__, status);
- // let stack download firmware during next initialization
- nfc_post_reset_cb.spd_skip_on_power_cycle = FALSE;
- if (status == NCI_STATUS_OK)
- HAL_NfcPreInitDone(HAL_NFC_STATUS_OK);
- else
- HAL_NfcPreInitDone(HAL_NFC_STATUS_FAILED);
-}
-
-/*******************************************************************************
-**
-** Function: postDownloadPatchram
-**
-** Description: Called after patch download
-**
-** Returns: none
-**
-*******************************************************************************/
-static void postDownloadPatchram(tHAL_NFC_STATUS status) {
- ALOGD("%s: status=%i", __func__, status);
- GetStrValue(NAME_SNOOZE_MODE_CFG, (char*)&gSnoozeModeCfg,
- sizeof(gSnoozeModeCfg));
- if (status != HAL_NFC_STATUS_OK) {
- ALOGE("%s: Patch download failed", __func__);
- if (status == HAL_NFC_STATUS_REFUSED) {
- SpdHelper::setPatchAsBad();
- } else
- SpdHelper::incErrorCount();
-
- /* If in SPD Debug mode, fail immediately and obviously */
- if (SpdHelper::isSpdDebug())
- HAL_NfcPreInitDone(HAL_NFC_STATUS_FAILED);
- else {
- /* otherwise, power cycle the chip and let the stack startup normally */
- ALOGD("%s: re-init; don't download firmware", __func__);
- // stop stack from downloading firmware during next initialization
- nfc_post_reset_cb.spd_skip_on_power_cycle = TRUE;
- USERIAL_PowerupDevice(0);
- HAL_NfcReInit();
- }
- }
- /* Set snooze mode here */
- else if (gSnoozeModeCfg.snooze_mode != NFC_HAL_LP_SNOOZE_MODE_NONE) {
- status = HAL_NfcSetSnoozeMode(
- gSnoozeModeCfg.snooze_mode, gSnoozeModeCfg.idle_threshold_dh,
- gSnoozeModeCfg.idle_threshold_nfcc, gSnoozeModeCfg.nfc_wake_active_mode,
- gSnoozeModeCfg.dh_wake_active_mode, continueAfterSetSnoozeMode);
- if (status != NCI_STATUS_OK) {
- ALOGE("%s: Setting snooze mode failed, status=%i", __func__, status);
- HAL_NfcPreInitDone(HAL_NFC_STATUS_FAILED);
- }
- } else {
- ALOGD("%s: Not using Snooze Mode", __func__);
- HAL_NfcPreInitDone(HAL_NFC_STATUS_OK);
- }
-}
-
-/*******************************************************************************
-**
-** Function: prmCallback
-**
-** Description: Patchram callback (for static patchram mode)
-**
-** Returns: none
-**
-*******************************************************************************/
-void prmCallback(uint8_t event) {
- ALOGD("%s: event=0x%x", __func__, event);
- switch (event) {
- case NFC_HAL_PRM_CONTINUE_EVT:
- /* This event does not occur if static patchram buf is used */
- break;
-
- case NFC_HAL_PRM_COMPLETE_EVT:
- postDownloadPatchram(HAL_NFC_STATUS_OK);
- break;
-
- case NFC_HAL_PRM_ABORT_EVT:
- postDownloadPatchram(HAL_NFC_STATUS_FAILED);
- break;
-
- case NFC_HAL_PRM_ABORT_INVALID_PATCH_EVT:
- ALOGD("%s: invalid patch...skipping patch download", __func__);
- postDownloadPatchram(HAL_NFC_STATUS_REFUSED);
- break;
-
- case NFC_HAL_PRM_ABORT_BAD_SIGNATURE_EVT:
- ALOGD("%s: patch authentication failed", __func__);
- postDownloadPatchram(HAL_NFC_STATUS_REFUSED);
- break;
-
- case NFC_HAL_PRM_ABORT_NO_NVM_EVT:
- ALOGD("%s: No NVM detected", __func__);
- HAL_NfcPreInitDone(HAL_NFC_STATUS_FAILED);
- break;
-
- default:
- ALOGD("%s: not handled event=0x%x", __func__, event);
- break;
- }
-}
-
-/*******************************************************************************
-**
-** Function getNfaValues
-**
-** Description Get configuration values needed by NFA layer
-**
-** Returns: None
-**
-*******************************************************************************/
-static void getNfaValues(uint32_t chipid) {
- unsigned long num = 0;
- int actualLen = 0;
-
- sStartupConfig.initialize();
- sLptdConfig.initialize();
- sPreDiscoveryConfig.initialize();
-
- actualLen =
- GetStrValue(NAME_NFA_DM_START_UP_CFG, (char*)sConfig, sizeof(sConfig));
- if (actualLen) sStartupConfig.append(sConfig, actualLen);
-
- // Set antenna tuning configuration if configured.
- actualLen =
- GetStrValue(NAME_PREINIT_DSP_CFG, (char*)sConfig, sizeof(sConfig));
- if (actualLen) sStartupConfig.append(sConfig, actualLen);
-
- if (GetStrValue(NAME_NFA_DM_START_UP_VSC_CFG, (char*)nfa_dm_start_up_vsc_cfg,
- sizeof(nfa_dm_start_up_vsc_cfg))) {
- p_nfc_hal_dm_start_up_vsc_cfg = &nfa_dm_start_up_vsc_cfg[0];
- ALOGD("START_UP_VSC_CFG[0] = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",
- nfa_dm_start_up_vsc_cfg[0], nfa_dm_start_up_vsc_cfg[1],
- nfa_dm_start_up_vsc_cfg[2], nfa_dm_start_up_vsc_cfg[3],
- nfa_dm_start_up_vsc_cfg[4], nfa_dm_start_up_vsc_cfg[5],
- nfa_dm_start_up_vsc_cfg[6], nfa_dm_start_up_vsc_cfg[7]);
- }
-
- actualLen = GetStrValue(NAME_LPTD_CFG, (char*)sConfig, sizeof(sConfig));
- if (actualLen) {
- sLptdConfig.append(sConfig, actualLen);
- p_nfc_hal_dm_lptd_cfg =
- const_cast<uint8_t*>(sLptdConfig.getInternalBuffer());
- } else {
- // Default to not sending any LPTD setting.
- p_nfc_hal_dm_lptd_cfg = sDontSendLptd;
- }
-
- mayDisableSecureElement(sStartupConfig);
- p_nfc_hal_dm_start_up_cfg =
- const_cast<uint8_t*>(sStartupConfig.getInternalBuffer());
-
- actualLen = GetStrValue(NAME_NFA_DM_PRE_DISCOVERY_CFG, (char*)sConfig,
- sizeof(sConfig));
- if (actualLen) {
- sPreDiscoveryConfig.append(sConfig, actualLen);
- mayDisableSecureElement(sPreDiscoveryConfig);
- p_nfc_hal_pre_discover_cfg =
- const_cast<uint8_t*>(sPreDiscoveryConfig.getInternalBuffer());
- }
-
- // configure how many secure elements are available for each type of chip
- if (p_nfc_hal_cfg->nfc_hal_hci_uicc_support > 0) {
- if ((chipid & BRCM_NFC_GEN_MASK) == BRCM_NFC_20791_GEN) {
- nfc_hal_cb.max_ee = BRCM_NFC_20791_GEN_MAX_EE;
- p_nfc_hal_cfg->nfc_hal_hci_uicc_support =
- HAL_NFC_HCI_UICC0_HOST | HAL_NFC_HCI_UICC1_HOST;
- } else if ((chipid & BRCM_NFC_GEN_MASK) == BRCM_NFC_43341_GEN) {
- nfc_hal_cb.max_ee = BRCM_NFC_43341_GEN_MAX_EE;
- p_nfc_hal_cfg->nfc_hal_hci_uicc_support =
- HAL_NFC_HCI_UICC0_HOST | HAL_NFC_HCI_UICC1_HOST;
- } else if ((chipid & BRCM_NFC_GEN_MASK) == BRCM_NFC_20795_GEN) {
- nfc_hal_cb.max_ee = BRCM_NFC_20795_GEN_MAX_EE;
- p_nfc_hal_cfg->nfc_hal_hci_uicc_support = HAL_NFC_HCI_UICC0_HOST |
- HAL_NFC_HCI_UICC1_HOST |
- HAL_NFC_HCI_UICC2_HOST;
- }
-
- // let .conf variable determine how many EE's to discover
- if (GetNumValue(NAME_NFA_MAX_EE_SUPPORTED, &num, sizeof(num)))
- nfc_hal_cb.max_ee = num;
- }
-}
-
-/*******************************************************************************
-**
-** Function StartPatchDownload
-**
-** Description Reads configuration settings, and begins the download
-** process if patch files are configured.
-**
-** Returns: None
-**
-*******************************************************************************/
-static void StartPatchDownload(uint32_t chipid) {
- ALOGD("%s: chipid=%" PRIu32, __func__, chipid);
-
- char chipID[30];
- sprintf(chipID, "%" PRIu32, chipid);
- ALOGD("%s: chidId=%s", __func__, chipID);
-
- readOptionalConfig(chipID); // Read optional chip specific settings
- readOptionalConfig("fime"); // Read optional FIME specific settings
- getNfaValues(chipid); // Get NFA configuration values into variables
-
- findPatchramFile(FW_PATCH, sPatchFn, sizeof(sPatchFn));
- findPatchramFile(FW_PRE_PATCH, sPrePatchFn, sizeof(sPatchFn));
-
- {
- FILE* fd;
- /* If an I2C fix patch file was specified, then tell the stack about it */
- if (sPrePatchFn[0] != '\0') {
- fd = fopen(sPrePatchFn, "rb");
- if (fd != NULL) {
- uint32_t lenPrmBuffer = getFileLength(fd);
-
- sI2cFixPrmBuf = malloc(lenPrmBuffer);
- if (sI2cFixPrmBuf != NULL) {
- size_t actualLen = fread(sI2cFixPrmBuf, 1, lenPrmBuffer, fd);
- if (actualLen == lenPrmBuffer) {
- ALOGD("%s Setting I2C fix to %s (size: %" PRIu32 ")", __func__,
- sPrePatchFn, lenPrmBuffer);
- HAL_NfcPrmSetI2cPatch((uint8_t*)sI2cFixPrmBuf,
- (uint16_t)lenPrmBuffer, 0);
- } else
- ALOGE(
- "%s fail reading i2c fix; actual len=%zu; expected len="
- "%" PRIu32,
- __func__, actualLen, lenPrmBuffer);
- } else {
- ALOGE("%s Unable to get buffer to i2c fix (%" PRIu32 " bytes)",
- __func__, lenPrmBuffer);
- }
-
- fclose(fd);
- } else {
- ALOGE("%s Unable to open i2c fix patchfile %s", __func__, sPrePatchFn);
- }
- }
- }
-
- {
- FILE* fd;
-
- /* If a patch file was specified, then download it now */
- if (sPatchFn[0] != '\0') {
- uint32_t bDownloadStarted = false;
-
- /* open patchfile, read it into a buffer */
- fd = fopen(sPatchFn, "rb");
- if (fd != NULL) {
- uint32_t lenPrmBuffer = getFileLength(fd);
- ALOGD("%s Downloading patchfile %s (size: %" PRIu32 ") format=%u",
- __func__, sPatchFn, lenPrmBuffer, NFC_HAL_PRM_FORMAT_NCD);
- sPrmBuf = malloc(lenPrmBuffer);
- if (sPrmBuf != NULL) {
- size_t actualLen = fread(sPrmBuf, 1, lenPrmBuffer, fd);
- if (actualLen == lenPrmBuffer) {
- if (!SpdHelper::isPatchBad((uint8_t*)sPrmBuf, lenPrmBuffer)) {
- /* Download patch using static memeory mode */
- HAL_NfcPrmDownloadStart(NFC_HAL_PRM_FORMAT_NCD, 0,
- (uint8_t*)sPrmBuf, lenPrmBuffer, 0,
- prmCallback);
- bDownloadStarted = true;
- }
- } else
- ALOGE("%s fail reading patchram", __func__);
- } else
- ALOGE("%s Unable to buffer to hold patchram (%" PRIu32 " bytes)",
- __func__, lenPrmBuffer);
-
- fclose(fd);
- } else
- ALOGE("%s Unable to open patchfile %s", __func__, sPatchFn);
-
- /* If the download never got started */
- if (!bDownloadStarted) {
- /* If debug mode, fail in an obvious way, otherwise try to start stack
- */
- postDownloadPatchram(SpdHelper::isSpdDebug() ? HAL_NFC_STATUS_FAILED
- : HAL_NFC_STATUS_OK);
- }
- } else {
- ALOGE(
- "%s: No patchfile specified or disabled. Proceeding to post-download "
- "procedure...",
- __func__);
- postDownloadPatchram(HAL_NFC_STATUS_OK);
- }
- }
-
- ALOGD("%s: exit", __func__);
-}
-
-/*******************************************************************************
-**
-** Function: nfc_hal_post_reset_init
-**
-** Description: Called by the NFC HAL after controller has been reset.
-** Begin to download firmware patch files.
-**
-** Returns: none
-**
-*******************************************************************************/
-void nfc_hal_post_reset_init(uint32_t brcm_hw_id, uint8_t nvm_type) {
- ALOGD("%s: brcm_hw_id=0x%" PRIu32 ", nvm_type=%d", __func__, brcm_hw_id,
- nvm_type);
- tHAL_NFC_STATUS stat = HAL_NFC_STATUS_FAILED;
- uint8_t max_credits = 1, allow_no_nvm = 0;
-
- p_nfc_hal_cfg->nfc_hal_prm_nvm_required =
- TRUE; // don't download firmware if controller cannot detect EERPOM
-
- if (nvm_type == NCI_SPD_NVM_TYPE_NONE) {
- GetNumValue(NAME_ALLOW_NO_NVM, &allow_no_nvm, sizeof(allow_no_nvm));
- if (allow_no_nvm == 0) {
- ALOGD("%s: No NVM detected, FAIL the init stage to force a retry",
- __func__);
- USERIAL_PowerupDevice(0);
- stat = HAL_NfcReInit();
- return;
- }
-
- p_nfc_hal_cfg->nfc_hal_prm_nvm_required =
- FALSE; // allow download firmware if controller cannot detect EERPOM
- }
-
- /* Start downloading the patch files */
- StartPatchDownload(brcm_hw_id);
-
- if (GetNumValue(MAX_RF_DATA_CREDITS, &max_credits, sizeof(max_credits)) &&
- (max_credits > 0)) {
- ALOGD("%s : max_credits=%d", __func__, max_credits);
- HAL_NfcSetMaxRfDataCredits(max_credits);
- }
-}
-
-/*******************************************************************************
-**
-** Function: mayDisableSecureElement
-**
-** Description: Optionally adjust a TLV to disable secure element. This
-*feature
-** is enabled by setting the system property
-** nfc.disable_secure_element to a bit mask represented by a
-*hex
-** octet: C0 = do not detect any secure element.
-** 40 = do not detect secure element in slot 0.
-** 80 = do not detect secure element in slot 1.
-**
-** config: a sequence of TLV's.
-**
-*******************************************************************************/
-void mayDisableSecureElement(StartupConfig& config) {
- unsigned int bitmask = 0;
- char valueStr[PROPERTY_VALUE_MAX] = {0};
- int len = property_get("nfc.disable_secure_element", valueStr, "");
- if (len > 0) {
- sscanf(valueStr, "%x", &bitmask); // read system property as a hex octet
- ALOGD("%s: disable 0x%02X", __func__, (uint8_t)bitmask);
- config.disableSecureElement((uint8_t)(bitmask & 0xC0));
- }
-}
-
-/*******************************************************************************
-**
-** Function: configureCrystalFrequency
-**
-** Description: Configure controller's crystal frequency by reading values from
-** .conf file. If .conf file does not define any value, then use
-** default values defined in struct nfc_post_reset_cb.
-**
-** Returns: none
-**
-*******************************************************************************/
-void configureCrystalFrequency() {
- unsigned long num = 0;
- uint32_t hwId = 0;
- uint16_t xtalFreq = 0;
- uint8_t xtalIndex = 0;
- int actualLen = 0;
-
- if (GetNumValue(NAME_XTAL_HARDWARE_ID, &num, sizeof(num))) hwId = num;
-
- if (GetNumValue(NAME_XTAL_FREQUENCY, &num, sizeof(num)))
- xtalFreq = (uint16_t)num;
-
- if (GetNumValue(NAME_XTAL_FREQ_INDEX, &num, sizeof(num)))
- xtalIndex = (uint8_t)num;
-
- actualLen =
- GetStrValue(NAME_XTAL_PARAMS_CFG, (char*)sConfig, sizeof(sConfig));
- if (actualLen &&
- (xtalIndex ==
- NFC_HAL_XTAL_INDEX_SPECIAL)) // whether to use custom crystal frequency
- {
- sXtalCustomParam.append(sConfig, actualLen);
- p_nfc_hal_dm_xtal_params_cfg =
- const_cast<uint8_t*>(sXtalCustomParam.getInternalBuffer());
- }
-
- if ((hwId == 0) && (xtalFreq == 0) && (xtalIndex == 0)) return;
-
- ALOGD("%s: hwId=0x%" PRIX32 "; freq=%u; index=%u", __func__, hwId, xtalFreq,
- xtalIndex);
- nfc_post_reset_cb.dev_init_config.xtal_cfg[0].brcm_hw_id =
- (hwId & BRCM_NFC_GEN_MASK);
- nfc_post_reset_cb.dev_init_config.xtal_cfg[0].xtal_freq = xtalFreq;
- nfc_post_reset_cb.dev_init_config.xtal_cfg[0].xtal_index = xtalIndex;
- nfc_post_reset_cb.dev_init_config.num_xtal_cfg = 1;
-}
diff --git a/halimpl/bcm2079x/adaptation/spdhelper.cpp b/halimpl/bcm2079x/adaptation/spdhelper.cpp
deleted file mode 100644
index b936753..0000000
--- a/halimpl/bcm2079x/adaptation/spdhelper.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-
-#define LOG_TAG "NfcNciHal"
-#include "spdhelper.h"
-#include "_OverrideLog.h"
-#include "config.h"
-
-void SpdHelper::setPatchAsBad() { getInstance().setPatchAsBadImpl(); }
-
-void SpdHelper::incErrorCount() { getInstance().incErrorCountImpl(); }
-
-bool SpdHelper::isPatchBad(uint8_t* prm, uint32_t len) {
- return getInstance().isPatchBadImpl(prm, len);
-}
-
-bool SpdHelper::isSpdDebug() {
- bool b = getInstance().isSpdDebugImpl();
- ALOGD("%s SpdDebug is %s", __func__, (b ? "TRUE" : "FALSE"));
- return b;
-}
-
-void SpdHelper::incErrorCountImpl() {
- if (++mErrorCount >= mMaxErrorCount) {
- setPatchAsBadImpl();
- }
-}
-
-void SpdHelper::setPatchAsBadImpl() { mIsPatchBad = true; }
-
-inline const char* toHex(uint8_t b) {
- static char hex[] = "0123456789ABCDEF";
- static char c[3];
- c[0] = hex[((b >> 4) & 0x0F)];
- c[1] = hex[((b >> 0) & 0x0F)];
- c[2] = '\0';
- return &c[0];
-}
-
-bool SpdHelper::isPatchBadImpl(uint8_t* prm, uint32_t len) {
- string strNew;
-
- // Get the patch ID from the prm data.
- for (uint32_t i = 0; i < 8 && i < len; ++i) strNew.append(toHex(*prm++));
-
- // If it is not the same patch as before, then reset things.
- if (strNew != mPatchId) {
- mPatchId = strNew;
- mErrorCount = 0;
- mIsPatchBad = false;
- }
-
- // Otherwise the 'mIsPatchBad' will tell if its bad or not.
- ALOGD("%s '%s' (%d) is %sa known bad patch file", __func__, mPatchId.c_str(),
- mErrorCount, (mIsPatchBad ? "" : "not "));
-
- return mIsPatchBad;
-}
-
-SpdHelper& SpdHelper::getInstance() {
- static SpdHelper* theInstance = NULL;
- if (theInstance == NULL) theInstance = new SpdHelper;
- return *theInstance;
-}
-
-SpdHelper::SpdHelper() {
- mErrorCount = 0;
- mPatchId.erase();
- if (!GetNumValue((char*)NAME_SPD_MAXRETRYCOUNT, &mMaxErrorCount,
- sizeof(mMaxErrorCount)))
- mMaxErrorCount = DEFAULT_SPD_MAXRETRYCOUNT;
- mIsPatchBad = false;
- if (!GetNumValue((char*)NAME_SPD_DEBUG, &mSpdDebug, sizeof(mSpdDebug)))
- mSpdDebug = false;
-}
diff --git a/halimpl/bcm2079x/adaptation/userial_linux.c b/halimpl/bcm2079x/adaptation/userial_linux.c
deleted file mode 100644
index 3313a2e..0000000
--- a/halimpl/bcm2079x/adaptation/userial_linux.c
+++ /dev/null
@@ -1,1731 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-
-#define LOG_TAG "USERIAL_LINUX"
-
-#include <string.h>
-#include "_OverrideLog.h"
-#include "gki.h"
-#include "nfc_hal_api.h"
-#include "nfc_hal_int.h"
-#include "nfc_target.h"
-#include "userial.h"
-
-#include <errno.h>
-#include <fcntl.h>
-#include <gki_int.h>
-#include <poll.h>
-#include <pthread.h>
-#include <stdio.h>
-#include <termios.h>
-#include <unistd.h>
-#include "bcm2079x.h"
-#include "config.h"
-#include "upio.h"
-
-#define HCISU_EVT EVENT_MASK(APPL_EVT_0)
-#define MAX_ERROR 10
-#define default_transport "/dev/bcm2079x"
-
-#define NUM_RESET_ATTEMPTS 5
-#define NFC_WAKE_ASSERTED_ON_POR UPIO_OFF
-
-#ifndef BTE_APPL_MAX_USERIAL_DEV_NAME
-#define BTE_APPL_MAX_USERIAL_DEV_NAME (256)
-#endif
-extern uint8_t appl_trace_level;
-
-/* Mapping of USERIAL_PORT_x to linux */
-extern uint32_t ScrProtocolTraceFlag;
-static tUPIO_STATE current_nfc_wake_state = UPIO_OFF;
-int uart_port = 0;
-int isLowSpeedTransport = 0;
-int nfc_wake_delay = 0;
-int nfc_write_delay = 0;
-int gPowerOnDelay = 300;
-static int gPrePowerOffDelay = 0; // default value
-static int gPostPowerOffDelay = 0; // default value
-static pthread_mutex_t close_thread_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-char userial_dev[BTE_APPL_MAX_USERIAL_DEV_NAME + 1];
-char power_control_dev[BTE_APPL_MAX_USERIAL_DEV_NAME + 1];
-tSNOOZE_MODE_CONFIG gSnoozeModeCfg = {
- NFC_HAL_LP_SNOOZE_MODE_SPI_I2C, /* Sleep Mode (0=Disabled 1=UART
- 8=SPI/I2C) */
- NFC_HAL_LP_IDLE_THRESHOLD_HOST, /* Idle Threshold Host */
- NFC_HAL_LP_IDLE_THRESHOLD_HC, /* Idle Threshold HC */
- NFC_HAL_LP_ACTIVE_LOW, /* NFC Wake active mode (0=ActiveLow
- 1=ActiveHigh) */
- NFC_HAL_LP_ACTIVE_HIGH /* Host Wake active mode (0=ActiveLow
- 1=ActiveHigh) */
-};
-
-uint8_t bcmi2cnfc_client_addr = 0;
-uint8_t bcmi2cnfc_read_multi_packets = 0;
-
-#define USERIAL_Debug_verbose \
- ((ScrProtocolTraceFlag & 0x80000000) == 0x80000000)
-
-#include <sys/socket.h>
-
-static uint8_t spi_negotiation[10] = {
- 0xF0, /* CMD */
- 0x00, /* SPI PARM Negotiation */
- 0x01, /* SPI Version */
- 0x00, /* SPI Mode:0, SPI_INT active low */
- 0x00, /* 8Bit, MSB first, Little Endian byte order */
- 0x00, /* Reserved */
- 0xFF, /* Sleep timeout Lower Byte */
- 0xFF, /* Sleep timeout Upper Byte */
- 0x00, /* Reserved */
- 0x00 /* Reserved */
-};
-static uint8_t spi_nego_res[20];
-
-/* Modes used when powering off (independent
- of what the stack/jni has configured */
-#define POM_NORMAL (0) /* Normal */
-#define POM_CE3SO (1) /* Go to CE3-SO */
-#define POM_NFC_OFF (2) /* Set NFC Off bit */
-
-static int gPowerOffMode = POM_NORMAL;
-
-static uint8_t ce3_so_cmd[10] = {
- 0x10, 0x2F, /* CMD */
- 0x08, 0x06, /* size of cmd */
- 0x02, /* CE3 power-level */
- 0xF3, /* LpmUicc */
- 0x01, /* LpmListenTech */
- 0x01, /* Param */
- 0x00, /* Forced */
- 0x00 /* Debug */
-};
-
-static uint8_t set_nfc_off_cmd[5] = {
- 0x10, 0x2F, /* CMD */
- 0x38, 0x01, /* size of cmd */
- 0x01 /* setNfcOff */
-};
-
-#include <ctype.h>
-
-#define USING_BRCM_USB TRUE
-
-/* use tc interface to change baudrate instead of close/open sequence which can
- * fail on some platforms
- * due to tx line movement when opeing/closing the UART. the 43xx do not like
- * this. */
-#ifndef USERIAL_USE_TCIO_BAUD_CHANGE
-#define USERIAL_USE_TCIO_BAUD_CHANGE FALSE
-#endif
-
-#ifndef USERIAL_USE_IO_BT_WAKE
-#define USERIAL_USE_IO_BT_WAKE FALSE
-#endif
-
-/* this are the ioctl values used for bt_wake ioctl via UART driver. you may
- * need to redefine at for
- * you platform! Logically they need to be unique and not colide with existing
- * uart ioctl's.
- */
-#ifndef USERIAL_IO_BT_WAKE_ASSERT
-#define USERIAL_IO_BT_WAKE_ASSERT 0x8003
-#endif
-#ifndef USERIAL_IO_BT_WAKE_DEASSERT
-#define USERIAL_IO_BT_WAKE_DEASSERT 0x8004
-#endif
-#ifndef USERIAL_IO_BT_WAKE_GET_ST
-#define USERIAL_IO_BT_WAKE_GET_ST 0x8005
-#endif
-
-/* the read limit in this current implementation depends on the GKI_BUF3_SIZE
- * It would be better to use some ring buffer from the USERIAL_Read() is reading
- * instead of putting it into GKI buffers.
- */
-#define READ_LIMIT (USERIAL_POOL_BUF_SIZE - NFC_HDR_SIZE)
-/*
- * minimum buffer size requirement to read a full sized packet from NFCC = 255 +
- * 4 byte header
- */
-#define MIN_BUFSIZE 259
-#define POLL_TIMEOUT 1000
-/* priority of the reader thread */
-#define USERIAL_READ_TRHEAD_PRIO 90
-/* time (ms) to wait before trying to allocate again a GKI buffer */
-#define NO_GKI_BUFFER_RECOVER_TIME 100
-#define MAX_SERIAL_PORT (USERIAL_PORT_15 + 1)
-
-extern void dumpbin(const char* data, int size);
-extern uint8_t* scru_dump_hex(uint8_t* p, char* p_title, uint32_t len,
- uint32_t trace_layer, uint32_t trace_type);
-
-static pthread_t worker_thread1 = 0;
-
-typedef struct {
- volatile unsigned long bt_wake_state;
- int sock;
- tUSERIAL_CBACK* ser_cb;
- uint16_t baud;
- uint8_t data_bits;
- uint16_t parity;
- uint8_t stop_bits;
- uint8_t port;
- tUSERIAL_OPEN_CFG open_cfg;
- int sock_power_control;
- int client_device_address;
- struct timespec write_time;
-} tLINUX_CB;
-
-static tLINUX_CB
- linux_cb; /* case of multipel port support use array : [MAX_SERIAL_PORT] */
-
-void userial_close_thread(uint32_t params);
-
-static uint8_t device_name[BTE_APPL_MAX_USERIAL_DEV_NAME + 1];
-static int bSerialPortDevice = false;
-static int _timeout = POLL_TIMEOUT;
-static bool is_close_thread_is_waiting = false;
-
-static int change_client_addr(int addr);
-
-int perf_log_every_count = 0;
-typedef struct {
- const char* label;
- long lapse;
- long bytes;
- long count;
- long overhead;
-} tPERF_DATA;
-
-/*******************************************************************************
-**
-** Function perf_reset
-**
-** Description reset performance measurement data
-**
-** Returns none
-**
-*******************************************************************************/
-void perf_reset(tPERF_DATA* t) { t->count = t->bytes = t->lapse = 0; }
-
-/*******************************************************************************
-**
-** Function perf_log
-**
-** Description produce a log entry of cvurrent performance data
-**
-** Returns none
-**
-*******************************************************************************/
-void perf_log(tPERF_DATA* t) {
- // round to nearest ms
- // t->lapse += 500;
- // t->lapse /= 1000;
- if (t->lapse) {
- if (t->bytes)
- ALOGD(
- "%s:%s, bytes=%ld, lapse=%ld (%d.%02d kbps) (bus data rate %d.%02d "
- "kbps) overhead %d(%d percent)\n",
- __func__, t->label, t->bytes, t->lapse,
- (int)(8 * t->bytes / t->lapse),
- (int)(800 * t->bytes / (t->lapse)) % 100,
- (int)(9 * (t->bytes + t->count * t->overhead) / t->lapse),
- (int)(900 * (t->bytes + t->count * t->overhead) / (t->lapse)) % 100,
- (int)(t->count * t->overhead),
- (int)(t->count * t->overhead * 100 / t->bytes));
- else
- ALOGD("%s:%s, lapse=%ld (average %ld)\n", __func__, t->label, t->lapse,
- (int)t->lapse / t->count);
- }
- perf_reset(t);
-}
-
-/*******************************************************************************
-**
-** Function perf_update
-**
-** Description update perforamnce measurement data
-**
-** Returns none
-**
-*******************************************************************************/
-void perf_update(tPERF_DATA* t, long lapse, long bytes) {
- if (!perf_log_every_count) return;
- // round to nearest ms
- lapse += 500;
- lapse /= 1000;
- t->count++;
- t->bytes += bytes;
- t->lapse += lapse;
- if (t->count == perf_log_every_count) perf_log(t);
-}
-
-static tPERF_DATA perf_poll = {"USERIAL_Poll", 0, 0, 0, 0};
-static tPERF_DATA perf_read = {"USERIAL_Read", 0, 0, 0, 9};
-static tPERF_DATA perf_write = {"USERIAL_Write", 0, 0, 0, 3};
-static tPERF_DATA perf_poll_2_poll = {"USERIAL_Poll_to_Poll", 0, 0, 0, 0};
-static clock_t _poll_t0 = 0;
-
-static uint32_t userial_baud_tbl[] = {
- 300, /* USERIAL_BAUD_300 0 */
- 600, /* USERIAL_BAUD_600 1 */
- 1200, /* USERIAL_BAUD_1200 2 */
- 2400, /* USERIAL_BAUD_2400 3 */
- 9600, /* USERIAL_BAUD_9600 4 */
- 19200, /* USERIAL_BAUD_19200 5 */
- 57600, /* USERIAL_BAUD_57600 6 */
- 115200, /* USERIAL_BAUD_115200 7 */
- 230400, /* USERIAL_BAUD_230400 8 */
- 460800, /* USERIAL_BAUD_460800 9 */
- 921600, /* USERIAL_BAUD_921600 10 */
- 1000000, /* USERIAL_BAUD_1M 11 */
- 1500000, /* USERIAL_BAUD_1_5M 12 */
- 2000000, /* USERIAL_BAUD_2M 13 */
- 3000000, /* USERIAL_BAUD_3M 14 */
- 4000000 /* USERIAL_BAUD_4M 15 */
-};
-
-/*******************************************************************************
-**
-** Function wake_state
-**
-** Description return current state of NFC_WAKE gpio
-**
-** Returns GPIO value to wake NFCC
-**
-*******************************************************************************/
-static inline int wake_state() {
- return ((gSnoozeModeCfg.nfc_wake_active_mode == NFC_HAL_LP_ACTIVE_HIGH)
- ? UPIO_ON
- : UPIO_OFF);
-}
-
-/*******************************************************************************
-**
-** Function sleep_state
-**
-** Description return current state of NFC_WAKE gpio
-**
-** Returns GPIO value to allow NFCC to goto sleep
-**
-*******************************************************************************/
-static inline int sleep_state() {
- return ((gSnoozeModeCfg.nfc_wake_active_mode == NFC_HAL_LP_ACTIVE_HIGH)
- ? UPIO_OFF
- : UPIO_ON);
-}
-
-/*******************************************************************************
-**
-** Function isWake
-**
-** Description return current state of NFC_WAKE gpio based on the active
-*mode setting
-**
-** Returns asserted_state if it's awake, deasserted_state if it's
-*allowed to sleep
-**
-*******************************************************************************/
-static inline int isWake(int state) {
- int asserted_state =
- ((gSnoozeModeCfg.nfc_wake_active_mode == NFC_HAL_LP_ACTIVE_HIGH)
- ? UPIO_ON
- : UPIO_OFF);
- return (state != -1) ? state == asserted_state
- : current_nfc_wake_state == asserted_state;
-}
-
-/*******************************************************************************
-**
-** Function setWriteDelay
-**
-** Description Record a delay for the next write operation
-**
-** Input Parameter delay in milliseconds
-**
-** Comments use this function to register a delay before next write,
-** This is used in three instances: power up delay, wake
-*delay
-** and write delay
-**
-*******************************************************************************/
-static void setWriteDelay(int delay) {
- if (delay <= 0) {
- // Set a minimum delay of 5ms between back-to-back writes
- delay = 5;
- }
-
- clock_gettime(CLOCK_MONOTONIC, &linux_cb.write_time);
- if (delay > 1000) {
- linux_cb.write_time.tv_sec += delay / 1000;
- delay %= 1000;
- }
- unsigned long write_delay = delay * 1000 * 1000;
- linux_cb.write_time.tv_nsec += write_delay;
- if (linux_cb.write_time.tv_nsec > 1000 * 1000 * 1000) {
- linux_cb.write_time.tv_nsec -= 1000 * 1000 * 1000;
- linux_cb.write_time.tv_sec++;
- }
-}
-
-/*******************************************************************************
-**
-** Function doWriteDelay
-**
-** Description Execute a delay as registered in setWriteDelay()
-**
-** Output Parameter none
-**
-** Returns none
-**
-** Comments This function calls GKI_Delay to execute a delay to
-*fulfill
-** the delay registered earlier.
-**
-*******************************************************************************/
-static void doWriteDelay() {
- struct timespec now;
- clock_gettime(CLOCK_MONOTONIC, &now);
- long delay = 0;
-
- if (now.tv_sec > linux_cb.write_time.tv_sec)
- return;
- else if (now.tv_sec == linux_cb.write_time.tv_sec) {
- if (now.tv_nsec > linux_cb.write_time.tv_nsec) return;
- delay = (linux_cb.write_time.tv_nsec - now.tv_nsec) / 1000000;
- } else
- delay = (linux_cb.write_time.tv_sec - now.tv_sec) * 1000 +
- linux_cb.write_time.tv_nsec / 1000000 - now.tv_nsec / 1000000;
-
- if (delay > 0 && delay < 1000) {
- ALOGD_IF((appl_trace_level >= BT_TRACE_LEVEL_DEBUG),
- "doWriteDelay() delay %ld ms", delay);
- GKI_delay(delay);
- }
-}
-
-/*******************************************************************************
-**
-** Function create_signal_fds
-**
-** Description create a socketpair for read thread to use
-**
-** Returns file descriptor
-**
-*******************************************************************************/
-
-static int signal_fds[2];
-static inline int create_signal_fds(struct pollfd* set) {
- if (signal_fds[0] == 0 &&
- socketpair(AF_UNIX, SOCK_STREAM, 0, signal_fds) < 0) {
- ALOGE("%s create_signal_sockets:socketpair failed, errno: %d", __func__,
- errno);
- return -1;
- }
- set->fd = signal_fds[0];
- return signal_fds[0];
-}
-
-/*******************************************************************************
-**
-** Function close_signal_fds
-**
-** Description close the socketpair
-**
-** Returns none
-**
-*******************************************************************************/
-static inline void close_signal_fds() {
- int stat = 0;
-
- stat = close(signal_fds[0]);
- if (stat == -1) ALOGE("%s, fail close index 0; errno=%d", __func__, errno);
- signal_fds[0] = 0;
-
- stat = close(signal_fds[1]);
- if (stat == -1) ALOGE("%s, fail close index 1; errno=%d", __func__, errno);
- signal_fds[1] = 0;
-}
-
-/*******************************************************************************
-**
-** Function send_wakeup_signal
-**
-** Description send a one byte data to the socket as signal to the read
-*thread
-** for it to stop
-**
-** Returns number of bytes sent, or error no
-**
-*******************************************************************************/
-static inline int send_wakeup_signal() {
- char sig_on = 1;
- ALOGD("%s: Sending signal to %d", __func__, signal_fds[1]);
- return send(signal_fds[1], &sig_on, sizeof(sig_on), 0);
-}
-
-/*******************************************************************************
-**
-** Function reset_signal
-**
-** Description read the one byte data from the socket
-**
-** Returns received data
-**
-*******************************************************************************/
-static inline int reset_signal() {
- char sig_recv = 0;
- ALOGD("%s: Receiving signal from %d", __func__, signal_fds[0]);
- recv(signal_fds[0], &sig_recv, sizeof(sig_recv), MSG_WAITALL);
- return (int)sig_recv;
-}
-
-/*******************************************************************************
-**
-** Function is_signaled
-**
-** Description test if there's data waiting on the socket
-**
-** Returns TRUE is data is available
-**
-*******************************************************************************/
-static inline int is_signaled(struct pollfd* set) {
- return ((set->revents & POLLIN) == POLLIN) ||
- ((set->revents & POLLRDNORM) == POLLRDNORM);
-}
-
-/******************************************************************************/
-
-typedef unsigned char uchar;
-
-BUFFER_Q Userial_in_q;
-
-/*******************************************************************************
- **
- ** Function USERIAL_GetLineSpeed
- **
- ** Description This function convert USERIAL baud to line speed.
- **
- ** Output Parameter None
- **
- ** Returns line speed
- **
- *******************************************************************************/
-extern uint32_t USERIAL_GetLineSpeed(uint8_t baud) {
- return (baud <= USERIAL_BAUD_4M) ? userial_baud_tbl[baud - USERIAL_BAUD_300]
- : 0;
-}
-
-/*******************************************************************************
- **
- ** Function USERIAL_GetBaud
- **
- ** Description This function convert line speed to USERIAL baud.
- **
- ** Output Parameter None
- **
- ** Returns line speed
- **
- *******************************************************************************/
-extern uint8_t USERIAL_GetBaud(uint32_t line_speed) {
- uint8_t i;
- for (i = USERIAL_BAUD_300; i <= USERIAL_BAUD_921600; i++) {
- if (userial_baud_tbl[i - USERIAL_BAUD_300] == line_speed) return i;
- }
-
- return USERIAL_BAUD_AUTO;
-}
-
-/*******************************************************************************
-**
-** Function USERIAL_Init
-**
-** Description This function initializes the serial driver.
-**
-** Output Parameter None
-**
-** Returns Nothing
-**
-*******************************************************************************/
-
-void USERIAL_Init(void* p_cfg) {
- ALOGI(__func__);
-
- // if userial_close_thread() is waiting to run; let it go first;
- // let it finish; then continue this function
- while (true) {
- pthread_mutex_lock(&close_thread_mutex);
- if (is_close_thread_is_waiting) {
- pthread_mutex_unlock(&close_thread_mutex);
- ALOGI("USERIAL_Init(): wait for close-thread");
- sleep(1);
- } else
- break;
- }
-
- memset(&linux_cb, 0, sizeof(linux_cb));
- linux_cb.sock = -1;
- linux_cb.ser_cb = NULL;
- linux_cb.sock_power_control = -1;
- linux_cb.client_device_address = 0;
- GKI_init_q(&Userial_in_q);
- pthread_mutex_unlock(&close_thread_mutex);
-}
-
-/*******************************************************************************
- **
- ** Function my_read
- **
- ** Description This function read a packet from driver.
- **
- ** Output Parameter None
- **
- ** Returns number of bytes in the packet or error code
- **
- *******************************************************************************/
-int my_read(int fd, uchar* pbuf, int len) {
- struct pollfd fds[2];
-
- int n = 0;
- int ret = 0;
- int count = 0;
- int offset = 0;
- clock_t t1, t2;
-
- if (!isLowSpeedTransport && _timeout != POLL_TIMEOUT)
- ALOGD_IF((appl_trace_level >= BT_TRACE_LEVEL_DEBUG),
- "%s: enter, pbuf=%lx, len = %d\n", __func__, (unsigned long)pbuf,
- len);
- memset(pbuf, 0, len);
- /* need to use select in order to avoid collistion between read and close on
- * same fd */
- /* Initialize the input set */
- fds[0].fd = fd;
- fds[0].events = POLLIN | POLLERR | POLLRDNORM;
- fds[0].revents = 0;
-
- create_signal_fds(&fds[1]);
- fds[1].events = POLLIN | POLLERR | POLLRDNORM;
- fds[1].revents = 0;
- t1 = clock();
- n = TEMP_FAILURE_RETRY(poll(fds, 2, _timeout));
- t2 = clock();
- perf_update(&perf_poll, t2 - t1, 0);
- if (_poll_t0) perf_update(&perf_poll_2_poll, t2 - _poll_t0, 0);
-
- _poll_t0 = t2;
- /* See if there was an error */
- if (n < 0) {
- ALOGD("select failed; errno = %d\n", errno);
- return -errno;
- } else if (n == 0)
- return -EAGAIN;
-
- if (is_signaled(&fds[1])) {
- ALOGD("%s: exit signal received\n", __func__);
- reset_signal();
- return -1;
- }
- if (!bSerialPortDevice || len < MIN_BUFSIZE)
- count = len;
- else
- count = 1;
- do {
- t2 = clock();
- ret = TEMP_FAILURE_RETRY(read(fd, pbuf + offset, (size_t)count));
- if (ret > 0) perf_update(&perf_read, clock() - t2, ret);
-
- if (ret <= 0 || !bSerialPortDevice || len < MIN_BUFSIZE) break;
-
- if (isLowSpeedTransport) goto done;
-
- if (offset == 0) {
- if (pbuf[offset] == HCIT_TYPE_NFC)
- count = 3;
- else if (pbuf[offset] == HCIT_TYPE_EVENT)
- count = 2;
- else {
- ALOGD("%s: unknown HCIT type header pbuf[%d] = %x\n", __func__, offset,
- pbuf[offset]);
- break;
- }
- offset = 1;
- } else if (offset == 1) {
- offset += count;
- count = pbuf[offset - 1];
- if (count > (len - offset)) // if (count > (remaining buffer size))
- count =
- len - offset; // only read what the remaining buffer size can hold
- } else {
- offset += ret;
- count -= ret;
- }
- if (count == 0) {
- ret = offset;
- break;
- }
- } while (count > 0);
-
-#if VALIDATE_PACKET
- /*
- * vallidate the packet structure
- */
- if (ret > 0 && len >= MIN_BUFSIZE) {
- count = 0;
- while (count < ret) {
- if (pbuf[count] == HCIT_TYPE_NFC) {
- if (USERIAL_Debug_verbose)
- scru_dump_hex(pbuf + count, NULL, pbuf[count + 3] + 4, 0, 0);
- count += pbuf[count + 3] + 4;
- } else if (pbuf[count] == HCIT_TYPE_EVENT) {
- if (USERIAL_Debug_verbose)
- scru_dump_hex(pbuf + count, NULL, pbuf[count + 2] + 3, 0, 0);
- count += pbuf[count + 2] + 3;
- } else {
- ALOGD("%s: unknown HCIT type header pbuf[%d] = %x, remain %d bytes\n",
- __func__, count, pbuf[count], ret - count);
- scru_dump_hex(pbuf + count, NULL, ret - count, 0, 0);
- break;
- }
- } /* while*/
- }
-#endif
-done:
- if (!isLowSpeedTransport)
- ALOGD_IF((appl_trace_level >= BT_TRACE_LEVEL_DEBUG),
- "%s: return %d(0x%x) bytes, errno=%d count=%d, n=%d, timeout=%d\n",
- __func__, ret, ret, errno, count, n, _timeout);
- if (_timeout == POLL_TIMEOUT) _timeout = -1;
- return ret;
-}
-extern bool gki_chk_buf_damage(void* p_buf);
-static int sRxLength = 0;
-
-/*******************************************************************************
- **
- ** Function userial_read_thread
- **
- ** Description entry point of read thread.
- **
- ** Output Parameter None
- **
- ** Returns 0
- **
- *******************************************************************************/
-uint32_t userial_read_thread(uint32_t arg) {
- int rx_length;
- int error_count = 0;
- int bErrorReported = 0;
- int iMaxError = MAX_ERROR;
- NFC_HDR* p_buf = NULL;
-
- worker_thread1 = pthread_self();
-
- ALOGD("start userial_read_thread, id=%lx", worker_thread1);
- _timeout = POLL_TIMEOUT;
-
- for (; linux_cb.sock > 0;) {
- NFC_HDR* p_buf;
- uint8_t* current_packet;
-
- p_buf = (NFC_HDR*)GKI_getpoolbuf(USERIAL_POOL_ID);
- if (p_buf != NULL) {
- p_buf->offset = 0;
- p_buf->layer_specific = 0;
-
- current_packet = (uint8_t*)(p_buf + 1);
- rx_length = my_read(linux_cb.sock, current_packet, READ_LIMIT);
-
- } else {
- ALOGE(
- "userial_read_thread(): unable to get buffer from GKI p_buf = %p "
- "poolid = %d\n",
- p_buf, USERIAL_POOL_ID);
- rx_length = 0; /* paranoia setting */
- GKI_delay(NO_GKI_BUFFER_RECOVER_TIME);
- continue;
- }
- if (rx_length > 0) {
- bErrorReported = 0;
- error_count = 0;
- iMaxError = 3;
- if (rx_length > sRxLength) sRxLength = rx_length;
- p_buf->len = (uint16_t)rx_length;
- GKI_enqueue(&Userial_in_q, p_buf);
- if (!isLowSpeedTransport)
- ALOGD_IF(
- (appl_trace_level >= BT_TRACE_LEVEL_DEBUG),
- "userial_read_thread(): enqueued p_buf=%p, count=%d, length=%d\n",
- p_buf, Userial_in_q.count, rx_length);
-
- if (linux_cb.ser_cb != NULL)
- (*linux_cb.ser_cb)(linux_cb.port, USERIAL_RX_READY_EVT,
- (tUSERIAL_EVT_DATA*)p_buf);
-
- GKI_send_event(USERIAL_HAL_TASK, HCISU_EVT);
- } else {
- GKI_freebuf(p_buf);
- if (rx_length == -EAGAIN)
- continue;
- else if (rx_length == -1) {
- ALOGD("userial_read_thread(): exiting\n");
- break;
- } else if (rx_length == 0 && !isWake(-1))
- continue;
- ++error_count;
- if (rx_length <= 0 &&
- ((error_count > 0) && ((error_count % iMaxError) == 0))) {
- if (bErrorReported == 0) {
- ALOGE(
- "userial_read_thread(): my_read returned (%d) error count = %d, "
- "errno=%d return USERIAL_ERR_EVT\n",
- rx_length, error_count, errno);
- if (linux_cb.ser_cb != NULL)
- (*linux_cb.ser_cb)(linux_cb.port, USERIAL_ERR_EVT,
- (tUSERIAL_EVT_DATA*)p_buf);
-
- GKI_send_event(USERIAL_HAL_TASK, HCISU_EVT);
- ++bErrorReported;
- }
- if (sRxLength == 0) {
- ALOGE(
- "userial_read_thread(): my_read returned (%d) error count = %d, "
- "errno=%d exit read thread\n",
- rx_length, error_count, errno);
- break;
- }
- }
- }
- } /* for */
-
- ALOGD("userial_read_thread(): freeing GKI_buffers\n");
- while ((p_buf = (NFC_HDR*)GKI_dequeue(&Userial_in_q)) != NULL) {
- GKI_freebuf(p_buf);
- ALOGD("userial_read_thread: dequeued buffer from Userial_in_q\n");
- }
-
- GKI_exit_task(GKI_get_taskid());
- ALOGD("USERIAL READ: EXITING TASK\n");
-
- return 0;
-}
-
-/*******************************************************************************
- **
- ** Function userial_to_tcio_baud
- **
- ** Description helper function converts USERIAL baud rates into TCIO
- *conforming baud rates
- **
- ** Output Parameter None
- **
- ** Returns TRUE - success
- ** FALSE - unsupported baud rate, default of 115200 is used
- **
- *******************************************************************************/
-bool userial_to_tcio_baud(uint8_t cfg_baud, uint32_t* baud) {
- if (cfg_baud == USERIAL_BAUD_600)
- *baud = B600;
- else if (cfg_baud == USERIAL_BAUD_1200)
- *baud = B1200;
- else if (cfg_baud == USERIAL_BAUD_9600)
- *baud = B9600;
- else if (cfg_baud == USERIAL_BAUD_19200)
- *baud = B19200;
- else if (cfg_baud == USERIAL_BAUD_57600)
- *baud = B57600;
- else if (cfg_baud == USERIAL_BAUD_115200)
- *baud = B115200 | CBAUDEX;
- else if (cfg_baud == USERIAL_BAUD_230400)
- *baud = B230400;
- else if (cfg_baud == USERIAL_BAUD_460800)
- *baud = B460800;
- else if (cfg_baud == USERIAL_BAUD_921600)
- *baud = B921600;
- else if (cfg_baud == USERIAL_BAUD_1M)
- *baud = B1000000;
- else if (cfg_baud == USERIAL_BAUD_2M)
- *baud = B2000000;
- else if (cfg_baud == USERIAL_BAUD_3M)
- *baud = B3000000;
- else if (cfg_baud == USERIAL_BAUD_4M)
- *baud = B4000000;
- else {
- ALOGE("userial_to_tcio_baud: unsupported baud idx %i", cfg_baud);
- *baud = B115200;
- return false;
- }
- return true;
-}
-
-#if (USERIAL_USE_IO_BT_WAKE == TRUE)
-/*******************************************************************************
- **
- ** Function userial_io_init_bt_wake
- **
- ** Description helper function to set the open state of the bt_wake if
- *ioctl
- ** is used. it should not hurt in the rfkill case but it
- *might
- ** be better to compile it out.
- **
- ** Returns none
- **
- *******************************************************************************/
-void userial_io_init_bt_wake(int fd, unsigned long* p_wake_state) {
- /* assert BT_WAKE for ioctl. should NOT hurt on rfkill version */
- ioctl(fd, USERIAL_IO_BT_WAKE_ASSERT, NULL);
- ioctl(fd, USERIAL_IO_BT_WAKE_GET_ST, p_wake_state);
- if (*p_wake_state == 0)
- ALOGI(
- "\n***userial_io_init_bt_wake(): Ooops, asserted BT_WAKE signal, but "
- "still got BT_WAKE state == to %d\n",
- *p_wake_state);
-
- *p_wake_state = 1;
-}
-#endif
-
-/*******************************************************************************
-**
-** Function USERIAL_Open
-**
-** Description Open the indicated serial port with the given
-*configuration
-**
-** Output Parameter None
-**
-** Returns Nothing
-**
-*******************************************************************************/
-void USERIAL_Open(tUSERIAL_PORT port, tUSERIAL_OPEN_CFG* p_cfg,
- tUSERIAL_CBACK* p_cback) {
- uint32_t baud = 0;
- uint8_t data_bits = 0;
- uint16_t parity = 0;
- uint8_t stop_bits = 0;
- struct termios termios;
- const char ttyusb[] = "/dev/ttyUSB";
- const char devtty[] = "/dev/tty";
- unsigned long num = 0;
- int ret = 0;
-
- ALOGI("USERIAL_Open(): enter");
-
- // if userial_close_thread() is waiting to run; let it go first;
- // let it finish; then continue this function
- while (true) {
- pthread_mutex_lock(&close_thread_mutex);
- if (is_close_thread_is_waiting) {
- pthread_mutex_unlock(&close_thread_mutex);
- ALOGI("USERIAL_Open(): wait for close-thread");
- sleep(1);
- } else
- break;
- }
-
- // restore default power off delay settings incase they were changed in
- // userial_set_poweroff_delays()
- gPrePowerOffDelay = 0;
- gPostPowerOffDelay = 0;
-
- if (!GetStrValue(NAME_TRANSPORT_DRIVER, userial_dev, sizeof(userial_dev)))
- strcpy(userial_dev, default_transport);
- if (GetNumValue(NAME_UART_PORT, &num, sizeof(num))) uart_port = num;
- if (GetNumValue(NAME_LOW_SPEED_TRANSPORT, &num, sizeof(num)))
- isLowSpeedTransport = num;
- if (GetNumValue(NAME_NFC_WAKE_DELAY, &num, sizeof(num))) nfc_wake_delay = num;
- if (GetNumValue(NAME_NFC_WRITE_DELAY, &num, sizeof(num)))
- nfc_write_delay = num;
- if (GetNumValue(NAME_PERF_MEASURE_FREQ, &num, sizeof(num)))
- perf_log_every_count = num;
- if (GetNumValue(NAME_POWER_ON_DELAY, &num, sizeof(num))) gPowerOnDelay = num;
- if (GetNumValue(NAME_PRE_POWER_OFF_DELAY, &num, sizeof(num)))
- gPrePowerOffDelay = num;
- if (GetNumValue(NAME_POST_POWER_OFF_DELAY, &num, sizeof(num)))
- gPostPowerOffDelay = num;
- if (GetNumValue(NAME_POWER_OFF_MODE, &num, sizeof(num))) gPowerOffMode = num;
- ALOGI(
- "USERIAL_Open() device: %s port=%d, uart_port=%d WAKE_DELAY(%d) "
- "WRITE_DELAY(%d) POWER_ON_DELAY(%d) PRE_POWER_OFF_DELAY(%d) "
- "POST_POWER_OFF_DELAY(%d)",
- (char*)userial_dev, port, uart_port, nfc_wake_delay, nfc_write_delay,
- gPowerOnDelay, gPrePowerOffDelay, gPostPowerOffDelay);
-
- strcpy((char*)device_name, (char*)userial_dev);
- sRxLength = 0;
- _poll_t0 = 0;
-
- if ((strncmp(userial_dev, ttyusb, sizeof(ttyusb) - 1) == 0) ||
- (strncmp(userial_dev, devtty, sizeof(devtty) - 1) == 0)) {
- if (uart_port >= MAX_SERIAL_PORT) {
- ALOGD("Port > MAX_SERIAL_PORT\n");
- goto done_open;
- }
- bSerialPortDevice = true;
- sprintf((char*)device_name, "%s%d", (char*)userial_dev, uart_port);
- ALOGI("USERIAL_Open() using device_name: %s ", (char*)device_name);
- if (!userial_to_tcio_baud(p_cfg->baud, &baud)) goto done_open;
-
- if (p_cfg->fmt & USERIAL_DATABITS_8)
- data_bits = CS8;
- else if (p_cfg->fmt & USERIAL_DATABITS_7)
- data_bits = CS7;
- else if (p_cfg->fmt & USERIAL_DATABITS_6)
- data_bits = CS6;
- else if (p_cfg->fmt & USERIAL_DATABITS_5)
- data_bits = CS5;
- else
- goto done_open;
-
- if (p_cfg->fmt & USERIAL_PARITY_NONE)
- parity = 0;
- else if (p_cfg->fmt & USERIAL_PARITY_EVEN)
- parity = PARENB;
- else if (p_cfg->fmt & USERIAL_PARITY_ODD)
- parity = (PARENB | PARODD);
- else
- goto done_open;
-
- if (p_cfg->fmt & USERIAL_STOPBITS_1)
- stop_bits = 0;
- else if (p_cfg->fmt & USERIAL_STOPBITS_2)
- stop_bits = CSTOPB;
- else
- goto done_open;
- } else
- strcpy((char*)device_name, (char*)userial_dev);
-
- {
- ALOGD("%s Opening %s\n", __func__, device_name);
- linux_cb.sock = open((char*)device_name, O_RDWR | O_NOCTTY);
- if (linux_cb.sock == -1) {
- ALOGI("%s unable to open %s", __func__, device_name);
- GKI_send_event(NFC_HAL_TASK, NFC_HAL_TASK_EVT_TERMINATE);
- goto done_open;
- }
- ALOGD("%s sock = %d\n", __func__, linux_cb.sock);
- if (GetStrValue(NAME_POWER_CONTROL_DRIVER, power_control_dev,
- sizeof(power_control_dev)) &&
- power_control_dev[0] != '\0') {
- if (strcmp(power_control_dev, userial_dev) == 0)
- linux_cb.sock_power_control = linux_cb.sock;
- else {
- linux_cb.sock_power_control =
- open((char*)power_control_dev, O_RDWR | O_NOCTTY);
- if (linux_cb.sock_power_control == -1) {
- ALOGI("%s unable to open %s", __func__, power_control_dev);
- }
- }
- }
- if (bSerialPortDevice) {
- tcflush(linux_cb.sock, TCIOFLUSH);
- tcgetattr(linux_cb.sock, &termios);
-
- termios.c_cflag &= ~(CSIZE | PARENB);
- termios.c_cflag = CLOCAL | CREAD | data_bits | stop_bits | parity;
- if (!parity) termios.c_cflag |= IGNPAR;
- // termios.c_cflag &= ~CRTSCTS;
- termios.c_oflag = 0;
- termios.c_lflag &= ~(ECHO | ECHONL | ICANON | IEXTEN | ISIG);
- termios.c_iflag &=
- ~(BRKINT | ICRNL | INLCR | ISTRIP | IXON | IGNBRK | PARMRK | INPCK);
- termios.c_lflag = 0;
- termios.c_iflag = 0;
- cfsetospeed(&termios, baud);
- cfsetispeed(&termios, baud);
-
- termios.c_cc[VTIME] = 0;
- termios.c_cc[VMIN] = 1;
- tcsetattr(linux_cb.sock, TCSANOW, &termios);
-
- tcflush(linux_cb.sock, TCIOFLUSH);
-
-#if (USERIAL_USE_IO_BT_WAKE == TRUE)
- userial_io_init_bt_wake(linux_cb.sock, &linux_cb.bt_wake_state);
-#endif
- GKI_delay(gPowerOnDelay);
- } else {
- USERIAL_PowerupDevice(port);
- }
- }
-
- linux_cb.ser_cb = p_cback;
- linux_cb.port = port;
- memcpy(&linux_cb.open_cfg, p_cfg, sizeof(tUSERIAL_OPEN_CFG));
- GKI_create_task((TASKPTR)userial_read_thread, USERIAL_HAL_TASK,
- (int8_t*)"USERIAL_HAL_TASK", 0, 0, (pthread_cond_t*)NULL,
- NULL);
-
-#if (USERIAL_DEBUG == TRUE)
- ALOGD("Leaving USERIAL_Open\n");
-#endif
-
-#if (SERIAL_AMBA == TRUE)
- /* give 20ms time for reader thread */
- GKI_delay(20);
-#endif
-
-done_open:
- pthread_mutex_unlock(&close_thread_mutex);
- ALOGI("USERIAL_Open(): exit");
- return;
-}
-
-/*******************************************************************************
-**
-** Function USERIAL_Read
-**
-** Description Read data from a serial port using byte buffers.
-**
-** Output Parameter None
-**
-** Returns Number of bytes actually read from the serial port and
-** copied into p_data. This may be less than len.
-**
-*******************************************************************************/
-
-static NFC_HDR* pbuf_USERIAL_Read = NULL;
-
-uint16_t USERIAL_Read(tUSERIAL_PORT port, uint8_t* p_data, uint16_t len) {
- uint16_t total_len = 0;
- uint16_t copy_len = 0;
- uint8_t* current_packet = NULL;
-
-#if (USERIAL_DEBUG == TRUE)
- ALOGD("%s ++ len=%d pbuf_USERIAL_Read=%p, p_data=%p\n", __func__, len,
- pbuf_USERIAL_Read, p_data);
-#endif
- do {
- if (pbuf_USERIAL_Read != NULL) {
- current_packet =
- ((uint8_t*)(pbuf_USERIAL_Read + 1)) + (pbuf_USERIAL_Read->offset);
-
- if ((pbuf_USERIAL_Read->len) <= (len - total_len))
- copy_len = pbuf_USERIAL_Read->len;
- else
- copy_len = (len - total_len);
-
- memcpy((p_data + total_len), current_packet, copy_len);
-
- total_len += copy_len;
-
- pbuf_USERIAL_Read->offset += copy_len;
- pbuf_USERIAL_Read->len -= copy_len;
-
- if (pbuf_USERIAL_Read->len == 0) {
- GKI_freebuf(pbuf_USERIAL_Read);
- pbuf_USERIAL_Read = NULL;
- }
- }
-
- if (pbuf_USERIAL_Read == NULL && (total_len < len))
- pbuf_USERIAL_Read = (NFC_HDR*)GKI_dequeue(&Userial_in_q);
-
- } while ((pbuf_USERIAL_Read != NULL) && (total_len < len));
-
-#if (USERIAL_DEBUG == TRUE)
- ALOGD("%s: returned %d bytes", __func__, total_len);
-#endif
- return total_len;
-}
-
-/*******************************************************************************
-**
-** Function USERIAL_Readbuf
-**
-** Description Read data from a serial port using GKI buffers.
-**
-** Output Parameter Pointer to a GKI buffer which contains the data.
-**
-** Returns Nothing
-**
-** Comments The caller of this function is responsible for freeing the
-** GKI buffer when it is finished with the data. If there is
-** no data to be read, the value of the returned pointer is
-** NULL.
-**
-*******************************************************************************/
-
-void USERIAL_ReadBuf(tUSERIAL_PORT port, NFC_HDR** p_buf) {}
-
-/*******************************************************************************
-**
-** Function USERIAL_WriteBuf
-**
-** Description Write data to a serial port using a GKI buffer.
-**
-** Output Parameter None
-**
-** Returns TRUE if buffer accepted for write.
-** FALSE if there is already a buffer being processed.
-**
-** Comments The buffer will be freed by the serial driver. Therefore,
-** the application calling this function must not free the
-** buffer.
-**
-*******************************************************************************/
-
-bool USERIAL_WriteBuf(tUSERIAL_PORT port, NFC_HDR* p_buf) { return false; }
-
-/*******************************************************************************
-**
-** Function USERIAL_Write
-**
-** Description Write data to a serial port using a byte buffer.
-**
-** Output Parameter None
-**
-** Returns Number of bytes actually written to the transport. This
-** may be less than len.
-**
-*******************************************************************************/
-uint16_t USERIAL_Write(tUSERIAL_PORT port, uint8_t* p_data, uint16_t len) {
- int ret = 0, total = 0;
- int i = 0;
- clock_t t;
-
- ALOGD_IF((appl_trace_level >= BT_TRACE_LEVEL_DEBUG),
- "USERIAL_Write: (%d bytes)", len);
- pthread_mutex_lock(&close_thread_mutex);
-
- doWriteDelay();
- t = clock();
- while (len != 0 && linux_cb.sock != -1) {
- ret = TEMP_FAILURE_RETRY(write(linux_cb.sock, p_data + total, len));
- if (ret < 0) {
- ALOGE("USERIAL_Write len = %d, ret = %d, errno = %d", len, ret, errno);
- break;
- } else {
- ALOGD_IF((appl_trace_level >= BT_TRACE_LEVEL_DEBUG),
- "USERIAL_Write len = %d, ret = %d", len, ret);
- }
-
- total += ret;
- len -= ret;
- }
- perf_update(&perf_write, clock() - t, total);
-
- /* register a delay for next write */
- setWriteDelay(total * nfc_write_delay / 1000);
-
- pthread_mutex_unlock(&close_thread_mutex);
-
- return ((uint16_t)total);
-}
-
-/*******************************************************************************
-**
-** Function userial_change_rate
-**
-** Description change naud rate
-**
-** Output Parameter None
-**
-** Returns None
-**
-*******************************************************************************/
-void userial_change_rate(uint8_t baud) {
-#if (USING_BRCM_USB == FALSE)
- struct termios termios;
-#endif
-#if (USERIAL_USE_TCIO_BAUD_CHANGE == TRUE)
- uint32_t tcio_baud;
-#endif
-
-#if (USING_BRCM_USB == FALSE)
- tcflush(linux_cb.sock, TCIOFLUSH);
-
- tcgetattr(linux_cb.sock, &termios);
-
- cfmakeraw(&termios);
- cfsetospeed(&termios, baud);
- cfsetispeed(&termios, baud);
-
- termios.c_cflag |= (CLOCAL | CREAD | CRTSCTS | stop_bits);
-
- tcsetattr(linux_cb.sock, TCSANOW, &termios);
- tcflush(linux_cb.sock, TCIOFLUSH);
-
-#else
-#if (USERIAL_USE_TCIO_BAUD_CHANGE == FALSE)
- fprintf(stderr, "userial_change_rate: Closing UART Port\n");
- ALOGI("userial_change_rate: Closing UART Port\n");
- USERIAL_Close(linux_cb.port);
-
- GKI_delay(50);
-
- /* change baud rate in settings - leave everything else the same */
- linux_cb.open_cfg.baud = baud;
-
- ALOGD("userial_change_rate: Attempting to reopen the UART Port at 0x%08x\n",
- (unsigned int)USERIAL_GetLineSpeed(baud));
- ALOGI("userial_change_rate: Attempting to reopen the UART Port at %i\n",
- (unsigned int)USERIAL_GetLineSpeed(baud));
-
- USERIAL_Open(linux_cb.port, &linux_cb.open_cfg, linux_cb.ser_cb);
-#else /* amba uart */
- fprintf(stderr, "userial_change_rate(): changeing baud rate via TCIO \n");
- ALOGI("userial_change_rate: (): changeing baud rate via TCIO \n");
- /* change baud rate in settings - leave everything else the same */
- linux_cb.open_cfg.baud = baud;
- if (!userial_to_tcio_baud(linux_cb.open_cfg.baud, &tcio_baud)) return;
-
- tcflush(linux_cb.sock, TCIOFLUSH);
-
- /* get current settings. they should be fine besides baud rate we want to
- * change */
- tcgetattr(linux_cb.sock, &termios);
-
- /* set input/output baudrate */
- cfsetospeed(&termios, tcio_baud);
- cfsetispeed(&termios, tcio_baud);
- tcsetattr(linux_cb.sock, TCSANOW, &termios);
-
- tcflush(linux_cb.sock, TCIOFLUSH);
-#endif
-#endif /* USING_BRCM_USB */
-}
-
-/*******************************************************************************
-**
-** Function userial_close_port
-**
-** Description close the transport driver
-**
-** Returns Nothing
-**
-*******************************************************************************/
-void userial_close_port(void) { USERIAL_Close(linux_cb.port); }
-
-/*******************************************************************************
-**
-** Function USERIAL_Ioctl
-**
-** Description Perform an operation on a serial port.
-**
-** Output Parameter The p_data parameter is either an input or output
-*depending
-** on the operation.
-**
-** Returns Nothing
-**
-*******************************************************************************/
-
-void USERIAL_Ioctl(tUSERIAL_PORT port, tUSERIAL_OP op,
- tUSERIAL_IOCTL_DATA* p_data) {
-#if (defined(LINUX_OS) && LINUX_OS == TRUE)
- USB_SCO_CONTROL ioctl_data;
-
-/* just ignore port parameter as we are using USB in this case */
-#endif
-
- switch (op) {
- case USERIAL_OP_FLUSH:
- break;
- case USERIAL_OP_FLUSH_RX:
- break;
- case USERIAL_OP_FLUSH_TX:
- break;
- case USERIAL_OP_BAUD_WR:
- ALOGI(
- "USERIAL_Ioctl: Received USERIAL_OP_BAUD_WR on port: %d, ioctl "
- "baud%i\n",
- port, p_data->baud);
- linux_cb.port = port;
- userial_change_rate(p_data->baud);
- break;
-
- default:
- break;
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function USERIAL_SetPowerOffDelays
-**
-** Description Set power off delays used during USERIAL_Close(). The
-** values in the conf. file setting override these if set.
-**
-** Returns None.
-**
-*******************************************************************************/
-void USERIAL_SetPowerOffDelays(int pre_poweroff_delay,
- int post_poweroff_delay) {
- gPrePowerOffDelay = pre_poweroff_delay;
- gPostPowerOffDelay = post_poweroff_delay;
-}
-
-/*******************************************************************************
-**
-** Function USERIAL_Close
-**
-** Description Close a serial port
-**
-** Output Parameter None
-**
-** Returns Nothing
-**
-*******************************************************************************/
-void USERIAL_Close(tUSERIAL_PORT port) {
- pthread_attr_t attr;
- pthread_t close_thread;
- uint8_t res[10];
- uint32_t delay = 100;
-
- ALOGD("%s: enter; gPowerOffMode=%d", __func__, gPowerOffMode);
-
- /* Do we need to put NFCC into certain mode before switching off?... */
- if (gPowerOffMode != POM_NORMAL) {
- switch (gPowerOffMode) {
- case POM_CE3SO:
- ALOGD("%s: Sending Set_PwrLevel cmd to go to CE3-SO mode", __func__);
- USERIAL_Write(port, ce3_so_cmd, sizeof(ce3_so_cmd));
- delay = 1000;
- break;
-
- case POM_NFC_OFF:
- ALOGD("%s: Sending Set_NfcOff cmd", __func__);
- USERIAL_Write(port, set_nfc_off_cmd, sizeof(set_nfc_off_cmd));
- break;
- }
-
- USERIAL_Read(port, res, sizeof(res));
- GKI_delay(delay);
- }
-
- // check to see if thread is already running
- if (pthread_mutex_trylock(&close_thread_mutex) == 0) {
- // mutex aquired so thread is not running
- is_close_thread_is_waiting = TRUE;
- pthread_mutex_unlock(&close_thread_mutex);
-
- // close transport in a new thread so we don't block the caller
- // make thread detached, no other thread will join
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- pthread_create(&close_thread, &attr, (void*)userial_close_thread, NULL);
- pthread_attr_destroy(&attr);
- } else {
- // mutex not aquired to thread is already running
- ALOGD("USERIAL_Close(): already closing \n");
- }
- ALOGD("%s: exit", __func__);
-}
-
-/*******************************************************************************
-**
-** Function userial_close_thread
-**
-** Description Thread to close USERIAL
-**
-** Returns None.
-**
-*******************************************************************************/
-void userial_close_thread(uint32_t params) {
- NFC_HDR* p_buf = NULL;
- int result;
-
- ALOGD("%s: closing transport (%d)\n", __func__, linux_cb.sock);
- pthread_mutex_lock(&close_thread_mutex);
- is_close_thread_is_waiting = false;
-
- if (linux_cb.sock <= 0) {
- ALOGD("%s: already closed (%d)\n", __func__, linux_cb.sock);
- pthread_mutex_unlock(&close_thread_mutex);
- return;
- }
-
- send_wakeup_signal();
- result = pthread_join(worker_thread1, NULL);
- if (result < 0)
- ALOGE("%s: pthread_join() FAILED: result: %d", __func__, result);
- else
- ALOGD("%s: pthread_join() joined: result: %d", __func__, result);
-
- if (linux_cb.sock_power_control > 0) {
- result = ioctl(linux_cb.sock_power_control, BCMNFC_WAKE_CTL, sleep_state());
- ALOGD("%s: Delay %dms before turning off the chip", __func__,
- gPrePowerOffDelay);
- GKI_delay(gPrePowerOffDelay);
- result = ioctl(linux_cb.sock_power_control, BCMNFC_POWER_CTL, 0);
- ALOGD("%s: Delay %dms after turning off the chip", __func__,
- gPostPowerOffDelay);
- GKI_delay(gPostPowerOffDelay);
- }
- result = close(linux_cb.sock);
- if (result == -1)
- ALOGE("%s: fail close linux_cb.sock; errno=%d", __func__, errno);
-
- if (linux_cb.sock_power_control > 0 &&
- linux_cb.sock_power_control != linux_cb.sock)
- result = close(linux_cb.sock_power_control);
- if (result == -1)
- ALOGE("%s: fail close linux_cb.sock_power_control; errno=%d", __func__,
- errno);
-
- linux_cb.sock_power_control = -1;
- linux_cb.sock = -1;
-
- close_signal_fds();
- pthread_mutex_unlock(&close_thread_mutex);
- ALOGD("%s: exiting", __func__);
-}
-
-/*******************************************************************************
-**
-** Function USERIAL_Feature
-**
-** Description Check whether a feature of the serial API is supported.
-**
-** Output Parameter None
-**
-** Returns TRUE if the feature is supported
-** FALSE if the feature is not supported
-**
-*******************************************************************************/
-
-bool USERIAL_Feature(tUSERIAL_FEATURE feature) {
- switch (feature) {
- case USERIAL_FEAT_PORT_1:
- case USERIAL_FEAT_PORT_2:
- case USERIAL_FEAT_PORT_3:
- case USERIAL_FEAT_PORT_4:
-
- case USERIAL_FEAT_BAUD_600:
- case USERIAL_FEAT_BAUD_1200:
- case USERIAL_FEAT_BAUD_9600:
- case USERIAL_FEAT_BAUD_19200:
- case USERIAL_FEAT_BAUD_57600:
- case USERIAL_FEAT_BAUD_115200:
-
- case USERIAL_FEAT_STOPBITS_1:
- case USERIAL_FEAT_STOPBITS_2:
-
- case USERIAL_FEAT_PARITY_NONE:
- case USERIAL_FEAT_PARITY_EVEN:
- case USERIAL_FEAT_PARITY_ODD:
-
- case USERIAL_FEAT_DATABITS_5:
- case USERIAL_FEAT_DATABITS_6:
- case USERIAL_FEAT_DATABITS_7:
- case USERIAL_FEAT_DATABITS_8:
-
- case USERIAL_FEAT_FC_HW:
- case USERIAL_FEAT_BUF_BYTE:
-
- case USERIAL_FEAT_OP_FLUSH_RX:
- case USERIAL_FEAT_OP_FLUSH_TX:
- return true;
- default:
- return false;
- }
-
- return false;
-}
-
-/*****************************************************************************
-**
-** Function UPIO_Set
-**
-** Description
-** This function sets one or more GPIO devices to the given state.
-** Multiple GPIOs of the same type can be masked together to set more
-** than one GPIO. This function can only be used on types UPIO_LED and
-** UPIO_GENERAL.
-**
-** Input Parameters:
-** type The type of device.
-** pio Indicates the particular GPIOs.
-** state The desired state.
-**
-** Output Parameter:
-** None.
-**
-** Returns:
-** None.
-**
-*****************************************************************************/
-void UPIO_Set(tUPIO_TYPE type, tUPIO pio, tUPIO_STATE new_state) {
- int ret;
- if (type == UPIO_GENERAL) {
- if (pio == NFC_HAL_LP_NFC_WAKE_GPIO) {
- if (new_state == UPIO_ON || new_state == UPIO_OFF) {
- if (linux_cb.sock_power_control > 0) {
- ALOGD("%s: ioctl, state=%d", __func__, new_state);
- ret = ioctl(linux_cb.sock_power_control, BCMNFC_WAKE_CTL, new_state);
- if (isWake(new_state) && nfc_wake_delay > 0 &&
- new_state != current_nfc_wake_state) {
- ALOGD("%s: ioctl, old state=%d, insert delay for %d ms", __func__,
- current_nfc_wake_state, nfc_wake_delay);
- setWriteDelay(nfc_wake_delay);
- }
- current_nfc_wake_state = new_state;
- }
- }
- }
- }
-}
-
-/*****************************************************************************
-**
-** Function setReadPacketSize
-**
-** Description
-** This function sets the packetSize to the driver.
-** this enables faster read operation of NCI/HCI responses
-**
-** Input Parameters:
-** len number of bytes to read per operation.
-**
-** Output Parameter:
-** None.
-**
-** Returns:
-** None.
-**
-*****************************************************************************/
-void setReadPacketSize(int len) {
- int ret;
- ALOGD("%s: ioctl, len=%d", __func__, len);
- ret = ioctl(linux_cb.sock, BCMNFC_READ_FULL_PACKET, len);
-}
-
-bool USERIAL_IsClosed() { return (linux_cb.sock == -1) ? true : false; }
-
-void USERIAL_PowerupDevice(tUSERIAL_PORT port) {
- int ret = -1;
- unsigned long num = 0;
- unsigned int resetSuccess = 0;
- unsigned int numTries = 0;
- unsigned char spi_negotiation[64];
- int delay = gPowerOnDelay;
- ALOGD("%s: enter", __func__);
-
- if (GetNumValue(NAME_READ_MULTI_PACKETS, &num, sizeof(num)))
- bcmi2cnfc_read_multi_packets = num;
-
- if (bcmi2cnfc_read_multi_packets > 0)
- ioctl(linux_cb.sock, BCMNFC_READ_MULTI_PACKETS,
- bcmi2cnfc_read_multi_packets);
-
- while (!resetSuccess && numTries < NUM_RESET_ATTEMPTS) {
- if (numTries++ > 0) {
- ALOGW("BCM2079x: retrying reset, attempt %d/%d", numTries,
- NUM_RESET_ATTEMPTS);
- }
- if (linux_cb.sock_power_control > 0) {
- current_nfc_wake_state = NFC_WAKE_ASSERTED_ON_POR;
- ioctl(linux_cb.sock_power_control, BCMNFC_WAKE_CTL,
- NFC_WAKE_ASSERTED_ON_POR);
- ioctl(linux_cb.sock_power_control, BCMNFC_POWER_CTL, 0);
- GKI_delay(10);
- ret = ioctl(linux_cb.sock_power_control, BCMNFC_POWER_CTL, 1);
- }
-
- ret = GetStrValue(NAME_SPI_NEGOTIATION, (char*)spi_negotiation,
- sizeof(spi_negotiation));
- if (ret > 0 && spi_negotiation[0] > 0 &&
- spi_negotiation[0] < sizeof(spi_negotiation) - 1) {
- int len = spi_negotiation[0];
- /* Wake control is not available: Start SPI negotiation*/
- USERIAL_Write(port, &spi_negotiation[1], len);
- USERIAL_Read(port, spi_nego_res, sizeof(spi_nego_res));
- }
-
- if (GetNumValue(NAME_CLIENT_ADDRESS, &num, sizeof(num)))
- bcmi2cnfc_client_addr = num & 0xFF;
- if (bcmi2cnfc_client_addr != 0 && 0x07 < bcmi2cnfc_client_addr &&
- bcmi2cnfc_client_addr < 0x78) {
- /* Delay needed after turning on chip */
- GKI_delay(delay);
- ALOGD("Change client address to %x\n", bcmi2cnfc_client_addr);
- ret = change_client_addr(bcmi2cnfc_client_addr);
- if (!ret) {
- resetSuccess = 1;
- linux_cb.client_device_address = bcmi2cnfc_client_addr;
- /* Delay long enough for address change */
- /* MACO xxx this needs to be at least 200 ms for BCM2079x B3 */
- delay = 200;
- }
- } else {
- resetSuccess = 1;
- }
- }
-
- if (!resetSuccess) {
- ALOGE("BCM2079x: failed to initialize NFC controller");
- }
-
- GKI_delay(delay);
- ALOGD("%s: exit", __func__);
-}
-
-#define DEFAULT_CLIENT_ADDRESS 0x77
-#define ALIAS_CLIENT_ADDRESS 0x79
-static int change_client_addr(int addr) {
- int ret;
- int i;
- char addr_data[] = {0xFA, 0xF2, 0x00, 0x00, 0x00,
- 0x38, 0x00, 0x00, 0x00, 0x2A};
- int size = sizeof(addr_data) - 1;
-
- addr_data[5] = addr & 0xFF;
-
- /* set the checksum */
- ret = 0;
- for (i = 1; i < size; ++i) ret += addr_data[i];
- addr_data[size] = (ret & 0xFF);
- ALOGD("change_client_addr() change addr from 0x%x to 0x%x\n",
- DEFAULT_CLIENT_ADDRESS, addr);
- /* ignore the return code from IOCTL */
- /* always revert back to the default client address */
- ioctl(linux_cb.sock, BCMNFC_SET_CLIENT_ADDR, DEFAULT_CLIENT_ADDRESS);
- /* Send address change command (skipping first byte) */
- ret = TEMP_FAILURE_RETRY(write(linux_cb.sock, &addr_data[1], size));
-
- /* If it fails, it is likely a B3 we are talking to */
- if (ret != size) {
- ALOGD(
- "change_client_addr() change addr to 0x%x by setting BSP address to "
- "0x%x\n",
- addr, ALIAS_CLIENT_ADDRESS);
- /* legacy kernel */
- /* MACO xxx commented out code below only works with new kernel driver,
- * but Mako/Manta ship with old one */
- ret = ioctl(linux_cb.sock, BCMNFC_CHANGE_ADDR, addr);
- return ret;
- /*
- ret = ioctl(linux_cb.sock, BCMNFC_SET_CLIENT_ADDR, ALIAS_CLIENT_ADDRESS);
- size++;
- ret = write(linux_cb.sock, addr_data, size);
- */
- }
-
- if (ret == size) {
- ALOGD("change_client_addr() set client address 0x%x to client driver\n",
- addr);
- ret = ioctl(linux_cb.sock, BCMNFC_SET_CLIENT_ADDR, addr);
- } else {
- ret = -EIO;
- }
- return ret;
-}
diff --git a/halimpl/bcm2079x/gki/common/gki.h b/halimpl/bcm2079x/gki/common/gki.h
deleted file mode 100644
index f452719..0000000
--- a/halimpl/bcm2079x/gki/common/gki.h
+++ /dev/null
@@ -1,487 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#ifndef GKI_H
-#define GKI_H
-
-#ifdef BUILDCFG
-#if (NFC_HAL_TARGET == FALSE)
-#include "buildcfg.h"
-#else
-/* Build config when building HAL */
-#include "buildcfg_hal.h"
-#endif
-#endif
-
-#ifndef NFC_STANDALONE
-#define NFC_STANDALONE FALSE
-#endif
-
-/* Include platform-specific over-rides */
-#if (NFC_STANDALONE == TRUE)
-#include "bt_types.h"
-#include "gki_target.h"
-#elif (NFC_HAL_TARGET == TRUE)
-/* If building NFC HAL, then use hal target file */
-#include "gki_hal_target.h"
-#include "nfc_types.h"
-#else
-/* For non-nfc_standalone, include Bluetooth definitions */
-#include "bt_types.h"
-#endif
-
-#define GKI_BUFFER_DEBUG FALSE
-
-/* Error codes */
-#define GKI_SUCCESS 0x00
-#define GKI_FAILURE 0x01
-#define GKI_INVALID_TASK 0xF0
-#define GKI_INVALID_POOL 0xFF
-
-/************************************************************************
-** Mailbox definitions. Each task has 4 mailboxes that are used to
-** send buffers to the task.
-*/
-#define TASK_MBOX_0 0
-#define TASK_MBOX_1 1
-#define TASK_MBOX_2 2
-#define TASK_MBOX_3 3
-
-#define NUM_TASK_MBOX 4
-
-/************************************************************************
-** Event definitions.
-**
-** There are 4 reserved events used to signal messages rcvd in task mailboxes.
-** There are 4 reserved events used to signal timeout events.
-** There are 8 general purpose events available for applications.
-*/
-#define MAX_EVENTS 16
-
-#define TASK_MBOX_0_EVT_MASK 0x0001
-#define TASK_MBOX_1_EVT_MASK 0x0002
-#define TASK_MBOX_2_EVT_MASK 0x0004
-#define TASK_MBOX_3_EVT_MASK 0x0008
-
-#define TIMER_0 0
-#define TIMER_1 1
-#define TIMER_2 2
-#define TIMER_3 3
-
-#define TIMER_0_EVT_MASK 0x0010
-#define TIMER_1_EVT_MASK 0x0020
-#define TIMER_2_EVT_MASK 0x0040
-#define TIMER_3_EVT_MASK 0x0080
-
-#define APPL_EVT_0 8
-#define APPL_EVT_1 9
-#define APPL_EVT_2 10
-#define APPL_EVT_3 11
-#define APPL_EVT_4 12
-#define APPL_EVT_5 13
-#define APPL_EVT_6 14
-#define APPL_EVT_7 15
-
-#define EVENT_MASK(evt) ((uint16_t)(0x0001 << (evt)))
-
-/************************************************************************
-** Max Time Queue
-**/
-#ifndef GKI_MAX_TIMER_QUEUES
-#define GKI_MAX_TIMER_QUEUES 3
-#endif
-
-/************************************************************************
-** Macro to determine the pool buffer size based on the GKI POOL ID at compile
-*time.
-** Pool IDs index from 0 to GKI_NUM_FIXED_BUF_POOLS - 1
-*/
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 1)
-
-#ifndef GKI_POOL_ID_0
-#define GKI_POOL_ID_0 0
-#endif /* ifndef GKI_POOL_ID_0 */
-
-#ifndef GKI_BUF0_SIZE
-#define GKI_BUF0_SIZE 0
-#endif /* ifndef GKI_BUF0_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 1 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 2)
-
-#ifndef GKI_POOL_ID_1
-#define GKI_POOL_ID_1 0
-#endif /* ifndef GKI_POOL_ID_1 */
-
-#ifndef GKI_BUF1_SIZE
-#define GKI_BUF1_SIZE 0
-#endif /* ifndef GKI_BUF1_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 2 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 3)
-
-#ifndef GKI_POOL_ID_2
-#define GKI_POOL_ID_2 0
-#endif /* ifndef GKI_POOL_ID_2 */
-
-#ifndef GKI_BUF2_SIZE
-#define GKI_BUF2_SIZE 0
-#endif /* ifndef GKI_BUF2_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 3 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 4)
-
-#ifndef GKI_POOL_ID_3
-#define GKI_POOL_ID_3 0
-#endif /* ifndef GKI_POOL_ID_4 */
-
-#ifndef GKI_BUF3_SIZE
-#define GKI_BUF3_SIZE 0
-#endif /* ifndef GKI_BUF3_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 4 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 5)
-
-#ifndef GKI_POOL_ID_4
-#define GKI_POOL_ID_4 0
-#endif /* ifndef GKI_POOL_ID_4 */
-
-#ifndef GKI_BUF4_SIZE
-#define GKI_BUF4_SIZE 0
-#endif /* ifndef GKI_BUF4_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 5 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 6)
-
-#ifndef GKI_POOL_ID_5
-#define GKI_POOL_ID_5 0
-#endif /* ifndef GKI_POOL_ID_5 */
-
-#ifndef GKI_BUF5_SIZE
-#define GKI_BUF5_SIZE 0
-#endif /* ifndef GKI_BUF5_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 6 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 7)
-
-#ifndef GKI_POOL_ID_6
-#define GKI_POOL_ID_6 0
-#endif /* ifndef GKI_POOL_ID_6 */
-
-#ifndef GKI_BUF6_SIZE
-#define GKI_BUF6_SIZE 0
-#endif /* ifndef GKI_BUF6_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 7 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 8)
-
-#ifndef GKI_POOL_ID_7
-#define GKI_POOL_ID_7 0
-#endif /* ifndef GKI_POOL_ID_7 */
-
-#ifndef GKI_BUF7_SIZE
-#define GKI_BUF7_SIZE 0
-#endif /* ifndef GKI_BUF7_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 8 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 9)
-
-#ifndef GKI_POOL_ID_8
-#define GKI_POOL_ID_8 0
-#endif /* ifndef GKI_POOL_ID_8 */
-
-#ifndef GKI_BUF8_SIZE
-#define GKI_BUF8_SIZE 0
-#endif /* ifndef GKI_BUF8_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 9 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 10)
-
-#ifndef GKI_POOL_ID_9
-#define GKI_POOL_ID_9 0
-#endif /* ifndef GKI_POOL_ID_9 */
-
-#ifndef GKI_BUF9_SIZE
-#define GKI_BUF9_SIZE 0
-#endif /* ifndef GKI_BUF9_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 10 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 11)
-
-#ifndef GKI_POOL_ID_10
-#define GKI_POOL_ID_10 0
-#endif /* ifndef GKI_POOL_ID_10 */
-
-#ifndef GKI_BUF10_SIZE
-#define GKI_BUF10_SIZE 0
-#endif /* ifndef GKI_BUF10_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 11 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 12)
-
-#ifndef GKI_POOL_ID_11
-#define GKI_POOL_ID_11 0
-#endif /* ifndef GKI_POOL_ID_11 */
-
-#ifndef GKI_BUF11_SIZE
-#define GKI_BUF11_SIZE 0
-#endif /* ifndef GKI_BUF11_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 12 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 13)
-
-#ifndef GKI_POOL_ID_12
-#define GKI_POOL_ID_12 0
-#endif /* ifndef GKI_POOL_ID_12 */
-
-#ifndef GKI_BUF12_SIZE
-#define GKI_BUF12_SIZE 0
-#endif /* ifndef GKI_BUF12_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 13 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 14)
-
-#ifndef GKI_POOL_ID_13
-#define GKI_POOL_ID_13 0
-#endif /* ifndef GKI_POOL_ID_13 */
-
-#ifndef GKI_BUF13_SIZE
-#define GKI_BUF13_SIZE 0
-#endif /* ifndef GKI_BUF13_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 14 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 15)
-
-#ifndef GKI_POOL_ID_14
-#define GKI_POOL_ID_14 0
-#endif /* ifndef GKI_POOL_ID_14 */
-
-#ifndef GKI_BUF14_SIZE
-#define GKI_BUF14_SIZE 0
-#endif /* ifndef GKI_BUF14_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 15 */
-
-#if (GKI_NUM_FIXED_BUF_POOLS < 16)
-
-#ifndef GKI_POOL_ID_15
-#define GKI_POOL_ID_15 0
-#endif /* ifndef GKI_POOL_ID_15 */
-
-#ifndef GKI_BUF15_SIZE
-#define GKI_BUF15_SIZE 0
-#endif /* ifndef GKI_BUF15_SIZE */
-
-#endif /* GKI_NUM_FIXED_BUF_POOLS < 16 */
-
-/* Timer list entry callback type
-*/
-typedef void(TIMER_CBACK)(void* p_tle);
-
-/* Define a timer list entry
-*/
-typedef struct _tle {
- struct _tle* p_next;
- struct _tle* p_prev;
- TIMER_CBACK* p_cback;
- int32_t ticks;
- uintptr_t param;
- uint16_t event;
- uint8_t in_use;
-} TIMER_LIST_ENT;
-
-/* Define a timer list queue
-*/
-typedef struct {
- TIMER_LIST_ENT* p_first;
- TIMER_LIST_ENT* p_last;
- int32_t last_ticks;
-} TIMER_LIST_Q;
-
-/***********************************************************************
-** This queue is a general purpose buffer queue, for application use.
-*/
-typedef struct {
- void* p_first;
- void* p_last;
- uint16_t count;
-} BUFFER_Q;
-
-#define GKI_IS_QUEUE_EMPTY(p_q) ((p_q)->count == 0)
-
-/* Task constants
-*/
-#ifndef TASKPTR
-typedef void (*TASKPTR)(uint32_t);
-#endif
-
-/* General pool accessible to GKI_getbuf() */
-#define GKI_PUBLIC_POOL 0
-#define GKI_RESTRICTED_POOL 1 /* Inaccessible pool to GKI_getbuf() */
-
-/***********************************************************************
-** Function prototypes
-*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Task management
-*/
-extern uint8_t GKI_create_task(TASKPTR, uint8_t, int8_t*, uint16_t*, uint16_t,
- void*, void*);
-extern void GKI_exit_task(uint8_t);
-extern uint8_t GKI_get_taskid(void);
-extern void GKI_init(void);
-extern int8_t* GKI_map_taskname(uint8_t);
-extern uint8_t GKI_resume_task(uint8_t);
-extern void GKI_run(void*);
-extern void GKI_stop(void);
-extern uint8_t GKI_suspend_task(uint8_t);
-extern uint8_t GKI_is_task_running(uint8_t);
-extern void GKI_shutdown(void);
-
-/* memory management
-*/
-extern void GKI_shiftdown(uint8_t* p_mem, uint32_t len, uint32_t shift_amount);
-extern void GKI_shiftup(uint8_t* p_dest, uint8_t* p_src, uint32_t len);
-
-/* To send buffers and events between tasks
-*/
-extern uint8_t GKI_isend_event(uint8_t, uint16_t);
-extern void GKI_isend_msg(uint8_t, uint8_t, void*);
-extern void* GKI_read_mbox(uint8_t);
-extern void GKI_send_msg(uint8_t, uint8_t, void*);
-extern uint8_t GKI_send_event(uint8_t, uint16_t);
-
-/* To get and release buffers, change owner and get size
-*/
-extern void GKI_change_buf_owner(void*, uint8_t);
-extern uint8_t GKI_create_pool(uint16_t, uint16_t, uint8_t, void*);
-extern void GKI_delete_pool(uint8_t);
-extern void* GKI_find_buf_start(void*);
-extern void GKI_freebuf(void*);
-#if (GKI_BUFFER_DEBUG == TRUE)
-#define GKI_getbuf(size) GKI_getbuf_debug(size, __func__, __LINE__)
-extern void* GKI_getbuf_debug(uint16_t, const char*, int);
-#else
-extern void* GKI_getbuf(uint16_t);
-#endif
-extern uint16_t GKI_get_buf_size(void*);
-#if (GKI_BUFFER_DEBUG == TRUE)
-#define GKI_getpoolbuf(id) GKI_getpoolbuf_debug(id, __func__, __LINE__)
-extern void* GKI_getpoolbuf_debug(uint8_t, const char*, int);
-#else
-extern void* GKI_getpoolbuf(uint8_t);
-#endif
-
-extern uint16_t GKI_poolcount(uint8_t);
-extern uint16_t GKI_poolfreecount(uint8_t);
-extern uint16_t GKI_poolutilization(uint8_t);
-extern void GKI_register_mempool(void* p_mem);
-extern uint8_t GKI_set_pool_permission(uint8_t, uint8_t);
-
-/* User buffer queue management
-*/
-extern void* GKI_dequeue(BUFFER_Q*);
-extern void GKI_enqueue(BUFFER_Q*, void*);
-extern void GKI_enqueue_head(BUFFER_Q*, void*);
-extern void* GKI_getfirst(BUFFER_Q*);
-extern void* GKI_getlast(BUFFER_Q*);
-extern void* GKI_getnext(void*);
-extern void GKI_init_q(BUFFER_Q*);
-extern bool GKI_queue_is_empty(BUFFER_Q*);
-extern void* GKI_remove_from_queue(BUFFER_Q*, void*);
-extern uint16_t GKI_get_pool_bufsize(uint8_t);
-
-/* Timer management
-*/
-extern void GKI_add_to_timer_list(TIMER_LIST_Q*, TIMER_LIST_ENT*);
-extern void GKI_delay(uint32_t);
-extern uint32_t GKI_get_tick_count(void);
-extern int8_t* GKI_get_time_stamp(int8_t*);
-extern void GKI_init_timer_list(TIMER_LIST_Q*);
-extern void GKI_init_timer_list_entry(TIMER_LIST_ENT*);
-extern int32_t GKI_ready_to_sleep(void);
-extern void GKI_remove_from_timer_list(TIMER_LIST_Q*, TIMER_LIST_ENT*);
-extern void GKI_start_timer(uint8_t, int32_t, bool);
-extern void GKI_stop_timer(uint8_t);
-extern void GKI_timer_update(int32_t);
-extern uint16_t GKI_update_timer_list(TIMER_LIST_Q*, int32_t);
-extern uint32_t GKI_get_remaining_ticks(TIMER_LIST_Q*, TIMER_LIST_ENT*);
-extern uint16_t GKI_wait(uint16_t, uint32_t);
-
-/* Start and Stop system time tick callback
- * true for start system tick if time queue is not empty
- * false to stop system tick if time queue is empty
-*/
-typedef void(SYSTEM_TICK_CBACK)(bool);
-
-/* Time queue management for system ticks
-*/
-extern bool GKI_timer_queue_empty(void);
-extern void GKI_timer_queue_register_callback(SYSTEM_TICK_CBACK*);
-
-/* Disable Interrupts, Enable Interrupts
-*/
-extern void GKI_enable(void);
-extern void GKI_disable(void);
-extern void GKI_sched_lock(void);
-extern void GKI_sched_unlock(void);
-
-/* Allocate (Free) memory from an OS
-*/
-extern void* GKI_os_malloc(uint32_t);
-extern void GKI_os_free(void*);
-
-/* os timer operation */
-extern uint32_t GKI_get_os_tick_count(void);
-
-/* Exception handling
-*/
-extern void GKI_exception(uint16_t, char*);
-
-#if (GKI_DEBUG == TRUE)
-extern void GKI_PrintBufferUsage(uint8_t* p_num_pools, uint16_t* p_cur_used);
-extern void GKI_PrintBuffer(void);
-extern void GKI_print_task(void);
-#else
-#undef GKI_PrintBufferUsage
-#define GKI_PrintBuffer() NULL
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/halimpl/bcm2079x/gki/common/gki_buffer.c b/halimpl/bcm2079x/gki/common/gki_buffer.c
deleted file mode 100644
index b413f5c..0000000
--- a/halimpl/bcm2079x/gki/common/gki_buffer.c
+++ /dev/null
@@ -1,1484 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#include <stdio.h>
-#include "gki_int.h"
-
-#if (GKI_NUM_TOTAL_BUF_POOLS > 16)
-#error Number of pools out of range (16 Max)!
-#endif
-
-#if (BTU_STACK_LITE_ENABLED == FALSE)
-static void gki_add_to_pool_list(uint8_t pool_id);
-static void gki_remove_from_pool_list(uint8_t pool_id);
-#endif /* BTU_STACK_LITE_ENABLED == FALSE */
-
-#if (GKI_BUFFER_DEBUG == TRUE)
-#define LOG_TAG "GKI_DEBUG"
-#include <android/log.h>
-#include <cutils/log.h>
-#define LOGD(format, ...) \
- LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | \
- TRACE_TYPE_GENERIC, \
- format, ##__VA_ARGS__)
-#endif
-/*******************************************************************************
-**
-** Function gki_init_free_queue
-**
-** Description Internal function called at startup to initialize a free
-** queue. It is called once for each free queue.
-**
-** Returns void
-**
-*******************************************************************************/
-static void gki_init_free_queue(uint8_t id, uint16_t size, uint16_t total,
- void* p_mem) {
- uint16_t i;
- uint16_t act_size;
- BUFFER_HDR_T* hdr;
- BUFFER_HDR_T* hdr1 = NULL;
- uint32_t* magic;
- int32_t tempsize = size;
- tGKI_COM_CB* p_cb = &gki_cb.com;
-
- /* Ensure an even number of longwords */
- tempsize = (int32_t)ALIGN_POOL(size);
- act_size = (uint16_t)(tempsize + BUFFER_PADDING_SIZE);
-
- /* Remember pool start and end addresses */
- if (p_mem) {
- p_cb->pool_start[id] = (uint8_t*)p_mem;
- p_cb->pool_end[id] = (uint8_t*)p_mem + (act_size * total);
- }
-
- p_cb->pool_size[id] = act_size;
-
- p_cb->freeq[id].size = (uint16_t)tempsize;
- p_cb->freeq[id].total = total;
- p_cb->freeq[id].cur_cnt = 0;
- p_cb->freeq[id].max_cnt = 0;
-
-#if (GKI_BUFFER_DEBUG == TRUE)
- LOGD(
- "gki_init_free_queue() init pool=%d, size=%d (aligned=%d) total=%d "
- "start=%p",
- id, size, tempsize, total, p_mem);
-#endif
-
- /* Initialize index table */
- if (p_mem) {
- hdr = (BUFFER_HDR_T*)p_mem;
- p_cb->freeq[id].p_first = hdr;
- for (i = 0; i < total; i++) {
- hdr->task_id = GKI_INVALID_TASK;
- hdr->q_id = id;
- hdr->status = BUF_STATUS_FREE;
- magic = (uint32_t*)((uint8_t*)hdr + BUFFER_HDR_SIZE + tempsize);
- *magic = MAGIC_NO;
- hdr1 = hdr;
- hdr = (BUFFER_HDR_T*)((uint8_t*)hdr + act_size);
- hdr1->p_next = hdr;
- }
- hdr1->p_next = NULL;
- p_cb->freeq[id].p_last = hdr1;
- }
- return;
-}
-
-#if (GKI_USE_DEFERED_ALLOC_BUF_POOLS == TRUE)
-static bool gki_alloc_free_queue(uint8_t id) {
- FREE_QUEUE_T* Q;
- tGKI_COM_CB* p_cb = &gki_cb.com;
-#if GKI_BUFFER_DEBUG
- ALOGD("\ngki_alloc_free_queue in, id:%d \n", id);
-#endif
-
- Q = &p_cb->freeq[p_cb->pool_list[id]];
-
- if (Q->p_first == 0) {
- void* p_mem = GKI_os_malloc((Q->size + BUFFER_PADDING_SIZE) * Q->total);
- if (p_mem) {
-// re-initialize the queue with allocated memory
-#if GKI_BUFFER_DEBUG
- ALOGD(
- "\ngki_alloc_free_queue calling gki_init_free_queue, id:%d "
- "size:%d, totol:%d\n",
- id, Q->size, Q->total);
-#endif
- gki_init_free_queue(id, Q->size, Q->total, p_mem);
-#if GKI_BUFFER_DEBUG
- ALOGD("\ngki_alloc_free_queue ret OK, id:%d size:%d, totol:%d\n", id,
- Q->size, Q->total);
-#endif
- return true;
- }
- GKI_exception(GKI_ERROR_BUF_SIZE_TOOBIG,
- "gki_alloc_free_queue: Not enough memory");
- }
-#if GKI_BUFFER_DEBUG
- ALOGD("\ngki_alloc_free_queue out failed, id:%d\n", id);
-#endif
- return false;
-}
-#endif
-
-/*******************************************************************************
-**
-** Function gki_buffer_init
-**
-** Description Called once internally by GKI at startup to initialize all
-** buffers and free buffer pools.
-**
-** Returns void
-**
-*******************************************************************************/
-void gki_buffer_init(void) {
- uint8_t i, tt, mb;
- tGKI_COM_CB* p_cb = &gki_cb.com;
-
- /* Initialize mailboxes */
- for (tt = 0; tt < GKI_MAX_TASKS; tt++) {
- for (mb = 0; mb < NUM_TASK_MBOX; mb++) {
- p_cb->OSTaskQFirst[tt][mb] = NULL;
- p_cb->OSTaskQLast[tt][mb] = NULL;
- }
- }
-
- for (tt = 0; tt < GKI_NUM_TOTAL_BUF_POOLS; tt++) {
- p_cb->pool_start[tt] = NULL;
- p_cb->pool_end[tt] = NULL;
- p_cb->pool_size[tt] = 0;
-
- p_cb->freeq[tt].p_first = 0;
- p_cb->freeq[tt].p_last = 0;
- p_cb->freeq[tt].size = 0;
- p_cb->freeq[tt].total = 0;
- p_cb->freeq[tt].cur_cnt = 0;
- p_cb->freeq[tt].max_cnt = 0;
- }
-
- /* Use default from target.h */
- p_cb->pool_access_mask = GKI_DEF_BUFPOOL_PERM_MASK;
-
-#if (GKI_USE_DEFERED_ALLOC_BUF_POOLS == FALSE && \
- GKI_USE_DYNAMIC_BUFFERS == TRUE)
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 0)
- p_cb->bufpool0 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF0_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF0_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 1)
- p_cb->bufpool1 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF1_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF1_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 2)
- p_cb->bufpool2 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF2_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF2_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 3)
- p_cb->bufpool3 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF3_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF3_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 4)
- p_cb->bufpool4 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF4_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF4_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 5)
- p_cb->bufpool5 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF5_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF5_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 6)
- p_cb->bufpool6 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF6_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF6_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 7)
- p_cb->bufpool7 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF7_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF7_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 8)
- p_cb->bufpool8 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF8_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF8_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 9)
- p_cb->bufpool9 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF9_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF9_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 10)
- p_cb->bufpool10 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF10_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF10_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 11)
- p_cb->bufpool11 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF11_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF11_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 12)
- p_cb->bufpool12 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF12_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF12_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 13)
- p_cb->bufpool13 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF13_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF13_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 14)
- p_cb->bufpool14 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF14_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF14_MAX);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 15)
- p_cb->bufpool15 = (uint8_t*)GKI_os_malloc(
- (GKI_BUF15_SIZE + BUFFER_PADDING_SIZE) * GKI_BUF15_MAX);
-#endif
-
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 0)
- gki_init_free_queue(0, GKI_BUF0_SIZE, GKI_BUF0_MAX, p_cb->bufpool0);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 1)
- gki_init_free_queue(1, GKI_BUF1_SIZE, GKI_BUF1_MAX, p_cb->bufpool1);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 2)
- gki_init_free_queue(2, GKI_BUF2_SIZE, GKI_BUF2_MAX, p_cb->bufpool2);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 3)
- gki_init_free_queue(3, GKI_BUF3_SIZE, GKI_BUF3_MAX, p_cb->bufpool3);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 4)
- gki_init_free_queue(4, GKI_BUF4_SIZE, GKI_BUF4_MAX, p_cb->bufpool4);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 5)
- gki_init_free_queue(5, GKI_BUF5_SIZE, GKI_BUF5_MAX, p_cb->bufpool5);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 6)
- gki_init_free_queue(6, GKI_BUF6_SIZE, GKI_BUF6_MAX, p_cb->bufpool6);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 7)
- gki_init_free_queue(7, GKI_BUF7_SIZE, GKI_BUF7_MAX, p_cb->bufpool7);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 8)
- gki_init_free_queue(8, GKI_BUF8_SIZE, GKI_BUF8_MAX, p_cb->bufpool8);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 9)
- gki_init_free_queue(9, GKI_BUF9_SIZE, GKI_BUF9_MAX, p_cb->bufpool9);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 10)
- gki_init_free_queue(10, GKI_BUF10_SIZE, GKI_BUF10_MAX, p_cb->bufpool10);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 11)
- gki_init_free_queue(11, GKI_BUF11_SIZE, GKI_BUF11_MAX, p_cb->bufpool11);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 12)
- gki_init_free_queue(12, GKI_BUF12_SIZE, GKI_BUF12_MAX, p_cb->bufpool12);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 13)
- gki_init_free_queue(13, GKI_BUF13_SIZE, GKI_BUF13_MAX, p_cb->bufpool13);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 14)
- gki_init_free_queue(14, GKI_BUF14_SIZE, GKI_BUF14_MAX, p_cb->bufpool14);
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 15)
- gki_init_free_queue(15, GKI_BUF15_SIZE, GKI_BUF15_MAX, p_cb->bufpool15);
-#endif
-
- /* add pools to the pool_list which is arranged in the order of size */
- for (i = 0; i < GKI_NUM_FIXED_BUF_POOLS; i++) {
- p_cb->pool_list[i] = i;
- }
-
- p_cb->curr_total_no_of_pools = GKI_NUM_FIXED_BUF_POOLS;
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_init_q
-**
-** Description Called by an application to initialize a buffer queue.
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_init_q(BUFFER_Q* p_q) {
- p_q->p_first = p_q->p_last = NULL;
- p_q->count = 0;
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_getbuf
-**
-** Description Called by an application to get a free buffer which
-** is of size greater or equal to the requested size.
-**
-** Note: This routine only takes buffers from public pools.
-** It will not use any buffers from pools
-** marked GKI_RESTRICTED_POOL.
-**
-** Parameters size - (input) number of bytes needed.
-**
-** Returns A pointer to the buffer, or NULL if none available
-**
-*******************************************************************************/
-#if (GKI_BUFFER_DEBUG == TRUE)
-void* GKI_getbuf_debug(uint16_t size, const char* _function_, int _line_)
-#else
-void* GKI_getbuf(uint16_t size)
-#endif
-{
- uint8_t i;
- FREE_QUEUE_T* Q;
- BUFFER_HDR_T* p_hdr;
- tGKI_COM_CB* p_cb = &gki_cb.com;
-#if (GKI_BUFFER_DEBUG == TRUE)
- uint8_t x;
-#endif
-
- if (size == 0) {
- GKI_exception(GKI_ERROR_BUF_SIZE_ZERO, "getbuf: Size is zero");
- return (NULL);
- }
-
-#if (GKI_BUFFER_DEBUG == TRUE)
- LOGD("GKI_getbuf() requesting %d func:%s(line=%d)", size, _function_, _line_);
-#endif
- /* Find the first buffer pool that is public that can hold the desired size */
- for (i = 0; i < p_cb->curr_total_no_of_pools; i++) {
- if (size <= p_cb->freeq[p_cb->pool_list[i]].size) break;
- }
-
- if (i == p_cb->curr_total_no_of_pools) {
- GKI_exception(GKI_ERROR_BUF_SIZE_TOOBIG, "getbuf: Size is too big");
- return (NULL);
- }
-
- /* Make sure the buffers aren't disturbed til finished with allocation */
- GKI_disable();
-
- /* search the public buffer pools that are big enough to hold the size
- * until a free buffer is found */
- for (; i < p_cb->curr_total_no_of_pools; i++) {
- /* Only look at PUBLIC buffer pools (bypass RESTRICTED pools) */
- if (((uint16_t)1 << p_cb->pool_list[i]) & p_cb->pool_access_mask) continue;
-
- Q = &p_cb->freeq[p_cb->pool_list[i]];
- if (Q->cur_cnt < Q->total) {
-#if (GKI_USE_DEFERED_ALLOC_BUF_POOLS == TRUE)
- if (Q->p_first == 0 && gki_alloc_free_queue(i) != true) {
- GKI_TRACE_ERROR_0("GKI_getbuf() out of buffer");
- GKI_enable();
- return NULL;
- }
-#endif
-
- if (Q->p_first == 0) {
- /* gki_alloc_free_queue() failed to alloc memory */
- GKI_TRACE_ERROR_0("GKI_getbuf() fail alloc free queue");
- GKI_enable();
- return NULL;
- }
-
- p_hdr = Q->p_first;
- Q->p_first = p_hdr->p_next;
-
- if (!Q->p_first) Q->p_last = NULL;
-
- if (++Q->cur_cnt > Q->max_cnt) Q->max_cnt = Q->cur_cnt;
-
- GKI_enable();
-
- p_hdr->task_id = GKI_get_taskid();
-
- p_hdr->status = BUF_STATUS_UNLINKED;
- p_hdr->p_next = NULL;
- p_hdr->Type = 0;
-#if (GKI_BUFFER_DEBUG == TRUE)
- LOGD("GKI_getbuf() allocated, %x, %x (%d of %d used) %d",
- (uint8_t*)p_hdr + BUFFER_HDR_SIZE, p_hdr, Q->cur_cnt, Q->total,
- p_cb->freeq[i].total);
-
- strncpy(p_hdr->_function, _function_, _GKI_MAX_FUNCTION_NAME_LEN);
- p_hdr->_function[_GKI_MAX_FUNCTION_NAME_LEN] = '\0';
- p_hdr->_line = _line_;
-#endif
- return ((void*)((uint8_t*)p_hdr + BUFFER_HDR_SIZE));
- }
- }
-
- GKI_TRACE_ERROR_0("GKI_getbuf() unable to allocate buffer!!!!!");
-#if (GKI_BUFFER_DEBUG == TRUE)
- LOGD("GKI_getbuf() unable to allocate buffer!!!!!");
- LOGD("******************** GKI Memory Pool Dump ********************");
-
- p_cb = &gki_cb.com;
-
- LOGD("Dumping total of %d buffer pools", p_cb->curr_total_no_of_pools);
-
- for (i = 0; i < p_cb->curr_total_no_of_pools; i++) {
- p_hdr = (BUFFER_HDR_T*)p_cb->pool_start[i];
-
- LOGD("pool %d has a total of %d buffers (start=%p)", i,
- p_cb->freeq[i].total, p_hdr);
-
- for (x = 0; p_hdr && x < p_cb->freeq[i].total; x++) {
- if (p_hdr->status != BUF_STATUS_FREE) {
- LOGD("pool:%d, buf[%d]:%x, hdr:%x status=%d func:%s(line=%d)", i, x,
- (uint8_t*)p_hdr + BUFFER_HDR_SIZE, p_hdr, p_hdr->status,
- p_hdr->_function, p_hdr->_line);
- }
-
- p_hdr = (BUFFER_HDR_T*)((uint8_t*)p_hdr + p_cb->pool_size[i]);
- }
- }
- LOGD("**************************************************************");
-#endif
-
- GKI_TRACE_ERROR_0("Failed to allocate GKI buffer");
-
- GKI_enable();
-
- return (NULL);
-}
-
-/*******************************************************************************
-**
-** Function GKI_getpoolbuf
-**
-** Description Called by an application to get a free buffer from
-** a specific buffer pool.
-**
-** Note: If there are no more buffers available from the pool,
-** the public buffers are searched for an available
-*buffer.
-**
-** Parameters pool_id - (input) pool ID to get a buffer out of.
-**
-** Returns A pointer to the buffer, or NULL if none available
-**
-*******************************************************************************/
-#if (GKI_BUFFER_DEBUG == TRUE)
-void* GKI_getpoolbuf_debug(uint8_t pool_id, const char* _function_, int _line_)
-#else
-void* GKI_getpoolbuf(uint8_t pool_id)
-#endif
-{
- FREE_QUEUE_T* Q;
- BUFFER_HDR_T* p_hdr;
- tGKI_COM_CB* p_cb = &gki_cb.com;
-
- if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS) return (NULL);
-
-#if (GKI_BUFFER_DEBUG == TRUE)
- LOGD("GKI_getpoolbuf() requesting from %d func:%s(line=%d)", pool_id,
- _function_, _line_);
-#endif
- /* Make sure the buffers aren't disturbed til finished with allocation */
- GKI_disable();
-
- Q = &p_cb->freeq[pool_id];
- if (Q->cur_cnt < Q->total) {
-#if (GKI_USE_DEFERED_ALLOC_BUF_POOLS == TRUE)
- if (Q->p_first == 0 && gki_alloc_free_queue(pool_id) != true) return NULL;
-#endif
-
- if (Q->p_first == 0) {
- /* gki_alloc_free_queue() failed to alloc memory */
- GKI_TRACE_ERROR_0("GKI_getpoolbuf() fail alloc free queue");
- return NULL;
- }
-
- p_hdr = Q->p_first;
- Q->p_first = p_hdr->p_next;
-
- if (!Q->p_first) Q->p_last = NULL;
-
- if (++Q->cur_cnt > Q->max_cnt) Q->max_cnt = Q->cur_cnt;
-
- GKI_enable();
-
- p_hdr->task_id = GKI_get_taskid();
-
- p_hdr->status = BUF_STATUS_UNLINKED;
- p_hdr->p_next = NULL;
- p_hdr->Type = 0;
-
-#if (GKI_BUFFER_DEBUG == TRUE)
- LOGD("GKI_getpoolbuf() allocated, %x, %x (%d of %d used) %d",
- (uint8_t*)p_hdr + BUFFER_HDR_SIZE, p_hdr, Q->cur_cnt, Q->total,
- p_cb->freeq[pool_id].total);
-
- strncpy(p_hdr->_function, _function_, _GKI_MAX_FUNCTION_NAME_LEN);
- p_hdr->_function[_GKI_MAX_FUNCTION_NAME_LEN] = '\0';
- p_hdr->_line = _line_;
-#endif
- return ((void*)((uint8_t*)p_hdr + BUFFER_HDR_SIZE));
- }
-
- /* If here, no buffers in the specified pool */
- GKI_enable();
-
-#if (GKI_BUFFER_DEBUG == TRUE)
- /* try for free buffers in public pools */
- return (GKI_getbuf_debug(p_cb->freeq[pool_id].size, _function_, _line_));
-#else
- /* try for free buffers in public pools */
- return (GKI_getbuf(p_cb->freeq[pool_id].size));
-#endif
-}
-
-/*******************************************************************************
-**
-** Function GKI_freebuf
-**
-** Description Called by an application to return a buffer to the free
-*pool.
-**
-** Parameters p_buf - (input) address of the beginning of a buffer.
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_freebuf(void* p_buf) {
- FREE_QUEUE_T* Q;
- BUFFER_HDR_T* p_hdr;
-
-#if (GKI_ENABLE_BUF_CORRUPTION_CHECK == TRUE)
- if (!p_buf || gki_chk_buf_damage(p_buf)) {
- GKI_exception(GKI_ERROR_BUF_CORRUPTED, "Free - Buf Corrupted");
- return;
- }
-#endif
-
- p_hdr = (BUFFER_HDR_T*)((uint8_t*)p_buf - BUFFER_HDR_SIZE);
-
-#if (GKI_BUFFER_DEBUG == TRUE)
- LOGD("GKI_freebuf() freeing, %x, %x, func:%s(line=%d)", p_buf, p_hdr,
- p_hdr->_function, p_hdr->_line);
-#endif
-
- if (p_hdr->status != BUF_STATUS_UNLINKED) {
- GKI_exception(GKI_ERROR_FREEBUF_BUF_LINKED, "Freeing Linked Buf");
- return;
- }
-
- if (p_hdr->q_id >= GKI_NUM_TOTAL_BUF_POOLS) {
- GKI_exception(GKI_ERROR_FREEBUF_BAD_QID, "Bad Buf QId");
- return;
- }
-
- GKI_disable();
-
- /*
- ** Release the buffer
- */
- Q = &gki_cb.com.freeq[p_hdr->q_id];
- if (Q->p_last)
- Q->p_last->p_next = p_hdr;
- else
- Q->p_first = p_hdr;
-
- Q->p_last = p_hdr;
- p_hdr->p_next = NULL;
- p_hdr->status = BUF_STATUS_FREE;
- p_hdr->task_id = GKI_INVALID_TASK;
- if (Q->cur_cnt > 0) Q->cur_cnt--;
-
- GKI_enable();
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_get_buf_size
-**
-** Description Called by an application to get the size of a buffer.
-**
-** Parameters p_buf - (input) address of the beginning of a buffer.
-**
-** Returns the size of the buffer
-**
-*******************************************************************************/
-uint16_t GKI_get_buf_size(void* p_buf) {
- BUFFER_HDR_T* p_hdr;
-
- p_hdr = (BUFFER_HDR_T*)((uint8_t*)p_buf - BUFFER_HDR_SIZE);
-
- if ((uint32_t)p_hdr & 1) return (0);
-
- if (p_hdr->q_id < GKI_NUM_TOTAL_BUF_POOLS) {
- return (gki_cb.com.freeq[p_hdr->q_id].size);
- }
-
- return (0);
-}
-
-/*******************************************************************************
-**
-** Function gki_chk_buf_damage
-**
-** Description Called internally by OSS to check for buffer corruption.
-**
-** Returns TRUE if there is a problem, else FALSE
-**
-*******************************************************************************/
-bool gki_chk_buf_damage(void* p_buf) {
-#if (GKI_ENABLE_BUF_CORRUPTION_CHECK == TRUE)
-
- uint32_t* magic;
- magic = (uint32_t*)((uint8_t*)p_buf + GKI_get_buf_size(p_buf));
-
- if ((uint32_t)magic & 1) return true;
-
- if (*magic == MAGIC_NO) return false;
-
- return true;
-
-#else
-
- return false;
-
-#endif
-}
-
-/*******************************************************************************
-**
-** Function GKI_send_msg
-**
-** Description Called by applications to send a buffer to a task
-**
-** Returns Nothing
-**
-*******************************************************************************/
-void GKI_send_msg(uint8_t task_id, uint8_t mbox, void* msg) {
- BUFFER_HDR_T* p_hdr;
- tGKI_COM_CB* p_cb = &gki_cb.com;
-
- /* If task non-existant or not started, drop buffer */
- if ((task_id >= GKI_MAX_TASKS) || (mbox >= NUM_TASK_MBOX) ||
- (p_cb->OSRdyTbl[task_id] == TASK_DEAD)) {
- GKI_exception(GKI_ERROR_SEND_MSG_BAD_DEST, "Sending to unknown dest");
- GKI_freebuf(msg);
- return;
- }
-
-#if (GKI_ENABLE_BUF_CORRUPTION_CHECK == TRUE)
- if (gki_chk_buf_damage(msg)) {
- GKI_exception(GKI_ERROR_BUF_CORRUPTED, "Send - Buffer corrupted");
- return;
- }
-#endif
-
- p_hdr = (BUFFER_HDR_T*)((uint8_t*)msg - BUFFER_HDR_SIZE);
-
- if (p_hdr->status != BUF_STATUS_UNLINKED) {
- GKI_exception(GKI_ERROR_SEND_MSG_BUF_LINKED, "Send - buffer linked");
- return;
- }
-
- GKI_disable();
-
- if (p_cb->OSTaskQFirst[task_id][mbox])
- p_cb->OSTaskQLast[task_id][mbox]->p_next = p_hdr;
- else
- p_cb->OSTaskQFirst[task_id][mbox] = p_hdr;
-
- p_cb->OSTaskQLast[task_id][mbox] = p_hdr;
-
- p_hdr->p_next = NULL;
- p_hdr->status = BUF_STATUS_QUEUED;
- p_hdr->task_id = task_id;
-
- GKI_enable();
-
- GKI_send_event(task_id, (uint16_t)EVENT_MASK(mbox));
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_read_mbox
-**
-** Description Called by applications to read a buffer from one of
-** the task mailboxes. A task can only read its own mailbox.
-**
-** Parameters: mbox - (input) mailbox ID to read (0, 1, 2, or 3)
-**
-** Returns NULL if the mailbox was empty, else the address of a buffer
-**
-*******************************************************************************/
-void* GKI_read_mbox(uint8_t mbox) {
- uint8_t task_id = GKI_get_taskid();
- void* p_buf = NULL;
- BUFFER_HDR_T* p_hdr;
-
- if ((task_id >= GKI_MAX_TASKS) || (mbox >= NUM_TASK_MBOX)) return (NULL);
-
- GKI_disable();
-
- if (gki_cb.com.OSTaskQFirst[task_id][mbox]) {
- p_hdr = gki_cb.com.OSTaskQFirst[task_id][mbox];
- gki_cb.com.OSTaskQFirst[task_id][mbox] = p_hdr->p_next;
-
- p_hdr->p_next = NULL;
- p_hdr->status = BUF_STATUS_UNLINKED;
-
- p_buf = (uint8_t*)p_hdr + BUFFER_HDR_SIZE;
- }
-
- GKI_enable();
-
- return (p_buf);
-}
-
-/*******************************************************************************
-**
-** Function GKI_enqueue
-**
-** Description Enqueue a buffer at the tail of the queue
-**
-** Parameters: p_q - (input) pointer to a queue.
-** p_buf - (input) address of the buffer to enqueue
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_enqueue(BUFFER_Q* p_q, void* p_buf) {
- BUFFER_HDR_T* p_hdr;
-
-#if (GKI_ENABLE_BUF_CORRUPTION_CHECK == TRUE)
- if (gki_chk_buf_damage(p_buf)) {
- GKI_exception(GKI_ERROR_BUF_CORRUPTED, "Enqueue - Buffer corrupted");
- return;
- }
-#endif
-
- p_hdr = (BUFFER_HDR_T*)((uint8_t*)p_buf - BUFFER_HDR_SIZE);
-
- if (p_hdr->status != BUF_STATUS_UNLINKED) {
- GKI_exception(GKI_ERROR_ENQUEUE_BUF_LINKED, "Eneueue - buf already linked");
- return;
- }
-
- GKI_disable();
-
- /* Since the queue is exposed (C vs C++), keep the pointers in exposed format
- */
- if (p_q->p_first) {
- BUFFER_HDR_T* p_last_hdr =
- (BUFFER_HDR_T*)((uint8_t*)p_q->p_last - BUFFER_HDR_SIZE);
- p_last_hdr->p_next = p_hdr;
- } else
- p_q->p_first = p_buf;
-
- p_q->p_last = p_buf;
- p_q->count++;
-
- p_hdr->p_next = NULL;
- p_hdr->status = BUF_STATUS_QUEUED;
-
- GKI_enable();
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_enqueue_head
-**
-** Description Enqueue a buffer at the head of the queue
-**
-** Parameters: p_q - (input) pointer to a queue.
-** p_buf - (input) address of the buffer to enqueue
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_enqueue_head(BUFFER_Q* p_q, void* p_buf) {
- BUFFER_HDR_T* p_hdr;
-
-#if (GKI_ENABLE_BUF_CORRUPTION_CHECK == TRUE)
- if (gki_chk_buf_damage(p_buf)) {
- GKI_exception(GKI_ERROR_BUF_CORRUPTED, "Enqueue - Buffer corrupted");
- return;
- }
-#endif
-
- p_hdr = (BUFFER_HDR_T*)((uint8_t*)p_buf - BUFFER_HDR_SIZE);
-
- if (p_hdr->status != BUF_STATUS_UNLINKED) {
- GKI_exception(GKI_ERROR_ENQUEUE_BUF_LINKED,
- "Eneueue head - buf already linked");
- return;
- }
-
- GKI_disable();
-
- if (p_q->p_first) {
- p_hdr->p_next = (BUFFER_HDR_T*)((uint8_t*)p_q->p_first - BUFFER_HDR_SIZE);
- p_q->p_first = p_buf;
- } else {
- p_q->p_first = p_buf;
- p_q->p_last = p_buf;
- p_hdr->p_next = NULL;
- }
- p_q->count++;
-
- p_hdr->status = BUF_STATUS_QUEUED;
-
- GKI_enable();
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_dequeue
-**
-** Description Dequeues a buffer from the head of a queue
-**
-** Parameters: p_q - (input) pointer to a queue.
-**
-** Returns NULL if queue is empty, else buffer
-**
-*******************************************************************************/
-void* GKI_dequeue(BUFFER_Q* p_q) {
- BUFFER_HDR_T* p_hdr;
-
- GKI_disable();
-
- if (!p_q || !p_q->count) {
- GKI_enable();
- return (NULL);
- }
-
- p_hdr = (BUFFER_HDR_T*)((uint8_t*)p_q->p_first - BUFFER_HDR_SIZE);
-
- /* Keep buffers such that GKI header is invisible
- */
- if (p_hdr->p_next)
- p_q->p_first = ((uint8_t*)p_hdr->p_next + BUFFER_HDR_SIZE);
- else {
- p_q->p_first = NULL;
- p_q->p_last = NULL;
- }
-
- p_q->count--;
-
- p_hdr->p_next = NULL;
- p_hdr->status = BUF_STATUS_UNLINKED;
-
- GKI_enable();
-
- return ((uint8_t*)p_hdr + BUFFER_HDR_SIZE);
-}
-
-/*******************************************************************************
-**
-** Function GKI_remove_from_queue
-**
-** Description Dequeue a buffer from the middle of the queue
-**
-** Parameters: p_q - (input) pointer to a queue.
-** p_buf - (input) address of the buffer to enqueue
-**
-** Returns NULL if queue is empty, else buffer
-**
-*******************************************************************************/
-void* GKI_remove_from_queue(BUFFER_Q* p_q, void* p_buf) {
- BUFFER_HDR_T* p_prev;
- BUFFER_HDR_T* p_buf_hdr;
-
- GKI_disable();
-
- if (p_buf == p_q->p_first) {
- GKI_enable();
- return (GKI_dequeue(p_q));
- }
-
- p_buf_hdr = (BUFFER_HDR_T*)((uint8_t*)p_buf - BUFFER_HDR_SIZE);
- p_prev = (BUFFER_HDR_T*)((uint8_t*)p_q->p_first - BUFFER_HDR_SIZE);
-
- for (; p_prev; p_prev = p_prev->p_next) {
- /* If the previous points to this one, move the pointers around */
- if (p_prev->p_next == p_buf_hdr) {
- p_prev->p_next = p_buf_hdr->p_next;
-
- /* If we are removing the last guy in the queue, update p_last */
- if (p_buf == p_q->p_last) p_q->p_last = p_prev + 1;
-
- /* One less in the queue */
- p_q->count--;
-
- /* The buffer is now unlinked */
- p_buf_hdr->p_next = NULL;
- p_buf_hdr->status = BUF_STATUS_UNLINKED;
-
- GKI_enable();
- return (p_buf);
- }
- }
-
- GKI_enable();
- return (NULL);
-}
-
-/*******************************************************************************
-**
-** Function GKI_getfirst
-**
-** Description Return a pointer to the first buffer in a queue
-**
-** Parameters: p_q - (input) pointer to a queue.
-**
-** Returns NULL if queue is empty, else buffer address
-**
-*******************************************************************************/
-void* GKI_getfirst(BUFFER_Q* p_q) { return (p_q->p_first); }
-
-/*******************************************************************************
-**
-** Function GKI_getlast
-**
-** Description Return a pointer to the last buffer in a queue
-**
-** Parameters: p_q - (input) pointer to a queue.
-**
-** Returns NULL if queue is empty, else buffer address
-**
-*******************************************************************************/
-void* GKI_getlast(BUFFER_Q* p_q) { return (p_q->p_last); }
-
-/*******************************************************************************
-**
-** Function GKI_getnext
-**
-** Description Return a pointer to the next buffer in a queue
-**
-** Parameters: p_buf - (input) pointer to the buffer to find the next one
-*from.
-**
-** Returns NULL if no more buffers in the queue, else next buffer
-*address
-**
-*******************************************************************************/
-void* GKI_getnext(void* p_buf) {
- BUFFER_HDR_T* p_hdr;
-
- p_hdr = (BUFFER_HDR_T*)((uint8_t*)p_buf - BUFFER_HDR_SIZE);
-
- if (p_hdr->p_next)
- return ((uint8_t*)p_hdr->p_next + BUFFER_HDR_SIZE);
- else
- return (NULL);
-}
-
-/*******************************************************************************
-**
-** Function GKI_queue_is_empty
-**
-** Description Check the status of a queue.
-**
-** Parameters: p_q - (input) pointer to a queue.
-**
-** Returns TRUE if queue is empty, else FALSE
-**
-*******************************************************************************/
-bool GKI_queue_is_empty(BUFFER_Q* p_q) { return ((bool)(p_q->count == 0)); }
-
-/*******************************************************************************
-**
-** Function GKI_find_buf_start
-**
-** Description This function is called with an address inside a buffer,
-** and returns the start address ofthe buffer.
-**
-** The buffer should be one allocated from one of GKI's pools.
-**
-** Parameters: p_user_area - (input) address of anywhere in a GKI buffer.
-**
-** Returns void * - Address of the beginning of the specified buffer if
-*successful,
-** otherwise NULL if unsuccessful
-**
-*******************************************************************************/
-void* GKI_find_buf_start(void* p_user_area) {
- uint16_t xx, size;
- uint32_t yy;
- tGKI_COM_CB* p_cb = &gki_cb.com;
- uint8_t* p_ua = (uint8_t*)p_user_area;
-
- for (xx = 0; xx < GKI_NUM_TOTAL_BUF_POOLS; xx++) {
- if ((p_ua > p_cb->pool_start[xx]) && (p_ua < p_cb->pool_end[xx])) {
- yy = (uint32_t)(p_ua - p_cb->pool_start[xx]);
-
- size = p_cb->pool_size[xx];
-
- yy = (yy / size) * size;
-
- return ((void*)(p_cb->pool_start[xx] + yy + sizeof(BUFFER_HDR_T)));
- }
- }
-
- /* If here, invalid address - not in one of our buffers */
- GKI_exception(GKI_ERROR_BUF_SIZE_ZERO, "GKI_get_buf_start:: bad addr");
-
- return (NULL);
-}
-
-/********************************************************
-* The following functions are not needed for light stack
-*********************************************************/
-#ifndef BTU_STACK_LITE_ENABLED
-#define BTU_STACK_LITE_ENABLED FALSE
-#endif
-
-#if (BTU_STACK_LITE_ENABLED == FALSE)
-
-/*******************************************************************************
-**
-** Function GKI_set_pool_permission
-**
-** Description This function is called to set or change the permissions for
-** the specified pool ID.
-**
-** Parameters pool_id - (input) pool ID to be set or changed
-** permission - (input) GKI_PUBLIC_POOL or
-*GKI_RESTRICTED_POOL
-**
-** Returns GKI_SUCCESS if successful
-** GKI_INVALID_POOL if unsuccessful
-**
-*******************************************************************************/
-uint8_t GKI_set_pool_permission(uint8_t pool_id, uint8_t permission) {
- tGKI_COM_CB* p_cb = &gki_cb.com;
-
- if (pool_id < GKI_NUM_TOTAL_BUF_POOLS) {
- if (permission == GKI_RESTRICTED_POOL)
- p_cb->pool_access_mask =
- (uint16_t)(p_cb->pool_access_mask | (1 << pool_id));
-
- else /* mark the pool as public */
- p_cb->pool_access_mask =
- (uint16_t)(p_cb->pool_access_mask & ~(1 << pool_id));
-
- return (GKI_SUCCESS);
- } else
- return (GKI_INVALID_POOL);
-}
-
-/*******************************************************************************
-**
-** Function gki_add_to_pool_list
-**
-** Description Adds pool to the pool list which is arranged in the
-** order of size
-**
-** Returns void
-**
-*******************************************************************************/
-static void gki_add_to_pool_list(uint8_t pool_id) {
- int32_t i, j;
- tGKI_COM_CB* p_cb = &gki_cb.com;
-
- /* Find the position where the specified pool should be inserted into the list
- */
- for (i = 0; i < p_cb->curr_total_no_of_pools; i++) {
- if (p_cb->freeq[pool_id].size <= p_cb->freeq[p_cb->pool_list[i]].size)
- break;
- }
-
- /* Insert the new buffer pool ID into the list of pools */
- for (j = p_cb->curr_total_no_of_pools; j > i; j--) {
- p_cb->pool_list[j] = p_cb->pool_list[j - 1];
- }
-
- p_cb->pool_list[i] = pool_id;
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function gki_remove_from_pool_list
-**
-** Description Removes pool from the pool list. Called when a pool is
-*deleted
-**
-** Returns void
-**
-*******************************************************************************/
-static void gki_remove_from_pool_list(uint8_t pool_id) {
- tGKI_COM_CB* p_cb = &gki_cb.com;
- uint8_t i;
-
- for (i = 0; i < p_cb->curr_total_no_of_pools; i++) {
- if (pool_id == p_cb->pool_list[i]) break;
- }
-
- while (i < (p_cb->curr_total_no_of_pools - 1)) {
- p_cb->pool_list[i] = p_cb->pool_list[i + 1];
- i++;
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_igetpoolbuf
-**
-** Description Called by an interrupt service routine to get a free buffer
-*from
-** a specific buffer pool.
-**
-** Parameters pool_id - (input) pool ID to get a buffer out of.
-**
-** Returns A pointer to the buffer, or NULL if none available
-**
-*******************************************************************************/
-void* GKI_igetpoolbuf(uint8_t pool_id) {
- FREE_QUEUE_T* Q;
- BUFFER_HDR_T* p_hdr;
-
- if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS) return (NULL);
-
- Q = &gki_cb.com.freeq[pool_id];
- if (Q->cur_cnt < Q->total) {
- p_hdr = Q->p_first;
- Q->p_first = p_hdr->p_next;
-
- if (!Q->p_first) Q->p_last = NULL;
-
- if (++Q->cur_cnt > Q->max_cnt) Q->max_cnt = Q->cur_cnt;
-
- p_hdr->task_id = GKI_get_taskid();
-
- p_hdr->status = BUF_STATUS_UNLINKED;
- p_hdr->p_next = NULL;
- p_hdr->Type = 0;
-
- return ((void*)((uint8_t*)p_hdr + BUFFER_HDR_SIZE));
- }
-
- return (NULL);
-}
-
-/*******************************************************************************
-**
-** Function GKI_poolcount
-**
-** Description Called by an application to get the total number of buffers
-** in the specified buffer pool.
-**
-** Parameters pool_id - (input) pool ID to get the free count of.
-**
-** Returns the total number of buffers in the pool
-**
-*******************************************************************************/
-uint16_t GKI_poolcount(uint8_t pool_id) {
- if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS) return (0);
-
- return (gki_cb.com.freeq[pool_id].total);
-}
-
-/*******************************************************************************
-**
-** Function GKI_poolfreecount
-**
-** Description Called by an application to get the number of free buffers
-** in the specified buffer pool.
-**
-** Parameters pool_id - (input) pool ID to get the free count of.
-**
-** Returns the number of free buffers in the pool
-**
-*******************************************************************************/
-uint16_t GKI_poolfreecount(uint8_t pool_id) {
- FREE_QUEUE_T* Q;
-
- if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS) return (0);
-
- Q = &gki_cb.com.freeq[pool_id];
-
- return ((uint16_t)(Q->total - Q->cur_cnt));
-}
-
-/*******************************************************************************
-**
-** Function GKI_change_buf_owner
-**
-** Description Called to change the task ownership of a buffer.
-**
-** Parameters: p_buf - (input) pointer to the buffer
-** task_id - (input) task id to change ownership to
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_change_buf_owner(void* p_buf, uint8_t task_id) {
- BUFFER_HDR_T* p_hdr = (BUFFER_HDR_T*)((uint8_t*)p_buf - BUFFER_HDR_SIZE);
-
- p_hdr->task_id = task_id;
-
- return;
-}
-
-#if (GKI_SEND_MSG_FROM_ISR == TRUE)
-/*******************************************************************************
-**
-** Function GKI_isend_msg
-**
-** Description Called from interrupt context to send a buffer to a task
-**
-** Returns Nothing
-**
-*******************************************************************************/
-void GKI_isend_msg(uint8_t task_id, uint8_t mbox, void* msg) {
- BUFFER_HDR_T* p_hdr;
- tGKI_COM_CB* p_cb = &gki_cb.com;
-
- /* If task non-existant or not started, drop buffer */
- if ((task_id >= GKI_MAX_TASKS) || (mbox >= NUM_TASK_MBOX) ||
- (p_cb->OSRdyTbl[task_id] == TASK_DEAD)) {
- GKI_exception(GKI_ERROR_SEND_MSG_BAD_DEST, "Sending to unknown dest");
- GKI_freebuf(msg);
- return;
- }
-
-#if (GKI_ENABLE_BUF_CORRUPTION_CHECK == TRUE)
- if (gki_chk_buf_damage(msg)) {
- GKI_exception(GKI_ERROR_BUF_CORRUPTED, "Send - Buffer corrupted");
- return;
- }
-#endif
-
-#if (GKI_ENABLE_OWNER_CHECK == TRUE)
- if (gki_chk_buf_owner(msg)) {
- GKI_exception(GKI_ERROR_NOT_BUF_OWNER, "Send by non-owner");
- return;
- }
-#endif
-
- p_hdr = (BUFFER_HDR_T*)((uint8_t*)msg - BUFFER_HDR_SIZE);
-
- if (p_hdr->status != BUF_STATUS_UNLINKED) {
- GKI_exception(GKI_ERROR_SEND_MSG_BUF_LINKED, "Send - buffer linked");
- return;
- }
-
- if (p_cb->OSTaskQFirst[task_id][mbox])
- p_cb->OSTaskQLast[task_id][mbox]->p_next = p_hdr;
- else
- p_cb->OSTaskQFirst[task_id][mbox] = p_hdr;
-
- p_cb->OSTaskQLast[task_id][mbox] = p_hdr;
-
- p_hdr->p_next = NULL;
- p_hdr->status = BUF_STATUS_QUEUED;
- p_hdr->task_id = task_id;
-
- GKI_isend_event(task_id, (uint16_t)EVENT_MASK(mbox));
-
- return;
-}
-#endif
-
-/*******************************************************************************
-**
-** Function GKI_create_pool
-**
-** Description Called by applications to create a buffer pool.
-**
-** Parameters: size - (input) length (in bytes) of each buffer in
-*the pool
-** count - (input) number of buffers to allocate for the
-*pool
-** permission - (input) restricted or public access?
-** (GKI_PUBLIC_POOL or
-*GKI_RESTRICTED_POOL)
-** p_mem_pool - (input) pointer to an OS memory pool, NULL if
-*not provided
-**
-** Returns the buffer pool ID, which should be used in calls to
-** GKI_getpoolbuf(). If a pool could not be created, this
-** function returns 0xff.
-**
-*******************************************************************************/
-uint8_t GKI_create_pool(uint16_t size, uint16_t count, uint8_t permission,
- void* p_mem_pool) {
- uint8_t xx;
- uint32_t mem_needed;
- int32_t tempsize = size;
- tGKI_COM_CB* p_cb = &gki_cb.com;
-
- /* First make sure the size of each pool has a valid size with room for the
- * header info */
- if (size > MAX_USER_BUF_SIZE) return (GKI_INVALID_POOL);
-
- /* First, look for an unused pool */
- for (xx = 0; xx < GKI_NUM_TOTAL_BUF_POOLS; xx++) {
- if (!p_cb->pool_start[xx]) break;
- }
-
- if (xx == GKI_NUM_TOTAL_BUF_POOLS) return (GKI_INVALID_POOL);
-
- /* Ensure an even number of longwords */
- tempsize = (int32_t)ALIGN_POOL(size);
-
- mem_needed = (tempsize + BUFFER_PADDING_SIZE) * count;
-
- if (!p_mem_pool) p_mem_pool = GKI_os_malloc(mem_needed);
-
- if (p_mem_pool) {
- /* Initialize the new pool */
- gki_init_free_queue(xx, size, count, p_mem_pool);
- gki_add_to_pool_list(xx);
- (void)GKI_set_pool_permission(xx, permission);
- p_cb->curr_total_no_of_pools++;
-
- return (xx);
- } else
- return (GKI_INVALID_POOL);
-}
-
-/*******************************************************************************
-**
-** Function GKI_delete_pool
-**
-** Description Called by applications to delete a buffer pool. The
-*function
-** calls the operating specific function to free the actual
-*memory.
-** An exception is generated if an error is detected.
-**
-** Parameters: pool_id - (input) Id of the poll being deleted.
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_delete_pool(uint8_t pool_id) {
- FREE_QUEUE_T* Q;
- tGKI_COM_CB* p_cb = &gki_cb.com;
-
- if ((pool_id >= GKI_NUM_TOTAL_BUF_POOLS) || (!p_cb->pool_start[pool_id]))
- return;
-
- GKI_disable();
- Q = &p_cb->freeq[pool_id];
-
- if (!Q->cur_cnt) {
- Q->size = 0;
- Q->total = 0;
- Q->cur_cnt = 0;
- Q->max_cnt = 0;
- Q->p_first = NULL;
- Q->p_last = NULL;
-
- GKI_os_free(p_cb->pool_start[pool_id]);
-
- p_cb->pool_start[pool_id] = NULL;
- p_cb->pool_end[pool_id] = NULL;
- p_cb->pool_size[pool_id] = 0;
-
- gki_remove_from_pool_list(pool_id);
- p_cb->curr_total_no_of_pools--;
- } else
- GKI_exception(GKI_ERROR_DELETE_POOL_BAD_QID, "Deleting bad pool");
-
- GKI_enable();
-
- return;
-}
-
-#endif /* BTU_STACK_LITE_ENABLED == FALSE */
-
-/*******************************************************************************
-**
-** Function GKI_get_pool_bufsize
-**
-** Description Called by an application to get the size of buffers in a
-*pool
-**
-** Parameters Pool ID.
-**
-** Returns the size of buffers in the pool
-**
-*******************************************************************************/
-uint16_t GKI_get_pool_bufsize(uint8_t pool_id) {
- if (pool_id < GKI_NUM_TOTAL_BUF_POOLS)
- return (gki_cb.com.freeq[pool_id].size);
-
- return (0);
-}
-
-/*******************************************************************************
-**
-** Function GKI_poolutilization
-**
-** Description Called by an application to get the buffer utilization
-** in the specified buffer pool.
-**
-** Parameters pool_id - (input) pool ID to get the free count of.
-**
-** Returns % of buffers used from 0 to 100
-**
-*******************************************************************************/
-uint16_t GKI_poolutilization(uint8_t pool_id) {
- FREE_QUEUE_T* Q;
-
- if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS) return (100);
-
- Q = &gki_cb.com.freeq[pool_id];
-
- if (Q->total == 0) return (100);
-
- return ((Q->cur_cnt * 100) / Q->total);
-}
diff --git a/halimpl/bcm2079x/gki/common/gki_common.h b/halimpl/bcm2079x/gki/common/gki_common.h
deleted file mode 100644
index f44e292..0000000
--- a/halimpl/bcm2079x/gki/common/gki_common.h
+++ /dev/null
@@ -1,419 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#ifndef GKI_COMMON_H
-#define GKI_COMMON_H
-
-#include "gki.h"
-
-#ifndef GKI_DEBUG
-#define GKI_DEBUG FALSE
-#endif
-
-/* Task States: (For OSRdyTbl) */
-#define TASK_DEAD 0 /* b0000 */
-#define TASK_READY 1 /* b0001 */
-#define TASK_WAIT 2 /* b0010 */
-#define TASK_DELAY 4 /* b0100 */
-#define TASK_SUSPEND 8 /* b1000 */
-
-/********************************************************************
-** Internal Error codes
-*********************************************************************/
-#define GKI_ERROR_BUF_CORRUPTED 0xFFFF
-#define GKI_ERROR_NOT_BUF_OWNER 0xFFFE
-#define GKI_ERROR_FREEBUF_BAD_QID 0xFFFD
-#define GKI_ERROR_FREEBUF_BUF_LINKED 0xFFFC
-#define GKI_ERROR_SEND_MSG_BAD_DEST 0xFFFB
-#define GKI_ERROR_SEND_MSG_BUF_LINKED 0xFFFA
-#define GKI_ERROR_ENQUEUE_BUF_LINKED 0xFFF9
-#define GKI_ERROR_DELETE_POOL_BAD_QID 0xFFF8
-#define GKI_ERROR_BUF_SIZE_TOOBIG 0xFFF7
-#define GKI_ERROR_BUF_SIZE_ZERO 0xFFF6
-#define GKI_ERROR_ADDR_NOT_IN_BUF 0xFFF5
-
-/********************************************************************
-** Misc constants
-*********************************************************************/
-
-#define GKI_MAX_INT32 (0x7fffffffL)
-#define GKI_MAX_TIMESTAMP (0xffffffffL)
-
-/********************************************************************
-** Buffer Management Data Structures
-*********************************************************************/
-
-typedef struct _buffer_hdr {
- struct _buffer_hdr* p_next; /* next buffer in the queue */
- uint8_t q_id; /* id of the queue */
- uint8_t task_id; /* task which allocated the buffer*/
- uint8_t status; /* FREE, UNLINKED or QUEUED */
- uint8_t Type;
-
-#if (GKI_BUFFER_DEBUG == TRUE)
-/* for tracking who allocated the buffer */
-#define _GKI_MAX_FUNCTION_NAME_LEN (50)
- char _function[_GKI_MAX_FUNCTION_NAME_LEN + 1];
- int _line;
-#endif
-
-} BUFFER_HDR_T;
-
-typedef struct _free_queue {
- BUFFER_HDR_T* p_first; /* first buffer in the queue */
- BUFFER_HDR_T* p_last; /* last buffer in the queue */
- uint16_t size; /* size of the buffers in the pool */
- uint16_t total; /* toatal number of buffers */
- uint16_t cur_cnt; /* number of buffers currently allocated */
- uint16_t max_cnt; /* maximum number of buffers allocated at any time */
-} FREE_QUEUE_T;
-
-/* Buffer related defines
-*/
-#define ALIGN_POOL(pl_size) \
- ((((pl_size) + 3) / sizeof(uint32_t)) * sizeof(uint32_t))
-/* Offset past header */
-#define BUFFER_HDR_SIZE (sizeof(BUFFER_HDR_T))
-/* Header + Magic Number */
-#define BUFFER_PADDING_SIZE (sizeof(BUFFER_HDR_T) + sizeof(uint32_t))
-/* pool size must allow for header */
-#define MAX_USER_BUF_SIZE ((uint16_t)0xffff - BUFFER_PADDING_SIZE)
-#define MAGIC_NO 0xDDBADDBA
-
-#define BUF_STATUS_FREE 0
-#define BUF_STATUS_UNLINKED 1
-#define BUF_STATUS_QUEUED 2
-
-#define GKI_USE_DEFERED_ALLOC_BUF_POOLS TRUE
-
-/* Exception related structures (Used in debug mode only)
-*/
-#if (GKI_DEBUG == TRUE)
-typedef struct {
- uint16_t type;
- uint8_t taskid;
- uint8_t msg[GKI_MAX_EXCEPTION_MSGLEN];
-} EXCEPTION_T;
-#endif
-
-/* Put all GKI variables into one control block
-*/
-typedef struct {
-/* Task management variables
-*/
-/* The stack and stack size are not used on Windows
-*/
-#if (GKI_USE_DYNAMIC_BUFFERS == FALSE)
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 0)
- uint8_t bufpool0[(ALIGN_POOL(GKI_BUF0_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF0_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 1)
- uint8_t bufpool1[(ALIGN_POOL(GKI_BUF1_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF1_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 2)
- uint8_t bufpool2[(ALIGN_POOL(GKI_BUF2_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF2_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 3)
- uint8_t bufpool3[(ALIGN_POOL(GKI_BUF3_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF3_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 4)
- uint8_t bufpool4[(ALIGN_POOL(GKI_BUF4_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF4_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 5)
- uint8_t bufpool5[(ALIGN_POOL(GKI_BUF5_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF5_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 6)
- uint8_t bufpool6[(ALIGN_POOL(GKI_BUF6_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF6_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 7)
- uint8_t bufpool7[(ALIGN_POOL(GKI_BUF7_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF7_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 8)
- uint8_t bufpool8[(ALIGN_POOL(GKI_BUF8_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF8_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 9)
- uint8_t bufpool9[(ALIGN_POOL(GKI_BUF9_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF9_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 10)
- uint8_t bufpool10[(ALIGN_POOL(GKI_BUF10_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF10_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 11)
- uint8_t bufpool11[(ALIGN_POOL(GKI_BUF11_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF11_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 12)
- uint8_t bufpool12[(ALIGN_POOL(GKI_BUF12_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF12_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 13)
- uint8_t bufpool13[(ALIGN_POOL(GKI_BUF13_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF13_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 14)
- uint8_t bufpool14[(ALIGN_POOL(GKI_BUF14_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF14_MAX];
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 15)
- uint8_t bufpool15[(ALIGN_POOL(GKI_BUF15_SIZE) + BUFFER_PADDING_SIZE) *
- GKI_BUF15_MAX];
-#endif
-
-#else
-/* Definitions for dynamic buffer use */
-#if (GKI_NUM_FIXED_BUF_POOLS > 0)
- uint8_t* bufpool0;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 1)
- uint8_t* bufpool1;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 2)
- uint8_t* bufpool2;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 3)
- uint8_t* bufpool3;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 4)
- uint8_t* bufpool4;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 5)
- uint8_t* bufpool5;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 6)
- uint8_t* bufpool6;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 7)
- uint8_t* bufpool7;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 8)
- uint8_t* bufpool8;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 9)
- uint8_t* bufpool9;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 10)
- uint8_t* bufpool10;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 11)
- uint8_t* bufpool11;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 12)
- uint8_t* bufpool12;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 13)
- uint8_t* bufpool13;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 14)
- uint8_t* bufpool14;
-#endif
-
-#if (GKI_NUM_FIXED_BUF_POOLS > 15)
- uint8_t* bufpool15;
-#endif
-
-#endif
-
- uint8_t* OSStack[GKI_MAX_TASKS]; /* pointer to beginning of stack */
- uint16_t OSStackSize[GKI_MAX_TASKS]; /* stack size available to each task */
-
- int8_t* OSTName[GKI_MAX_TASKS]; /* name of the task */
-
- uint8_t OSRdyTbl[GKI_MAX_TASKS]; /* current state of the task */
- uint16_t OSWaitEvt
- [GKI_MAX_TASKS]; /* events that have to be processed by the task */
- uint16_t OSWaitForEvt[GKI_MAX_TASKS]; /* events the task is waiting for*/
-
- uint32_t OSTicks; /* system ticks from start */
- uint32_t OSIdleCnt; /* idle counter */
- int16_t
- OSDisableNesting; /* counter to keep track of interrupt disable nesting */
- int16_t OSLockNesting; /* counter to keep track of sched lock nesting */
- int16_t OSIntNesting; /* counter to keep track of interrupt nesting */
-
- /* Timer related variables
- */
- int32_t OSTicksTilExp; /* Number of ticks till next timer expires */
-#if (GKI_DELAY_STOP_SYS_TICK > 0)
- uint32_t OSTicksTilStop; /* inactivity delay timer; OS Ticks till stopping
- system tick */
-#endif
- int32_t OSNumOrigTicks; /* Number of ticks between last timer expiration to
- the next one */
-
- int32_t OSWaitTmr
- [GKI_MAX_TASKS]; /* ticks the task has to wait, for specific events */
-
-/* Only take up space timers used in the system (GKI_NUM_TIMERS defined in
- * target.h) */
-#if (GKI_NUM_TIMERS > 0)
- int32_t OSTaskTmr0[GKI_MAX_TASKS];
- int32_t OSTaskTmr0R[GKI_MAX_TASKS];
-#endif
-
-#if (GKI_NUM_TIMERS > 1)
- int32_t OSTaskTmr1[GKI_MAX_TASKS];
- int32_t OSTaskTmr1R[GKI_MAX_TASKS];
-#endif
-
-#if (GKI_NUM_TIMERS > 2)
- int32_t OSTaskTmr2[GKI_MAX_TASKS];
- int32_t OSTaskTmr2R[GKI_MAX_TASKS];
-#endif
-
-#if (GKI_NUM_TIMERS > 3)
- int32_t OSTaskTmr3[GKI_MAX_TASKS];
- int32_t OSTaskTmr3R[GKI_MAX_TASKS];
-#endif
-
- /* Buffer related variables
- */
- BUFFER_HDR_T* OSTaskQFirst[GKI_MAX_TASKS]
- [NUM_TASK_MBOX]; /* array of pointers to the first
- event in the task mailbox */
- BUFFER_HDR_T* OSTaskQLast[GKI_MAX_TASKS]
- [NUM_TASK_MBOX]; /* array of pointers to the last
- event in the task mailbox */
-
- /* Define the buffer pool management variables
- */
- FREE_QUEUE_T freeq[GKI_NUM_TOTAL_BUF_POOLS];
-
- uint16_t pool_buf_size[GKI_NUM_TOTAL_BUF_POOLS];
- uint16_t pool_max_count[GKI_NUM_TOTAL_BUF_POOLS];
- uint16_t pool_additions[GKI_NUM_TOTAL_BUF_POOLS];
-
- /* Define the buffer pool start addresses
- */
- uint8_t* pool_start[GKI_NUM_TOTAL_BUF_POOLS]; /* array of pointers to the
- start of each buffer pool */
- uint8_t*
- pool_end[GKI_NUM_TOTAL_BUF_POOLS]; /* array of pointers to the end of each
- buffer pool */
- uint16_t pool_size
- [GKI_NUM_TOTAL_BUF_POOLS]; /* actual size of the buffers in a pool */
-
- /* Define the buffer pool access control variables */
- void* p_user_mempool; /* User O/S memory pool */
- uint16_t
- pool_access_mask; /* Bits are set if the corresponding buffer pool is a
- restricted pool */
- uint8_t pool_list[GKI_NUM_TOTAL_BUF_POOLS]; /* buffer pools arranged in the
- order of size */
- uint8_t
- curr_total_no_of_pools; /* number of fixed buf pools + current number of
- dynamic pools */
-
- bool timer_nesting; /* flag to prevent timer interrupt nesting */
-
- /* Time queue arrays */
- TIMER_LIST_Q* timer_queues[GKI_MAX_TIMER_QUEUES];
- /* System tick callback */
- SYSTEM_TICK_CBACK* p_tick_cb;
- bool system_tick_running; /* TRUE if system tick is running. Valid only if
- p_tick_cb is not NULL */
-
-#if (GKI_DEBUG == TRUE)
- uint16_t ExceptionCnt; /* number of GKI exceptions that have happened */
- EXCEPTION_T Exception[GKI_MAX_EXCEPTION];
-#endif
-
-} tGKI_COM_CB;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Internal GKI function prototypes
-*/
-extern bool gki_chk_buf_damage(void*);
-extern bool gki_chk_buf_owner(void*);
-extern void gki_buffer_init(void);
-extern void gki_timers_init(void);
-extern void gki_adjust_timer_count(int32_t);
-
-extern void OSStartRdy(void);
-extern void OSCtxSw(void);
-extern void OSIntCtxSw(void);
-extern void OSSched(void);
-extern void OSIntEnter(void);
-extern void OSIntExit(void);
-
-/* Debug aids
-*/
-typedef void (*FP_PRINT)(char*, ...);
-
-#if (GKI_DEBUG == TRUE)
-
-typedef void (*PKT_PRINT)(uint8_t*, uint16_t);
-
-extern void gki_print_task(FP_PRINT);
-extern void gki_print_exception(FP_PRINT);
-extern void gki_print_timer(FP_PRINT);
-extern void gki_print_stack(FP_PRINT);
-extern void gki_print_buffer(FP_PRINT);
-extern void gki_print_buffer_statistics(FP_PRINT, int16_t);
-extern void gki_print_used_bufs(FP_PRINT, uint8_t);
-extern void gki_dump(uint8_t*, uint16_t, FP_PRINT);
-extern void gki_dump2(uint16_t*, uint16_t, FP_PRINT);
-extern void gki_dump4(uint32_t*, uint16_t, FP_PRINT);
-
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/halimpl/bcm2079x/gki/common/gki_debug.c b/halimpl/bcm2079x/gki/common/gki_debug.c
deleted file mode 100644
index 33bd3b5..0000000
--- a/halimpl/bcm2079x/gki/common/gki_debug.c
+++ /dev/null
@@ -1,308 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#include "gki_int.h"
-
-#if (GKI_DEBUG == TRUE)
-
-const int8_t* const OSTaskStates[] = {
- (int8_t*)"DEAD", /* 0 */
- (int8_t*)"REDY", /* 1 */
- (int8_t*)"WAIT", /* 2 */
- (int8_t*)"", (int8_t*)"DELY", /* 4 */
- (int8_t*)"", (int8_t*)"", (int8_t*)"", (int8_t*)"SUSP", /* 8 */
-};
-
-/*******************************************************************************
-**
-** Function GKI_PrintBufferUsage
-**
-** Description Displays Current Buffer Pool summary
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_PrintBufferUsage(uint8_t* p_num_pools, uint16_t* p_cur_used) {
- int i;
- FREE_QUEUE_T* p;
- uint8_t num = gki_cb.com.curr_total_no_of_pools;
- uint16_t cur[GKI_NUM_TOTAL_BUF_POOLS];
-
- GKI_TRACE_0("");
- GKI_TRACE_0("--- GKI Buffer Pool Summary (R - restricted, P - public) ---");
-
- GKI_TRACE_0("POOL SIZE USED MAXU TOTAL");
- GKI_TRACE_0("------------------------------");
- for (i = 0; i < gki_cb.com.curr_total_no_of_pools; i++) {
- p = &gki_cb.com.freeq[i];
- if ((1 << i) & gki_cb.com.pool_access_mask) {
- GKI_TRACE_5("%02d: (R), %4d, %3d, %3d, %3d", i, p->size, p->cur_cnt,
- p->max_cnt, p->total);
- } else {
- GKI_TRACE_5("%02d: (P), %4d, %3d, %3d, %3d", i, p->size, p->cur_cnt,
- p->max_cnt, p->total);
- }
- cur[i] = p->cur_cnt;
- }
- if (p_num_pools) *p_num_pools = num;
- if (p_cur_used) memcpy(p_cur_used, cur, num * 2);
-}
-
-/*******************************************************************************
-**
-** Function GKI_PrintBuffer
-**
-** Description Called internally by OSS to print the buffer pools
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_PrintBuffer(void) {
- uint16_t i;
- for (i = 0; i < GKI_NUM_TOTAL_BUF_POOLS; i++) {
- GKI_TRACE_5("pool:%4u free %4u cur %3u max %3u total%3u", i,
- gki_cb.com.freeq[i].size, gki_cb.com.freeq[i].cur_cnt,
- gki_cb.com.freeq[i].max_cnt, gki_cb.com.freeq[i].total);
- }
-}
-
-/*******************************************************************************
-**
-** Function gki_calc_stack
-**
-** Description This function tries to calculate the amount of
-** stack used by looking non magic num. Magic num is consider
-** the first byte in the stack.
-**
-** Returns the number of unused byte on the stack. 4 in case of stack
-*overrun
-**
-*******************************************************************************/
-uint16_t gki_calc_stack(uint8_t task) {
- int j, stacksize;
- uint32_t MagicNum;
- uint32_t* p;
-
- stacksize = (int)gki_cb.com.OSStackSize[task];
- p = (uint32_t*)gki_cb.com.OSStack[task]; /* assume stack is aligned, */
- MagicNum = *p;
-
- for (j = 0; j < stacksize; j++) {
- if (*p++ != MagicNum) break;
- }
-
- return (j * sizeof(uint32_t));
-}
-
-/*******************************************************************************
-**
-** Function GKI_print_task
-**
-** Description Print task stack usage.
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_print_task(void) {
-#ifdef _BT_WIN32
- GKI_TRACE_0("Service not available under insight");
-#else
- uint8_t TaskId;
-
- GKI_TRACE_0("TID TASKNAME STATE FREE_STACK STACK");
- for (TaskId = 0; TaskId < GKI_MAX_TASKS; TaskId++) {
- if (gki_cb.com.OSRdyTbl[TaskId] != TASK_DEAD) {
- GKI_TRACE_5("%2u %-8s %-5s 0x%04X 0x%04X Bytes", (uint16_t)TaskId,
- gki_cb.com.OSTName[TaskId],
- OSTaskStates[gki_cb.com.OSRdyTbl[TaskId]],
- gki_calc_stack(TaskId), gki_cb.com.OSStackSize[TaskId]);
- }
- }
-#endif
-}
-
-/*******************************************************************************
-**
-** Function gki_print_buffer_statistics
-**
-** Description Called internally by OSS to print the buffer pools
-*statistics
-**
-** Returns void
-**
-*******************************************************************************/
-void gki_print_buffer_statistics(FP_PRINT print, int16_t pool) {
- uint16_t i;
- BUFFER_HDR_T* hdr;
- uint16_t size, act_size, maxbuffs;
- uint32_t* magic;
-
- if (pool > GKI_NUM_TOTAL_BUF_POOLS || pool < 0) {
- print("Not a valid Buffer pool\n");
- return;
- }
-
- size = gki_cb.com.freeq[pool].size;
- maxbuffs = gki_cb.com.freeq[pool].total;
- act_size = size + BUFFER_PADDING_SIZE;
- print("Buffer Pool[%u] size=%u cur_cnt=%u max_cnt=%u total=%u\n", pool,
- gki_cb.com.freeq[pool].size, gki_cb.com.freeq[pool].cur_cnt,
- gki_cb.com.freeq[pool].max_cnt, gki_cb.com.freeq[pool].total);
-
- print(" Owner State Sanity\n");
- print("----------------------------\n");
- hdr = (BUFFER_HDR_T*)(gki_cb.com.pool_start[pool]);
- for (i = 0; i < maxbuffs; i++) {
- magic = (uint32_t*)((uint8_t*)hdr + BUFFER_HDR_SIZE + size);
- print("%3d: 0x%02x %4d %10s\n", i, hdr->task_id, hdr->status,
- (*magic == MAGIC_NO) ? "OK" : "CORRUPTED");
- hdr = (BUFFER_HDR_T*)((uint8_t*)hdr + act_size);
- }
- return;
-}
-
-/*******************************************************************************
-**
-** Function gki_print_used_bufs
-**
-** Description Dumps used buffers in the particular pool
-**
-*******************************************************************************/
-void gki_print_used_bufs(FP_PRINT print, uint8_t pool_id) {
- uint8_t* p_start;
- uint16_t buf_size;
- uint16_t num_bufs;
- BUFFER_HDR_T* p_hdr;
- uint16_t i;
- uint32_t* magic;
- uint16_t* p;
-
- if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS &&
- gki_cb.com.pool_start[pool_id] != 0) {
- print("Not a valid Buffer pool\n");
- return;
- }
-
- p_start = gki_cb.com.pool_start[pool_id];
- buf_size = gki_cb.com.freeq[pool_id].size + BUFFER_PADDING_SIZE;
- num_bufs = gki_cb.com.freeq[pool_id].total;
-
- for (i = 0; i < num_bufs; i++, p_start += buf_size) {
- p_hdr = (BUFFER_HDR_T*)p_start;
- magic = (uint32_t*)((uint8_t*)p_hdr + buf_size - sizeof(uint32_t));
- p = (uint16_t*)p_hdr;
-
- if (p_hdr->status != BUF_STATUS_FREE) {
- print(
- "%d:0x%x (Q:%d,Task:%s,Stat:%d,%s) %04x %04x %04x %04x %04x %04x "
- "%04x %04x\n",
- i, p_hdr, p_hdr->q_id, GKI_map_taskname(p_hdr->task_id),
- p_hdr->status, (*magic == MAGIC_NO) ? "OK" : "CORRUPTED", p[0], p[1],
- p[2], p[3], p[4], p[5], p[6], p[7]);
- }
- }
-}
-
-/*******************************************************************************
-**
-** Function gki_print_task
-**
-** Description This function prints the task states.
-**
-** Returns void
-**
-*******************************************************************************/
-void gki_print_task(FP_PRINT print) {
- uint8_t i;
-
- print("TID VID TASKNAME STATE WAIT WAITFOR TIMEOUT STACK\n");
- print("-------------------------------------------------\n");
- for (i = 0; i < GKI_MAX_TASKS; i++) {
- if (gki_cb.com.OSRdyTbl[i] != TASK_DEAD) {
- print("%2u %-8s %-5s %04X %04X %7u %u/%u Bytes\n", (uint16_t)i,
- gki_cb.com.OSTName[i], OSTaskStates[gki_cb.com.OSRdyTbl[i]],
- gki_cb.com.OSWaitEvt[i], gki_cb.com.OSWaitForEvt[i],
- gki_cb.com.OSWaitTmr[i], gki_calc_stack(i),
- gki_cb.com.OSStackSize[i]);
- }
- }
-}
-
-/*******************************************************************************
-**
-** Function gki_print_exception
-**
-** Description This function prints the exception information.
-**
-** Returns void
-**
-*******************************************************************************/
-void gki_print_exception(FP_PRINT print) {
- uint16_t i;
- EXCEPTION_T* pExp;
-
- print("GKI Exceptions:\n");
- for (i = 0; i < gki_cb.com.ExceptionCnt; i++) {
- pExp = &gki_cb.com.Exception[i];
- print("%d: Type=%d, Task=%d: %s\n", i, (int32_t)pExp->type,
- (int32_t)pExp->taskid, (int8_t*)pExp->msg);
- }
-}
-
-/*****************************************************************************/
-void gki_dump(uint8_t* s, uint16_t len, FP_PRINT print) {
- uint16_t i, j;
-
- for (i = 0, j = 0; i < len; i++) {
- if (j == 0)
- print("\n%lX: %02X, ", &s[i], s[i]);
- else if (j == 7)
- print("%02X, ", s[i]);
- else
- print("%02X, ", s[i]);
- if (++j == 16) j = 0;
- }
- print("\n");
-}
-
-void gki_dump2(uint16_t* s, uint16_t len, FP_PRINT print) {
- uint16_t i, j;
-
- for (i = 0, j = 0; i < len; i++) {
- if (j == 0)
- print("\n%lX: %04X, ", &s[i], s[i]);
- else
- print("%04X, ", s[i]);
- if (++j == 8) j = 0;
- }
- print("\n");
-}
-
-void gki_dump4(uint32_t* s, uint16_t len, FP_PRINT print) {
- uint16_t i, j;
-
- for (i = 0, j = 0; i < len; i++) {
- if (j == 0)
- print("\n%lX: %08lX, ", &s[i], s[i]);
- else
- print("%08lX, ", s[i]);
- if (++j == 4) j = 0;
- }
- print("\n");
-}
-
-#endif
diff --git a/halimpl/bcm2079x/gki/common/gki_inet.h b/halimpl/bcm2079x/gki/common/gki_inet.h
deleted file mode 100644
index 079dfe3..0000000
--- a/halimpl/bcm2079x/gki/common/gki_inet.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#ifndef GKI_INET_H
-#define GKI_INET_H
-
-#include "data_types.h"
-
-#define htons ntohs
-#define htonl ntohl
-
-#define htonets nettohs
-#define htonetl nettohl
-
-#if (BIG_ENDIAN == TRUE)
-#define ntohs(n) (n)
-#define ntohl(n) (n)
-#define ntoh6(n) (n)
-
-#define nettohs(n) (n)
-#define nettohl(n) (n)
-#else
-extern uint16_t ntohs(uint16_t n);
-extern uint32_t ntohl(uint32_t n);
-extern uint8_t* ntoh6(uint8_t* p);
-
-#define nettohs(n) ((uint16_t)((((n) << 8) & 0xff00) | (((n) >> 8) & 0x00ff)))
-#define nettohl(n) \
- ((((n)&0x000000ff) << 24) | (((n) << 8) & 0x00ff0000) | \
- (((n) >> 8) & 0x0000ff00) | (((n) >> 24) & 0x000000ff))
-#endif
-
-#endif /* GKI_INET_H */
diff --git a/halimpl/bcm2079x/gki/common/gki_time.c b/halimpl/bcm2079x/gki/common/gki_time.c
deleted file mode 100644
index 830ae21..0000000
--- a/halimpl/bcm2079x/gki/common/gki_time.c
+++ /dev/null
@@ -1,950 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#include "gki_int.h"
-
-#ifndef BT_ERROR_TRACE_0
-#define BT_ERROR_TRACE_0(l, m)
-#endif
-
-/* Make sure that this has been defined in target.h */
-#ifndef GKI_NUM_TIMERS
-#error NO TIMERS: Must define at least 1 timer in the system!
-#endif
-
-/* Largest signed positive timer count */
-#define GKI_NO_NEW_TMRS_STARTED (0x7fffffffL)
-/* Marks an unused timer list entry (initial value) */
-#define GKI_UNUSED_LIST_ENTRY (0x80000000L)
-#define GKI_MAX_INT32 (0x7fffffffL)
-
-/*******************************************************************************
-**
-** Function gki_timers_init
-**
-** Description This internal function is called once at startup to
-*initialize
-** all the timer structures.
-**
-** Returns void
-**
-*******************************************************************************/
-void gki_timers_init(void) {
- uint8_t tt;
-
- gki_cb.com.OSTicksTilExp =
- 0; /* Remaining time (of OSTimeCurTimeout) before next timer expires */
- gki_cb.com.OSNumOrigTicks = 0;
-#if (GKI_DELAY_STOP_SYS_TICK > 0)
- gki_cb.com.OSTicksTilStop = 0; /* clear inactivity delay timer */
-#endif
-
- for (tt = 0; tt < GKI_MAX_TASKS; tt++) {
- gki_cb.com.OSWaitTmr[tt] = 0;
-
-#if (GKI_NUM_TIMERS > 0)
- gki_cb.com.OSTaskTmr0[tt] = 0;
- gki_cb.com.OSTaskTmr0R[tt] = 0;
-#endif
-
-#if (GKI_NUM_TIMERS > 1)
- gki_cb.com.OSTaskTmr1[tt] = 0;
- gki_cb.com.OSTaskTmr1R[tt] = 0;
-#endif
-
-#if (GKI_NUM_TIMERS > 2)
- gki_cb.com.OSTaskTmr2[tt] = 0;
- gki_cb.com.OSTaskTmr2R[tt] = 0;
-#endif
-
-#if (GKI_NUM_TIMERS > 3)
- gki_cb.com.OSTaskTmr3[tt] = 0;
- gki_cb.com.OSTaskTmr3R[tt] = 0;
-#endif
- }
-
- for (tt = 0; tt < GKI_MAX_TIMER_QUEUES; tt++) {
- gki_cb.com.timer_queues[tt] = NULL;
- }
-
- gki_cb.com.p_tick_cb = NULL;
- gki_cb.com.system_tick_running = false;
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function gki_timers_is_timer_running
-**
-** Description This internal function is called to test if any gki timer
-*are running
-**
-**
-** Returns TRUE if at least one time is running in the system, FALSE
-*else.
-**
-*******************************************************************************/
-bool gki_timers_is_timer_running(void) {
- uint8_t tt;
- for (tt = 0; tt < GKI_MAX_TASKS; tt++) {
-#if (GKI_NUM_TIMERS > 0)
- if (gki_cb.com.OSTaskTmr0[tt]) {
- return true;
- }
-#endif
-
-#if (GKI_NUM_TIMERS > 1)
- if (gki_cb.com.OSTaskTmr1[tt]) {
- return true;
- }
-#endif
-
-#if (GKI_NUM_TIMERS > 2)
- if (gki_cb.com.OSTaskTmr2[tt]) {
- return true;
- }
-#endif
-
-#if (GKI_NUM_TIMERS > 3)
- if (gki_cb.com.OSTaskTmr3[tt]) {
- return true;
- }
-#endif
- }
-
- return false;
-}
-
-/*******************************************************************************
-**
-** Function GKI_get_tick_count
-**
-** Description This function returns the current system ticks
-**
-** Returns The current number of system ticks
-**
-*******************************************************************************/
-uint32_t GKI_get_tick_count(void) { return gki_cb.com.OSTicks; }
-
-/*******************************************************************************
-**
-** Function GKI_ready_to_sleep
-**
-** Description This function returns the number of system ticks until the
-** next timer will expire. It is typically called by a power
-** savings manager to find out how long it can have the system
-** sleep before it needs to service the next entry.
-**
-** Parameters: None
-**
-** Returns Number of ticks til the next timer expires
-** Note: the value is a signed value. This value should be
-** compared to x > 0, to avoid misinterpreting negative
-*tick
-** values.
-**
-*******************************************************************************/
-int32_t GKI_ready_to_sleep(void) { return (gki_cb.com.OSTicksTilExp); }
-
-/*******************************************************************************
-**
-** Function GKI_start_timer
-**
-** Description An application can call this function to start one of
-** it's four general purpose timers. Any of the four timers
-** can be 1-shot or continuous. If a timer is already running,
-** it will be reset to the new parameters.
-**
-** Parameters tnum - (input) timer number to be started
-*(TIMER_0,
-** TIMER_1, TIMER_2, or TIMER_3)
-** ticks - (input) the number of system ticks til the
-** timer expires.
-** is_continuous - (input) TRUE if timer restarts
-*automatically,
-** else FALSE if it is a
-*'one-shot'.
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_start_timer(uint8_t tnum, int32_t ticks, bool is_continuous) {
- int32_t reload;
- int32_t orig_ticks;
- uint8_t task_id = GKI_get_taskid();
- bool bad_timer = false;
-
- if (ticks <= 0) ticks = 1;
-
- orig_ticks = ticks; /* save the ticks in case adjustment is necessary */
-
- /* If continuous timer, set reload, else set it to 0 */
- if (is_continuous)
- reload = ticks;
- else
- reload = 0;
-
- GKI_disable();
-
- if (gki_timers_is_timer_running() == false) {
-#if (GKI_DELAY_STOP_SYS_TICK > 0)
- /* if inactivity delay timer is not running, start system tick */
- if (gki_cb.com.OSTicksTilStop == 0) {
-#endif
- if (gki_cb.com.p_tick_cb) {
- /* start system tick */
- gki_cb.com.system_tick_running = true;
- (gki_cb.com.p_tick_cb)(true);
- }
-#if (GKI_DELAY_STOP_SYS_TICK > 0)
- } else {
- /* clear inactivity delay timer */
- gki_cb.com.OSTicksTilStop = 0;
- }
-#endif
- }
- /* Add the time since the last task timer update.
- ** Note that this works when no timers are active since
- ** both OSNumOrigTicks and OSTicksTilExp are 0.
- */
- if (GKI_MAX_INT32 - (gki_cb.com.OSNumOrigTicks - gki_cb.com.OSTicksTilExp) >
- ticks) {
- ticks += gki_cb.com.OSNumOrigTicks - gki_cb.com.OSTicksTilExp;
- } else
- ticks = GKI_MAX_INT32;
-
- switch (tnum) {
-#if (GKI_NUM_TIMERS > 0)
- case TIMER_0:
- gki_cb.com.OSTaskTmr0R[task_id] = reload;
- gki_cb.com.OSTaskTmr0[task_id] = ticks;
- break;
-#endif
-
-#if (GKI_NUM_TIMERS > 1)
- case TIMER_1:
- gki_cb.com.OSTaskTmr1R[task_id] = reload;
- gki_cb.com.OSTaskTmr1[task_id] = ticks;
- break;
-#endif
-
-#if (GKI_NUM_TIMERS > 2)
- case TIMER_2:
- gki_cb.com.OSTaskTmr2R[task_id] = reload;
- gki_cb.com.OSTaskTmr2[task_id] = ticks;
- break;
-#endif
-
-#if (GKI_NUM_TIMERS > 3)
- case TIMER_3:
- gki_cb.com.OSTaskTmr3R[task_id] = reload;
- gki_cb.com.OSTaskTmr3[task_id] = ticks;
- break;
-#endif
- default:
- bad_timer = true; /* Timer number is bad, so do not use */
- }
-
- /* Update the expiration timeout if a legitimate timer */
- if (!bad_timer) {
- /* Only update the timeout value if it is less than any other newly started
- * timers */
- gki_adjust_timer_count(orig_ticks);
- }
-
- GKI_enable();
-}
-
-/*******************************************************************************
-**
-** Function GKI_stop_timer
-**
-** Description An application can call this function to stop one of
-** it's four general purpose timers. There is no harm in
-** stopping a timer that is already stopped.
-**
-** Parameters tnum - (input) timer number to be started
-*(TIMER_0,
-** TIMER_1, TIMER_2, or TIMER_3)
-** Returns void
-**
-*******************************************************************************/
-void GKI_stop_timer(uint8_t tnum) {
- uint8_t task_id = GKI_get_taskid();
-
- GKI_disable();
-
- switch (tnum) {
-#if (GKI_NUM_TIMERS > 0)
- case TIMER_0:
- gki_cb.com.OSTaskTmr0R[task_id] = 0;
- gki_cb.com.OSTaskTmr0[task_id] = 0;
- break;
-#endif
-
-#if (GKI_NUM_TIMERS > 1)
- case TIMER_1:
- gki_cb.com.OSTaskTmr1R[task_id] = 0;
- gki_cb.com.OSTaskTmr1[task_id] = 0;
- break;
-#endif
-
-#if (GKI_NUM_TIMERS > 2)
- case TIMER_2:
- gki_cb.com.OSTaskTmr2R[task_id] = 0;
- gki_cb.com.OSTaskTmr2[task_id] = 0;
- break;
-#endif
-
-#if (GKI_NUM_TIMERS > 3)
- case TIMER_3:
- gki_cb.com.OSTaskTmr3R[task_id] = 0;
- gki_cb.com.OSTaskTmr3[task_id] = 0;
- break;
-#endif
- }
-
- if (gki_timers_is_timer_running() == false) {
- if (gki_cb.com.p_tick_cb) {
-#if (GKI_DELAY_STOP_SYS_TICK > 0)
- /* if inactivity delay timer is not running */
- if ((gki_cb.com.system_tick_running) &&
- (gki_cb.com.OSTicksTilStop == 0)) {
- /* set inactivity delay timer */
- /* when timer expires, system tick will be stopped */
- gki_cb.com.OSTicksTilStop = GKI_DELAY_STOP_SYS_TICK;
- }
-#else
- gki_cb.com.system_tick_running = false;
- (gki_cb.com.p_tick_cb)(false); /* stop system tick */
-#endif
- }
- }
-
- GKI_enable();
-}
-
-/*******************************************************************************
-**
-** Function GKI_timer_update
-**
-** Description This function is called by an OS to drive the GKI's timers.
-** It is typically called at every system tick to
-** update the timers for all tasks, and check for timeouts.
-**
-** Note: It has been designed to also allow for variable tick
-*updates
-** so that systems with strict power savings requirements
-*can
-** have the update occur at variable intervals.
-**
-** Parameters: ticks_since_last_update - (input) This is the number of
-*TICKS that have
-** occurred since the last time GKI_timer_update was
-*called.
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_timer_update(int32_t ticks_since_last_update) {
- uint8_t task_id;
- long next_expiration; /* Holds the next soonest expiration time after this
- update */
-
- /* Increment the number of ticks used for time stamps */
- gki_cb.com.OSTicks += ticks_since_last_update;
-
- /* If any timers are running in any tasks, decrement the remaining time til
- * the timer updates need to take place (next expiration occurs)
- */
- gki_cb.com.OSTicksTilExp -= ticks_since_last_update;
-
- /* Don't allow timer interrupt nesting */
- if (gki_cb.com.timer_nesting) return;
-
- gki_cb.com.timer_nesting = 1;
-
-#if (GKI_DELAY_STOP_SYS_TICK > 0)
- /* if inactivity delay timer is set and expired */
- if (gki_cb.com.OSTicksTilStop) {
- if (gki_cb.com.OSTicksTilStop <= (uint32_t)ticks_since_last_update) {
- if (gki_cb.com.p_tick_cb) {
- gki_cb.com.system_tick_running = false;
- (gki_cb.com.p_tick_cb)(false); /* stop system tick */
- }
- gki_cb.com.OSTicksTilStop = 0; /* clear inactivity delay timer */
- gki_cb.com.timer_nesting = 0;
- return;
- } else
- gki_cb.com.OSTicksTilStop -= ticks_since_last_update;
- }
-#endif
-
- /* No need to update the ticks if no timeout has occurred */
- if (gki_cb.com.OSTicksTilExp > 0) {
- gki_cb.com.timer_nesting = 0;
- return;
- }
-
- GKI_disable();
-
- next_expiration = GKI_NO_NEW_TMRS_STARTED;
-
- /* If here then gki_cb.com.OSTicksTilExp <= 0. If negative, then increase
- gki_cb.com.OSNumOrigTicks
- to account for the difference so timer updates below are decremented by the
- full number
- of ticks. gki_cb.com.OSNumOrigTicks is reset at the bottom of this function
- so changing this
- value only affects the timer updates below
- */
- gki_cb.com.OSNumOrigTicks -= gki_cb.com.OSTicksTilExp;
-
- /* Check for OS Task Timers */
- for (task_id = 0; task_id < GKI_MAX_TASKS; task_id++) {
- if (gki_cb.com.OSRdyTbl[task_id] == TASK_DEAD) {
- // task is shutdown do not try to service timers
- continue;
- }
-
- if (gki_cb.com.OSWaitTmr[task_id] > 0) /* If timer is running */
- {
- gki_cb.com.OSWaitTmr[task_id] -= gki_cb.com.OSNumOrigTicks;
- if (gki_cb.com.OSWaitTmr[task_id] <= 0) {
- /* Timer Expired */
- gki_cb.com.OSRdyTbl[task_id] = TASK_READY;
- }
- }
-
-#if (GKI_NUM_TIMERS > 0)
- /* If any timer is running, decrement */
- if (gki_cb.com.OSTaskTmr0[task_id] > 0) {
- gki_cb.com.OSTaskTmr0[task_id] -= gki_cb.com.OSNumOrigTicks;
-
- if (gki_cb.com.OSTaskTmr0[task_id] <= 0) {
-/* Set Timer 0 Expired event mask and reload timer */
-#if (GKI_TIMER_UPDATES_FROM_ISR == TRUE)
- GKI_isend_event(task_id, TIMER_0_EVT_MASK);
-#else
- GKI_send_event(task_id, TIMER_0_EVT_MASK);
-#endif
- gki_cb.com.OSTaskTmr0[task_id] = gki_cb.com.OSTaskTmr0R[task_id];
- }
- }
-
- /* Check to see if this timer is the next one to expire */
- if (gki_cb.com.OSTaskTmr0[task_id] > 0 &&
- gki_cb.com.OSTaskTmr0[task_id] < next_expiration)
- next_expiration = gki_cb.com.OSTaskTmr0[task_id];
-#endif
-
-#if (GKI_NUM_TIMERS > 1)
- /* If any timer is running, decrement */
- if (gki_cb.com.OSTaskTmr1[task_id] > 0) {
- gki_cb.com.OSTaskTmr1[task_id] -= gki_cb.com.OSNumOrigTicks;
-
- if (gki_cb.com.OSTaskTmr1[task_id] <= 0) {
-/* Set Timer 1 Expired event mask and reload timer */
-#if (GKI_TIMER_UPDATES_FROM_ISR == TRUE)
- GKI_isend_event(task_id, TIMER_1_EVT_MASK);
-#else
- GKI_send_event(task_id, TIMER_1_EVT_MASK);
-#endif
- gki_cb.com.OSTaskTmr1[task_id] = gki_cb.com.OSTaskTmr1R[task_id];
- }
- }
-
- /* Check to see if this timer is the next one to expire */
- if (gki_cb.com.OSTaskTmr1[task_id] > 0 &&
- gki_cb.com.OSTaskTmr1[task_id] < next_expiration)
- next_expiration = gki_cb.com.OSTaskTmr1[task_id];
-#endif
-
-#if (GKI_NUM_TIMERS > 2)
- /* If any timer is running, decrement */
- if (gki_cb.com.OSTaskTmr2[task_id] > 0) {
- gki_cb.com.OSTaskTmr2[task_id] -= gki_cb.com.OSNumOrigTicks;
-
- if (gki_cb.com.OSTaskTmr2[task_id] <= 0) {
-/* Set Timer 2 Expired event mask and reload timer */
-#if (GKI_TIMER_UPDATES_FROM_ISR == TRUE)
- GKI_isend_event(task_id, TIMER_2_EVT_MASK);
-#else
- GKI_send_event(task_id, TIMER_2_EVT_MASK);
-#endif
- gki_cb.com.OSTaskTmr2[task_id] = gki_cb.com.OSTaskTmr2R[task_id];
- }
- }
-
- /* Check to see if this timer is the next one to expire */
- if (gki_cb.com.OSTaskTmr2[task_id] > 0 &&
- gki_cb.com.OSTaskTmr2[task_id] < next_expiration)
- next_expiration = gki_cb.com.OSTaskTmr2[task_id];
-#endif
-
-#if (GKI_NUM_TIMERS > 3)
- /* If any timer is running, decrement */
- if (gki_cb.com.OSTaskTmr3[task_id] > 0) {
- gki_cb.com.OSTaskTmr3[task_id] -= gki_cb.com.OSNumOrigTicks;
-
- if (gki_cb.com.OSTaskTmr3[task_id] <= 0) {
-/* Set Timer 3 Expired event mask and reload timer */
-#if (GKI_TIMER_UPDATES_FROM_ISR == TRUE)
- GKI_isend_event(task_id, TIMER_3_EVT_MASK);
-#else
- GKI_send_event(task_id, TIMER_3_EVT_MASK);
-#endif
- gki_cb.com.OSTaskTmr3[task_id] = gki_cb.com.OSTaskTmr3R[task_id];
- }
- }
-
- /* Check to see if this timer is the next one to expire */
- if (gki_cb.com.OSTaskTmr3[task_id] > 0 &&
- gki_cb.com.OSTaskTmr3[task_id] < next_expiration)
- next_expiration = gki_cb.com.OSTaskTmr3[task_id];
-#endif
- }
-
- /* Set the next timer experation value if there is one to start */
- if (next_expiration < GKI_NO_NEW_TMRS_STARTED) {
- gki_cb.com.OSTicksTilExp = gki_cb.com.OSNumOrigTicks = next_expiration;
- } else {
- gki_cb.com.OSTicksTilExp = gki_cb.com.OSNumOrigTicks = 0;
- }
-
- gki_cb.com.timer_nesting = 0;
-
- GKI_enable();
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_timer_queue_empty
-**
-** Description This function is called by applications to see whether the
-*timer
-** queue is empty
-**
-** Parameters
-**
-** Returns bool
-**
-*******************************************************************************/
-bool GKI_timer_queue_empty(void) {
- uint8_t tt;
-
- for (tt = 0; tt < GKI_MAX_TIMER_QUEUES; tt++) {
- if (gki_cb.com.timer_queues[tt]) return false;
- }
-
- return true;
-}
-
-/*******************************************************************************
-**
-** Function GKI_timer_queue_register_callback
-**
-** Description This function is called by applications to register system
-*tick
-** start/stop callback for time queues
-**
-**
-** Parameters p_callback - (input) pointer to the system tick callback
-**
-** Returns bool
-**
-*******************************************************************************/
-void GKI_timer_queue_register_callback(SYSTEM_TICK_CBACK* p_callback) {
- gki_cb.com.p_tick_cb = p_callback;
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_init_timer_list
-**
-** Description This function is called by applications when they
-** want to initialize a timer list.
-**
-** Parameters p_timer_listq - (input) pointer to the timer list queue
-*object
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_init_timer_list(TIMER_LIST_Q* p_timer_listq) {
- p_timer_listq->p_first = NULL;
- p_timer_listq->p_last = NULL;
- p_timer_listq->last_ticks = 0;
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_init_timer_list_entry
-**
-** Description This function is called by the applications when they
-** want to initialize a timer list entry. This must be
-** done prior to first use of the entry.
-**
-** Parameters p_tle - (input) pointer to a timer list queue
-*entry
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_init_timer_list_entry(TIMER_LIST_ENT* p_tle) {
- p_tle->p_next = NULL;
- p_tle->p_prev = NULL;
- p_tle->ticks = GKI_UNUSED_LIST_ENTRY;
- p_tle->in_use = false;
-}
-
-/*******************************************************************************
-**
-** Function GKI_update_timer_list
-**
-** Description This function is called by the applications when they
-** want to update a timer list. This should be at every
-** timer list unit tick, e.g. once per sec, once per minute
-*etc.
-**
-** Parameters p_timer_listq - (input) pointer to the timer list queue
-*object
-** num_units_since_last_update - (input) number of units since
-*the last update
-** (allows for variable unit update)
-**
-** NOTE: The following timer list update routines should not be used for
-*exact time
-** critical purposes. The timer tasks should be used when exact
-*timing is needed.
-**
-** Returns the number of timers that have expired
-**
-*******************************************************************************/
-uint16_t GKI_update_timer_list(TIMER_LIST_Q* p_timer_listq,
- int32_t num_units_since_last_update) {
- TIMER_LIST_ENT* p_tle;
- uint16_t num_time_out = 0;
- int32_t rem_ticks;
- int32_t temp_ticks;
-
- p_tle = p_timer_listq->p_first;
-
- /* First, get the guys who have previously timed out */
- /* Note that the tick value of the timers should always be '0' */
- while ((p_tle) && (p_tle->ticks <= 0)) {
- num_time_out++;
- p_tle = p_tle->p_next;
- }
-
- /* Timer entriy tick values are relative to the preceeding entry */
- rem_ticks = num_units_since_last_update;
-
- /* Now, adjust remaining timer entries */
- while ((p_tle != NULL) && (rem_ticks > 0)) {
- temp_ticks = p_tle->ticks;
- p_tle->ticks -= rem_ticks;
-
- /* See if this timer has just timed out */
- if (p_tle->ticks <= 0) {
- /* We set the number of ticks to '0' so that the legacy code
- * that assumes a '0' or nonzero value will still work as coded. */
- p_tle->ticks = 0;
-
- num_time_out++;
- }
-
- rem_ticks -= temp_ticks; /* Decrement the remaining ticks to process */
- p_tle = p_tle->p_next;
- }
-
- if (p_timer_listq->last_ticks > 0) {
- p_timer_listq->last_ticks -= num_units_since_last_update;
-
- /* If the last timer has expired set last_ticks to 0 so that other list
- * update
- * functions will calculate correctly
- */
- if (p_timer_listq->last_ticks < 0) p_timer_listq->last_ticks = 0;
- }
-
- return (num_time_out);
-}
-
-/*******************************************************************************
-**
-** Function GKI_get_remaining_ticks
-**
-** Description This function is called by an application to get remaining
-** ticks to expire
-**
-** Parameters p_timer_listq - (input) pointer to the timer list queue
-*object
-** p_target_tle - (input) pointer to a timer list queue
-*entry
-**
-** Returns 0 if timer is not used or timer is not in the list
-** remaining ticks if success
-**
-*******************************************************************************/
-uint32_t GKI_get_remaining_ticks(TIMER_LIST_Q* p_timer_listq,
- TIMER_LIST_ENT* p_target_tle) {
- TIMER_LIST_ENT* p_tle;
- uint32_t rem_ticks = 0;
-
- if (p_target_tle->in_use) {
- p_tle = p_timer_listq->p_first;
-
- /* adding up all of ticks in previous entries */
- while ((p_tle) && (p_tle != p_target_tle)) {
- rem_ticks += p_tle->ticks;
- p_tle = p_tle->p_next;
- }
-
- /* if found target entry */
- if (p_tle == p_target_tle) {
- rem_ticks += p_tle->ticks;
- } else {
- BT_ERROR_TRACE_0(TRACE_LAYER_GKI,
- "GKI_get_remaining_ticks: No timer entry in the list");
- return (0);
- }
- } else {
- BT_ERROR_TRACE_0(TRACE_LAYER_GKI,
- "GKI_get_remaining_ticks: timer entry is not active");
- }
-
- return (rem_ticks);
-}
-
-/*******************************************************************************
-**
-** Function GKI_add_to_timer_list
-**
-** Description This function is called by an application to add a timer
-** entry to a timer list.
-**
-** Note: A timer value of '0' will effectively insert an
-*already
-** expired event. Negative tick values will be ignored.
-**
-** Parameters p_timer_listq - (input) pointer to the timer list queue
-*object
-** p_tle - (input) pointer to a timer list queue
-*entry
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_add_to_timer_list(TIMER_LIST_Q* p_timer_listq, TIMER_LIST_ENT* p_tle) {
- uint32_t nr_ticks_total;
- uint8_t tt;
- TIMER_LIST_ENT* p_temp;
- if (p_tle == NULL || p_timer_listq == NULL) {
- GKI_TRACE_3("%s: invalid argument %x, %x****************************<<",
- __func__, p_timer_listq, p_tle);
- return;
- }
-
- /* Only process valid tick values */
- if (p_tle->ticks >= 0) {
- /* If this entry is the last in the list */
- if (p_tle->ticks >= p_timer_listq->last_ticks) {
- /* If this entry is the only entry in the list */
- if (p_timer_listq->p_first == NULL)
- p_timer_listq->p_first = p_tle;
- else {
- /* Insert the entry onto the end of the list */
- if (p_timer_listq->p_last != NULL)
- p_timer_listq->p_last->p_next = p_tle;
-
- p_tle->p_prev = p_timer_listq->p_last;
- }
-
- p_tle->p_next = NULL;
- p_timer_listq->p_last = p_tle;
- nr_ticks_total = p_tle->ticks;
- p_tle->ticks -= p_timer_listq->last_ticks;
-
- p_timer_listq->last_ticks = nr_ticks_total;
- } else /* This entry needs to be inserted before the last entry */
- {
- /* Find the entry that the new one needs to be inserted in front of */
- p_temp = p_timer_listq->p_first;
- while (p_tle->ticks > p_temp->ticks) {
- /* Update the tick value if looking at an unexpired entry */
- if (p_temp->ticks > 0) p_tle->ticks -= p_temp->ticks;
-
- p_temp = p_temp->p_next;
- }
-
- /* The new entry is the first in the list */
- if (p_temp == p_timer_listq->p_first) {
- p_tle->p_next = p_timer_listq->p_first;
- p_timer_listq->p_first->p_prev = p_tle;
- p_timer_listq->p_first = p_tle;
- } else {
- p_temp->p_prev->p_next = p_tle;
- p_tle->p_prev = p_temp->p_prev;
- p_temp->p_prev = p_tle;
- p_tle->p_next = p_temp;
- }
- p_temp->ticks -= p_tle->ticks;
- }
-
- p_tle->in_use = true;
-
- /* if we already add this timer queue to the array */
- for (tt = 0; tt < GKI_MAX_TIMER_QUEUES; tt++) {
- if (gki_cb.com.timer_queues[tt] == p_timer_listq) return;
- }
- /* add this timer queue to the array */
- for (tt = 0; tt < GKI_MAX_TIMER_QUEUES; tt++) {
- if (gki_cb.com.timer_queues[tt] == NULL) break;
- }
- if (tt < GKI_MAX_TIMER_QUEUES) {
- gki_cb.com.timer_queues[tt] = p_timer_listq;
- }
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_remove_from_timer_list
-**
-** Description This function is called by an application to remove a timer
-** entry from a timer list.
-**
-** Parameters p_timer_listq - (input) pointer to the timer list queue
-*object
-** p_tle - (input) pointer to a timer list queue
-*entry
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_remove_from_timer_list(TIMER_LIST_Q* p_timer_listq,
- TIMER_LIST_ENT* p_tle) {
- uint8_t tt;
-
- /* Verify that the entry is valid */
- if (p_tle == NULL || p_tle->in_use == false ||
- p_timer_listq->p_first == NULL) {
- return;
- }
-
- /* Add the ticks remaining in this timer (if any) to the next guy in the list.
- ** Note: Expired timers have a tick value of '0'.
- */
- if (p_tle->p_next != NULL) {
- p_tle->p_next->ticks += p_tle->ticks;
- } else {
- p_timer_listq->last_ticks -= p_tle->ticks;
- }
-
- /* Unlink timer from the list.
- */
- if (p_timer_listq->p_first == p_tle) {
- p_timer_listq->p_first = p_tle->p_next;
-
- if (p_timer_listq->p_first != NULL) p_timer_listq->p_first->p_prev = NULL;
-
- if (p_timer_listq->p_last == p_tle) p_timer_listq->p_last = NULL;
- } else {
- if (p_timer_listq->p_last == p_tle) {
- p_timer_listq->p_last = p_tle->p_prev;
-
- if (p_timer_listq->p_last != NULL) p_timer_listq->p_last->p_next = NULL;
- } else {
- if (p_tle->p_next != NULL && p_tle->p_next->p_prev == p_tle)
- p_tle->p_next->p_prev = p_tle->p_prev;
- else {
- /* Error case - chain messed up ?? */
- return;
- }
-
- if (p_tle->p_prev != NULL && p_tle->p_prev->p_next == p_tle)
- p_tle->p_prev->p_next = p_tle->p_next;
- else {
- /* Error case - chain messed up ?? */
- return;
- }
- }
- }
-
- p_tle->p_next = p_tle->p_prev = NULL;
- p_tle->ticks = GKI_UNUSED_LIST_ENTRY;
- p_tle->in_use = false;
-
- /* if timer queue is empty */
- if (p_timer_listq->p_first == NULL && p_timer_listq->p_last == NULL) {
- for (tt = 0; tt < GKI_MAX_TIMER_QUEUES; tt++) {
- if (gki_cb.com.timer_queues[tt] == p_timer_listq) {
- gki_cb.com.timer_queues[tt] = NULL;
- break;
- }
- }
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function gki_adjust_timer_count
-**
-** Description This function is called whenever a new timer or GKI_wait
-*occurs
-** to adjust (if necessary) the current time til the first
-*expiration.
-** This only needs to make an adjustment if the new timer (in
-*ticks) is
-** less than the number of ticks remaining on the current
-*timer.
-**
-** Parameters: ticks - (input) number of system ticks of the new timer
-*entry
-**
-** NOTE: This routine MUST be called while interrupts are
-*disabled to
-** avoid updates while adjusting the timer variables.
-**
-** Returns void
-**
-*******************************************************************************/
-void gki_adjust_timer_count(int32_t ticks) {
- if (ticks > 0) {
- /* See if the new timer expires before the current first expiration */
- if (gki_cb.com.OSNumOrigTicks == 0 ||
- (ticks < gki_cb.com.OSTicksTilExp && gki_cb.com.OSTicksTilExp > 0)) {
- gki_cb.com.OSNumOrigTicks =
- (gki_cb.com.OSNumOrigTicks - gki_cb.com.OSTicksTilExp) + ticks;
- gki_cb.com.OSTicksTilExp = ticks;
- }
- }
-
- return;
-}
diff --git a/halimpl/bcm2079x/gki/ulinux/data_types.h b/halimpl/bcm2079x/gki/ulinux/data_types.h
deleted file mode 100644
index 060c870..0000000
--- a/halimpl/bcm2079x/gki/ulinux/data_types.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#ifndef DATA_TYPES_H
-#define DATA_TYPES_H
-
-#include <stdbool.h>
-#include <stdint.h>
-#ifndef NULL
-#define NULL 0
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-typedef uint32_t TIME_STAMP;
-
-#ifndef TRUE
-#define TRUE (!FALSE)
-#endif
-
-typedef unsigned char UBYTE;
-
-#ifdef __arm
-#define PACKED __packed
-#define INLINE __inline
-#else
-#define PACKED
-#define INLINE
-#endif
-
-#ifndef BIG_ENDIAN
-#define BIG_ENDIAN FALSE
-#endif
-
-#define UINT16_LOW_BYTE(x) ((x)&0xff)
-#define UINT16_HI_BYTE(x) ((x) >> 8)
-
-#endif
diff --git a/halimpl/bcm2079x/gki/ulinux/gki_int.h b/halimpl/bcm2079x/gki/ulinux/gki_int.h
deleted file mode 100644
index 6c60be0..0000000
--- a/halimpl/bcm2079x/gki/ulinux/gki_int.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#ifndef GKI_INT_H
-#define GKI_INT_H
-
-#include <pthread.h>
-#include "gki_common.h"
-
-/**********************************************************************
-** OS specific definitions
-*/
-#ifdef ANDROID
-#include <sys/times.h>
-#endif
-
-typedef struct {
- pthread_mutex_t GKI_mutex;
- pthread_t thread_id[GKI_MAX_TASKS];
- pthread_mutex_t thread_evt_mutex[GKI_MAX_TASKS];
- pthread_cond_t thread_evt_cond[GKI_MAX_TASKS];
- pthread_mutex_t thread_timeout_mutex[GKI_MAX_TASKS];
- pthread_cond_t thread_timeout_cond[GKI_MAX_TASKS];
- int no_timer_suspend; /* 1: no suspend, 0 stop calling GKI_timer_update() */
- pthread_mutex_t gki_timer_mutex;
- pthread_cond_t gki_timer_cond;
- int gki_timer_wake_lock_on;
-#if (GKI_DEBUG == TRUE)
- pthread_mutex_t GKI_trace_mutex;
-#endif
-} tGKI_OS;
-
-/* condition to exit or continue GKI_run() timer loop */
-#define GKI_TIMER_TICK_RUN_COND 1
-#define GKI_TIMER_TICK_STOP_COND 0
-#define GKI_TIMER_TICK_EXIT_COND 2
-
-extern void gki_system_tick_start_stop_cback(bool start);
-
-/* Contains common control block as well as OS specific variables */
-typedef struct {
- tGKI_OS os;
- tGKI_COM_CB com;
-} tGKI_CB;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern tGKI_CB gki_cb;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/halimpl/bcm2079x/gki/ulinux/gki_ulinux.c b/halimpl/bcm2079x/gki/ulinux/gki_ulinux.c
deleted file mode 100644
index 74743c4..0000000
--- a/halimpl/bcm2079x/gki/ulinux/gki_ulinux.c
+++ /dev/null
@@ -1,1252 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#include <errno.h>
-#include <malloc.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <unistd.h>
-
-#define GKI_DEBUG FALSE
-
-#include <hardware_legacy/power.h> /* Android header */
-#include <pthread.h> /* must be 1st header defined */
-#include <time.h>
-#include "gki_int.h"
-#include "gki_target.h"
-
-/* Temp android logging...move to android tgt config file */
-
-#ifndef LINUX_NATIVE
-#include <cutils/log.h>
-#else
-#define LOGV(format, ...) fprintf(stdout, LOG_TAG format, ##__VA_ARGS__)
-#define LOGE(format, ...) fprintf(stderr, LOG_TAG format, ##__VA_ARGS__)
-#define LOGI(format, ...) fprintf(stdout, LOG_TAG format, ##__VA_ARGS__)
-
-#define SCHED_NORMAL 0
-#define SCHED_FIFO 1
-#define SCHED_RR 2
-#define SCHED_BATCH 3
-
-#endif
-
-/* Define the structure that holds the GKI variables
-*/
-tGKI_CB gki_cb;
-
-#define NANOSEC_PER_MILLISEC (1000000)
-#define NSEC_PER_SEC (1000 * NANOSEC_PER_MILLISEC)
-
-/* works only for 1ms to 1000ms heart beat ranges */
-#define LINUX_SEC (1000 / TICKS_PER_SEC)
-// #define GKI_TICK_TIMER_DEBUG
-
-#define LOCK(m) pthread_mutex_lock(&m)
-#define UNLOCK(m) pthread_mutex_unlock(&m)
-#define INIT(m) pthread_mutex_init(&m, NULL)
-
-/* this kind of mutex go into tGKI_OS control block!!!! */
-/* static pthread_mutex_t GKI_sched_mutex; */
-/*static pthread_mutex_t thread_delay_mutex;
-static pthread_cond_t thread_delay_cond;
-static pthread_mutex_t gki_timer_update_mutex;
-static pthread_cond_t gki_timer_update_cond;
-*/
-#ifdef NO_GKI_RUN_RETURN
-static pthread_t timer_thread_id = 0;
-#endif
-
-/* For Android */
-
-#ifndef GKI_SHUTDOWN_EVT
-#define GKI_SHUTDOWN_EVT APPL_EVT_7
-#endif
-
-typedef struct {
- uint8_t task_id; /* GKI task id */
- TASKPTR task_entry; /* Task entry function*/
- uintptr_t params; /* Extra params to pass to task entry function */
- pthread_cond_t* pCond; /* for android*/
- pthread_mutex_t* pMutex; /* for android*/
-} gki_pthread_info_t;
-gki_pthread_info_t gki_pthread_info[GKI_MAX_TASKS];
-
-static void* GKI_run_worker_thread(void*);
-
-/*******************************************************************************
-**
-** Function gki_task_entry
-**
-** Description entry point of GKI created tasks
-**
-** Returns void
-**
-*******************************************************************************/
-void gki_task_entry(uintptr_t params) {
- pthread_t thread_id = pthread_self();
- gki_pthread_info_t* p_pthread_info = (gki_pthread_info_t*)params;
- GKI_TRACE_5("gki_task_entry task_id=%i, thread_id=%x/%x, pCond/pMutex=%x/%x",
- p_pthread_info->task_id,
- gki_cb.os.thread_id[p_pthread_info->task_id], pthread_self(),
- p_pthread_info->pCond, p_pthread_info->pMutex);
-
- gki_cb.os.thread_id[p_pthread_info->task_id] = thread_id;
- /* Call the actual thread entry point */
- (p_pthread_info->task_entry)(p_pthread_info->params);
-
- GKI_TRACE_1("gki_task task_id=%i terminating", p_pthread_info->task_id);
- gki_cb.os.thread_id[p_pthread_info->task_id] = 0;
-
- pthread_exit(0); /* GKI tasks have no return value */
-}
-/* end android */
-
-#ifndef ANDROID
-void GKI_TRACE(char* fmt, ...) {
- LOCK(gki_cb.os.GKI_trace_mutex);
- va_list ap;
-
- va_start(ap, fmt);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
-
- va_end(ap);
- UNLOCK(gki_cb.os.GKI_trace_mutex);
-}
-#endif
-
-/*******************************************************************************
-**
-** Function GKI_init
-**
-** Description This function is called once at startup to initialize
-** all the timer structures.
-**
-** Returns void
-**
-*******************************************************************************/
-
-void GKI_init(void) {
- pthread_mutexattr_t attr;
- tGKI_OS* p_os;
-
- memset(&gki_cb, 0, sizeof(gki_cb));
-
- gki_buffer_init();
- gki_timers_init();
- gki_cb.com.OSTicks = (uint32_t)times(0);
-
- pthread_mutexattr_init(&attr);
-
-#ifndef __CYGWIN__
- pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
-#endif
- p_os = &gki_cb.os;
- pthread_mutex_init(&p_os->GKI_mutex, &attr);
-/* pthread_mutex_init(&GKI_sched_mutex, NULL); */
-#if (GKI_DEBUG == TRUE)
- pthread_mutex_init(&p_os->GKI_trace_mutex, NULL);
-#endif
- /* pthread_mutex_init(&thread_delay_mutex, NULL); */ /* used in GKI_delay */
- /* pthread_cond_init (&thread_delay_cond, NULL); */
-
- /* Initialiase GKI_timer_update suspend variables & mutexes to be in running
- * state.
- * this works too even if GKI_NO_TICK_STOP is defined in btld.txt */
- p_os->no_timer_suspend = GKI_TIMER_TICK_RUN_COND;
- pthread_mutex_init(&p_os->gki_timer_mutex, NULL);
- pthread_cond_init(&p_os->gki_timer_cond, NULL);
-}
-
-/*******************************************************************************
-**
-** Function GKI_get_os_tick_count
-**
-** Description This function is called to retrieve the native OS system
-*tick.
-**
-** Returns Tick count of native OS.
-**
-*******************************************************************************/
-uint32_t GKI_get_os_tick_count(void) {
- /* TODO - add any OS specific code here
- **/
- return (gki_cb.com.OSTicks);
-}
-
-/*******************************************************************************
-**
-** Function GKI_create_task
-**
-** Description This function is called to create a new OSS task.
-**
-** Parameters: task_entry - (input) pointer to the entry function of the
-*task
-** task_id - (input) Task id is mapped to priority
-** taskname - (input) name given to the task
-** stack - (input) pointer to the top of the stack
-*(highest memory location)
-** stacksize - (input) size of the stack allocated for the
-*task
-**
-** Returns GKI_SUCCESS if all OK, GKI_FAILURE if any problem
-**
-** NOTE This function take some parameters that may not be needed
-** by your particular OS. They are here for compatability
-** of the function prototype.
-**
-*******************************************************************************/
-uint8_t GKI_create_task(TASKPTR task_entry, uint8_t task_id, int8_t* taskname,
- uint16_t* stack, uint16_t stacksize, void* pCondVar,
- void* pMutex) {
- uint16_t i;
- uint8_t* p;
- struct sched_param param;
- int policy, ret = 0;
- pthread_condattr_t attr;
- pthread_attr_t attr1;
-
- pthread_condattr_init(&attr);
- pthread_condattr_setclock(&attr, CLOCK_MONOTONIC);
- GKI_TRACE_5(
- "GKI_create_task func=0x%x id=%d name=%s stack=0x%x stackSize=%d",
- task_entry, task_id, taskname, stack, stacksize);
-
- if (task_id >= GKI_MAX_TASKS) {
- GKI_TRACE_0("Error! task ID > max task allowed");
- return (GKI_FAILURE);
- }
-
- gki_cb.com.OSRdyTbl[task_id] = TASK_READY;
- gki_cb.com.OSTName[task_id] = taskname;
- gki_cb.com.OSWaitTmr[task_id] = 0;
- gki_cb.com.OSWaitEvt[task_id] = 0;
-
- /* Initialize mutex and condition variable objects for events and timeouts */
- pthread_mutex_init(&gki_cb.os.thread_evt_mutex[task_id], NULL);
- pthread_cond_init(&gki_cb.os.thread_evt_cond[task_id], &attr);
- pthread_mutex_init(&gki_cb.os.thread_timeout_mutex[task_id], NULL);
- pthread_cond_init(&gki_cb.os.thread_timeout_cond[task_id], &attr);
-
- pthread_attr_init(&attr1);
-/* by default, pthread creates a joinable thread */
-#if (FALSE == GKI_PTHREAD_JOINABLE)
- pthread_attr_setdetachstate(&attr1, PTHREAD_CREATE_DETACHED);
-
- GKI_TRACE_3("GKI creating task %i, pCond/pMutex=%x/%x", task_id, pCondVar,
- pMutex);
-#else
- GKI_TRACE_1("GKI creating JOINABLE task %i", task_id);
-#endif
-
- /* On Android, the new tasks starts running before
- * 'gki_cb.os.thread_id[task_id]' is initialized */
- /* Pass task_id to new task so it can initialize gki_cb.os.thread_id[task_id]
- * for it calls GKI_wait */
- gki_pthread_info[task_id].task_id = task_id;
- gki_pthread_info[task_id].task_entry = task_entry;
- gki_pthread_info[task_id].params = 0;
- gki_pthread_info[task_id].pCond = (pthread_cond_t*)pCondVar;
- gki_pthread_info[task_id].pMutex = (pthread_mutex_t*)pMutex;
-
- ret = pthread_create(&gki_cb.os.thread_id[task_id], &attr1,
- (void*)gki_task_entry, &gki_pthread_info[task_id]);
-
- if (ret != 0) {
- GKI_TRACE_2("pthread_create failed(%d), %s!", ret, taskname);
- return GKI_FAILURE;
- }
-
- if (pthread_getschedparam(gki_cb.os.thread_id[task_id], &policy, ¶m) ==
- 0) {
-#if defined(PBS_SQL_TASK)
- if (task_id == PBS_SQL_TASK) {
- GKI_TRACE_0("PBS SQL lowest priority task");
- policy = SCHED_NORMAL;
- } else
-#endif
- {
- policy = SCHED_RR;
- param.sched_priority = 30 - task_id - 2;
- }
- pthread_setschedparam(gki_cb.os.thread_id[task_id], policy, ¶m);
- }
-
- GKI_TRACE_6("Leaving GKI_create_task %x %d %x %s %x %d", task_entry, task_id,
- gki_cb.os.thread_id[task_id], taskname, stack, stacksize);
-
- return (GKI_SUCCESS);
-}
-
-/*******************************************************************************
-**
-** Function GKI_shutdown
-**
-** Description shutdowns the GKI tasks/threads in from max task id to 0 and
-*frees
-** pthread resources!
-** IMPORTANT: in case of join method, GKI_shutdown must be
-*called outside
-** a GKI thread context!
-**
-** Returns void
-**
-*******************************************************************************/
-#define WAKE_LOCK_ID "brcm_nfca"
-
-void GKI_shutdown(void) {
- uint8_t task_id;
- volatile int* p_run_cond = &gki_cb.os.no_timer_suspend;
- int oldCOnd = 0;
-#if (FALSE == GKI_PTHREAD_JOINABLE)
- int i = 0;
-#else
- int result;
-#endif
-
- /* release threads and set as TASK_DEAD. going from low to high priority fixes
- * GKI_exception problem due to btu->hci sleep request events */
- for (task_id = GKI_MAX_TASKS; task_id > 0; task_id--) {
- if (gki_cb.com.OSRdyTbl[task_id - 1] != TASK_DEAD) {
- gki_cb.com.OSRdyTbl[task_id - 1] = TASK_DEAD;
-
- /* paranoi settings, make sure that we do not execute any mailbox events
- */
- gki_cb.com.OSWaitEvt[task_id - 1] &=
- ~(TASK_MBOX_0_EVT_MASK | TASK_MBOX_1_EVT_MASK | TASK_MBOX_2_EVT_MASK |
- TASK_MBOX_3_EVT_MASK);
- GKI_send_event(task_id - 1, EVENT_MASK(GKI_SHUTDOWN_EVT));
-
-#if (FALSE == GKI_PTHREAD_JOINABLE)
- i = 0;
-
- while ((gki_cb.com.OSWaitEvt[task_id - 1] != 0) && (++i < 10))
- usleep(100 * 1000);
-#else
- /* wait for proper Arnold Schwarzenegger task state */
- result = pthread_join(gki_cb.os.thread_id[task_id - 1], NULL);
- if (result < 0) {
- GKI_TRACE_1("pthread_join() FAILED: result: %d", result);
- }
-#endif
- GKI_TRACE_1("GKI_shutdown(): task %s dead", gki_cb.com.OSTName[task_id]);
- GKI_exit_task(task_id - 1);
- }
- }
-
- /* Destroy mutex and condition variable objects */
- pthread_mutex_destroy(&gki_cb.os.GKI_mutex);
-/* pthread_mutex_destroy(&GKI_sched_mutex); */
-#if (GKI_DEBUG == TRUE)
- pthread_mutex_destroy(&gki_cb.os.GKI_trace_mutex);
-#endif
-/* pthread_mutex_destroy(&thread_delay_mutex);
- pthread_cond_destroy (&thread_delay_cond); */
-#if (FALSE == GKI_PTHREAD_JOINABLE)
- i = 0;
-#endif
-
-#ifdef NO_GKI_RUN_RETURN
- shutdown_timer = 1;
-#endif
- if (gki_cb.os.gki_timer_wake_lock_on) {
- GKI_TRACE_0("GKI_shutdown : release_wake_lock(brcm_btld)");
- gki_cb.os.gki_timer_wake_lock_on = 0;
- }
- oldCOnd = *p_run_cond;
- *p_run_cond = GKI_TIMER_TICK_EXIT_COND;
- if (oldCOnd == GKI_TIMER_TICK_STOP_COND)
- pthread_cond_signal(&gki_cb.os.gki_timer_cond);
-}
-
-/*******************************************************************************
- **
- ** Function GKI_run
- **
- ** Description This function runs a task
- **
- ** Parameters: start: TRUE start system tick (again), FALSE stop
- **
- ** Returns void
- **
- *********************************************************************************/
-void gki_system_tick_start_stop_cback(bool start) {
- tGKI_OS* p_os = &gki_cb.os;
- volatile int* p_run_cond = &p_os->no_timer_suspend;
- volatile static int wake_lock_count;
- if (start == false) {
- /* this can lead to a race condition. however as we only read this variable
- * in the timer loop
- * we should be fine with this approach. otherwise uncomment below mutexes.
- */
- /* GKI_disable(); */
- *p_run_cond = GKI_TIMER_TICK_STOP_COND;
-/* GKI_enable(); */
-#ifdef GKI_TICK_TIMER_DEBUG
- BT_TRACE_1(TRACE_LAYER_HCI, TRACE_TYPE_DEBUG,
- ">>> STOP GKI_timer_update(), wake_lock_count:%d",
- --wake_lock_count);
-#endif
- gki_cb.os.gki_timer_wake_lock_on = 0;
- } else {
- /* restart GKI_timer_update() loop */
- gki_cb.os.gki_timer_wake_lock_on = 1;
- *p_run_cond = GKI_TIMER_TICK_RUN_COND;
- pthread_mutex_lock(&p_os->gki_timer_mutex);
- pthread_cond_signal(&p_os->gki_timer_cond);
- pthread_mutex_unlock(&p_os->gki_timer_mutex);
-
-#ifdef GKI_TICK_TIMER_DEBUG
- BT_TRACE_1(TRACE_LAYER_HCI, TRACE_TYPE_DEBUG,
- ">>> START GKI_timer_update(), wake_lock_count:%d",
- ++wake_lock_count);
-#endif
- }
-}
-
-/*******************************************************************************
-**
-** Function timer_thread
-**
-** Description Timer thread
-**
-** Parameters: id - (input) timer ID
-**
-** Returns void
-**
-*********************************************************************************/
-#ifdef NO_GKI_RUN_RETURN
-void timer_thread(signed long id) {
- GKI_TRACE_1("%s enter", __func__);
- struct timespec delay;
- int timeout = 1000; /* 10 ms per system tick */
- int err;
-
- while (!shutdown_timer) {
- delay.tv_sec = timeout / 1000;
- delay.tv_nsec = 1000 * 1000 * (timeout % 1000);
-
- /* [u]sleep can't be used because it uses SIGALRM */
-
- do {
- err = nanosleep(&delay, &delay);
- } while (err < 0 && errno == EINTR);
-
- GKI_timer_update(1);
- }
- GKI_TRACE_1("%s exit", __func__);
- pthread_exit(NULL);
-}
-#endif
-
-/*******************************************************************************
-**
-** Function GKI_run
-**
-** Description This function runs a task
-**
-** Parameters: p_task_id - (input) pointer to task id
-**
-** Returns void
-**
-** NOTE This function is only needed for operating systems where
-** starting a task is a 2-step process. Most OS's do it in
-** one step, If your OS does it in one step, this function
-** should be empty.
-*********************************************************************************/
-void GKI_run(void* p_task_id) {
- GKI_TRACE_1("%s enter", __func__);
- int retval = EACCES;
- static pthread_t workerThreadId = 0;
-
- retval = pthread_create(&workerThreadId, NULL, GKI_run_worker_thread, NULL);
- if (retval != 0) {
- GKI_TRACE_ERROR_2("%s: fail create thread %d", __func__, retval);
- }
- GKI_TRACE_1("%s exit", __func__);
-}
-
-/*******************************************************************************
-**
-** Function GKI_run_worker_thread
-**
-** Description This function runs a task
-**
-** Parameters: None
-**
-** Returns: error code
-*********************************************************************************/
-void* GKI_run_worker_thread(void* dummy) {
- GKI_TRACE_1("%s: enter", __func__);
- struct timespec delay;
- int err = 0;
- volatile int* p_run_cond = &gki_cb.os.no_timer_suspend;
-
-#ifndef GKI_NO_TICK_STOP
- /* register start stop function which disable timer loop in GKI_run() when no
- * timers are
- * in any GKI/BTA/BTU this should save power when BTLD is idle! */
- GKI_timer_queue_register_callback(gki_system_tick_start_stop_cback);
- GKI_TRACE_1("%s: Start/Stop GKI_timer_update_registered!", __func__);
-#endif
-
-#ifdef NO_GKI_RUN_RETURN
- GKI_TRACE_1("%s: GKI_run == NO_GKI_RUN_RETURN", __func__);
- pthread_attr_t timer_attr;
-
- shutdown_timer = 0;
-
- pthread_attr_init(&timer_attr);
- pthread_attr_setdetachstate(&timer_attr, PTHREAD_CREATE_DETACHED);
- if (pthread_create(&timer_thread_id, &timer_attr, timer_thread, NULL) != 0) {
- GKI_TRACE_1("%s: pthread_create failed to create timer_thread!", __func__);
- return NULL;
- }
-#else
- GKI_TRACE_3("%s: run_cond(%x)=%d ", __func__, p_run_cond, *p_run_cond);
- for (; GKI_TIMER_TICK_EXIT_COND != *p_run_cond;) {
- do {
- /* adjust hear bit tick in btld by changning TICKS_PER_SEC!!!!! this
- * formula works only for
- * 1-1000ms heart beat units! */
- delay.tv_sec = LINUX_SEC / 1000;
- delay.tv_nsec = 1000 * 1000 * (LINUX_SEC % 1000);
-
- /* [u]sleep can't be used because it uses SIGALRM */
- do {
- err = nanosleep(&delay, &delay);
- } while (err < 0 && errno == EINTR);
-
- /* the unit should be alsways 1 (1 tick). only if you vary for some reason
- * heart beat tick
- * e.g. power saving you may want to provide more ticks
- */
- GKI_timer_update(1);
- /* BT_TRACE_2( TRACE_LAYER_HCI, TRACE_TYPE_DEBUG, "update: tv_sec: %d,
- * tv_nsec: %d", delay.tv_sec, delay.tv_nsec ); */
- } while (GKI_TIMER_TICK_RUN_COND == *p_run_cond);
-
-/* currently on reason to exit above loop is no_timer_suspend ==
- * GKI_TIMER_TICK_STOP_COND
- * block timer main thread till re-armed by */
-#ifdef GKI_TICK_TIMER_DEBUG
- BT_TRACE_0(TRACE_LAYER_HCI, TRACE_TYPE_DEBUG,
- ">>> SUSPENDED GKI_timer_update()");
-#endif
- if (GKI_TIMER_TICK_EXIT_COND != *p_run_cond) {
- GKI_TRACE_1("%s: waiting timer mutex", __func__);
- pthread_mutex_lock(&gki_cb.os.gki_timer_mutex);
- pthread_cond_wait(&gki_cb.os.gki_timer_cond, &gki_cb.os.gki_timer_mutex);
- pthread_mutex_unlock(&gki_cb.os.gki_timer_mutex);
- GKI_TRACE_1("%s: exited timer mutex", __func__);
- }
-/* potentially we need to adjust os gki_cb.com.OSTicks */
-
-#ifdef GKI_TICK_TIMER_DEBUG
- BT_TRACE_1(TRACE_LAYER_HCI, TRACE_TYPE_DEBUG,
- ">>> RESTARTED GKI_timer_update(): run_cond: %d", *p_run_cond);
-#endif
- } /* for */
-#endif
- GKI_TRACE_1("%s: exit", __func__);
- return NULL;
-}
-
-/*******************************************************************************
-**
-** Function GKI_stop
-**
-** Description This function is called to stop
-** the tasks and timers when the system is being stopped
-**
-** Returns void
-**
-** NOTE This function is NOT called by the Widcomm stack and
-** profiles. If you want to use it in your own implementation,
-** put specific code here.
-**
-*******************************************************************************/
-void GKI_stop(void) {
- uint8_t task_id;
-
- /* gki_queue_timer_cback(FALSE); */
- /* TODO - add code here if needed*/
-
- for (task_id = 0; task_id < GKI_MAX_TASKS; task_id++) {
- if (gki_cb.com.OSRdyTbl[task_id] != TASK_DEAD) {
- GKI_exit_task(task_id);
- }
- }
-}
-
-/*******************************************************************************
-**
-** Function GKI_wait
-**
-** Description This function is called by tasks to wait for a specific
-** event or set of events. The task may specify the duration
-** that it wants to wait for, or 0 if infinite.
-**
-** Parameters: flag - (input) the event or set of events to wait for
-** timeout - (input) the duration that the task wants to wait
-** for the specific events (in system ticks)
-**
-**
-** Returns the event mask of received events or zero if timeout
-**
-*******************************************************************************/
-uint16_t GKI_wait(uint16_t flag, uint32_t timeout) {
- uint16_t evt;
- uint8_t rtask;
- struct timespec abstime = {0, 0};
- int sec;
- int nano_sec;
-
- rtask = GKI_get_taskid();
- GKI_TRACE_3("GKI_wait %d %x %d", rtask, flag, timeout);
- if (rtask >= GKI_MAX_TASKS) {
- pthread_exit(NULL);
- return 0;
- }
-
- gki_pthread_info_t* p_pthread_info = &gki_pthread_info[rtask];
- if (p_pthread_info->pCond != NULL && p_pthread_info->pMutex != NULL) {
- int ret;
- GKI_TRACE_3("GKI_wait task=%i, pCond/pMutex = %x/%x", rtask,
- p_pthread_info->pCond, p_pthread_info->pMutex);
- ret = pthread_mutex_lock(p_pthread_info->pMutex);
- ret = pthread_cond_signal(p_pthread_info->pCond);
- ret = pthread_mutex_unlock(p_pthread_info->pMutex);
- p_pthread_info->pMutex = NULL;
- p_pthread_info->pCond = NULL;
- }
- gki_cb.com.OSWaitForEvt[rtask] = flag;
-
- /* protect OSWaitEvt[rtask] from modification from an other thread */
- pthread_mutex_lock(&gki_cb.os.thread_evt_mutex[rtask]);
-
-#if 0 /* for clean scheduling we probably should always call \
- pthread_cond_wait() */
- /* Check if anything in any of the mailboxes. There is a potential race condition where OSTaskQFirst[rtask]
- has been modified. however this should only result in addtional call to pthread_cond_wait() but as
- the cond is met, it will exit immediately (depending on schedulling) */
- if (gki_cb.com.OSTaskQFirst[rtask][0])
- gki_cb.com.OSWaitEvt[rtask] |= TASK_MBOX_0_EVT_MASK;
- if (gki_cb.com.OSTaskQFirst[rtask][1])
- gki_cb.com.OSWaitEvt[rtask] |= TASK_MBOX_1_EVT_MASK;
- if (gki_cb.com.OSTaskQFirst[rtask][2])
- gki_cb.com.OSWaitEvt[rtask] |= TASK_MBOX_2_EVT_MASK;
- if (gki_cb.com.OSTaskQFirst[rtask][3])
- gki_cb.com.OSWaitEvt[rtask] |= TASK_MBOX_3_EVT_MASK;
-#endif
-
- if (!(gki_cb.com.OSWaitEvt[rtask] & flag)) {
- if (timeout) {
- // timeout = GKI_MS_TO_TICKS(timeout); /* convert from
- // milliseconds to ticks */
-
- /* get current system time */
- // clock_gettime(CLOCK_MONOTONIC, &currSysTime);
- // abstime.tv_sec = currSysTime.time;
- // abstime.tv_nsec = NANOSEC_PER_MILLISEC *
- // currSysTime.millitm;
- clock_gettime(CLOCK_MONOTONIC, &abstime);
-
- /* add timeout */
- sec = timeout / 1000;
- nano_sec = (timeout % 1000) * NANOSEC_PER_MILLISEC;
- abstime.tv_nsec += nano_sec;
- if (abstime.tv_nsec > NSEC_PER_SEC) {
- abstime.tv_sec += (abstime.tv_nsec / NSEC_PER_SEC);
- abstime.tv_nsec = abstime.tv_nsec % NSEC_PER_SEC;
- }
- abstime.tv_sec += sec;
-
- pthread_cond_timedwait(&gki_cb.os.thread_evt_cond[rtask],
- &gki_cb.os.thread_evt_mutex[rtask], &abstime);
-
- } else {
- pthread_cond_wait(&gki_cb.os.thread_evt_cond[rtask],
- &gki_cb.os.thread_evt_mutex[rtask]);
- }
-
- /* TODO: check, this is probably neither not needed depending on
- phtread_cond_wait() implmentation,
- e.g. it looks like it is implemented as a counter in which case multiple
- cond_signal
- should NOT be lost! */
- // we are waking up after waiting for some events, so refresh variables
- // no need to call GKI_disable() here as we know that we will have some
- // events as we've been waking up after condition pending or timeout
- if (gki_cb.com.OSTaskQFirst[rtask][0])
- gki_cb.com.OSWaitEvt[rtask] |= TASK_MBOX_0_EVT_MASK;
- if (gki_cb.com.OSTaskQFirst[rtask][1])
- gki_cb.com.OSWaitEvt[rtask] |= TASK_MBOX_1_EVT_MASK;
- if (gki_cb.com.OSTaskQFirst[rtask][2])
- gki_cb.com.OSWaitEvt[rtask] |= TASK_MBOX_2_EVT_MASK;
- if (gki_cb.com.OSTaskQFirst[rtask][3])
- gki_cb.com.OSWaitEvt[rtask] |= TASK_MBOX_3_EVT_MASK;
-
- if (gki_cb.com.OSRdyTbl[rtask] == TASK_DEAD) {
- gki_cb.com.OSWaitEvt[rtask] = 0;
- /* unlock thread_evt_mutex as pthread_cond_wait() does auto lock when cond
- * is met */
- pthread_mutex_unlock(&gki_cb.os.thread_evt_mutex[rtask]);
- GKI_TRACE_1("GKI TASK_DEAD received. exit thread %d...", rtask);
-
- gki_cb.os.thread_id[rtask] = 0;
- pthread_exit(NULL);
- return (EVENT_MASK(GKI_SHUTDOWN_EVT));
- }
- }
-
- /* Clear the wait for event mask */
- gki_cb.com.OSWaitForEvt[rtask] = 0;
-
- /* Return only those bits which user wants... */
- evt = gki_cb.com.OSWaitEvt[rtask] & flag;
-
- /* Clear only those bits which user wants... */
- gki_cb.com.OSWaitEvt[rtask] &= ~flag;
-
- /* unlock thread_evt_mutex as pthread_cond_wait() does auto lock mutex when
- * cond is met */
- pthread_mutex_unlock(&gki_cb.os.thread_evt_mutex[rtask]);
- GKI_TRACE_4("GKI_wait %d %x %d %x resumed", rtask, flag, timeout, evt);
-
- return (evt);
-}
-
-/*******************************************************************************
-**
-** Function GKI_delay
-**
-** Description This function is called by tasks to sleep unconditionally
-** for a specified amount of time. The duration is in
-*milliseconds
-**
-** Parameters: timeout - (input) the duration in milliseconds
-**
-** Returns void
-**
-*******************************************************************************/
-
-void GKI_delay(uint32_t timeout) {
- uint8_t rtask = GKI_get_taskid();
- struct timespec delay;
- int err;
-
- GKI_TRACE_2("GKI_delay %d %d", rtask, timeout);
-
- delay.tv_sec = timeout / 1000;
- delay.tv_nsec = 1000 * 1000 * (timeout % 1000);
-
- /* [u]sleep can't be used because it uses SIGALRM */
-
- do {
- err = nanosleep(&delay, &delay);
- } while (err < 0 && errno == EINTR);
-
- /* Check if task was killed while sleeping */
- /* NOTE
- ** if you do not implement task killing, you do not
- ** need this check.
- */
- if (rtask && gki_cb.com.OSRdyTbl[rtask] == TASK_DEAD) {
- }
-
- GKI_TRACE_2("GKI_delay %d %d done", rtask, timeout);
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_send_event
-**
-** Description This function is called by tasks to send events to other
-** tasks. Tasks can also send events to themselves.
-**
-** Parameters: task_id - (input) The id of the task to which the event has
-*to
-** be sent
-** event - (input) The event that has to be sent
-**
-**
-** Returns GKI_SUCCESS if all OK, else GKI_FAILURE
-**
-*******************************************************************************/
-uint8_t GKI_send_event(uint8_t task_id, uint16_t event) {
- GKI_TRACE_2("GKI_send_event %d %x", task_id, event);
-
- /* use efficient coding to avoid pipeline stalls */
- if (task_id < GKI_MAX_TASKS) {
- /* protect OSWaitEvt[task_id] from manipulation in GKI_wait() */
- pthread_mutex_lock(&gki_cb.os.thread_evt_mutex[task_id]);
-
- /* Set the event bit */
- gki_cb.com.OSWaitEvt[task_id] |= event;
-
- pthread_cond_signal(&gki_cb.os.thread_evt_cond[task_id]);
-
- pthread_mutex_unlock(&gki_cb.os.thread_evt_mutex[task_id]);
-
- GKI_TRACE_2("GKI_send_event %d %x done", task_id, event);
- return (GKI_SUCCESS);
- }
- return (GKI_FAILURE);
-}
-
-/*******************************************************************************
-**
-** Function GKI_isend_event
-**
-** Description This function is called from ISRs to send events to other
-** tasks. The only difference between this function and
-*GKI_send_event
-** is that this function assumes interrupts are already
-*disabled.
-**
-** Parameters: task_id - (input) The destination task Id for the event.
-** event - (input) The event flag
-**
-** Returns GKI_SUCCESS if all OK, else GKI_FAILURE
-**
-** NOTE This function is NOT called by the Widcomm stack and
-** profiles. If you want to use it in your own implementation,
-** put your code here, otherwise you can delete the entire
-** body of the function.
-**
-*******************************************************************************/
-uint8_t GKI_isend_event(uint8_t task_id, uint16_t event) {
- GKI_TRACE_2("GKI_isend_event %d %x", task_id, event);
- GKI_TRACE_2("GKI_isend_event %d %x done", task_id, event);
- return GKI_send_event(task_id, event);
-}
-
-/*******************************************************************************
-**
-** Function GKI_get_taskid
-**
-** Description This function gets the currently running task ID.
-**
-** Returns task ID
-**
-** NOTE The Widcomm upper stack and profiles may run as a single
-*task.
-** If you only have one GKI task, then you can hard-code this
-** function to return a '1'. Otherwise, you should have some
-** OS-specific method to determine the current task.
-**
-*******************************************************************************/
-uint8_t GKI_get_taskid(void) {
- int i;
-
- pthread_t thread_id = pthread_self();
- for (i = 0; i < GKI_MAX_TASKS; i++) {
- if (gki_cb.os.thread_id[i] == thread_id) {
- GKI_TRACE_2("GKI_get_taskid %x %d done", thread_id, i);
- return (i);
- }
- }
-
- GKI_TRACE_1("GKI_get_taskid: thread id = %x, task id = -1", thread_id);
-
- return (-1);
-}
-
-/*******************************************************************************
-**
-** Function GKI_map_taskname
-**
-** Description This function gets the task name of the taskid passed as
-*arg.
-** If GKI_MAX_TASKS is passed as arg the currently running task
-** name is returned
-**
-** Parameters: task_id - (input) The id of the task whose name is being
-** sought. GKI_MAX_TASKS is passed to get the name of the
-** currently running task.
-**
-** Returns pointer to task name
-**
-** NOTE this function needs no customization
-**
-*******************************************************************************/
-int8_t* GKI_map_taskname(uint8_t task_id) {
- GKI_TRACE_1("GKI_map_taskname %d", task_id);
-
- if (task_id < GKI_MAX_TASKS) {
- GKI_TRACE_2("GKI_map_taskname %d %s done", task_id,
- gki_cb.com.OSTName[task_id]);
- return (gki_cb.com.OSTName[task_id]);
- } else if (task_id == GKI_MAX_TASKS) {
- return (gki_cb.com.OSTName[GKI_get_taskid()]);
- } else {
- return (int8_t*)"BAD";
- }
-}
-
-/*******************************************************************************
-**
-** Function GKI_enable
-**
-** Description This function enables interrupts.
-**
-** Returns void
-**
-*******************************************************************************/
-void GKI_enable(void) {
- GKI_TRACE_0("GKI_enable");
- pthread_mutex_unlock(&gki_cb.os.GKI_mutex);
- /* pthread_mutex_xx is nesting save, no need for this: already_disabled =
- * 0; */
- GKI_TRACE_0("Leaving GKI_enable");
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_disable
-**
-** Description This function disables interrupts.
-**
-** Returns void
-**
-*******************************************************************************/
-
-void GKI_disable(void) {
- // GKI_TRACE_0("GKI_disable");
-
- /* pthread_mutex_xx is nesting save, no need for this: if
- (!already_disabled) {
- already_disabled = 1; */
- pthread_mutex_lock(&gki_cb.os.GKI_mutex);
- /* } */
- // GKI_TRACE_0("Leaving GKI_disable");
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_exception
-**
-** Description This function throws an exception.
-** This is normally only called for a nonrecoverable error.
-**
-** Parameters: code - (input) The code for the error
-** msg - (input) The message that has to be logged
-**
-** Returns void
-**
-*******************************************************************************/
-
-void GKI_exception(uint16_t code, char* msg) {
- uint8_t task_id;
- int i = 0;
-
- GKI_TRACE_ERROR_0("GKI_exception(): Task State Table");
-
- for (task_id = 0; task_id < GKI_MAX_TASKS; task_id++) {
- GKI_TRACE_ERROR_3("TASK ID [%d] task name [%s] state [%d]", task_id,
- gki_cb.com.OSTName[task_id],
- gki_cb.com.OSRdyTbl[task_id]);
- }
-
- GKI_TRACE_ERROR_2("GKI_exception %d %s", code, msg);
- GKI_TRACE_ERROR_0(
- "********************************************************************");
- GKI_TRACE_ERROR_2("* GKI_exception(): %d %s", code, msg);
- GKI_TRACE_ERROR_0(
- "********************************************************************");
-
-#if (GKI_DEBUG == TRUE)
- GKI_disable();
-
- if (gki_cb.com.ExceptionCnt < GKI_MAX_EXCEPTION) {
- EXCEPTION_T* pExp;
-
- pExp = &gki_cb.com.Exception[gki_cb.com.ExceptionCnt++];
- pExp->type = code;
- pExp->taskid = GKI_get_taskid();
- strncpy((char*)pExp->msg, msg, GKI_MAX_EXCEPTION_MSGLEN - 1);
- }
-
- GKI_enable();
-#endif
-
- GKI_TRACE_ERROR_2("GKI_exception %d %s done", code, msg);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_get_time_stamp
-**
-** Description This function formats the time into a user area
-**
-** Parameters: tbuf - (output) the address to the memory containing the
-** formatted time
-**
-** Returns the address of the user area containing the formatted time
-** The format of the time is ????
-**
-** NOTE This function is only called by OBEX.
-**
-*******************************************************************************/
-int8_t* GKI_get_time_stamp(int8_t* tbuf) {
- uint32_t ms_time;
- uint32_t s_time;
- uint32_t m_time;
- uint32_t h_time;
- int8_t* p_out = tbuf;
-
- gki_cb.com.OSTicks = times(0);
- ms_time = GKI_TICKS_TO_MS(gki_cb.com.OSTicks);
- s_time = ms_time / 100; /* 100 Ticks per second */
- m_time = s_time / 60;
- h_time = m_time / 60;
-
- ms_time -= s_time * 100;
- s_time -= m_time * 60;
- m_time -= h_time * 60;
-
- *p_out++ = (int8_t)((h_time / 10) + '0');
- *p_out++ = (int8_t)((h_time % 10) + '0');
- *p_out++ = ':';
- *p_out++ = (int8_t)((m_time / 10) + '0');
- *p_out++ = (int8_t)((m_time % 10) + '0');
- *p_out++ = ':';
- *p_out++ = (int8_t)((s_time / 10) + '0');
- *p_out++ = (int8_t)((s_time % 10) + '0');
- *p_out++ = ':';
- *p_out++ = (int8_t)((ms_time / 10) + '0');
- *p_out++ = (int8_t)((ms_time % 10) + '0');
- *p_out++ = ':';
- *p_out = 0;
-
- return (tbuf);
-}
-
-/*******************************************************************************
-**
-** Function GKI_register_mempool
-**
-** Description This function registers a specific memory pool.
-**
-** Parameters: p_mem - (input) pointer to the memory pool
-**
-** Returns void
-**
-** NOTE This function is NOT called by the Widcomm stack and
-** profiles. If your OS has different memory pools, you
-** can tell GKI the pool to use by calling this function.
-**
-*******************************************************************************/
-void GKI_register_mempool(void* p_mem) {
- gki_cb.com.p_user_mempool = p_mem;
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_os_malloc
-**
-** Description This function allocates memory
-**
-** Parameters: size - (input) The size of the memory that has to be
-** allocated
-**
-** Returns the address of the memory allocated, or NULL if failed
-**
-** NOTE This function is called by the Widcomm stack when
-** dynamic memory allocation is used.
-**
-*******************************************************************************/
-void* GKI_os_malloc(uint32_t size) { return (malloc(size)); }
-
-/*******************************************************************************
-**
-** Function GKI_os_free
-**
-** Description This function frees memory
-**
-** Parameters: size - (input) The address of the memory that has to be
-** freed
-**
-** Returns void
-**
-** NOTE This function is NOT called by the Widcomm stack and
-** profiles. It is only called from within GKI if dynamic
-**
-*******************************************************************************/
-void GKI_os_free(void* p_mem) {
- if (p_mem != NULL) free(p_mem);
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_suspend_task()
-**
-** Description This function suspends the task specified in the argument.
-**
-** Parameters: task_id - (input) the id of the task that has to suspended
-**
-** Returns GKI_SUCCESS if all OK, else GKI_FAILURE
-**
-** NOTE This function is NOT called by the Widcomm stack and
-** profiles. If you want to implement task suspension
-*capability,
-** put specific code here.
-**
-*******************************************************************************/
-uint8_t GKI_suspend_task(uint8_t task_id) {
- GKI_TRACE_1("GKI_suspend_task %d - NOT implemented", task_id);
-
- GKI_TRACE_1("GKI_suspend_task %d done", task_id);
-
- return (GKI_SUCCESS);
-}
-
-/*******************************************************************************
-**
-** Function GKI_resume_task()
-**
-** Description This function resumes the task specified in the argument.
-**
-** Parameters: task_id - (input) the id of the task that has to resumed
-**
-** Returns GKI_SUCCESS if all OK
-**
-** NOTE This function is NOT called by the Widcomm stack and
-** profiles. If you want to implement task suspension
-*capability,
-** put specific code here.
-**
-*******************************************************************************/
-uint8_t GKI_resume_task(uint8_t task_id) {
- GKI_TRACE_1("GKI_resume_task %d - NOT implemented", task_id);
-
- GKI_TRACE_1("GKI_resume_task %d done", task_id);
-
- return (GKI_SUCCESS);
-}
-
-/*******************************************************************************
-**
-** Function GKI_exit_task
-**
-** Description This function is called to stop a GKI task.
-**
-** Parameters: task_id - (input) the id of the task that has to be stopped
-**
-** Returns void
-**
-** NOTE This function is NOT called by the Widcomm stack and
-** profiles. If you want to use it in your own implementation,
-** put specific code here to kill a task.
-**
-*******************************************************************************/
-void GKI_exit_task(uint8_t task_id) {
- GKI_disable();
- gki_cb.com.OSRdyTbl[task_id] = TASK_DEAD;
-
- /* Destroy mutex and condition variable objects */
- pthread_mutex_destroy(&gki_cb.os.thread_evt_mutex[task_id]);
- pthread_cond_destroy(&gki_cb.os.thread_evt_cond[task_id]);
- pthread_mutex_destroy(&gki_cb.os.thread_timeout_mutex[task_id]);
- pthread_cond_destroy(&gki_cb.os.thread_timeout_cond[task_id]);
-
- GKI_enable();
-
- // GKI_send_event(task_id, EVENT_MASK(GKI_SHUTDOWN_EVT));
-
- GKI_TRACE_1("GKI_exit_task %d done", task_id);
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_sched_lock
-**
-** Description This function is called by tasks to disable scheduler
-** task context switching.
-**
-** Returns void
-**
-** NOTE This function is NOT called by the Widcomm stack and
-** profiles. If you want to use it in your own implementation,
-** put code here to tell the OS to disable context switching.
-**
-*******************************************************************************/
-void GKI_sched_lock(void) {
- GKI_TRACE_0("GKI_sched_lock");
- GKI_disable();
- return;
-}
-
-/*******************************************************************************
-**
-** Function GKI_sched_unlock
-**
-** Description This function is called by tasks to enable scheduler
-*switching.
-**
-** Returns void
-**
-** NOTE This function is NOT called by the Widcomm stack and
-** profiles. If you want to use it in your own implementation,
-** put code here to tell the OS to re-enable context switching.
-**
-*******************************************************************************/
-void GKI_sched_unlock(void) {
- GKI_TRACE_0("GKI_sched_unlock");
- GKI_enable();
-}
-
-/*******************************************************************************
-**
-** Function GKI_shiftdown
-**
-** Description shift memory down (to make space to insert a record)
-**
-*******************************************************************************/
-void GKI_shiftdown(uint8_t* p_mem, uint32_t len, uint32_t shift_amount) {
- register uint8_t* ps = p_mem + len - 1;
- register uint8_t* pd = ps + shift_amount;
- register uint32_t xx;
-
- for (xx = 0; xx < len; xx++) *pd-- = *ps--;
-}
-
-/*******************************************************************************
-**
-** Function GKI_shiftup
-**
-** Description shift memory up (to delete a record)
-**
-*******************************************************************************/
-void GKI_shiftup(uint8_t* p_dest, uint8_t* p_src, uint32_t len) {
- register uint8_t* ps = p_src;
- register uint8_t* pd = p_dest;
- register uint32_t xx;
-
- for (xx = 0; xx < len; xx++) *pd++ = *ps++;
-}
diff --git a/halimpl/bcm2079x/hal/hal/nfc_hal_api.c b/halimpl/bcm2079x/hal/hal/nfc_hal_api.c
deleted file mode 100644
index b40bcc4..0000000
--- a/halimpl/bcm2079x/hal/hal/nfc_hal_api.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2012-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * NFC Hardware Abstraction Layer API: Implementation for Broadcom NFC
- * controllers
- *
- ******************************************************************************/
-#include "nfc_hal_api.h"
-#include <string.h>
-#include "gki.h"
-#include "nfc_hal_int.h"
-#include "nfc_hal_target.h"
-
-/*******************************************************************************
-** NFC_HAL_TASK declarations
-*******************************************************************************/
-#define NFC_HAL_TASK_STR ((int8_t*)"NFC_HAL_TASK")
-#define NFC_HAL_TASK_STACK_SIZE 0x400
-uint32_t nfc_hal_task_stack[(NFC_HAL_TASK_STACK_SIZE + 3) / 4];
-
-/*******************************************************************************
-**
-** Function HAL_NfcInitialize
-**
-** Description Called when HAL library is loaded.
-**
-** Initialize GKI and start the HCIT task
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcInitialize(void) {
- /* Initialize HAL control block */
- nfc_hal_main_init();
-
- HAL_TRACE_API1("HAL_NfcInitialize (): NFC_HAL_TASK id=%i", NFC_HAL_TASK);
-
-#ifndef NFC_HAL_SHARED_GKI
- /* Initialize GKI (not needed if using shared NFC/HAL GKI resources) */
- GKI_init();
- GKI_enable();
-#endif
-
- /* Create the NCI transport task */
- GKI_create_task(
- (TASKPTR)nfc_hal_main_task, NFC_HAL_TASK, NFC_HAL_TASK_STR,
- (uint16_t*)((uint8_t*)nfc_hal_task_stack + NFC_HAL_TASK_STACK_SIZE),
- sizeof(nfc_hal_task_stack), NULL, NULL);
-
-#ifndef NFC_HAL_SHARED_GKI
- /* Start GKI scheduler (not needed if using shared NFC/HAL GKI resources) */
- GKI_run(0);
-#endif
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcTerminate
-**
-** Description Called to terminate NFC HAL
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcTerminate(void) { HAL_TRACE_API0("HAL_NfcTerminate ()"); }
-
-/*******************************************************************************
-**
-** Function HAL_NfcOpen
-**
-** Description Open transport and intialize the NFCC, and
-** Register callback for HAL event notifications,
-**
-** HAL_OPEN_CPLT_EVT will notify when operation is complete.
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcOpen(tHAL_NFC_CBACK* p_hal_cback,
- tHAL_NFC_DATA_CBACK* p_data_cback) {
- HAL_TRACE_API0("HAL_NfcOpen ()");
-
- /* Only handle if HAL is not opened (stack cback is NULL) */
- if (p_hal_cback) {
- nfc_hal_dm_init();
- nfc_hal_cb.p_stack_cback = p_hal_cback;
- nfc_hal_cb.p_data_cback = p_data_cback;
-
- /* Send startup event to NFC_HAL_TASK */
- GKI_send_event(NFC_HAL_TASK, NFC_HAL_TASK_EVT_INITIALIZE);
- }
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcClose
-**
-** Description Prepare for shutdown. A HAL_CLOSE_DONE_EVENT will be
-** reported when complete.
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcClose(void) {
- HAL_TRACE_API0("HAL_NfcClose ()");
-
- /* Only handle if HAL is opened (stack cback is not-NULL) */
- if (nfc_hal_cb.p_stack_cback) {
- /* Send shutdown event to NFC_HAL_TASK */
- GKI_send_event(NFC_HAL_TASK, NFC_HAL_TASK_EVT_TERMINATE);
- }
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcCoreInitialized
-**
-** Description Called after the CORE_INIT_RSP is received from the NFCC.
-** At this time, the HAL can do any chip-specific
-*configuration,
-** and when finished signal the libnfc-nci with event
-** HAL_POST_INIT_DONE.
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcCoreInitialized(uint16_t data_len,
- uint8_t* p_core_init_rsp_params) {
- NFC_HDR* p_msg;
- uint16_t size;
-
- HAL_TRACE_API0("HAL_NfcCoreInitialized ()");
-
- /* NCI payload len + NCI header size */
- size = p_core_init_rsp_params[2] + NCI_MSG_HDR_SIZE;
-
- /* Send message to NFC_HAL_TASK */
- p_msg = (NFC_HDR*)GKI_getbuf((uint16_t)(size + NFC_HDR_SIZE));
- if (p_msg != NULL) {
- p_msg->event = NFC_HAL_EVT_POST_CORE_RESET;
- p_msg->offset = 0;
- p_msg->len = size;
- p_msg->layer_specific = 0;
- memcpy((uint8_t*)(p_msg + 1) + p_msg->offset, p_core_init_rsp_params, size);
-
- GKI_send_msg(NFC_HAL_TASK, NFC_HAL_TASK_MBOX, p_msg);
- }
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcWrite
-**
-** Description Send an NCI control message or data packet to the
-** transport. If an NCI command message exceeds the transport
-** size, HAL is responsible for fragmenting it, Data packets
-** must be of the correct size.
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcWrite(uint16_t data_len, uint8_t* p_data) {
- NFC_HDR* p_msg;
- uint8_t mt;
-
- HAL_TRACE_API0("HAL_NfcWrite ()");
-
- if (data_len > (NCI_MAX_CTRL_SIZE + NCI_MSG_HDR_SIZE)) {
- HAL_TRACE_ERROR1("HAL_NfcWrite (): too many bytes (%d)", data_len);
- return;
- }
-
- /* Send message to NFC_HAL_TASK */
- p_msg = (NFC_HDR*)GKI_getpoolbuf(NFC_HAL_NCI_POOL_ID);
- if (p_msg != NULL) {
- p_msg->event = NFC_HAL_EVT_TO_NFC_NCI;
- p_msg->offset = NFC_HAL_NCI_MSG_OFFSET_SIZE;
- p_msg->len = data_len;
- memcpy((uint8_t*)(p_msg + 1) + p_msg->offset, p_data, data_len);
-
- /* Check if message is a command or data */
- mt = (*(p_data)&NCI_MT_MASK) >> NCI_MT_SHIFT;
- p_msg->layer_specific = (mt == NCI_MT_CMD) ? NFC_HAL_WAIT_RSP_CMD : 0;
-
- GKI_send_msg(NFC_HAL_TASK, NFC_HAL_TASK_MBOX, p_msg);
- }
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcPreDiscover
-**
-** Description Perform any vendor-specific pre-discovery actions (if
-*needed)
-** If any actions were performed TRUE will be returned, and
-** HAL_PRE_DISCOVER_DONE_EVENT will notify when actions are
-** completed.
-**
-** Returns TRUE if vendor-specific pre-discovery actions initialized
-** FALSE if no vendor-specific pre-discovery actions are
-*needed.
-**
-*******************************************************************************/
-bool HAL_NfcPreDiscover(void) {
- bool status = false;
-
- NFC_HDR* p_msg;
-
- HAL_TRACE_API0("HAL_NfcPreDiscover ()");
- if (nfc_hal_cb.pre_discover_done == false) {
- nfc_hal_cb.pre_discover_done = true;
- if (p_nfc_hal_pre_discover_cfg && *p_nfc_hal_pre_discover_cfg) {
- status = true;
- /* Send message to NFC_HAL_TASK */
- p_msg = (NFC_HDR*)GKI_getpoolbuf(NFC_HAL_NCI_POOL_ID);
- if (p_msg != NULL) {
- p_msg->event = NFC_HAL_EVT_PRE_DISCOVER;
- GKI_send_msg(NFC_HAL_TASK, NFC_HAL_TASK_MBOX, p_msg);
- }
- }
- }
-
- HAL_TRACE_API1("HAL_NfcPreDiscover status:%d", status);
- return status;
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcControlGranted
-**
-** Description Grant control to HAL control for sending NCI commands.
-**
-** Call in response to HAL_REQUEST_CONTROL_EVENT.
-**
-** Must only be called when there are no NCI commands pending.
-**
-** HAL_RELEASE_CONTROL_EVENT will notify when HAL no longer
-** needs control of NCI.
-**
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcControlGranted(void) {
- NFC_HDR* p_msg;
- HAL_TRACE_API0("HAL_NfcControlGranted ()");
-
- /* Send message to NFC_HAL_TASK */
- p_msg = (NFC_HDR*)GKI_getpoolbuf(NFC_HAL_NCI_POOL_ID);
- if (p_msg != NULL) {
- p_msg->event = NFC_HAL_EVT_CONTROL_GRANTED;
- GKI_send_msg(NFC_HAL_TASK, NFC_HAL_TASK_MBOX, p_msg);
- }
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcPowerCycle
-**
-** Description Restart NFCC by power cyle
-**
-** HAL_OPEN_CPLT_EVT will notify when operation is complete.
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcPowerCycle(void) {
- HAL_TRACE_API0("HAL_NfcPowerCycle ()");
-
- /* Only handle if HAL is opened (stack cback is not-NULL) */
- if (nfc_hal_cb.p_stack_cback) {
- /* Send power cycle event to NFC_HAL_TASK */
- GKI_send_event(NFC_HAL_TASK, NFC_HAL_TASK_EVT_POWER_CYCLE);
- }
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcGetMaxNfcee
-**
-** Description Retrieve the maximum number of NFCEEs supported by NFCC
-**
-** Returns the maximum number of NFCEEs supported by NFCC
-**
-*******************************************************************************/
-uint8_t HAL_NfcGetMaxNfcee(void) {
- HAL_TRACE_API1("HAL_NfcGetMaxNfcee: %d", nfc_hal_cb.max_ee);
- return nfc_hal_cb.max_ee;
-}
diff --git a/halimpl/bcm2079x/hal/hal/nfc_hal_dm.c b/halimpl/bcm2079x/hal/hal/nfc_hal_dm.c
deleted file mode 100644
index b2fec1b..0000000
--- a/halimpl/bcm2079x/hal/hal/nfc_hal_dm.c
+++ /dev/null
@@ -1,1331 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2012-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Vendor-specific handler for DM events
- *
- ******************************************************************************/
-#include <string.h>
-#include "nfc_hal_int.h"
-#include "nfc_hal_post_reset.h"
-#include "upio.h"
-#include "userial.h"
-
-/*****************************************************************************
-** Constants and types
-*****************************************************************************/
-
-#define NFC_HAL_I93_RW_CFG_LEN (5)
-#define NFC_HAL_I93_RW_CFG_PARAM_LEN (3)
-#define NFC_HAL_I93_AFI (0)
-#define NFC_HAL_I93_ENABLE_SMART_POLL (1)
-
-static uint8_t nfc_hal_dm_i93_rw_cfg[NFC_HAL_I93_RW_CFG_LEN] = {
- NCI_PARAM_ID_I93_DATARATE, NFC_HAL_I93_RW_CFG_PARAM_LEN,
- NFC_HAL_I93_FLAG_DATA_RATE, /* Bit0:Sub carrier, Bit1:Data rate,
- Bit4:Enable/Disable AFI */
- NFC_HAL_I93_AFI, /* AFI if Bit 4 is set in the flag byte */
- NFC_HAL_I93_ENABLE_SMART_POLL /* Bit0:Enable/Disable smart poll */
-};
-
-static uint8_t nfc_hal_dm_set_fw_fsm_cmd[NCI_MSG_HDR_SIZE + 1] = {
- NCI_MTS_CMD | NCI_GID_PROP, NCI_MSG_SET_FWFSM, 0x01, 0x00,
-};
-#define NCI_SET_FWFSM_OFFSET_ENABLE 3
-
-/* length of parameters in XTAL_INDEX CMD */
-#define NCI_PROP_PARAM_SIZE_XTAL_INDEX 3
-#ifndef NCI_PROP_PARAM_MAX_SIZE_XTAL_INDEX
-#define NCI_PROP_PARAM_MAX_SIZE_XTAL_INDEX 20
-#endif
-
-const uint8_t nfc_hal_dm_get_build_info_cmd[NCI_MSG_HDR_SIZE] = {
- NCI_MTS_CMD | NCI_GID_PROP, NCI_MSG_GET_BUILD_INFO, 0x00};
-#define NCI_BUILD_INFO_OFFSET_HWID 25 /* HW ID offset in build info RSP */
-
-const uint8_t nfc_hal_dm_get_patch_version_cmd[NCI_MSG_HDR_SIZE] = {
- NCI_MTS_CMD | NCI_GID_PROP, NCI_MSG_GET_PATCH_VERSION, 0x00};
-/* Length of patch version string in PATCH_INFO */
-#define NCI_PATCH_INFO_VERSION_LEN 16
-
-/*****************************************************************************
-** Extern function prototypes
-*****************************************************************************/
-extern uint8_t* p_nfc_hal_dm_lptd_cfg;
-extern uint8_t* p_nfc_hal_dm_pll_325_cfg;
-extern uint8_t* p_nfc_hal_dm_start_up_cfg;
-extern uint8_t* p_nfc_hal_dm_start_up_vsc_cfg;
-extern tNFC_HAL_CFG* p_nfc_hal_cfg;
-extern tNFC_HAL_DM_PRE_SET_MEM* p_nfc_hal_dm_pre_set_mem;
-
-/*****************************************************************************
-** Local function prototypes
-*****************************************************************************/
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_set_config
-**
-** Description Send NCI config items to NFCC
-**
-** Returns tHAL_NFC_STATUS
-**
-*******************************************************************************/
-tHAL_NFC_STATUS nfc_hal_dm_set_config(uint8_t tlv_size, uint8_t* p_param_tlvs,
- tNFC_HAL_NCI_CBACK* p_cback) {
- uint8_t *p_buff, *p;
- uint8_t num_param = 0, param_len, rem_len, *p_tlv;
- uint16_t cmd_len = NCI_MSG_HDR_SIZE + tlv_size + 1;
- tHAL_NFC_STATUS status = HAL_NFC_STATUS_FAILED;
-
- if ((tlv_size == 0) || (p_param_tlvs == NULL)) {
- return status;
- }
-
- p_buff = (uint8_t*)GKI_getbuf((uint16_t)(NCI_MSG_HDR_SIZE + tlv_size));
- if (p_buff != NULL) {
- p = p_buff;
-
- NCI_MSG_BLD_HDR0(p, NCI_MT_CMD, NCI_GID_CORE);
- NCI_MSG_BLD_HDR1(p, NCI_MSG_CORE_SET_CONFIG);
- UINT8_TO_STREAM(p, (uint8_t)(tlv_size + 1));
-
- rem_len = tlv_size;
- p_tlv = p_param_tlvs;
- while (rem_len > 1) {
- num_param++; /* number of params */
-
- p_tlv++; /* param type */
- param_len = *p_tlv++; /* param length */
-
- rem_len -= 2; /* param type and length */
- if (rem_len >= param_len) {
- rem_len -= param_len;
- p_tlv += param_len; /* next param_type */
-
- if (rem_len == 0) {
- status = HAL_NFC_STATUS_OK;
- break;
- }
- } else {
- /* error found */
- break;
- }
- }
-
- if (status == HAL_NFC_STATUS_OK) {
- UINT8_TO_STREAM(p, num_param);
- ARRAY_TO_STREAM(p, p_param_tlvs, tlv_size);
-
- nfc_hal_dm_send_nci_cmd(p_buff, cmd_len, p_cback);
- } else {
- HAL_TRACE_ERROR0("nfc_hal_dm_set_config ():Bad TLV");
- }
-
- GKI_freebuf(p_buff);
- }
-
- return status;
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_set_fw_fsm
-**
-** Description Enable or disable FW FSM
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_set_fw_fsm(bool enable, tNFC_HAL_NCI_CBACK* p_cback) {
- if (enable)
- nfc_hal_dm_set_fw_fsm_cmd[NCI_SET_FWFSM_OFFSET_ENABLE] =
- 0x01; /* Enable, default is disabled */
- else
- nfc_hal_dm_set_fw_fsm_cmd[NCI_SET_FWFSM_OFFSET_ENABLE] = 0x00; /* Disable */
-
- nfc_hal_dm_send_nci_cmd(nfc_hal_dm_set_fw_fsm_cmd, NCI_MSG_HDR_SIZE + 1,
- p_cback);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_config_nfcc_cback
-**
-** Description Callback for NCI vendor specific command complete
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_config_nfcc_cback(tNFC_HAL_NCI_EVT event, uint16_t data_len,
- uint8_t* p_data) {
- if (nfc_hal_cb.dev_cb.next_dm_config == NFC_HAL_DM_CONFIG_NONE) {
- nfc_hal_hci_enable();
- } else {
- nfc_hal_dm_config_nfcc();
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_send_startup_vsc
-**
-** Description Send VS command before NFA start-up
-**
-** Returns None
-**
-*******************************************************************************/
-void nfc_hal_dm_send_startup_vsc(void) {
- uint8_t *p, *p_end;
- uint16_t len;
-
- HAL_TRACE_DEBUG0("nfc_hal_dm_send_startup_vsc ()");
-
- /* VSC must have NCI header at least */
- if (nfc_hal_cb.dev_cb.next_startup_vsc + NCI_MSG_HDR_SIZE - 1 <=
- *p_nfc_hal_dm_start_up_vsc_cfg) {
- p = p_nfc_hal_dm_start_up_vsc_cfg + nfc_hal_cb.dev_cb.next_startup_vsc;
- len = *(p + 2);
- p_end = p + NCI_MSG_HDR_SIZE - 1 + len;
-
- if (p_end <=
- p_nfc_hal_dm_start_up_vsc_cfg + *p_nfc_hal_dm_start_up_vsc_cfg) {
- /* move to next VSC */
- nfc_hal_cb.dev_cb.next_startup_vsc += NCI_MSG_HDR_SIZE + len;
-
- /* if this is last VSC */
- if (p_end ==
- p_nfc_hal_dm_start_up_vsc_cfg + *p_nfc_hal_dm_start_up_vsc_cfg)
- nfc_hal_cb.dev_cb.next_dm_config = NFC_HAL_DM_CONFIG_NONE;
-
- nfc_hal_dm_send_nci_cmd(p, (uint16_t)(NCI_MSG_HDR_SIZE + len),
- nfc_hal_dm_config_nfcc_cback);
- return;
- }
- }
-
- HAL_TRACE_ERROR0("nfc_hal_dm_send_startup_vsc (): Bad start-up VSC");
-
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_cb.p_stack_cback(HAL_NFC_POST_INIT_CPLT_EVT, HAL_NFC_STATUS_FAILED);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_config_nfcc
-**
-** Description Send VS config before NFA start-up
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_config_nfcc(void) {
- HAL_TRACE_DEBUG1("nfc_hal_dm_config_nfcc (): next_dm_config = %d",
- nfc_hal_cb.dev_cb.next_dm_config);
-
- if ((p_nfc_hal_dm_lptd_cfg[0]) &&
- (nfc_hal_cb.dev_cb.next_dm_config <= NFC_HAL_DM_CONFIG_LPTD)) {
- nfc_hal_cb.dev_cb.next_dm_config = NFC_HAL_DM_CONFIG_PLL_325;
-
- if (nfc_hal_dm_set_config(
- p_nfc_hal_dm_lptd_cfg[0], &p_nfc_hal_dm_lptd_cfg[1],
- nfc_hal_dm_config_nfcc_cback) == HAL_NFC_STATUS_OK) {
- return;
- } else {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_cb.p_stack_cback(HAL_NFC_POST_INIT_CPLT_EVT,
- HAL_NFC_STATUS_FAILED);
- return;
- }
- }
-
- if ((p_nfc_hal_dm_pll_325_cfg) &&
- (nfc_hal_cb.dev_cb.next_dm_config <= NFC_HAL_DM_CONFIG_PLL_325)) {
- nfc_hal_cb.dev_cb.next_dm_config = NFC_HAL_DM_CONFIG_START_UP;
-
- if (nfc_hal_dm_set_config(
- NFC_HAL_PLL_325_SETCONFIG_PARAM_LEN, p_nfc_hal_dm_pll_325_cfg,
- nfc_hal_dm_config_nfcc_cback) == HAL_NFC_STATUS_OK) {
- return;
- } else {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_cb.p_stack_cback(HAL_NFC_POST_INIT_CPLT_EVT,
- HAL_NFC_STATUS_FAILED);
- return;
- }
- }
-
- if ((p_nfc_hal_dm_start_up_cfg[0]) &&
- (nfc_hal_cb.dev_cb.next_dm_config <= NFC_HAL_DM_CONFIG_START_UP)) {
- nfc_hal_cb.dev_cb.next_dm_config = NFC_HAL_DM_CONFIG_I93_DATA_RATE;
- if (nfc_hal_dm_set_config(
- p_nfc_hal_dm_start_up_cfg[0], &p_nfc_hal_dm_start_up_cfg[1],
- nfc_hal_dm_config_nfcc_cback) == HAL_NFC_STATUS_OK) {
- return;
- } else {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_cb.p_stack_cback(HAL_NFC_POST_INIT_CPLT_EVT,
- HAL_NFC_STATUS_FAILED);
- return;
- }
- }
-
-#if (NFC_HAL_I93_FLAG_DATA_RATE == NFC_HAL_I93_FLAG_DATA_RATE_HIGH)
- if (nfc_hal_cb.dev_cb.next_dm_config <= NFC_HAL_DM_CONFIG_I93_DATA_RATE) {
- nfc_hal_cb.dev_cb.next_dm_config = NFC_HAL_DM_CONFIG_FW_FSM;
- if (nfc_hal_dm_set_config(NFC_HAL_I93_RW_CFG_LEN, nfc_hal_dm_i93_rw_cfg,
- nfc_hal_dm_config_nfcc_cback) ==
- HAL_NFC_STATUS_OK) {
- return;
- } else {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_cb.p_stack_cback(HAL_NFC_POST_INIT_CPLT_EVT,
- HAL_NFC_STATUS_FAILED);
- return;
- }
- }
-#endif
-
- /* FW FSM is disabled as default in NFCC */
- if (nfc_hal_cb.dev_cb.next_dm_config <= NFC_HAL_DM_CONFIG_FW_FSM) {
- nfc_hal_cb.dev_cb.next_dm_config = NFC_HAL_DM_CONFIG_START_UP_VSC;
- nfc_hal_dm_set_fw_fsm(NFC_HAL_DM_MULTI_TECH_RESP,
- nfc_hal_dm_config_nfcc_cback);
- return;
- }
-
- if (nfc_hal_cb.dev_cb.next_dm_config <= NFC_HAL_DM_CONFIG_START_UP_VSC) {
- if (p_nfc_hal_dm_start_up_vsc_cfg && *p_nfc_hal_dm_start_up_vsc_cfg) {
- nfc_hal_dm_send_startup_vsc();
- return;
- }
- }
-
- /* nothing to config */
- nfc_hal_cb.dev_cb.next_dm_config = NFC_HAL_DM_CONFIG_NONE;
- nfc_hal_dm_config_nfcc_cback(0, 0, NULL);
-}
-
-/*******************************************************************************
-**
-** Function: nfc_hal_dm_get_xtal_index
-**
-** Description: Return Xtal index and frequency
-**
-** Returns: tNFC_HAL_XTAL_INDEX
-**
-*******************************************************************************/
-tNFC_HAL_XTAL_INDEX nfc_hal_dm_get_xtal_index(uint32_t brcm_hw_id,
- uint16_t* p_xtal_freq) {
- uint8_t xx;
-
- HAL_TRACE_DEBUG1("nfc_hal_dm_get_xtal_index() brcm_hw_id:0x%x", brcm_hw_id);
-
- for (xx = 0; xx < nfc_post_reset_cb.dev_init_config.num_xtal_cfg; xx++) {
- if ((brcm_hw_id & BRCM_NFC_GEN_MASK) ==
- nfc_post_reset_cb.dev_init_config.xtal_cfg[xx].brcm_hw_id) {
- *p_xtal_freq = nfc_post_reset_cb.dev_init_config.xtal_cfg[xx].xtal_freq;
- return (nfc_post_reset_cb.dev_init_config.xtal_cfg[xx].xtal_index);
- }
- }
-
- /* if not found */
- *p_xtal_freq = 0;
- return (NFC_HAL_XTAL_INDEX_MAX);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_set_xtal_freq_index
-**
-** Description Set crystal frequency index
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_set_xtal_freq_index(void) {
- uint8_t nci_brcm_xtal_index_cmd[NCI_MSG_HDR_SIZE +
- NCI_PROP_PARAM_MAX_SIZE_XTAL_INDEX];
- uint8_t* p;
- tNFC_HAL_XTAL_INDEX xtal_index;
- uint16_t xtal_freq;
- uint8_t cmd_len = NCI_PROP_PARAM_SIZE_XTAL_INDEX;
- extern uint8_t* p_nfc_hal_dm_xtal_params_cfg;
-
- HAL_TRACE_DEBUG1("nfc_hal_dm_set_xtal_freq_index (): brcm_hw_id = 0x%x",
- nfc_hal_cb.dev_cb.brcm_hw_id);
-
- xtal_index =
- nfc_hal_dm_get_xtal_index(nfc_hal_cb.dev_cb.brcm_hw_id, &xtal_freq);
- if ((xtal_index == NFC_HAL_XTAL_INDEX_SPECIAL) &&
- (p_nfc_hal_dm_xtal_params_cfg)) {
- cmd_len +=
- p_nfc_hal_dm_xtal_params_cfg[0]; /* [0] is the length of extra params */
- }
-
- p = nci_brcm_xtal_index_cmd;
- UINT8_TO_STREAM(p, (NCI_MTS_CMD | NCI_GID_PROP));
- UINT8_TO_STREAM(p, NCI_MSG_GET_XTAL_INDEX_FROM_DH);
- UINT8_TO_STREAM(p, cmd_len);
- UINT8_TO_STREAM(p, xtal_index);
- UINT16_TO_STREAM(p, xtal_freq);
- if (cmd_len > NCI_PROP_PARAM_SIZE_XTAL_INDEX) {
- memcpy(p, &p_nfc_hal_dm_xtal_params_cfg[1],
- p_nfc_hal_dm_xtal_params_cfg[0]);
- }
-
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_W4_XTAL_SET);
-
- nfc_hal_dm_send_nci_cmd(nci_brcm_xtal_index_cmd, NCI_MSG_HDR_SIZE + cmd_len,
- NULL);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_set_power_level_zero
-**
-** Description set power level to 0
-**
-** Returns None
-**
-*******************************************************************************/
-void nfc_hal_dm_set_power_level_zero(void) {
- uint8_t
- nci_brcm_set_pwr_level_cmd[NCI_MSG_HDR_SIZE + NCI_PARAM_LEN_POWER_LEVEL];
- uint8_t* p;
- uint8_t cmd_len = NCI_PARAM_LEN_POWER_LEVEL;
-
- p = nci_brcm_set_pwr_level_cmd;
- UINT8_TO_STREAM(p, (NCI_MTS_CMD | NCI_GID_PROP));
- UINT8_TO_STREAM(p, NCI_MSG_POWER_LEVEL);
- UINT8_TO_STREAM(p, NCI_PARAM_LEN_POWER_LEVEL);
- memset(p, 0, NCI_PARAM_LEN_POWER_LEVEL);
-
- nfc_hal_dm_send_nci_cmd(nci_brcm_set_pwr_level_cmd,
- NCI_MSG_HDR_SIZE + cmd_len,
- nfc_hal_main_exit_op_done);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_send_get_build_info_cmd
-**
-** Description Send NCI_MSG_GET_BUILD_INFO CMD
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_send_get_build_info_cmd(void) {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_W4_BUILD_INFO);
-
- /* get build information to find out HW */
- nfc_hal_dm_send_nci_cmd(nfc_hal_dm_get_build_info_cmd, NCI_MSG_HDR_SIZE,
- NULL);
-}
-/*******************************************************************************
-**
-** Function: nfc_hal_dm_adjust_hw_id
-**
-** Description: The hw_id of certain chips are shifted by 8 bits.
-** Adjust the hw_id before processing.
-**
-** Returns: Nothing
-**
-*******************************************************************************/
-static uint32_t nfc_hal_dm_adjust_hw_id(uint32_t hw_id) {
- if ((hw_id & 0xF0000000) == 0)
- hw_id <<= 4; /* shift hw_id by 4 bits to align w the format of most chips */
- return hw_id;
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_check_xtal
-**
-** Description check if need to send xtal command.
-** If not, proceed to next step get_patch_version.
-**
-** Returns void
-**
-*******************************************************************************/
-static void nfc_hal_dm_check_xtal(void) {
- uint16_t xtal_freq;
- tNFC_HAL_XTAL_INDEX xtal_index;
-
- /* if NFCC needs to set Xtal frequency before getting patch version */
- xtal_index =
- nfc_hal_dm_get_xtal_index(nfc_hal_cb.dev_cb.brcm_hw_id, &xtal_freq);
- if ((xtal_index < NFC_HAL_XTAL_INDEX_MAX) ||
- (xtal_index == NFC_HAL_XTAL_INDEX_SPECIAL)) {
- {
- /* set Xtal index before getting patch version */
- nfc_hal_dm_set_xtal_freq_index();
- return;
- }
- }
-
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_W4_PATCH_INFO);
-
- nfc_hal_dm_send_nci_cmd(nfc_hal_dm_get_patch_version_cmd, NCI_MSG_HDR_SIZE,
- NULL);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_pre_set_mem_cback
-**
-** Description This is pre-set mem complete callback.
-**
-** Returns void
-**
-*******************************************************************************/
-static void nfc_hal_dm_pre_set_mem_cback(tNFC_HAL_BTVSC_CPLT* pData) {
- uint8_t status = pData->p_param_buf[0];
-
- HAL_TRACE_DEBUG1("nfc_hal_dm_pre_set_mem_cback: %d", status);
- /* if it is completed */
- if (status == HCI_SUCCESS) {
- if (!nfc_hal_dm_check_pre_set_mem()) {
- return;
- }
- }
- nfc_hal_dm_check_xtal();
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_check_pre_set_mem
-**
-** Description Check if need to send the command.
-**
-** Returns TRUE if done.
-**
-*******************************************************************************/
-bool nfc_hal_dm_check_pre_set_mem(void) {
- uint8_t cmd[NFC_HAL_BT_HCI_CMD_HDR_SIZE + HCI_BRCM_PRE_SET_MEM_LENGTH];
- uint8_t* p;
- uint32_t addr = 0;
-
- if (p_nfc_hal_dm_pre_set_mem)
- addr = p_nfc_hal_dm_pre_set_mem[nfc_hal_cb.pre_set_mem_idx].addr;
- HAL_TRACE_DEBUG2("nfc_hal_dm_check_pre_set_mem: %d/0x%x",
- nfc_hal_cb.pre_set_mem_idx, addr);
- if (addr == 0) {
- return true;
- }
- p = cmd;
-
- /* Add the command */
- UINT16_TO_STREAM(p, HCI_BRCM_PRE_SET_MEM);
- UINT8_TO_STREAM(p, HCI_BRCM_PRE_SET_MEM_LENGTH);
-
- UINT8_TO_STREAM(p, HCI_BRCM_PRE_SET_MEM_TYPE);
- UINT32_TO_STREAM(p, addr);
- UINT8_TO_STREAM(p, 0);
- UINT32_TO_STREAM(p,
- p_nfc_hal_dm_pre_set_mem[nfc_hal_cb.pre_set_mem_idx].data);
- nfc_hal_cb.pre_set_mem_idx++;
-
- nfc_hal_dm_send_bt_cmd(
- cmd, NFC_HAL_BT_HCI_CMD_HDR_SIZE + HCI_BRCM_PRE_SET_MEM_LENGTH,
- nfc_hal_dm_pre_set_mem_cback);
- return false;
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_got_vs_rsp
-**
-** Description Received VS RSP. Clean up control block to allow next NCI
-*cmd
-**
-** Returns void
-**
-*******************************************************************************/
-tNFC_HAL_NCI_CBACK* nfc_hal_dm_got_vs_rsp(void) {
- tNFC_HAL_NCI_CBACK* p_cback = NULL;
- nfc_hal_cb.ncit_cb.nci_wait_rsp = NFC_HAL_WAIT_RSP_NONE;
- p_cback = (tNFC_HAL_NCI_CBACK*)nfc_hal_cb.ncit_cb.p_vsc_cback;
- nfc_hal_cb.ncit_cb.p_vsc_cback = NULL;
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.ncit_cb.nci_wait_rsp_timer);
- return p_cback;
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_proc_msg_during_init
-**
-** Description Process NCI message while initializing NFCC
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_proc_msg_during_init(NFC_HDR* p_msg) {
- uint8_t* p;
- uint8_t reset_reason, reset_type;
- uint8_t mt, pbf, gid, op_code;
- uint8_t *p_old, old_gid, old_oid, old_mt;
- uint8_t u8;
- tNFC_HAL_NCI_CBACK* p_cback = NULL;
- uint8_t chipverlen;
- uint8_t chipverstr[NCI_SPD_HEADER_CHIPVER_LEN];
- uint32_t hw_id = 0;
-
- HAL_TRACE_DEBUG1("nfc_hal_dm_proc_msg_during_init(): init state:%d",
- nfc_hal_cb.dev_cb.initializing_state);
-
- p = (uint8_t*)(p_msg + 1) + p_msg->offset;
-
- NCI_MSG_PRS_HDR0(p, mt, pbf, gid);
- NCI_MSG_PRS_HDR1(p, op_code);
-
- /* check if waiting for this response */
- if ((nfc_hal_cb.ncit_cb.nci_wait_rsp == NFC_HAL_WAIT_RSP_CMD) ||
- (nfc_hal_cb.ncit_cb.nci_wait_rsp == NFC_HAL_WAIT_RSP_VSC)) {
- if (mt == NCI_MT_RSP) {
- p_old = nfc_hal_cb.ncit_cb.last_hdr;
- NCI_MSG_PRS_HDR0(p_old, old_mt, pbf, old_gid);
- old_oid = ((*p_old) & NCI_OID_MASK);
- /* make sure this is the RSP we are waiting for before updating the
- * command window */
- if ((old_gid == gid) && (old_oid == op_code)) {
- nfc_hal_cb.ncit_cb.nci_wait_rsp = NFC_HAL_WAIT_RSP_NONE;
- p_cback = (tNFC_HAL_NCI_CBACK*)nfc_hal_cb.ncit_cb.p_vsc_cback;
- nfc_hal_cb.ncit_cb.p_vsc_cback = NULL;
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.ncit_cb.nci_wait_rsp_timer);
- }
- }
- }
-
- if (gid == NCI_GID_CORE) {
- if (op_code == NCI_MSG_CORE_RESET) {
- if (mt == NCI_MT_NTF) {
- if ((nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_NFCC_ENABLE) ||
- (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_POST_XTAL_SET)) {
- /*
- ** Core reset ntf in the following cases;
- ** 1) after power up (raising REG_PU)
- ** 2) after setting xtal index
- ** Start pre-initializing NFCC
- */
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.timer);
- nfc_hal_dm_pre_init_nfcc();
- } else {
- /* Core reset ntf after post-patch download, Call reset notification
- * callback */
- p++; /* Skip over param len */
- STREAM_TO_UINT8(reset_reason, p);
- STREAM_TO_UINT8(reset_type, p);
- nfc_hal_prm_spd_reset_ntf(reset_reason, reset_type);
- }
- }
- } else if (p_cback) {
- (*p_cback)((tNFC_HAL_NCI_EVT)(op_code), p_msg->len,
- (uint8_t*)(p_msg + 1) + p_msg->offset);
- }
- } else if (gid == NCI_GID_PROP) /* this is for download patch */
- {
- if (mt == NCI_MT_NTF)
- op_code |= NCI_NTF_BIT;
- else
- op_code |= NCI_RSP_BIT;
-
- if (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_XTAL_SET) {
- if (op_code == (NCI_RSP_BIT | NCI_MSG_GET_XTAL_INDEX_FROM_DH)) {
- /* start timer in case that NFCC doesn't send RESET NTF after loading
- * patch from NVM */
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_POST_XTAL_SET);
-
- nfc_hal_main_start_quick_timer(
- &nfc_hal_cb.timer, NFC_HAL_TTYPE_NFCC_ENABLE,
- ((p_nfc_hal_cfg->nfc_hal_post_xtal_timeout) *
- QUICK_TIMER_TICKS_PER_SEC) /
- 1000);
- }
- } else if ((op_code == NFC_VS_GET_BUILD_INFO_EVT) &&
- (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_BUILD_INFO)) {
- p += NCI_BUILD_INFO_OFFSET_HWID;
-
- STREAM_TO_UINT32(hw_id, p);
- nfc_hal_cb.dev_cb.brcm_hw_id = nfc_hal_dm_adjust_hw_id(hw_id);
- HAL_TRACE_DEBUG2("brcm_hw_id: 0x%x -> 0x%x", hw_id,
- nfc_hal_cb.dev_cb.brcm_hw_id);
-
- STREAM_TO_UINT8(chipverlen, p);
- memset(chipverstr, 0, NCI_SPD_HEADER_CHIPVER_LEN);
-
- STREAM_TO_ARRAY(chipverstr, p, chipverlen);
-
- /* If chip is not 20791 and 43341, set flag to send the "Disable" VSC */
- if (((nfc_hal_cb.dev_cb.brcm_hw_id & BRCM_NFC_GEN_MASK) !=
- BRCM_NFC_20791_GEN) &&
- ((nfc_hal_cb.dev_cb.brcm_hw_id & BRCM_NFC_GEN_MASK) !=
- BRCM_NFC_43341_GEN)) {
- nfc_hal_cb.hal_flags |= NFC_HAL_FLAGS_NEED_DISABLE_VSC;
- }
-
- nfc_hal_hci_handle_build_info(chipverlen, chipverstr);
- nfc_hal_cb.pre_set_mem_idx = 0;
- if (!nfc_hal_dm_check_pre_set_mem()) {
- /* pre-set mem started */
- return;
- }
- nfc_hal_dm_check_xtal();
- } else if ((op_code == NFC_VS_GET_PATCH_VERSION_EVT) &&
- (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_PATCH_INFO)) {
- /* Store NVM info to control block */
-
- /* Skip over rsp len */
- p++;
-
- /* Get project id */
- STREAM_TO_UINT16(nfc_hal_cb.nvm_cb.project_id, p);
-
- /* RFU */
- p++;
-
- /* Get chip version string */
- STREAM_TO_UINT8(u8, p);
- if (u8 > NFC_HAL_PRM_MAX_CHIP_VER_LEN) u8 = NFC_HAL_PRM_MAX_CHIP_VER_LEN;
- memcpy(nfc_hal_cb.nvm_cb.chip_ver, p, u8);
- p += NCI_PATCH_INFO_VERSION_LEN;
-
- /* Get major/minor version */
- STREAM_TO_UINT16(nfc_hal_cb.nvm_cb.ver_major, p);
- STREAM_TO_UINT16(nfc_hal_cb.nvm_cb.ver_minor, p);
-
- /* Skip over max_size and patch_max_size */
- p += 4;
-
- /* Get current lpm patch size */
- STREAM_TO_UINT16(nfc_hal_cb.nvm_cb.lpm_size, p);
- STREAM_TO_UINT16(nfc_hal_cb.nvm_cb.fpm_size, p);
-
- /* clear all flags which may be set during previous initialization */
- nfc_hal_cb.nvm_cb.flags = 0;
-
- /* Set patch present flag */
- if ((nfc_hal_cb.nvm_cb.fpm_size) || (nfc_hal_cb.nvm_cb.lpm_size))
- nfc_hal_cb.nvm_cb.flags |= NFC_HAL_NVM_FLAGS_PATCH_PRESENT;
-
- /* LPMPatchCodeHasBadCRC (if not bad crc, then indicate LPM patch is
- * present in nvm) */
- STREAM_TO_UINT8(u8, p);
- if (u8) {
- /* LPM patch in NVM fails CRC check */
- nfc_hal_cb.nvm_cb.flags |= NFC_HAL_NVM_FLAGS_LPM_BAD;
- }
-
- /* FPMPatchCodeHasBadCRC (if not bad crc, then indicate LPM patch is
- * present in nvm) */
- STREAM_TO_UINT8(u8, p);
- if (u8) {
- /* FPM patch in NVM fails CRC check */
- nfc_hal_cb.nvm_cb.flags |= NFC_HAL_NVM_FLAGS_FPM_BAD;
- }
-
- /* Check if downloading patch to RAM only (no NVM) */
- STREAM_TO_UINT8(nfc_hal_cb.nvm_cb.nvm_type, p);
- if (nfc_hal_cb.nvm_cb.nvm_type == NCI_SPD_NVM_TYPE_NONE) {
- nfc_hal_cb.nvm_cb.flags |= NFC_HAL_NVM_FLAGS_NO_NVM;
- }
-
- /* let platform update baudrate or download patch */
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_W4_APP_COMPLETE);
- nfc_hal_post_reset_init(nfc_hal_cb.dev_cb.brcm_hw_id,
- nfc_hal_cb.nvm_cb.nvm_type);
- } else if (p_cback) {
- (*p_cback)((tNFC_HAL_NCI_EVT)(op_code), p_msg->len,
- (uint8_t*)(p_msg + 1) + p_msg->offset);
- } else if (op_code == NFC_VS_SEC_PATCH_AUTH_EVT) {
- HAL_TRACE_DEBUG0("signature!!");
- nfc_hal_prm_nci_command_complete_cback(
- (tNFC_HAL_NCI_EVT)(op_code), p_msg->len,
- (uint8_t*)(p_msg + 1) + p_msg->offset);
- }
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_proc_msg_during_exit
-**
-** Description Process NCI message while shutting down NFCC
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_proc_msg_during_exit(NFC_HDR* p_msg) {
- uint8_t* p;
- uint8_t mt, pbf, gid, op_code;
- uint8_t *p_old, old_gid, old_oid, old_mt;
- uint8_t u8;
- tNFC_HAL_NCI_CBACK* p_cback = NULL;
-
- HAL_TRACE_DEBUG1("nfc_hal_dm_proc_msg_during_exit(): state:%d",
- nfc_hal_cb.dev_cb.initializing_state);
-
- p = (uint8_t*)(p_msg + 1) + p_msg->offset;
-
- NCI_MSG_PRS_HDR0(p, mt, pbf, gid);
- NCI_MSG_PRS_HDR1(p, op_code);
- u8 = *p;
-
- /* check if waiting for this response */
- if ((nfc_hal_cb.ncit_cb.nci_wait_rsp == NFC_HAL_WAIT_RSP_CMD) ||
- (nfc_hal_cb.ncit_cb.nci_wait_rsp == NFC_HAL_WAIT_RSP_VSC)) {
- if (mt == NCI_MT_RSP) {
- p_old = nfc_hal_cb.ncit_cb.last_hdr;
- NCI_MSG_PRS_HDR0(p_old, old_mt, pbf, old_gid);
- old_oid = ((*p_old) & NCI_OID_MASK);
- /* make sure this is the RSP we are waiting for before updating the
- * command window */
- if ((old_gid == gid) && (old_oid == op_code)) {
- p_cback = nfc_hal_dm_got_vs_rsp();
- if (p_cback) {
- if (gid == NCI_GID_PROP) {
- if (mt == NCI_MT_NTF)
- op_code |= NCI_NTF_BIT;
- else
- op_code |= NCI_RSP_BIT;
-
- if (op_code == NFC_VS_POWER_LEVEL_RSP) {
- (*p_cback)((tNFC_HAL_NCI_EVT)(op_code), p_msg->len,
- (uint8_t*)(p_msg + 1) + p_msg->offset);
- }
- }
- }
- }
- }
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_send_nci_cmd
-**
-** Description Send NCI command to NFCC while initializing BRCM NFCC
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_send_nci_cmd(const uint8_t* p_data, uint16_t len,
- tNFC_HAL_NCI_CBACK* p_cback) {
- NFC_HDR* p_buf;
- uint8_t* ps;
-
- HAL_TRACE_DEBUG1("nfc_hal_dm_send_nci_cmd (): nci_wait_rsp = 0x%x",
- nfc_hal_cb.ncit_cb.nci_wait_rsp);
-
- if (nfc_hal_cb.ncit_cb.nci_wait_rsp != NFC_HAL_WAIT_RSP_NONE) {
- HAL_TRACE_ERROR0("nfc_hal_dm_send_nci_cmd(): no command window");
- return;
- }
-
- p_buf = (NFC_HDR*)GKI_getpoolbuf(NFC_HAL_NCI_POOL_ID);
- if (p_buf != NULL) {
- nfc_hal_cb.ncit_cb.nci_wait_rsp = NFC_HAL_WAIT_RSP_VSC;
-
- p_buf->offset = NFC_HAL_NCI_MSG_OFFSET_SIZE;
- p_buf->event = NFC_HAL_EVT_TO_NFC_NCI;
- p_buf->len = len;
-
- memcpy((uint8_t*)(p_buf + 1) + p_buf->offset, p_data, len);
-
- /* Keep a copy of the command and send to NCI transport */
-
- /* save the message header to double check the response */
- ps = (uint8_t*)(p_buf + 1) + p_buf->offset;
- memcpy(nfc_hal_cb.ncit_cb.last_hdr, ps, NFC_HAL_SAVED_HDR_SIZE);
- memcpy(nfc_hal_cb.ncit_cb.last_cmd, ps + NCI_MSG_HDR_SIZE,
- NFC_HAL_SAVED_CMD_SIZE);
-
- /* save the callback for NCI VSCs */
- nfc_hal_cb.ncit_cb.p_vsc_cback = (void*)p_cback;
-
- nfc_hal_nci_send_cmd(p_buf);
-
- /* start NFC command-timeout timer */
- nfc_hal_main_start_quick_timer(
- &nfc_hal_cb.ncit_cb.nci_wait_rsp_timer,
- (uint16_t)(NFC_HAL_TTYPE_NCI_WAIT_RSP),
- ((uint32_t)NFC_HAL_CMD_TOUT) * QUICK_TIMER_TICKS_PER_SEC / 1000);
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_send_pend_cmd
-**
-** Description Send a command to NFCC
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_send_pend_cmd(void) {
- NFC_HDR* p_buf = nfc_hal_cb.ncit_cb.p_pend_cmd;
- uint8_t* p;
-
- if (p_buf == NULL) return;
-
- /* check low power mode state */
- if (!nfc_hal_dm_power_mode_execute(NFC_HAL_LP_TX_DATA_EVT)) {
- return;
- }
-
- if (nfc_hal_cb.ncit_cb.nci_wait_rsp == NFC_HAL_WAIT_RSP_PROP) {
-#if (NFC_HAL_TRACE_PROTOCOL == TRUE)
- DispHciCmd(p_buf);
-#endif
-
- /* save the message header to double check the response */
- p = (uint8_t*)(p_buf + 1) + p_buf->offset;
- memcpy(nfc_hal_cb.ncit_cb.last_hdr, p, NFC_HAL_SAVED_HDR_SIZE);
-
- /* add packet type for BT message */
- p_buf->offset--;
- p_buf->len++;
-
- p = (uint8_t*)(p_buf + 1) + p_buf->offset;
- *p = HCIT_TYPE_COMMAND;
-
- USERIAL_Write(USERIAL_NFC_PORT, p, p_buf->len);
-
- GKI_freebuf(p_buf);
- nfc_hal_cb.ncit_cb.p_pend_cmd = NULL;
-
- /* start NFC command-timeout timer */
- nfc_hal_main_start_quick_timer(
- &nfc_hal_cb.ncit_cb.nci_wait_rsp_timer,
- (uint16_t)(NFC_HAL_TTYPE_NCI_WAIT_RSP),
- ((uint32_t)NFC_HAL_CMD_TOUT) * QUICK_TIMER_TICKS_PER_SEC / 1000);
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_send_bt_cmd
-**
-** Description Send BT message to NFCC while initializing BRCM NFCC
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_send_bt_cmd(const uint8_t* p_data, uint16_t len,
- tNFC_HAL_BTVSC_CPLT_CBACK* p_cback) {
- NFC_HDR* p_buf;
- char buff[300];
- char tmp[4];
- buff[0] = 0;
- int i;
-
- HAL_TRACE_DEBUG1("nfc_hal_dm_send_bt_cmd (): nci_wait_rsp = 0x%x",
- nfc_hal_cb.ncit_cb.nci_wait_rsp);
-
- for (i = 0; i < len; i++) {
- sprintf(tmp, "%02x ", p_data[i]);
- strcat(buff, tmp);
- }
- HAL_TRACE_DEBUG2("nfc_hal_dm_send_bt_cmd (): HCI Write (%d bytes): %s", len,
- buff);
-
- if (nfc_hal_cb.ncit_cb.nci_wait_rsp != NFC_HAL_WAIT_RSP_NONE) {
- HAL_TRACE_ERROR0("nfc_hal_dm_send_bt_cmd(): no command window");
- return;
- }
-
- p_buf = (NFC_HDR*)GKI_getpoolbuf(NFC_HAL_NCI_POOL_ID);
- if (p_buf != NULL) {
- nfc_hal_cb.ncit_cb.nci_wait_rsp = NFC_HAL_WAIT_RSP_PROP;
-
- p_buf->offset = NFC_HAL_NCI_MSG_OFFSET_SIZE;
- p_buf->len = len;
-
- memcpy((uint8_t*)(p_buf + 1) + p_buf->offset, p_data, len);
-
- /* save the callback for NCI VSCs) */
- nfc_hal_cb.ncit_cb.p_vsc_cback = (void*)p_cback;
-
- nfc_hal_cb.ncit_cb.p_pend_cmd = p_buf;
- if (nfc_hal_cb.dev_cb.initializing_state == NFC_HAL_INIT_STATE_IDLE) {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_W4_CONTROL_DONE);
- nfc_hal_cb.p_stack_cback(HAL_NFC_REQUEST_CONTROL_EVT, HAL_NFC_STATUS_OK);
- return;
- }
-
- nfc_hal_dm_send_pend_cmd();
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_set_nfc_wake
-**
-** Description Set NFC_WAKE line
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_set_nfc_wake(uint8_t cmd) {
- HAL_TRACE_DEBUG1("nfc_hal_dm_set_nfc_wake () %s",
- (cmd == NFC_HAL_ASSERT_NFC_WAKE ? "ASSERT" : "DEASSERT"));
-
- /*
- ** nfc_wake_active_mode cmd result of voltage on
- *NFC_WAKE
- **
- ** NFC_HAL_LP_ACTIVE_LOW (0) NFC_HAL_ASSERT_NFC_WAKE (0) pull down
- *NFC_WAKE (GND)
- ** NFC_HAL_LP_ACTIVE_LOW (0) NFC_HAL_DEASSERT_NFC_WAKE (1) pull up
- *NFC_WAKE (VCC)
- ** NFC_HAL_LP_ACTIVE_HIGH (1) NFC_HAL_ASSERT_NFC_WAKE (0) pull up
- *NFC_WAKE (VCC)
- ** NFC_HAL_LP_ACTIVE_HIGH (1) NFC_HAL_DEASSERT_NFC_WAKE (1) pull down
- *NFC_WAKE (GND)
- */
-
- if (cmd == nfc_hal_cb.dev_cb.nfc_wake_active_mode)
- UPIO_Set(UPIO_GENERAL, NFC_HAL_LP_NFC_WAKE_GPIO,
- UPIO_OFF); /* pull down NFC_WAKE */
- else
- UPIO_Set(UPIO_GENERAL, NFC_HAL_LP_NFC_WAKE_GPIO,
- UPIO_ON); /* pull up NFC_WAKE */
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_power_mode_execute
-**
-** Description If snooze mode is enabled in full power mode,
-** Assert NFC_WAKE before sending data
-** Deassert NFC_WAKE when idle timer expires
-**
-** Returns TRUE if DH can send data to NFCC
-**
-*******************************************************************************/
-bool nfc_hal_dm_power_mode_execute(tNFC_HAL_LP_EVT event) {
- bool send_to_nfcc = false;
-
- HAL_TRACE_DEBUG1("nfc_hal_dm_power_mode_execute () event = %d", event);
-
- if (nfc_hal_cb.dev_cb.power_mode == NFC_HAL_POWER_MODE_FULL) {
- if (nfc_hal_cb.dev_cb.snooze_mode != NFC_HAL_LP_SNOOZE_MODE_NONE) {
- /* if any transport activity */
- if ((event == NFC_HAL_LP_TX_DATA_EVT) ||
- (event == NFC_HAL_LP_RX_DATA_EVT)) {
- /* if idle timer is not running */
- if (nfc_hal_cb.dev_cb.lp_timer.in_use == false) {
- nfc_hal_dm_set_nfc_wake(NFC_HAL_ASSERT_NFC_WAKE);
- }
-
- /* start or extend idle timer */
- nfc_hal_main_start_quick_timer(&nfc_hal_cb.dev_cb.lp_timer, 0x00,
- ((uint32_t)NFC_HAL_LP_IDLE_TIMEOUT) *
- QUICK_TIMER_TICKS_PER_SEC / 1000);
- } else if (event == NFC_HAL_LP_TIMEOUT_EVT) {
- /* let NFCC go to snooze mode */
- nfc_hal_dm_set_nfc_wake(NFC_HAL_DEASSERT_NFC_WAKE);
- }
- }
-
- send_to_nfcc = true;
- }
-
- return (send_to_nfcc);
-}
-
-/*******************************************************************************
-**
-** Function nci_brcm_lp_timeout_cback
-**
-** Description callback function for low power timeout
-**
-** Returns void
-**
-*******************************************************************************/
-static void nci_brcm_lp_timeout_cback(void* p_tle) {
- HAL_TRACE_DEBUG0("nci_brcm_lp_timeout_cback ()");
-
- nfc_hal_dm_power_mode_execute(NFC_HAL_LP_TIMEOUT_EVT);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_pre_init_nfcc
-**
-** Description This function initializes Broadcom specific control blocks
-*for
-** NCI transport
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_pre_init_nfcc(void) {
- HAL_TRACE_DEBUG0("nfc_hal_dm_pre_init_nfcc ()");
-
- /* if it was waiting for core reset notification after raising REG_PU */
- if (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_NFCC_ENABLE) {
- nfc_hal_dm_send_get_build_info_cmd();
- }
- /* if it was waiting for core reset notification after setting Xtal */
- else if (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_POST_XTAL_SET) {
- {
- /* Core reset ntf after xtal setting indicating NFCC loaded patch from NVM
- */
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_W4_PATCH_INFO);
-
- nfc_hal_dm_send_nci_cmd(nfc_hal_dm_get_patch_version_cmd,
- NCI_MSG_HDR_SIZE, NULL);
- }
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_shutting_down_nfcc
-**
-** Description This function initializes Broadcom specific control blocks
-*for
-** NCI transport
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_shutting_down_nfcc(void) {
- HAL_TRACE_DEBUG0("nfc_hal_dm_shutting_down_nfcc ()");
-
- nfc_hal_cb.dev_cb.initializing_state = NFC_HAL_INIT_STATE_CLOSING;
-
- /* reset low power mode variables */
- if ((nfc_hal_cb.dev_cb.power_mode == NFC_HAL_POWER_MODE_FULL) &&
- (nfc_hal_cb.dev_cb.snooze_mode != NFC_HAL_LP_SNOOZE_MODE_NONE)) {
- nfc_hal_dm_set_nfc_wake(NFC_HAL_ASSERT_NFC_WAKE);
- }
-
- nfc_hal_cb.ncit_cb.nci_wait_rsp = NFC_HAL_WAIT_RSP_NONE;
-
- nfc_hal_cb.dev_cb.power_mode = NFC_HAL_POWER_MODE_FULL;
- nfc_hal_cb.dev_cb.snooze_mode = NFC_HAL_LP_SNOOZE_MODE_NONE;
-
- /* Stop all timers */
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.ncit_cb.nci_wait_rsp_timer);
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.dev_cb.lp_timer);
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.prm.timer);
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
- nfc_hal_cb.hci_cb.hcp_conn_id = 0;
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.hci_cb.hci_timer);
-#endif
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.timer);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_init
-**
-** Description This function initializes Broadcom specific control blocks
-*for
-** NCI transport
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_dm_init(void) {
- HAL_TRACE_DEBUG0("nfc_hal_dm_init ()");
-
- nfc_hal_cb.dev_cb.lp_timer.p_cback = nci_brcm_lp_timeout_cback;
-
- nfc_hal_cb.ncit_cb.nci_wait_rsp_timer.p_cback = nfc_hal_nci_cmd_timeout_cback;
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
- nfc_hal_cb.hci_cb.hci_timer.p_cback = nfc_hal_hci_timeout_cback;
-#endif
-
- nfc_hal_cb.pre_discover_done = false;
-
- nfc_post_reset_cb.spd_nvm_detection_cur_count = 0;
- nfc_post_reset_cb.spd_skip_on_power_cycle = false;
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcDevInitDone
-**
-** Description Notify that pre-initialization of NFCC is complete
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcPreInitDone(tHAL_NFC_STATUS status) {
- HAL_TRACE_DEBUG1("HAL_NfcPreInitDone () status=%d", status);
-
- if (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_APP_COMPLETE) {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
-
- nfc_hal_main_pre_init_done(status);
- }
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcReInit
-**
-** Description This function is called to restart initialization after
-*REG_PU
-** toggled because of failure to detect NVM type or download
-*patchram.
-**
-** Note This function should be called only during the HAL init
-*process
-**
-** Returns HAL_NFC_STATUS_OK if successfully initiated
-** HAL_NFC_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-tHAL_NFC_STATUS HAL_NfcReInit(void) {
- tHAL_NFC_STATUS status = HAL_NFC_STATUS_FAILED;
-
- HAL_TRACE_DEBUG1("HAL_NfcReInit () init st=0x%x",
- nfc_hal_cb.dev_cb.initializing_state);
- if (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_APP_COMPLETE) {
- {
- /* Wait for NFCC to enable - Core reset notification */
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_W4_NFCC_ENABLE);
-
- /* NFCC Enable timeout */
- nfc_hal_main_start_quick_timer(
- &nfc_hal_cb.timer, NFC_HAL_TTYPE_NFCC_ENABLE,
- ((p_nfc_hal_cfg->nfc_hal_nfcc_enable_timeout) *
- QUICK_TIMER_TICKS_PER_SEC) /
- 1000);
- }
-
- status = HAL_NFC_STATUS_OK;
- }
- return status;
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_dm_set_snooze_mode_cback
-**
-** Description This is snooze update complete callback.
-**
-** Returns void
-**
-*******************************************************************************/
-static void nfc_hal_dm_set_snooze_mode_cback(tNFC_HAL_BTVSC_CPLT* pData) {
- uint8_t status = pData->p_param_buf[0];
- tHAL_NFC_STATUS hal_status;
- tHAL_NFC_STATUS_CBACK* p_cback;
-
- /* if it is completed */
- if (status == HCI_SUCCESS) {
- /* update snooze mode */
- nfc_hal_cb.dev_cb.snooze_mode = nfc_hal_cb.dev_cb.new_snooze_mode;
-
- nfc_hal_dm_set_nfc_wake(NFC_HAL_ASSERT_NFC_WAKE);
-
- if (nfc_hal_cb.dev_cb.snooze_mode != NFC_HAL_LP_SNOOZE_MODE_NONE) {
- /* start idle timer */
- nfc_hal_main_start_quick_timer(&nfc_hal_cb.dev_cb.lp_timer, 0x00,
- ((uint32_t)NFC_HAL_LP_IDLE_TIMEOUT) *
- QUICK_TIMER_TICKS_PER_SEC / 1000);
- } else {
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.dev_cb.lp_timer);
- }
- hal_status = HAL_NFC_STATUS_OK;
- } else {
- hal_status = HAL_NFC_STATUS_FAILED;
- }
-
- if (nfc_hal_cb.dev_cb.p_prop_cback) {
- p_cback = nfc_hal_cb.dev_cb.p_prop_cback;
- nfc_hal_cb.dev_cb.p_prop_cback = NULL;
- (*p_cback)(hal_status);
- }
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcSetSnoozeMode
-**
-** Description Set snooze mode
-** snooze_mode
-** NFC_HAL_LP_SNOOZE_MODE_NONE - Snooze mode disabled
-** NFC_HAL_LP_SNOOZE_MODE_UART - Snooze mode for UART
-** NFC_HAL_LP_SNOOZE_MODE_SPI_I2C - Snooze mode for SPI/I2C
-**
-** idle_threshold_dh/idle_threshold_nfcc
-** Idle Threshold Host in 100ms unit
-**
-** nfc_wake_active_mode/dh_wake_active_mode
-** NFC_HAL_LP_ACTIVE_LOW - high to low voltage is asserting
-** NFC_HAL_LP_ACTIVE_HIGH - low to high voltage is
-*asserting
-**
-** p_snooze_cback
-** Notify status of operation
-**
-** Returns tHAL_NFC_STATUS
-**
-*******************************************************************************/
-tHAL_NFC_STATUS HAL_NfcSetSnoozeMode(uint8_t snooze_mode,
- uint8_t idle_threshold_dh,
- uint8_t idle_threshold_nfcc,
- uint8_t nfc_wake_active_mode,
- uint8_t dh_wake_active_mode,
- tHAL_NFC_STATUS_CBACK* p_snooze_cback) {
- uint8_t cmd[NFC_HAL_BT_HCI_CMD_HDR_SIZE + HCI_BRCM_WRITE_SLEEP_MODE_LENGTH];
- uint8_t* p;
-
- HAL_TRACE_API1("HAL_NfcSetSnoozeMode (): snooze_mode = %d", snooze_mode);
-
- nfc_hal_cb.dev_cb.new_snooze_mode = snooze_mode;
- nfc_hal_cb.dev_cb.nfc_wake_active_mode = nfc_wake_active_mode;
- nfc_hal_cb.dev_cb.p_prop_cback = p_snooze_cback;
-
- p = cmd;
-
- /* Add the HCI command */
- UINT16_TO_STREAM(p, HCI_BRCM_WRITE_SLEEP_MODE);
- UINT8_TO_STREAM(p, HCI_BRCM_WRITE_SLEEP_MODE_LENGTH);
-
- memset(p, 0x00, HCI_BRCM_WRITE_SLEEP_MODE_LENGTH);
-
- UINT8_TO_STREAM(p, snooze_mode); /* Sleep Mode */
-
- UINT8_TO_STREAM(p, idle_threshold_dh); /* Idle Threshold Host */
- UINT8_TO_STREAM(p, idle_threshold_nfcc); /* Idle Threshold HC */
- UINT8_TO_STREAM(p, nfc_wake_active_mode); /* BT Wake Active Mode */
- UINT8_TO_STREAM(p, dh_wake_active_mode); /* Host Wake Active Mode */
-
- nfc_hal_dm_send_bt_cmd(
- cmd, NFC_HAL_BT_HCI_CMD_HDR_SIZE + HCI_BRCM_WRITE_SLEEP_MODE_LENGTH,
- nfc_hal_dm_set_snooze_mode_cback);
- return (NCI_STATUS_OK);
-}
diff --git a/halimpl/bcm2079x/hal/hal/nfc_hal_dm_cfg.c b/halimpl/bcm2079x/hal/hal/nfc_hal_dm_cfg.c
deleted file mode 100644
index 0363f26..0000000
--- a/halimpl/bcm2079x/hal/hal/nfc_hal_dm_cfg.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2011-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * This file contains compile-time configurable constants for BRCM HAL
- * modules
- *
- ******************************************************************************/
-#include "nci_defs.h"
-#include "nfc_brcm_defs.h"
-#include "nfc_hal_int.h"
-
-/* the SetConfig at start up*/
-uint8_t nfc_hal_start_up_cfg[] = {
- /* TLV len */ 31,
- /* B0 */ NCI_PARAM_ID_EMVCO_ENABLE,
- /* B1 */ 1,
- /* B2 */
- 1, /* (1 = enable emvco mode, 0 = disable emvco mode) Default = 0.*/
- /* B3 */ NCI_PARAM_ID_CONTINUE_MODE, /* NFCC will restart discovery
- after deactivated */
- /* B4 */ 1,
- /* B5 */ 1, /* (1 = enable, 0 = disable) Default = 0.*/
- /* B6 */ NCI_PARAM_ID_RFU_CONFIG,
- /* B7 */ 0x14,
- /* B8 */ 0x00,
- /* B9 */ 0x00,
- /* B10*/ 0x00,
- /* B11*/ 0x00,
- /* B12*/ 0x0E,
- /* B13*/ 0xE8,
- /* B14*/ 0xF0,
- /* B15*/ 0x55,
- /* B16*/ 0x00,
- /* B17*/ 0x0F, /* CE3 SO delay in sec */
- /* B18*/ 0x00,
- /* B19*/ 0x00,
- /* B20*/ 0x00,
- /* B21*/ 0x00,
- /* B22*/ 0x00,
- /* B23*/ 0x00,
- /* B24*/ 0x00,
- /* B25*/ 0x00,
- /* B26*/ 0x00,
- /* B27*/ 0x00,
- /* B28*/ NCI_PARAM_ID_ACT_ORDER, /* polling sequence */
- /* B29*/ 1,
- /* B30*/ 1, /* (1 = active mode polling before passive, 0 = passive
- polling first) Default = 0.*/
-};
-
-uint8_t* p_nfc_hal_dm_start_up_cfg = (uint8_t*)nfc_hal_start_up_cfg;
-
-/* the VSCs at start up:
- * The VSCs are specified in TLV format similar to nfa_start_up_cfg[]
- * first byte is the TLV total len.
- * B0 is the first T; i.e. the opcode for the VSC
- * B1 is the len of the VSC parameters/payload
- * */
-uint8_t nfc_hal_dm_start_up_vsc_cfg[] = {
- /* TLV len */ 5,
- /* B0 */ NCI_MTS_CMD | NCI_GID_PROP,
- /* B1 */ NCI_MSG_FRAME_LOG,
- /* B2 */ 2,
- /* B3 */ 0, /* 1 to enable RF frames */
- /* B4 */ 1 /* 1 to enable SWP frames */
-};
-
-uint8_t* p_nfc_hal_dm_start_up_vsc_cfg = NULL;
-
-/* the SetConfig at HAL_NfcPreDiscover. This is done once after HAL_NfcOpen */
-uint8_t nfc_hal_pre_discover_cfg[] = {
- /* TLV len */ 0x0A,
- /* B0 */ NCI_PARAM_ID_SWPCFG,
- /* B1 */ 0x08,
- /* B2 */ 0x01,
- /* B3 */ 0x08,
- /* B4 */ 0x00,
- /* B5 */ 0x04,
- /* B6 */ 0x80,
- /* B7 */ 0xC3,
- /* B8 */ 0xC9,
- /* B9 */ 0x01};
-
-uint8_t* p_nfc_hal_pre_discover_cfg = NULL;
-
-/* LPTD parameters (LowPowerTagDetection)
- * This is typical values for 20791B2
- * The timing and threshold parameters used for a customer handset/hardware may
- * vary
- * depending on antenna and should be verified during a customer testing phase.
- * the data fields without comments are too complicated. Please see ""
- * */
-const uint8_t nfc_hal_dm_lptd_cfg[] = {
- 21, /* total TLV length excluding itself */
- NCI_PARAM_ID_TAGSNIFF_CFG, /* type */
- 19, /* length */
- 0x01, /* B0 enable: 0/disable, 1/enable*/
- 0x02, /* B1 poll count: number of full power poll before starting lptd
- poll */
- 0xFF, /* B2 sniff count lsb: number of lptd poll before switching to
- full power poll */
- 0xFF, /* B3 sniff count msb */
- 0x80, /* B4 threshold: Bigger thresholds give a smaller LPTD range but
- more immunity to false detections. Smaller thresholds increase
- LPTD range at the cost of greater likelihood of false
- detections. */
- 0x40, /* B5 delay lsb: delay (us) to sampling power */
- 0x00, /* B6 delay msb */
- 0x40, /* B7 carrier threshold lsb */
- 0x00, /* B8 carrier threshold msb */
- 0x80, /* B9 mode: Bitwise variable used to enable various algorithm
- modes.*/
- 0x80, /* B10 0-offset lsb */
- 0x00, /* B11 0-offset msb */
- 0x10, /* B12 field sense time lsb */
- 0x00, /* B13 field sense time msb */
- 0x00, /* B14 false detect threshold lsb: 0x00 to disable LPTD NTF. The
- number of false tag detections to resport LPTD NTF. */
- 0x00, /* B15 false detect threshold msb. A false tag detect - full poll
- results in no tag being detected.*/
- 0x75, /* B16 mode1; Bitwise variable used to enable various algorithm
- modes. */
- 0x0D, /* B17 lptd ant cfg rx */
- 0x30, /* B18 lptd rdr cfg ve */
-};
-
-uint8_t* p_nfc_hal_dm_lptd_cfg = (uint8_t*)&nfc_hal_dm_lptd_cfg[0];
-
-/*
-** NFCC has a table which has 9 XTAL frequencies: 9.6, 13, 16.2, 19.2, 24, 26,
-*38.4, 52 and 37.4 in MHz.
-** For these 9 xtal frequencies, host doesn't need to configure PLL325.
-** For 43341, host doesn't need to configure it at all.
-*/
-uint8_t* p_nfc_hal_dm_pll_325_cfg = NULL;
-
-/*
-** Proprietary pre-set is required, if not NULL.
-*/
-tNFC_HAL_DM_PRE_SET_MEM* p_nfc_hal_dm_pre_set_mem = NULL;
-
-tNFC_HAL_CFG nfc_hal_cfg = {
- false, /* set nfc_hal_prm_nvm_required to TRUE, if the platform wants to
- abort PRM process without NVM */
- (uint16_t)NFC_HAL_NFCC_ENABLE_TIMEOUT, /* max time to wait for RESET NTF
- *after setting REG_PU to high
- ** If NFCC doesn't have NVM or cannot
- *load patch from NVM without Xtal
- *setting
- ** then set it to short to optimize
- *bootup time because NFCC cannot send
- *RESET NTF.
- ** Otherwise, it depends on NVM type
- *and size of patchram.
- */
- (uint16_t)NFC_HAL_NFCC_ENABLE_TIMEOUT /* max time to wait for RESET NTF
- *after setting Xtal frequency
- ** It depends on NVM type and size of
- *patchram.
- */
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
- ,
- true, /* set nfc_hal_first_boot to TRUE, if platform enables NFC for the
- first time after bootup */
- (HAL_NFC_HCI_UICC0_HOST | HAL_NFC_HCI_UICC1_HOST |
- HAL_NFC_HCI_UICC2_HOST) /* Set bit(s) for supported UICC(s) */
-#endif
-};
-
-tNFC_HAL_CFG* p_nfc_hal_cfg = (tNFC_HAL_CFG*)&nfc_hal_cfg;
-
-const uint8_t nfc_hal_dm_xtal_params_cfg[] = {
- 8, /* length */
- 0x00, /* B0 Rfpll_cfg_pll_xtal_div_2 */
- 0x00, /* B1 Rfpll_cfg_pll_vcocal1_0_cal_ref_timeout */
- 0x00, /* B2 Rfpll_cfg_pll_vcocal2_cal_count */
- 0x00, /* B3 Rfpll_cfg_pll_vcocal3_cal_count */
- 0x00, /* B4 Rfpll_cfg_pll_dsm_b_msb_wild_base */
- 0x00, /* B5 Rfpll_cfg_pll_dsm_b_lsb_3_wild_base_3 */
- 0x00, /* B6 Rfpll_cfg_pll_dsm_b_lsb_2_wild_base_2 */
- 0x00 /* B7 Rfpll_cfg_pll_dsm_b_lsb_1_wild_base_1 */
-};
-
-/* By default, the XTAL command does not need these extra params. */
-uint8_t* p_nfc_hal_dm_xtal_params_cfg = NULL;
diff --git a/halimpl/bcm2079x/hal/hal/nfc_hal_hci.c b/halimpl/bcm2079x/hal/hal/nfc_hal_hci.c
deleted file mode 100644
index 1033327..0000000
--- a/halimpl/bcm2079x/hal/hal/nfc_hal_hci.c
+++ /dev/null
@@ -1,851 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2012-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Vendor-specific handler for HCI events
- *
- ******************************************************************************/
-#include "gki.h"
-#include "nfc_hal_api.h"
-#include "nfc_hal_int.h"
-#include "nfc_hal_target.h"
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
-
-#include "nfc_hal_nv_ci.h"
-#include "nfc_hal_nv_co.h"
-
-#include <string.h>
-
-#ifndef NFC_HAL_HCI_NV_READ_TIMEOUT
-#define NFC_HAL_HCI_NV_READ_TIMEOUT 1000
-#endif
-
-#ifndef NFC_HAL_HCI_NFCC_RSP_TIMEOUT
-#define NFC_HAL_HCI_NFCC_RSP_TIMEOUT 3000
-#endif
-
-#define NFC_HAL_HCI_NETWK_CMD_TYPE_A_CE_PIPE_INFO_OFFSET 0x0C
-#define NFC_HAL_HCI_NETWK_CMD_TYPE_B_CE_PIPE_INFO_OFFSET 0x32
-#define NFC_HAL_HCI_NETWK_CMD_TYPE_BP_CE_PIPE_INFO_OFFSET 0x7F
-#define NFC_HAL_HCI_NETWK_CMD_TYPE_F_CE_PIPE_INFO_OFFSET 0xB4
-
-#define NFC_HAL_HCI_PIPE_VALID_MASK 0x80
-
-#define NFC_HAL_HCI_FIRST_BOOT_SESSION_ID_0_VAL 0xFF
-#define NFC_HAL_HCI_NEXT_BOOT_SESSION_ID_0_VAL 0xFE
-
-/* Version string for BCM20791B3 */
-const uint8_t NFC_HAL_DM_BCM20791B3_STR[] = "20791B3";
-#define NFC_HAL_DM_BCM20791B3_STR_LEN (sizeof(NFC_HAL_DM_BCM20791B3_STR) - 1)
-
-/* Version string for BCM20791B4 */
-const uint8_t NFC_HAL_DM_BCM20791B4_STR[] = "20791B4";
-#define NFC_HAL_DM_BCM20791B4_STR_LEN (sizeof(NFC_HAL_DM_BCM20791B4_STR) - 1)
-
-/* Version string for BCM43341B0 */
-const uint8_t NFC_HAL_DM_BCM43341B0_STR[] = "43341B0";
-#define NFC_HAL_DM_BCM43341B0_STR_LEN (sizeof(NFC_HAL_DM_BCM43341B0_STR) - 1)
-
-extern tNFC_HAL_CFG* p_nfc_hal_cfg;
-/****************************************************************************
-** Internal function prototypes
-****************************************************************************/
-static void nfc_hal_hci_set_next_hci_netwk_config(uint8_t block);
-static void nfc_hal_hci_remove_dyn_pipe_to_uicc1(void);
-static void nfc_hal_hci_handle_nv_read(uint8_t block, tHAL_NFC_STATUS status,
- uint16_t size);
-static void nfc_hal_hci_init_complete(tHAL_NFC_STATUS status);
-static void nfc_hal_hci_vsc_cback(tNFC_HAL_NCI_EVT event, uint16_t data_len,
- uint8_t* p_data);
-
-/*******************************************************************************
-**
-** Function nfc_hal_hci_evt_hdlr
-**
-** Description Processing event for NFA HCI
-**
-** Returns None
-**
-*******************************************************************************/
-void nfc_hal_hci_evt_hdlr(tNFC_HAL_HCI_EVENT_DATA* p_evt_data) {
- HAL_TRACE_DEBUG0("nfc_hal_hci_evt_hdlr ()");
-
- switch (p_evt_data->hdr.event) {
- case NFC_HAL_HCI_RSP_NV_READ_EVT:
- if ((nfc_hal_cb.hci_cb.p_hci_netwk_info_buf &&
- (p_evt_data->nv_read.block == HC_F3_NV_BLOCK ||
- p_evt_data->nv_read.block == HC_F4_NV_BLOCK ||
- p_evt_data->nv_read.block == HC_F5_NV_BLOCK)) ||
- (nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf &&
- p_evt_data->nv_read.block == HC_F2_NV_BLOCK)) {
- nfc_hal_hci_handle_nv_read(p_evt_data->nv_read.block,
- p_evt_data->nv_read.status,
- p_evt_data->nv_read.size);
- } else {
- /* Invalid block or no buffer, Ignore */
- HAL_TRACE_ERROR1(
- "nfc_hal_hci_evt_hdlr: No buffer for handling read NV block: "
- "0x%02x",
- p_evt_data->nv_read.block);
- }
- break;
-
- case NFC_HAL_HCI_RSP_NV_WRITE_EVT:
- /* NV Ram write completed - nothing to do... */
- break;
-
- default:
- break;
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_hci_enable
-**
-** Description Program nv data on to controller
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_hci_enable(void) {
- uint8_t* p_hci_netwk_cmd;
-
- HAL_TRACE_DEBUG0("nfc_hal_hci_enable ()");
-
- if (nfc_hal_cb.nvm_cb.nvm_type == NCI_SPD_NVM_TYPE_NONE) {
- HAL_TRACE_DEBUG1(
- "nfc_hal_hci_enable (): No HCI NETWK CMD to send for NVM Type: 0x%02x",
- nfc_hal_cb.nvm_cb.nvm_type);
- nfc_hal_hci_init_complete(HAL_NFC_STATUS_OK);
- return;
- }
-
- if (nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf) {
- p_hci_netwk_cmd = (uint8_t*)(nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf -
- NCI_MSG_HDR_SIZE);
- GKI_freebuf(p_hci_netwk_cmd);
- nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf = NULL;
- }
-
- if (nfc_hal_cb.hci_cb.p_hci_netwk_info_buf) {
- p_hci_netwk_cmd =
- (uint8_t*)(nfc_hal_cb.hci_cb.p_hci_netwk_info_buf - NCI_MSG_HDR_SIZE);
- GKI_freebuf(p_hci_netwk_cmd);
- nfc_hal_cb.hci_cb.p_hci_netwk_info_buf = NULL;
- }
-
- if ((p_nfc_hal_cfg->nfc_hal_hci_uicc_support & HAL_NFC_HCI_UICC0_HOST) ||
- ((p_nfc_hal_cfg->nfc_hal_hci_uicc_support & HAL_NFC_HCI_UICC1_HOST) &&
- ((!nfc_hal_cb.hci_cb.hci_fw_workaround) ||
- (nfc_hal_cb.nvm_cb.nvm_type == NCI_SPD_NVM_TYPE_EEPROM))) ||
- (p_nfc_hal_cfg->nfc_hal_hci_uicc_support & HAL_NFC_HCI_UICC2_HOST)) {
- p_hci_netwk_cmd =
- (uint8_t*)GKI_getbuf(NCI_MSG_HDR_SIZE + NFC_HAL_HCI_NETWK_INFO_SIZE);
- if (p_hci_netwk_cmd == NULL) {
- HAL_TRACE_ERROR0(
- "nfc_hal_hci_enable: unable to allocate buffer for reading hci "
- "network info from nvram");
- nfc_hal_hci_init_complete(HAL_NFC_STATUS_FAILED);
- } else {
- nfc_hal_cb.hci_cb.p_hci_netwk_info_buf =
- (uint8_t*)(p_hci_netwk_cmd + NCI_MSG_HDR_SIZE);
- nfc_hal_cb.hci_cb.hci_netwk_config_block = 0;
- if (p_nfc_hal_cfg->nfc_hal_hci_uicc_support & HAL_NFC_HCI_UICC0_HOST) {
- memset(nfc_hal_cb.hci_cb.p_hci_netwk_info_buf, 0,
- NFC_HAL_HCI_NETWK_INFO_SIZE);
- nfc_hal_nv_co_read((uint8_t*)nfc_hal_cb.hci_cb.p_hci_netwk_info_buf,
- NFC_HAL_HCI_NETWK_INFO_SIZE, HC_F3_NV_BLOCK);
- nfc_hal_main_start_quick_timer(&nfc_hal_cb.hci_cb.hci_timer,
- NFC_HAL_HCI_VSC_TIMEOUT_EVT,
- NFC_HAL_HCI_NV_READ_TIMEOUT);
- } else {
- HAL_TRACE_DEBUG1(
- "nfc_hal_hci_enable (): Skip send F3 HCI NETWK CMD for UICC Mask: "
- "0x%02x",
- p_nfc_hal_cfg->nfc_hal_hci_uicc_support);
- nfc_hal_hci_set_next_hci_netwk_config(HC_F3_NV_BLOCK);
- }
- }
- } else {
- HAL_TRACE_DEBUG2(
- "nfc_hal_hci_enable (): No HCI NETWK CMD to send for UICC Mask: 0x%02x "
- "& NVM Type: 0x%02x",
- p_nfc_hal_cfg->nfc_hal_hci_uicc_support, nfc_hal_cb.nvm_cb.nvm_type);
- nfc_hal_hci_set_next_hci_netwk_config(HC_F2_NV_BLOCK);
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_hci_handle_build_info
-**
-** Description handle build info evt
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_hci_handle_build_info(uint8_t chipverlen, uint8_t* p_chipverstr) {
- HAL_TRACE_DEBUG0("nfc_hal_hci_handle_build_info ()");
-
- if ((chipverlen == NFC_HAL_DM_BCM20791B3_STR_LEN) &&
- (memcmp(NFC_HAL_DM_BCM20791B3_STR, p_chipverstr,
- NFC_HAL_DM_BCM20791B3_STR_LEN) == 0)) {
- /* BCM2079B3 FW - eSE restarted for patch download */
- nfc_hal_cb.hci_cb.hci_fw_workaround = true;
- nfc_hal_cb.hci_cb.hci_fw_validate_netwk_cmd = true;
- } else if (((chipverlen == NFC_HAL_DM_BCM20791B4_STR_LEN) &&
- (memcmp(NFC_HAL_DM_BCM20791B4_STR, p_chipverstr,
- NFC_HAL_DM_BCM20791B4_STR_LEN) == 0)) ||
- ((chipverlen == NFC_HAL_DM_BCM43341B0_STR_LEN) &&
- (memcmp(NFC_HAL_DM_BCM43341B0_STR, p_chipverstr,
- NFC_HAL_DM_BCM43341B0_STR_LEN) == 0))) {
- /* BCM43341B0/BCM2079B4 FW - eSE restarted for patch download */
- nfc_hal_cb.hci_cb.hci_fw_workaround = true;
- nfc_hal_cb.hci_cb.hci_fw_validate_netwk_cmd = false;
- } else {
- /* BCM2079B5 FW - eSE not be restarted for patch download from UICC */
- nfc_hal_cb.hci_cb.hci_fw_workaround = false;
- nfc_hal_cb.hci_cb.hci_fw_validate_netwk_cmd = false;
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_hci_handle_hci_netwk_info
-**
-** Description Handler function for HCI Network Notification
-**
-** Returns None
-**
-*******************************************************************************/
-void nfc_hal_hci_handle_hci_netwk_info(uint8_t* p_data) {
- uint8_t* p = p_data;
- uint16_t data_len;
- uint8_t target_handle = 0;
- uint8_t hci_netwk_cmd[1 + NFC_HAL_HCI_SESSION_ID_LEN];
- uint8_t block = 0;
-
- HAL_TRACE_DEBUG0("nfc_hal_hci_handle_hci_netwk_info ()");
-
- /* skip NCI header byte0 (MT,GID), byte1 (OID) */
- p += 2;
-
- STREAM_TO_UINT8(data_len, p);
- target_handle = *(uint8_t*)p;
-
- if (target_handle == NFC_HAL_HCI_DH_TARGET_HANDLE) {
- /* Correct the session id assigned by DH */
- *(p + 1) = nfc_hal_cb.hci_cb.dh_session_id[0];
- nfc_hal_nv_co_write(p, data_len, HC_F2_NV_BLOCK);
- return;
- }
-
- if (target_handle == NFC_HAL_HCI_UICC0_TARGET_HANDLE) {
- block = HC_F3_NV_BLOCK;
- } else if (target_handle == NFC_HAL_HCI_UICC1_TARGET_HANDLE) {
- block = HC_F4_NV_BLOCK;
- } else if (target_handle == NFC_HAL_HCI_UICC2_TARGET_HANDLE) {
- block = HC_F5_NV_BLOCK;
- } else {
- HAL_TRACE_DEBUG1(
- "nfc_hal_hci_handle_hci_netwk_info(): Invalid Target handle: 0x%02x",
- target_handle);
- return;
- }
-
- if ((!nfc_hal_cb.hci_cb.hci_fw_validate_netwk_cmd) ||
- (p[NFC_HAL_HCI_NETWK_CMD_TYPE_A_CE_PIPE_INFO_OFFSET] &
- NFC_HAL_HCI_PIPE_VALID_MASK) ||
- (p[NFC_HAL_HCI_NETWK_CMD_TYPE_B_CE_PIPE_INFO_OFFSET] &
- NFC_HAL_HCI_PIPE_VALID_MASK) ||
- (p[NFC_HAL_HCI_NETWK_CMD_TYPE_BP_CE_PIPE_INFO_OFFSET] &
- NFC_HAL_HCI_PIPE_VALID_MASK) ||
- (p[NFC_HAL_HCI_NETWK_CMD_TYPE_F_CE_PIPE_INFO_OFFSET] &
- NFC_HAL_HCI_PIPE_VALID_MASK)) {
- /* HCI Network notification received for UICC0/UICC1/UICC2, Update nv data
- */
- nfc_hal_nv_co_write(p, data_len, block);
- } else {
- HAL_TRACE_DEBUG1(
- "nfc_hal_hci_handle_hci_netwk_info(): Type A Card Emulation invalid, "
- "Reset nv file: 0x%02x",
- p[NFC_HAL_HCI_NETWK_CMD_TYPE_A_CE_PIPE_INFO_OFFSET]);
- hci_netwk_cmd[0] = target_handle;
- memset(&hci_netwk_cmd[1], 0xFF, NFC_HAL_HCI_SESSION_ID_LEN);
- nfc_hal_nv_co_write(hci_netwk_cmd, 1, block);
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_hci_fake_adm_notify_all_pipe_cleared_to_dh
-**
-** Description Fake ADM_NOTIFY_ALL_PIPE_CLEARED cmd to nfc task
-**
-** Returns None
-**
-*******************************************************************************/
-void nfc_hal_hci_fake_adm_notify_all_pipe_cleared_to_dh(void) {
- NFC_HDR* p_msg;
- uint8_t *p, *ps;
-
- HAL_TRACE_DEBUG1(
- "nfc_hal_hci_fake_adm_notify_all_pipe_cleared_to_dh (): Fake "
- "ADM_NOTIFY_ALL_PIPE_CLEARED (0x%02x) from HAL",
- NFC_HAL_HCI_HOST_ID_UICC1);
-
- /* Start of new message. Allocate a buffer for message */
- p_msg = (NFC_HDR*)GKI_getpoolbuf(NFC_HAL_NCI_POOL_ID);
- if (p_msg != NULL) {
- /* Initialize NFC_HDR */
- p_msg->len = NCI_DATA_HDR_SIZE + 0x03;
- p_msg->event = 0;
- p_msg->offset = 0;
- p_msg->layer_specific = 0;
-
- p = (uint8_t*)(p_msg + 1) + p_msg->offset;
- ps = p;
- NCI_DATA_BLD_HDR(p, nfc_hal_cb.hci_cb.hcp_conn_id, 0x03);
- /* HCP header with ADMIN pipe id and chaining bit set */
- *p++ = ((1 << 0x07) | (NFC_HAL_HCI_ADMIN_PIPE & 0x7F));
- /* HCP Message header with Command type instruction and
- * ADM_NOTIFY_ALL_PIPE_CLEARED command */
- *p++ = ((NFC_HAL_HCI_COMMAND_TYPE << 6) |
- (NFC_HAL_HCI_ADM_NOTIFY_ALL_PIPE_CLEARED & 0x3F));
- /* HCP Data with UICC1 host id */
- *p = NFC_HAL_HCI_HOST_ID_UICC1;
-
-#ifdef DISP_NCI
- DISP_NCI(ps, (uint16_t)p_msg->len, true);
-#endif
- nfc_hal_send_nci_msg_to_nfc_task(p_msg);
-
- } else {
- HAL_TRACE_ERROR0(
- "Unable to allocate buffer for faking ADM_NOTIFY_ALL_PIPE_CLEARED cmd "
- "from HAL to stack");
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_hci_handle_hcp_pkt_to_hc
-**
-** Description Handle HCP Packet from NFC task to Host Controller
-**
-** Returns FALSE to send the packet to host controller
-** TRUE to drop the packet and fake credit ntf for hcp
-*connection
-**
-*******************************************************************************/
-bool nfc_hal_hci_handle_hcp_pkt_to_hc(uint8_t* p_data) {
- uint8_t chaining_bit;
- uint8_t pipe;
- uint8_t type;
- uint8_t inst;
- uint8_t index;
-
- HAL_TRACE_DEBUG0("nfc_hal_hci_handle_hcp_pkt_to_hc ()");
-
- chaining_bit = ((*p_data) >> 0x07) & 0x01;
- pipe = (*p_data++) & 0x7F;
-
- if ((chaining_bit) && (pipe == NFC_HAL_HCI_ADMIN_PIPE)) {
- type = ((*p_data) >> 0x06) & 0x03;
-
- if (type == NFC_HAL_HCI_COMMAND_TYPE) {
- inst = (*p_data++ & 0x3F);
- if (inst == NFC_HAL_HCI_ANY_GET_PARAMETER) {
- index = *(p_data++);
- if (index == NFC_HAL_HCI_SESSION_IDENTITY_INDEX) {
- /* Set flag to modify session id[0] on response
- * from host controller to set session id cmd
- */
- nfc_hal_cb.hci_cb.update_session_id = true;
- }
- } else if (inst == NFC_HAL_HCI_ANY_SET_PARAMETER) {
- index = *(p_data++);
- if (index == NFC_HAL_HCI_WHITELIST_INDEX) {
- if ((nfc_hal_cb.hci_cb.hci_fw_workaround) &&
- (nfc_hal_cb.nvm_cb.nvm_type == NCI_SPD_NVM_TYPE_UICC)) {
- /* Set flag to fake ADM_NOTIFY_ALL_PIPE_CLEARED cmd to nfc task
- * after
- * response from host controller to set whitelist cmd
- */
- nfc_hal_cb.hci_cb.clear_all_pipes_to_uicc1 = true;
- }
- } else if (index == NFC_HAL_HCI_SESSION_IDENTITY_INDEX) {
- nfc_hal_cb.hci_cb.dh_session_id[0] = *p_data;
- if (p_nfc_hal_cfg->nfc_hal_first_boot)
- *p_data = NFC_HAL_HCI_FIRST_BOOT_SESSION_ID_0_VAL;
- else
- *p_data = NFC_HAL_HCI_NEXT_BOOT_SESSION_ID_0_VAL;
- }
- }
- } else if (type == NFC_HAL_HCI_RESPONSE_TYPE) {
- if ((nfc_hal_cb.hci_cb.hci_fw_workaround) &&
- (nfc_hal_cb.nvm_cb.nvm_type == NCI_SPD_NVM_TYPE_UICC) &&
- (nfc_hal_cb.hci_cb.clear_all_pipes_to_uicc1)) {
- /* Got response to the fake ADM_NOTIFY_ALL_PIPE_CLEARED cmd sent by HAL
- * to nfc task */
- nfc_hal_cb.hci_cb.clear_all_pipes_to_uicc1 = false;
- /* return TRUE to drop this hcp without forwarding to host controller */
- return true;
- }
- }
- }
-
- return false;
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_hci_handle_hcp_pkt_from_hc
-**
-** Description Handle HCP Packet from Host controller to Terminal Host
-**
-** Returns None
-**
-*******************************************************************************/
-void nfc_hal_hci_handle_hcp_pkt_from_hc(uint8_t* p_data) {
- uint8_t chaining_bit;
- uint8_t pipe;
- uint8_t type;
- uint8_t inst;
- uint8_t hci_netwk_cmd[1 + NFC_HAL_HCI_SESSION_ID_LEN];
- uint8_t source_host;
- uint8_t block = 0;
-
- HAL_TRACE_DEBUG0("nfc_hal_hci_handle_hcp_pkt_from_hc ()");
-
- chaining_bit = ((*p_data) >> 0x07) & 0x01;
- pipe = (*p_data++) & 0x7F;
-
- if ((chaining_bit) && (pipe == NFC_HAL_HCI_ADMIN_PIPE)) {
- type = ((*p_data) >> 0x06) & 0x03;
-
- if (type == NFC_HAL_HCI_COMMAND_TYPE) {
- if (!nfc_hal_cb.hci_cb.hci_fw_workaround) return;
-
- inst = (*p_data++ & 0x3F);
-
- if (inst == NFC_HAL_HCI_ADM_NOTIFY_ALL_PIPE_CLEARED) {
- STREAM_TO_UINT8(source_host, p_data);
-
- HAL_TRACE_DEBUG1(
- "nfc_hal_hci_handle_hcp_pkt_from_hc (): Received "
- "ADM_NOTIFY_ALL_PIPE_CLEARED command for UICC: 0x%02x",
- source_host);
- if (source_host == NFC_HAL_HCI_HOST_ID_UICC0) {
- block = HC_F3_NV_BLOCK;
- hci_netwk_cmd[0] = NFC_HAL_HCI_UICC0_TARGET_HANDLE;
- } else if (source_host == NFC_HAL_HCI_HOST_ID_UICC1) {
- block = HC_F4_NV_BLOCK;
- hci_netwk_cmd[0] = NFC_HAL_HCI_UICC1_TARGET_HANDLE;
- } else if (source_host == NFC_HAL_HCI_HOST_ID_UICC2) {
- block = HC_F5_NV_BLOCK;
- hci_netwk_cmd[0] = NFC_HAL_HCI_UICC2_TARGET_HANDLE;
- }
-
- if (source_host >= NFC_HAL_HCI_HOST_ID_UICC0) {
- /* Reset Session ID */
- memset(&hci_netwk_cmd[1], 0xFF, NFC_HAL_HCI_SESSION_ID_LEN);
- nfc_hal_nv_co_write(hci_netwk_cmd, 1, block);
- HAL_TRACE_DEBUG1(
- "nfc_hal_hci_handle_hcp_pkt_from_hc (): Sent command to reset nv "
- "file for block: 0x%02x",
- block);
- }
- }
- } else if (type == NFC_HAL_HCI_RESPONSE_TYPE) {
- if (nfc_hal_cb.hci_cb.update_session_id) {
- nfc_hal_cb.hci_cb.update_session_id = false;
- inst = (*p_data++ & 0x3F);
- if (inst == NFC_HAL_HCI_ANY_OK) {
- /* Correct the session id assigned by DH */
- *p_data = nfc_hal_cb.hci_cb.dh_session_id[0];
- }
- } else if (nfc_hal_cb.hci_cb.clear_all_pipes_to_uicc1) {
- /* NVM Type is UICC and got response from host controller
- * to Set whitelist command. Now fake ADM_NOTIFY_ALL_PIPE_CLEARED cmd to
- * NFC Task and then forward the whitelist cmd response
- */
- nfc_hal_hci_fake_adm_notify_all_pipe_cleared_to_dh();
- }
- }
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_hci_handle_nv_read
-**
-** Description handler function for nv read complete event
-**
-** Returns None
-**
-*******************************************************************************/
-void nfc_hal_hci_handle_nv_read(uint8_t block, tHAL_NFC_STATUS status,
- uint16_t size) {
- uint8_t* p;
- uint8_t* p_hci_netwk_info = NULL;
-
- HAL_TRACE_DEBUG3(
- "nfc_hal_hci_handle_nv_read (): Block: [0x%02x], Status: [0x%02x], Size: "
- "[0x%04x]",
- block, status, size);
-
- /* Stop timer as NVDATA Read Completed */
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.hci_cb.hci_timer);
-
- switch (block) {
- case HC_F3_NV_BLOCK:
- case HC_F4_NV_BLOCK:
- case HC_F5_NV_BLOCK:
- if ((status != HAL_NFC_STATUS_OK) ||
- (size > NFC_HAL_HCI_NETWK_INFO_SIZE) ||
- (size < NFC_HAL_HCI_MIN_NETWK_INFO_SIZE) ||
- ((nfc_hal_cb.hci_cb.hci_fw_workaround) && (block == HC_F4_NV_BLOCK) &&
- (nfc_hal_cb.nvm_cb.nvm_type == NCI_SPD_NVM_TYPE_UICC))) {
- HAL_TRACE_DEBUG1(
- "nfc_hal_hci_handle_nv_read: Invalid data from nv memory, Set "
- "DEFAULT Configuration for block:0x%02x",
- block);
- memset(nfc_hal_cb.hci_cb.p_hci_netwk_info_buf, 0,
- NFC_HAL_HCI_NETWK_INFO_SIZE);
- if (block == HC_F3_NV_BLOCK)
- nfc_hal_cb.hci_cb.p_hci_netwk_info_buf[0] =
- NFC_HAL_HCI_UICC0_TARGET_HANDLE;
- else if (block == HC_F4_NV_BLOCK)
- nfc_hal_cb.hci_cb.p_hci_netwk_info_buf[0] =
- NFC_HAL_HCI_UICC1_TARGET_HANDLE;
- else
- nfc_hal_cb.hci_cb.p_hci_netwk_info_buf[0] =
- NFC_HAL_HCI_UICC2_TARGET_HANDLE;
-
- memset(&nfc_hal_cb.hci_cb.p_hci_netwk_info_buf[1], 0xFF,
- NFC_HAL_HCI_SESSION_ID_LEN);
- size = NFC_HAL_HCI_NETWK_INFO_SIZE;
- }
-
- p_hci_netwk_info =
- (uint8_t*)nfc_hal_cb.hci_cb.p_hci_netwk_info_buf - NCI_MSG_HDR_SIZE;
- break;
-
- case HC_F2_NV_BLOCK:
- nfc_hal_cb.hci_cb.dh_session_id[0] =
- nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf[1];
- if (p_nfc_hal_cfg->nfc_hal_first_boot)
- nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf[1] =
- NFC_HAL_HCI_FIRST_BOOT_SESSION_ID_0_VAL;
- else
- nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf[1] =
- NFC_HAL_HCI_NEXT_BOOT_SESSION_ID_0_VAL;
-
- if ((status != HAL_NFC_STATUS_OK) ||
- (size > NFC_HAL_HCI_DH_NETWK_INFO_SIZE) ||
- (size < NFC_HAL_HCI_MIN_DH_NETWK_INFO_SIZE)) {
- HAL_TRACE_DEBUG1(
- "nfc_hal_hci_handle_nv_read: Invalid data from nv memory, Set "
- "DEFAULT Configuration for block:0x%02x",
- block);
- nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf[0] =
- NFC_HAL_HCI_DH_TARGET_HANDLE;
- nfc_hal_cb.hci_cb.dh_session_id[0] = 0xFF;
- memset(&nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf[2], 0xFF,
- (NFC_HAL_HCI_SESSION_ID_LEN - 1));
- memset((nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf +
- NFC_HAL_HCI_SESSION_ID_LEN + 1),
- 0, (NFC_HAL_HCI_DH_NETWK_INFO_SIZE - NFC_HAL_HCI_SESSION_ID_LEN -
- 1));
- size = NFC_HAL_HCI_DH_NETWK_INFO_SIZE;
- p_hci_netwk_info = (uint8_t*)nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf -
- NCI_MSG_HDR_SIZE;
- } else {
- if ((nfc_hal_cb.hci_cb.hci_fw_workaround) &&
- (nfc_hal_cb.nvm_cb.nvm_type == NCI_SPD_NVM_TYPE_UICC)) {
- /* if NVM Type is UICC, then UICC1 will find session id mismatch when
- * activated for patch download,
- * and will remove pipes connected to DH even before DH is enabled, So
- * DH will update NFCC
- * control block by removing all dynamic pipes connected to UICC1 */
-
- nfc_hal_hci_remove_dyn_pipe_to_uicc1();
- size = NFC_HAL_HCI_DH_NETWK_INFO_SIZE;
- }
- p_hci_netwk_info =
- (uint8_t*)(nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf -
- NCI_MSG_HDR_SIZE);
- }
- break;
-
- default:
- return;
- }
-
- p = p_hci_netwk_info;
- /* Send HCI Network ntf command using nv data */
- NCI_MSG_BLD_HDR0(p, NCI_MT_CMD, NCI_GID_PROP);
- NCI_MSG_BLD_HDR1(p, NCI_MSG_HCI_NETWK);
- UINT8_TO_STREAM(p, (uint8_t)size);
-
- nfc_hal_dm_send_nci_cmd(p_hci_netwk_info, (uint16_t)(NCI_MSG_HDR_SIZE + size),
- nfc_hal_hci_vsc_cback);
-
- nfc_hal_cb.hci_cb.hci_netwk_config_block = block;
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_hci_remove_dyn_pipe_to_uicc1
-**
-** Description Prepare hci network command read from nv file removing
-** all pipes connected to UICC1
-**
-** Returns None
-**
-*******************************************************************************/
-void nfc_hal_hci_remove_dyn_pipe_to_uicc1(void) {
- uint8_t *p, *np;
- uint8_t num_dyn_pipes = 0, new_num_dyn_pipes = 0;
- uint8_t xx;
- uint8_t source_host, dest_host, pipe_id;
-
- HAL_TRACE_DEBUG0("nfc_hal_hci_remove_dyn_pipe_to_uicc1 ()");
-
- p = (uint8_t*)(nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf +
- NFC_HAL_HCI_MIN_DH_NETWK_INFO_SIZE);
- np = p;
- num_dyn_pipes = *(p - 1);
-
- for (xx = 0; xx < num_dyn_pipes; xx++, p += NFC_HAL_HCI_PIPE_INFO_SIZE) {
- source_host = *(uint8_t*)(p);
- dest_host = *(uint8_t*)(p + 1);
- pipe_id = *(uint8_t*)(p + 4);
-
- if ((source_host != NFC_HAL_HCI_HOST_ID_UICC1) &&
- (dest_host != NFC_HAL_HCI_HOST_ID_UICC1)) {
- memcpy(np, p, NFC_HAL_HCI_PIPE_INFO_SIZE);
- np += NFC_HAL_HCI_PIPE_INFO_SIZE;
- new_num_dyn_pipes++;
- }
- }
-
- memset((uint8_t*)(np), 0,
- NFC_HAL_HCI_PIPE_INFO_SIZE * (20 - new_num_dyn_pipes));
-
- /* Update number of pipes after removing pipes connected to UICC1 */
- p = (uint8_t*)(nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf +
- NFC_HAL_HCI_MIN_DH_NETWK_INFO_SIZE);
- *(p - 1) = new_num_dyn_pipes;
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_hci_init_complete
-**
-** Description Notify VSC initialization is complete
-**
-** Returns None
-**
-*******************************************************************************/
-void nfc_hal_hci_init_complete(tHAL_NFC_STATUS status) {
- uint8_t* p_hci_netwk_cmd;
-
- HAL_TRACE_DEBUG1("nfc_hal_hci_init_complete (): Status: [0x%02x]", status);
-
- if (nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf) {
- p_hci_netwk_cmd = (uint8_t*)(nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf -
- NCI_MSG_HDR_SIZE);
- GKI_freebuf(p_hci_netwk_cmd);
- nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf = NULL;
- }
-
- if (nfc_hal_cb.hci_cb.p_hci_netwk_info_buf) {
- p_hci_netwk_cmd =
- (uint8_t*)(nfc_hal_cb.hci_cb.p_hci_netwk_info_buf - NCI_MSG_HDR_SIZE);
- GKI_freebuf(p_hci_netwk_cmd);
- nfc_hal_cb.hci_cb.p_hci_netwk_info_buf = NULL;
- }
-
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
-
- nfc_hal_cb.p_stack_cback(HAL_NFC_POST_INIT_CPLT_EVT, status);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_hci_set_next_hci_netwk_config
-**
-** Description set next hci network configuration
-**
-** Returns None
-**
-*******************************************************************************/
-void nfc_hal_hci_set_next_hci_netwk_config(uint8_t block) {
- uint8_t* p_hci_netwk_cmd;
-
- HAL_TRACE_DEBUG1("nfc_hal_hci_set_next_hci_netwk_config (): Block: [0x%02x]",
- block);
-
- switch (block) {
- case HC_F3_NV_BLOCK:
- if ((p_nfc_hal_cfg->nfc_hal_hci_uicc_support & HAL_NFC_HCI_UICC1_HOST) &&
- (nfc_hal_cb.hci_cb.p_hci_netwk_info_buf) &&
- ((!nfc_hal_cb.hci_cb.hci_fw_workaround) ||
- (nfc_hal_cb.nvm_cb.nvm_type == NCI_SPD_NVM_TYPE_EEPROM))) {
- /* Send command to read nvram data for 0xF4 */
- memset(nfc_hal_cb.hci_cb.p_hci_netwk_info_buf, 0,
- NFC_HAL_HCI_NETWK_INFO_SIZE);
- nfc_hal_nv_co_read((uint8_t*)nfc_hal_cb.hci_cb.p_hci_netwk_info_buf,
- NFC_HAL_HCI_NETWK_INFO_SIZE, HC_F4_NV_BLOCK);
- nfc_hal_main_start_quick_timer(&nfc_hal_cb.hci_cb.hci_timer,
- NFC_HAL_HCI_VSC_TIMEOUT_EVT,
- NFC_HAL_HCI_NV_READ_TIMEOUT);
- break;
- }
- HAL_TRACE_DEBUG2(
- "nfc_hal_hci_set_next_hci_netwk_config (): Skip send F4 HCI NETWK "
- "CMD for UICC Mask: 0x%02x & NVM Type: 0x%02x",
- p_nfc_hal_cfg->nfc_hal_hci_uicc_support, nfc_hal_cb.nvm_cb.nvm_type);
-
- case HC_F4_NV_BLOCK:
- if ((p_nfc_hal_cfg->nfc_hal_hci_uicc_support & HAL_NFC_HCI_UICC2_HOST) &&
- (nfc_hal_cb.hci_cb.p_hci_netwk_info_buf)) {
- /* Send command to read nvram data for 0xF5 */
- memset(nfc_hal_cb.hci_cb.p_hci_netwk_info_buf, 0,
- NFC_HAL_HCI_NETWK_INFO_SIZE);
- nfc_hal_nv_co_read((uint8_t*)nfc_hal_cb.hci_cb.p_hci_netwk_info_buf,
- NFC_HAL_HCI_NETWK_INFO_SIZE, HC_F5_NV_BLOCK);
- nfc_hal_main_start_quick_timer(&nfc_hal_cb.hci_cb.hci_timer,
- NFC_HAL_HCI_VSC_TIMEOUT_EVT,
- NFC_HAL_HCI_NV_READ_TIMEOUT);
- break;
- }
- HAL_TRACE_DEBUG2(
- "nfc_hal_hci_set_next_hci_netwk_config (): Skip send F5 HCI NETWK "
- "CMD for UICC Mask: 0x%02x & NVM Type: 0x%02x",
- p_nfc_hal_cfg->nfc_hal_hci_uicc_support, nfc_hal_cb.nvm_cb.nvm_type);
-
- case HC_F5_NV_BLOCK:
- p_hci_netwk_cmd = (uint8_t*)GKI_getbuf(NCI_MSG_HDR_SIZE +
- NFC_HAL_HCI_DH_NETWK_INFO_SIZE);
- if (p_hci_netwk_cmd == NULL) {
- HAL_TRACE_ERROR0(
- "nfc_hal_hci_set_next_hci_netwk_config: unable to allocate buffer "
- "for reading hci network info from nvram");
- nfc_hal_hci_init_complete(HAL_NFC_STATUS_FAILED);
- } else {
- nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf =
- (uint8_t*)(p_hci_netwk_cmd + NCI_MSG_HDR_SIZE);
- /* Send command to read nvram data for 0xF2 */
- memset(nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf, 0,
- NFC_HAL_HCI_DH_NETWK_INFO_SIZE);
- nfc_hal_nv_co_read((uint8_t*)nfc_hal_cb.hci_cb.p_hci_netwk_dh_info_buf,
- NFC_HAL_HCI_DH_NETWK_INFO_SIZE, HC_F2_NV_BLOCK);
- nfc_hal_main_start_quick_timer(&nfc_hal_cb.hci_cb.hci_timer,
- NFC_HAL_HCI_VSC_TIMEOUT_EVT,
- NFC_HAL_HCI_NV_READ_TIMEOUT);
- }
- break;
-
- case HC_F2_NV_BLOCK:
- nfc_hal_hci_init_complete(HAL_NFC_STATUS_OK);
- break;
-
- default:
- HAL_TRACE_ERROR1(
- "nfc_hal_hci_set_next_hci_netwk_config: unable to allocate buffer to "
- "send VSC 0x%02x",
- block);
- /* Brcm initialization failed */
- nfc_hal_hci_init_complete(HAL_NFC_STATUS_FAILED);
- break;
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_hci_vsc_cback
-**
-** Description process VS callback event from stack
-**
-** Returns none
-**
-*******************************************************************************/
-static void nfc_hal_hci_vsc_cback(tNFC_HAL_NCI_EVT event, uint16_t data_len,
- uint8_t* p_data) {
- uint8_t* p_ret = NULL;
- uint8_t status;
-
- p_ret = p_data + NCI_MSG_HDR_SIZE;
- status = *p_ret;
-
- HAL_TRACE_DEBUG3(
- "nfc_hal_hci_vsc_cback (): Event: [0x%02x], Data length: [0x%04x], "
- "Status: [0x%02x]",
- event, data_len, status);
-
- if (event != NFC_VS_HCI_NETWK_RSP) return;
-
- if (status != HAL_NFC_STATUS_OK) {
- nfc_hal_hci_init_complete(HAL_NFC_STATUS_FAILED);
- return;
- }
-
- switch (nfc_hal_cb.hci_cb.hci_netwk_config_block) {
- case HC_F3_NV_BLOCK:
- case HC_F4_NV_BLOCK:
- case HC_F5_NV_BLOCK:
- case HC_F2_NV_BLOCK:
- nfc_hal_hci_set_next_hci_netwk_config(
- nfc_hal_cb.hci_cb.hci_netwk_config_block);
- break;
-
- default:
- /* Ignore the event */
- break;
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_nci_cmd_timeout_cback
-**
-** Description callback function for timeout
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_hci_timeout_cback(void* p_tle) {
- TIMER_LIST_ENT* p_tlent = (TIMER_LIST_ENT*)p_tle;
-
- HAL_TRACE_DEBUG0("nfc_hal_hci_timeout_cback ()");
-
- if (p_tlent->event == NFC_HAL_HCI_VSC_TIMEOUT_EVT) {
- HAL_TRACE_ERROR0(
- "nfc_hal_hci_timeout_cback: Timeout - NFC HAL HCI BRCM Initialization "
- "Failed!");
- nfc_hal_hci_init_complete(HAL_NFC_STATUS_FAILED);
- }
-}
-
-#endif
diff --git a/halimpl/bcm2079x/hal/hal/nfc_hal_hci_ci.c b/halimpl/bcm2079x/hal/hal/nfc_hal_hci_ci.c
deleted file mode 100644
index 73bf6a5..0000000
--- a/halimpl/bcm2079x/hal/hal/nfc_hal_hci_ci.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2010-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * This file contains the call-in functions for NFC HAL HCI
- *
- ******************************************************************************/
-#include <string.h>
-#include "gki.h"
-#include "nfc_hal_api.h"
-#include "nfc_hal_int.h"
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
-#include "nfc_hal_nv_ci.h"
-#include "nfc_hal_nv_co.h"
-
-/*******************************************************************************
-**
-** Function nfc_hal_nv_ci_read
-**
-** Description call-in function for non volatile memory read acess
-**
-** Returns none
-**
-*******************************************************************************/
-void nfc_hal_nv_ci_read(uint16_t num_bytes_read, tNFC_HAL_NV_CO_STATUS status,
- uint8_t block) {
- tNFC_HAL_HCI_EVENT_DATA* p_msg;
-
- /* Send message to NCIT task */
- p_msg = (tNFC_HAL_HCI_EVENT_DATA*)GKI_getbuf(sizeof(tNFC_HAL_HCI_EVENT_DATA));
- if (p_msg != NULL) {
- p_msg->nv_read.hdr.event = NFC_HAL_HCI_RSP_NV_READ_EVT;
- p_msg->hdr.offset = 0;
- p_msg->hdr.len = sizeof(tNFC_HAL_HCI_RSP_NV_READ_EVT);
- p_msg->hdr.layer_specific = 0;
-
- if ((status == NFC_HAL_NV_CO_OK) && (num_bytes_read != 0))
- p_msg->nv_read.status = HAL_NFC_STATUS_OK;
- else
- p_msg->nv_read.status = HAL_NFC_STATUS_FAILED;
-
- p_msg->nv_read.size = num_bytes_read;
- p_msg->nv_read.block = block;
-
- GKI_send_msg(NFC_HAL_TASK, NFC_HAL_TASK_MBOX, p_msg);
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_nv_ci_write
-**
-** Description call-in function for non volatile memory write acess
-**
-** Returns none
-**
-*******************************************************************************/
-void nfc_hal_nv_ci_write(tNFC_HAL_NV_CO_STATUS status) {
- tNFC_HAL_HCI_EVENT_DATA* p_msg;
-
- p_msg = (tNFC_HAL_HCI_EVENT_DATA*)GKI_getbuf(sizeof(tNFC_HAL_HCI_EVENT_DATA));
- if (p_msg != NULL) {
- p_msg->nv_write.hdr.event = NFC_HAL_HCI_RSP_NV_WRITE_EVT;
- p_msg->nv_write.hdr.offset = 0;
- p_msg->nv_write.hdr.len = sizeof(tNFC_HAL_HCI_RSP_NV_READ_EVT);
- p_msg->nv_write.hdr.layer_specific = 0;
- p_msg->nv_write.status = HAL_NFC_STATUS_OK;
-
- GKI_send_msg(NFC_HAL_TASK, NFC_HAL_TASK_MBOX, p_msg);
- }
-}
-
-#endif
diff --git a/halimpl/bcm2079x/hal/hal/nfc_hal_main.c b/halimpl/bcm2079x/hal/hal/nfc_hal_main.c
deleted file mode 100644
index 7b4e79b..0000000
--- a/halimpl/bcm2079x/hal/hal/nfc_hal_main.c
+++ /dev/null
@@ -1,740 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2010-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Functions for handling NFC HAL NCI Transport events
- *
- ******************************************************************************/
-#include <string.h>
-#include "nfc_hal_int.h"
-#include "nfc_hal_post_reset.h"
-#include "upio.h"
-#include "userial.h"
-
-/****************************************************************************
-** Definitions
-****************************************************************************/
-
-/* Default NFC HAL NCI port configuration */
-NFC_HAL_TRANS_CFG_QUALIFIER tNFC_HAL_TRANS_CFG nfc_hal_trans_cfg = {
- NFC_HAL_SHARED_TRANSPORT_ENABLED, /* bSharedTransport */
- USERIAL_BAUD_115200, /* Baud rate */
- USERIAL_FC_HW /* Flow control */
-};
-
-/* Control block for NFC HAL NCI transport */
-tNFC_HAL_CB nfc_hal_cb;
-
-extern tNFC_HAL_CFG* p_nfc_hal_cfg;
-/****************************************************************************
-** Internal function prototypes
-****************************************************************************/
-static void nfc_hal_main_userial_cback(tUSERIAL_PORT port, tUSERIAL_EVT evt,
- tUSERIAL_EVT_DATA* p_data);
-static void nfc_hal_main_handle_terminate(void);
-static void nfc_hal_main_timeout_cback(void* p_tle);
-
-#if (NFC_HAL_DEBUG == TRUE)
-const char* const nfc_hal_init_state_str[] = {
- "IDLE", /* Initialization is done */
- "W4_XTAL_SET", /* Waiting for crystal setting rsp */
- "POST_XTAL_SET", /* Waiting for reset ntf after xtal set */
- "W4_NFCC_ENABLE", /* Waiting for reset ntf atter REG_PU up */
- "W4_BUILD_INFO", /* Waiting for build info rsp */
- "W4_PATCH_INFO", /* Waiting for patch info rsp */
- "W4_APP_COMPL", /* Waiting for complete from application */
- "W4_POST_INIT", /* Waiting for complete of post init */
- "W4_CONTROL", /* Waiting for control release */
- "W4_PREDISC", /* Waiting for complete of prediscover */
- "CLOSING" /* Shutting down */
-};
-#endif
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_init
-**
-** Description This function initializes control block for NFC HAL
-**
-** Returns nothing
-**
-*******************************************************************************/
-void nfc_hal_main_init(void) {
- /* Clear control block */
- memset(&nfc_hal_cb, 0, sizeof(tNFC_HAL_CB));
-
- nfc_hal_cb.ncit_cb.nci_ctrl_size = NFC_HAL_NCI_INIT_CTRL_PAYLOAD_SIZE;
- nfc_hal_cb.trace_level = NFC_HAL_INITIAL_TRACE_LEVEL;
- nfc_hal_cb.timer.p_cback = nfc_hal_main_timeout_cback;
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_open_transport
-**
-** Description Open transport and prepare for new incoming message;
-**
-** Returns nothing
-**
-*******************************************************************************/
-static void nfc_hal_main_open_transport(void) {
- tUSERIAL_OPEN_CFG open_cfg;
-
- /* Initialize control block */
- nfc_hal_cb.ncit_cb.rcv_state =
- NFC_HAL_RCV_IDLE_ST; /* to process packet type */
-
- if (nfc_hal_cb.ncit_cb.p_rcv_msg) {
- GKI_freebuf(nfc_hal_cb.ncit_cb.p_rcv_msg);
- nfc_hal_cb.ncit_cb.p_rcv_msg = NULL;
- }
-
- /* open transport */
- open_cfg.fmt =
- (USERIAL_DATABITS_8 | USERIAL_PARITY_NONE | USERIAL_STOPBITS_1);
- open_cfg.baud = nfc_hal_trans_cfg.userial_baud;
- open_cfg.fc = nfc_hal_trans_cfg.userial_fc;
- open_cfg.buf = USERIAL_BUF_BYTE;
-
- USERIAL_Open(USERIAL_NFC_PORT, &open_cfg, nfc_hal_main_userial_cback);
-
- {
- /* Wait for NFCC to enable - Core reset notification */
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_W4_NFCC_ENABLE);
-
- /* NFCC Enable timeout */
- nfc_hal_main_start_quick_timer(
- &nfc_hal_cb.timer, NFC_HAL_TTYPE_NFCC_ENABLE,
- ((p_nfc_hal_cfg->nfc_hal_nfcc_enable_timeout) *
- QUICK_TIMER_TICKS_PER_SEC) /
- 1000);
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_close
-**
-** Description Check and shutdown NFCC
-**
-** Returns None
-**
-*******************************************************************************/
-void nfc_hal_main_close(void) {
- tHAL_NFC_CBACK* p_stack_cback_temp;
-
- if ((nfc_hal_cb.dev_cb.initializing_state !=
- NFC_HAL_INIT_STATE_W4_NFCC_TURN_OFF) &&
- (nfc_hal_cb.hal_flags & NFC_HAL_FLAGS_NEED_DISABLE_VSC)) {
- nfc_hal_cb.dev_cb.initializing_state = NFC_HAL_INIT_STATE_W4_NFCC_TURN_OFF;
- nfc_hal_dm_set_power_level_zero();
- } else {
- nfc_hal_main_handle_terminate();
-
- /* Close uart */
- USERIAL_Close(USERIAL_NFC_PORT);
-
- if (nfc_hal_cb.p_stack_cback) {
- p_stack_cback_temp = nfc_hal_cb.p_stack_cback;
- nfc_hal_cb.p_stack_cback = NULL;
- p_stack_cback_temp(HAL_NFC_CLOSE_CPLT_EVT, HAL_NFC_STATUS_OK);
- }
- }
-}
-
-/*******************************************************************************
-**
-** Function nfa_hal_pre_discover_done_cback
-**
-** Description Pre-discovery CFG is sent.
-**
-** Returns nothing
-**
-*******************************************************************************/
-void nfa_hal_pre_discover_done_cback(tNFC_HAL_NCI_EVT event, uint16_t data_len,
- uint8_t* p_data) {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.ncit_cb.nci_wait_rsp_timer);
- nfc_hal_cb.p_stack_cback(HAL_NFC_PRE_DISCOVER_CPLT_EVT, HAL_NFC_STATUS_OK);
-}
-
-/*******************************************************************************
-**
-** Function nfa_hal_send_pre_discover_cfg
-**
-** Description sending Pre-discovery CFG
-**
-** Returns nothing
-**
-*******************************************************************************/
-void nfa_hal_send_pre_discover_cfg(void) {
- if (nfc_hal_dm_set_config(
- p_nfc_hal_pre_discover_cfg[0], &p_nfc_hal_pre_discover_cfg[1],
- nfa_hal_pre_discover_done_cback) != HAL_NFC_STATUS_OK) {
- nfa_hal_pre_discover_done_cback(0, 0, NULL);
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_send_error
-**
-** Description send an Error event to NFC stack
-**
-** Returns nothing
-**
-*******************************************************************************/
-void nfc_hal_main_send_error(tHAL_NFC_STATUS status) {
- /* Notify stack */
- nfc_hal_cb.p_stack_cback(HAL_NFC_ERROR_EVT, status);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_userial_cback
-**
-** Description USERIAL callback for NCI transport
-**
-** Returns nothing
-**
-*******************************************************************************/
-static void nfc_hal_main_userial_cback(tUSERIAL_PORT port, tUSERIAL_EVT evt,
- tUSERIAL_EVT_DATA* p_data) {
- if (evt == USERIAL_RX_READY_EVT) {
- /* Notify transport task of serial port event */
- GKI_send_event(NFC_HAL_TASK, NFC_HAL_TASK_EVT_DATA_RDY);
- } else if (evt == USERIAL_TX_DONE_EVT) {
- /* Serial driver has finshed sending data from USERIAL_Write */
- /* Currently, no action is needed for this event */
- } else if (evt == USERIAL_ERR_EVT) {
- HAL_TRACE_ERROR0(
- "nfc_hal_main_userial_cback: USERIAL_ERR_EVT. Notifying NFC_TASK of "
- "transport error");
- if (nfc_hal_cb.ncit_cb.nci_wait_rsp != NFC_HAL_WAIT_RSP_NONE) {
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.ncit_cb.nci_wait_rsp_timer);
- nfc_hal_nci_cmd_timeout_cback(
- (void*)&nfc_hal_cb.ncit_cb.nci_wait_rsp_timer);
- } else {
- nfc_hal_main_send_error(HAL_NFC_STATUS_ERR_TRANSPORT);
- }
- } else if (evt == USERIAL_WAKEUP_EVT) {
- HAL_TRACE_DEBUG1("nfc_hal_main_userial_cback: USERIAL_WAKEUP_EVT: %d",
- p_data->sigs);
- } else {
- HAL_TRACE_DEBUG1("nfc_hal_main_userial_cback: unhandled userial evt: %i",
- evt);
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_exit_op_done
-**
-** Description handle completion of HAL exit operation
-**
-** Returns nothing
-**
-*******************************************************************************/
-void nfc_hal_main_exit_op_done(tNFC_HAL_NCI_EVT event, uint16_t data_len,
- uint8_t* p_data) {
- nfc_hal_main_close();
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_pre_init_done
-**
-** Description notify complete of pre-initialization
-**
-** Returns nothing
-**
-*******************************************************************************/
-void nfc_hal_main_pre_init_done(tHAL_NFC_STATUS status) {
- HAL_TRACE_DEBUG1("nfc_hal_main_pre_init_done () status = %d", status);
-
- if (status != HAL_NFC_STATUS_OK) {
- nfc_hal_main_handle_terminate();
-
- /* Close uart */
- USERIAL_Close(USERIAL_NFC_PORT);
- }
-
- /* Notify NFC Task the status of initialization */
- nfc_hal_cb.p_stack_cback(HAL_NFC_OPEN_CPLT_EVT, status);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_timeout_cback
-**
-** Description callback function for timeout
-**
-** Returns void
-**
-*******************************************************************************/
-static void nfc_hal_main_timeout_cback(void* p_tle) {
- TIMER_LIST_ENT* p_tlent = (TIMER_LIST_ENT*)p_tle;
-
- HAL_TRACE_DEBUG0("nfc_hal_main_timeout_cback ()");
-
- switch (p_tlent->event) {
- case NFC_HAL_TTYPE_POWER_CYCLE:
- nfc_hal_main_open_transport();
- break;
-
- case NFC_HAL_TTYPE_NFCC_ENABLE:
- /* NFCC should have enabled now, notify transport openned */
- nfc_hal_dm_pre_init_nfcc();
- break;
-
- default:
- HAL_TRACE_DEBUG1(
- "nfc_hal_main_timeout_cback: unhandled timer event (0x%04x)",
- p_tlent->event);
- break;
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_handle_terminate
-**
-** Description Handle NFI transport shutdown
-**
-** Returns nothing
-**
-*******************************************************************************/
-static void nfc_hal_main_handle_terminate(void) {
- NFC_HDR* p_msg;
-
- /* dequeue and free buffer */
- if (nfc_hal_cb.ncit_cb.p_pend_cmd != NULL) {
- GKI_freebuf(nfc_hal_cb.ncit_cb.p_pend_cmd);
- nfc_hal_cb.ncit_cb.p_pend_cmd = NULL;
- }
-
- /* Free unsent nfc rx buffer */
- if (nfc_hal_cb.ncit_cb.p_rcv_msg) {
- GKI_freebuf(nfc_hal_cb.ncit_cb.p_rcv_msg);
- nfc_hal_cb.ncit_cb.p_rcv_msg = NULL;
- }
-
- /* Free buffer for pending fragmented response/notification */
- if (nfc_hal_cb.ncit_cb.p_frag_msg) {
- GKI_freebuf(nfc_hal_cb.ncit_cb.p_frag_msg);
- nfc_hal_cb.ncit_cb.p_frag_msg = NULL;
- }
-
- /* Free buffers in the tx mbox */
- while ((p_msg = (NFC_HDR*)GKI_read_mbox(NFC_HAL_TASK_MBOX)) != NULL) {
- GKI_freebuf(p_msg);
- }
-
- /* notify closing transport */
- nfc_hal_dm_shutting_down_nfcc();
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_start_quick_timer
-**
-** Description Start a timer for the specified amount of time.
-** NOTE: The timeout resolution depends on including modules.
-** QUICK_TIMER_TICKS_PER_SEC should be used to convert from
-** time to ticks.
-**
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_main_start_quick_timer(TIMER_LIST_ENT* p_tle, uint16_t type,
- uint32_t timeout) {
- NFC_HDR* p_msg;
-
- /* if timer list is currently empty, start periodic GKI timer */
- if (nfc_hal_cb.quick_timer_queue.p_first == NULL) {
- /* if timer starts on other than NCIT task (script wrapper) */
- if (GKI_get_taskid() != NFC_HAL_TASK) {
- /* post event to start timer in NCIT task */
- p_msg = (NFC_HDR*)GKI_getbuf(NFC_HDR_SIZE);
- if (p_msg != NULL) {
- p_msg->event = NFC_HAL_EVT_TO_START_QUICK_TIMER;
- GKI_send_msg(NFC_HAL_TASK, NFC_HAL_TASK_MBOX, p_msg);
- }
- } else {
- GKI_start_timer(NFC_HAL_QUICK_TIMER_ID,
- ((GKI_SECS_TO_TICKS(1) / QUICK_TIMER_TICKS_PER_SEC)),
- true);
- }
- }
-
- GKI_remove_from_timer_list(&nfc_hal_cb.quick_timer_queue, p_tle);
-
- p_tle->event = type;
- p_tle->ticks = timeout; /* Save the number of ticks for the timer */
-
- GKI_add_to_timer_list(&nfc_hal_cb.quick_timer_queue, p_tle);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_stop_quick_timer
-**
-** Description Stop a timer.
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_main_stop_quick_timer(TIMER_LIST_ENT* p_tle) {
- GKI_remove_from_timer_list(&nfc_hal_cb.quick_timer_queue, p_tle);
-
- /* if timer list is empty stop periodic GKI timer */
- if (nfc_hal_cb.quick_timer_queue.p_first == NULL) {
- GKI_stop_timer(NFC_HAL_QUICK_TIMER_ID);
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_process_quick_timer_evt
-**
-** Description Process quick timer event
-**
-** Returns void
-**
-*******************************************************************************/
-static void nfc_hal_main_process_quick_timer_evt(void) {
- TIMER_LIST_ENT* p_tle;
-
- GKI_update_timer_list(&nfc_hal_cb.quick_timer_queue, 1);
-
- while ((nfc_hal_cb.quick_timer_queue.p_first) &&
- (!nfc_hal_cb.quick_timer_queue.p_first->ticks)) {
- p_tle = nfc_hal_cb.quick_timer_queue.p_first;
- GKI_remove_from_timer_list(&nfc_hal_cb.quick_timer_queue, p_tle);
-
- if (p_tle->p_cback) {
- (*p_tle->p_cback)(p_tle);
- }
- }
-
- /* if timer list is empty stop periodic GKI timer */
- if (nfc_hal_cb.quick_timer_queue.p_first == NULL) {
- GKI_stop_timer(NFC_HAL_QUICK_TIMER_ID);
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_send_nci_msg_to_nfc_task
-**
-** Description This function is called to send nci message to nfc task
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_send_nci_msg_to_nfc_task(NFC_HDR* p_msg) {
-#ifdef NFC_HAL_SHARED_GKI
- /* Using shared NFC/HAL GKI resources - send message buffer directly to
- * NFC_TASK for processing */
- p_msg->event = BT_EVT_TO_NFC_NCI;
- GKI_send_msg(NFC_TASK, NFC_MBOX_ID, p_msg);
-#else
- /* Send NCI message to the stack */
- nfc_hal_cb.p_data_cback(p_msg->len, (uint8_t*)((p_msg + 1) + p_msg->offset));
- GKI_freebuf(p_msg);
-#endif
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_send_credit_ntf_for_cid
-**
-** Description This function is called to send credit ntf
-** for the specified connection id to nfc task
-**
-** Returns void
-**
-*******************************************************************************/
-static void nfc_hal_send_credit_ntf_for_cid(uint8_t cid) {
- NFC_HDR* p_msg;
- uint8_t *p, *ps;
-
- /* Start of new message. Allocate a buffer for message */
- p_msg = (NFC_HDR*)GKI_getpoolbuf(NFC_HAL_NCI_POOL_ID);
- if (p_msg != NULL) {
- /* Initialize NFC_HDR */
- p_msg->len = NCI_DATA_HDR_SIZE + 0x03;
- p_msg->event = 0;
- p_msg->offset = 0;
- p_msg->layer_specific = 0;
-
- p = (uint8_t*)(p_msg + 1) + p_msg->offset;
- ps = p;
- NCI_MSG_BLD_HDR0(p, NCI_MT_NTF, NCI_GID_CORE);
- NCI_MSG_BLD_HDR1(p, NCI_MSG_CORE_CONN_CREDITS);
- UINT8_TO_STREAM(p, 0x03);
-
- /* Number of credit entries */
- *p++ = 0x01;
- /* Connection id of the credit ntf */
- *p++ = cid;
- /* Number of credits */
- *p = 0x01;
-#ifdef DISP_NCI
- DISP_NCI(ps, (uint16_t)p_msg->len, true);
-#endif
- nfc_hal_send_nci_msg_to_nfc_task(p_msg);
- } else {
- HAL_TRACE_ERROR0(
- "Unable to allocate buffer for Sending credit ntf to stack");
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_send_message
-**
-** Description This function is calledto send an NCI message.
-**
-** Returns void
-**
-*******************************************************************************/
-static void nfc_hal_main_send_message(NFC_HDR* p_msg) {
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
- uint8_t cid, pbf;
- uint16_t data_len;
-#endif
- uint8_t *ps, *pp;
- uint16_t len = p_msg->len;
-#ifdef DISP_NCI
- uint8_t delta;
-#endif
-
- HAL_TRACE_DEBUG1("nfc_hal_main_send_message() ls:0x%x",
- p_msg->layer_specific);
- if ((p_msg->layer_specific == NFC_HAL_WAIT_RSP_CMD) ||
- (p_msg->layer_specific == NFC_HAL_WAIT_RSP_VSC)) {
- nfc_hal_nci_send_cmd(p_msg);
- } else {
- /* NFC task has fragmented the data packet to the appropriate size
- * and data credit is available; just send it */
-
- /* add NCI packet type in front of message */
- nfc_hal_nci_add_nfc_pkt_type(p_msg);
-
- /* send this packet to transport */
- ps = (uint8_t*)(p_msg + 1) + p_msg->offset;
- pp = ps + 1;
-#ifdef DISP_NCI
- delta = p_msg->len - len;
- DISP_NCI(ps + delta, (uint16_t)(p_msg->len - delta), false);
-#endif
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
- if (nfc_hal_cb.hci_cb.hcp_conn_id) {
- NCI_DATA_PRS_HDR(pp, pbf, cid, data_len);
- if (cid == nfc_hal_cb.hci_cb.hcp_conn_id) {
- if (nfc_hal_hci_handle_hcp_pkt_to_hc(pp)) {
- HAL_TRACE_DEBUG0(
- "nfc_hal_main_send_message() - Drop rsp to Fake cmd, Fake credit "
- "ntf");
- GKI_freebuf(p_msg);
- nfc_hal_send_credit_ntf_for_cid(cid);
- return;
- }
- }
- }
-#endif
-
- /* check low power mode state */
- if (nfc_hal_dm_power_mode_execute(NFC_HAL_LP_TX_DATA_EVT)) {
- USERIAL_Write(USERIAL_NFC_PORT, ps, p_msg->len);
- } else {
- HAL_TRACE_ERROR0(
- "nfc_hal_main_send_message(): drop data in low power mode");
- }
- GKI_freebuf(p_msg);
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_main_task
-**
-** Description NFC HAL NCI transport event processing task
-**
-** Returns 0
-**
-*******************************************************************************/
-uint32_t nfc_hal_main_task(uint32_t param) {
- uint16_t event;
- uint8_t byte;
- uint8_t num_interfaces;
- uint8_t* p;
- NFC_HDR* p_msg;
- bool free_msg;
-
- HAL_TRACE_DEBUG0("NFC_HAL_TASK started");
-
- /* Main loop */
- while (true) {
- event = GKI_wait(0xFFFF, 0);
-
- /* Handle NFC_HAL_TASK_EVT_INITIALIZE (for initializing NCI transport) */
- if (event & NFC_HAL_TASK_EVT_INITIALIZE) {
- HAL_TRACE_DEBUG0(
- "NFC_HAL_TASK got NFC_HAL_TASK_EVT_INITIALIZE signal. Opening NFC "
- "transport...");
-
- nfc_hal_main_open_transport();
- }
-
- /* Check for terminate event */
- if (event & NFC_HAL_TASK_EVT_TERMINATE) {
- HAL_TRACE_DEBUG0("NFC_HAL_TASK got NFC_HAL_TASK_EVT_TERMINATE");
-
- nfc_hal_main_close();
-
- continue;
- }
-
- /* Check for power cycle event */
- if (event & NFC_HAL_TASK_EVT_POWER_CYCLE) {
- HAL_TRACE_DEBUG0("NFC_HAL_TASK got NFC_HAL_TASK_EVT_POWER_CYCLE");
- nfc_hal_main_handle_terminate();
-
- /* Close uart */
- USERIAL_Close(USERIAL_NFC_PORT);
-
- /* power cycle timeout */
- nfc_hal_main_start_quick_timer(
- &nfc_hal_cb.timer, NFC_HAL_TTYPE_POWER_CYCLE,
- (NFC_HAL_POWER_CYCLE_DELAY * QUICK_TIMER_TICKS_PER_SEC) / 1000);
- continue;
- }
-
- /* NCI message ready to be sent to NFCC */
- if (event & NFC_HAL_TASK_EVT_MBOX) {
- while ((p_msg = (NFC_HDR*)GKI_read_mbox(NFC_HAL_TASK_MBOX)) != NULL) {
- free_msg = true;
- switch (p_msg->event & NFC_EVT_MASK) {
- case NFC_HAL_EVT_TO_NFC_NCI:
- nfc_hal_main_send_message(p_msg);
- /* do not free buffer. NCI VS code may keep it for processing later
- */
- free_msg = false;
- break;
-
- case NFC_HAL_EVT_POST_CORE_RESET:
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_W4_POST_INIT_DONE);
-
- /* set NCI Control packet size from CORE_INIT_RSP */
- p = (uint8_t*)(p_msg + 1) + p_msg->offset + NCI_MSG_HDR_SIZE;
- p += 5;
- STREAM_TO_UINT8(num_interfaces, p);
- p += (num_interfaces + 3);
- nfc_hal_cb.ncit_cb.nci_ctrl_size = *p;
-
- /* start post initialization */
- nfc_hal_cb.dev_cb.next_dm_config = NFC_HAL_DM_CONFIG_LPTD;
- nfc_hal_cb.dev_cb.next_startup_vsc = 1;
-
- nfc_hal_dm_config_nfcc();
- break;
-
- case NFC_HAL_EVT_TO_START_QUICK_TIMER:
- GKI_start_timer(
- NFC_HAL_QUICK_TIMER_ID,
- ((GKI_SECS_TO_TICKS(1) / QUICK_TIMER_TICKS_PER_SEC)), true);
- break;
-
- case NFC_HAL_EVT_HCI:
- nfc_hal_hci_evt_hdlr((tNFC_HAL_HCI_EVENT_DATA*)p_msg);
- break;
-
- case NFC_HAL_EVT_PRE_DISCOVER:
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_W4_PREDISCOVER_DONE);
- nfa_hal_send_pre_discover_cfg();
- break;
-
- case NFC_HAL_EVT_CONTROL_GRANTED:
- nfc_hal_dm_send_pend_cmd();
- break;
-
- default:
- break;
- }
-
- if (free_msg) GKI_freebuf(p_msg);
- }
- }
-
- /* Data waiting to be read from serial port */
- if (event & NFC_HAL_TASK_EVT_DATA_RDY) {
- while (true) {
- /* Read one byte to see if there is anything waiting to be read */
- if (USERIAL_Read(USERIAL_NFC_PORT, &byte, 1) == 0) {
- break;
- }
-
- if (nfc_hal_nci_receive_msg(byte)) {
- /* complete of receiving NCI message */
- nfc_hal_nci_assemble_nci_msg();
- if (nfc_hal_cb.ncit_cb.p_rcv_msg) {
- if (nfc_hal_nci_preproc_rx_nci_msg(nfc_hal_cb.ncit_cb.p_rcv_msg)) {
- /* Send NCI message to the stack */
- nfc_hal_send_nci_msg_to_nfc_task(nfc_hal_cb.ncit_cb.p_rcv_msg);
- } else {
- if (nfc_hal_cb.ncit_cb.p_rcv_msg)
- GKI_freebuf(nfc_hal_cb.ncit_cb.p_rcv_msg);
- }
- nfc_hal_cb.ncit_cb.p_rcv_msg = NULL;
- }
- }
- } /* while (TRUE) */
- }
-
- /* Process quick timer tick */
- if (event & NFC_HAL_QUICK_TIMER_EVT_MASK) {
- nfc_hal_main_process_quick_timer_evt();
- }
- }
-
- HAL_TRACE_DEBUG0("nfc_hal_main_task terminated");
-
- GKI_exit_task(GKI_get_taskid());
- return 0;
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcSetTraceLevel
-**
-** Description This function sets the trace level for HAL. If called with
-** a value of 0xFF, it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-uint8_t HAL_NfcSetTraceLevel(uint8_t new_level) {
- if (new_level != 0xFF) nfc_hal_cb.trace_level = new_level;
-
- return (nfc_hal_cb.trace_level);
-}
diff --git a/halimpl/bcm2079x/hal/hal/nfc_hal_nci.c b/halimpl/bcm2079x/hal/hal/nfc_hal_nci.c
deleted file mode 100644
index 8d57eeb..0000000
--- a/halimpl/bcm2079x/hal/hal/nfc_hal_nci.c
+++ /dev/null
@@ -1,826 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2010-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * This file contains function of the NFC unit to receive/process NCI/VS
- * commands/responses.
- *
- ******************************************************************************/
-#include <string.h>
-#include "nci_defs.h"
-#include "nfc_hal_int.h"
-#include "nfc_hal_post_reset.h"
-#include "userial.h"
-
-/*****************************************************************************
-** Constants and types
-*****************************************************************************/
-
-/*****************************************************************************
-** Local function prototypes
-*****************************************************************************/
-
-/*******************************************************************************
-**
-** Function nfc_hal_nci_assemble_nci_msg
-**
-** Description This function is called to reassemble the received NCI
-** response/notification packet, if required.
-** (The data packets are posted to NFC task for reassembly)
-**
-** Returns void.
-**
-*******************************************************************************/
-void nfc_hal_nci_assemble_nci_msg(void) {
- NFC_HDR* p_msg = nfc_hal_cb.ncit_cb.p_rcv_msg;
- uint8_t u8;
- uint8_t *p, *pp;
- uint8_t hdr[2];
- uint8_t *ps, *pd;
- uint16_t size, needed;
- bool disp_again = false;
-
- if ((p_msg == NULL) || (p_msg->len < NCI_MSG_HDR_SIZE)) return;
-
-#ifdef DISP_NCI
- DISP_NCI((uint8_t*)(p_msg + 1) + p_msg->offset, (uint16_t)(p_msg->len), true);
-#endif
-
- p = (uint8_t*)(p_msg + 1) + p_msg->offset;
- u8 = *p++;
- /* remove the PBF bit for potential reassembly later */
- hdr[0] = u8 & ~NCI_PBF_MASK;
- if ((u8 & NCI_MT_MASK) == NCI_MT_DATA) {
- /* clear the RFU in octet1 */
- *(p) = 0;
- /* data packet reassembly is performed in NFC task */
- return;
- } else {
- *(p) &= NCI_OID_MASK;
- }
-
- hdr[1] = *p;
- pp = hdr;
- /* save octet0 and octet1 of an NCI header in layer_specific for the received
- * packet */
- STREAM_TO_UINT16(p_msg->layer_specific, pp);
-
- if (nfc_hal_cb.ncit_cb.p_frag_msg) {
- if (nfc_hal_cb.ncit_cb.p_frag_msg->layer_specific !=
- p_msg->layer_specific) {
- /* check if these fragments are of the same NCI message */
- HAL_TRACE_ERROR2(
- "nfc_hal_nci_assemble_nci_msg() - different messages 0x%x, 0x%x!!",
- nfc_hal_cb.ncit_cb.p_frag_msg->layer_specific, p_msg->layer_specific);
- nfc_hal_cb.ncit_cb.nci_ras |= NFC_HAL_NCI_RAS_ERROR;
- } else if (nfc_hal_cb.ncit_cb.nci_ras == 0) {
- disp_again = true;
- /* if not previous reassembly error, append the new fragment */
- p_msg->offset += NCI_MSG_HDR_SIZE;
- p_msg->len -= NCI_MSG_HDR_SIZE;
- size = GKI_get_buf_size(nfc_hal_cb.ncit_cb.p_frag_msg);
- needed = (NFC_HDR_SIZE + nfc_hal_cb.ncit_cb.p_frag_msg->len +
- nfc_hal_cb.ncit_cb.p_frag_msg->offset + p_msg->len);
- if (size >= needed) {
- /* the buffer for reassembly is big enough to append the new fragment */
- ps = (uint8_t*)(p_msg + 1) + p_msg->offset;
- pd = (uint8_t*)(nfc_hal_cb.ncit_cb.p_frag_msg + 1) +
- nfc_hal_cb.ncit_cb.p_frag_msg->offset +
- nfc_hal_cb.ncit_cb.p_frag_msg->len;
- memcpy(pd, ps, p_msg->len);
- nfc_hal_cb.ncit_cb.p_frag_msg->len += p_msg->len;
- /* adjust the NCI packet length */
- pd = (uint8_t*)(nfc_hal_cb.ncit_cb.p_frag_msg + 1) +
- nfc_hal_cb.ncit_cb.p_frag_msg->offset + 2;
- *pd = (uint8_t)(nfc_hal_cb.ncit_cb.p_frag_msg->len - NCI_MSG_HDR_SIZE);
- } else {
- nfc_hal_cb.ncit_cb.nci_ras |= NFC_HAL_NCI_RAS_TOO_BIG;
- HAL_TRACE_ERROR2(
- "nfc_hal_nci_assemble_nci_msg() buffer overrun (%d + %d)!!",
- nfc_hal_cb.ncit_cb.p_frag_msg->len, p_msg->len);
- }
- }
- /* we are done with this new fragment, free it */
- GKI_freebuf(p_msg);
- } else {
- nfc_hal_cb.ncit_cb.p_frag_msg = p_msg;
- }
-
- if ((u8 & NCI_PBF_MASK) == NCI_PBF_NO_OR_LAST) {
- /* last fragment */
- p_msg = nfc_hal_cb.ncit_cb.p_frag_msg;
- p = (uint8_t*)(p_msg + 1) + p_msg->offset;
- *p = u8; /* this should make the PBF flag as Last Fragment */
- nfc_hal_cb.ncit_cb.p_frag_msg = NULL;
-
- p_msg->layer_specific = nfc_hal_cb.ncit_cb.nci_ras;
- /* still report the data packet, if the incoming packet is too big */
- if (nfc_hal_cb.ncit_cb.nci_ras & NFC_HAL_NCI_RAS_ERROR) {
- /* NFCC reported NCI fragments for different NCI messages and this is the
- * last fragment - drop it */
- HAL_TRACE_ERROR0("nfc_hal_nci_assemble_nci_msg() clearing NCI_RAS_ERROR");
- GKI_freebuf(p_msg);
- p_msg = NULL;
- }
-#ifdef DISP_NCI
- if ((nfc_hal_cb.ncit_cb.nci_ras == 0) && (disp_again)) {
- DISP_NCI((uint8_t*)(p_msg + 1) + p_msg->offset, (uint16_t)(p_msg->len),
- true);
- }
-#endif
- /* clear the error flags, so the next NCI packet is clean */
- nfc_hal_cb.ncit_cb.nci_ras = 0;
- } else {
- /* still reassembling */
- p_msg = NULL;
- }
-
- nfc_hal_cb.ncit_cb.p_rcv_msg = p_msg;
-}
-
-/*****************************************************************************
-**
-** Function nfc_hal_nci_receive_nci_msg
-**
-** Description
-** Handle incoming data (NCI events) from the serial port.
-**
-** If there is data waiting from the serial port, this funciton reads the
-** data and parses it. Once an entire NCI message has been read, it sends
-** the message the the NFC_TASK for processing
-**
-*****************************************************************************/
-static bool nfc_hal_nci_receive_nci_msg(tNFC_HAL_NCIT_CB* p_cb, uint8_t byte) {
- uint16_t len;
- bool msg_received = false;
-
- switch (p_cb->rcv_state) {
- case NFC_HAL_RCV_NCI_MSG_ST:
-
- /* Initialize rx parameters */
- p_cb->rcv_state = NFC_HAL_RCV_NCI_HDR_ST;
- p_cb->rcv_len = NCI_MSG_HDR_SIZE;
-
- /* Start of new message. Allocate a buffer for message */
- p_cb->p_rcv_msg = (NFC_HDR*)GKI_getpoolbuf(NFC_HAL_NCI_POOL_ID);
- if (p_cb->p_rcv_msg != NULL) {
- /* Initialize NFC_HDR */
- p_cb->p_rcv_msg->len = 0;
- p_cb->p_rcv_msg->event = 0;
- p_cb->p_rcv_msg->offset = 0;
-
- *((uint8_t*)(p_cb->p_rcv_msg + 1) + p_cb->p_rcv_msg->offset +
- p_cb->p_rcv_msg->len++) = byte;
- } else {
- HAL_TRACE_ERROR0("Unable to allocate buffer for incoming NCI message.");
- }
- p_cb->rcv_len--;
- break;
-
- case NFC_HAL_RCV_NCI_HDR_ST:
-
- if (p_cb->p_rcv_msg) {
- *((uint8_t*)(p_cb->p_rcv_msg + 1) + p_cb->p_rcv_msg->offset +
- p_cb->p_rcv_msg->len++) = byte;
- }
-
- p_cb->rcv_len--;
-
- /* Check if we read in entire NFC message header yet */
- if (p_cb->rcv_len == 0) {
- p_cb->rcv_len = byte;
-
- /* If non-zero payload, then go to receive-data state */
- if (byte > 0) {
- p_cb->rcv_state = NFC_HAL_RCV_NCI_PAYLOAD_ST;
- } else {
- msg_received = true;
- p_cb->rcv_state = NFC_HAL_RCV_IDLE_ST;
- }
- }
- break;
-
- case NFC_HAL_RCV_NCI_PAYLOAD_ST:
-
- p_cb->rcv_len--;
- if (p_cb->p_rcv_msg) {
- *((uint8_t*)(p_cb->p_rcv_msg + 1) + p_cb->p_rcv_msg->offset +
- p_cb->p_rcv_msg->len++) = byte;
-
- if (p_cb->rcv_len > 0) {
- /* Read in the rest of the message */
- len = USERIAL_Read(USERIAL_NFC_PORT,
- ((uint8_t*)(p_cb->p_rcv_msg + 1) +
- p_cb->p_rcv_msg->offset + p_cb->p_rcv_msg->len),
- p_cb->rcv_len);
- p_cb->p_rcv_msg->len += len;
- p_cb->rcv_len -= len;
- }
- }
-
- /* Check if we read in entire message yet */
- if (p_cb->rcv_len == 0) {
- msg_received = true;
- p_cb->rcv_state = NFC_HAL_RCV_IDLE_ST;
- }
- break;
- }
-
- return (msg_received);
-}
-
-/*****************************************************************************
-**
-** Function nfc_hal_nci_receive_bt_msg
-**
-** Description
-** Handle incoming BRCM specific data from the serial port.
-**
-** If there is data waiting from the serial port, this funciton reads the
-** data and parses it. Once an entire message has been read, it returns
-** TRUE.
-**
-*****************************************************************************/
-static bool nfc_hal_nci_receive_bt_msg(tNFC_HAL_NCIT_CB* p_cb, uint8_t byte) {
- uint16_t len;
- bool msg_received = false;
-
- switch (p_cb->rcv_state) {
- case NFC_HAL_RCV_BT_MSG_ST:
-
- /* Initialize rx parameters */
- p_cb->rcv_state = NFC_HAL_RCV_BT_HDR_ST;
- p_cb->rcv_len = HCIE_PREAMBLE_SIZE;
-
- p_cb->p_rcv_msg = (NFC_HDR*)GKI_getpoolbuf(NFC_HAL_NCI_POOL_ID);
- if (p_cb->p_rcv_msg != NULL) {
- /* Initialize NFC_HDR */
- p_cb->p_rcv_msg->len = 0;
- p_cb->p_rcv_msg->event = 0;
- p_cb->p_rcv_msg->offset = 0;
-
- *((uint8_t*)(p_cb->p_rcv_msg + 1) + p_cb->p_rcv_msg->offset +
- p_cb->p_rcv_msg->len++) = byte;
- } else {
- HAL_TRACE_ERROR0(
- "[nfc] Unable to allocate buffer for incoming NCI message.");
- }
- p_cb->rcv_len--;
- break;
-
- case NFC_HAL_RCV_BT_HDR_ST:
- if (p_cb->p_rcv_msg) {
- *((uint8_t*)(p_cb->p_rcv_msg + 1) + p_cb->p_rcv_msg->offset +
- p_cb->p_rcv_msg->len++) = byte;
- }
- p_cb->rcv_len--;
-
- /* Check if we received entire preamble yet */
- if (p_cb->rcv_len == 0) {
- /* Received entire preamble. Length is in the last byte(s) of the
- * preamble */
- p_cb->rcv_len = byte;
-
- /* Verify that buffer is big enough to fit message */
- if ((p_cb->p_rcv_msg) && ((sizeof(NFC_HDR) + HCIE_PREAMBLE_SIZE +
- byte) > GKI_get_buf_size(p_cb->p_rcv_msg))) {
- /* Message cannot fit into buffer */
- GKI_freebuf(p_cb->p_rcv_msg);
- p_cb->p_rcv_msg = NULL;
-
- HAL_TRACE_ERROR0("Invalid length for incoming BT HCI message.");
- }
-
- /* Message length is valid */
- if (byte) {
- /* Read rest of message */
- p_cb->rcv_state = NFC_HAL_RCV_BT_PAYLOAD_ST;
- } else {
- /* Message has no additional parameters. (Entire message has been
- * received) */
- msg_received = true;
- p_cb->rcv_state = NFC_HAL_RCV_IDLE_ST; /* Next, wait for packet type
- of next message */
- }
- }
- break;
-
- case NFC_HAL_RCV_BT_PAYLOAD_ST:
- p_cb->rcv_len--;
- if (p_cb->p_rcv_msg) {
- *((uint8_t*)(p_cb->p_rcv_msg + 1) + p_cb->p_rcv_msg->offset +
- p_cb->p_rcv_msg->len++) = byte;
-
- if (p_cb->rcv_len > 0) {
- /* Read in the rest of the message */
- len = USERIAL_Read(USERIAL_NFC_PORT,
- ((uint8_t*)(p_cb->p_rcv_msg + 1) +
- p_cb->p_rcv_msg->offset + p_cb->p_rcv_msg->len),
- p_cb->rcv_len);
- p_cb->p_rcv_msg->len += len;
- p_cb->rcv_len -= len;
- }
- }
-
- /* Check if we read in entire message yet */
- if (p_cb->rcv_len == 0) {
- msg_received = true;
- p_cb->rcv_state =
- NFC_HAL_RCV_IDLE_ST; /* Next, wait for packet type of next message
- */
- }
- break;
- }
-
-/* If we received entire message */
-#if (NFC_HAL_TRACE_PROTOCOL == TRUE)
- if (msg_received && p_cb->p_rcv_msg) {
- /* Display protocol trace message */
- DispHciEvt(p_cb->p_rcv_msg);
- }
-#endif
-
- return (msg_received);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_nci_proc_rx_bt_msg
-**
-** Description Received BT message from NFCC
-**
-** Notify command complete if initializing NFCC
-** Forward BT message to NFC task
-**
-** Returns void
-**
-*******************************************************************************/
-static void nfc_hal_nci_proc_rx_bt_msg(void) {
- uint8_t* p;
- NFC_HDR* p_msg;
- uint16_t opcode, old_opcode;
- tNFC_HAL_BTVSC_CPLT vcs_cplt_params;
- tNFC_HAL_BTVSC_CPLT_CBACK* p_cback = NULL;
-
- /* if complete BT message is received successfully */
- if (nfc_hal_cb.ncit_cb.p_rcv_msg) {
- p_msg = nfc_hal_cb.ncit_cb.p_rcv_msg;
- HAL_TRACE_DEBUG1(
- "nfc_hal_nci_proc_rx_bt_msg (): GOT an BT msgs init_sta:%d",
- nfc_hal_cb.dev_cb.initializing_state);
- HAL_TRACE_DEBUG2("event: 0x%x, wait_rsp:0x%x", p_msg->event,
- nfc_hal_cb.ncit_cb.nci_wait_rsp);
- /* increase the cmd window here */
- if (nfc_hal_cb.ncit_cb.nci_wait_rsp == NFC_HAL_WAIT_RSP_PROP) {
- p = (uint8_t*)(p_msg + 1) + p_msg->offset;
- if (*p == HCI_COMMAND_COMPLETE_EVT) {
- p += 3; /* code, len, cmd window */
- STREAM_TO_UINT16(opcode, p);
- p = nfc_hal_cb.ncit_cb.last_hdr;
- STREAM_TO_UINT16(old_opcode, p);
- if (opcode == old_opcode) {
- nfc_hal_cb.ncit_cb.nci_wait_rsp = NFC_HAL_WAIT_RSP_NONE;
- p_cback = (tNFC_HAL_BTVSC_CPLT_CBACK*)nfc_hal_cb.ncit_cb.p_vsc_cback;
- nfc_hal_cb.ncit_cb.p_vsc_cback = NULL;
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.ncit_cb.nci_wait_rsp_timer);
- }
- }
- }
-
- /* if initializing BRCM NFCC */
- if ((nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_APP_COMPLETE) ||
- (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_BUILD_INFO) ||
- (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_CONTROL_DONE)) {
- /* this is command complete event for baud rate update or download patch
- */
- p = (uint8_t*)(p_msg + 1) + p_msg->offset;
-
- p += 1; /* skip opcode */
- STREAM_TO_UINT8(vcs_cplt_params.param_len, p);
-
- p += 1; /* skip num command packets */
- STREAM_TO_UINT16(vcs_cplt_params.opcode, p);
-
- vcs_cplt_params.param_len -= 3;
- vcs_cplt_params.p_param_buf = p;
-
- if (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_CONTROL_DONE) {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_cb.p_stack_cback(HAL_NFC_RELEASE_CONTROL_EVT,
- HAL_NFC_STATUS_OK);
- }
- if (p_cback) {
- nfc_hal_cb.ncit_cb.p_vsc_cback = NULL;
- (*p_cback)(&vcs_cplt_params);
- }
-
- /* do not BT send message to NFC task */
- GKI_freebuf(p_msg);
- } else {
- /* do not BT send message to NFC task */
- GKI_freebuf(nfc_hal_cb.ncit_cb.p_rcv_msg);
- }
- nfc_hal_cb.ncit_cb.p_rcv_msg = NULL;
- }
-}
-
-/*****************************************************************************
-**
-** Function nfc_hal_nci_receive_msg
-**
-** Description
-** Handle incoming data (NCI events) from the serial port.
-**
-** If there is data waiting from the serial port, this funciton reads the
-** data and parses it. Once an entire NCI message has been read, it sends
-** the message the the NFC_TASK for processing
-**
-*****************************************************************************/
-bool nfc_hal_nci_receive_msg(uint8_t byte) {
- tNFC_HAL_NCIT_CB* p_cb = &(nfc_hal_cb.ncit_cb);
- bool msg_received = false;
-
- if (p_cb->rcv_state == NFC_HAL_RCV_IDLE_ST) {
- /* if this is NCI message */
- if (byte == HCIT_TYPE_NFC) {
- p_cb->rcv_state = NFC_HAL_RCV_NCI_MSG_ST;
- }
- /* if this is BT message */
- else if (byte == HCIT_TYPE_EVENT) {
- p_cb->rcv_state = NFC_HAL_RCV_BT_MSG_ST;
- } else {
- HAL_TRACE_ERROR1("Unknown packet type drop this byte 0x%x", byte);
- }
- } else if (p_cb->rcv_state <= NFC_HAL_RCV_NCI_PAYLOAD_ST) {
- msg_received = nfc_hal_nci_receive_nci_msg(p_cb, byte);
- } else {
- if (nfc_hal_nci_receive_bt_msg(p_cb, byte)) {
- /* received BT message */
- nfc_hal_nci_proc_rx_bt_msg();
- }
- }
-
- return (msg_received);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_nci_preproc_rx_nci_msg
-**
-** Description NFCC sends NCI message to DH while initializing NFCC
-** processing low power mode
-**
-** Returns TRUE, if NFC task need to receive NCI message
-**
-*******************************************************************************/
-bool nfc_hal_nci_preproc_rx_nci_msg(NFC_HDR* p_msg) {
- uint8_t *p, *pp;
- uint8_t mt, pbf, gid, op_code;
- uint8_t payload_len;
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
- uint8_t cid;
- uint16_t data_len;
-#endif
-
- HAL_TRACE_DEBUG0("nfc_hal_nci_preproc_rx_nci_msg()");
-
- if (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_NFCC_TURN_OFF) {
- /* if turning off BRCM NFCC */
- nfc_hal_dm_proc_msg_during_exit(p_msg);
- /* do not send message to NFC task while shutting down */
- return false;
- }
-
- /* if initializing BRCM NFCC */
- if (nfc_hal_cb.dev_cb.initializing_state != NFC_HAL_INIT_STATE_IDLE) {
- nfc_hal_dm_proc_msg_during_init(p_msg);
- /* do not send message to NFC task while initializing NFCC */
- return false;
- } else {
- p = (uint8_t*)(p_msg + 1) + p_msg->offset;
- pp = p;
- NCI_MSG_PRS_HDR0(p, mt, pbf, gid);
- NCI_MSG_PRS_HDR1(p, op_code);
- payload_len = *p++;
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
- if (mt == NCI_MT_DATA) {
- if (nfc_hal_cb.hci_cb.hcp_conn_id) {
- NCI_DATA_PRS_HDR(pp, pbf, cid, data_len);
- if (cid == nfc_hal_cb.hci_cb.hcp_conn_id) {
- nfc_hal_hci_handle_hcp_pkt_from_hc(pp);
- }
- }
- }
-
- if (gid == NCI_GID_PROP) /* this is for hci netwk ntf */
- {
- if (mt == NCI_MT_NTF) {
- if (op_code == NCI_MSG_HCI_NETWK) {
- nfc_hal_hci_handle_hci_netwk_info((uint8_t*)(p_msg + 1) +
- p_msg->offset);
- }
- }
- } else
-#endif
- if (gid == NCI_GID_RF_MANAGE) {
- if (mt == NCI_MT_NTF) {
- if (op_code == NCI_MSG_RF_INTF_ACTIVATED) {
- if ((nfc_hal_cb.max_rf_credits) && (payload_len > 5)) {
- /* API used wants to limit the RF data credits */
- p += 5; /* skip RF disc id, interface, protocol, tech&mode, payload
- size */
- if (*p > nfc_hal_cb.max_rf_credits) {
- HAL_TRACE_DEBUG2("RfDataCredits %d->%d", *p,
- nfc_hal_cb.max_rf_credits);
- *p = nfc_hal_cb.max_rf_credits;
- }
- }
- }
- }
- }
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
- else if (gid == NCI_GID_CORE) {
- if (mt == NCI_MT_RSP) {
- if (op_code == NCI_MSG_CORE_CONN_CREATE) {
- if (nfc_hal_cb.hci_cb.b_wait_hcp_conn_create_rsp) {
- p++; /* skip status byte */
- nfc_hal_cb.hci_cb.b_wait_hcp_conn_create_rsp = false;
- p++; /* skip buff size */
- p++; /* num of buffers */
- nfc_hal_cb.hci_cb.hcp_conn_id = *p;
- }
- }
- }
- }
-#endif
- }
-
- if (nfc_hal_cb.dev_cb.power_mode == NFC_HAL_POWER_MODE_FULL) {
- if (nfc_hal_cb.dev_cb.snooze_mode != NFC_HAL_LP_SNOOZE_MODE_NONE) {
- /* extend idle timer */
- nfc_hal_dm_power_mode_execute(NFC_HAL_LP_RX_DATA_EVT);
- }
- }
-
- return true;
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_nci_add_nfc_pkt_type
-**
-** Description Add packet type (HCIT_TYPE_NFC)
-**
-** Returns TRUE, if NFCC can receive NCI message
-**
-*******************************************************************************/
-void nfc_hal_nci_add_nfc_pkt_type(NFC_HDR* p_msg) {
- uint8_t* p;
- uint8_t hcit;
-
- /* add packet type in front of NCI header */
- if (p_msg->offset > 0) {
- p_msg->offset--;
- p_msg->len++;
-
- p = (uint8_t*)(p_msg + 1) + p_msg->offset;
- *p = HCIT_TYPE_NFC;
- } else {
- HAL_TRACE_ERROR0(
- "nfc_hal_nci_add_nfc_pkt_type () : No space for packet type");
- hcit = HCIT_TYPE_NFC;
- USERIAL_Write(USERIAL_NFC_PORT, &hcit, 1);
- }
-}
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
-/*******************************************************************************
-**
-** Function nci_brcm_check_cmd_create_hcp_connection
-**
-** Description Check if this is command to create HCP connection
-**
-** Returns None
-**
-*******************************************************************************/
-static void nci_brcm_check_cmd_create_hcp_connection(NFC_HDR* p_msg) {
- uint8_t* p;
- uint8_t mt, pbf, gid, op_code;
-
- nfc_hal_cb.hci_cb.b_wait_hcp_conn_create_rsp = false;
-
- p = (uint8_t*)(p_msg + 1) + p_msg->offset;
-
- if (nfc_hal_cb.dev_cb.initializing_state == NFC_HAL_INIT_STATE_IDLE) {
- NCI_MSG_PRS_HDR0(p, mt, pbf, gid);
- NCI_MSG_PRS_HDR1(p, op_code);
-
- if (gid == NCI_GID_CORE) {
- if (mt == NCI_MT_CMD) {
- if (op_code == NCI_MSG_CORE_CONN_CREATE) {
- if (((NCI_CORE_PARAM_SIZE_CON_CREATE + 4) == *p++) &&
- (NCI_DEST_TYPE_NFCEE == *p++) && (1 == *p++) &&
- (NCI_CON_CREATE_TAG_NFCEE_VAL == *p++) && (2 == *p++)) {
- p++;
- if (NCI_NFCEE_INTERFACE_HCI_ACCESS == *p) {
- nfc_hal_cb.hci_cb.b_wait_hcp_conn_create_rsp = true;
- return;
- }
- }
- }
- }
- }
- }
-}
-
-#endif
-
-/*******************************************************************************
-**
-** Function nfc_hal_nci_send_cmd
-**
-** Description Send NCI command to the transport
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_nci_send_cmd(NFC_HDR* p_buf) {
- bool continue_to_process = true;
- uint8_t *ps, *pd;
- uint16_t max_len;
- uint16_t buf_len, offset;
- uint8_t* p;
- uint8_t hdr[NCI_MSG_HDR_SIZE];
- uint8_t nci_ctrl_size = nfc_hal_cb.ncit_cb.nci_ctrl_size;
- uint8_t delta = 0;
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
- if ((nfc_hal_cb.hci_cb.hcp_conn_id == 0) &&
- (nfc_hal_cb.nvm_cb.nvm_type != NCI_SPD_NVM_TYPE_NONE))
- nci_brcm_check_cmd_create_hcp_connection((NFC_HDR*)p_buf);
-#endif
-
- /* check low power mode state */
- continue_to_process = nfc_hal_dm_power_mode_execute(NFC_HAL_LP_TX_DATA_EVT);
-
- if (!continue_to_process) {
- /* save the command to be sent until NFCC is free. */
- nfc_hal_cb.ncit_cb.p_pend_cmd = p_buf;
- return;
- }
-
- max_len = nci_ctrl_size + NCI_MSG_HDR_SIZE;
- buf_len = p_buf->len;
- offset = p_buf->offset;
-#ifdef DISP_NCI
- if (buf_len > max_len) {
- /* this command needs to be fragmented. display the complete packet first */
- DISP_NCI((uint8_t*)(p_buf + 1) + p_buf->offset, p_buf->len, false);
- }
-#endif
- ps = (uint8_t*)(p_buf + 1) + p_buf->offset;
- memcpy(hdr, ps, NCI_MSG_HDR_SIZE);
- while (buf_len > max_len) {
- HAL_TRACE_DEBUG2("buf_len (%d) > max_len (%d)", buf_len, max_len);
- /* the NCI command is bigger than the NFCC Max Control Packet Payload Length
- * fragment the command */
-
- p_buf->len = max_len;
- ps = (uint8_t*)(p_buf + 1) + p_buf->offset;
- /* mark the control packet as fragmented */
- *ps |= NCI_PBF_ST_CONT;
- /* adjust the length of this fragment */
- ps += 2;
- *ps = nci_ctrl_size;
-
- /* add NCI packet type in front of message */
- nfc_hal_nci_add_nfc_pkt_type(p_buf);
-
- /* send this fragment to transport */
- p = (uint8_t*)(p_buf + 1) + p_buf->offset;
-
-#ifdef DISP_NCI
- delta = p_buf->len - max_len;
- DISP_NCI(p + delta, (uint16_t)(p_buf->len - delta), false);
-#endif
- USERIAL_Write(USERIAL_NFC_PORT, p, p_buf->len);
-
- /* adjust the len and offset to reflect that part of the command is already
- * sent */
- buf_len -= nci_ctrl_size;
- offset += nci_ctrl_size;
- HAL_TRACE_DEBUG2("p_buf->len: %d buf_len (%d)", p_buf->len, buf_len);
- p_buf->len = buf_len;
- p_buf->offset = offset;
- pd = (uint8_t*)(p_buf + 1) + p_buf->offset;
- /* restore the NCI header */
- memcpy(pd, hdr, NCI_MSG_HDR_SIZE);
- pd += 2;
- *pd = (uint8_t)(p_buf->len - NCI_MSG_HDR_SIZE);
- }
-
- HAL_TRACE_DEBUG1("p_buf->len: %d", p_buf->len);
-
- /* add NCI packet type in front of message */
- nfc_hal_nci_add_nfc_pkt_type(p_buf);
-
- /* send this fragment to transport */
- p = (uint8_t*)(p_buf + 1) + p_buf->offset;
-
-#ifdef DISP_NCI
- delta = p_buf->len - buf_len;
- DISP_NCI(p + delta, (uint16_t)(p_buf->len - delta), false);
-#endif
- USERIAL_Write(USERIAL_NFC_PORT, p, p_buf->len);
-
- GKI_freebuf(p_buf);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_nci_cmd_timeout_cback
-**
-** Description callback function for timeout
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_nci_cmd_timeout_cback(void* p_tle) {
- TIMER_LIST_ENT* p_tlent = (TIMER_LIST_ENT*)p_tle;
-
- HAL_TRACE_DEBUG0("nfc_hal_nci_cmd_timeout_cback ()");
-
- nfc_hal_cb.ncit_cb.nci_wait_rsp = NFC_HAL_WAIT_RSP_NONE;
-
- if (p_tlent->event == NFC_HAL_TTYPE_NCI_WAIT_RSP) {
- if (nfc_hal_cb.dev_cb.initializing_state <=
- NFC_HAL_INIT_STATE_W4_PATCH_INFO) {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_main_pre_init_done(HAL_NFC_STATUS_ERR_CMD_TIMEOUT);
- } else if (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_APP_COMPLETE) {
- if (nfc_hal_cb.prm.state != NFC_HAL_PRM_ST_IDLE) {
- nfc_hal_prm_process_timeout(NULL);
- } else {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_main_pre_init_done(HAL_NFC_STATUS_ERR_CMD_TIMEOUT);
- }
- } else if (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_POST_INIT_DONE) {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_cb.p_stack_cback(HAL_NFC_POST_INIT_CPLT_EVT,
- HAL_NFC_STATUS_ERR_CMD_TIMEOUT);
- } else if (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_CONTROL_DONE) {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_cb.p_stack_cback(HAL_NFC_RELEASE_CONTROL_EVT,
- HAL_NFC_STATUS_ERR_CMD_TIMEOUT);
- } else if (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_PREDISCOVER_DONE) {
- NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
- nfc_hal_cb.p_stack_cback(HAL_NFC_PRE_DISCOVER_CPLT_EVT,
- HAL_NFC_STATUS_ERR_CMD_TIMEOUT);
- } else if (nfc_hal_cb.dev_cb.initializing_state ==
- NFC_HAL_INIT_STATE_W4_NFCC_TURN_OFF) {
- nfc_hal_main_close();
- }
- }
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcSetMaxRfDataCredits
-**
-** Description This function sets the maximum RF data credit for HAL.
-** If 0, use the value reported from NFCC.
-**
-** Returns none
-**
-*******************************************************************************/
-void HAL_NfcSetMaxRfDataCredits(uint8_t max_credits) {
- HAL_TRACE_DEBUG2("HAL_NfcSetMaxRfDataCredits %d->%d",
- nfc_hal_cb.max_rf_credits, max_credits);
- nfc_hal_cb.max_rf_credits = max_credits;
-}
diff --git a/halimpl/bcm2079x/hal/hal/nfc_hal_prm.c b/halimpl/bcm2079x/hal/hal/nfc_hal_prm.c
deleted file mode 100644
index 3d9e76f..0000000
--- a/halimpl/bcm2079x/hal/hal/nfc_hal_prm.c
+++ /dev/null
@@ -1,1172 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2012-2014 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.
- *
- ******************************************************************************/
-
-#include <string.h>
-#include "nfc_hal_int.h"
-#include "userial.h"
-
-/*****************************************************************************
-* Definitions
-*****************************************************************************/
-
-/* Internal flags */
-/* Application provided patchram in a single buffer */
-#define NFC_HAL_PRM_FLAGS_USE_PATCHRAM_BUF 0x01
-/* Reserved for future use */
-#define NFC_HAL_PRM_FLAGS_RFU 0x02
-#define NFC_HAL_PRM_FLAGS_SIGNATURE_SENT 0x04 /* Signature sent to NFCC */
-#define NFC_HAL_PRM_FLAGS_I2C_FIX_REQUIRED 0x08 /* PreI2C patch required */
-/* B3 Patch (no RESET_NTF after patch download) */
-#define NFC_HAL_PRM_FLAGS_BCM20791B3 0x10
-#define NFC_HAL_PRM_FLAGS_RM_RF 0x20 /* Erase Personality data */
-
-/* Secure patch download definitions */
-/* PRJID + MAJORVER + MINORVER + COUNT */
-#define NFC_HAL_PRM_NCD_PATCHFILE_HDR_LEN 7
-
-/* Enumeration of power modes IDs */
-#define NFC_HAL_PRM_SPD_POWER_MODE_LPM 0
-#define NFC_HAL_PRM_SPD_POWER_MODE_FPM 1
-
-/* Version string for BCM20791B3 */
-const uint8_t NFC_HAL_PRM_BCM20791B3_STR[] = "20791B3";
-#define NFC_HAL_PRM_BCM20791B3_STR_LEN (sizeof(NFC_HAL_PRM_BCM20791B3_STR) - 1)
-
-/* timeout for SPD events (in ms) */
-#define NFC_HAL_PRM_SPD_TOUT (6000)
-/* delay before sending any new command (ms)*/
-#define NFC_HAL_PRM_END_DELAY (250)
-
-#if (NFC_HAL_PRM_DEBUG == TRUE)
-#define NFC_HAL_PRM_STATE(str) \
- HAL_TRACE_DEBUG2("%s st: %d", str, nfc_hal_cb.prm.state)
-#else
-#define NFC_HAL_PRM_STATE(str)
-#endif
-
-void nfc_hal_prm_post_baud_update(tHAL_NFC_STATUS status);
-typedef struct {
- uint16_t offset;
- uint8_t len;
-} tNFC_HAL_PRM_RM_RF;
-
-const tNFC_HAL_PRM_RM_RF nfc_hal_prm_rm_rf_20795a1[] = {
- {0x0000, 0xFB}, {0x019C, 0x08}, {0x05E8, 0xFB}, {0, 0}};
-static bool nfc_hal_prm_nvm_rw_cmd(void);
-
-/*****************************************************************************
-** Extern variable from nfc_hal_dm_cfg.c
-*****************************************************************************/
-extern tNFC_HAL_CFG* p_nfc_hal_cfg;
-
-/*******************************************************************************
-**
-** Function nfc_hal_prm_spd_handle_download_complete
-**
-** Description Patch download complete (for secure patch download)
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_prm_spd_handle_download_complete(uint8_t event) {
- nfc_hal_cb.prm.state = NFC_HAL_PRM_ST_IDLE;
-
- /* Notify application now */
- if (nfc_hal_cb.prm.p_cback) (nfc_hal_cb.prm.p_cback)(event);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_prm_spd_send_next_segment
-**
-** Description Send next patch segment (for secure patch download)
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_prm_spd_send_next_segment(void) {
- uint8_t* p_src;
- uint16_t len, offset = nfc_hal_cb.prm.cur_patch_offset;
- uint8_t hcit, oid, hdr0, type;
- uint8_t chipverlen;
- uint8_t chipverstr[NCI_SPD_HEADER_CHIPVER_LEN];
- uint8_t patch_hdr_size = NCI_MSG_HDR_SIZE + 1; /* 1 is for HCIT */
-
- /* Validate that segment is at least big enought to have NCI_MSG_HDR_SIZE + 1
- * (hcit) */
- if (nfc_hal_cb.prm.cur_patch_len_remaining < patch_hdr_size) {
- HAL_TRACE_ERROR0("Unexpected end of patch.");
- nfc_hal_prm_spd_handle_download_complete(
- NFC_HAL_PRM_ABORT_INVALID_PATCH_EVT);
- return;
- }
-
- /* Parse NCI command header */
- p_src = (uint8_t*)(nfc_hal_cb.prm.p_cur_patch_data + offset);
- STREAM_TO_UINT8(hcit, p_src);
- STREAM_TO_UINT8(hdr0, p_src);
- STREAM_TO_UINT8(oid, p_src);
- STREAM_TO_UINT8(len, p_src);
- STREAM_TO_UINT8(type, p_src);
-
- /* Update number of bytes comsumed */
- nfc_hal_cb.prm.cur_patch_offset += (len + patch_hdr_size);
- nfc_hal_cb.prm.cur_patch_len_remaining -= (len + patch_hdr_size);
-
- /* Check if sending signature byte */
- if ((oid == NCI_MSG_SECURE_PATCH_DOWNLOAD) &&
- (type == NCI_SPD_TYPE_SIGNATURE)) {
- nfc_hal_cb.prm.flags |= NFC_HAL_PRM_FLAGS_SIGNATURE_SENT;
- }
- /* Check for header */
- else if ((oid == NCI_MSG_SECURE_PATCH_DOWNLOAD) &&
- (type == NCI_SPD_TYPE_HEADER)) {
- /* Check if patch is for BCM20791B3 */
- p_src += NCI_SPD_HEADER_OFFSET_CHIPVERLEN;
- STREAM_TO_UINT8(chipverlen, p_src);
- if (memcmp(nfc_hal_cb.nvm_cb.chip_ver, p_src, chipverlen) != 0) {
- HAL_TRACE_ERROR0("Unexpected chip ver.");
- nfc_hal_prm_spd_handle_download_complete(
- NFC_HAL_PRM_ABORT_INVALID_PATCH_EVT);
- return;
- }
- STREAM_TO_ARRAY(chipverstr, p_src, NCI_SPD_HEADER_CHIPVER_LEN);
-
- if (memcmp(NFC_HAL_PRM_BCM20791B3_STR, chipverstr,
- NFC_HAL_PRM_BCM20791B3_STR_LEN) == 0) {
- /* Patch is for BCM2079B3 - do not wait for RESET_NTF after patch download
- */
- nfc_hal_cb.prm.flags |= NFC_HAL_PRM_FLAGS_BCM20791B3;
- } else {
- /* Patch is for BCM2079B4 or newer - wait for RESET_NTF after patch
- * download */
- nfc_hal_cb.prm.flags &= ~NFC_HAL_PRM_FLAGS_BCM20791B3;
- }
- }
-
- /* Send the command (not including HCIT here) */
- nfc_hal_dm_send_nci_cmd(
- (uint8_t*)(nfc_hal_cb.prm.p_cur_patch_data + offset + 1),
- (uint8_t)(len + NCI_MSG_HDR_SIZE),
- nfc_hal_prm_nci_command_complete_cback);
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_prm_spd_handle_next_patch_start
-**
-** Description Handle start of next patch (for secure patch download)
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_prm_spd_handle_next_patch_start(void) {
- uint32_t cur_patch_mask;
- uint32_t cur_patch_len;
- bool found_patch_to_download = false;
-
- while (!found_patch_to_download) {
- /* Get length of current patch */
- cur_patch_len =
- nfc_hal_cb.prm.spd_patch_desc[nfc_hal_cb.prm.spd_cur_patch_idx].len;
-
- /* Check if this is a patch we need to download */
- cur_patch_mask =
- ((uint32_t)1 << nfc_hal_cb.prm
- .spd_patch_desc[nfc_hal_cb.prm.spd_cur_patch_idx]
- .power_mode);
- if (nfc_hal_cb.prm.spd_patch_needed_mask & cur_patch_mask) {
- found_patch_to_download = true;
- } else {
- /* Do not need to download this patch. Skip to next patch */
- HAL_TRACE_DEBUG1(
- "Skipping patch for power_mode %i.",
- nfc_hal_cb.prm.spd_patch_desc[nfc_hal_cb.prm.spd_cur_patch_idx]
- .power_mode);
-
- nfc_hal_cb.prm.spd_cur_patch_idx++;
- if (nfc_hal_cb.prm.spd_cur_patch_idx >= nfc_hal_cb.prm.spd_patch_count) {
- /* No more to download */
- nfc_hal_prm_spd_handle_download_complete(NFC_HAL_PRM_COMPLETE_EVT);
- return;
- } else if (!(nfc_hal_cb.prm.flags & NFC_HAL_PRM_FLAGS_USE_PATCHRAM_BUF)) {
- /* Notify adaptation layer to call HAL_NfcPrmDownloadContinue with the
- * next patch header */
- (nfc_hal_cb.prm.p_cback)(NFC_HAL_PRM_SPD_GET_NEXT_PATCH);
- return;
- } else {
- /* Patch in buffer. Skip over current patch. Check next patch */
- nfc_hal_cb.prm.cur_patch_len_remaining -= (uint16_t)cur_patch_len;
- nfc_hal_cb.prm.cur_patch_offset += (uint16_t)cur_patch_len;
- }
- }
- }
-
- /* Begin downloading patch */
- HAL_TRACE_DEBUG1(
- "Downloading patch for power_mode %i.",
- nfc_hal_cb.prm.spd_patch_desc[nfc_hal_cb.prm.spd_cur_patch_idx]
- .power_mode);
- nfc_hal_cb.prm.state = NFC_HAL_PRM_ST_SPD_DOWNLOADING;
- nfc_hal_prm_spd_send_next_segment();
-}
-
-#if (NFC_HAL_PRE_I2C_PATCH_INCLUDED == TRUE)
-/*******************************************************************************
-**
-** Function nfc_hal_prm_spd_download_i2c_fix
-**
-** Description Start downloading patch for i2c fix
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_prm_spd_download_i2c_fix(void) {
- uint8_t *p, *p_start;
- uint16_t patchfile_project_id;
- uint16_t patchfile_ver_major;
- uint16_t patchfile_ver_minor;
- uint16_t patchfile_patchsize;
- uint8_t u8;
-
- HAL_TRACE_DEBUG0("Downloading I2C fix...");
-
- /* Save pointer and offset of patchfile, so we can resume after downloading
- * the i2c fix */
- nfc_hal_cb.prm.spd_patch_offset = nfc_hal_cb.prm.cur_patch_offset;
- nfc_hal_cb.prm.spd_patch_len_remaining =
- nfc_hal_cb.prm.cur_patch_len_remaining;
-
- /* Initialize pointers for downloading i2c fix */
- nfc_hal_cb.prm.p_cur_patch_data = nfc_hal_cb.prm_i2c.p_patch;
- nfc_hal_cb.prm.cur_patch_offset = 0;
- nfc_hal_cb.prm.cur_patch_len_remaining = nfc_hal_cb.prm_i2c.len;
-
- /* Parse the i2c patchfile */
- if (nfc_hal_cb.prm.cur_patch_len_remaining >=
- NFC_HAL_PRM_NCD_PATCHFILE_HDR_LEN) {
- /* Parse patchfile header */
- p = (uint8_t*)nfc_hal_cb.prm.p_cur_patch_data;
- p_start = p;
- STREAM_TO_UINT16(patchfile_project_id, p);
- STREAM_TO_UINT16(patchfile_ver_major, p);
- STREAM_TO_UINT16(patchfile_ver_minor, p);
-
- /* RFU */
- p++;
-
- /* Check how many patches are in the patch file */
- STREAM_TO_UINT8(u8, p);
-
- /* Should only be one patch */
- if (u8 > 1) {
- HAL_TRACE_ERROR1("Invalid i2c fix: invalid number of patches (%i)", u8);
- nfc_hal_prm_spd_handle_download_complete(
- NFC_HAL_PRM_ABORT_INVALID_PATCH_EVT);
- return;
- }
-
- /* Get info about the i2c patch*/
- STREAM_TO_UINT8(u8, p); /* power mode (not needed for i2c patch) */
- STREAM_TO_UINT16(patchfile_patchsize, p); /* size of patch */
-
- /* 5 byte RFU */
- p += 5;
-
- /* Adjust length to exclude patchfiloe header */
- nfc_hal_cb.prm.cur_patch_len_remaining -=
- (uint16_t)(p - p_start); /* Adjust size of patchfile */
- nfc_hal_cb.prm.cur_patch_offset += (uint16_t)(
- p - p_start); /* Bytes of patchfile transmitted/processed so far */
-
- /* Begin sending patch to the NFCC */
- nfc_hal_prm_spd_send_next_segment();
- } else {
- /* ERROR: Bad length for patchfile */
- HAL_TRACE_ERROR0("Invalid i2c fix: unexpected end of patch");
- nfc_hal_prm_spd_handle_download_complete(
- NFC_HAL_PRM_ABORT_INVALID_PATCH_EVT);
- }
-}
-#endif /* NFC_HAL_PRE_I2C_PATCH_INCLUDED */
-
-/*******************************************************************************
-**
-** Function nfc_hal_prm_spd_check_version_continue
-**
-** Description Check patchfile version with current downloaded version
-**
-** Returns void
-**
-*******************************************************************************/
-static void nfc_hal_prm_spd_check_version_continue(void) {
- HAL_TRACE_DEBUG1("nfc_hal_prm_spd_check_version_continue 0x%02x",
- nfc_hal_cb.prm.flags);
- if (nfc_hal_cb.prm.flags & NFC_HAL_PRM_FLAGS_RM_RF) {
- HAL_TRACE_DEBUG0("erase relevant blocks in NVM");
- nfc_hal_cb.prm.flags &= ~NFC_HAL_PRM_FLAGS_RM_RF;
- if (!nfc_hal_prm_nvm_rw_cmd()) {
- /* nvm rw started successfully */
- return;
- }
- }
-#if (NFC_HAL_PRE_I2C_PATCH_INCLUDED == TRUE)
- if (nfc_hal_cb.prm.flags & NFC_HAL_PRM_FLAGS_I2C_FIX_REQUIRED) {
- HAL_TRACE_DEBUG0("I2C patch fix required.");
- /* Download i2c fix first */
- nfc_hal_prm_spd_download_i2c_fix();
- return;
- }
-#endif /* NFC_HAL_PRE_I2C_PATCH_INCLUDED */
-
- /* Download first segment */
- nfc_hal_cb.prm.state = NFC_HAL_PRM_ST_SPD_GET_PATCH_HEADER;
- if (!(nfc_hal_cb.prm.flags & NFC_HAL_PRM_FLAGS_USE_PATCHRAM_BUF)) {
- /* Notify adaptation layer to call HAL_NfcPrmDownloadContinue with the next
- * patch segment */
- (nfc_hal_cb.prm.p_cback)(NFC_HAL_PRM_SPD_GET_NEXT_PATCH);
- } else {
- nfc_hal_prm_spd_handle_next_patch_start();
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_prm_spd_check_version
-**
-** Description Check patchfile version with current downloaded version
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_prm_spd_check_version(void) {
- uint8_t *p, *p_start, i;
- uint32_t nvm_patch_present_mask = 0;
- uint32_t patchfile_patch_present_mask;
- uint16_t patchfile_project_id = 0;
- uint16_t patchfile_ver_major = 0;
- uint16_t patchfile_ver_minor = 0;
- uint16_t patchfile_patchsize;
-
- uint8_t return_code = NFC_HAL_PRM_COMPLETE_EVT;
-
- /* Initialize patchfile offset pointers */
- p = p_start = NULL;
- patchfile_patchsize = 0;
-
- /* the good patches in NVM */
- if (nfc_hal_cb.nvm_cb.lpm_size &&
- !(nfc_hal_cb.nvm_cb.flags & (NFC_HAL_NVM_FLAGS_LPM_BAD)))
- nvm_patch_present_mask |= (1 << NFC_HAL_PRM_SPD_POWER_MODE_LPM);
-
- if (nfc_hal_cb.nvm_cb.fpm_size &&
- !(nfc_hal_cb.nvm_cb.flags & (NFC_HAL_NVM_FLAGS_FPM_BAD)))
- nvm_patch_present_mask |= (1 << NFC_HAL_PRM_SPD_POWER_MODE_FPM);
-
- /* Get patchfile version */
- if (nfc_hal_cb.prm.cur_patch_len_remaining >=
- NFC_HAL_PRM_NCD_PATCHFILE_HDR_LEN) {
- /* Parse patchfile header */
- p = (uint8_t*)nfc_hal_cb.prm.p_cur_patch_data;
- p_start = p;
- STREAM_TO_UINT16(patchfile_project_id, p);
- STREAM_TO_UINT16(patchfile_ver_major, p);
- STREAM_TO_UINT16(patchfile_ver_minor, p);
-
- /* RFU */
- p++;
-
- /* Check how many patches are in the patch file */
- STREAM_TO_UINT8(nfc_hal_cb.prm.spd_patch_count, p);
-
- if (nfc_hal_cb.prm.spd_patch_count > NFC_HAL_PRM_MAX_PATCH_COUNT) {
- HAL_TRACE_ERROR2(
- "Unsupported patchfile (number of patches (%i) exceeds maximum (%i)",
- nfc_hal_cb.prm.spd_patch_count, NFC_HAL_PRM_MAX_PATCH_COUNT);
- }
-
- /* Mask of patches that are present in the patchfile */
- patchfile_patch_present_mask = 0;
-
- /* Get lengths for each patch */
- for (i = 0; i < nfc_hal_cb.prm.spd_patch_count; i++) {
- /* Get power mode for this patch */
- STREAM_TO_UINT8(nfc_hal_cb.prm.spd_patch_desc[i].power_mode, p);
-
- /* Update mask of power-modes present in the patchfile */
- patchfile_patch_present_mask |=
- ((uint32_t)1 << nfc_hal_cb.prm.spd_patch_desc[i].power_mode);
-
- /* Get length of patch */
- STREAM_TO_UINT16(nfc_hal_cb.prm.spd_patch_desc[i].len, p);
-
- /* Add total size of patches */
- patchfile_patchsize += nfc_hal_cb.prm.spd_patch_desc[i].len;
-
- /* 5 byte RFU */
- p += 5;
- }
-
- /* Adjust offset to after the patch file header */
- nfc_hal_cb.prm.cur_patch_offset += (uint16_t)(
- p - p_start); /* Bytes of patchfile transmitted/processed so far */
- nfc_hal_cb.prm.cur_patch_len_remaining -=
- (uint16_t)(p - p_start); /* Adjust size of patchfile */
-
- HAL_TRACE_DEBUG4(
- "NVM Patch info: flags=0x%04x, Ver=%i.%i, PatchMask=0x%08x",
- nfc_hal_cb.nvm_cb.flags, nfc_hal_cb.nvm_cb.ver_major,
- nfc_hal_cb.nvm_cb.ver_minor, nvm_patch_present_mask);
- HAL_TRACE_DEBUG6(
- "Patchfile info: ProjID=0x%04x, Ver=%i.%i, Num patches=%i, "
- "PatchMask=0x%08x, PatchSize=%i",
- patchfile_project_id, patchfile_ver_major, patchfile_ver_minor,
- nfc_hal_cb.prm.spd_patch_count, patchfile_patch_present_mask,
- patchfile_patchsize);
-
- /*********************************************************************
- * Version check of patchfile against NVM
- *********************************************************************/
- /* Download the patchfile if no patches in NVM */
- if ((nfc_hal_cb.nvm_cb.project_id == 0) ||
- !(nfc_hal_cb.nvm_cb.flags & NFC_HAL_NVM_FLAGS_PATCH_PRESENT)) {
- /* No patch in NVM, need to download all */
- nfc_hal_cb.prm.spd_patch_needed_mask = patchfile_patch_present_mask;
- if (nfc_hal_cb.dev_cb.brcm_hw_id == BRCM_20795A1_ID) {
- nfc_hal_cb.prm.flags |= NFC_HAL_PRM_FLAGS_RM_RF;
- nfc_hal_cb.prm.p_param = (void*)nfc_hal_prm_rm_rf_20795a1;
- nfc_hal_cb.prm.param_idx = 0;
- }
-
- HAL_TRACE_DEBUG2("No previous patch detected. Downloading patch %i.%i",
- patchfile_ver_major, patchfile_ver_minor);
- }
- /* Skip download if project ID of patchfile does not match NVM */
- else if (nfc_hal_cb.nvm_cb.project_id != patchfile_project_id) {
- /* Project IDs mismatch */
- HAL_TRACE_DEBUG2(
- "Patch download skipped: Mismatched Project ID (NVM ProjId: 0x%04x, "
- "Patchfile ProjId: 0x%04x)",
- nfc_hal_cb.nvm_cb.project_id, patchfile_project_id);
-
- return_code = NFC_HAL_PRM_ABORT_INVALID_PATCH_EVT;
- }
- /* Skip download if version of patchfile is equal to version in NVM */
- /* and patches of the power modes are the same as the good
- patches in NVM */
- else if ((nfc_hal_cb.nvm_cb.ver_major == patchfile_ver_major) &&
- (nfc_hal_cb.nvm_cb.ver_minor == patchfile_ver_minor) &&
- ((nvm_patch_present_mask | patchfile_patch_present_mask) ==
- nvm_patch_present_mask)) /* if the NVM patch include all the
- patched in file */
- {
- HAL_TRACE_DEBUG2(
- "Patch download skipped. NVM patch (version %i.%i) is the same than "
- "the patchfile ",
- nfc_hal_cb.nvm_cb.ver_major, nfc_hal_cb.nvm_cb.ver_minor);
-
- return_code = NFC_HAL_PRM_COMPLETE_EVT;
- }
- /* Remaining cases: Download all patches in the patchfile */
- else {
- nfc_hal_cb.prm.spd_patch_needed_mask = patchfile_patch_present_mask;
-
- HAL_TRACE_DEBUG4(
- "Downloading patch version: %i.%i (previous version in NVM: "
- "%i.%i)...",
- patchfile_ver_major, patchfile_ver_minor, nfc_hal_cb.nvm_cb.ver_major,
- nfc_hal_cb.nvm_cb.ver_minor);
- }
-
- } else {
- /* Invalid patch file header */
- HAL_TRACE_ERROR0("Invalid patch file header.");
-
- return_code = NFC_HAL_PRM_ABORT_INVALID_PATCH_EVT;
- }
-
- /* If we need to download anything, get the first patch to download */
- if (nfc_hal_cb.prm.spd_patch_needed_mask) {
- HAL_TRACE_ERROR4(
- "Downloading patch version: %i.%i (previous version in NVM: %i.%i)...",
- patchfile_ver_major, patchfile_ver_minor, nfc_hal_cb.nvm_cb.ver_major,
- nfc_hal_cb.nvm_cb.ver_minor);
-#if (NFC_HAL_PRE_I2C_PATCH_INCLUDED == TRUE)
- /* Check if I2C patch is needed: if */
- /* - I2C patch file was provided using HAL_NfcPrmSetI2cPatch, and */
- /* - current patch in NVM has ProjectID=0, or */
- /* FPM is not present or corrupted, or */
- /* or patchfile is major-ver 76+ */
- /* or patchfile is not for B3 (always download for B4 onward) */
- if ((nfc_hal_cb.prm_i2c.p_patch) &&
- ((nfc_hal_cb.nvm_cb.project_id == 0) ||
- (nfc_hal_cb.nvm_cb.fpm_size == 0) ||
- (nfc_hal_cb.nvm_cb.flags & NFC_HAL_NVM_FLAGS_FPM_BAD) ||
- (patchfile_ver_major >= 76) ||
- (!(nfc_hal_cb.prm.flags & NFC_HAL_PRM_FLAGS_BCM20791B3)))) {
- HAL_TRACE_DEBUG0("I2C patch fix required.");
- nfc_hal_cb.prm.flags |= NFC_HAL_PRM_FLAGS_I2C_FIX_REQUIRED;
- }
-#endif /* NFC_HAL_PRE_I2C_PATCH_INCLUDED */
- nfc_hal_prm_spd_check_version_continue();
- } else {
- static bool firstTime = true;
- if (firstTime) {
- HAL_TRACE_ERROR2("NVM patch version is %d.%d",
- nfc_hal_cb.nvm_cb.ver_major,
- nfc_hal_cb.nvm_cb.ver_minor);
- firstTime = false;
- }
- /* Download complete */
- nfc_hal_prm_spd_handle_download_complete(return_code);
- }
-}
-
-#if (NFC_HAL_TRACE_VERBOSE == TRUE)
-/*******************************************************************************
-**
-** Function nfc_hal_prm_spd_status_str
-**
-** Description Return status string for a given spd status code
-**
-** Returns Status string
-**
-*******************************************************************************/
-uint8_t* nfc_hal_prm_spd_status_str(uint8_t spd_status_code) {
- char* p_str;
-
- switch (spd_status_code) {
- case NCI_STATUS_SPD_ERROR_DEST:
- p_str = "SPD_ERROR_DEST";
- break;
-
- case NCI_STATUS_SPD_ERROR_PROJECTID:
- p_str = "SPD_ERROR_PROJECTID";
- break;
-
- case NCI_STATUS_SPD_ERROR_CHIPVER:
- p_str = "SPD_ERROR_CHIPVER";
- break;
-
- case NCI_STATUS_SPD_ERROR_MAJORVER:
- p_str = "SPD_ERROR_MAJORVER";
- break;
-
- case NCI_STATUS_SPD_ERROR_INVALID_PARAM:
- p_str = "SPD_ERROR_INVALID_PARAM";
- break;
-
- case NCI_STATUS_SPD_ERROR_INVALID_SIG:
- p_str = "SPD_ERROR_INVALID_SIG";
- break;
-
- case NCI_STATUS_SPD_ERROR_NVM_CORRUPTED:
- p_str = "SPD_ERROR_NVM_CORRUPTED";
- break;
-
- case NCI_STATUS_SPD_ERROR_PWR_MODE:
- p_str = "SPD_ERROR_PWR_MODE";
- break;
-
- case NCI_STATUS_SPD_ERROR_MSG_LEN:
- p_str = "SPD_ERROR_MSG_LEN";
- break;
-
- case NCI_STATUS_SPD_ERROR_PATCHSIZE:
- p_str = "SPD_ERROR_PATCHSIZE";
- break;
-
- default:
- p_str = "Unspecified Error";
- break;
- }
-
- return ((uint8_t*)p_str);
-}
-#endif /* (NFC_HAL_TRACE_VERBOSE == TRUE) */
-/*******************************************************************************
-**
-** Function nfc_hal_prm_nvm_rw_cmd
-**
-** Description Non Volatile Read Write Command; for now only write zeros
-**
-** Returns TRUE if done.
-**
-*******************************************************************************/
-static bool nfc_hal_prm_nvm_rw_cmd(void) {
- tNFC_HAL_PRM_RM_RF* p_param = (tNFC_HAL_PRM_RM_RF*)(nfc_hal_cb.prm.p_param);
- uint8_t *p_buff, *p, *p_end;
- uint8_t len = 0;
- uint16_t cmd_len;
-
- if (p_param) len = p_param[nfc_hal_cb.prm.param_idx].len;
- HAL_TRACE_DEBUG2("nfc_hal_prm_nvm_rw_cmd: %d/%d", nfc_hal_cb.prm.param_idx,
- len);
- if (len == 0) {
- return true;
- }
- cmd_len = len + 7;
-
- p_buff = (uint8_t*)GKI_getbuf(cmd_len);
- if (p_buff == NULL) {
- HAL_TRACE_ERROR0("NVM No buffer");
- nfc_hal_prm_spd_handle_download_complete(NFC_HAL_PRM_ABORT_EVT);
- return true;
- }
-
- p = p_buff;
-
- UINT8_TO_STREAM(p, (NCI_MTS_CMD | NCI_GID_PROP));
- UINT8_TO_STREAM(p, NCI_MSG_EEPROM_RW);
- UINT8_TO_STREAM(p, (len + 4));
- UINT8_TO_STREAM(p, 1); /* 1=write 0=read */
- UINT16_TO_STREAM(p, p_param[nfc_hal_cb.prm.param_idx].offset);
- UINT8_TO_STREAM(p, len);
- memset(p, 0, len); /* Fill remaining bytes with zeros*/
-
- nfc_hal_cb.prm.param_idx++;
- nfc_hal_dm_send_nci_cmd(p_buff, cmd_len,
- nfc_hal_prm_nci_command_complete_cback);
- GKI_freebuf(p_buff);
- return false;
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_prm_nci_command_complete_cback
-**
-** Description Callback for NCI vendor specific command complete
-** (for secure patch download)
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_prm_nci_command_complete_cback(tNFC_HAL_NCI_EVT event,
- uint16_t data_len,
- uint8_t* p_data) {
- uint8_t status, u8;
- uint8_t* p;
- uint32_t post_signature_delay;
-
- NFC_HAL_PRM_STATE("nfc_hal_prm_nci_command_complete_cback");
-
- /* Stop the command-timeout timer */
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.prm.timer);
-
- /* Skip over NCI header */
- p = p_data + NCI_MSG_HDR_SIZE;
-
- /* Handle SECURE_PATCH_DOWNLOAD Rsp */
- if (event == NFC_VS_SEC_PATCH_DOWNLOAD_EVT) {
- /* Status and error code */
- STREAM_TO_UINT8(status, p);
- STREAM_TO_UINT8(u8, p);
-
- if (status != NCI_STATUS_OK) {
-#if (NFC_HAL_TRACE_VERBOSE == TRUE)
- HAL_TRACE_ERROR2("Patch download failed, reason code=0x%X (%s)", status,
- nfc_hal_prm_spd_status_str(status));
-#else
- HAL_TRACE_ERROR1("Patch download failed, reason code=0x%X", status);
-#endif
-
- /* Notify application */
- nfc_hal_prm_spd_handle_download_complete(
- NFC_HAL_PRM_ABORT_INVALID_PATCH_EVT);
- return;
- }
-
- /* If last segment (SIGNATURE) sent */
- if (nfc_hal_cb.prm.flags & NFC_HAL_PRM_FLAGS_SIGNATURE_SENT) {
- /* Wait for authentication complete (SECURE_PATCH_DOWNLOAD NTF), including
- * time to commit to NVM (for BCM43341B0) */
- nfc_hal_cb.prm.state = NFC_HAL_PRM_ST_SPD_AUTHENTICATING;
- nfc_hal_main_start_quick_timer(
- &nfc_hal_cb.prm.timer, 0x00,
- (NFC_HAL_PRM_COMMIT_DELAY * QUICK_TIMER_TICKS_PER_SEC) / 1000);
- return;
- }
- /* Download next segment */
- else if (nfc_hal_cb.prm.flags & NFC_HAL_PRM_FLAGS_USE_PATCHRAM_BUF) {
- /* If patch is in a buffer, get next patch from buffer */
- nfc_hal_prm_spd_send_next_segment();
- } else {
- /* Notify adaptation layer to get next patch segment (via
- * HAL_NfcPrmDownloadContinue) */
- (nfc_hal_cb.prm.p_cback)(NFC_HAL_PRM_CONTINUE_EVT);
- }
- }
- /* Handle SECURE_PATCH_DOWNLOAD NTF */
- else if (event == NFC_VS_SEC_PATCH_AUTH_EVT) {
- HAL_TRACE_DEBUG1("prm flags:0x%x.", nfc_hal_cb.prm.flags);
- /* Status and error code */
- STREAM_TO_UINT8(status, p);
- STREAM_TO_UINT8(u8, p);
-
- /* Sanity check - should only get this NTF while in AUTHENTICATING stage */
- if (nfc_hal_cb.prm.state == NFC_HAL_PRM_ST_SPD_AUTHENTICATING) {
- if (status != NCI_STATUS_OK) {
- HAL_TRACE_ERROR0("Patch authentication failed");
- nfc_hal_prm_spd_handle_download_complete(
- NFC_HAL_PRM_ABORT_BAD_SIGNATURE_EVT);
- return;
- }
-
-#if (NFC_HAL_PRE_I2C_PATCH_INCLUDED == TRUE)
- if (nfc_hal_cb.prm.flags & NFC_HAL_PRM_FLAGS_I2C_FIX_REQUIRED) {
- HAL_TRACE_DEBUG1(
- "PreI2C patch downloaded...waiting %i ms for NFCC to reboot.",
- nfc_hal_cb.prm_i2c.prei2c_delay);
-
- /* Restore pointers to patchfile */
- nfc_hal_cb.prm.flags &= ~NFC_HAL_PRM_FLAGS_I2C_FIX_REQUIRED;
- nfc_hal_cb.prm.p_cur_patch_data = nfc_hal_cb.prm.p_spd_patch;
- nfc_hal_cb.prm.cur_patch_offset = nfc_hal_cb.prm.spd_patch_offset;
- nfc_hal_cb.prm.cur_patch_len_remaining =
- nfc_hal_cb.prm.spd_patch_len_remaining;
-
- /* Resume normal patch download */
- nfc_hal_cb.prm.state = NFC_HAL_PRM_ST_SPD_GET_PATCH_HEADER;
- nfc_hal_cb.prm.flags &= ~NFC_HAL_PRM_FLAGS_SIGNATURE_SENT;
-
- /* Post PreI2C delay */
- nfc_hal_main_start_quick_timer(
- &nfc_hal_cb.prm.timer, 0x00,
- (nfc_hal_cb.prm_i2c.prei2c_delay * QUICK_TIMER_TICKS_PER_SEC) /
- 1000);
-
- return;
- }
-#endif /* NFC_HAL_PRE_I2C_PATCH_INCLUDED */
-
- /* Wait for NFCC to save the patch to NVM */
- if (!(nfc_hal_cb.prm.flags & NFC_HAL_PRM_FLAGS_BCM20791B3)) {
- /* 20791B4 or newer - wait for RESET_NTF; including time to commit to
- * NVM (for BCM20791B4+) */
- post_signature_delay = NFC_HAL_PRM_COMMIT_DELAY;
- HAL_TRACE_DEBUG1(
- "Patch downloaded and authenticated. Waiting %i ms for RESET "
- "NTF...",
- post_signature_delay);
-
- } else if (nfc_hal_cb.nvm_cb.flags & NFC_HAL_NVM_FLAGS_NO_NVM) {
- /* No NVM. Wait for NFCC to restart */
- post_signature_delay = NFC_HAL_PRM_END_DELAY;
- HAL_TRACE_DEBUG1(
- "Patch downloaded and authenticated. Waiting %i ms for NFCC to "
- "restart...",
- post_signature_delay);
- } else {
- /* Wait for NFCC to save the patch to NVM (need about 1 ms per byte) */
- post_signature_delay =
- nfc_hal_cb.prm.spd_patch_desc[nfc_hal_cb.prm.spd_cur_patch_idx].len;
- if (post_signature_delay < nfc_hal_cb.prm.patchram_delay)
- post_signature_delay = nfc_hal_cb.prm.patchram_delay;
- HAL_TRACE_DEBUG1(
- "Patch downloaded and authenticated. Waiting %i ms for NVM update "
- "to complete...",
- post_signature_delay);
- }
-
- nfc_hal_cb.prm.state = NFC_HAL_PRM_ST_SPD_AUTH_DONE;
-
- nfc_hal_main_start_quick_timer(
- &nfc_hal_cb.prm.timer, 0x00,
- (post_signature_delay * QUICK_TIMER_TICKS_PER_SEC) / 1000);
- } else {
- HAL_TRACE_ERROR0("Got unexpected SECURE_PATCH_DOWNLOAD NTF");
- nfc_hal_prm_spd_handle_download_complete(NFC_HAL_PRM_ABORT_EVT);
- }
- }
- /* Handle NCI_MSG_GET_PATCH_VERSION RSP */
- else if (event == NFC_VS_GET_PATCH_VERSION_EVT) {
- nfc_hal_prm_spd_handle_download_complete(NFC_HAL_PRM_COMPLETE_EVT);
- } else if (event == NFC_VS_EEPROM_RW_EVT) {
- STREAM_TO_UINT8(status, p);
- if (status == NCI_STATUS_OK) {
- if (nfc_hal_prm_nvm_rw_cmd()) {
- nfc_hal_prm_spd_check_version_continue();
- }
- } else {
- HAL_TRACE_ERROR0("NVM failed");
- nfc_hal_prm_spd_handle_download_complete(NFC_HAL_PRM_ABORT_EVT);
- }
- } else {
- /* Invalid response from NFCC during patch download */
- HAL_TRACE_ERROR1(
- "Invalid response from NFCC during patch download (opcode=0x%02X)",
- event);
- nfc_hal_prm_spd_handle_download_complete(
- NFC_HAL_PRM_ABORT_INVALID_PATCH_EVT);
- }
-
- NFC_HAL_PRM_STATE("prm_nci_command_complete_cback");
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_prm_nfcc_ready_to_continue
-**
-** Description Continue to download patch or notify application
-*completition
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_prm_nfcc_ready_to_continue(void) {
- uint8_t get_patch_version_cmd[NCI_MSG_HDR_SIZE] = {
- NCI_MTS_CMD | NCI_GID_PROP, NCI_MSG_GET_PATCH_VERSION, 0x00};
-
- /* Clear the bit for the patch we just downloaded */
- nfc_hal_cb.prm.spd_patch_needed_mask &=
- ~((uint32_t)1 << nfc_hal_cb.prm
- .spd_patch_desc[nfc_hal_cb.prm.spd_cur_patch_idx]
- .power_mode);
-
- /* Check if another patch to download */
- nfc_hal_cb.prm.spd_cur_patch_idx++;
- if ((nfc_hal_cb.prm.spd_patch_needed_mask) &&
- (nfc_hal_cb.prm.spd_cur_patch_idx < nfc_hal_cb.prm.spd_patch_count)) {
- nfc_hal_cb.prm.state = NFC_HAL_PRM_ST_SPD_GET_PATCH_HEADER;
- nfc_hal_cb.prm.flags &= ~NFC_HAL_PRM_FLAGS_SIGNATURE_SENT;
-
- if (nfc_hal_cb.prm.flags & NFC_HAL_PRM_FLAGS_USE_PATCHRAM_BUF) {
- /* If patch is in a buffer, get next patch from buffer */
- nfc_hal_prm_spd_handle_next_patch_start();
- } else {
- /* Notify adaptation layer to get next patch header (via
- * HAL_NfcPrmDownloadContinue) */
- (nfc_hal_cb.prm.p_cback)(NFC_HAL_PRM_SPD_GET_NEXT_PATCH);
- }
-
- } else {
- /* Done downloading */
- HAL_TRACE_DEBUG0(
- "Patch downloaded and authenticated. Get new patch version.");
- /* add get patch info again to verify the effective FW version */
- nfc_hal_dm_send_nci_cmd(get_patch_version_cmd, NCI_MSG_HDR_SIZE,
- nfc_hal_prm_nci_command_complete_cback);
- nfc_hal_cb.prm.state = NFC_HAL_PRM_ST_W4_GET_VERSION;
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_prm_spd_reset_ntf
-**
-** Description Received RESET NTF from NFCC, indicating it has completed
-** reset after patch download.
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_prm_spd_reset_ntf(uint8_t reset_reason, uint8_t reset_type) {
- /* Check if we were expecting a RESET NTF */
- if (nfc_hal_cb.prm.state == NFC_HAL_PRM_ST_SPD_AUTH_DONE) {
- HAL_TRACE_DEBUG2(
- "Received RESET NTF after patch download (reset_reason=%i, "
- "reset_type=%i)",
- reset_reason, reset_type);
-
- /* Stop waiting for RESET NTF */
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.prm.timer);
-
- {
- /* Continue with patch download */
- nfc_hal_prm_nfcc_ready_to_continue();
- }
- } else if (nfc_hal_cb.prm.state == NFC_HAL_PRM_ST_SPD_GET_PATCH_HEADER) {
- HAL_TRACE_DEBUG0(
- "Received RESET NTF after pre-I2C patch download. Proceeding with "
- "patch download...");
-
- /* Stop waiting for RESET NTF */
- nfc_hal_main_stop_quick_timer(&nfc_hal_cb.prm.timer);
- nfc_hal_prm_spd_handle_next_patch_start();
- } else {
- HAL_TRACE_ERROR2(
- "Received unexpected RESET NTF (reset_reason=%i, reset_type=%i)",
- reset_reason, reset_type);
- }
-}
-
-/*******************************************************************************
-**
-** Function: nfc_post_final_baud_update
-**
-** Description: Called after baud rate udate
-**
-** Returns: Nothing
-**
-*******************************************************************************/
-void nfc_hal_prm_post_baud_update(tHAL_NFC_STATUS status) {
- NFC_HAL_PRM_STATE("nfc_hal_prm_post_baud_update");
-
- if (nfc_hal_cb.prm.state == NFC_HAL_PRM_ST_SPD_AUTH_DONE) {
- /* Proceed with next step of patch download sequence */
- nfc_hal_prm_nfcc_ready_to_continue();
- }
-}
-
-/*******************************************************************************
-**
-** Function nfc_hal_prm_process_timeout
-**
-** Description Process timer expireation for patch download
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_prm_process_timeout(void* p_tle) {
- NFC_HAL_PRM_STATE("nfc_hal_prm_process_timeout");
-
- if (nfc_hal_cb.prm.state == NFC_HAL_PRM_ST_SPD_AUTH_DONE) {
- if (!(nfc_hal_cb.prm.flags & NFC_HAL_PRM_FLAGS_BCM20791B3)) {
- /* Timeout waiting for RESET NTF after signature sent */
- HAL_TRACE_ERROR0("Timeout waiting for RESET NTF after patch download");
- nfc_hal_prm_spd_handle_download_complete(NFC_HAL_PRM_ABORT_EVT);
- } else {
- nfc_hal_prm_nfcc_ready_to_continue();
- }
- } else if (nfc_hal_cb.prm.state == NFC_HAL_PRM_ST_SPD_GET_PATCH_HEADER) {
- HAL_TRACE_DEBUG0(
- "Delay after PreI2C patch download...proceeding to download firmware "
- "patch");
- nfc_hal_prm_spd_handle_next_patch_start();
- } else if (nfc_hal_cb.prm.state == NFC_HAL_PRM_ST_W4_GET_VERSION) {
- HAL_TRACE_DEBUG0("get patch version timeout???");
- nfc_hal_prm_spd_handle_download_complete(NFC_HAL_PRM_COMPLETE_EVT);
- } else {
- HAL_TRACE_ERROR1("Patch download: command timeout (state=%i)",
- nfc_hal_cb.prm.state);
-
- nfc_hal_prm_spd_handle_download_complete(NFC_HAL_PRM_ABORT_EVT);
- }
-
- NFC_HAL_PRM_STATE("nfc_hal_prm_process_timeout");
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcPrmDownloadStart
-**
-** Description Initiate patch download
-**
-** Input Params
-** format_type patch format type
-** (NFC_HAL_PRM_FORMAT_BIN,
-*NFC_HAL_PRM_FORMAT_HCD, or
-** NFC_HAL_PRM_FORMAT_NCD)
-**
-** dest_address destination adderess (needed for BIN format
-*only)
-**
-** p_patchram_buf pointer to patchram buffer. If NULL,
-** then app must call
-*HAL_NfcPrmDownloadContinue when
-** NFC_HAL_PRM_CONTINUE_EVT is received, to
-*send the next
-** segment of patchram
-**
-** patchram_len size of p_patchram_buf (if non-NULL)
-**
-** patchram_delay The delay after each patch.
-** If the given value is less than the size of
-*the patchram,
-** the size of patchram is used instead.
-**
-** p_cback callback for download status
-**
-**
-** Returns TRUE if successful, otherwise FALSE
-**
-**
-*******************************************************************************/
-bool HAL_NfcPrmDownloadStart(tNFC_HAL_PRM_FORMAT format_type,
- uint32_t dest_address, uint8_t* p_patchram_buf,
- uint32_t patchram_len, uint32_t patchram_delay,
- tNFC_HAL_PRM_CBACK* p_cback) {
- HAL_TRACE_API0("HAL_NfcPrmDownloadStart ()");
-
- memset(&nfc_hal_cb.prm, 0, sizeof(tNFC_HAL_PRM_CB));
-
- if (p_patchram_buf) {
- nfc_hal_cb.prm.p_cur_patch_data = p_patchram_buf;
- nfc_hal_cb.prm.cur_patch_offset = 0;
- nfc_hal_cb.prm.cur_patch_len_remaining = (uint16_t)patchram_len;
- nfc_hal_cb.prm.flags |= NFC_HAL_PRM_FLAGS_USE_PATCHRAM_BUF;
-
- if (patchram_len == 0) return false;
- }
-
- nfc_hal_cb.prm.p_cback = p_cback;
- nfc_hal_cb.prm.dest_ram = dest_address;
- nfc_hal_cb.prm.format = format_type;
- nfc_hal_cb.prm.patchram_delay = patchram_delay;
-
- nfc_hal_cb.prm.timer.p_cback = nfc_hal_prm_process_timeout;
-
- if (format_type == NFC_HAL_PRM_FORMAT_NCD) {
- /* Store patch buffer pointer and length */
- nfc_hal_cb.prm.p_spd_patch = p_patchram_buf;
- nfc_hal_cb.prm.spd_patch_len_remaining = (uint16_t)patchram_len;
- nfc_hal_cb.prm.spd_patch_offset = 0;
-
- /* If patch download is required, but no NVM is available, then abort */
- if ((p_nfc_hal_cfg->nfc_hal_prm_nvm_required) &&
- (nfc_hal_cb.nvm_cb.flags & NFC_HAL_NVM_FLAGS_NO_NVM)) {
- HAL_TRACE_ERROR0(
- "This platform requires NVM and the NVM is not available - Abort");
- nfc_hal_prm_spd_handle_download_complete(NFC_HAL_PRM_ABORT_NO_NVM_EVT);
- return false;
- }
-
- /* Compare patch version in NVM with version in patchfile */
- nfc_hal_cb.prm.state = NFC_HAL_PRM_ST_SPD_COMPARE_VERSION;
- if (nfc_hal_cb.prm.flags & NFC_HAL_PRM_FLAGS_USE_PATCHRAM_BUF) {
- /* If patchfile is in a buffer, get patch version from buffer */
- nfc_hal_prm_spd_check_version();
- } else {
- /* If patchfile is not in a buffer, then request patchfile header from
- * adaptation layer. */
- (nfc_hal_cb.prm.p_cback)(NFC_HAL_PRM_SPD_GET_PATCHFILE_HDR_EVT);
- }
- } else {
- HAL_TRACE_ERROR0("Unexpected patch format.");
- return false;
- }
-
- return true;
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcPrmDownloadContinue
-**
-** Description Send next segment of patchram to controller. Called when
-** NFC_HAL_PRM_CONTINUE_EVT is received.
-**
-** Only needed if HAL_NfcPrmDownloadStart was called with
-** p_patchram_buf=NULL
-**
-** Input Params p_patch_data pointer to patch data
-** patch_data_len patch data len
-**
-** Returns TRUE if successful, otherwise FALSE
-**
-*******************************************************************************/
-bool HAL_NfcPrmDownloadContinue(uint8_t* p_patch_data,
- uint16_t patch_data_len) {
- HAL_TRACE_API2("HAL_NfcPrmDownloadContinue ():state = %d, patch_data_len=%d",
- nfc_hal_cb.prm.state, patch_data_len);
-
- /* Check if we are in a valid state for this API */
- if ((nfc_hal_cb.prm.state != NFC_HAL_PRM_ST_SPD_COMPARE_VERSION) &&
- (nfc_hal_cb.prm.state != NFC_HAL_PRM_ST_SPD_GET_PATCH_HEADER) &&
- (nfc_hal_cb.prm.state != NFC_HAL_PRM_ST_SPD_DOWNLOADING))
- return false;
-
- if (patch_data_len == 0) return false;
-
- nfc_hal_cb.prm.cur_patch_offset = 0;
- nfc_hal_cb.prm.p_cur_patch_data = p_patch_data;
- nfc_hal_cb.prm.cur_patch_len_remaining = patch_data_len;
-
- /* Call appropriate handler */
- if (nfc_hal_cb.prm.state == NFC_HAL_PRM_ST_SPD_COMPARE_VERSION) {
- nfc_hal_prm_spd_check_version();
- } else if (nfc_hal_cb.prm.state == NFC_HAL_PRM_ST_SPD_GET_PATCH_HEADER) {
- nfc_hal_prm_spd_handle_next_patch_start();
- } else if (nfc_hal_cb.prm.state == NFC_HAL_PRM_ST_SPD_DOWNLOADING) {
- nfc_hal_prm_spd_send_next_segment();
- } else {
- HAL_TRACE_ERROR1("Unexpected patch state:%d.", nfc_hal_cb.prm.state);
- }
-
- return true;
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcPrmSetI2cPatch
-**
-** Description Specify patchfile for BCM20791B3 I2C fix. This fix
-** must be downloaded prior to initial patch download for I2C
-** transport
-**
-** Input Params p_i2c_patchfile_buf: pointer to patch for i2c fix
-** i2c_patchfile_len: length of patch
-** prei2c_delay: the delay before downloading main patch
-** if 0 is given, NFC_HAL_PRM_POST_I2C_FIX_DELAY
-*is used instead.
-**
-** Returns Nothing
-**
-**
-*******************************************************************************/
-void HAL_NfcPrmSetI2cPatch(uint8_t* p_i2c_patchfile_buf,
- uint16_t i2c_patchfile_len, uint32_t prei2c_delay) {
-#if (NFC_HAL_PRE_I2C_PATCH_INCLUDED == TRUE)
- HAL_TRACE_API0("HAL_NfcPrmSetI2cPatch ()");
-
- nfc_hal_cb.prm_i2c.prei2c_delay = NFC_HAL_PRM_POST_I2C_FIX_DELAY;
- if (prei2c_delay) nfc_hal_cb.prm_i2c.prei2c_delay = prei2c_delay;
- nfc_hal_cb.prm_i2c.p_patch = p_i2c_patchfile_buf;
- nfc_hal_cb.prm_i2c.len = i2c_patchfile_len;
-#endif /* NFC_HAL_PRE_I2C_PATCH_INCLUDED */
-}
-
-/*******************************************************************************
-**
-** Function HAL_NfcPrmSetSpdNciCmdPayloadSize
-**
-** Description Set Host-to-NFCC NCI message size for secure patch download
-**
-** This API must be called before calling
-*HAL_NfcPrmDownloadStart.
-** If the API is not called, then PRM will use the default
-** message size.
-**
-** Typically, this API is only called for platforms that have
-** message-size limitations in the transport/driver.
-**
-** Valid message size range:
-*NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE to 255.
-**
-** Returns HAL_NFC_STATUS_OK if successful
-** HAL_NFC_STATUS_FAILED otherwise
-**
-**
-*******************************************************************************/
-tHAL_NFC_STATUS HAL_NfcPrmSetSpdNciCmdPayloadSize(uint8_t max_payload_size) {
- /* Validate: minimum size is NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE */
- if (max_payload_size < NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE) {
- HAL_TRACE_ERROR2(
- "HAL_NfcPrmSetSpdNciCmdPayloadSize: invalid size (%i). Must be between "
- "%i and 255",
- max_payload_size, NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE);
- return (HAL_NFC_STATUS_FAILED);
- } else {
- HAL_TRACE_API1(
- "HAL_NfcPrmSetSpdNciCmdPayloadSize: new message size during download: "
- "%i",
- max_payload_size);
- nfc_hal_cb.ncit_cb.nci_ctrl_size = max_payload_size;
- return (HAL_NFC_STATUS_OK);
- }
-}
diff --git a/halimpl/bcm2079x/include/HalAdaptation.h b/halimpl/bcm2079x/include/HalAdaptation.h
deleted file mode 100644
index a6e3bd1..0000000
--- a/halimpl/bcm2079x/include/HalAdaptation.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/******************************************************************************
- *
- * 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);
-extern int HaiGetMaxNfcee(const bcm2079x_dev_t* device, uint8_t* maxNfcee);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/halimpl/bcm2079x/include/StartupConfig.h b/halimpl/bcm2079x/include/StartupConfig.h
deleted file mode 100644
index 1dbb5c3..0000000
--- a/halimpl/bcm2079x/include/StartupConfig.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- * Construct a buffer that contains multiple Type-Length-Value contents
- * that is used by the HAL in a CORE_SET_CONFIG NCI command.
- ******************************************************************************/
-
-#pragma once
-#include <string>
-#include "bt_types.h"
-
-class StartupConfig {
- public:
- typedef std::basic_string<uint8_t> uint8_string;
- StartupConfig();
-
- /*******************************************************************************
- **
- ** Function: initialize
- **
- ** Description: Reset all member variables.
- **
- ** Returns: None
- **
- *******************************************************************************/
- void initialize();
-
- /*******************************************************************************
- **
- ** Function: getInternalBuffer
- **
- ** Description: Get the pointer to buffer that contains multiple
- ** Type-Length-Value contents.
- **
- ** Returns: Pointer to buffer.
- **
- *******************************************************************************/
- const uint8_t* getInternalBuffer();
-
- /*******************************************************************************
- **
- ** Function: append
- **
- ** Description: Append new config data to internal buffer.
- ** newContent: buffer containing new content; newContent[0]
- *is
- ** payload length; newContent[1..end] is payload.
- ** newContentLen: total length of newContent.
- **
- ** Returns: True if ok.
- **
- *******************************************************************************/
- bool append(const uint8_t* newContent, uint8_t newContentLen);
-
- /*******************************************************************************
- **
- ** Function: disableSecureElement
- **
- ** Description: Adjust a TLV to disable secure element(s). The TLV's type
- *is 0xC2.
- ** bitmask: 0xC0 = do not detect any secure element.
- ** 0x40 = do not detect secure element in slot 0.
- ** 0x80 = do not detect secure element in slot 1.
- **
- ** Returns: True if ok.
- **
- *******************************************************************************/
- bool disableSecureElement(uint8_t bitmask);
-
- private:
- static const uint8_t mMaxLength;
- uint8_string mBuffer;
-};
diff --git a/halimpl/bcm2079x/include/_OverrideLog.h b/halimpl/bcm2079x/include/_OverrideLog.h
deleted file mode 100644
index 7f9a65f..0000000
--- a/halimpl/bcm2079x/include/_OverrideLog.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Override the Android logging macro(s) from
- * /system/core/include/cutils/log.h. This header must be the first header
- * included by a *.cpp file so the original Android macro can be replaced.
- * Do not include this header in another header, because that will create
- * unnecessary dependency.
- *
- ******************************************************************************/
-#pragma once
-
-// Override Android's ALOGD macro by adding a boolean expression.
-#define ALOGD(...) \
- ((void)ALOGD_IF(appl_trace_level >= BT_TRACE_LEVEL_DEBUG, __VA_ARGS__))
-
-#include <cutils/log.h> //define Android logging macros
-#include "bt_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern unsigned char appl_trace_level;
-extern uint32_t ScrProtocolTraceFlag;
-
-/*******************************************************************************
-**
-** Function: InitializeGlobalAppLogLevel
-**
-** Description: Initialize and get global logging level from .conf or
-** Android property nfc.app_log_level. The Android property
-** overrides .conf variable.
-**
-** Returns: Global log level:
-** BT_TRACE_LEVEL_NONE 0 * No trace messages to be
-*generated
-** BT_TRACE_LEVEL_ERROR 1 * Error condition trace
-*messages
-** BT_TRACE_LEVEL_WARNING 2 * Warning condition trace
-*messages
-** BT_TRACE_LEVEL_API 3 * API traces
-** BT_TRACE_LEVEL_EVENT 4 * Debug messages for events
-** BT_TRACE_LEVEL_DEBUG 5 * Debug messages (general)
-**
-*******************************************************************************/
-unsigned char InitializeGlobalAppLogLevel();
-uint32_t InitializeProtocolLogLevel();
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/halimpl/bcm2079x/include/android_logmsg.h b/halimpl/bcm2079x/include/android_logmsg.h
deleted file mode 100644
index 4dfccbc..0000000
--- a/halimpl/bcm2079x/include/android_logmsg.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2011-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.
- *
- ******************************************************************************/
-/******************************************************************************
- * Decode NFC packets and print them to ADB log.
- * If protocol decoder is not present, then decode packets into hex numbers.
- ******************************************************************************/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "data_types.h"
-#include "nfc_types.h"
-
-#define DISP_NCI ProtoDispAdapterDisplayNciPacket
-void ProtoDispAdapterDisplayNciPacket(uint8_t* nciPacket, uint16_t nciPacketLen,
- bool is_recv);
-void ProtoDispAdapterUseRawOutput(bool isUseRaw);
-void ScrLog(uint32_t trace_set_mask, const char* fmt_str, ...);
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...);
-void LogMsg_0(uint32_t trace_set_mask, const char* p_str);
-void LogMsg_1(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1);
-void LogMsg_2(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2);
-void LogMsg_3(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3);
-void LogMsg_4(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4);
-void LogMsg_5(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4, uintptr_t p5);
-void LogMsg_6(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4, uintptr_t p5,
- uintptr_t p6);
-uint8_t* scru_dump_hex(uint8_t* p, char* pTitle, uint32_t len, uint32_t layer,
- uint32_t type);
-void BTDISP_LOCK_LOG();
-void BTDISP_UNLOCK_LOG();
-void BTDISP_INIT_LOCK();
-void BTDISP_UNINIT_LOCK();
-void DispHciCmd(NFC_HDR* p_buf);
-void DispHciEvt(NFC_HDR* p_buf);
-void DispLLCP(NFC_HDR* p_buf, bool is_recv);
-void DispHcp(uint8_t* data, uint16_t len, bool is_recv);
-void DispSNEP(uint8_t local_sap, uint8_t remote_sap, NFC_HDR* p_buf,
- bool is_first, bool is_rx);
-void DispCHO(uint8_t* pMsg, uint32_t MsgLen, bool is_rx);
-void DispT3TagMessage(NFC_HDR* p_msg, bool is_rx);
-void DispRWT4Tags(NFC_HDR* p_buf, bool is_rx);
-void DispCET4Tags(NFC_HDR* p_buf, bool is_rx);
-void DispRWI93Tag(NFC_HDR* p_buf, bool is_rx, uint8_t command_to_respond);
-void DispNDEFMsg(uint8_t* pMsg, uint32_t MsgLen, bool is_recv);
-
-#ifdef __cplusplus
-};
-#endif
diff --git a/halimpl/bcm2079x/include/bcm2079x.h b/halimpl/bcm2079x/include/bcm2079x.h
deleted file mode 100644
index 5f45224..0000000
--- a/halimpl/bcm2079x/include/bcm2079x.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-
-#ifndef _BCM2079X_H
-#define _BCM2079X_H
-
-#define BCMNFC_MAGIC 0xFA
-
-/*
- * BCMNFC power control via ioctl
- * BCMNFC_POWER_CTL(0): power off
- * BCMNFC_POWER_CTL(1): power on
- * BCMNFC_WAKE_CTL(0): wake off
- * BCMNFC_WAKE_CTL(1): wake on
- */
-#define BCMNFC_POWER_CTL _IO(BCMNFC_MAGIC, 0x01)
-#define BCMNFC_CHANGE_ADDR _IO(BCMNFC_MAGIC, 0x02)
-#define BCMNFC_READ_FULL_PACKET _IO(BCMNFC_MAGIC, 0x03)
-#define BCMNFC_SET_WAKE_ACTIVE_STATE _IO(BCMNFC_MAGIC, 0x04)
-#define BCMNFC_WAKE_CTL _IO(BCMNFC_MAGIC, 0x05)
-#define BCMNFC_READ_MULTI_PACKETS _IO(BCMNFC_MAGIC, 0x06)
-#define BCMNFC_SET_CLIENT_ADDR _IO(BCMNFC_MAGIC, 0x07)
-
-struct bcm2079x_platform_data {
- unsigned int irq_gpio;
- unsigned int en_gpio;
- int wake_gpio;
-};
-
-#endif
diff --git a/halimpl/bcm2079x/include/buildcfg.h b/halimpl/bcm2079x/include/buildcfg.h
deleted file mode 100644
index d2e743d..0000000
--- a/halimpl/bcm2079x/include/buildcfg.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#pragma once
-#include <memory.h>
-#include <stdio.h>
-#include <string.h>
-#include "data_types.h"
-
-#define BTE_APPL_MAX_USERIAL_DEV_NAME (256)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern uint8_t* scru_dump_hex(uint8_t* p, char* p_title, uint32_t len,
- uint32_t trace_layer, uint32_t trace_type);
-void DispNci(uint8_t* p, uint16_t len, bool is_recv);
-void ProtoDispAdapterDisplayNciPacket(uint8_t* nciPacket, uint16_t nciPacketLen,
- bool is_recv);
-#define DISP_NCI ProtoDispAdapterDisplayNciPacket
-#define LOGMSG_TAG_NAME "NfcNciHal"
-
-#ifdef __cplusplus
-};
-#endif
diff --git a/halimpl/bcm2079x/include/buildcfg_hal.h b/halimpl/bcm2079x/include/buildcfg_hal.h
deleted file mode 100644
index 0908226..0000000
--- a/halimpl/bcm2079x/include/buildcfg_hal.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2001-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.
- *
- ******************************************************************************/
-// override any HAL-specific macros
-#pragma once
-
-#include "bt_types.h"
-
-// NFC_HAL_TASK=0 is already defined in gki_hal_target.h; it executes the
-// Broadcom HAL
-#define USERIAL_HAL_TASK 1 // execute userial's read thread
-#define GKI_RUNNER_HAL_TASK 2 // execute GKI_run(), which runs forever
-#define GKI_MAX_TASKS 3 // total of 3 tasks
-
-#define GKI_BUF0_MAX 16
-#define GKI_BUF1_MAX 16
-
-#define NFC_HAL_PRM_POST_I2C_FIX_DELAY (500)
diff --git a/halimpl/bcm2079x/include/gki_target.h b/halimpl/bcm2079x/include/gki_target.h
deleted file mode 100644
index afb4f78..0000000
--- a/halimpl/bcm2079x/include/gki_target.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2001-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.
- *
- ******************************************************************************/
-#pragma once
-#include "gki_hal_target.h"
diff --git a/halimpl/bcm2079x/include/spdhelper.h b/halimpl/bcm2079x/include/spdhelper.h
deleted file mode 100644
index 8eea553..0000000
--- a/halimpl/bcm2079x/include/spdhelper.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-
-#pragma once
-
-#include <string>
-
-using namespace std;
-#define DEFAULT_SPD_MAXRETRYCOUNT (3)
-
-class SpdHelper {
- public:
- static bool isPatchBad(uint8_t* prm, uint32_t len);
- static void setPatchAsBad();
- static void incErrorCount();
- static bool isSpdDebug();
-
- private:
- SpdHelper();
- static SpdHelper& getInstance();
-
- bool isPatchBadImpl(uint8_t* prm, uint32_t len);
- void setPatchAsBadImpl();
- void incErrorCountImpl();
- bool isSpdDebugImpl() { return mSpdDebug; }
- string mPatchId;
- int mErrorCount;
- int mMaxErrorCount;
- bool mIsPatchBad;
- bool mSpdDebug;
-};
diff --git a/halimpl/bcm2079x/include/userial.h b/halimpl/bcm2079x/include/userial.h
deleted file mode 100644
index ab845d8..0000000
--- a/halimpl/bcm2079x/include/userial.h
+++ /dev/null
@@ -1,281 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2001-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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * This file contains serial definitions from WIDCOMM's Universal Embedded
- * Drivers API.
- *
- ******************************************************************************/
-
-#ifndef USERIAL_H
-#define USERIAL_H
-
-/*******************************************************************************
-** Serial APIs
-*******************************************************************************/
-
-/**** port IDs ****/
-#define USERIAL_PORT_1 0
-#define USERIAL_PORT_2 1
-#define USERIAL_PORT_3 2
-#define USERIAL_PORT_4 3
-#define USERIAL_PORT_5 4
-#define USERIAL_PORT_6 5
-#define USERIAL_PORT_7 6
-#define USERIAL_PORT_8 7
-#define USERIAL_PORT_9 8
-#define USERIAL_PORT_10 9
-#define USERIAL_PORT_11 10
-#define USERIAL_PORT_12 11
-#define USERIAL_PORT_13 12
-#define USERIAL_PORT_14 13
-#define USERIAL_PORT_15 14
-#define USERIAL_PORT_16 15
-#define USERIAL_PORT_17 16
-#define USERIAL_PORT_18 17
-
-typedef uint8_t tUSERIAL_PORT;
-
-/**** baud rates ****/
-#define USERIAL_BAUD_300 0
-#define USERIAL_BAUD_600 1
-#define USERIAL_BAUD_1200 2
-#define USERIAL_BAUD_2400 3
-#define USERIAL_BAUD_9600 4
-#define USERIAL_BAUD_19200 5
-#define USERIAL_BAUD_57600 6
-#define USERIAL_BAUD_115200 7
-#define USERIAL_BAUD_230400 8
-#define USERIAL_BAUD_460800 9
-#define USERIAL_BAUD_921600 10
-#define USERIAL_BAUD_1M 11
-#define USERIAL_BAUD_1_5M 12
-#define USERIAL_BAUD_2M 13
-#define USERIAL_BAUD_3M 14
-#define USERIAL_BAUD_4M 15
-#define USERIAL_BAUD_AUTO 16
-
-/**** Data Format ****/
-
-/* Stop Bits */
-#define USERIAL_STOPBITS_1 1
-#define USERIAL_STOPBITS_1_5 (1 << 1)
-#define USERIAL_STOPBITS_2 (1 << 2)
-
-/* Parity Bits */
-#define USERIAL_PARITY_NONE (1 << 3)
-#define USERIAL_PARITY_EVEN (1 << 4)
-#define USERIAL_PARITY_ODD (1 << 5)
-
-/* Data Bits */
-#define USERIAL_DATABITS_5 (1 << 6)
-#define USERIAL_DATABITS_6 (1 << 7)
-#define USERIAL_DATABITS_7 (1 << 8)
-#define USERIAL_DATABITS_8 (1 << 9)
-
-/**** Flow Control ****/
-#define USERIAL_FC_NONE 0
-#define USERIAL_FC_HW 1
-#define USERIAL_FC_SW 2
-
-/**** Data Buffering Mechanism ****/
-#define USERIAL_BUF_BYTE 0
-#define USERIAL_BUF_GKI 1
-
-/**** Signals ****/
-#define USERIAL_SIG_RTSCTS 1
-#define USERIAL_SIG_DSRDTR (1 << 1)
-#define USERIAL_SIG_RI (1 << 2)
-#define USERIAL_SIG_CD (1 << 3)
-#define USERIAL_SIG_DTE_DEVICE (1 << 4)
-
-/**** Errors *****/
-#define USERIAL_ERR_OVERRUN 1
-#define USERIAL_ERR_PARITY (1 << 1)
-#define USERIAL_ERR_FRAMING (1 << 2)
-#define USERIAL_ERR_BREAK (1 << 3)
-
-/**** Serial Operations ****/
-#define USERIAL_OP_FLUSH 0
-#define USERIAL_OP_FLUSH_RX 1
-#define USERIAL_OP_FLUSH_TX 2
-#define USERIAL_OP_BREAK_OFF 3
-#define USERIAL_OP_BREAK_ON 4
-#define USERIAL_OP_BAUD_RD 5
-#define USERIAL_OP_BAUD_WR 6
-#define USERIAL_OP_FMT_RD 7
-#define USERIAL_OP_FMT_WR 8
-#define USERIAL_OP_SIG_RD 9
-#define USERIAL_OP_SIG_WR 10
-#define USERIAL_OP_FC_RD 11
-#define USERIAL_OP_FC_WR 12
-#define USERIAL_OP_CTS_AS_WAKEUP 13 /* H4IBSS */
-#define USERIAL_OP_CTS_AS_FC 14 /* H4IBSS */
-
-#if (defined(LINUX_OS) && LINUX_OS == TRUE)
-#define USERIAL_OP_SCO_UP 20 /* LINUX SCO */
-#define USERIAL_OP_SCO_DOWN 21 /* LINUX SCO */
-#endif
-
-typedef uint8_t tUSERIAL_OP;
-
-/**** Serial feature types ****/
-#define USERIAL_FEAT_PORT_1 0
-#define USERIAL_FEAT_PORT_2 1
-#define USERIAL_FEAT_PORT_3 2
-#define USERIAL_FEAT_PORT_4 3
-#define USERIAL_FEAT_BAUD_AUTO 4
-#define USERIAL_FEAT_BAUD_300 5
-#define USERIAL_FEAT_BAUD_600 6
-#define USERIAL_FEAT_BAUD_1200 7
-#define USERIAL_FEAT_BAUD_2400 8
-#define USERIAL_FEAT_BAUD_9600 9
-#define USERIAL_FEAT_BAUD_19200 10
-#define USERIAL_FEAT_BAUD_57600 11
-#define USERIAL_FEAT_BAUD_115200 12
-#define USERIAL_FEAT_BAUD_230400 13
-#define USERIAL_FEAT_BAUD_460800 14
-#define USERIAL_FEAT_BAUD_921600 15
-#define USERIAL_FEAT_STOPBITS_1 16
-#define USERIAL_FEAT_STOPBITS_1_5 17
-#define USERIAL_FEAT_STOPBITS_2 18
-#define USERIAL_FEAT_PARITY_NONE 19
-#define USERIAL_FEAT_PARITY_EVEN 20
-#define USERIAL_FEAT_PARITY_ODD 21
-#define USERIAL_FEAT_DATABITS_5 22
-#define USERIAL_FEAT_DATABITS_6 23
-#define USERIAL_FEAT_DATABITS_7 24
-#define USERIAL_FEAT_DATABITS_8 25
-#define USERIAL_FEAT_FC_NONE 26
-#define USERIAL_FEAT_FC_HW 27
-#define USERIAL_FEAT_FC_SW 28
-#define USERIAL_FEAT_BUF_BYTE 29
-#define USERIAL_FEAT_BUF_GKI 30
-#define USERIAL_FEAT_SIG_RTS 31
-#define USERIAL_FEAT_SIG_CTS 32
-#define USERIAL_FEAT_SIG_DSR 33
-#define USERIAL_FEAT_SIG_DTR 34
-#define USERIAL_FEAT_SIG_RI 35
-#define USERIAL_FEAT_SIG_CD 36
-#define USERIAL_FEAT_OP_FLUSH 37
-#define USERIAL_FEAT_OP_FLUSH_RX 38
-#define USERIAL_FEAT_OP_FLUSH_TX 39
-#define USERIAL_FEAT_OP_BREAK 40
-#define USERIAL_FEAT_OP_BAUD_RD 41
-#define USERIAL_FEAT_OP_BAUD_WR 42
-#define USERIAL_FEAT_OP_FMT_RD 43
-#define USERIAL_FEAT_OP_FMT_WR 44
-#define USERIAL_FEAT_OP_SIG_RD 45
-#define USERIAL_FEAT_OP_SIG_WR 46
-#define USERIAL_FEAT_OP_FC_RD 47
-#define USERIAL_FEAT_OP_FC_WR 48
-
-typedef uint8_t tUSERIAL_FEATURE;
-
-/**** Event types ****/
-#define USERIAL_RX_READY_EVT 0
-#define USERIAL_TX_DONE_EVT 1
-#define USERIAL_SIG_EVT 2
-#define USERIAL_ERR_EVT 3
-#define USERIAL_WAKEUP_EVT 4 /* H4IBSS */
-
-typedef uint8_t tUSERIAL_EVT;
-
-/* Structure used to configure serial port during open */
-typedef struct {
- uint16_t fmt; /* Data format */
- uint8_t baud; /* Baud rate */
- uint8_t fc; /* Flow control */
- uint8_t buf; /* Data buffering mechanism */
- uint8_t pool; /* GKI buffer pool for received data */
- uint16_t size; /* Size of GKI buffer pool */
- uint16_t offset; /* Offset in GKI buffer pool */
-} tUSERIAL_OPEN_CFG;
-
-/* Union used to pass ioctl arguments */
-typedef union {
- uint16_t fmt;
- uint8_t baud;
- uint8_t fc;
- uint8_t sigs;
-#if (defined(LINUX_OS) && LINUX_OS == TRUE)
- uint16_t sco_handle;
-#endif
-} tUSERIAL_IOCTL_DATA;
-
-/* Union to pass event data */
-typedef union {
- uint8_t sigs;
- uint8_t error;
-} tUSERIAL_EVT_DATA;
-
-/* callback for events */
-typedef void(tUSERIAL_CBACK)(tUSERIAL_PORT, tUSERIAL_EVT, tUSERIAL_EVT_DATA*);
-
-/*******************************************************************************
-** Function Prototypes
-*******************************************************************************/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern void USERIAL_Init(void*);
-extern void USERIAL_Open(tUSERIAL_PORT, tUSERIAL_OPEN_CFG*, tUSERIAL_CBACK*);
-extern void USERIAL_ReadBuf(tUSERIAL_PORT, NFC_HDR**);
-extern uint16_t USERIAL_Read(tUSERIAL_PORT, uint8_t*, uint16_t);
-extern bool USERIAL_WriteBuf(tUSERIAL_PORT, NFC_HDR*);
-extern uint16_t USERIAL_Write(tUSERIAL_PORT, uint8_t*, uint16_t);
-extern void USERIAL_Ioctl(tUSERIAL_PORT, tUSERIAL_OP, tUSERIAL_IOCTL_DATA*);
-extern void USERIAL_Close(tUSERIAL_PORT);
-extern bool USERIAL_Feature(tUSERIAL_FEATURE);
-extern bool USERIAL_IsClosed();
-extern void USERIAL_SetPowerOffDelays(int, int);
-extern void USERIAL_PowerupDevice(tUSERIAL_PORT port);
-
-/*******************************************************************************
- **
- ** Function USERIAL_GetLineSpeed
- **
- ** Description This function convert USERIAL baud to line speed.
- **
- ** Output Parameter None
- **
- ** Returns line speed
- **
- *******************************************************************************/
-extern uint32_t USERIAL_GetLineSpeed(uint8_t baud);
-/*******************************************************************************
- **
- ** Function USERIAL_GetBaud
- **
- ** Description This function convert line speed to USERIAL baud.
- **
- ** Output Parameter None
- **
- ** Returns line speed
- **
- *******************************************************************************/
-extern uint8_t USERIAL_GetBaud(uint32_t line_speed);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* USERIAL_H */
diff --git a/halimpl/bcm2079x/nfc_nci.c b/halimpl/bcm2079x/nfc_nci.c
deleted file mode 100644
index 6948fb6..0000000
--- a/halimpl/bcm2079x/nfc_nci.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-
-#define LOG_TAG "NfcNciHal"
-#include <errno.h>
-#include <hardware/hardware.h>
-#include <hardware/nfc.h>
-#include <malloc.h>
-#include <string.h>
-#include "HalAdaptation.h"
-#include "_OverrideLog.h"
-
-/*********************************
- * NCI HAL method implementations.
- *********************************/
-
-static int hal_open(const struct nfc_nci_device* p_dev,
- nfc_stack_callback_t* p_hal_cback,
- nfc_stack_data_callback_t* p_hal_data_callback) {
- int retval = 0;
- bcm2079x_dev_t* dev = (bcm2079x_dev_t*)p_dev;
-
- retval = HaiOpen(dev, p_hal_cback, p_hal_data_callback);
- return retval;
-}
-
-static int hal_write(const struct nfc_nci_device* p_dev, uint16_t data_len,
- const uint8_t* p_data) {
- int retval = 0;
- bcm2079x_dev_t* dev = (bcm2079x_dev_t*)p_dev;
-
- retval = HaiWrite(dev, data_len, p_data);
- return retval;
-}
-
-static int hal_core_initialized(const struct nfc_nci_device* p_dev,
- uint8_t* p_core_init_rsp_params) {
- int retval = 0;
- bcm2079x_dev_t* dev = (bcm2079x_dev_t*)p_dev;
-
- retval = HaiCoreInitialized(dev, p_core_init_rsp_params);
- return retval;
-}
-
-static int hal_pre_discover(const struct nfc_nci_device* p_dev) {
- int retval = 0;
- bcm2079x_dev_t* dev = (bcm2079x_dev_t*)p_dev;
-
- retval = HaiPreDiscover(dev);
- return retval;
-}
-
-static int hal_close(const struct nfc_nci_device* p_dev) {
- int retval = 0;
- bcm2079x_dev_t* dev = (bcm2079x_dev_t*)p_dev;
-
- retval = HaiClose(dev);
- return retval;
-}
-
-static int hal_control_granted(const struct nfc_nci_device* p_dev) {
- int retval = 0;
- bcm2079x_dev_t* dev = (bcm2079x_dev_t*)p_dev;
-
- retval = HaiControlGranted(dev);
- return retval;
-}
-
-static int hal_power_cycle(const struct nfc_nci_device* p_dev) {
- int retval = 0;
- bcm2079x_dev_t* dev = (bcm2079x_dev_t*)p_dev;
-
- retval = HaiPowerCycle(dev);
- return retval;
-}
-
-static int hal_get_max_nfcee(const struct nfc_nci_device* p_dev,
- uint8_t* maxNfcee) {
- int retval = 0;
- bcm2079x_dev_t* dev = (bcm2079x_dev_t*)p_dev;
-
- retval = HaiGetMaxNfcee(dev, maxNfcee);
- return retval;
-}
-
-/*************************************
- * Generic device handling.
- *************************************/
-
-/* Close an opened nfc device instance */
-static int nfc_close(hw_device_t* dev) {
- int retval = 0;
- free(dev);
- retval = HaiTerminateLibrary();
- return retval;
-}
-
-static int nfc_open(const hw_module_t* module, const char* name,
- hw_device_t** device) {
- ALOGD("%s: enter; name=%s", __func__, name);
- int retval = 0; // 0 is ok; -1 is error
-
- if (strcmp(name, NFC_NCI_CONTROLLER) == 0) {
- bcm2079x_dev_t* dev = calloc(1, sizeof(bcm2079x_dev_t));
-
- // Common hw_device_t fields
- dev->nci_device.common.tag = HARDWARE_DEVICE_TAG;
- dev->nci_device.common.version = 0x00010000; // [31:16] major, [15:0] minor
- dev->nci_device.common.module = (struct hw_module_t*)module;
- dev->nci_device.common.close = nfc_close;
-
- // NCI HAL method pointers
- dev->nci_device.open = hal_open;
- dev->nci_device.write = hal_write;
- dev->nci_device.core_initialized = hal_core_initialized;
- dev->nci_device.pre_discover = hal_pre_discover;
- dev->nci_device.close = hal_close;
- dev->nci_device.control_granted = hal_control_granted;
- dev->nci_device.power_cycle = hal_power_cycle;
- // dev->nci_device.get_max_ee = hal_get_max_nfcee;
-
- // Copy in
- *device = (hw_device_t*)dev;
-
- retval = HaiInitializeLibrary(dev);
- } else {
- retval = -EINVAL;
- }
- ALOGD("%s: exit %d", __func__, retval);
- return retval;
-}
-
-static struct hw_module_methods_t nfc_module_methods = {
- .open = nfc_open,
-};
-
-struct nfc_nci_module_t HAL_MODULE_INFO_SYM = {
- .common =
- {
- .tag = HARDWARE_MODULE_TAG,
- .module_api_version = 0x0100, // [15:8] major, [7:0] minor (1.0)
- .hal_api_version = 0x00, // 0 is only valid value
- .id = NFC_NCI_BCM2079X_HARDWARE_MODULE_ID,
- .name = "BCM2079x NFC NCI HW HAL",
- .author = "Broadcom Corporation",
- .methods = &nfc_module_methods,
- },
-};
diff --git a/halimpl/pn54x/Android.bp b/halimpl/pn54x/Android.bp
deleted file mode 100644
index e69de29..0000000
--- a/halimpl/pn54x/Android.bp
+++ /dev/null
diff --git a/halimpl/pn54x/Android.mk b/halimpl/pn54x/Android.mk
deleted file mode 100644
index c5a0030..0000000
--- a/halimpl/pn54x/Android.mk
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# 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.
-
-#variables for NFC_NXP_CHIP_TYPE
-PN547C2 := 1
-PN548C2 := 2
-PN551 := 3
-PN553 := 4
-NQ110 := $PN547C2
-NQ120 := $PN547C2
-NQ210 := $PN548C2
-NQ220 := $PN548C2
-#NXP PN547 Enable
-ifeq ($(PN547C2),1)
-D_CFLAGS += -DPN547C2=1
-endif
-ifeq ($(PN548C2),2)
-D_CFLAGS += -DPN548C2=2
-endif
-ifeq ($(PN551),3)
-D_CFLAGS += -DPN551=3
-endif
-ifeq ($(PN553),4)
-D_CFLAGS += -DPN553=4
-endif
-
-ifeq ($(NXP_CHIP_TYPE),$(PN547C2))
-D_CFLAGS += -DNFC_NXP_CHIP_TYPE=PN547C2
-else ifeq ($(NXP_CHIP_TYPE),$(PN548C2))
-D_CFLAGS += -DNFC_NXP_CHIP_TYPE=PN548C2
-else ifeq ($(NXP_CHIP_TYPE),$(PN551))
-D_CFLAGS += -DNFC_NXP_CHIP_TYPE=PN551
-else ifeq ($(NXP_CHIP_TYPE),$(PN553))
-D_CFLAGS += -DNFC_NXP_CHIP_TYPE=PN553
-else
-D_CFLAGS += -DNFC_NXP_CHIP_TYPE=PN553
-endif
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-LOCAL_MODULE := nfc_nci.$(TARGET_DEVICE)
-LOCAL_PROPRIETARY_MODULE := true
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_SRC_FILES := \
- $(call all-c-files-under, common) \
- $(call all-c-files-under, dnld) \
- $(call all-c-files-under, hal) \
- $(call all-c-files-under, log) \
- $(call all-c-files-under, self-test) \
- $(call all-c-files-under, tml) \
- $(call all-c-files-under, utils) \
- $(call all-cpp-files-under, utils) \
- nfc_nci.c
-
-LOCAL_SHARED_LIBRARIES := liblog libcutils libdl libhardware
-
-LOCAL_CFLAGS := $(D_CFLAGS)
-LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/utils \
- $(LOCAL_PATH)/inc \
- $(LOCAL_PATH)/common \
- $(LOCAL_PATH)/dnld \
- $(LOCAL_PATH)/hal \
- $(LOCAL_PATH)/log \
- $(LOCAL_PATH)/tml \
- $(LOCAL_PATH)/self-test \
-
-LOCAL_CFLAGS += -DANDROID \
- -DNXP_UICC_ENABLE -DNXP_HW_SELF_TEST
-LOCAL_CFLAGS += -DNFC_NXP_HFO_SETTINGS=FALSE
-#LOCAL_CFLAGS += -DFELICA_CLT_ENABLE
-
-
-#
-# nfc_nci.$(TARGET_DEVICE)
-#
-include $(BUILD_SHARED_LIBRARY)
diff --git a/halimpl/pn54x/common/phNfcCommon.h b/halimpl/pn54x/common/phNfcCommon.h
deleted file mode 100644
index 638a133..0000000
--- a/halimpl/pn54x/common/phNfcCommon.h
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * OSAL header files related to memory, debug, random, semaphore and mutex
- * functions.
- */
-
-#ifndef PHNFCCOMMON_H
-#define PHNFCCOMMON_H
-
-/*
-************************* Include Files ****************************************
-*/
-
-#include <phDal4Nfc_messageQueueLib.h>
-#include <phNfcCompId.h>
-#include <phNfcStatus.h>
-#include <phOsalNfc_Timer.h>
-#include <pthread.h>
-#include <semaphore.h>
-
-#define FW_DLL_ROOT_DIR "/system/vendor/firmware/"
-#define FW_DLL_EXTENSION ".so"
-
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
-
-/* Actual FW library name*/
-#define FW_LIB_PATH FW_DLL_ROOT_DIR "libpn548ad_fw" FW_DLL_EXTENSION
-/* Restore Corrupted PLL Setttings/etc */
-#define PLATFORM_LIB_PATH \
- FW_DLL_ROOT_DIR "libpn548ad_fw_platform" FW_DLL_EXTENSION
-/* Upgrade the public Key */
-#define PKU_LIB_PATH FW_DLL_ROOT_DIR "libpn548ad_fw_pku" FW_DLL_EXTENSION
-#elif (NFC_NXP_CHIP_TYPE == PN551)
-/* Actual FW library name*/
-#define FW_LIB_PATH FLASH_CONF_ROOT_DIR "libpn551_fw" FW_DLL_EXTENSION
-/* Restore Corrupted PLL Settings/etc */
-#define PLATFORM_LIB_PATH \
- FW_DLL_ROOT_DIR "libpn551_fw_platform" FW_DLL_EXTENSION
-/* Upgrade the public Key */
-#define PKU_LIB_PATH FW_DLL_ROOT_DIR "libpn551_fw_pku" FW_DLL_EXTENSION
-#elif (NFC_NXP_CHIP_TYPE == PN553)
-/* Actual FW library name*/
-#define FW_LIB_PATH FLASH_CONF_ROOT_DIR "libpn553_fw" FW_DLL_EXTENSION
-/* Restore Corrupted PLL Settings/etc */
-#define PLATFORM_LIB_PATH \
- FW_DLL_ROOT_DIR "libpn553_fw_platform" FW_DLL_EXTENSION
-/* Upgrade the public Key */
-#define PKU_LIB_PATH FW_DLL_ROOT_DIR "libpn553_fw_pku" FW_DLL_EXTENSION
-#else
-/* Actual FW library name*/
-#define FW_LIB_PATH FW_DLL_ROOT_DIR "libpn547_fw" FW_DLL_EXTENSION
-/* Restore Corrupted PLL Settings/etc */
-#define PLATFORM_LIB_PATH \
- FW_DLL_ROOT_DIR "libpn547_fw_platform" FW_DLL_EXTENSION
-/* Upgrade the public Key */
-#define PKU_LIB_PATH FW_DLL_ROOT_DIR "libpn547_fw_pku" FW_DLL_EXTENSION
-#endif
-
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
-#define COMPILATION_MW "PN548C2"
-#elif (NFC_NXP_CHIP_TYPE == PN551)
-#define COMPILATION_MW "PN551"
-#elif (NFC_NXP_CHIP_TYPE == PN553)
-#define COMPILATION_MW "PN553"
-#else
-#define COMPILATION_MW "PN547C2"
-#endif
-
-/* HAL Version number (Updated as per release) */
-#define NXP_MW_VERSION_MAJ (3U)
-#define NXP_MW_VERSION_MIN (5U)
-
-/*
- *****************************************************************
- *********** System clock source selection configuration ********
- *****************************************************************
- */
-
-#define CLK_SRC_UNDEF 0
-#define CLK_SRC_XTAL 1
-#define CLK_SRC_PLL 2
-#define CLK_SRC_PADDIRECT 3
-
-/*Extern crystal clock source*/
-/* Use one of CLK_SRC_<value> */
-#define NXP_SYS_CLK_SRC_SEL CLK_SRC_PLL
-/*Direct clock*/
-
-/*
- *****************************************************************
- *********** System clock frequency selection configuration ****************
- * If Clk_Src is set to PLL, make sure to set the Clk_Freq also*
- *****************************************************************
- */
-#define CLK_FREQ_UNDEF 0
-#define CLK_FREQ_13MHZ 1
-#define CLK_FREQ_19_2MHZ 2
-#define CLK_FREQ_24MHZ 3
-#define CLK_FREQ_26MHZ 4
-#define CLK_FREQ_38_4MHZ 5
-#define CLK_FREQ_52MHZ 6
-
-/* Set to one of CLK_FREQ_<value> */
-#define NXP_SYS_CLK_FREQ_SEL CLK_FREQ_19_2MHZ
-
-#define CLK_TO_CFG_DEF 1
-#define CLK_TO_CFG_MAX 6
-/*
- * information to configure OSAL
- */
-typedef struct phOsalNfc_Config {
- uint8_t* pLogFile; /* Log File Name*/
- uintptr_t dwCallbackThreadId; /* Client ID to which message is posted */
-} phOsalNfc_Config_t, *pphOsalNfc_Config_t /* Pointer to #phOsalNfc_Config_t */;
-
-/*
- * Deferred call declaration.
- * This type of API is called from ClientApplication (main thread) to notify
- * specific callback.
- */
-typedef void (*pphOsalNfc_DeferFuncPointer_t)(void*);
-
-/*
- * Deferred message specific info declaration.
- */
-typedef struct phOsalNfc_DeferedCallInfo {
- pphOsalNfc_DeferFuncPointer_t pDeferedCall; /* pointer to Deferred callback */
- void* pParam; /* contains timer message specific details*/
-} phOsalNfc_DeferedCallInfo_t;
-
-/*
- * States in which a OSAL timer exist.
- */
-typedef enum {
- eTimerIdle = 0, /* Indicates Initial state of timer */
- eTimerRunning = 1, /* Indicate timer state when started */
- eTimerStopped = 2 /* Indicates timer state when stopped */
-} phOsalNfc_TimerStates_t; /* Variable representing State of timer */
-
-/*
- **Timer Handle structure containing details of a timer.
- */
-typedef struct phOsalNfc_TimerHandle {
- uint32_t TimerId; /* ID of the timer */
- timer_t hTimerHandle; /* Handle of the timer */
- /* Timer callback function to be invoked */
- pphOsalNfc_TimerCallbck_t Application_callback;
- void* pContext; /* Parameter to be passed to the callback function */
- phOsalNfc_TimerStates_t eState; /* Timer states */
- /* Osal Timer message posted on User Thread */
- phLibNfc_Message_t tOsalMessage;
- /* Deferred Call structure to Invoke Callback function */
- phOsalNfc_DeferedCallInfo_t tDeferedCallInfo;
- /* Variables for Structure Instance and Structure Ptr */
-} phOsalNfc_TimerHandle_t, *pphOsalNfc_TimerHandle_t;
-
-#endif /* PHOSALNFC_H */
diff --git a/halimpl/pn54x/common/phNfcCompId.h b/halimpl/pn54x/common/phNfcCompId.h
deleted file mode 100644
index 9930e0c..0000000
--- a/halimpl/pn54x/common/phNfcCompId.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * NFC Component ID Values - Used for Function Return Codes
- */
-
-#ifndef PHNFCCOMPID_H
-#define PHNFCCOMPID_H
-
-/*
- * Component IDs
- *
- * IDs for all NFC components. Combined with the Status Code they build the
- * value (status)
- * returned by each function.
- *
- * ID Number Spaces:
- * - 01..1F: HAL
- * - 20..3F: NFC-MW (Local Device)
- * - 40..5F: NFC-MW (Remote Device)
- * .
- *
- * The value CID_NFC_NONE does not exist for Component IDs. Do not use
- * this value except
- * for NFCSTATUS_SUCCESS. The enumeration function uses CID_NFC_NONE
- * to mark unassigned "References".
- */
-/* Unassigned or doesn't apply (see #NFCSTATUS_SUCCESS) */
-#define CID_NFC_NONE 0x00
-#define CID_NFC_TML 0x01 /* Transport Mapping Layer */
-#define CID_NFC_LLC 0x07 /* Logical Link Control Layer */
-/* NFC Controller(NFCC) Interface Layer */
-#define CID_NFC_NCI 0x08
-/* Firmware Download Management Layer */
-#define CID_NFC_DNLD 0x09
-#define CID_NFC_HAL 0x10 /* Hardware Abstraction Layer */
-/* Operating System Abstraction Layer*/
-#define CID_NFC_OSAL CID_NFC_NONE
-#define CID_FRI_NFC_OVR_HAL 0x20 /* NFC-Device, HAL-based */
-#define CID_FRI_NFC_NDEF_RECORD 0x22 /* NDEF Record Tools Library. */
-#define CID_FRI_NFC_NDEF_MAP 0x23 /* NDEF Mapping. */
-#define CID_FRI_NFC_NDEF_REGISTRY 0x24 /* NDEF_REGISTRY. */
-/* Automatic Device Discovery. */
-#define CID_FRI_NFC_AUTO_DEV_DIS 0x25
-#define CID_FRI_NFC_NDEF_SMTCRDFMT 0x26 /* Smart Card Formatting */
-#define CID_NFC_LIB 0x30 /* NFC Library Layer*/
-/* The maximum CID value that is defined. */
-#define CID_MAX_VALUE 0xF0
-/* Logical Link Control Protocol */
-#define CID_FRI_NFC_LLCP 0x40
-#define CID_FRI_NFC_LLCP_TRANSPORT 0x50
-#define CID_FRI_NFC_LLCP_MAC 0x60
-
-#endif /* PHNFCCOMPID_H */
diff --git a/halimpl/pn54x/common/phNfcStatus.h b/halimpl/pn54x/common/phNfcStatus.h
deleted file mode 100644
index f3aa51a..0000000
--- a/halimpl/pn54x/common/phNfcStatus.h
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * NFC Status Values - Function Return Codes
- */
-
-#ifndef PHNFCSTATUS_H
-#define PHNFCSTATUS_H
-
-#include <phNfcTypes.h>
-
-/* Internally required by PHNFCSTVAL. */
-#define PHNFCSTSHL8 (8U)
-/* Required by PHNFCSTVAL. */
-#define PHNFCSTBLOWER ((NFCSTATUS)(0x00FFU))
-
-/*
- * NFC Status Composition Macro
- *
- * This is the macro which must be used to compose status values.
- *
- * phNfcCompID Component ID, as defined in phNfcCompId.h .
- * phNfcStatus Status values, as defined in phNfcStatus.h .
- *
- * The macro is not required for the NFCSTATUS_SUCCESS value.
- * This is the only return value to be used directly.
- * For all other values it shall be used in assignment and conditional
- * statements, e.g.:
- * NFCSTATUS status = PHNFCSTVAL(phNfcCompID, phNfcStatus); ...
- * if (status == PHNFCSTVAL(phNfcCompID, phNfcStatus)) ...
- */
-#define PHNFCSTVAL(phNfcCompID, phNfcStatus) \
- (((phNfcStatus) == (NFCSTATUS_SUCCESS)) \
- ? (NFCSTATUS_SUCCESS) \
- : ((((NFCSTATUS)(phNfcStatus)) & (PHNFCSTBLOWER)) | \
- (((uint16_t)(phNfcCompID)) << (PHNFCSTSHL8))))
-
-/*
- * PHNFCSTATUS
- * Get grp_retval from Status Code
- */
-#define PHNFCSTATUS(phNfcStatus) ((phNfcStatus)&0x00FFU)
-#define PHNFCCID(phNfcStatus) (((phNfcStatus)&0xFF00U) >> 8)
-
-#define PHNFC_I2C_FRAGMENT_SIZE 512
-/*
- * Status Codes
- *
- * Generic Status codes for the NFC components. Combined with the Component ID
- * they build the value (status) returned by each function.
- * Example:
- * grp_comp_id "Component ID" - e.g. 0x10, plus
- * status code as listed in this file - e.g. 0x03
- * result in a status value of 0x0003.
- */
-
-/*
- * The function indicates successful completion
- */
-#define NFCSTATUS_SUCCESS (0x0000)
-
-/*
- * The function indicates successful completion
- */
-#define NFCSTATUS_OK (NFCSTATUS_SUCCESS)
-
-/*
- * At least one parameter could not be properly interpreted
- */
-#define NFCSTATUS_INVALID_PARAMETER (0x0001)
-
-/*
- * The buffer provided by the caller is too small
- */
-#define NFCSTATUS_BUFFER_TOO_SMALL (0x0003)
-
-/*
- * Device specifier/handle value is invalid for the operation
- */
-#define NFCSTATUS_INVALID_DEVICE (0x0006)
-
-/*
- * The function executed successfully but could have returned
- * more information than space provided by the caller
- */
-#define NFCSTATUS_MORE_INFORMATION (0x0008)
-
-/*
- * No response from the remote device received: Time-out
- */
-#define NFCSTATUS_RF_TIMEOUT (0x0009)
-
-/*
- * RF Error during data transaction with the remote device
- */
-#define NFCSTATUS_RF_ERROR (0x000A)
-
-/*
- * Not enough resources Memory, Timer etc(e.g. allocation failed.)
- */
-#define NFCSTATUS_INSUFFICIENT_RESOURCES (0x000C)
-
-/*
- * A non-blocking function returns this immediately to indicate
- * that an internal operation is in progress
- */
-#define NFCSTATUS_PENDING (0x000D)
-
-/*
- * A board communication error occurred
- * (e.g. Configuration went wrong)
- */
-#define NFCSTATUS_BOARD_COMMUNICATION_ERROR (0x000F)
-
-/*
- * Invalid State of the particular state machine
- */
-#define NFCSTATUS_INVALID_STATE (0x0011)
-
-/*
- * This Layer is Not initialized, hence initialization required.
- */
-#define NFCSTATUS_NOT_INITIALISED (0x0031)
-
-/*
- * The Layer is already initialized, hence initialization repeated.
- */
-#define NFCSTATUS_ALREADY_INITIALISED (0x0032)
-
-/*
- * Feature not supported
- */
-#define NFCSTATUS_FEATURE_NOT_SUPPORTED (0x0033)
-
-/* The Unregistration command has failed because the user wants to unregister
- * on
- * an element for which he was not registered
- */
-#define NFCSTATUS_NOT_REGISTERED (0x0034)
-
-/* The Registration command has failed because the user wants to register on
- * an element for which he is already registered
- */
-#define NFCSTATUS_ALREADY_REGISTERED (0x0035)
-
-/* Single Tag with Multiple
- Protocol support detected */
-#define NFCSTATUS_MULTIPLE_PROTOCOLS (0x0036)
-
-/*
- * Feature not supported
- */
-#define NFCSTATUS_MULTIPLE_TAGS (0x0037)
-
-/*
- * A DESELECT event has occurred
- */
-#define NFCSTATUS_DESELECTED (0x0038)
-
-/*
- * A RELEASE event has occurred
- */
-#define NFCSTATUS_RELEASED (0x0039)
-
-/*
- * The operation is currently not possible or not allowed
- */
-#define NFCSTATUS_NOT_ALLOWED (0x003A)
-
-/*
- * FW version error while performing FW download,
- * FW major version mismatch (cannot downgrade FW major version) or FW version
- * already upto date
- * User may be trying to flash Mobile FW on top of Infra FW, which is not
- * allowed
- * Download appropriate version of FW
- */
-#define NFCSTATUS_FW_VERSION_ERROR (0x003C)
-
-/*
- * The system is busy with the previous operation.
- */
-#define NFCSTATUS_BUSY (0x006F)
-
-/* NDEF Mapping error codes */
-
-/* The remote device (type) is not valid for this request. */
-#define NFCSTATUS_INVALID_REMOTE_DEVICE (0x001D)
-
-/* Read operation failed */
-#define NFCSTATUS_READ_FAILED (0x0014)
-
-/*
- * Write operation failed
- */
-#define NFCSTATUS_WRITE_FAILED (0x0015)
-
-/* Non Ndef Compliant */
-#define NFCSTATUS_NO_NDEF_SUPPORT (0x0016)
-
-/* Could not proceed further with the write operation: reached card EOF*/
-#define NFCSTATUS_EOF_NDEF_CONTAINER_REACHED (0x001A)
-
-/* Incorrect number of bytes received from the card*/
-#define NFCSTATUS_INVALID_RECEIVE_LENGTH (0x001B)
-
-/* The data format/composition is not understood/correct. */
-#define NFCSTATUS_INVALID_FORMAT (0x001C)
-
-/* There is not sufficient storage available. */
-#define NFCSTATUS_INSUFFICIENT_STORAGE (0x001F)
-
-/* The Ndef Format procedure has failed. */
-#define NFCSTATUS_FORMAT_ERROR (0x0023)
-
-/* The NCI Cedit error */
-#define NFCSTATUS_CREDIT_TIMEOUT (0x0024)
-
-/*
- * Response Time out for the control message(NFCC not responded)
- */
-#define NFCSTATUS_RESPONSE_TIMEOUT (0x0025)
-
-/*
- * Device is already connected
- */
-#define NFCSTATUS_ALREADY_CONNECTED (0x0026)
-
-/*
- * Device is already connected
- */
-#define NFCSTATUS_ANOTHER_DEVICE_CONNECTED (0x0027)
-
-/*
- * Single Target Detected and Activated
- */
-#define NFCSTATUS_SINGLE_TAG_ACTIVATED (0x0028)
-
-/*
- * Single Target Detected
- */
-#define NFCSTATUS_SINGLE_TAG_DISCOVERED (0x0029)
-
-/*
- * Secure element Detected and Activated
- */
-#define NFCSTATUS_SECURE_ELEMENT_ACTIVATED (0x0028)
-
-/*
- * Unknown error Status Codes
- */
-#define NFCSTATUS_UNKNOWN_ERROR (0x00FE)
-
-/*
- * Status code for failure
- */
-#define NFCSTATUS_FAILED (0x00FF)
-
-/*
- * The function/command has been aborted
- */
-#define NFCSTATUS_CMD_ABORTED (0x0002)
-
-/*
- * No target found after poll
- */
-#define NFCSTATUS_NO_TARGET_FOUND (0x000A)
-
-/* Attempt to disconnect a not connected remote device. */
-#define NFCSTATUS_NO_DEVICE_CONNECTED (0x000B)
-
-/* External RF field detected. */
-#define NFCSTATUS_EXTERNAL_RF_DETECTED (0x000E)
-
-/* Message is not allowed by the state machine
- * (e.g. configuration went wrong)
- */
-#define NFCSTATUS_MSG_NOT_ALLOWED_BY_FSM (0x0010)
-
-/*
- * No access has been granted
- */
-#define NFCSTATUS_ACCESS_DENIED (0x001E)
-
-/* No registry node matches the specified input data. */
-#define NFCSTATUS_NODE_NOT_FOUND (0x0017)
-
-/* The current module is busy ; one might retry later */
-#define NFCSTATUS_SMX_BAD_STATE (0x00F0)
-
-/* The Abort mechanism has failed for unexpected reason: user can try again*/
-#define NFCSTATUS_ABORT_FAILED (0x00F2)
-
-/* The Registration command has failed because the user wants to register as
- * target
- * on a operating mode not supported
- */
-#define NFCSTATUS_REG_OPMODE_NOT_SUPPORTED (0x00F5)
-
-/*
- * Shutdown in progress, cannot handle the request at this time.
- */
-#define NFCSTATUS_SHUTDOWN (0x0091)
-
-/*
- * Target is no more in RF field
- */
-#define NFCSTATUS_TARGET_LOST (0x0092)
-
-/*
- * Request is rejected
- */
-#define NFCSTATUS_REJECTED (0x0093)
-
-/*
- * Target is not connected
- */
-#define NFCSTATUS_TARGET_NOT_CONNECTED (0x0094)
-
-/*
- * Invalid handle for the operation
- */
-#define NFCSTATUS_INVALID_HANDLE (0x0095)
-
-/*
- * Process aborted
- */
-#define NFCSTATUS_ABORTED (0x0096)
-
-/*
- * Requested command is not supported
- */
-#define NFCSTATUS_COMMAND_NOT_SUPPORTED (0x0097)
-
-/*
- * Tag is not NDEF compilant
- */
-#define NFCSTATUS_NON_NDEF_COMPLIANT (0x0098)
-
-/*
- * Not enough memory available to complete the requested operation
- */
-#define NFCSTATUS_NOT_ENOUGH_MEMORY (0x001F)
-
-/*
- * Indicates incoming connection
- */
-#define NFCSTATUS_INCOMING_CONNECTION (0x0045)
-
-/*
- * Indicates Connection was successful
- */
-#define NFCSTATUS_CONNECTION_SUCCESS (0x0046)
-
-/*
- * Indicates Connection failed
- */
-#define NFCSTATUS_CONNECTION_FAILED (0x0047)
-
-#endif /* PHNFCSTATUS_H */
diff --git a/halimpl/pn54x/common/phNfcTypes.h b/halimpl/pn54x/common/phNfcTypes.h
deleted file mode 100644
index d80ad50..0000000
--- a/halimpl/pn54x/common/phNfcTypes.h
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-#ifndef PHNFCTYPES_H
-#define PHNFCTYPES_H
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#ifndef TRUE
-#define TRUE (0x01) /* Logical True Value */
-#endif
-#ifndef FALSE
-#define FALSE (0x00) /* Logical False Value */
-#endif
-typedef uint8_t utf8_t; /* UTF8 Character String */
-typedef uint8_t bool_t; /* boolean data type */
-typedef uint16_t NFCSTATUS; /* Return values */
-#define STATIC static
-
-#define PHNFC_MAX_UID_LENGTH 0x0AU /* Maximum UID length expected */
-/* Maximum ATR_RES (General Bytes) length expected */
-#define PHNFC_MAX_ATR_LENGTH 0x30U
-#define PHNFC_NFCID_LENGTH 0x0AU /* Maximum length of NFCID 1.3*/
-#define PHNFC_ATQA_LENGTH 0x02U /* ATQA length */
-
-/*
- * NFC Data structure
- */
-typedef struct phNfc_sData {
- uint8_t* buffer; /* Buffer to store data */
- uint32_t length; /* Buffer length */
-} phNfc_sData_t;
-
-/*
- * Possible Hardware Configuration exposed to upper layer.
- * Typically this should be port name (Ex:"COM1","COM2") to which PN54X is
- * connected.
- */
-typedef enum {
- ENUM_LINK_TYPE_COM1,
- ENUM_LINK_TYPE_COM2,
- ENUM_LINK_TYPE_COM3,
- ENUM_LINK_TYPE_COM4,
- ENUM_LINK_TYPE_COM5,
- ENUM_LINK_TYPE_COM6,
- ENUM_LINK_TYPE_COM7,
- ENUM_LINK_TYPE_COM8,
- ENUM_LINK_TYPE_I2C,
- ENUM_LINK_TYPE_SPI,
- ENUM_LINK_TYPE_USB,
- ENUM_LINK_TYPE_TCP,
- ENUM_LINK_TYPE_NB
-} phLibNfc_eConfigLinkType;
-
-/*
- * Deferred message. This message type will be posted to the client application
- * thread
- * to notify that a deferred call must be invoked.
- */
-#define PH_LIBNFC_DEFERREDCALL_MSG (0x311)
-
-/*
- * Deferred call declaration.
- * This type of API is called from ClientApplication ( main thread) to notify
- * specific callback.
- */
-typedef void (*pphLibNfc_DeferredCallback_t)(void*);
-
-/*
- * Deferred parameter declaration.
- * This type of data is passed as parameter from ClientApplication (main thread)
- * to the
- * callback.
- */
-typedef void* pphLibNfc_DeferredParameter_t;
-
-/*
- * Possible Hardware Configuration exposed to upper layer.
- * Typically this should be at least the communication link (Ex:"COM1","COM2")
- * the controller is connected to.
- */
-typedef struct phLibNfc_sConfig {
- uint8_t* pLogFile; /* Log File Name*/
- /* Hardware communication link to the controller */
- phLibNfc_eConfigLinkType nLinkType;
- /* The client ID (thread ID or message queue ID) */
- uintptr_t nClientId;
-} phLibNfc_sConfig_t, *pphLibNfc_sConfig_t;
-
-/*
- * NFC Message structure contains message specific details like
- * message type, message specific data block details, etc.
- */
-typedef struct phLibNfc_Message {
- uint32_t eMsgType; /* Type of the message to be posted*/
- void* pMsgData; /* Pointer to message specific data block in case any*/
- uint32_t Size; /* Size of the datablock*/
-} phLibNfc_Message_t, *pphLibNfc_Message_t;
-
-/*
- * Deferred message specific info declaration.
- * This type of information is packed as message data when
- * PH_LIBNFC_DEFERREDCALL_MSG
- * type message is posted to message handler thread.
- */
-typedef struct phLibNfc_DeferredCall {
- pphLibNfc_DeferredCallback_t pCallback; /* pointer to Deferred callback */
- pphLibNfc_DeferredParameter_t pParameter; /* pointer to Deferred parameter */
-} phLibNfc_DeferredCall_t;
-
-/*
- * Definitions for supported protocol
- */
-typedef struct phNfc_sSupProtocol {
- unsigned int MifareUL : 1; /* Protocol Mifare Ultra Light or any NFC Forum
- Type-2 tags */
- unsigned int MifareStd : 1; /* Protocol Mifare Standard. */
- unsigned int ISO14443_4A : 1; /* Protocol ISO14443-4 Type A. */
- unsigned int ISO14443_4B : 1; /* Protocol ISO14443-4 Type B. */
- unsigned int ISO15693 : 1; /* Protocol ISO15693 HiTag. */
- unsigned int Felica : 1; /* Protocol Felica. */
- unsigned int NFC : 1; /* Protocol NFC. */
- unsigned int Jewel : 1; /* Protocol Innovision Jewel Tag. or Any T1T*/
- unsigned int
- Desfire : 1; /*TRUE indicates specified feature (mapping
- or formatting)for DESFire tag supported else not supported.*/
- unsigned int Kovio : 1; /* Protocol Kovio Tag*/
- unsigned int HID : 1; /* Protocol HID(Picopass) Tag*/
- unsigned int Bprime : 1; /* Protocol BPrime Tag*/
- unsigned int EPCGEN2 : 1; /* Protocol EPCGEN2 Tag*/
-} phNfc_sSupProtocol_t;
-
-/*
- * Enumerated MIFARE Commands
- */
-
-typedef enum phNfc_eMifareCmdList {
- phNfc_eMifareRaw = 0x00U, /* This command performs raw transcations */
- phNfc_eMifareAuthentA = 0x60U, /* This command performs an authentication with
- KEY A for a sector. */
- phNfc_eMifareAuthentB = 0x61U, /* This command performs an authentication with
- KEY B for a sector. */
- phNfc_eMifareRead16 = 0x30U, /* Read 16 Bytes from a Mifare Standard block */
- phNfc_eMifareRead = 0x30U, /* Read Mifare Standard */
- phNfc_eMifareWrite16 = 0xA0U, /* Write 16 Bytes to a Mifare Standard block */
- phNfc_eMifareWrite4 = 0xA2U, /* Write 4 bytes. */
- phNfc_eMifareInc = 0xC1U, /* Increment */
- phNfc_eMifareDec = 0xC0U, /* Decrement */
- phNfc_eMifareTransfer = 0xB0U, /* Transfer */
- phNfc_eMifareRestore = 0xC2U, /* Restore. */
- phNfc_eMifareReadSector = 0x38U, /* Read Sector. */
- phNfc_eMifareWriteSector = 0xA8U, /* Write Sector. */
- /* Above commands could be used for preparing raw command but below one can
- not be */
- phNfc_eMifareReadN = 0x01, /* Proprietary Command */
- phNfc_eMifareWriteN = 0x02, /* Proprietary Command */
- phNfc_eMifareSectorSel = 0x03, /* Proprietary Command */
- phNfc_eMifareAuth = 0x04, /* Proprietary Command */
- phNfc_eMifareProxCheck = 0x05, /* Proprietary Command */
- phNfc_eMifareInvalidCmd = 0xFFU /* Invalid Command */
-} phNfc_eMifareCmdList_t;
-
-/*
- * Information about ISO14443A
- */
-typedef struct phNfc_sIso14443AInfo {
- uint8_t Uid[PHNFC_MAX_UID_LENGTH]; /* UID information of the TYPE A
- * Tag Discovered */
- uint8_t UidLength; /* UID information length */
- uint8_t
- AppData[PHNFC_MAX_ATR_LENGTH]; /* Application data information of the
- 1 * tag discovered (= Historical bytes for
- * type A) */
- uint8_t AppDataLength; /* Application data length */
- uint8_t Sak; /* SAK information of the TYPE A
- * Tag Discovered */
- uint8_t AtqA[PHNFC_ATQA_LENGTH]; /* ATQA informationof the TYPE A
- * Tag Discovered */
- uint8_t MaxDataRate; /* Maximum data rate supported
- * by the tag Discovered */
- uint8_t Fwi_Sfgt; /* Frame waiting time and start up
- * frame guard */
-} phNfc_sIso14443AInfo_t;
-
-/* Remote device information structure */
-typedef union phNfc_uRemoteDevInfo {
- phNfc_sIso14443AInfo_t Iso14443A_Info; /* ISO1443A Remote device info */
-} phNfc_uRemoteDevInfo_t;
-
-/*
-*
-* The RF Device Type List is used to identify the type of
-* remote device that is discovered and connected.
-*
-*/
-
-typedef enum phNfc_eRFDevType {
- phNfc_eUnknown_DevType = 0x00U,
-
- phNfc_eISO14443_A_PCD,
- phNfc_eISO14443_B_PCD,
- phNfc_eISO14443_BPrime_PCD,
- phNfc_eFelica_PCD,
- phNfc_eJewel_PCD,
- phNfc_eISO15693_PCD,
- phNfc_eEpcGen2_PCD,
- phNfc_ePCD_DevType,
-
- phNfc_ePICC_DevType,
- phNfc_eISO14443_A_PICC,
- phNfc_eISO14443_4A_PICC,
- phNfc_eISO14443_3A_PICC,
- phNfc_eMifare_PICC,
- phNfc_eISO14443_B_PICC,
- phNfc_eISO14443_4B_PICC,
- phNfc_eISO14443_BPrime_PICC,
- phNfc_eFelica_PICC,
- phNfc_eJewel_PICC,
- phNfc_eISO15693_PICC,
- phNfc_eEpcGen2_PICC,
-
- phNfc_eNfcIP1_Target,
- phNfc_eNfcIP1_Initiator,
-
- phNfc_eInvalid_DevType
-
-} phNfc_eRFDevType_t;
-
-/*
- * The Remote Device Type List is used to identify the type of
- * remote device that is discovered/connected
- */
-typedef phNfc_eRFDevType_t phNfc_eRemDevType_t;
-typedef phNfc_eRemDevType_t phHal_eRemDevType_t;
-
-/*
- * Union for each available type of Commands.
- */
-
-typedef union phNfc_uCommand {
- phNfc_eMifareCmdList_t MfCmd; /* Mifare command structure. */
-} phNfc_uCmdList_t;
-
-/*
- * The Remote Device Information Structure holds information about one single
- * Remote
- * Device detected.
- */
-typedef struct phNfc_sRemoteDevInformation {
- uint8_t SessionOpened; /* Flag indicating the validity of
- * the handle of the remote device.
- * 1 = Device is not activer (Only discovered), 2 =
- * Device is active and ready for use*/
- phNfc_eRemDevType_t RemDevType; /* Remote device type */
- phNfc_uRemoteDevInfo_t RemoteDevInfo; /* Union of available Remote Device */
-} phNfc_sRemoteDevInformation_t;
-
-/*
- * Transceive Information Data Structure for sending commands/response to the
- * remote device
- */
-
-typedef struct phNfc_sTransceiveInfo {
- phNfc_uCmdList_t cmd; /* Command for transceive */
- uint8_t addr; /* Start Block Number */
- uint8_t NumBlock; /* Number of Blocks to perform operation */
- /* For Felica only*/
- uint16_t* ServiceCodeList; /* 2 Byte service Code List */
- uint16_t* Blocklist; /* 2 Byte Block list */
- phNfc_sData_t sSendData; /* Send data */
- phNfc_sData_t sRecvData; /* Recv data */
- /* For EPC-GEN */
- uint32_t dwWordPtr; /* Word address for the memory write */
- uint8_t bWordPtrLen; /* Specifies the length of word pointer
- 00: 8 bits
- 01: 16 bits
- 10: 24 bits
- 11: 32 bits
- */
- uint8_t bWordCount; /* Number of words to be read or written */
-} phNfc_sTransceiveInfo_t;
-
-#define UNUSED(X) (void)X;
-
-#endif /* PHNFCTYPES_H */
diff --git a/halimpl/pn54x/dnld/phDnldNfc.c b/halimpl/pn54x/dnld/phDnldNfc.c
deleted file mode 100644
index d2258ef..0000000
--- a/halimpl/pn54x/dnld/phDnldNfc.c
+++ /dev/null
@@ -1,1294 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * Download Component
- * Download Interface routines implementation
- */
-
-#include <dlfcn.h>
-#include <phDnldNfc_Internal.h>
-#include <phNxpConfig.h>
-#include <phNxpLog.h>
-#include <phTmlNfc.h>
-
-static void*
- pFwLibHandle; /* Global firmware lib handle used in this file only */
-uint16_t wMwVer = 0; /* Middleware version no */
-uint16_t wFwVer = 0; /* Firmware version no */
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
-uint8_t gRecFWDwnld; // flag set to true to indicate dummy FW download
-#endif
-static pphDnldNfc_DlContext_t gpphDnldContext = NULL; /* Download contex */
-static pphDnldNfc_RspCb_t UserCb; /* Upper layer call back function */
-static void* UserCtxt; /* Pointer to upper layer context */
-#undef EEPROM_Read_Mem_IMP
-
-/* Function prototype declaration */
-static void phDnldNfc_ReadComplete(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-/*******************************************************************************
-**
-** Function phDnldNfc_Reset
-**
-** Description Performs a soft reset of the download module
-**
-** Parameters pNotify - notify caller after getting response
-** pContext - caller context
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - reset request to NFCC is successful
-** NFCSTATUS_FAILED - reset request failed due to internal
-** error
-** NFCSTATUS_NOT_ALLOWED - command not allowed
-** Other command specific errors
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_Reset(pphDnldNfc_RspCb_t pNotify, void* pContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
-
- if ((NULL == pNotify) || (NULL == pContext)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if (phDnldNfc_TransitionIdle != gpphDnldContext->tDnldInProgress) {
- NXPLOG_FWDNLD_E("Dnld Cmd Request in Progress..Cannot Continue!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_BUSY);
- } else {
- (gpphDnldContext->FrameInp.Type) = phDnldNfc_FTNone;
- (gpphDnldContext->tCmdId) = PH_DL_CMD_RESET;
- (gpphDnldContext->tRspBuffInfo.pBuff) = NULL;
- (gpphDnldContext->tRspBuffInfo.wLen) = 0;
- (gpphDnldContext->tUserData.pBuff) = NULL;
- (gpphDnldContext->tUserData.wLen) = 0;
- (gpphDnldContext->UserCb) = pNotify;
- (gpphDnldContext->UserCtxt) = pContext;
-
- wStatus = phDnldNfc_CmdHandler(gpphDnldContext, phDnldNfc_EventReset);
-
- if (NFCSTATUS_PENDING == wStatus) {
- NXPLOG_FWDNLD_D("Reset Request submitted successfully");
- } else {
- NXPLOG_FWDNLD_E("Reset Request Failed!!");
- }
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_GetVersion
-**
-** Description Retrieves Hardware version, ROM Code version, Protected Data
-** version, Trim data version, User data version, and Firmware
-** version information
-**
-** Parameters pVersionInfo - response buffer which gets updated with
-** complete version info from NFCC
-** pNotify - notify caller after getting response
-** pContext - caller context
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - GetVersion request to NFCC is successful
-** NFCSTATUS_FAILED - GetVersion request failed due to internal
-** error
-** NFCSTATUS_NOT_ALLOWED - command not allowed
-** Other command specific errors
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_GetVersion(pphDnldNfc_Buff_t pVersionInfo,
- pphDnldNfc_RspCb_t pNotify, void* pContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
-
- if ((NULL == pVersionInfo) || (NULL == pNotify) || (NULL == pContext)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if (phDnldNfc_TransitionIdle != gpphDnldContext->tDnldInProgress) {
- NXPLOG_FWDNLD_E("Dnld Cmd Request in Progress..Cannot Continue!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_BUSY);
- } else {
- if ((NULL != pVersionInfo->pBuff) && (0 != pVersionInfo->wLen)) {
- (gpphDnldContext->tRspBuffInfo.pBuff) = pVersionInfo->pBuff;
- (gpphDnldContext->tRspBuffInfo.wLen) = pVersionInfo->wLen;
- (gpphDnldContext->FrameInp.Type) = phDnldNfc_FTNone;
- (gpphDnldContext->tCmdId) = PH_DL_CMD_GETVERSION;
- (gpphDnldContext->tUserData.pBuff) = NULL;
- (gpphDnldContext->tUserData.wLen) = 0;
- (gpphDnldContext->UserCb) = pNotify;
- (gpphDnldContext->UserCtxt) = pContext;
-
- wStatus = phDnldNfc_CmdHandler(gpphDnldContext, phDnldNfc_EventGetVer);
-
- if (NFCSTATUS_PENDING == wStatus) {
- NXPLOG_FWDNLD_D("GetVersion Request submitted successfully");
- } else {
- NXPLOG_FWDNLD_E("GetVersion Request Failed!!");
- }
- } else {
- NXPLOG_FWDNLD_E("Invalid Buff Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- }
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_GetSessionState
-**
-** Description Retrieves the current session state of NFCC
-**
-** Parameters pSession - response buffer which gets updated with complete
-** version info from NFCC
-** pNotify - notify caller after getting response
-** pContext - caller context
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - GetSessionState request to NFCC is
-** successful
-** NFCSTATUS_FAILED - GetSessionState request failed due to
-** internal error
-** NFCSTATUS_NOT_ALLOWED - command not allowed
-** Other command specific errors
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_GetSessionState(pphDnldNfc_Buff_t pSession,
- pphDnldNfc_RspCb_t pNotify,
- void* pContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
-
- if ((NULL == pSession) || (NULL == pNotify) || (NULL == pContext)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if (phDnldNfc_TransitionIdle != gpphDnldContext->tDnldInProgress) {
- NXPLOG_FWDNLD_E("Dnld Cmd Request in Progress..Cannot Continue!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_BUSY);
- } else {
- if ((NULL != pSession->pBuff) && (0 != pSession->wLen)) {
- (gpphDnldContext->tRspBuffInfo.pBuff) = pSession->pBuff;
- (gpphDnldContext->tRspBuffInfo.wLen) = pSession->wLen;
- (gpphDnldContext->FrameInp.Type) = phDnldNfc_FTNone;
- (gpphDnldContext->tCmdId) = PH_DL_CMD_GETSESSIONSTATE;
- (gpphDnldContext->tUserData.pBuff) = NULL;
- (gpphDnldContext->tUserData.wLen) = 0;
- (gpphDnldContext->UserCb) = pNotify;
- (gpphDnldContext->UserCtxt) = pContext;
-
- wStatus =
- phDnldNfc_CmdHandler(gpphDnldContext, phDnldNfc_EventGetSesnSt);
-
- if (NFCSTATUS_PENDING == wStatus) {
- NXPLOG_FWDNLD_D("GetSessionState Request submitted successfully");
- } else {
- NXPLOG_FWDNLD_E("GetSessionState Request Failed!!");
- }
- } else {
- NXPLOG_FWDNLD_E("Invalid Buff Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- }
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_CheckIntegrity
-**
-** Description Inspects the integrity of EEPROM and FLASH contents of the
-** NFCC, provides CRC for each section
-** NOTE: The user data section CRC is valid only after fresh
-** download
-**
-** Parameters bChipVer - current ChipVersion for including additional
-** parameters in request payload
-** pCRCData - response buffer which gets updated with
-** respective section CRC status and CRC bytes from
-** NFCC
-** pNotify - notify caller after getting response
-** pContext - caller context
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - CheckIntegrity request is successful
-** NFCSTATUS_FAILED - CheckIntegrity request failed due to
-** internal error
-** NFCSTATUS_NOT_ALLOWED - command not allowed
-** Other command specific errors
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_CheckIntegrity(uint8_t bChipVer, pphDnldNfc_Buff_t pCRCData,
- pphDnldNfc_RspCb_t pNotify, void* pContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
-
- if ((NULL == pNotify) || (NULL == pContext)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if (phDnldNfc_TransitionIdle != gpphDnldContext->tDnldInProgress) {
- NXPLOG_FWDNLD_E("Dnld Cmd Request in Progress..Cannot Continue!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_BUSY);
- } else {
- if ((PHDNLDNFC_HWVER_MRA2_1 == bChipVer) ||
- (PHDNLDNFC_HWVER_MRA2_2 == bChipVer)
-#if (NFC_NXP_CHIP_TYPE == PN551)
- || (PHDNLDNFC_HWVER_PN551_MRA1_0 == bChipVer)
-#elif (NFC_NXP_CHIP_TYPE == PN548C2)
- || (PHDNLDNFC_HWVER_PN548AD_MRA1_0 == bChipVer)
-#elif (NFC_NXP_CHIP_TYPE == PN553)
- || (PHDNLDNFC_HWVER_PN553_MRA1_0 == bChipVer) ||
- (PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED & bChipVer)
-#endif
- ) {
- (gpphDnldContext->FrameInp.Type) = phDnldNfc_ChkIntg;
- } else {
- (gpphDnldContext->FrameInp.Type) = phDnldNfc_FTNone;
- }
-
- if ((NULL != pCRCData->pBuff) && (0 != pCRCData->wLen)) {
- (gpphDnldContext->tRspBuffInfo.pBuff) = pCRCData->pBuff;
- (gpphDnldContext->tRspBuffInfo.wLen) = pCRCData->wLen;
- (gpphDnldContext->tCmdId) = PH_DL_CMD_CHECKINTEGRITY;
- (gpphDnldContext->tUserData.pBuff) = NULL;
- (gpphDnldContext->tUserData.wLen) = 0;
- (gpphDnldContext->UserCb) = pNotify;
- (gpphDnldContext->UserCtxt) = pContext;
-
- wStatus =
- phDnldNfc_CmdHandler(gpphDnldContext, phDnldNfc_EventIntegChk);
-
- if (NFCSTATUS_PENDING == wStatus) {
- NXPLOG_FWDNLD_D("CheckIntegrity Request submitted successfully");
- } else {
- NXPLOG_FWDNLD_E("CheckIntegrity Request Failed!!");
- }
- } else {
- NXPLOG_FWDNLD_E("Invalid Buff Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- }
- }
- }
-
- return wStatus;
-}
-/*******************************************************************************
-**
-** Function phDnldNfc_ReadLog
-**
-** Description Retrieves log data from EEPROM
-**
-** Parameters pData - response buffer which gets updated with data from
-** EEPROM
-** pNotify - notify caller after getting response
-** pContext - caller context
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - Read request to NFCC is successful
-** NFCSTATUS_FAILED - Read request failed due to internal error
-** NFCSTATUS_NOT_ALLOWED - command not allowed
-** Other command specific errors
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_ReadLog(pphDnldNfc_Buff_t pData, pphDnldNfc_RspCb_t pNotify,
- void* pContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
-
- if ((NULL == pNotify) || (NULL == pData) || (NULL == pContext)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if (phDnldNfc_TransitionIdle != gpphDnldContext->tDnldInProgress) {
- NXPLOG_FWDNLD_E("Dnld Cmd Request in Progress..Cannot Continue!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_BUSY);
- } else {
- if ((NULL != pData->pBuff) && (0 != pData->wLen)) {
- (gpphDnldContext->tCmdId) = PH_DL_CMD_READ;
- (gpphDnldContext->FrameInp.Type) = phDnldNfc_FTRead;
- (gpphDnldContext->FrameInp.dwAddr) = PHDNLDNFC_EEPROM_LOG_START_ADDR;
- (gpphDnldContext->tRspBuffInfo.pBuff) = pData->pBuff;
- (gpphDnldContext->tRspBuffInfo.wLen) = pData->wLen;
- (gpphDnldContext->tUserData.pBuff) = NULL;
- (gpphDnldContext->tUserData.wLen) = 0;
- (gpphDnldContext->UserCb) = pNotify;
- (gpphDnldContext->UserCtxt) = pContext;
-
- memset(&(gpphDnldContext->tRWInfo), 0,
- sizeof(gpphDnldContext->tRWInfo));
-
- wStatus = phDnldNfc_CmdHandler(gpphDnldContext, phDnldNfc_EventRead);
-
- if (NFCSTATUS_PENDING == wStatus) {
- NXPLOG_FWDNLD_D("Read Request submitted successfully");
- } else {
- NXPLOG_FWDNLD_E("Read Request Failed!!");
- }
- } else {
- NXPLOG_FWDNLD_E("Invalid Buff Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- }
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_Write
-**
-** Description Writes requested data of length len to desired EEPROM/FLASH
-** address
-**
-** Parameters bRecoverSeq - flag to indicate whether recover sequence data
-** needs to be written or not
-** pData - data buffer to write into EEPROM/FLASH by user
-** pNotify - notify caller after getting response
-** pContext - caller context
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - Write request to NFCC is successful
-** NFCSTATUS_FAILED - Write request failed due to internal
-** error
-** NFCSTATUS_NOT_ALLOWED - command not allowed
-** Other command specific errors
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_Write(bool_t bRecoverSeq, pphDnldNfc_Buff_t pData,
- pphDnldNfc_RspCb_t pNotify, void* pContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- uint8_t* pImgPtr = NULL;
- uint16_t wLen = 0;
- phDnldNfc_Buff_t tImgBuff;
-
- if ((NULL == pNotify) || (NULL == pContext)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if (phDnldNfc_TransitionIdle != gpphDnldContext->tDnldInProgress) {
- NXPLOG_FWDNLD_E("Dnld Cmd Request in Progress..Cannot Continue!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_BUSY);
- } else {
- if (NULL != pData) {
- pImgPtr = pData->pBuff;
- wLen = pData->wLen;
- } else {
- if (bRecoverSeq == false) {
- pImgPtr = (uint8_t*)gpphDnldContext->nxp_nfc_fw;
- wLen = gpphDnldContext->nxp_nfc_fw_len;
-
- } else {
- if (PH_DL_STATUS_PLL_ERROR == (gpphDnldContext->tLastStatus)) {
- wStatus = phDnldNfc_LoadRecInfo();
- } else if (PH_DL_STATUS_SIGNATURE_ERROR ==
- (gpphDnldContext->tLastStatus)) {
- wStatus = phDnldNfc_LoadPKInfo();
- } else {
- }
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- pImgPtr = (uint8_t*)gpphDnldContext->nxp_nfc_fwp;
- wLen = gpphDnldContext->nxp_nfc_fwp_len;
- } else {
- NXPLOG_FWDNLD_E("Platform Recovery Image extraction Failed!!");
- pImgPtr = NULL;
- wLen = 0;
- }
- }
- }
-
- if ((NULL != pImgPtr) && (0 != wLen)) {
- tImgBuff.pBuff = pImgPtr;
- tImgBuff.wLen = wLen;
-
- (gpphDnldContext->tCmdId) = PH_DL_CMD_WRITE;
- (gpphDnldContext->FrameInp.Type) = phDnldNfc_FTWrite;
- (gpphDnldContext->tRspBuffInfo.pBuff) = NULL;
- (gpphDnldContext->tRspBuffInfo.wLen) = 0;
- (gpphDnldContext->tUserData.pBuff) = pImgPtr;
- (gpphDnldContext->tUserData.wLen) = wLen;
- (gpphDnldContext->bResendLastFrame) = false;
-
- memset(&(gpphDnldContext->tRWInfo), 0,
- sizeof(gpphDnldContext->tRWInfo));
- (gpphDnldContext->tRWInfo.bFirstWrReq) = true;
- (gpphDnldContext->UserCb) = pNotify;
- (gpphDnldContext->UserCtxt) = pContext;
-
- wStatus = phDnldNfc_CmdHandler(gpphDnldContext, phDnldNfc_EventWrite);
-
- if (NFCSTATUS_PENDING == wStatus) {
- NXPLOG_FWDNLD_D("Write Request submitted successfully");
- } else {
- NXPLOG_FWDNLD_E("Write Request Failed!!");
- }
- } else {
- NXPLOG_FWDNLD_E("Download Image Primitives extraction failed!!");
- wStatus = NFCSTATUS_FAILED;
- }
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_Log
-**
-** Description Provides a full page free write to EEPROM
-**
-** Parameters pData - data buffer to write into EEPROM/FLASH by user
-** pNotify - notify caller after getting response
-** pContext - caller context
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - Write request to NFCC is successful
-** NFCSTATUS_FAILED - Write request failed due to internal
-** error
-** NFCSTATUS_NOT_ALLOWED - command not allowed
-** Other command specific error
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_Log(pphDnldNfc_Buff_t pData, pphDnldNfc_RspCb_t pNotify,
- void* pContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
-
- if ((NULL == pNotify) || (NULL == pData) || (NULL == pContext)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if (phDnldNfc_TransitionIdle != gpphDnldContext->tDnldInProgress) {
- NXPLOG_FWDNLD_E("Dnld Cmd Request in Progress..Cannot Continue!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_BUSY);
- } else {
- if ((NULL != (pData->pBuff)) &&
- ((0 != (pData->wLen) && (PHDNLDNFC_MAX_LOG_SIZE >= (pData->wLen))))) {
- (gpphDnldContext->tCmdId) = PH_DL_CMD_LOG;
- (gpphDnldContext->FrameInp.Type) = phDnldNfc_FTLog;
- (gpphDnldContext->tRspBuffInfo.pBuff) = NULL;
- (gpphDnldContext->tRspBuffInfo.wLen) = 0;
- (gpphDnldContext->tUserData.pBuff) = (pData->pBuff);
- (gpphDnldContext->tUserData.wLen) = (pData->wLen);
-
- memset(&(gpphDnldContext->tRWInfo), 0,
- sizeof(gpphDnldContext->tRWInfo));
- (gpphDnldContext->UserCb) = pNotify;
- (gpphDnldContext->UserCtxt) = pContext;
-
- wStatus = phDnldNfc_CmdHandler(gpphDnldContext, phDnldNfc_EventLog);
-
- if (NFCSTATUS_PENDING == wStatus) {
- NXPLOG_FWDNLD_D("Log Request submitted successfully");
- } else {
- NXPLOG_FWDNLD_E("Log Request Failed!!");
- }
- } else {
- NXPLOG_FWDNLD_E("Invalid Input Parameters for Log!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- }
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_Force
-**
-** Description Used as an emergency recovery procedure for NFCC due to
-** corrupt settings of system platform specific parameters by
-** the host
-**
-** Parameters pInputs - input buffer which contains clk src & clk freq
-** settings for desired platform
-** pNotify - notify caller after getting response
-** pContext - caller context
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - Emergency Recovery request is successful
-** NFCSTATUS_FAILED - Emergency Recovery failed due to internal
-** error
-** NFCSTATUS_NOT_ALLOWED - command not allowed
-** Other command specific errors
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_Force(pphDnldNfc_Buff_t pInputs, pphDnldNfc_RspCb_t pNotify,
- void* pContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- uint8_t bClkSrc = 0x00, bClkFreq = 0x00;
- uint8_t bPldVal[3] = {
- 0x11, 0x00, 0x00}; /* default values to be used if input not provided */
-
- if ((NULL == pNotify) || (NULL == pContext)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if (phDnldNfc_TransitionIdle != gpphDnldContext->tDnldInProgress) {
- NXPLOG_FWDNLD_E("Dnld Cmd Request in Progress..Cannot Continue!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_BUSY);
- } else {
- (gpphDnldContext->tCmdId) = PH_DL_CMD_FORCE;
- (gpphDnldContext->FrameInp.Type) = phDnldNfc_FTForce;
- (gpphDnldContext->tRspBuffInfo.pBuff) = NULL;
- (gpphDnldContext->tRspBuffInfo.wLen) = 0;
-
- if ((0 != (pInputs->wLen)) || (NULL != (pInputs->pBuff))) {
- if (CLK_SRC_XTAL == (pInputs->pBuff[0])) {
- bClkSrc = phDnldNfc_ClkSrcXtal;
- } else if (CLK_SRC_PLL == (pInputs->pBuff[0])) {
- bClkSrc = phDnldNfc_ClkSrcPLL;
- if (CLK_FREQ_13MHZ == (pInputs->pBuff[1])) {
- bClkFreq = phDnldNfc_ClkFreq_13Mhz;
- } else if (CLK_FREQ_19_2MHZ == (pInputs->pBuff[1])) {
- bClkFreq = phDnldNfc_ClkFreq_19_2Mhz;
- } else if (CLK_FREQ_24MHZ == (pInputs->pBuff[1])) {
- bClkFreq = phDnldNfc_ClkFreq_24Mhz;
- } else if (CLK_FREQ_26MHZ == (pInputs->pBuff[1])) {
- bClkFreq = phDnldNfc_ClkFreq_26Mhz;
- } else if (CLK_FREQ_38_4MHZ == (pInputs->pBuff[1])) {
- bClkFreq = phDnldNfc_ClkFreq_38_4Mhz;
- } else if (CLK_FREQ_52MHZ == (pInputs->pBuff[1])) {
- bClkFreq = phDnldNfc_ClkFreq_52Mhz;
- } else {
- NXPLOG_FWDNLD_E(
- "Invalid Clk Frequency !! Using default value of 19.2Mhz..");
- bClkFreq = phDnldNfc_ClkFreq_19_2Mhz;
- }
-
- } else if (CLK_SRC_PADDIRECT == (pInputs->pBuff[0])) {
- bClkSrc = phDnldNfc_ClkSrcPad;
- } else {
- NXPLOG_FWDNLD_E("Invalid Clk src !! Using default value of PLL..");
- bClkSrc = phDnldNfc_ClkSrcPLL;
- }
-
- bPldVal[0] = 0U;
- bPldVal[0] = ((bClkSrc << 3U) | bClkFreq);
- } else {
- NXPLOG_FWDNLD_E("Clk src inputs not provided!! Using default values..");
- }
-
- (gpphDnldContext->tUserData.pBuff) = bPldVal;
- (gpphDnldContext->tUserData.wLen) = sizeof(bPldVal);
-
- memset(&(gpphDnldContext->tRWInfo), 0, sizeof(gpphDnldContext->tRWInfo));
- (gpphDnldContext->UserCb) = pNotify;
- (gpphDnldContext->UserCtxt) = pContext;
-
- wStatus = phDnldNfc_CmdHandler(gpphDnldContext, phDnldNfc_EventForce);
-
- if (NFCSTATUS_PENDING == wStatus) {
- NXPLOG_FWDNLD_D("Force Command Request submitted successfully");
- } else {
- NXPLOG_FWDNLD_E("Force Command Request Failed!!");
- }
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_SetHwDevHandle
-**
-** Description Stores the HwDev handle to download context. The handle is
-** required for subsequent operations
-**
-** Parameters None
-**
-** Returns None -
-**
-*******************************************************************************/
-void phDnldNfc_SetHwDevHandle(void) {
- pphDnldNfc_DlContext_t psDnldContext = NULL;
-
- if (NULL == gpphDnldContext) {
- NXPLOG_FWDNLD_D("Allocating Mem for Dnld Context..");
- /* Create the memory for Download Mgmt Context */
- psDnldContext =
- (pphDnldNfc_DlContext_t)malloc(sizeof(phDnldNfc_DlContext_t));
-
- if (psDnldContext != NULL) {
- (void)memset((void*)psDnldContext, 0, sizeof(phDnldNfc_DlContext_t));
- gpphDnldContext = psDnldContext;
- } else {
- NXPLOG_FWDNLD_E("Error Allocating Mem for Dnld Context..")
- }
- } else {
- (void)memset((void*)gpphDnldContext, 0, sizeof(phDnldNfc_DlContext_t));
- }
- return;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_ReSetHwDevHandle
-**
-** Description Frees the HwDev handle to download context.
-**
-** Parameters None
-**
-** Returns None -
-**
-*******************************************************************************/
-void phDnldNfc_ReSetHwDevHandle(void) {
- if (gpphDnldContext != NULL) {
- NXPLOG_FWDNLD_E("Freeing Mem for Dnld Context..")
- free(gpphDnldContext);
- gpphDnldContext = NULL;
- }
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_RawReq
-**
-** Description Sends raw frame request to NFCC.
-** It is currently used for sending an NCI RESET cmd after
-** doing a production key update
-**
-** Parameters pFrameData - input buffer, contains raw frame packet to be
-** sent to NFCC
-** pRspData - response buffer received from NFCC
-** pNotify - notify caller after getting response
-** pContext - caller context
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - GetSessionState request to NFCC is
-** successful
-** NFCSTATUS_FAILED - GetSessionState request failed due to
-** internal error
-** NFCSTATUS_NOT_ALLOWED - command not allowed
-** Other command specific errors
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_RawReq(pphDnldNfc_Buff_t pFrameData,
- pphDnldNfc_Buff_t pRspData,
- pphDnldNfc_RspCb_t pNotify, void* pContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
-
- if ((NULL == pFrameData) || (NULL == pNotify) || (NULL == pRspData) ||
- (NULL == pContext)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if (phDnldNfc_TransitionIdle != gpphDnldContext->tDnldInProgress) {
- NXPLOG_FWDNLD_E("Raw Cmd Request in Progress..Cannot Continue!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_BUSY);
- } else {
- if (((NULL != pFrameData->pBuff) && (0 != pFrameData->wLen)) &&
- ((NULL != pRspData->pBuff) && (0 != pRspData->wLen))) {
- (gpphDnldContext->tRspBuffInfo.pBuff) = pRspData->pBuff;
- (gpphDnldContext->tRspBuffInfo.wLen) = pRspData->wLen;
- (gpphDnldContext->FrameInp.Type) = phDnldNfc_FTRaw;
- (gpphDnldContext->tCmdId) = PH_DL_CMD_NONE;
- (gpphDnldContext->tUserData.pBuff) = pFrameData->pBuff;
- (gpphDnldContext->tUserData.wLen) = pFrameData->wLen;
- (gpphDnldContext->UserCb) = pNotify;
- (gpphDnldContext->UserCtxt) = pContext;
-
- wStatus = phDnldNfc_CmdHandler(gpphDnldContext, phDnldNfc_EventRaw);
-
- if (NFCSTATUS_PENDING == wStatus) {
- NXPLOG_FWDNLD_D("RawFrame Request submitted successfully");
- } else {
- NXPLOG_FWDNLD_E("RawFrame Request Failed!!");
- }
- } else {
- NXPLOG_FWDNLD_E("Invalid Buff Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- }
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_InitImgInfo
-**
-** Description Extracts image information and stores it in respective
-** variables, to be used internally for write operation
-**
-** Parameters None
-**
-** Returns NFC status
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_InitImgInfo(void) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- uint8_t* pImageInfo = NULL;
- uint16_t ImageInfoLen = 0;
- char fwFileName[256];
- char fwpathName[256];
- char* pathName = NULL;
-
- /* if memory is not allocated then allocate memory for download context
- * structure */
- phDnldNfc_SetHwDevHandle();
-
- /*Read Firmware file name from config file*/
- if (GetNxpStrValue(NAME_NXP_FW_NAME, fwFileName, sizeof(fwFileName)) ==
- true) {
- strcpy(fwpathName, FW_DLL_ROOT_DIR);
- strncat(fwpathName, fwFileName, strlen(fwFileName));
- pathName = fwpathName;
- }
-
-/* load the library and get the image info pointer */
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- if (gRecFWDwnld == true)
- wStatus = phDnldNfc_LoadRecoveryFW(pathName, &pImageInfo, &ImageInfoLen);
- else
-#endif
- wStatus = phDnldNfc_LoadFW(pathName, &pImageInfo, &ImageInfoLen);
-
- NXPLOG_FWDNLD_E("FW Image Length - ImageInfoLen %d", ImageInfoLen);
- NXPLOG_FWDNLD_E("FW Image Info Pointer - pImageInfo %p", pImageInfo);
-
- if ((pImageInfo == NULL) || (ImageInfoLen == 0)) {
- NXPLOG_FWDNLD_E(
- "Image extraction Failed - invalid imginfo or imginfolen!!");
- wStatus = NFCSTATUS_FAILED;
- }
-
- if (wStatus != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("Error loading libpn54x_fw !!\n");
- }
-
- /* get the MW version */
- if (NFCSTATUS_SUCCESS == wStatus) {
- // NXPLOG_FWDNLD_D("MW Major Version Num - %x",NXP_MW_VERSION_MAJ);
- // NXPLOG_FWDNLD_D("MW Minor Version Num - %x",NXP_MW_VERSION_MIN);
- wMwVer = (((uint16_t)(NXP_MW_VERSION_MAJ) << 8U) | (NXP_MW_VERSION_MIN));
- }
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- gpphDnldContext->nxp_nfc_fw = (uint8_t*)pImageInfo;
- gpphDnldContext->nxp_nfc_fw_len = ImageInfoLen;
- if ((NULL != gpphDnldContext->nxp_nfc_fw) &&
- (0 != gpphDnldContext->nxp_nfc_fw_len)) {
- NXPLOG_FWDNLD_E("FW Major Version Num - %x",
- gpphDnldContext->nxp_nfc_fw[5]);
- NXPLOG_FWDNLD_E("FW Minor Version Num - %x",
- gpphDnldContext->nxp_nfc_fw[4]);
- NXPLOG_FWDNLD_E("FW Image Length - %d", ImageInfoLen);
- NXPLOG_FWDNLD_E("FW Image Info Pointer - %p", pImageInfo);
-
- /* get the FW version */
- wFwVer = (((uint16_t)(gpphDnldContext->nxp_nfc_fw[5]) << 8U) |
- (gpphDnldContext->nxp_nfc_fw[4]));
- wStatus = NFCSTATUS_SUCCESS;
- } else {
- NXPLOG_FWDNLD_E("Image details extraction Failed!!");
- wStatus = NFCSTATUS_FAILED;
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_LoadRecInfo
-**
-** Description Extracts recovery sequence image information and stores it
-** in respective variables, to be used internally for write
-** operation
-**
-** Parameters None
-**
-** Returns NFC status
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_LoadRecInfo(void) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- uint8_t* pImageInfo = NULL;
- uint16_t ImageInfoLen = 0;
-
- /* if memory is not allocated then allocate memory for donwload context
- * structure */
- phDnldNfc_SetHwDevHandle();
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- if (gRecFWDwnld == true)
- wStatus =
- phDnldNfc_LoadRecoveryFW(PLATFORM_LIB_PATH, &pImageInfo, &ImageInfoLen);
- else
-#endif
- wStatus = phDnldNfc_LoadFW(PLATFORM_LIB_PATH, &pImageInfo, &ImageInfoLen);
- if ((pImageInfo == NULL) || (ImageInfoLen == 0)) {
- NXPLOG_FWDNLD_E(
- "Image extraction Failed - invalid imginfo or imginfolen!!");
- wStatus = NFCSTATUS_FAILED;
- }
-
- /* load the PLL recovery image library */
- if (wStatus != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("Error loading libpn54x_fw_platform !!\n");
- }
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- /* fetch the PLL recovery image pointer and the image length */
- gpphDnldContext->nxp_nfc_fwp = (uint8_t*)pImageInfo;
- gpphDnldContext->nxp_nfc_fwp_len = ImageInfoLen;
- if ((NULL != gpphDnldContext->nxp_nfc_fwp) &&
- (0 != gpphDnldContext->nxp_nfc_fwp_len)) {
- NXPLOG_FWDNLD_D("Recovery Image Length - %d", ImageInfoLen);
- NXPLOG_FWDNLD_D("Recovery Image Info Pointer - %p", pImageInfo);
- wStatus = NFCSTATUS_SUCCESS;
- } else {
- NXPLOG_FWDNLD_E("Recovery Image details extraction Failed!!");
- wStatus = NFCSTATUS_FAILED;
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_LoadPKInfo
-**
-** Description Extracts production sequence image information and stores it
-** in respective variables, to be used internally for write
-** operation
-**
-** Parameters None
-**
-** Returns NFC status
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_LoadPKInfo(void) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- uint8_t* pImageInfo = NULL;
- uint16_t ImageInfoLen = 0;
-
- /* if memory is not allocated then allocate memory for donwload context
- * structure */
- phDnldNfc_SetHwDevHandle();
-
-/* load the PKU image library */
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- if (gRecFWDwnld == true)
- wStatus =
- phDnldNfc_LoadRecoveryFW(PKU_LIB_PATH, &pImageInfo, &ImageInfoLen);
- else
-#endif
- wStatus = phDnldNfc_LoadFW(PKU_LIB_PATH, &pImageInfo, &ImageInfoLen);
- if ((pImageInfo == NULL) || (ImageInfoLen == 0)) {
- NXPLOG_FWDNLD_E(
- "Image extraction Failed - invalid imginfo or imginfolen!!");
- wStatus = NFCSTATUS_FAILED;
- }
-
- if (wStatus != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("Error loading libpn54x_fw_pku !!\n");
- }
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- /* fetch the PKU image pointer and the image length */
- gpphDnldContext->nxp_nfc_fwp = (uint8_t*)pImageInfo;
- gpphDnldContext->nxp_nfc_fwp_len = ImageInfoLen;
-
- if ((NULL != gpphDnldContext->nxp_nfc_fwp) &&
- (0 != gpphDnldContext->nxp_nfc_fwp_len)) {
- NXPLOG_FWDNLD_D("PKU Image Length - %d", ImageInfoLen);
- NXPLOG_FWDNLD_D("PKU Image Info Pointer - %p", pImageInfo);
- wStatus = NFCSTATUS_SUCCESS;
- } else {
- NXPLOG_FWDNLD_E("PKU Image details extraction Failed!!");
- wStatus = NFCSTATUS_FAILED;
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_CloseFwLibHandle
-**
-** Description Closes previously opened fw library handle as part of
-** dynamic loader processing
-**
-** Parameters None
-**
-** Returns None
-**
-*******************************************************************************/
-void phDnldNfc_CloseFwLibHandle(void) {
- NFCSTATUS wStatus;
-
- wStatus = phDnldNfc_UnloadFW();
- if (wStatus != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("free library FAILED !!\n");
- } else {
- NXPLOG_FWDNLD_E("free library SUCCESS !!\n");
- }
- return;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_LoadFW
-**
-** Description Load the firmware version form firmware lib
-**
-** Parameters pathName - Firmware image path
-** pImgInfo - Firmware image handle
-** pImgInfoLen - Firmware image length
-**
-** Returns NFC status
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_LoadFW(const char* pathName, uint8_t** pImgInfo,
- uint16_t* pImgInfoLen) {
- void* pImageInfo = NULL;
- void* pImageInfoLen = NULL;
- if (pathName == NULL) {
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
- pathName = "/system/vendor/firmware/libpn548ad_fw.so";
-#elif (NFC_NXP_CHIP_TYPE == PN551)
- pathName = "/system/vendor/firmware/libpn551_fw.so";
-#elif (NFC_NXP_CHIP_TYPE == PN553)
- pathName = "/system/vendor/firmware/libpn553_fw.so";
-#else
- pathName = "/system/vendor/firmware/libpn547_fw.so";
-#endif
- }
-
- /* check if the handle is not NULL then free the library */
- if (pFwLibHandle != NULL) {
- phDnldNfc_UnloadFW();
- pFwLibHandle = NULL;
- }
-
- /* load the DLL file */
- pFwLibHandle = dlopen(pathName, RTLD_LAZY);
- NXPLOG_FWDNLD_D("@@@%s", pathName);
-
- /* if library load failed then handle will be NULL */
- if (pFwLibHandle == NULL) {
- NXPLOG_FWDNLD_E(
- "NULL handler : unable to load the library file, specify correct path");
- return NFCSTATUS_FAILED;
- }
-
- dlerror(); /* Clear any existing error */
-
- /* load the address of download image pointer and image size */
- pImageInfo = (void*)dlsym(pFwLibHandle, "gphDnldNfc_DlSeq");
-
- if (dlerror() || (NULL == pImageInfo)) {
- NXPLOG_FWDNLD_E("Problem loading symbol : gphDnldNfc_DlSeq");
- return NFCSTATUS_FAILED;
- }
- (*pImgInfo) = (*(uint8_t**)pImageInfo);
-
- pImageInfoLen = (void*)dlsym(pFwLibHandle, "gphDnldNfc_DlSeqSz");
- if (dlerror() || (NULL == pImageInfoLen)) {
- NXPLOG_FWDNLD_E("Problem loading symbol : gphDnldNfc_DlSeqSz");
- return NFCSTATUS_FAILED;
- }
-
- (*pImgInfoLen) = (uint16_t)(*((uint16_t*)pImageInfoLen));
-
- return NFCSTATUS_SUCCESS;
-}
-
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
-/*******************************************************************************
-**
-** Function phDnldNfc_LoadRecoveryFW
-**
-** Description Load the dummy firmware version form firmware lib for
-** recovery. This will change the FW version of the NFCC
-** firmware and enable flashing of firmware of same version.
-**
-** Parameters pathName - Firmware image path
-** pImgInfo - Firmware image handle
-** pImgInfoLen - Firmware image length
-**
-** Returns NFCSTATUS
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_LoadRecoveryFW(const char* pathName, uint8_t** pImgInfo,
- uint16_t* pImgInfoLen) {
- void* pImageInfo = NULL;
- void* pImageInfoLen = NULL;
-
- /* check for path name */
- if (pathName == NULL) {
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
- pathName = "/system/vendor/firmware/libpn548ad_fw.so";
-#elif (NFC_NXP_CHIP_TYPE == PN551)
- pathName = "/system/vendor/firmware/libpn551_fw.so";
-#elif (NFC_NXP_CHIP_TYPE == PN553)
- pathName = "/system/vendor/firmware/libpn553_fw.so";
-#else
- pathName = "/system/vendor/firmware/libpn547_fw.so";
-#endif
- }
-
- /* check if the handle is not NULL then free the library */
- if (pFwLibHandle != NULL) {
- phDnldNfc_UnloadFW();
- pFwLibHandle = NULL;
- }
- /* load the DLL file */
- pFwLibHandle = dlopen(pathName, RTLD_LAZY);
- NXPLOG_FWDNLD_D("phDnldNfc_LoadRecoveryFW %s ", pathName);
-
- /* if library load failed then handle will be NULL */
- if (pFwLibHandle == NULL) {
- NXPLOG_FWDNLD_E(
- "NULL handler : unable to load the library file, specify correct path");
- return NFCSTATUS_FAILED;
- }
-
- dlerror(); /* Clear any existing error */
-
- /* load the address of download image pointer and image size */
- pImageInfo = (void*)dlsym(pFwLibHandle, "gphDnldNfc_DummyDlSeq");
-
- if (dlerror() || (NULL == pImageInfo)) {
- NXPLOG_FWDNLD_E("Problem loading symbol : gphDnldNfc_DummyDlSeq");
- return NFCSTATUS_FAILED;
- }
-
- (*pImgInfo) = (*(uint8_t**)pImageInfo);
- pImageInfoLen = (void*)dlsym(pFwLibHandle, "gphDnldNfc_DlSeqDummyFwSz");
- if (dlerror() || (NULL == pImageInfoLen)) {
- NXPLOG_FWDNLD_E("Problem loading symbol : gphDnldNfc_DlSeqDummyFwSz");
- return NFCSTATUS_FAILED;
- }
-
- (*pImgInfoLen) = (uint16_t)(*((uint16_t*)pImageInfoLen));
-
- return NFCSTATUS_SUCCESS;
-}
-#endif
-
-/*******************************************************************************
-**
-** Function phDnldNfc_UnloadFW
-**
-** Description Deinit the firmware handle
-**
-** Parameters None
-**
-** Returns NFC status
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_UnloadFW(void) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- int32_t status;
-
- /* check if the handle is not NULL then free the library */
- if (pFwLibHandle != NULL) {
- status = dlclose(pFwLibHandle);
- pFwLibHandle = NULL;
-
- dlerror(); /* Clear any existing error */
- if (status != 0) {
- wStatus = NFCSTATUS_FAILED;
- NXPLOG_FWDNLD_E("Free library file failed");
- }
- }
-
- return wStatus;
-}
-
-#ifdef EEPROM_Read_Mem_IMP
-/*******************************************************************************
-**
-** Function phDnldNfc_ReadMem
-**
-** Description Dumps the contents of EEPROM. The handle is required for
-** subsequent operations
-**
-** Parameters pHwRef - pointer to the hardware device
-** pNotify - notify caller after getting response
-** pContext - caller context
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - request to NFCC is successful
-** NFCSTATUS_FAILED - request failed due to internal error
-** NFCSTATUS_NOT_ALLOWED - command not allowed
-** Other command specific errors
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_ReadMem(void* pHwRef, pphDnldNfc_RspCb_t pNotify,
- void* pContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- uint32_t wAddr = 0x2011C0; /* eeprom platform specific area start address */
- uint32_t wRdAddr = 0;
- uint8_t* pAddr;
- static uint8_t bRdData[3519]; /* buffer to hold the read data */
- static phDnldNfc_Buff_t Data;
-
- if ((NULL == pNotify) || (NULL == pContext)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- /* Call Tml Ioctl to enable download mode */
- wStatus = phTmlNfc_IoCtl(phTmlNfc_e_EnableDownloadMode);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- /* Set the obtained device handle to download module */
- phDnldNfc_SetHwDevHandle();
- } else {
- wStatus = NFCSTATUS_FAILED;
- }
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- pAddr = (uint8_t*)&wAddr;
-
- wRdAddr = (pAddr[3]);
- wRdAddr <<= 8;
- wRdAddr |= (pAddr[2]);
- wRdAddr <<= 8;
- wRdAddr |= (pAddr[1]);
- wRdAddr <<= 8;
- wRdAddr |= (pAddr[0]);
-
- Data.pBuff = bRdData;
- Data.wLen = sizeof(bRdData);
- UserCb = pNotify;
- UserCtxt = pContext;
-
- wStatus = phDnldNfc_Read(&Data, wRdAddr,
- (pphDnldNfc_RspCb_t)phDnldNfc_ReadComplete,
- gpphDnldContext);
- } else {
- Data.pBuff = NULL;
- Data.wLen = 0;
- wStatus = NFCSTATUS_FAILED;
- }
-
- if (NFCSTATUS_PENDING == wStatus) {
- NXPLOG_FWDNLD_D("Read Request submitted successfully..");
- } else {
- NXPLOG_FWDNLD_E("Read Request submission failed!!");
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_ReadComplete
-**
-** Description Read complete
-**
-** Parameters pContext - caller layer context
-** status - status of the transaction
-** pInfo - transaction info
-**
-** Returns None
-**
-*******************************************************************************/
-static void phDnldNfc_ReadComplete(void* pContext, NFCSTATUS status,
- void* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- UNUSED(pContext);
-
- /* Call Tml Ioctl to enable/restore normal mode */
- wStatus = phTmlNfc_IoCtl(phTmlNfc_e_EnableNormalMode);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- NXPLOG_FWDNLD_D("Read Done!!");
- }
-
- UserCb(&UserCtxt, status, pInfo);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_Read
-**
-** Description Retrieves requested data of specified length from desired
-** EEPROM address
-**
-** Parameters pData - response buffer which gets updated with data from
-** EEPROM
-** dwRdAddr - EEPROM address for data read
-** pNotify - notify caller after getting response
-** pContext - caller context
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - Read request to NFCC is successful
-** NFCSTATUS_FAILED - Read request failed due to internal error
-** NFCSTATUS_NOT_ALLOWED - command not allowed
-** Other command specific errors
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_Read(pphDnldNfc_Buff_t pData, uint32_t dwRdAddr,
- pphDnldNfc_RspCb_t pNotify, void* pContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
-
- if ((NULL == pNotify) || (NULL == pData) || (NULL == pContext)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if (phDnldNfc_TransitionIdle != gpphDnldContext->tDnldInProgress) {
- NXPLOG_FWDNLD_E("Dnld Cmd Request in Progress..Cannot Continue!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_BUSY);
- } else {
- if ((NULL != pData->pBuff) && (0 != pData->wLen)) {
- (gpphDnldContext->tCmdId) = PH_DL_CMD_READ;
- (gpphDnldContext->FrameInp.Type) = phDnldNfc_FTRead;
- (gpphDnldContext->FrameInp.dwAddr) = dwRdAddr;
- (gpphDnldContext->tRspBuffInfo.pBuff) = pData->pBuff;
- (gpphDnldContext->tRspBuffInfo.wLen) = pData->wLen;
- (gpphDnldContext->tUserData.pBuff) = NULL;
- (gpphDnldContext->tUserData.wLen) = 0;
- (gpphDnldContext->UserCb) = pNotify;
- (gpphDnldContext->UserCtxt) = pContext;
-
- memset(&(gpphDnldContext->tRWInfo), 0,
- sizeof(gpphDnldContext->tRWInfo));
-
- wStatus = phDnldNfc_CmdHandler(gpphDnldContext, phDnldNfc_EventRead);
-
- if (NFCSTATUS_PENDING == wStatus) {
- NXPLOG_FWDNLD_D("Read Request submitted successfully");
- } else {
- NXPLOG_FWDNLD_E("Read Request Failed!!");
- }
- } else {
- NXPLOG_FWDNLD_E("Invalid Buff Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- }
- }
- }
-
- return wStatus;
-}
-#endif
diff --git a/halimpl/pn54x/dnld/phDnldNfc.h b/halimpl/pn54x/dnld/phDnldNfc.h
deleted file mode 100644
index 5b7e420..0000000
--- a/halimpl/pn54x/dnld/phDnldNfc.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * Firmware Download Interface File
- */
-#ifndef PHDNLDNFC_H
-#define PHDNLDNFC_H
-
-#include <phNfcStatus.h>
-
-/*
- *
- * Callback for handling the received data/response from PN54X.
- * Parameters to be passed/registered to download context during respective
- * download function call:
- * pContext - Upper layer context
- * wStatus - Status of the transaction
- * pInfo - Contains the Transaction Info
- */
-typedef void (*pphDnldNfc_RspCb_t)(void* pContext, NFCSTATUS wStatus,
- void* pInfo);
-
-#define PHLIBNFC_FWDNLD_SESSNOPEN (0x01U) /* download session is Open */
-#define PHLIBNFC_FWDNLD_SESSNCLOSED (0x00U) /* download session is Closed */
-
-#define PHDNLDNFC_HWVER_MRA1_0 (0x01U) /* ChipVersion MRA1.0 */
-#define PHDNLDNFC_HWVER_MRA1_1 (0x02U) /* ChipVersion MRA1.1 */
-#define PHDNLDNFC_HWVER_MRA2_0 (0x03U) /* ChipVersion MRA2.0 */
-#define PHDNLDNFC_HWVER_MRA2_1 (0x04U) /* ChipVersion MRA2.1 */
-#define PHDNLDNFC_HWVER_MRA2_2 (0x05U) /* ChipVersion MRA2.2 */
-
-/* PN548AD ChipVersion MRA1.0 */
-#define PHDNLDNFC_HWVER_PN548AD_MRA1_0 (0x08U)
-
-/* PN551 ChipVersion MRA1.0 */
-#define PHDNLDNFC_HWVER_PN551_MRA1_0 (0x08U)
-/* PN553-NCI1.0 ChipVersion MRA1.0 */
-#define PHDNLDNFC_HWVER_PN553_MRA1_0 (0x0BU)
-/* PN553 A0 -> 0x40 hardware version
- PN553 B0 -> 0x41
- PN80T A0 -> 0x50
- PN80T B0 -> 0x51 */
-#define PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED (0x40U)
-/*
- * Enum definition contains Download Life Cycle States
- */
-typedef enum phDnldNfc_LC {
- phDnldNfc_LCCreat = 11, /* Life Cycle Creation*/
- phDnldNfc_LCInit = 13, /* Life Cycle Initializing */
- phDnldNfc_LCOper = 17, /* Life Cycle Operational */
- phDnldNfc_LCTerm = 19 /* Life Cycle Termination */
-} phDnldNfc_LC_t;
-
-/*
- * Enum definition contains Clk Source Options for Force command request
- */
-typedef enum phDnldNfc_ClkSrc {
- phDnldNfc_ClkSrcXtal = 1U, /* Crystal */
- phDnldNfc_ClkSrcPLL = 2U, /* PLL output */
- phDnldNfc_ClkSrcPad = 3U /* Directly use clk on CLK_IN Pad */
-} phDnldNfc_ClkSrc_t;
-
-/*
- * Enum definition contains Clk Frequency value for Force command request
- */
-typedef enum phDnldNfc_ClkFreq {
- phDnldNfc_ClkFreq_13Mhz = 0U, /* 13Mhz Clk Frequency */
- phDnldNfc_ClkFreq_19_2Mhz = 1U, /* 19.2Mhz Clk Frequency */
- phDnldNfc_ClkFreq_24Mhz = 2U, /* 24Mhz Clk Frequency */
- phDnldNfc_ClkFreq_26Mhz = 3U, /* 26Mhz Clk Frequency */
- phDnldNfc_ClkFreq_38_4Mhz = 4U, /* 38.4Mhz Clk Frequency */
- phDnldNfc_ClkFreq_52Mhz = 5U /* 52Mhz Clk Frequency */
-} phDnldNfc_ClkFreq_t;
-
-/*
- * Struct contains buffer where user payload shall be stored
- */
-typedef struct phDnldNfc_Buff {
- uint8_t* pBuff; /*pointer to the buffer where user payload shall be stored*/
- uint16_t wLen; /*Buffer length*/
-} phDnldNfc_Buff_t, *pphDnldNfc_Buff_t; /* pointer to #phDnldNfc_Buff_t */
-
-/*
-*********************** Function Prototype Declaration *************************
-*/
-
-extern NFCSTATUS phDnldNfc_Reset(pphDnldNfc_RspCb_t pNotify, void* pContext);
-extern NFCSTATUS phDnldNfc_GetVersion(pphDnldNfc_Buff_t pVersionInfo,
- pphDnldNfc_RspCb_t pNotify,
- void* pContext);
-extern NFCSTATUS phDnldNfc_CheckIntegrity(uint8_t bChipVer,
- pphDnldNfc_Buff_t pCRCData,
- pphDnldNfc_RspCb_t pNotify,
- void* pContext);
-extern NFCSTATUS phDnldNfc_GetSessionState(pphDnldNfc_Buff_t pSession,
- pphDnldNfc_RspCb_t pNotify,
- void* pContext);
-extern NFCSTATUS phDnldNfc_Force(pphDnldNfc_Buff_t pInputs,
- pphDnldNfc_RspCb_t pNotify, void* pContext);
-extern NFCSTATUS phDnldNfc_Read(pphDnldNfc_Buff_t pData, uint32_t dwRdAddr,
- pphDnldNfc_RspCb_t pNotify, void* pContext);
-extern NFCSTATUS phDnldNfc_ReadLog(pphDnldNfc_Buff_t pData,
- pphDnldNfc_RspCb_t pNotify, void* pContext);
-extern NFCSTATUS phDnldNfc_Write(bool_t bRecoverSeq, pphDnldNfc_Buff_t pData,
- pphDnldNfc_RspCb_t pNotify, void* pContext);
-extern NFCSTATUS phDnldNfc_Log(pphDnldNfc_Buff_t pData,
- pphDnldNfc_RspCb_t pNotify, void* pContext);
-extern void phDnldNfc_SetHwDevHandle(void);
-void phDnldNfc_ReSetHwDevHandle(void);
-extern NFCSTATUS phDnldNfc_ReadMem(void* pHwRef, pphDnldNfc_RspCb_t pNotify,
- void* pContext);
-extern NFCSTATUS phDnldNfc_RawReq(pphDnldNfc_Buff_t pFrameData,
- pphDnldNfc_Buff_t pRspData,
- pphDnldNfc_RspCb_t pNotify, void* pContext);
-extern NFCSTATUS phDnldNfc_InitImgInfo(void);
-extern NFCSTATUS phDnldNfc_LoadRecInfo(void);
-extern NFCSTATUS phDnldNfc_LoadPKInfo(void);
-extern void phDnldNfc_CloseFwLibHandle(void);
-extern NFCSTATUS phDnldNfc_LoadFW(const char* pathName, uint8_t** pImgInfo,
- uint16_t* pImgInfoLen);
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
-extern NFCSTATUS phDnldNfc_LoadRecoveryFW(const char* pathName,
- uint8_t** pImgInfo,
- uint16_t* pImgInfoLen);
-#endif
-extern NFCSTATUS phDnldNfc_UnloadFW(void);
-#endif /* PHDNLDNFC_H */
diff --git a/halimpl/pn54x/dnld/phDnldNfc_Cmd.h b/halimpl/pn54x/dnld/phDnldNfc_Cmd.h
deleted file mode 100644
index 31992f6..0000000
--- a/halimpl/pn54x/dnld/phDnldNfc_Cmd.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * Firmware Download command values
- */
-
-#ifndef PHDNLDNFC_CMD_H
-#define PHDNLDNFC_CMD_H
-
-#include <phNfcStatus.h>
-
-/*
- * Enum definition contains Firmware Download Command Ids
- */
-typedef enum phDnldNfc_CmdId {
- PH_DL_CMD_NONE = 0x00, /* Invalid Cmd */
- PH_DL_CMD_RESET = 0xF0, /* Reset */
- PH_DL_CMD_GETVERSION = 0xF1, /* Get Version */
- PH_DL_CMD_CHECKINTEGRITY = 0xE0, /* Check Integrity */
- PH_DL_CMD_WRITE = 0xC0, /* Write */
- PH_DL_CMD_READ = 0xA2, /* Read */
- PH_DL_CMD_LOG = 0xA7, /* Log */
- PH_DL_CMD_FORCE = 0xD0, /* Force */
- PH_DL_CMD_GETSESSIONSTATE = 0xF2 /* Get Session State */
-} phDnldNfc_CmdId_t;
-
-#endif /* PHDNLDNFC_CMD_H */
diff --git a/halimpl/pn54x/dnld/phDnldNfc_Internal.c b/halimpl/pn54x/dnld/phDnldNfc_Internal.c
deleted file mode 100644
index 2a66af1..0000000
--- a/halimpl/pn54x/dnld/phDnldNfc_Internal.c
+++ /dev/null
@@ -1,1215 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * Internal Download Management routines
- * Download Component
- */
-
-#include <phDnldNfc_Internal.h>
-#include <phDnldNfc_Utils.h>
-#include <phNxpLog.h>
-#include <phNxpNciHal_utils.h>
-#include <phTmlNfc.h>
-
-/* Minimum length of payload including 1 byte CmdId */
-#define PHDNLDNFC_MIN_PLD_LEN (0x04U)
-
-/* Offset of Length byte within the frame */
-#define PHDNLDNFC_FRAME_HDR_OFFSET (0x00)
-/* Offset of FrameId within the frame */
-#define PHDNLDNFC_FRAMEID_OFFSET (PHDNLDNFC_FRAME_HDR_LEN)
-/* Offset of status byte within the frame */
-#define PHDNLDNFC_FRAMESTATUS_OFFSET PHDNLDNFC_FRAMEID_OFFSET
-/* Offset within frame where payload starts*/
-#define PHDNLDNFC_PLD_OFFSET (PHDNLDNFC_MIN_PLD_LEN - 1)
-
-#define PHDNLDNFC_FRAME_RDDATA_OFFSET \
- ((PHDNLDNFC_FRAME_HDR_LEN) + \
- (PHDNLDNFC_MIN_PLD_LEN)) /* recvd frame offset where data starts */
-
-/* Size of first secure write frame Signature */
-#define PHDNLDNFC_FRAME_SIGNATURE_SIZE (0xC0U)
-/* Size of first secure write frame payload */
-#define PHDNLDNFC_FIRST_FRAME_PLD_SIZE (0xE4U)
-
-/* Status response for first fragmented write frame */
-#define PHDNLDNFC_FIRST_FRAGFRAME_RESP (0x2DU)
-/* Status response for subsequent fragmented write frame */
-#define PHDNLDNFC_NEXT_FRAGFRAME_RESP (0x2EU)
-
-#define PHDNLDNFC_SET_HDR_FRAGBIT(n) \
- ((n) | (1 << 10)) /* Header chunk bit set macro */
-#define PHDNLDNFC_CLR_HDR_FRAGBIT(n) \
- ((n) & ~(1U << 10)) /* Header chunk bit clear macro */
-#define PHDNLDNFC_CHK_HDR_FRAGBIT(n) \
- ((n)&0x04) /* macro to check if frag bit is set in Hdr */
-
-/* Timeout value to wait for response from NFCC */
-#define PHDNLDNFC_RSP_TIMEOUT (2500)
-/* Timeout value to wait before resending the last frame */
-#define PHDNLDNFC_RETRY_FRAME_WRITE (50)
-
-/* size of EEPROM user data length */
-#define PHDNLDNFC_USERDATA_EEPROM_LENSIZE (0x02U)
-/* size of EEPROM offset */
-#define PHDNLDNFC_USERDATA_EEPROM_OFFSIZE (0x02U)
-
-#ifdef NXP_PN547C1_DOWNLOAD
-/* EEPROM offset and length value for PN547C1 */
-/* 16 bits offset indicating user data area start location */
-#define PHDNLDNFC_USERDATA_EEPROM_OFFSET (0x003CU)
-/* 16 bits length of user data area */
-#define PHDNLDNFC_USERDATA_EEPROM_LEN (0x0DC0U)
-#else
-
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
-/* EEPROM offset and length value for PN548AD */
-/* 16 bits offset indicating user data area start location */
-#define PHDNLDNFC_USERDATA_EEPROM_OFFSET (0x02BCU)
-/* 16 bits length of user data area */
-#define PHDNLDNFC_USERDATA_EEPROM_LEN (0x0C00U)
-#elif (NFC_NXP_CHIP_TYPE == PN551)
-/* EEPROM offset and length value for PN551 */
-/* 16 bits offset indicating user data area start location */
-#define PHDNLDNFC_USERDATA_EEPROM_OFFSET (0x02BCU)
-/* 16 bits length of user data area */
-#define PHDNLDNFC_USERDATA_EEPROM_LEN (0x0C00U)
-#else
-/* EEPROM offset and length value for PN547C2 */
-/* 16 bits offset indicating user data area start location */
-#define PHDNLDNFC_USERDATA_EEPROM_OFFSET (0x023CU)
-/* 16 bits length of user data area */
-#define PHDNLDNFC_USERDATA_EEPROM_LEN (0x0C80U)
-#endif
-
-#endif
-#define PH_LIBNFC_VEN_RESET_ON_DOWNLOAD_TIMEOUT (1)
-
-/* Function prototype declarations */
-static void phDnldNfc_ProcessSeqState(void* pContext,
- phTmlNfc_TransactInfo_t* pInfo);
-static void phDnldNfc_ProcessRWSeqState(void* pContext,
- phTmlNfc_TransactInfo_t* pInfo);
-static NFCSTATUS phDnldNfc_ProcessFrame(void* pContext,
- phTmlNfc_TransactInfo_t* pInfo);
-static NFCSTATUS phDnldNfc_ProcessRecvInfo(void* pContext,
- phTmlNfc_TransactInfo_t* pInfo);
-static NFCSTATUS phDnldNfc_BuildFramePkt(pphDnldNfc_DlContext_t pDlContext);
-static NFCSTATUS phDnldNfc_CreateFramePld(pphDnldNfc_DlContext_t pDlContext);
-static NFCSTATUS phDnldNfc_SetupResendTimer(pphDnldNfc_DlContext_t pDlContext);
-static NFCSTATUS phDnldNfc_UpdateRsp(pphDnldNfc_DlContext_t pDlContext,
- phTmlNfc_TransactInfo_t* pInfo,
- uint16_t wPldLen);
-static void phDnldNfc_RspTimeOutCb(uint32_t TimerId, void* pContext);
-static void phDnldNfc_ResendTimeOutCb(uint32_t TimerId, void* pContext);
-
-/*
-*************************** Function Definitions ***************************
-*/
-
-/*******************************************************************************
-**
-** Function phDnldNfc_CmdHandler
-**
-** Description Download Command Handler Mechanism
-** - holds the sub states for each command processing
-** - coordinates with TML download thread to complete a
-** download command request
-** - calls the user callback on completion of a cmd
-**
-** Parameters pContext - pointer to the download context structure
-** TrigEvent - event requested by user
-**
-** Returns NFC status:
-** NFCSTATUS_PENDING - download request sent to NFCC
-** successfully,response pending
-** NFCSTATUS_BUSY - handler is busy processing a download
-** request
-** NFCSTATUS_INVALID_PARAMETER - one or more of the supplied
-** parameters could not be
-** interpreted properly
-** Other errors
-**
-*******************************************************************************/
-NFCSTATUS phDnldNfc_CmdHandler(void* pContext, phDnldNfc_Event_t TrigEvent) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- pphDnldNfc_DlContext_t pDlCtxt = (pphDnldNfc_DlContext_t)pContext;
-
- if (NULL == pDlCtxt) {
- NXPLOG_FWDNLD_E("Invalid Input Parameter!!");
- status = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- switch (TrigEvent) {
- case phDnldNfc_EventReset:
- case phDnldNfc_EventGetVer:
- case phDnldNfc_EventIntegChk:
- case phDnldNfc_EventGetSesnSt:
- case phDnldNfc_EventRaw: {
- if (phDnldNfc_EventInvalid == (pDlCtxt->tCurrEvent)) {
- NXPLOG_FWDNLD_D("Processing Normal Sequence..");
- pDlCtxt->tCurrEvent = TrigEvent;
- pDlCtxt->tDnldInProgress = phDnldNfc_TransitionBusy;
-
- phDnldNfc_ProcessSeqState(pDlCtxt, NULL);
-
- status = pDlCtxt->wCmdSendStatus;
- } else {
- NXPLOG_FWDNLD_E("Prev Norml Sequence not completed/restored!!");
- status = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- }
- break;
- }
- case phDnldNfc_EventWrite:
- case phDnldNfc_EventRead:
- case phDnldNfc_EventLog:
- case phDnldNfc_EventForce: {
- if (phDnldNfc_EventInvalid == (pDlCtxt->tCurrEvent)) {
- NXPLOG_FWDNLD_D("Processing R/W Sequence..");
- pDlCtxt->tCurrEvent = TrigEvent;
- pDlCtxt->tDnldInProgress = phDnldNfc_TransitionBusy;
-
- phDnldNfc_ProcessRWSeqState(pDlCtxt, NULL);
-
- status = pDlCtxt->wCmdSendStatus;
- } else {
- NXPLOG_FWDNLD_E("Prev R/W Sequence not completed/restored!!");
- status = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- }
- break;
- }
- default: {
- /* Unknown Event */
- NXPLOG_FWDNLD_E("Unknown Event Parameter!!");
- status = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- break;
- }
- }
- }
-
- return status;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_ProcessSeqState
-**
-** Description Processes all cmd/resp sequences except read & write
-**
-** Parameters pContext - pointer to the download context structure
-** pInfo - pointer to the Transaction buffer updated by TML
-** Thread
-**
-** Returns None
-**
-*******************************************************************************/
-static void phDnldNfc_ProcessSeqState(void* pContext,
- phTmlNfc_TransactInfo_t* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- NFCSTATUS wIntStatus;
- uint32_t TimerId;
- pphDnldNfc_DlContext_t pDlCtxt = (pphDnldNfc_DlContext_t)pContext;
-
- if (NULL == pDlCtxt) {
- NXPLOG_FWDNLD_E("Invalid Input Parameter!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- switch (pDlCtxt->tCurrState) {
- case phDnldNfc_StateInit: {
- NXPLOG_FWDNLD_D("Initializing Sequence..");
-
- if (0 == (pDlCtxt->TimerInfo.dwRspTimerId)) {
- TimerId = phOsalNfc_Timer_Create();
-
- if (0 == TimerId) {
- NXPLOG_FWDNLD_W("Response Timer Create failed!!");
- wStatus = NFCSTATUS_INSUFFICIENT_RESOURCES;
- pDlCtxt->wCmdSendStatus = wStatus;
- break;
- } else {
- NXPLOG_FWDNLD_D("Response Timer Created Successfully");
- (pDlCtxt->TimerInfo.dwRspTimerId) = TimerId;
- (pDlCtxt->TimerInfo.TimerStatus) = 0;
- (pDlCtxt->TimerInfo.wTimerExpStatus) = 0;
- }
- }
- pDlCtxt->tCurrState = phDnldNfc_StateSend;
- }
- case phDnldNfc_StateSend: {
- wStatus = phDnldNfc_BuildFramePkt(pDlCtxt);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- pDlCtxt->tCurrState = phDnldNfc_StateRecv;
-
- wStatus = phTmlNfc_Write(
- (pDlCtxt->tCmdRspFrameInfo.aFrameBuff),
- (uint16_t)(pDlCtxt->tCmdRspFrameInfo.dwSendlength),
- (pphTmlNfc_TransactCompletionCb_t)&phDnldNfc_ProcessSeqState,
- pDlCtxt);
- }
- pDlCtxt->wCmdSendStatus = wStatus;
- break;
- }
- case phDnldNfc_StateRecv: {
- wStatus = phDnldNfc_ProcessRecvInfo(pContext, pInfo);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- wStatus = phOsalNfc_Timer_Start((pDlCtxt->TimerInfo.dwRspTimerId),
- PHDNLDNFC_RSP_TIMEOUT,
- &phDnldNfc_RspTimeOutCb, pDlCtxt);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- NXPLOG_FWDNLD_D("Response timer started");
- pDlCtxt->TimerInfo.TimerStatus = 1;
- pDlCtxt->tCurrState = phDnldNfc_StateTimer;
- } else {
- NXPLOG_FWDNLD_W("Response timer not started");
- pDlCtxt->tCurrState = phDnldNfc_StateResponse;
- }
- /* Call TML_Read function and register the call back function */
- wStatus = phTmlNfc_Read(
- pDlCtxt->tCmdRspFrameInfo.aFrameBuff,
- (uint16_t)PHDNLDNFC_CMDRESP_MAX_BUFF_SIZE,
- (pphTmlNfc_TransactCompletionCb_t)&phDnldNfc_ProcessSeqState,
- (void*)pDlCtxt);
-
- /* set read status to pDlCtxt->wCmdSendStatus to enable callback */
- pDlCtxt->wCmdSendStatus = wStatus;
- break;
- } else {
- /* Setting TimerExpStatus below to avoid frame processing in response
- * state */
- (pDlCtxt->TimerInfo.wTimerExpStatus) = NFCSTATUS_RF_TIMEOUT;
- pDlCtxt->tCurrState = phDnldNfc_StateResponse;
- }
- }
- case phDnldNfc_StateTimer: {
- if (1 == (pDlCtxt->TimerInfo.TimerStatus)) /*Is Timer Running*/
- {
- /*Stop Timer*/
- (void)phOsalNfc_Timer_Stop(pDlCtxt->TimerInfo.dwRspTimerId);
- (pDlCtxt->TimerInfo.TimerStatus) = 0; /*timer stopped*/
- }
- pDlCtxt->tCurrState = phDnldNfc_StateResponse;
- }
- case phDnldNfc_StateResponse: {
- if (NFCSTATUS_RF_TIMEOUT != (pDlCtxt->TimerInfo.wTimerExpStatus)) {
- /* Process response */
- wStatus = phDnldNfc_ProcessFrame(pContext, pInfo);
- } else {
- if (phDnldNfc_EventReset != pDlCtxt->tCurrEvent) {
- wStatus = (pDlCtxt->TimerInfo.wTimerExpStatus);
- } else {
- wStatus = NFCSTATUS_SUCCESS;
- }
- (pDlCtxt->TimerInfo.wTimerExpStatus) = 0;
- }
-
- /* Abort TML read operation which is always kept open */
- wIntStatus = phTmlNfc_ReadAbort();
-
- if (NFCSTATUS_SUCCESS != wIntStatus) {
- /* TODO:-Action to take in this case:-Tml read abort failed!? */
- NXPLOG_FWDNLD_W("Tml Read Abort failed!!");
- }
-
- pDlCtxt->tCurrEvent = phDnldNfc_EventInvalid;
- pDlCtxt->tDnldInProgress = phDnldNfc_TransitionIdle;
- pDlCtxt->tCurrState = phDnldNfc_StateInit;
-
- /* Delete the timer & reset timer primitives in context */
- (void)phOsalNfc_Timer_Delete(pDlCtxt->TimerInfo.dwRspTimerId);
- (pDlCtxt->TimerInfo.dwRspTimerId) = 0;
- (pDlCtxt->TimerInfo.TimerStatus) = 0;
- (pDlCtxt->TimerInfo.wTimerExpStatus) = 0;
-
- if ((NULL != (pDlCtxt->UserCb)) && (NULL != (pDlCtxt->UserCtxt))) {
- pDlCtxt->UserCb((pDlCtxt->UserCtxt), wStatus,
- &(pDlCtxt->tRspBuffInfo));
- }
- break;
- }
- default: {
- pDlCtxt->tCurrEvent = phDnldNfc_EventInvalid;
- pDlCtxt->tDnldInProgress = phDnldNfc_TransitionIdle;
- break;
- }
- }
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_ProcessRWSeqState
-**
-** Description Processes read/write cmd/rsp sequence
-**
-** Parameters pContext - pointer to the download context structure
-** pInfo - pointer to the Transaction buffer updated by TML
-** Thread
-**
-** Returns None
-**
-*******************************************************************************/
-static void phDnldNfc_ProcessRWSeqState(void* pContext,
- phTmlNfc_TransactInfo_t* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- NFCSTATUS wIntStatus = wStatus;
- uint32_t TimerId;
- pphDnldNfc_DlContext_t pDlCtxt = (pphDnldNfc_DlContext_t)pContext;
-
- if (NULL == pDlCtxt) {
- NXPLOG_FWDNLD_E("Invalid Input Parameter!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- switch (pDlCtxt->tCurrState) {
- case phDnldNfc_StateInit: {
- if (0 == (pDlCtxt->TimerInfo.dwRspTimerId)) {
- TimerId = phOsalNfc_Timer_Create();
-
- if (0 == TimerId) {
- NXPLOG_FWDNLD_E("Response Timer Create failed!!");
- wStatus = NFCSTATUS_INSUFFICIENT_RESOURCES;
- } else {
- NXPLOG_FWDNLD_D("Response Timer Created Successfully");
- (pDlCtxt->TimerInfo.dwRspTimerId) = TimerId;
- (pDlCtxt->TimerInfo.TimerStatus) = 0;
- (pDlCtxt->TimerInfo.wTimerExpStatus) = 0;
- }
- }
- pDlCtxt->tCurrState = phDnldNfc_StateSend;
- }
- case phDnldNfc_StateSend: {
- if (pDlCtxt->bResendLastFrame == false) {
- wStatus = phDnldNfc_BuildFramePkt(pDlCtxt);
- } else {
- pDlCtxt->bResendLastFrame = false;
- }
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- pDlCtxt->tCurrState = phDnldNfc_StateRecv;
-
- wStatus = phTmlNfc_Write(
- (pDlCtxt->tCmdRspFrameInfo.aFrameBuff),
- (uint16_t)(pDlCtxt->tCmdRspFrameInfo.dwSendlength),
- (pphTmlNfc_TransactCompletionCb_t)&phDnldNfc_ProcessRWSeqState,
- pDlCtxt);
- }
- pDlCtxt->wCmdSendStatus = wStatus;
- break;
- }
- case phDnldNfc_StateRecv: {
- wStatus = phDnldNfc_ProcessRecvInfo(pContext, pInfo);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- /* processing For Pipelined write before calling timer below */
- wStatus = phOsalNfc_Timer_Start((pDlCtxt->TimerInfo.dwRspTimerId),
- PHDNLDNFC_RSP_TIMEOUT,
- &phDnldNfc_RspTimeOutCb, pDlCtxt);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- NXPLOG_FWDNLD_D("Response timer started");
- pDlCtxt->TimerInfo.TimerStatus = 1;
- pDlCtxt->tCurrState = phDnldNfc_StateTimer;
- } else {
- NXPLOG_FWDNLD_W("Response timer not started");
- pDlCtxt->tCurrState = phDnldNfc_StateResponse;
- /* Todo:- diagnostic in this case */
- }
- /* Call TML_Read function and register the call back function */
- wStatus = phTmlNfc_Read(
- pDlCtxt->tCmdRspFrameInfo.aFrameBuff,
- (uint16_t)PHDNLDNFC_CMDRESP_MAX_BUFF_SIZE,
- (pphTmlNfc_TransactCompletionCb_t)&phDnldNfc_ProcessRWSeqState,
- (void*)pDlCtxt);
-
- /* set read status to pDlCtxt->wCmdSendStatus to enable callback */
- pDlCtxt->wCmdSendStatus = wStatus;
- break;
- } else {
- /* Setting TimerExpStatus below to avoid frame processing in reponse
- * state */
- (pDlCtxt->TimerInfo.wTimerExpStatus) = NFCSTATUS_RF_TIMEOUT;
- pDlCtxt->tCurrState = phDnldNfc_StateResponse;
- }
- }
- case phDnldNfc_StateTimer: {
- if (1 == (pDlCtxt->TimerInfo.TimerStatus)) /*Is Timer Running*/
- {
- /* Stop Timer */
- (void)phOsalNfc_Timer_Stop(pDlCtxt->TimerInfo.dwRspTimerId);
- (pDlCtxt->TimerInfo.TimerStatus) = 0; /*timer stopped*/
- }
- pDlCtxt->tCurrState = phDnldNfc_StateResponse;
- }
- case phDnldNfc_StateResponse: {
- if (NFCSTATUS_RF_TIMEOUT != (pDlCtxt->TimerInfo.wTimerExpStatus)) {
- /* Process response */
- wStatus = phDnldNfc_ProcessFrame(pContext, pInfo);
-
- if (NFCSTATUS_BUSY == wStatus) {
- /* store the status for use in subsequent processing */
- wIntStatus = wStatus;
-
- /* setup the resend wait timer */
- wStatus = phDnldNfc_SetupResendTimer(pDlCtxt);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- /* restore the last mem_bsy status to avoid re-building frame
- * below */
- wStatus = wIntStatus;
- }
- }
- } else {
- wStatus = (pDlCtxt->TimerInfo.wTimerExpStatus);
- (pDlCtxt->TimerInfo.wTimerExpStatus) = 0;
- }
-
- if ((0 != (pDlCtxt->tRWInfo.wRemBytes)) &&
- (NFCSTATUS_SUCCESS == wStatus)) {
- /* Abort TML read operation which is always kept open */
- wIntStatus = phTmlNfc_ReadAbort();
-
- if (NFCSTATUS_SUCCESS != wIntStatus) {
- NXPLOG_FWDNLD_W("Tml read abort failed!");
- }
-
- wStatus = phDnldNfc_BuildFramePkt(pDlCtxt);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- pDlCtxt->tCurrState = phDnldNfc_StateRecv;
- wStatus = phTmlNfc_Write(
- (pDlCtxt->tCmdRspFrameInfo.aFrameBuff),
- (uint16_t)(pDlCtxt->tCmdRspFrameInfo.dwSendlength),
- (pphTmlNfc_TransactCompletionCb_t)&phDnldNfc_ProcessRWSeqState,
- pDlCtxt);
-
- /* TODO:- Verify here if TML_Write returned NFC_PENDING status &
- take appropriate
- action otherwise ?? */
- }
- } else if (NFCSTATUS_BUSY == wStatus) {
- /* No processing to be done,since resend wait timer should have
- * already been started */
- } else {
- (pDlCtxt->tRWInfo.bFramesSegmented) = false;
- /* Abort TML read operation which is always kept open */
- wIntStatus = phTmlNfc_ReadAbort();
-
- if (NFCSTATUS_SUCCESS != wIntStatus) {
- NXPLOG_FWDNLD_W("Tml read abort failed!");
- }
-
- pDlCtxt->tCurrEvent = phDnldNfc_EventInvalid;
- pDlCtxt->tDnldInProgress = phDnldNfc_TransitionIdle;
- pDlCtxt->tCurrState = phDnldNfc_StateInit;
- pDlCtxt->bResendLastFrame = false;
-
- /* Delete the timer & reset timer primitives in context */
- (void)phOsalNfc_Timer_Delete(pDlCtxt->TimerInfo.dwRspTimerId);
- (pDlCtxt->TimerInfo.dwRspTimerId) = 0;
- (pDlCtxt->TimerInfo.TimerStatus) = 0;
- (pDlCtxt->TimerInfo.wTimerExpStatus) = 0;
-
- if ((NULL != (pDlCtxt->UserCb)) && (NULL != (pDlCtxt->UserCtxt))) {
- pDlCtxt->UserCb((pDlCtxt->UserCtxt), wStatus,
- &(pDlCtxt->tRspBuffInfo));
- }
- }
- break;
- }
- default: {
- pDlCtxt->tCurrEvent = phDnldNfc_EventInvalid;
- pDlCtxt->tDnldInProgress = phDnldNfc_TransitionIdle;
- break;
- }
- }
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_BuildFramePkt
-**
-** Description Forms the frame packet
-**
-** Parameters pDlContext - pointer to the download context structure
-**
-** Returns NFC status
-**
-*******************************************************************************/
-static NFCSTATUS phDnldNfc_BuildFramePkt(pphDnldNfc_DlContext_t pDlContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- uint16_t wFrameLen = 0;
- uint16_t wCrcVal;
- uint8_t* pFrameByte;
-
- if (NULL == pDlContext) {
- NXPLOG_FWDNLD_E("Invalid Input Parameter!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if (phDnldNfc_FTWrite == (pDlContext->FrameInp.Type)) {
- if ((0 == (pDlContext->tUserData.wLen)) ||
- (NULL == (pDlContext->tUserData.pBuff))) {
- NXPLOG_FWDNLD_E("Invalid Input Parameter(s) for Write!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if ((pDlContext->tRWInfo.bFirstWrReq) == true) {
- (pDlContext->tRWInfo.wRemBytes) = (pDlContext->tUserData.wLen);
- (pDlContext->tRWInfo.wOffset) = 0;
- }
- }
- } else if (phDnldNfc_FTRead == (pDlContext->FrameInp.Type)) {
- if ((0 == (pDlContext->tRspBuffInfo.wLen)) ||
- (NULL == (pDlContext->tRspBuffInfo.pBuff))) {
- NXPLOG_FWDNLD_E("Invalid Input Parameter(s) for Read!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if ((pDlContext->tRWInfo.bFramesSegmented) == false) {
- NXPLOG_FWDNLD_D("Verifying RspBuffInfo for Read Request..");
- wFrameLen = (pDlContext->tRspBuffInfo.wLen) + PHDNLDNFC_MIN_PLD_LEN;
-
- (pDlContext->tRWInfo.wRWPldSize) =
- (PHDNLDNFC_CMDRESP_MAX_PLD_SIZE - PHDNLDNFC_MIN_PLD_LEN);
- (pDlContext->tRWInfo.wRemBytes) = (pDlContext->tRspBuffInfo.wLen);
- (pDlContext->tRWInfo.dwAddr) = (pDlContext->FrameInp.dwAddr);
- (pDlContext->tRWInfo.wOffset) = 0;
- (pDlContext->tRWInfo.wBytesRead) = 0;
-
- if (PHDNLDNFC_CMDRESP_MAX_PLD_SIZE < wFrameLen) {
- (pDlContext->tRWInfo.bFramesSegmented) = true;
- }
- }
- }
- } else if (phDnldNfc_FTLog == (pDlContext->FrameInp.Type)) {
- if ((0 == (pDlContext->tUserData.wLen)) ||
- (NULL == (pDlContext->tUserData.pBuff))) {
- NXPLOG_FWDNLD_E("Invalid Input Parameter(s) for Log!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- }
- } else {
- }
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- wStatus = phDnldNfc_CreateFramePld(pDlContext);
- }
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- wFrameLen = 0;
- wFrameLen = (pDlContext->tCmdRspFrameInfo.dwSendlength);
-
- if (phDnldNfc_FTRaw != (pDlContext->FrameInp.Type)) {
- if (phDnldNfc_FTWrite != (pDlContext->FrameInp.Type)) {
- pFrameByte = (uint8_t*)&wFrameLen;
-
- pDlContext->tCmdRspFrameInfo.aFrameBuff[PHDNLDNFC_FRAME_HDR_OFFSET] =
- pFrameByte[1];
- pDlContext->tCmdRspFrameInfo
- .aFrameBuff[PHDNLDNFC_FRAME_HDR_OFFSET + 1] = pFrameByte[0];
-
- NXPLOG_FWDNLD_D("Inserting FrameId ..");
- pDlContext->tCmdRspFrameInfo.aFrameBuff[PHDNLDNFC_FRAMEID_OFFSET] =
- (pDlContext->tCmdId);
-
- wFrameLen += PHDNLDNFC_FRAME_HDR_LEN;
- } else {
- if (0 != (pDlContext->tRWInfo.wRWPldSize)) {
- if ((pDlContext->tRWInfo.bFramesSegmented) == true) {
- /* Turning ON the Fragmentation bit in FrameLen */
- wFrameLen = PHDNLDNFC_SET_HDR_FRAGBIT(wFrameLen);
- }
-
- pFrameByte = (uint8_t*)&wFrameLen;
-
- pDlContext->tCmdRspFrameInfo
- .aFrameBuff[PHDNLDNFC_FRAME_HDR_OFFSET] = pFrameByte[1];
- pDlContext->tCmdRspFrameInfo
- .aFrameBuff[PHDNLDNFC_FRAME_HDR_OFFSET + 1] = pFrameByte[0];
-
- /* To ensure we have no frag bit set for crc calculation */
- wFrameLen = PHDNLDNFC_CLR_HDR_FRAGBIT(wFrameLen);
-
- wFrameLen += PHDNLDNFC_FRAME_HDR_LEN;
- }
- }
- if (wFrameLen > PHDNLDNFC_CMDRESP_MAX_BUFF_SIZE) {
- NXPLOG_FWDNLD_D("wFrameLen exceeds the limit");
- return NFCSTATUS_FAILED;
- }
- /* calculate CRC16 */
- wCrcVal = phDnldNfc_CalcCrc16((pDlContext->tCmdRspFrameInfo.aFrameBuff),
- wFrameLen);
-
- pFrameByte = (uint8_t*)&wCrcVal;
-
- /* Insert the computed Crc value */
- pDlContext->tCmdRspFrameInfo.aFrameBuff[wFrameLen] = pFrameByte[1];
- pDlContext->tCmdRspFrameInfo.aFrameBuff[wFrameLen + 1] = pFrameByte[0];
-
- wFrameLen += PHDNLDNFC_FRAME_CRC_LEN;
- }
-
- (pDlContext->tCmdRspFrameInfo.dwSendlength) = wFrameLen;
- NXPLOG_FWDNLD_D("Frame created successfully");
- } else {
- NXPLOG_FWDNLD_E("Frame creation failed!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_CreateFramePld
-**
-** Description Forms the frame payload
-**
-** Parameters pDlContext - pointer to the download context structure
-**
-** Returns NFC status
-**
-*******************************************************************************/
-static NFCSTATUS phDnldNfc_CreateFramePld(pphDnldNfc_DlContext_t pDlContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- uint16_t wBuffIdx = 0;
- uint16_t wChkIntgVal = 0;
- uint16_t wFrameLen = 0;
-
- if (NULL == pDlContext) {
- NXPLOG_FWDNLD_E("Invalid Input Parameter!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- memset((pDlContext->tCmdRspFrameInfo.aFrameBuff), 0,
- PHDNLDNFC_CMDRESP_MAX_BUFF_SIZE);
- (pDlContext->tCmdRspFrameInfo.dwSendlength) = 0;
-
- if (phDnldNfc_FTNone == (pDlContext->FrameInp.Type)) {
- (pDlContext->tCmdRspFrameInfo.dwSendlength) += PHDNLDNFC_MIN_PLD_LEN;
- } else if (phDnldNfc_ChkIntg == (pDlContext->FrameInp.Type)) {
- (pDlContext->tCmdRspFrameInfo.dwSendlength) += PHDNLDNFC_MIN_PLD_LEN;
-
- wChkIntgVal = PHDNLDNFC_USERDATA_EEPROM_OFFSET;
- memcpy(&(pDlContext->tCmdRspFrameInfo
- .aFrameBuff[PHDNLDNFC_FRAME_RDDATA_OFFSET]),
- &wChkIntgVal, sizeof(wChkIntgVal));
-
- wChkIntgVal = PHDNLDNFC_USERDATA_EEPROM_LEN;
- memcpy(&(pDlContext->tCmdRspFrameInfo
- .aFrameBuff[PHDNLDNFC_FRAME_RDDATA_OFFSET +
- PHDNLDNFC_USERDATA_EEPROM_OFFSIZE]),
- &wChkIntgVal, sizeof(wChkIntgVal));
-
- (pDlContext->tCmdRspFrameInfo.dwSendlength) +=
- PHDNLDNFC_USERDATA_EEPROM_LENSIZE;
- (pDlContext->tCmdRspFrameInfo.dwSendlength) +=
- PHDNLDNFC_USERDATA_EEPROM_OFFSIZE;
- } else if (phDnldNfc_FTWrite == (pDlContext->FrameInp.Type)) {
- wBuffIdx = (pDlContext->tRWInfo.wOffset);
-
- if ((pDlContext->tRWInfo.bFramesSegmented) == false) {
- wFrameLen = (pDlContext->tUserData.pBuff[wBuffIdx]);
- wFrameLen <<= 8;
- wFrameLen |= (pDlContext->tUserData.pBuff[wBuffIdx + 1]);
-
- (pDlContext->tRWInfo.wRWPldSize) = wFrameLen;
- }
-
- if ((pDlContext->tRWInfo.wRWPldSize) > PHDNLDNFC_CMDRESP_MAX_PLD_SIZE) {
- if ((pDlContext->tRWInfo.bFirstChunkResp) == false) {
- (pDlContext->tRWInfo.wRemChunkBytes) = wFrameLen;
- (pDlContext->tRWInfo.wOffset) += PHDNLDNFC_FRAME_HDR_LEN;
- wBuffIdx = (pDlContext->tRWInfo.wOffset);
- }
-
- if (PHDNLDNFC_CMDRESP_MAX_PLD_SIZE <
- (pDlContext->tRWInfo.wRemChunkBytes)) {
- (pDlContext->tRWInfo.wBytesToSendRecv) =
- PHDNLDNFC_CMDRESP_MAX_PLD_SIZE;
- (pDlContext->tRWInfo.bFramesSegmented) = true;
- } else {
- (pDlContext->tRWInfo.wBytesToSendRecv) =
- (pDlContext->tRWInfo.wRemChunkBytes);
- (pDlContext->tRWInfo.bFramesSegmented) = false;
- }
-
- memcpy(&(pDlContext->tCmdRspFrameInfo
- .aFrameBuff[PHDNLDNFC_FRAMEID_OFFSET]),
- &(pDlContext->tUserData.pBuff[wBuffIdx]),
- (pDlContext->tRWInfo.wBytesToSendRecv));
- } else {
- (pDlContext->tRWInfo.wRWPldSize) = 0;
- (pDlContext->tRWInfo.wBytesToSendRecv) =
- (wFrameLen + PHDNLDNFC_FRAME_HDR_LEN);
-
- memcpy(&(pDlContext->tCmdRspFrameInfo.aFrameBuff[0]),
- &(pDlContext->tUserData.pBuff[wBuffIdx]),
- (pDlContext->tRWInfo.wBytesToSendRecv));
- }
- (pDlContext->tCmdRspFrameInfo.dwSendlength) +=
- (pDlContext->tRWInfo.wBytesToSendRecv);
- } else if (phDnldNfc_FTRead == (pDlContext->FrameInp.Type)) {
- (pDlContext->tRWInfo.wBytesToSendRecv) =
- ((pDlContext->tRWInfo.wRemBytes) > (pDlContext->tRWInfo.wRWPldSize))
- ? (pDlContext->tRWInfo.wRWPldSize)
- : (pDlContext->tRWInfo.wRemBytes);
-
- wBuffIdx = (PHDNLDNFC_PLD_OFFSET +
- ((sizeof(pDlContext->tRWInfo.wBytesToSendRecv)) %
- PHDNLDNFC_MIN_PLD_LEN) -
- 1);
-
- memcpy(&(pDlContext->tCmdRspFrameInfo.aFrameBuff[wBuffIdx]),
- &(pDlContext->tRWInfo.wBytesToSendRecv),
- (sizeof(pDlContext->tRWInfo.wBytesToSendRecv)));
-
- wBuffIdx += sizeof(pDlContext->tRWInfo.wBytesToSendRecv);
-
- memcpy(&(pDlContext->tCmdRspFrameInfo.aFrameBuff[wBuffIdx]),
- &(pDlContext->tRWInfo.dwAddr), sizeof(pDlContext->tRWInfo.dwAddr));
-
- (pDlContext->tCmdRspFrameInfo.dwSendlength) +=
- (PHDNLDNFC_MIN_PLD_LEN + (sizeof(pDlContext->tRWInfo.dwAddr)));
- } else if (phDnldNfc_FTLog == (pDlContext->FrameInp.Type)) {
- (pDlContext->tCmdRspFrameInfo.dwSendlength) += PHDNLDNFC_MIN_PLD_LEN;
-
- wBuffIdx = (PHDNLDNFC_MIN_PLD_LEN + PHDNLDNFC_FRAME_HDR_LEN);
-
- memcpy(&(pDlContext->tCmdRspFrameInfo.aFrameBuff[wBuffIdx]),
- (pDlContext->tUserData.pBuff), (pDlContext->tUserData.wLen));
-
- (pDlContext->tCmdRspFrameInfo.dwSendlength) +=
- (pDlContext->tUserData.wLen);
- } else if (phDnldNfc_FTForce == (pDlContext->FrameInp.Type)) {
- (pDlContext->tCmdRspFrameInfo.dwSendlength) += PHDNLDNFC_MIN_PLD_LEN;
-
- wBuffIdx = PHDNLDNFC_PLD_OFFSET;
-
- memcpy(&(pDlContext->tCmdRspFrameInfo.aFrameBuff[wBuffIdx]),
- (pDlContext->tUserData.pBuff), (pDlContext->tUserData.wLen));
- } else if (phDnldNfc_FTRaw == (pDlContext->FrameInp.Type)) {
- if ((0 == (pDlContext->tUserData.wLen)) ||
- (NULL == (pDlContext->tUserData.pBuff))) {
- NXPLOG_FWDNLD_E("Invalid Input Parameter(s) for Raw Request!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- memcpy(&(pDlContext->tCmdRspFrameInfo.aFrameBuff[wBuffIdx]),
- (pDlContext->tUserData.pBuff), (pDlContext->tUserData.wLen));
-
- (pDlContext->tCmdRspFrameInfo.dwSendlength) +=
- (pDlContext->tUserData.wLen);
- }
- } else {
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_ProcessFrame
-**
-** Description Processes response frame received
-**
-** Parameters pContext - pointer to the download context structure
-** pInfo - pointer to the Transaction buffer updated by TML
-** Thread
-**
-** Returns NFCSTATUS_SUCCESS - parameters successfully validated
-** NFCSTATUS_INVALID_PARAMETER - invalid parameters
-**
-*******************************************************************************/
-static NFCSTATUS phDnldNfc_ProcessFrame(void* pContext,
- phTmlNfc_TransactInfo_t* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- uint16_t wCrcVal, wRecvdCrc, wRecvdLen, wPldLen;
- pphDnldNfc_DlContext_t pDlCtxt = (pphDnldNfc_DlContext_t)pContext;
-
- if ((NULL == pDlCtxt) || (NULL == pInfo)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if ((PH_DL_STATUS_OK != pInfo->wStatus) || (0 == pInfo->wLength) ||
- (NULL == pInfo->pBuff)) {
- NXPLOG_FWDNLD_E("Dnld Cmd Request Failed!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- } else {
- if (phDnldNfc_FTRaw == (pDlCtxt->FrameInp.Type)) {
- if ((0 != (pDlCtxt->tRspBuffInfo.wLen)) &&
- (NULL != (pDlCtxt->tRspBuffInfo.pBuff))) {
- memcpy((pDlCtxt->tRspBuffInfo.pBuff), (pInfo->pBuff),
- (pInfo->wLength));
-
- (pDlCtxt->tRspBuffInfo.wLen) = (pInfo->wLength);
- } else {
- NXPLOG_FWDNLD_E("Cannot update Response buff with received data!!");
- }
- } else {
- /* calculate CRC16 */
- wCrcVal = phDnldNfc_CalcCrc16(
- (pInfo->pBuff), ((pInfo->wLength) - PHDNLDNFC_FRAME_CRC_LEN));
-
- wRecvdCrc = 0;
- wRecvdCrc = (((uint16_t)(pInfo->pBuff[(pInfo->wLength) - 2]) << 8U) |
- (pInfo->pBuff[(pInfo->wLength) - 1]));
-
- if (wRecvdCrc == wCrcVal) {
- wRecvdLen =
- (((uint16_t)(pInfo->pBuff[PHDNLDNFC_FRAME_HDR_OFFSET]) << 8U) |
- (pInfo->pBuff[PHDNLDNFC_FRAME_HDR_OFFSET + 1]));
-
- wPldLen = ((pInfo->wLength) -
- (PHDNLDNFC_FRAME_HDR_LEN + PHDNLDNFC_FRAME_CRC_LEN));
-
- if (wRecvdLen != wPldLen) {
- NXPLOG_FWDNLD_E("Invalid frame payload length received");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- } else {
- wStatus = phDnldNfc_UpdateRsp(pDlCtxt, pInfo, (wPldLen - 1));
- }
- } else {
- NXPLOG_FWDNLD_E("Invalid frame received");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- }
- }
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_ProcessRecvInfo
-**
-** Description Processes the response during the state phDnldNfc_StateRecv
-**
-** Parameters pContext - pointer to the download context structure
-** pInfo - pointer to the Transaction buffer updated by TML
-** Thread
-**
-** Returns NFCSTATUS_SUCCESS - parameters successfully validated
-** NFCSTATUS_INVALID_PARAMETER - invalid parameters
-**
-*******************************************************************************/
-static NFCSTATUS phDnldNfc_ProcessRecvInfo(void* pContext,
- phTmlNfc_TransactInfo_t* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
-
- if (NULL != pContext) {
- if (NULL == pInfo) {
- NXPLOG_FWDNLD_E("Invalid pInfo received from TML!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- } else {
- wStatus = PHNFCSTATUS(pInfo->wStatus);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- NXPLOG_FWDNLD_D("Send Success");
- } else {
- NXPLOG_FWDNLD_E("Tml Write error!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- }
- }
- } else {
- NXPLOG_FWDNLD_E("Invalid context received from TML!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_SetupResendTimer
-**
-** Description Sets up the timer for resending the previous write frame
-**
-** Parameters pDlContext - pointer to the download context structure
-**
-** Returns NFC status
-**
-*******************************************************************************/
-static NFCSTATUS phDnldNfc_SetupResendTimer(pphDnldNfc_DlContext_t pDlContext) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
-
- wStatus = phOsalNfc_Timer_Start((pDlContext->TimerInfo.dwRspTimerId),
- PHDNLDNFC_RETRY_FRAME_WRITE,
- &phDnldNfc_ResendTimeOutCb, pDlContext);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- NXPLOG_FWDNLD_D("Frame Resend wait timer started");
- (pDlContext->TimerInfo.TimerStatus) = 1;
- pDlContext->tCurrState = phDnldNfc_StateTimer;
- } else {
- NXPLOG_FWDNLD_W("Frame Resend wait timer not started");
- (pDlContext->TimerInfo.TimerStatus) = 0; /*timer stopped*/
- pDlContext->tCurrState = phDnldNfc_StateResponse;
- /* Todo:- diagnostic in this case */
- }
-
- return wStatus;
-}
-
-#if !defined(PH_LIBNFC_VEN_RESET_ON_DOWNLOAD_TIMEOUT)
-#error PH_LIBNFC_VEN_RESET_ON_DOWNLOAD_TIMEOUT has to be defined
-#endif
-
-/*******************************************************************************
-**
-** Function phDnldNfc_RspTimeOutCb
-**
-** Description Callback function in case of timer expiration
-**
-** Parameters TimerId - expired timer id
-** pContext - pointer to the download context structure
-**
-** Returns None
-**
-*******************************************************************************/
-static void phDnldNfc_RspTimeOutCb(uint32_t TimerId, void* pContext) {
- pphDnldNfc_DlContext_t pDlCtxt = (pphDnldNfc_DlContext_t)pContext;
-
- if (NULL != pDlCtxt) {
- UNUSED(TimerId);
-
- if (1 == pDlCtxt->TimerInfo.TimerStatus) {
- /* No response received and the timer expired */
- pDlCtxt->TimerInfo.TimerStatus = 0; /* Reset timer status flag */
-
- NXPLOG_FWDNLD_D("%x", pDlCtxt->tLastStatus);
-
-#if (PH_LIBNFC_VEN_RESET_ON_DOWNLOAD_TIMEOUT == TRUE)
- if (PH_DL_STATUS_SIGNATURE_ERROR == pDlCtxt->tLastStatus) {
- /* Do a VEN Reset of the chip. */
- NXPLOG_FWDNLD_E("Performing a VEN Reset");
- phTmlNfc_IoCtl(phTmlNfc_e_EnableNormalMode);
- phTmlNfc_IoCtl(phTmlNfc_e_EnableDownloadMode);
- NXPLOG_FWDNLD_E("VEN Reset Done");
- }
-#endif
-
- (pDlCtxt->TimerInfo.wTimerExpStatus) = NFCSTATUS_RF_TIMEOUT;
-
- if ((phDnldNfc_EventRead == pDlCtxt->tCurrEvent) ||
- (phDnldNfc_EventWrite == pDlCtxt->tCurrEvent)) {
- phDnldNfc_ProcessRWSeqState(pDlCtxt, NULL);
- } else {
- phDnldNfc_ProcessSeqState(pDlCtxt, NULL);
- }
- }
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_ResendTimeOutCb
-**
-** Description Callback function in case of Frame Resend Wait timer
-** expiration
-**
-** Parameters TimerId - expired timer id
-** pContext - pointer to the download context structure
-**
-** Returns None
-**
-*******************************************************************************/
-static void phDnldNfc_ResendTimeOutCb(uint32_t TimerId, void* pContext) {
- pphDnldNfc_DlContext_t pDlCtxt = (pphDnldNfc_DlContext_t)pContext;
-
- if (NULL != pDlCtxt) {
- UNUSED(TimerId);
-
- if (1 == pDlCtxt->TimerInfo.TimerStatus) {
- /* No response received and the timer expired */
- pDlCtxt->TimerInfo.TimerStatus = 0; /* Reset timer status flag */
-
- (pDlCtxt->TimerInfo.wTimerExpStatus) = 0;
-
- pDlCtxt->tCurrState = phDnldNfc_StateSend;
-
- /* set the flag to trigger last frame re-transmission */
- pDlCtxt->bResendLastFrame = true;
-
- phDnldNfc_ProcessRWSeqState(pDlCtxt, NULL);
- }
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phDnldNfc_UpdateRsp
-**
-** Description verifies the payload status byte and copies data
-** to response buffer if successful
-**
-** Parameters pDlContext - pointer to the download context structure
-** pInfo - pointer to the Transaction buffer updated by TML
-** Thread
-** wPldLen - Length of the payload bytes to copy to response
-** buffer
-**
-** Returns NFC status
-**
-*******************************************************************************/
-static NFCSTATUS phDnldNfc_UpdateRsp(pphDnldNfc_DlContext_t pDlContext,
- phTmlNfc_TransactInfo_t* pInfo,
- uint16_t wPldLen) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- uint16_t wReadLen = 0;
-
- if ((NULL == pDlContext) || (NULL == pInfo)) {
- NXPLOG_FWDNLD_E("Invalid Input Parameters!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_INVALID_PARAMETER);
- } else {
- if (PH_DL_CMD_WRITE == (pDlContext->tCmdId)) {
- if (PH_DL_STATUS_OK == (pInfo->pBuff[PHDNLDNFC_FRAMESTATUS_OFFSET])) {
- /* first write frame response received case */
- if ((pDlContext->tRWInfo.bFirstWrReq) == true) {
- NXPLOG_FWDNLD_D("First Write Frame Success Status received!!");
- (pDlContext->tRWInfo.bFirstWrReq) = false;
- }
-
- if ((pDlContext->tRWInfo.bFirstChunkResp) == true) {
- if ((pDlContext->tRWInfo.bFramesSegmented) == false) {
- NXPLOG_FWDNLD_D("Chunked Write Frame Success Status received!!");
- (pDlContext->tRWInfo.wRemChunkBytes) -=
- (pDlContext->tRWInfo.wBytesToSendRecv);
- (pDlContext->tRWInfo.bFirstChunkResp) = false;
- } else {
- NXPLOG_FWDNLD_E("UnExpected Status received!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- }
- }
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- (pDlContext->tRWInfo.wRemBytes) -=
- (pDlContext->tRWInfo.wBytesToSendRecv);
- (pDlContext->tRWInfo.wOffset) +=
- (pDlContext->tRWInfo.wBytesToSendRecv);
- }
- } else if (((pDlContext->tRWInfo.bFirstChunkResp) == false) &&
- ((pDlContext->tRWInfo.bFramesSegmented) == true) &&
- (PHDNLDNFC_FIRST_FRAGFRAME_RESP ==
- (pInfo->pBuff[PHDNLDNFC_FRAMESTATUS_OFFSET]))) {
- (pDlContext->tRWInfo.bFirstChunkResp) = true;
- (pDlContext->tRWInfo.wRemChunkBytes) -=
- (pDlContext->tRWInfo.wBytesToSendRecv);
- (pDlContext->tRWInfo.wRemBytes) -=
- ((pDlContext->tRWInfo.wBytesToSendRecv) + PHDNLDNFC_FRAME_HDR_LEN);
- (pDlContext->tRWInfo.wOffset) += (pDlContext->tRWInfo.wBytesToSendRecv);
-
- /* first write frame response received case */
- if ((pDlContext->tRWInfo.bFirstWrReq) == true) {
- NXPLOG_FWDNLD_D("First Write Frame Success Status received!!");
- (pDlContext->tRWInfo.bFirstWrReq) = false;
- }
- } else if (((pDlContext->tRWInfo.bFirstChunkResp) == true) &&
- ((pDlContext->tRWInfo.bFramesSegmented) == true) &&
- (PHDNLDNFC_NEXT_FRAGFRAME_RESP ==
- (pInfo->pBuff[PHDNLDNFC_FRAMESTATUS_OFFSET]))) {
- (pDlContext->tRWInfo.wRemChunkBytes) -=
- (pDlContext->tRWInfo.wBytesToSendRecv);
- (pDlContext->tRWInfo.wRemBytes) -=
- (pDlContext->tRWInfo.wBytesToSendRecv);
- (pDlContext->tRWInfo.wOffset) += (pDlContext->tRWInfo.wBytesToSendRecv);
- } else if (PH_DL_STATUS_FIRMWARE_VERSION_ERROR ==
- (pInfo->pBuff[PHDNLDNFC_FRAMESTATUS_OFFSET])) {
- NXPLOG_FWDNLD_E(
- "FW version Error !!!could be either due to FW major version "
- "mismatch or Firmware Already Up To Date !!");
- (pDlContext->tRWInfo.bFirstWrReq) = false;
- /* resetting wRemBytes to 0 to avoid any further write frames send */
- (pDlContext->tRWInfo.wRemBytes) = 0;
- (pDlContext->tRWInfo.wOffset) = 0;
- wStatus = NFCSTATUS_FW_VERSION_ERROR;
- } else if (PH_DL_STATUS_PLL_ERROR ==
- (pInfo->pBuff[PHDNLDNFC_FRAMESTATUS_OFFSET])) {
- NXPLOG_FWDNLD_E("PLL Error Status received!!");
- (pDlContext->tLastStatus) = PH_DL_STATUS_PLL_ERROR;
- wStatus = NFCSTATUS_WRITE_FAILED;
- } else if (PH_DL_STATUS_SIGNATURE_ERROR ==
- (pInfo->pBuff[PHDNLDNFC_FRAMESTATUS_OFFSET])) {
- NXPLOG_FWDNLD_E("Signature Mismatch Error received!!");
- /* save the status for use in loading the relevant recovery image
- * (either signature or platform) */
- (pDlContext->tLastStatus) = PH_DL_STATUS_SIGNATURE_ERROR;
- wStatus = NFCSTATUS_REJECTED;
- } else if (PH_DL_STATUS_MEM_BSY ==
- (pInfo->pBuff[PHDNLDNFC_FRAMESTATUS_OFFSET])) {
- NXPLOG_FWDNLD_E("Mem Busy Status received!!");
- (pDlContext->tLastStatus) = PH_DL_STATUS_MEM_BSY;
- wStatus = NFCSTATUS_BUSY;
- } else {
- NXPLOG_FWDNLD_E("Unsuccessful Status received!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- }
- } else if (PH_DL_CMD_READ == (pDlContext->tCmdId)) {
- if (PH_DL_STATUS_OK == (pInfo->pBuff[PHDNLDNFC_FRAMESTATUS_OFFSET])) {
- wReadLen = (((uint16_t)(pInfo->pBuff[PHDNLDNFC_FRAMESTATUS_OFFSET + 3])
- << 8U) |
- (pInfo->pBuff[PHDNLDNFC_FRAMESTATUS_OFFSET + 2]));
-
- if (wReadLen != (pDlContext->tRWInfo.wBytesToSendRecv)) {
- NXPLOG_FWDNLD_E("Desired Length bytes not received!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- } else {
- memcpy(
- &(pDlContext->tRspBuffInfo.pBuff[(pDlContext->tRWInfo.wOffset)]),
- &(pInfo->pBuff[PHDNLDNFC_FRAME_RDDATA_OFFSET]), wReadLen);
-
- (pDlContext->tRWInfo.wBytesRead) += wReadLen;
-
- (pDlContext->tRspBuffInfo.wLen) = (pDlContext->tRWInfo.wBytesRead);
-
- (pDlContext->tRWInfo.wRemBytes) -=
- (pDlContext->tRWInfo.wBytesToSendRecv);
- (pDlContext->tRWInfo.dwAddr) +=
- (pDlContext->tRWInfo.wBytesToSendRecv);
- (pDlContext->tRWInfo.wOffset) +=
- (pDlContext->tRWInfo.wBytesToSendRecv);
- }
- } else {
- NXPLOG_FWDNLD_E("Unsuccessful Status received!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- }
- } else {
- if (PH_DL_STATUS_OK == (pInfo->pBuff[PHDNLDNFC_FRAMESTATUS_OFFSET])) {
- if ((0 != (pDlContext->tRspBuffInfo.wLen)) &&
- (NULL != (pDlContext->tRspBuffInfo.pBuff))) {
- memcpy((pDlContext->tRspBuffInfo.pBuff),
- &(pInfo->pBuff[PHDNLDNFC_FRAMESTATUS_OFFSET + 1]), wPldLen);
-
- (pDlContext->tRspBuffInfo.wLen) = wPldLen;
- }
- } else {
- NXPLOG_FWDNLD_E("Unsuccessful Status received!!");
- wStatus = PHNFCSTVAL(CID_NFC_DNLD, NFCSTATUS_FAILED);
- }
- }
- }
-
- return wStatus;
-}
diff --git a/halimpl/pn54x/dnld/phDnldNfc_Internal.h b/halimpl/pn54x/dnld/phDnldNfc_Internal.h
deleted file mode 100644
index 9a9d422..0000000
--- a/halimpl/pn54x/dnld/phDnldNfc_Internal.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * Internal Primitives (Functions + Variables) used for Firmware Download
- */
-#ifndef PHDNLDNFC_INTERNAL_H
-#define PHDNLDNFC_INTERNAL_H
-
-#include <phDnldNfc.h>
-#include <phDnldNfc_Cmd.h>
-#include <phDnldNfc_Status.h>
-
-#define PHDNLDNFC_CMDRESP_MAX_BUFF_SIZE \
- (0x100U) /* DL Host Frame Buffer Size for all CMD/RSP \
- except pipelined WRITE */
-#if (PHDNLDNFC_CMDRESP_MAX_BUFF_SIZE > PHNFC_I2C_FRAGMENT_SIZE)
-#undef PHDNLDNFC_CMDRESP_MAX_BUFF_SIZE
-#define PHDNLDNFC_CMDRESP_MAX_BUFF_SIZE (PHNFC_I2C_FRAGMENT_SIZE)
-#endif
-
-/* DL Host Short Frame Buffer Size for pipelined WRITE RSP */
-#define PHDNLDNFC_WRITERSP_BUFF_SIZE (0x08U)
-
-/* DL Host Frame Buffer Header Length */
-#define PHDNLDNFC_FRAME_HDR_LEN (0x02U)
-/* DL Host Frame Buffer CRC Length */
-#define PHDNLDNFC_FRAME_CRC_LEN (PHDNLDNFC_FRAME_HDR_LEN)
-#define PHDNLDNFC_FRAME_ID_LEN (0x01U) /* Length of Cmd Id */
-
-/* size of EEPROM/Flash address */
-#define PHDNLDNFC_EEFL_ADDR_SIZE (0x03U)
-/* 2 Byte size of data */
-#define PHDNLDNFC_DATA_SIZE (PHDNLDNFC_FRAME_HDR_LEN)
-
-/* Start of EEPROM address for log */
-#define PHDNLDNFC_EEPROM_LOG_START_ADDR (0x201F80U)
-/* End of EEPROM address for log */
-#define PHDNLDNFC_EEPROM_LOG_END_ADDR (0x201FBFU)
-
-#define PHDNLDNFC_MAX_LOG_SIZE \
- ((PHDNLDNFC_EEPROM_LOG_END_ADDR - PHDNLDNFC_EEPROM_LOG_START_ADDR) + 1)
-
-/* DL Max Payload Size */
-#define PHDNLDNFC_CMDRESP_MAX_PLD_SIZE \
- ((PHDNLDNFC_CMDRESP_MAX_BUFF_SIZE) - \
- (PHDNLDNFC_FRAME_HDR_LEN + PHDNLDNFC_FRAME_CRC_LEN))
-
-/*
- * Enum definition contains Download Event Types
- */
-typedef enum phDnldNfc_Event {
- phDnldNfc_EventInvalid = 0x00, /*Invalid Event Value*/
- phDnldNfc_EventReset, /* Reset event */
- phDnldNfc_EventGetVer, /* Get Version event*/
- phDnldNfc_EventWrite, /* Write event*/
- phDnldNfc_EventRead, /* Read event*/
- phDnldNfc_EventIntegChk, /* Integrity Check event*/
- phDnldNfc_EventGetSesnSt, /* Get Session State event*/
- phDnldNfc_EventLog, /* Log event*/
- phDnldNfc_EventForce, /* Force event*/
- phDnldNfc_EventRaw, /* Raw Req/Rsp event,used currently for sending NCI RESET
- cmd */
- phDnldNfc_EVENT_INT_MAX /* Max Event Count*/
-} phDnldNfc_Event_t;
-
-/*
- * Enum definition contains Download Handler states for each event requested
- */
-typedef enum phDnldNfc_State {
- phDnldNfc_StateInit = 0x00, /* Handler init state */
- phDnldNfc_StateSend, /* Send frame to NFCC state */
- phDnldNfc_StateRecv, /* Recv Send complete State */
- phDnldNfc_StateTimer, /* State to stop prev set timer on Recv or handle timed
- out scenario */
- phDnldNfc_StateResponse, /* Process response from NFCC state */
- phDnldNfc_StatePipelined, /* Write requests to be pipelined state */
- phDnldNfc_StateInvalid /* Invalid Handler state */
-} phDnldNfc_State_t;
-
-/*
- * Enum definition contains Download Handler Transition
- */
-typedef enum phDnldNfc_Transition {
- phDnldNfc_TransitionIdle =
- 0x00, /* Handler in Idle state - No Download in progress */
- phDnldNfc_TransitionBusy, /* Handler is busy processing download request */
- phDnldNfc_TransitionInvalid /* Invalid Handler Transition */
-} phDnldNfc_Transition_t;
-
-/*
- * Enum definition contains the Frame input type for CmdId in process
- */
-typedef enum {
- phDnldNfc_FTNone = 0, /* input type None */
- phDnldNfc_ChkIntg, /* user eeprom offset & len to be added for Check Integrity
- Request */
- phDnldNfc_FTWrite, /* Frame inputs for Write request */
- phDnldNfc_FTLog, /* Frame inputs for Log request */
- phDnldNfc_FTForce, /* Frame input for Force cmd request */
- phDnldNfc_FTRead, /* Addr input required for read request */
- phDnldNfc_FTRaw /* Raw Req/Rsp type */
-} phDnldNfc_FrameInputType_t;
-
-/*
- * Contains Host Frame Buffer information.
- */
-typedef struct phDnldNfc_FrameInfo {
- uint16_t dwSendlength; /* length of the payload */
- uint8_t
- aFrameBuff[PHDNLDNFC_CMDRESP_MAX_BUFF_SIZE]; /* Buffer to store command
- that needs to be sent*/
-} phDnldNfc_FrameInfo_t,
- *pphDnldNfc_FrameInfo_t; /* pointer to #phDnldNfc_FrameInfo_t */
-
-/*
- * Frame Input Type & Value for CmdId in Process
- */
-typedef struct phDnldNfc_FrameInput {
- phDnldNfc_FrameInputType_t
- Type; /* Type of frame input required for current cmd in process */
- uint32_t dwAddr; /* Address value required for Read/Write Cmd*/
-} phDnldNfc_FrameInput_t,
- *pphDnldNfc_FrameInput_t; /* pointer to #phDnldNfc_FrameInput_t */
-
-/*
- * Context for the response timeout
- */
-typedef struct phDnldNfc_RspTimerInfo {
- uint32_t dwRspTimerId; /* Timer for Core to handle response */
- uint8_t TimerStatus; /* 0 = Timer not running 1 = timer running*/
- NFCSTATUS wTimerExpStatus; /* Holds the status code on timer expiry */
-} phDnldNfc_RspTimerInfo_t;
-
-/*
- * Read/Write Processing Info
- */
-typedef struct phDnldNfc_RWInfo {
- uint32_t dwAddr; /* current Addr updated for read/write */
- uint16_t wOffset; /* current offset within the user buffer to read/write */
- uint16_t wRemBytes; /* Remaining bytes to read/write */
- uint16_t wRemChunkBytes; /* Remaining bytes within the chunked frame */
- uint16_t wRWPldSize; /* Size of the read/write payload per transaction */
- uint16_t wBytesToSendRecv; /* Num of Bytes being written/read currently */
- uint16_t wBytesRead; /* Bytes read from read cmd currently */
- bool_t bFramesSegmented; /* Flag to indicate if Read/Write frames are
- segmented */
- bool_t bFirstWrReq; /* Flag to indicate if this is the first write frame being
- sent */
- bool_t
- bFirstChunkResp; /* Flag to indicate if we got the first chunk response */
-} phDnldNfc_RWInfo_t, *pphDnldNfc_RWInfo_t; /* pointer to #phDnldNfc_RWInfo_t */
-
-/*
- * Download context structure
- */
-typedef struct phDnldNfc_DlContext {
- const uint8_t* nxp_nfc_fw; /* Pointer to firmware version from image */
- const uint8_t*
- nxp_nfc_fwp; /* Pointer to firmware version from get_version cmd */
- uint16_t nxp_nfc_fwp_len; /* Length of firmware image length */
- uint16_t nxp_nfc_fw_len; /* Firmware image length */
- bool_t bResendLastFrame; /* Flag to resend the last write frame after MEM_BSY
- status */
- phDnldNfc_Transition_t
- tDnldInProgress; /* Flag to indicate if download request is ongoing */
- phDnldNfc_Event_t tCurrEvent; /* Current event being processed */
- phDnldNfc_State_t tCurrState; /* Current state being processed */
- pphDnldNfc_RspCb_t UserCb; /* Upper layer call back function */
- void* UserCtxt; /* Pointer to upper layer context */
- phDnldNfc_Buff_t tUserData; /* Data buffer provided by caller */
- phDnldNfc_Buff_t
- tRspBuffInfo; /* Buffer to store payload field of the received response*/
- phDnldNfc_FrameInfo_t tCmdRspFrameInfo; /* Buffer to hold the cmd/resp frame
- except pipeline write */
- phDnldNfc_FrameInfo_t
- tPipeLineWrFrameInfo; /* Buffer to hold the pipelined write frame */
- NFCSTATUS
- wCmdSendStatus; /* Holds the status of cmd request made to cmd handler */
- phDnldNfc_CmdId_t tCmdId; /* Cmd Id of the currently processed cmd */
- phDnldNfc_FrameInput_t
- FrameInp; /* input value required for current cmd in process */
- phDnldNfc_RspTimerInfo_t
- TimerInfo; /* Timer context handled into download context*/
- phDnldNfc_Buff_t tTKey; /* Defualt Transport Key provided by caller */
- phDnldNfc_RWInfo_t tRWInfo; /* Read/Write segmented frame info */
- phDnldNfc_Status_t tLastStatus; /* saved status to distinguish signature or
- pltform recovery */
-} phDnldNfc_DlContext_t,
- *pphDnldNfc_DlContext_t; /* pointer to #phDnldNfc_DlContext_t structure */
-
-/* The phDnldNfc_CmdHandler function declaration */
-extern NFCSTATUS phDnldNfc_CmdHandler(void* pContext,
- phDnldNfc_Event_t TrigEvent);
-
-#endif /* PHDNLDNFC_INTERNAL_H */
diff --git a/halimpl/pn54x/dnld/phDnldNfc_Status.h b/halimpl/pn54x/dnld/phDnldNfc_Status.h
deleted file mode 100644
index a5b9125..0000000
--- a/halimpl/pn54x/dnld/phDnldNfc_Status.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * Firmware Download Status Values
- */
-#ifndef PHDNLDNFC_STATUS_H
-#define PHDNLDNFC_STATUS_H
-
-#include <phNfcStatus.h>
-
-/* reusing LibNfcStatus.h value below as a placeholder for now, need to find
- the right value */
-#define NFCSTATUS_ABORTED (0x0096) /* Command aborted */
-
-/*
- * Enum definition contains Firmware Download Status codes
- */
-typedef enum phDnldNfc_Status {
- PH_DL_STATUS_PLL_ERROR = 0x0D,
- PH_DL_STATUS_LC_WRONG = 0x13,
- PH_DL_STATUS_LC_TERMINATION_NOT_SUPPORTED = 0x14,
- PH_DL_STATUS_LC_CREATION_NOT_SUPPORTED = 0x15,
- PH_DL_STATUS_LC_UNKNOWN = 0x16,
- PH_DL_STATUS_AUTHENTICATION_ERROR = 0x19,
- PH_DL_STATUS_NOT_AUTHENTICATED = 0x1A,
- PH_DL_STATUS_AUTHENTICATION_LOST = 0x1B,
- PH_DL_STATUS_WRITE_PROTECTED = 0x1C,
- PH_DL_STATUS_READ_PROTECTED = 0x1D,
- PH_DL_STATUS_ADDR_RANGE_OFL_ERROR = 0x1E,
- PH_DL_STATUS_BUFFER_OFL_ERROR = 0x1F,
- PH_DL_STATUS_MEM_BSY = 0x20,
- PH_DL_STATUS_SIGNATURE_ERROR = 0x21,
- PH_DL_STATUS_SESSION_WAS_OPEN = 0x22,
- PH_DL_STATUS_SESSION_WAS_CLOSED = 0x23,
- /* the Firmware version passed to CommitSession is not greater than
- the EEPROM resident stored Firmware version number */
- PH_DL_STATUS_FIRMWARE_VERSION_ERROR = 0x24,
- PH_DL_STATUS_LOOPBACK_DATA_MISSMATCH_ERROR = 0x25,
- /*****************************/
- PH_DL_STATUS_HOST_PAYLOAD_UFL_ERROR = 0x26,
- PH_DL_STATUS_HOST_PAYLOAD_OFL_ERROR = 0x27,
- PH_DL_STATUS_PROTOCOL_ERROR = 0x28,
- /* Download codes re-mapped to generic entries */
- PH_DL_STATUS_INVALID_ADDR = NFCSTATUS_INVALID_PARAMETER,
- PH_DL_STATUS_GENERIC_ERROR = NFCSTATUS_FAILED,
- PH_DL_STATUS_ABORTED_CMD = NFCSTATUS_ABORTED,
- PH_DL_STATUS_FLASH_WRITE_PROTECTED = PH_DL_STATUS_WRITE_PROTECTED,
- PH_DL_STATUS_FLASH_READ_PROTECTED = PH_DL_STATUS_READ_PROTECTED,
- PH_DL_STATUS_USERDATA_WRITE_PROTECTED = PH_DL_STATUS_WRITE_PROTECTED,
- PH_DL_STATUS_USERDATA_READ_PROTECTED = PH_DL_STATUS_READ_PROTECTED,
- PH_DL_STATUS_OK = NFCSTATUS_SUCCESS
-} phDnldNfc_Status_t;
-
-#endif /* PHDNLDNFC_STATUS_H */
diff --git a/halimpl/pn54x/dnld/phDnldNfc_Utils.c b/halimpl/pn54x/dnld/phDnldNfc_Utils.c
deleted file mode 100644
index 014ca66..0000000
--- a/halimpl/pn54x/dnld/phDnldNfc_Utils.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * Download Component
- * Download Utility routines implementation
- */
-
-#include <phDnldNfc_Utils.h>
-#include <phNxpLog.h>
-
-static uint16_t const aCrcTab[256] = {
- 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108,
- 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210,
- 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b,
- 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401,
- 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee,
- 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6,
- 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d,
- 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
- 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5,
- 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc,
- 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4,
- 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd,
- 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13,
- 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a,
- 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e,
- 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
- 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1,
- 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb,
- 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0,
- 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8,
- 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657,
- 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9,
- 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882,
- 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
- 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e,
- 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07,
- 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d,
- 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74,
- 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0};
-
-/*******************************************************************************
-**
-** Function phDnldNfc_CalcCrc16
-**
-** Description Calculates CRC16 for the frame buffer
-**
-** Parameters pBuff - CRC16 calculation input buffer
-** wLen - input buffer length
-**
-** Returns wCrc - computed 2 byte CRC16 value
-**
-*******************************************************************************/
-uint16_t phDnldNfc_CalcCrc16(uint8_t* pBuff, uint16_t wLen) {
- uint16_t wTmp;
- uint16_t wValue;
- uint16_t wCrc = 0xffff;
- uint32_t i;
-
- if ((NULL == pBuff) || (0 == wLen)) {
- NXPLOG_FWDNLD_W("Invalid Params supplied!!");
- } else {
- /* Perform CRC calculation according to ccitt with a initial value of 0x1d0f
- */
- for (i = 0; i < wLen; i++) {
- wValue = 0x00ffU & (uint16_t)pBuff[i];
- wTmp = (wCrc >> 8U) ^ wValue;
- wCrc = (wCrc << 8U) ^ aCrcTab[wTmp];
- }
- }
-
- return wCrc;
-}
diff --git a/halimpl/pn54x/dnld/phDnldNfc_Utils.h b/halimpl/pn54x/dnld/phDnldNfc_Utils.h
deleted file mode 100644
index 4b4e2af..0000000
--- a/halimpl/pn54x/dnld/phDnldNfc_Utils.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * Firmware Download Utilities File
- */
-#ifndef PHDNLDNFC_UTILS_H
-#define PHDNLDNFC_UTILS_H
-
-#include <phDnldNfc.h>
-
-extern uint16_t phDnldNfc_CalcCrc16(uint8_t* pBuff, uint16_t wLen);
-
-#endif /* PHDNLDNFC_UTILS_H */
diff --git a/halimpl/pn54x/dnld/phNxpNciHal_Dnld.c b/halimpl/pn54x/dnld/phNxpNciHal_Dnld.c
deleted file mode 100644
index 42cadba..0000000
--- a/halimpl/pn54x/dnld/phNxpNciHal_Dnld.c
+++ /dev/null
@@ -1,1808 +0,0 @@
-/*
- * Copyright (C) 2012-2014 NXP Semiconductors
- *
- * 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.
- */
-
-#include <phDnldNfc.h>
-#include <phNxpConfig.h>
-#include <phNxpLog.h>
-#include <phNxpNciHal_Dnld.h>
-#include <phNxpNciHal_utils.h>
-#include <phTmlNfc.h>
-
-/* Macro */
-#define PHLIBNFC_IOCTL_DNLD_MAX_ATTEMPTS 3
-#define PHLIBNFC_IOCTL_DNLD_GETVERLEN (0x0BU)
-#define PHLIBNFC_IOCTL_DNLD_GETVERLEN_MRA2_1 (0x09U)
-#define PHLIBNFC_DNLD_MEM_READ (0xECU)
-#define PHLIBNFC_DNLD_MEM_WRITE (0xEDU)
-#define PHLIBNFC_DNLD_READ_LOG (0xEEU)
-#define NFC_MEM_READ (0xD0U)
-#define NFC_MEM_WRITE (0xD1U)
-#define NFC_FW_DOWNLOAD (0x09F7U)
-
-/* External global variable to get FW version */
-extern uint16_t wFwVer;
-extern uint16_t wMwVer;
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
-extern uint8_t gRecFWDwnld;
-#endif
-/* RF Configuration structure */
-typedef struct phLibNfc_IoctlSetRfConfig {
- uint8_t bNumOfParams; /* Number of Rf configurable parameters to be set */
- uint8_t* pInputBuffer; /* Buffer containing Rf configurable parameters */
- uint8_t bSetSysPmuFlag; /* Flag to decide wether to set SystemPmu or no from
- the first byte */
-} phLibNfc_IoctlSetRfConfig;
-
-/* Structure to hold information from EEPROM */
-typedef struct phLibNfc_EELogParams {
- uint16_t wCurrMwVer; /* Holds current MW version on the chip */
- uint16_t wCurrFwVer; /* Holds current FW version on the chip */
- uint16_t wNumDnldTrig; /* Total number of times dnld has been attempted */
- uint16_t wNumDnldSuccess; /* Total number of times dnld has been successful */
- uint16_t wNumDnldFail; /* Total number of times dnld has Failed */
- uint16_t wDnldFailCnt; /* holds the number of times dnld has failed,will be
- reset on success */
- bool_t bConfig; /* Flag to be set in dnld mode after successful dnld,to be
- reset in NCI Mode
- after setting the NCI configuration */
-} phLibNfc_EELogParams_t;
-
-/* FW download module context structure */
-typedef struct {
- bool_t bDnldEepromWrite; /* Flag to indicate eeprom write request*/
- bool_t
- bSkipSeq; /* Flag to indicate FW download sequence to be skipped or not */
- bool_t bSkipReset; /* Flag to indicate Reset cmd to be skipped or not in FW
- download sequence */
- bool_t bSkipForce; /* Flag to indicate Force cmd to be skipped or not in FW
- recovery sequence */
- bool_t bPrevSessnOpen; /* Flag to indicate previous download session is open
- or not */
- bool_t bLibNfcCtxtMem; /* flag to indicate if mem was allocated for
- gpphLibNfc_Context */
- bool_t bDnldInitiated; /* Flag to indicate if fw upgrade was initiated */
- bool_t
- bSendNciCmd; /* Flag to indicate if NCI cmd to be sent or not,after PKU */
- uint8_t bChipVer; /* holds the hw chip version */
- bool_t bDnldRecovery; /* Flag to indicate if dnld recovery sequence needs to
- be triggered */
- bool_t bForceDnld; /* Flag to indicate if forced download option is enabled */
- bool_t bRetryDnld; /* Flag to indicate retry download after successful
- recovery complete */
- uint8_t
- bDnldAttempts; /* Holds the count of no. of dnld attempts made.max 3 */
- uint16_t IoctlCode; /* Ioctl code*/
- bool_t bDnldAttemptFailed; /* Flag to indicate last download attempt failed */
- NFCSTATUS bLastStatus; /* Holds the actual download write attempt status */
- phLibNfc_EELogParams_t
- tLogParams; /* holds the params that could be logged to reserved EE
- address */
- uint8_t bClkSrcVal; /* Holds the System clock source read from config file */
- uint8_t
- bClkFreqVal; /* Holds the System clock frequency read from config file */
-} phNxpNciHal_fw_Ioctl_Cntx_t;
-
-/* Global variables used in this file only*/
-static phNxpNciHal_fw_Ioctl_Cntx_t gphNxpNciHal_fw_IoctlCtx;
-
-/* Local function prototype */
-static NFCSTATUS phNxpNciHal_fw_dnld_reset(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static void phNxpNciHal_fw_dnld_reset_cb(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static NFCSTATUS phNxpNciHal_fw_dnld_force(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static void phNxpNciHal_fw_dnld_force_cb(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static void phNxpNciHal_fw_dnld_normal_cb(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static NFCSTATUS phNxpNciHal_fw_dnld_normal(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static void phNxpNciHal_fw_dnld_get_version_cb(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static NFCSTATUS phNxpNciHal_fw_dnld_get_version(void* pContext,
- NFCSTATUS status, void* pInfo);
-
-static void phNxpNciHal_fw_dnld_get_sessn_state_cb(void* pContext,
- NFCSTATUS status,
- void* pInfo);
-
-static NFCSTATUS phNxpNciHal_fw_dnld_get_sessn_state(void* pContext,
- NFCSTATUS status,
- void* pInfo);
-
-static void phNxpNciHal_fw_dnld_log_read_cb(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static NFCSTATUS phNxpNciHal_fw_dnld_log_read(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static void phNxpNciHal_fw_dnld_write_cb(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static NFCSTATUS phNxpNciHal_fw_dnld_write(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static void phNxpNciHal_fw_dnld_chk_integrity_cb(void* pContext,
- NFCSTATUS status, void* pInfo);
-
-static NFCSTATUS phNxpNciHal_fw_dnld_chk_integrity(void* pContext,
- NFCSTATUS status,
- void* pInfo);
-
-static void phNxpNciHal_fw_dnld_log_cb(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static NFCSTATUS phNxpNciHal_fw_dnld_log(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static void phNxpNciHal_fw_dnld_send_ncicmd_Cb(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static NFCSTATUS phNxpNciHal_fw_dnld_send_ncicmd(void* pContext,
- NFCSTATUS status, void* pInfo);
-
-static NFCSTATUS phNxpNciHal_fw_dnld_recover(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static NFCSTATUS phNxpNciHal_fw_dnld_complete(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-/* Internal function to verify Crc Status byte received during CheckIntegrity */
-static NFCSTATUS phLibNfc_VerifyCrcStatus(uint8_t bCrcStatus);
-
-static void phNxpNciHal_fw_dnld_recover_cb(void* pContext, NFCSTATUS status,
- void* pInfo);
-
-static NFCSTATUS phNxpNciHal_fw_seq_handler(
- NFCSTATUS (*seq_handler[])(void* pContext, NFCSTATUS status, void* pInfo));
-
-/* Array of pointers to start fw download seq */
-static NFCSTATUS (*phNxpNciHal_dwnld_seqhandler[])(void* pContext,
- NFCSTATUS status,
- void* pInfo) = {
-#if (NFC_NXP_CHIP_TYPE == PN547C2)
- phNxpNciHal_fw_dnld_normal,
- phNxpNciHal_fw_dnld_normal,
-#endif
- phNxpNciHal_fw_dnld_get_sessn_state,
- phNxpNciHal_fw_dnld_get_version,
- phNxpNciHal_fw_dnld_log_read,
- phNxpNciHal_fw_dnld_write,
- phNxpNciHal_fw_dnld_get_sessn_state,
- phNxpNciHal_fw_dnld_get_version,
- phNxpNciHal_fw_dnld_log,
- phNxpNciHal_fw_dnld_chk_integrity,
- NULL};
-
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
-/* Array of pointers to start dummy fw download seq */
-static NFCSTATUS (*phNxpNciHal_dummy_rec_dwnld_seqhandler[])(void* pContext,
- NFCSTATUS status,
- void* pInfo) = {
- phNxpNciHal_fw_dnld_normal,
- phNxpNciHal_fw_dnld_normal,
- phNxpNciHal_fw_dnld_get_sessn_state,
- phNxpNciHal_fw_dnld_get_version,
- phNxpNciHal_fw_dnld_log_read,
- phNxpNciHal_fw_dnld_write,
- NULL};
-#endif
-
-/* Download Recovery Sequence */
-static NFCSTATUS (*phNxpNciHal_dwnld_rec_seqhandler[])(void* pContext,
- NFCSTATUS status,
- void* pInfo) = {
- phNxpNciHal_fw_dnld_reset, phNxpNciHal_fw_dnld_force,
- phNxpNciHal_fw_dnld_recover, phNxpNciHal_fw_dnld_send_ncicmd, NULL};
-
-/* Download Log Sequence */
-static NFCSTATUS (*phNxpNciHal_dwnld_log_seqhandler[])(void* pContext,
- NFCSTATUS status,
- void* pInfo) = {
- phNxpNciHal_fw_dnld_log, NULL};
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_reset_cb
-**
-** Description Download Reset callback
-**
-** Returns None
-**
-*******************************************************************************/
-static void phNxpNciHal_fw_dnld_reset_cb(void* pContext, NFCSTATUS status,
- void* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
- UNUSED(pInfo);
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_FWDNLD_D("phNxpNciHal_fw_dnld_reset_cb - Request Successful");
- } else {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_reset_cb - Request Failed!!");
- }
- p_cb_data->status = status;
-
- SEM_POST(p_cb_data);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_reset
-**
-** Description Download Reset
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_dnld_reset(void* pContext, NFCSTATUS status,
- void* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- phNxpNciHal_Sem_t cb_data;
- UNUSED(pContext);
- UNUSED(status);
- UNUSED(pInfo);
- if (((gphNxpNciHal_fw_IoctlCtx.bSkipSeq) == true) ||
- ((gphNxpNciHal_fw_IoctlCtx.bSkipReset) == true)) {
- if ((gphNxpNciHal_fw_IoctlCtx.bSkipReset) == true) {
- (gphNxpNciHal_fw_IoctlCtx.bSkipReset) = false;
- }
- return NFCSTATUS_SUCCESS;
- }
-
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_reset Create dnld_cb_data failed");
- return NFCSTATUS_FAILED;
- }
- wStatus = phDnldNfc_Reset((pphDnldNfc_RspCb_t)&phNxpNciHal_fw_dnld_reset_cb,
- (void*)&cb_data);
-
- if (wStatus != NFCSTATUS_PENDING) {
- NXPLOG_FWDNLD_E("phDnldNfc_Reset failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_reset semaphore error");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_reset cb failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- wStatus = NFCSTATUS_SUCCESS;
-
-clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_normal_cb
-**
-** Description Download Normal callback
-**
-** Returns None
-**
-*******************************************************************************/
-static void phNxpNciHal_fw_dnld_normal_cb(void* pContext, NFCSTATUS status,
- void* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
- UNUSED(pInfo);
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_FWDNLD_D("phNxpNciHal_fw_dnld_normal_cb - Request Successful");
- } else {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_normal_cb - Request Failed!!");
- /* In this fail scenario trick the sequence handler to call next recover
- * sequence */
- status = NFCSTATUS_SUCCESS;
- }
- p_cb_data->status = status;
-
- SEM_POST(p_cb_data);
- usleep(1000 * 10);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_force_cb
-**
-** Description Download Force callback
-**
-** Returns None
-**
-*******************************************************************************/
-static void phNxpNciHal_fw_dnld_force_cb(void* pContext, NFCSTATUS status,
- void* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
- UNUSED(pInfo);
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_FWDNLD_D("phLibNfc_DnldForceCb - Request Successful");
- (gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) = false;
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = true;
- (gphNxpNciHal_fw_IoctlCtx.bSkipReset) = true;
- } else {
- /* In this fail scenario trick the sequence handler to call next recover
- * sequence */
- status = NFCSTATUS_SUCCESS;
- NXPLOG_FWDNLD_E("phLibNfc_DnldForceCb - Request Failed!!");
- }
- p_cb_data->status = status;
-
- SEM_POST(p_cb_data);
- usleep(1000 * 10);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_normal
-**
-** Description Download Normal
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_dnld_normal(void* pContext, NFCSTATUS status,
- void* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- uint8_t bClkVal[2];
- phDnldNfc_Buff_t tData;
- phNxpNciHal_Sem_t cb_data;
- UNUSED(pContext);
- UNUSED(status);
- UNUSED(pInfo);
- if ((gphNxpNciHal_fw_IoctlCtx.bSkipForce) == true) {
- return NFCSTATUS_SUCCESS;
- } else {
- /*
- bClkVal[0] = NXP_SYS_CLK_SRC_SEL;
- bClkVal[1] = NXP_SYS_CLK_FREQ_SEL;
- */
- bClkVal[0] = gphNxpNciHal_fw_IoctlCtx.bClkSrcVal;
- bClkVal[1] = gphNxpNciHal_fw_IoctlCtx.bClkFreqVal;
-
- (tData.pBuff) = bClkVal;
- (tData.wLen) = sizeof(bClkVal);
-
- if ((gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) == true) {
- (gphNxpNciHal_fw_IoctlCtx.bDnldAttempts)++;
- }
-
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_reset Create dnld_cb_data failed");
- return NFCSTATUS_FAILED;
- }
- wStatus = phDnldNfc_Force(
- &tData, (pphDnldNfc_RspCb_t)&phNxpNciHal_fw_dnld_normal_cb,
- (void*)&cb_data);
-
- if (NFCSTATUS_PENDING != wStatus) {
- NXPLOG_FWDNLD_E("phDnldNfc_Normal failed");
- (gphNxpNciHal_fw_IoctlCtx.bSkipForce) = false;
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = false;
- goto clean_and_return;
- }
- }
-
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_normal semaphore error");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_normal cb failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- wStatus = NFCSTATUS_SUCCESS;
-
-clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_force
-**
-** Description Download Force
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_dnld_force(void* pContext, NFCSTATUS status,
- void* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- uint8_t bClkVal[2];
- phDnldNfc_Buff_t tData;
- phNxpNciHal_Sem_t cb_data;
- UNUSED(pContext);
- UNUSED(status);
- UNUSED(pInfo);
- if ((gphNxpNciHal_fw_IoctlCtx.bSkipForce) == true) {
- return NFCSTATUS_SUCCESS;
- } else {
- /*
- bClkVal[0] = NXP_SYS_CLK_SRC_SEL;
- bClkVal[1] = NXP_SYS_CLK_FREQ_SEL;
- */
- bClkVal[0] = gphNxpNciHal_fw_IoctlCtx.bClkSrcVal;
- bClkVal[1] = gphNxpNciHal_fw_IoctlCtx.bClkFreqVal;
-
- (tData.pBuff) = bClkVal;
- (tData.wLen) = sizeof(bClkVal);
-
- if ((gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) == true) {
- (gphNxpNciHal_fw_IoctlCtx.bDnldAttempts)++;
- }
-
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_reset Create dnld_cb_data failed");
- return NFCSTATUS_FAILED;
- }
- wStatus = phDnldNfc_Force(&tData,
- (pphDnldNfc_RspCb_t)&phNxpNciHal_fw_dnld_force_cb,
- (void*)&cb_data);
-
- if (NFCSTATUS_PENDING != wStatus) {
- NXPLOG_FWDNLD_E("phDnldNfc_Force failed");
- (gphNxpNciHal_fw_IoctlCtx.bSkipForce) = false;
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = false;
- goto clean_and_return;
- }
- }
-
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_force semaphore error");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_force cb failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- wStatus = NFCSTATUS_SUCCESS;
-
-clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_get_version_cb
-**
-** Description Download Get version callback
-**
-** Returns None
-**
-*******************************************************************************/
-static void phNxpNciHal_fw_dnld_get_version_cb(void* pContext, NFCSTATUS status,
- void* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
- NFCSTATUS wStatus = status;
- pphDnldNfc_Buff_t pRespBuff;
- uint16_t wFwVern = 0;
- uint16_t wMwVern = 0;
- uint8_t bHwVer = 0;
- uint8_t bExpectedLen = 0;
- uint8_t bNewVer[2];
- uint8_t bCurrVer[2];
-
- if ((NFCSTATUS_SUCCESS == wStatus) && (NULL != pInfo)) {
- NXPLOG_FWDNLD_D("phNxpNciHal_fw_dnld_get_version_cb - Request Successful");
-
- pRespBuff = (pphDnldNfc_Buff_t)pInfo;
-
- if ((0 != pRespBuff->wLen) && (NULL != pRespBuff->pBuff)) {
- bHwVer = (pRespBuff->pBuff[0]);
- bHwVer &= 0x0F; /* 0x0F is the mask to extract chip version */
-
- if ((PHDNLDNFC_HWVER_MRA2_1 == bHwVer) ||
- (PHDNLDNFC_HWVER_MRA2_2 == bHwVer)
-#if (NFC_NXP_CHIP_TYPE == PN551)
- || (PHDNLDNFC_HWVER_PN551_MRA1_0 == bHwVer)
-#elif (NFC_NXP_CHIP_TYPE == PN548C2)
- || (PHDNLDNFC_HWVER_PN548AD_MRA1_0 == bHwVer)
-#elif (NFC_NXP_CHIP_TYPE == PN553)
- || (PHDNLDNFC_HWVER_PN553_MRA1_0 == bHwVer ||
- PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED & pRespBuff->pBuff[0])
-#endif
- ) {
- bExpectedLen = PHLIBNFC_IOCTL_DNLD_GETVERLEN_MRA2_1;
- (gphNxpNciHal_fw_IoctlCtx.bChipVer) = bHwVer;
-#if (NFC_NXP_CHIP_TYPE == PN553)
- if (PHDNLDNFC_HWVER_PN553_MRA1_0_UPDATED & pRespBuff->pBuff[0]) {
- (gphNxpNciHal_fw_IoctlCtx.bChipVer) = pRespBuff->pBuff[0];
- }
-#endif
- } else if ((bHwVer >= PHDNLDNFC_HWVER_MRA1_0) &&
- (bHwVer <= PHDNLDNFC_HWVER_MRA2_0)) {
- bExpectedLen = PHLIBNFC_IOCTL_DNLD_GETVERLEN;
- (gphNxpNciHal_fw_IoctlCtx.bChipVer) = bHwVer;
- } else {
- wStatus = NFCSTATUS_FAILED;
- NXPLOG_FWDNLD_E(
- "phNxpNciHal_fw_dnld_get_version_cb - Invalid ChipVersion!!");
- }
- } else {
- wStatus = NFCSTATUS_FAILED;
- NXPLOG_FWDNLD_E(
- "phNxpNciHal_fw_dnld_get_version_cb - Version Resp Buff "
- "Invalid...\n");
- }
-
- if ((NFCSTATUS_SUCCESS == wStatus) && (bExpectedLen == pRespBuff->wLen) &&
- (NULL != pRespBuff->pBuff)) {
- NXPLOG_FWDNLD_D(
- "phNxpNciHal_fw_dnld_get_version_cb - Valid Version Resp "
- "Buff!!...\n");
-
- /* Validate version details to confirm if continue with the next sequence
- * of Operations. */
- memcpy(bCurrVer, &(pRespBuff->pBuff[bExpectedLen - 2]), sizeof(bCurrVer));
- wFwVern = wFwVer;
- wMwVern = wMwVer;
-
- memcpy(bNewVer, &wFwVern, sizeof(bNewVer));
-
- /* check if the ROM code version and FW Major version is valid for the
- * chip*/
- /* ES2.2 Rom Version - 0x7 and Valid FW Major Version - 0x1 */
- if ((pRespBuff->pBuff[1] == 0x07) && (bNewVer[1] != 0x01)) {
- NXPLOG_FWDNLD_E(
- "C1 FW on C2 chip is not allowed - FW Major Version!= 1 on ES2.2");
- wStatus = NFCSTATUS_NOT_ALLOWED;
- }
- /* Major Version number check */
- else if ((FALSE == (gphNxpNciHal_fw_IoctlCtx.bDnldInitiated)) &&
- (bNewVer[1] < bCurrVer[1])) {
- NXPLOG_FWDNLD_E("Version Check Failed - MajorVerNum Mismatch\n");
- NXPLOG_FWDNLD_E("NewVer %d != CurrVer %d\n", bNewVer[1], bCurrVer[1]);
- wStatus = NFCSTATUS_NOT_ALLOWED;
- }
- /* Minor Version number check - before download.*/
- else if ((FALSE == (gphNxpNciHal_fw_IoctlCtx.bDnldInitiated)) &&
- ((bNewVer[0] == bCurrVer[0]) && (bNewVer[1] == bCurrVer[1]))) {
- wStatus = NFCSTATUS_SUCCESS;
-#if (PH_LIBNFC_ENABLE_FORCE_DOWNLOAD == 0)
- NXPLOG_FWDNLD_D("Version Already UpToDate!!\n");
- (gphNxpNciHal_fw_IoctlCtx.bSkipSeq) = TRUE;
-#else
- (gphNxpNciHal_fw_IoctlCtx.bForceDnld) = TRUE;
-#endif
-
- }
- /* Minor Version number check - after download
- * after download, we should get the same version information.*/
- else if ((TRUE == (gphNxpNciHal_fw_IoctlCtx.bDnldInitiated)) &&
- ((bNewVer[0] != bCurrVer[0]) || (bNewVer[1] != bCurrVer[1]))) {
- NXPLOG_FWDNLD_E("Version Not Updated After Download!!\n");
- wStatus = NFCSTATUS_FAILED;
- } else {
- NXPLOG_FWDNLD_D("Version Check Successful\n");
- /* Store the Mw & Fw Version for updating in EEPROM Log Area after
- * successful download */
- if (TRUE == (gphNxpNciHal_fw_IoctlCtx.bDnldInitiated)) {
- NXPLOG_FWDNLD_W("Updating Fw & Mw Versions..");
- (gphNxpNciHal_fw_IoctlCtx.tLogParams.wCurrMwVer) = wMwVern;
- (gphNxpNciHal_fw_IoctlCtx.tLogParams.wCurrFwVer) = wFwVern;
- }
- }
- } else {
- NXPLOG_FWDNLD_E(
- "phNxpNciHal_fw_dnld_get_version_cb - Version Resp Buff "
- "Invalid...\n");
- }
- } else {
- wStatus = NFCSTATUS_FAILED;
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_get_version_cb - Request Failed!!");
- }
-
- p_cb_data->status = wStatus;
- SEM_POST(p_cb_data);
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_get_version
-**
-** Description Download Get version
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_dnld_get_version(void* pContext,
- NFCSTATUS status,
- void* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- phNxpNciHal_Sem_t cb_data;
- static uint8_t bGetVerRes[11];
- phDnldNfc_Buff_t tDnldBuff;
- UNUSED(pContext);
- UNUSED(status);
- UNUSED(pInfo);
- if (((gphNxpNciHal_fw_IoctlCtx.bSkipSeq) == true) ||
- ((gphNxpNciHal_fw_IoctlCtx.bPrevSessnOpen) == true)) {
- return NFCSTATUS_SUCCESS;
- }
-
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_get_version cb_data creation failed");
- return NFCSTATUS_FAILED;
- }
-
- tDnldBuff.pBuff = bGetVerRes;
- tDnldBuff.wLen = sizeof(bGetVerRes);
-
- wStatus = phDnldNfc_GetVersion(
- &tDnldBuff, (pphDnldNfc_RspCb_t)&phNxpNciHal_fw_dnld_get_version_cb,
- (void*)&cb_data);
- if (wStatus != NFCSTATUS_PENDING) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_get_version failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_get_version semaphore error");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_get_version cb failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- wStatus = NFCSTATUS_SUCCESS;
-
-clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_get_sessn_state_cb
-**
-** Description Download Get session state callback
-**
-** Returns None
-**
-*******************************************************************************/
-static void phNxpNciHal_fw_dnld_get_sessn_state_cb(void* pContext,
- NFCSTATUS status,
- void* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
- NFCSTATUS wStatus = status;
- pphDnldNfc_Buff_t pRespBuff;
- if ((NFCSTATUS_SUCCESS == wStatus) && (NULL != pInfo)) {
- NXPLOG_FWDNLD_D(
- "phNxpNciHal_fw_dnld_get_sessn_state_cb - Request Successful");
-
- pRespBuff = (pphDnldNfc_Buff_t)pInfo;
-
- if ((3 == (pRespBuff->wLen)) && (NULL != (pRespBuff->pBuff))) {
- NXPLOG_FWDNLD_D(
- "phNxpNciHal_fw_dnld_get_sessn_state_cb - Valid Session State Resp "
- "Buff!!...");
-
- if (phDnldNfc_LCOper == pRespBuff->pBuff[2]) {
- if (PHLIBNFC_FWDNLD_SESSNOPEN == pRespBuff->pBuff[0]) {
- NXPLOG_FWDNLD_E("Prev Fw Upgrade Session still Open..");
- (gphNxpNciHal_fw_IoctlCtx.bPrevSessnOpen) = true;
- if ((gphNxpNciHal_fw_IoctlCtx.bDnldInitiated) == true) {
- NXPLOG_FWDNLD_D(
- "Session still Open after Prev Fw Upgrade attempt!!");
-
- if ((gphNxpNciHal_fw_IoctlCtx.bDnldAttempts) <
- PHLIBNFC_IOCTL_DNLD_MAX_ATTEMPTS) {
- NXPLOG_FWDNLD_W("Setting Dnld Retry ..");
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = true;
- } else {
- NXPLOG_FWDNLD_E("Max Dnld Retry Counts Exceeded!!");
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = false;
- }
- wStatus = NFCSTATUS_FAILED;
- }
- } else {
- gphNxpNciHal_fw_IoctlCtx.bPrevSessnOpen = false;
- }
- } else {
- wStatus = NFCSTATUS_FAILED;
- NXPLOG_FWDNLD_E(
- "NFCC not in Operational State..Fw Upgrade not allowed!!");
- }
- } else {
- wStatus = NFCSTATUS_FAILED;
- NXPLOG_FWDNLD_E(
- "phNxpNciHal_fw_dnld_get_sessn_state_cb - Session State Resp Buff "
- "Invalid...");
- }
- } else {
- wStatus = NFCSTATUS_FAILED;
- NXPLOG_FWDNLD_E(
- "phNxpNciHal_fw_dnld_get_sessn_state_cb - Request Failed!!");
- }
-
- p_cb_data->status = wStatus;
-
- SEM_POST(p_cb_data);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_get_sessn_state
-**
-** Description Download Get session state
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_dnld_get_sessn_state(void* pContext,
- NFCSTATUS status,
- void* pInfo) {
- phDnldNfc_Buff_t tDnldBuff;
- static uint8_t bGSnStateRes[3];
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- phNxpNciHal_Sem_t cb_data;
- UNUSED(pContext);
- UNUSED(status);
- UNUSED(pInfo);
- if (gphNxpNciHal_fw_IoctlCtx.bSkipSeq == true) {
- return NFCSTATUS_SUCCESS;
- }
-
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_get_version cb_data creation failed");
- return NFCSTATUS_FAILED;
- }
-
- tDnldBuff.pBuff = bGSnStateRes;
- tDnldBuff.wLen = sizeof(bGSnStateRes);
-
- wStatus = phDnldNfc_GetSessionState(
- &tDnldBuff, &phNxpNciHal_fw_dnld_get_sessn_state_cb, (void*)&cb_data);
- if (wStatus != NFCSTATUS_PENDING) {
- NXPLOG_FWDNLD_E("phDnldNfc_GetSessionState failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_FWDNLD_E("phDnldNfc_GetSessionState semaphore error");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phDnldNfc_GetSessionState cb failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- wStatus = NFCSTATUS_SUCCESS;
-
-clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_log_read_cb
-**
-** Description Download Logread callback
-**
-** Returns None
-**
-*******************************************************************************/
-static void phNxpNciHal_fw_dnld_log_read_cb(void* pContext, NFCSTATUS status,
- void* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
-
- if ((NFCSTATUS_SUCCESS == status) && (NULL != pInfo)) {
- NXPLOG_FWDNLD_D("phNxpNciHal_fw_dnld_log_read_cb - Request Successful");
- } else {
- status = NFCSTATUS_FAILED;
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_log_read_cb - Request Failed!!");
- }
-
- p_cb_data->status = status;
- SEM_POST(p_cb_data);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_log_read
-**
-** Description Download Log Read
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_dnld_log_read(void* pContext, NFCSTATUS status,
- void* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- phNxpNciHal_Sem_t cb_data;
- phDnldNfc_Buff_t Data;
- UNUSED(pContext);
- UNUSED(status);
- UNUSED(pInfo);
- if (((((gphNxpNciHal_fw_IoctlCtx.bSkipSeq) == true) ||
- ((gphNxpNciHal_fw_IoctlCtx.bForceDnld) == true)) &&
- ((gphNxpNciHal_fw_IoctlCtx.bPrevSessnOpen) == false)) ||
- ((((gphNxpNciHal_fw_IoctlCtx.bPrevSessnOpen) == true)) &&
- ((gphNxpNciHal_fw_IoctlCtx.bRetryDnld) == true)))
-
- {
- return NFCSTATUS_SUCCESS;
- }
-
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_log_read cb_data creation failed");
- return NFCSTATUS_FAILED;
- }
-
- (Data.pBuff) = (void*)&(gphNxpNciHal_fw_IoctlCtx.tLogParams);
- (Data.wLen) = sizeof(phLibNfc_EELogParams_t);
-
- wStatus = phDnldNfc_ReadLog(
- &Data, (pphDnldNfc_RspCb_t)&phNxpNciHal_fw_dnld_log_read_cb,
- (void*)&cb_data);
- if (wStatus != NFCSTATUS_PENDING) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_log_read failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_log_read semaphore error");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_log_read cb failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- wStatus = NFCSTATUS_SUCCESS;
-
-clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_write_cb
-**
-** Description Download Write callback
-**
-** Returns None
-**
-*******************************************************************************/
-static void phNxpNciHal_fw_dnld_write_cb(void* pContext, NFCSTATUS status,
- void* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
- UNUSED(pInfo);
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_FWDNLD_D("phNxpNciHal_fw_dnld_write_cb - Request Successful");
- (gphNxpNciHal_fw_IoctlCtx.bDnldEepromWrite) = false;
- if ((gphNxpNciHal_fw_IoctlCtx.bDnldInitiated) == true) {
- (gphNxpNciHal_fw_IoctlCtx.tLogParams.wNumDnldSuccess) += 1;
-
- if ((gphNxpNciHal_fw_IoctlCtx.tLogParams.wDnldFailCnt) > 0) {
- NXPLOG_FWDNLD_D("phNxpNciHal_fw_dnld_write_cb - Resetting DnldFailCnt");
- (gphNxpNciHal_fw_IoctlCtx.tLogParams.wDnldFailCnt) = 0;
- }
-
- if ((gphNxpNciHal_fw_IoctlCtx.tLogParams.bConfig) == false) {
- NXPLOG_FWDNLD_D(
- "phNxpNciHal_fw_dnld_write_cb - Setting bConfig for use by NCI "
- "mode");
- (gphNxpNciHal_fw_IoctlCtx.tLogParams.bConfig) = true;
- }
- }
-
- /* Reset the previously set DnldAttemptFailed flag */
- if ((gphNxpNciHal_fw_IoctlCtx.bDnldAttemptFailed) == true) {
- (gphNxpNciHal_fw_IoctlCtx.bDnldAttemptFailed) = false;
- }
- } else {
- if ((gphNxpNciHal_fw_IoctlCtx.bDnldInitiated) == true) {
- (gphNxpNciHal_fw_IoctlCtx.tLogParams.wNumDnldFail) += 1;
- (gphNxpNciHal_fw_IoctlCtx.tLogParams.wDnldFailCnt) += 1;
- (gphNxpNciHal_fw_IoctlCtx.tLogParams.bConfig) = false;
- }
- if (NFCSTATUS_WRITE_FAILED == status) {
- (gphNxpNciHal_fw_IoctlCtx.bSkipSeq) = true;
- (gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) = true;
- }
- // status = NFCSTATUS_FAILED;
-
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_write_cb - Request Failed!!");
- }
-
- p_cb_data->status = status;
- SEM_POST(p_cb_data);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_write
-**
-** Description Download Write
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_dnld_write(void* pContext, NFCSTATUS status,
- void* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- phNxpNciHal_Sem_t cb_data;
- UNUSED(pContext);
- UNUSED(status);
- UNUSED(pInfo);
- if ((gphNxpNciHal_fw_IoctlCtx.bRetryDnld) == true) {
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = false;
- }
-
- if (((gphNxpNciHal_fw_IoctlCtx.bSkipSeq) == true) &&
- ((gphNxpNciHal_fw_IoctlCtx.bPrevSessnOpen) == false)) {
- return NFCSTATUS_SUCCESS;
- }
-
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_write cb_data creation failed");
- return NFCSTATUS_FAILED;
- }
- if ((gphNxpNciHal_fw_IoctlCtx.bForceDnld) == false) {
- NXPLOG_FWDNLD_D("phNxpNciHal_fw_dnld_write - Incrementing NumDnldTrig..");
- (gphNxpNciHal_fw_IoctlCtx.bDnldInitiated) = true;
- (gphNxpNciHal_fw_IoctlCtx.bDnldAttempts)++;
- (gphNxpNciHal_fw_IoctlCtx.tLogParams.wNumDnldTrig) += 1;
- }
- wStatus = phDnldNfc_Write(false, NULL,
- (pphDnldNfc_RspCb_t)&phNxpNciHal_fw_dnld_write_cb,
- (void*)&cb_data);
- if ((gphNxpNciHal_fw_IoctlCtx.bForceDnld) == false) {
- if (wStatus != NFCSTATUS_PENDING) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_write failed");
- wStatus = NFCSTATUS_FAILED;
- (gphNxpNciHal_fw_IoctlCtx.tLogParams.wNumDnldFail) += 1;
- (gphNxpNciHal_fw_IoctlCtx.tLogParams.wDnldFailCnt) += 1;
- (gphNxpNciHal_fw_IoctlCtx.tLogParams.bConfig) = false;
- goto clean_and_return;
- }
- }
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_write semaphore error");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_write cb failed");
- wStatus = cb_data.status;
- goto clean_and_return;
- }
-
- wStatus = NFCSTATUS_SUCCESS;
-
-clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_chk_integrity_cb
-**
-** Description Download Check Integrity callback
-**
-** Returns None
-**
-*******************************************************************************/
-static void phNxpNciHal_fw_dnld_chk_integrity_cb(void* pContext,
- NFCSTATUS status,
- void* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
- NFCSTATUS wStatus = status;
- pphDnldNfc_Buff_t pRespBuff;
- // uint8_t bUserDataCrc[4];
-
- if ((NFCSTATUS_SUCCESS == wStatus) && (NULL != pInfo)) {
- NXPLOG_FWDNLD_D(
- "phNxpNciHal_fw_dnld_chk_integrity_cb - Request Successful");
- pRespBuff = (pphDnldNfc_Buff_t)pInfo;
-
- if ((31 == (pRespBuff->wLen)) && (NULL != (pRespBuff->pBuff))) {
- NXPLOG_FWDNLD_D(
- "phNxpNciHal_fw_dnld_chk_integrity_cb - Valid Resp Buff!!...\n");
- wStatus = phLibNfc_VerifyCrcStatus(pRespBuff->pBuff[0]);
- /*
- memcpy(bUserDataCrc, &(pRespBuff->pBuff[27]),
- sizeof(bUserDataCrc));*/
- } else {
- NXPLOG_FWDNLD_E(
- "phNxpNciHal_fw_dnld_chk_integrity_cb - Resp Buff Invalid...\n");
- }
- } else {
- wStatus = NFCSTATUS_FAILED;
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_chk_integrity_cb - Request Failed!!");
- }
-
- p_cb_data->status = wStatus;
-
- SEM_POST(p_cb_data);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_chk_integrity
-**
-** Description Download Check Integrity
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_dnld_chk_integrity(void* pContext,
- NFCSTATUS status,
- void* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- phNxpNciHal_Sem_t cb_data;
- phDnldNfc_Buff_t tDnldBuff;
- static uint8_t bChkIntgRes[31];
- UNUSED(pInfo);
- UNUSED(pContext);
- UNUSED(status);
- if (gphNxpNciHal_fw_IoctlCtx.bPrevSessnOpen == true) {
- NXPLOG_FWDNLD_D(
- "Previous Upload session is open..Cannot issue ChkIntegrity Cmd!!");
- return NFCSTATUS_SUCCESS;
- }
-
- if ((gphNxpNciHal_fw_IoctlCtx.bSkipSeq) == true) {
- return NFCSTATUS_SUCCESS;
- } else if (gphNxpNciHal_fw_IoctlCtx.bPrevSessnOpen == true) {
- NXPLOG_FWDNLD_E(
- "Previous Upload session is open..Cannot issue ChkIntegrity Cmd!!");
- return NFCSTATUS_SUCCESS;
- }
-
- tDnldBuff.pBuff = bChkIntgRes;
- tDnldBuff.wLen = sizeof(bChkIntgRes);
-
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E(
- "phNxpNciHal_fw_dnld_chk_integrity cb_data creation failed");
- return NFCSTATUS_FAILED;
- }
-
- wStatus = phDnldNfc_CheckIntegrity(
- (gphNxpNciHal_fw_IoctlCtx.bChipVer), &tDnldBuff,
- &phNxpNciHal_fw_dnld_chk_integrity_cb, (void*)&cb_data);
- if (wStatus != NFCSTATUS_PENDING) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_chk_integrity failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_chk_integrity semaphore error");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_chk_integrity cb failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- wStatus = NFCSTATUS_SUCCESS;
-
-clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_recover
-**
-** Description Download Recover
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_dnld_recover(void* pContext, NFCSTATUS status,
- void* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- phNxpNciHal_Sem_t cb_data;
-
- UNUSED(pInfo);
- UNUSED(status);
- UNUSED(pContext);
- if ((gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) == true) {
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_recover cb_data creation failed");
- return NFCSTATUS_FAILED;
- }
- (gphNxpNciHal_fw_IoctlCtx.bDnldAttempts)++;
-
- /* resetting this flag to avoid cyclic issuance of recovery sequence in case
- * of failure */
- (gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) = false;
-
- wStatus = phDnldNfc_Write(
- true, NULL, (pphDnldNfc_RspCb_t)&phNxpNciHal_fw_dnld_recover_cb,
- (void*)&cb_data);
-
- if (NFCSTATUS_PENDING != wStatus) {
- (gphNxpNciHal_fw_IoctlCtx.bSkipForce) = false;
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = false;
- goto clean_and_return;
- }
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_recover semaphore error");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_recover cb failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
- wStatus = NFCSTATUS_SUCCESS;
-
- clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_recover_cb
-**
-** Description Download Recover callback
-**
-** Returns None
-**
-*******************************************************************************/
-static void phNxpNciHal_fw_dnld_recover_cb(void* pContext, NFCSTATUS status,
- void* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
- NFCSTATUS wStatus = status;
- UNUSED(pContext);
- UNUSED(pInfo);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- if ((gphNxpNciHal_fw_IoctlCtx.bSkipForce) == false) {
- NXPLOG_FWDNLD_D("phNxpNciHal_fw_dnld_recoverCb - Request Successful");
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = true;
- } else {
- NXPLOG_FWDNLD_D(
- "phNxpNciHal_fw_dnld_recoverCb - Production key update Request "
- "Successful");
- (gphNxpNciHal_fw_IoctlCtx.bSendNciCmd) = true;
- }
- } else {
- wStatus = NFCSTATUS_FAILED;
- NXPLOG_FWDNLD_D("phNxpNciHal_fw_dnld_recoverCb - Request Failed!!");
- }
-
- /* resetting this flag to avoid cyclic issuance of recovery sequence in case
- * of failure */
- (gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) = false;
-
- /* reset previously set SkipForce */
- (gphNxpNciHal_fw_IoctlCtx.bSkipForce) = false;
- p_cb_data->status = wStatus;
-
- SEM_POST(p_cb_data);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_send_ncicmd_cb
-**
-** Description Download Send NCI Command callback
-**
-** Returns None
-**
-*******************************************************************************/
-static void phNxpNciHal_fw_dnld_send_ncicmd_cb(void* pContext, NFCSTATUS status,
- void* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
- NFCSTATUS wStatus = status;
- pphDnldNfc_Buff_t pRespBuff;
- UNUSED(pContext);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- NXPLOG_FWDNLD_D("phNxpNciHal_fw_dnld_send_ncicmdCb - Request Successful");
- pRespBuff = (pphDnldNfc_Buff_t)pInfo;
-
- if ((0 != (pRespBuff->wLen)) && (NULL != (pRespBuff->pBuff))) {
- if (0 == (pRespBuff->pBuff[3])) {
- NXPLOG_FWDNLD_D("Successful Response received for Nci Reset Cmd");
- } else {
- NXPLOG_FWDNLD_E("Nci Reset Request Failed!!");
- }
- } else {
- NXPLOG_FWDNLD_E("Invalid Response received for Nci Reset Request!!");
- }
- /* Call Tml Ioctl to enable download mode */
- wStatus = phTmlNfc_IoCtl(phTmlNfc_e_EnableDownloadMode);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- NXPLOG_FWDNLD_D("Switched Successfully to dnld mode..");
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = true;
- } else {
- NXPLOG_FWDNLD_E("Switching back to dnld mode Failed!!");
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = false;
- wStatus = NFCSTATUS_FAILED;
- }
- } else {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_send_ncicmdCb - Request Failed!!");
- }
-
- (gphNxpNciHal_fw_IoctlCtx.bSendNciCmd) = false;
- p_cb_data->status = wStatus;
-
- SEM_POST(p_cb_data);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_send_ncicmd
-**
-** Description Download Send NCI Command
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_dnld_send_ncicmd(void* pContext,
- NFCSTATUS status,
- void* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- static uint8_t bNciCmd[4] = {0x20, 0x00, 0x01,
- 0x00}; /* Nci Reset Cmd with KeepConfig option */
- static uint8_t bNciResp[6];
- phDnldNfc_Buff_t tsData;
- phDnldNfc_Buff_t trData;
- phNxpNciHal_Sem_t cb_data;
-
- UNUSED(pInfo);
- UNUSED(status);
- UNUSED(pContext);
- if ((gphNxpNciHal_fw_IoctlCtx.bSendNciCmd) == false) {
- return NFCSTATUS_SUCCESS;
- } else {
- /* Call Tml Ioctl to enable/restore normal mode */
- wStatus = phTmlNfc_IoCtl(phTmlNfc_e_EnableNormalMode);
-
- if (NFCSTATUS_SUCCESS != wStatus) {
- NXPLOG_FWDNLD_E("Switching to NormalMode Failed!!");
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = false;
- (gphNxpNciHal_fw_IoctlCtx.bSendNciCmd) = false;
- } else {
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E(
- "phNxpNciHal_fw_dnld_send_ncicmd cb_data creation failed");
- return NFCSTATUS_FAILED;
- }
- (tsData.pBuff) = bNciCmd;
- (tsData.wLen) = sizeof(bNciCmd);
- (trData.pBuff) = bNciResp;
- (trData.wLen) = sizeof(bNciResp);
-
- wStatus = phDnldNfc_RawReq(
- &tsData, &trData,
- (pphDnldNfc_RspCb_t)&phNxpNciHal_fw_dnld_send_ncicmd_cb,
- (void*)&cb_data);
- if (NFCSTATUS_PENDING != wStatus) {
- goto clean_and_return;
- }
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_send_ncicmd semaphore error");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_send_ncicmd cb failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
- wStatus = NFCSTATUS_SUCCESS;
-
- clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_log_cb
-**
-** Description Download Log callback
-**
-** Returns None
-**
-*******************************************************************************/
-static void phNxpNciHal_fw_dnld_log_cb(void* pContext, NFCSTATUS status,
- void* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
- NFCSTATUS wStatus = status;
- UNUSED(pContext);
- UNUSED(pInfo);
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- NXPLOG_FWDNLD_D("phLibNfc_DnldLogCb - Request Successful");
- (gphNxpNciHal_fw_IoctlCtx.bDnldInitiated) = false;
- } else {
- wStatus = NFCSTATUS_FAILED;
- NXPLOG_FWDNLD_E("phLibNfc_DnldLogCb - Request Failed!!");
- }
- p_cb_data->status = wStatus;
-
- SEM_POST(p_cb_data);
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_log
-**
-** Description Download Log
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_dnld_log(void* pContext, NFCSTATUS status,
- void* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- phNxpNciHal_Sem_t cb_data;
- phDnldNfc_Buff_t tData;
-
- UNUSED(pInfo);
- UNUSED(status);
- UNUSED(pContext);
- if ((((gphNxpNciHal_fw_IoctlCtx.bSkipSeq) == true) ||
- ((gphNxpNciHal_fw_IoctlCtx.bForceDnld) == true)) &&
- ((gphNxpNciHal_fw_IoctlCtx.bDnldInitiated) == false)) {
- return NFCSTATUS_SUCCESS;
- } else {
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_log cb_data creation failed");
- return NFCSTATUS_FAILED;
- }
- (tData.pBuff) = (void*)&(gphNxpNciHal_fw_IoctlCtx.tLogParams);
- (tData.wLen) = sizeof(gphNxpNciHal_fw_IoctlCtx.tLogParams);
-
- wStatus =
- phDnldNfc_Log(&tData, (pphDnldNfc_RspCb_t)&phNxpNciHal_fw_dnld_log_cb,
- (void*)&cb_data);
-
- if (wStatus != NFCSTATUS_PENDING) {
- NXPLOG_FWDNLD_E("phDnldNfc_Log failed");
- (gphNxpNciHal_fw_IoctlCtx.bDnldInitiated) = false;
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_log semaphore error");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_FWDNLD_E("phNxpNciHal_fw_dnld_log_cb failed");
- wStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- wStatus = NFCSTATUS_SUCCESS;
-
- clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
-
- return wStatus;
- }
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_seq_handler
-**
-** Description Sequence Handler
-**
-** Returns NFCSTATUS_SUCCESS if sequence completed uninterrupted
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_seq_handler(
- NFCSTATUS (*seq_handler[])(void* pContext, NFCSTATUS status, void* pInfo)) {
- char* pContext = "FW-Download";
- int16_t seq_counter = 0;
- phDnldNfc_Buff_t pInfo;
- NFCSTATUS status = NFCSTATUS_FAILED;
-
- status = phTmlNfc_ReadAbort();
- if (NFCSTATUS_SUCCESS != status) {
- NXPLOG_FWDNLD_E("Tml Read Abort failed!!");
- return status;
- }
-
- while (seq_handler[seq_counter] != NULL) {
- status = NFCSTATUS_FAILED;
- status = (seq_handler[seq_counter])(pContext, status, &pInfo);
- if (NFCSTATUS_SUCCESS != status) {
- NXPLOG_FWDNLD_E(" phNxpNciHal_fw_seq_handler : FAILED");
- break;
- }
- seq_counter++;
- }
- return status;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_dnld_complete
-**
-** Description Download Sequence Complete
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_dnld_complete(void* pContext, NFCSTATUS status,
- void* pInfo) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- NFCSTATUS fStatus = status;
- UNUSED(pInfo);
- UNUSED(pContext);
-
- if (NFCSTATUS_WRITE_FAILED == status) {
- if ((gphNxpNciHal_fw_IoctlCtx.bDnldAttempts) <
- PHLIBNFC_IOCTL_DNLD_MAX_ATTEMPTS) {
- (gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) = true;
- } else {
- NXPLOG_FWDNLD_E("Max Dnld Retry Counts Exceeded!!");
- (gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) = false;
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = false;
- }
- } else if (NFCSTATUS_REJECTED == status) {
- if ((gphNxpNciHal_fw_IoctlCtx.bDnldAttempts) <
- PHLIBNFC_IOCTL_DNLD_MAX_ATTEMPTS) {
- (gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) = true;
-
- /* in case of signature error we need to try recover sequence directly
- * bypassing the force cmd */
- (gphNxpNciHal_fw_IoctlCtx.bSkipForce) = true;
- } else {
- NXPLOG_FWDNLD_E("Max Dnld Retry Counts Exceeded!!");
- (gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) = false;
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = false;
- }
- }
-
- if ((gphNxpNciHal_fw_IoctlCtx.bDnldInitiated) == true) {
- (gphNxpNciHal_fw_IoctlCtx.bLastStatus) = status;
- (gphNxpNciHal_fw_IoctlCtx.bDnldAttemptFailed) = true;
-
- NXPLOG_FWDNLD_E("Invoking Pending Download Log Sequence..");
- (gphNxpNciHal_fw_IoctlCtx.bDnldInitiated) = false;
- /* Perform the Logging sequence */
- wStatus = phNxpNciHal_fw_seq_handler(phNxpNciHal_dwnld_log_seqhandler);
- if (NFCSTATUS_SUCCESS != gphNxpNciHal_fw_IoctlCtx.bLastStatus) {
- /* update the previous Download Write status to upper layer and not the
- * status of Log command */
- wStatus = gphNxpNciHal_fw_IoctlCtx.bLastStatus;
- NXPLOG_FWDNLD_E(
- "phNxpNciHal_fw_dnld_complete: Last Download Write Status before Log "
- "command bLastStatus = 0x%x",
- gphNxpNciHal_fw_IoctlCtx.bLastStatus);
- }
- status = phNxpNciHal_fw_dnld_complete(pContext, wStatus, &pInfo);
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_FWDNLD_D(" phNxpNciHal_fw_dnld_complete : SUCCESS");
- } else {
- NXPLOG_FWDNLD_E(" phNxpNciHal_fw_dnld_complete : FAILED");
- }
- } else if ((gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) == true) {
- NXPLOG_FWDNLD_E("Invoking Download Recovery Sequence..");
-
- if (NFCSTATUS_SUCCESS == wStatus) {
- /* Perform the download Recovery sequence */
- wStatus = phNxpNciHal_fw_seq_handler(phNxpNciHal_dwnld_rec_seqhandler);
-
- status = phNxpNciHal_fw_dnld_complete(pContext, wStatus, &pInfo);
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_FWDNLD_D(" phNxpNciHal_fw_dnld_complete : SUCCESS");
- } else {
- NXPLOG_FWDNLD_E(" phNxpNciHal_fw_dnld_complete : FAILED");
- }
- }
- } else if ((gphNxpNciHal_fw_IoctlCtx.bRetryDnld) == true) {
- (gphNxpNciHal_fw_IoctlCtx.bPrevSessnOpen) = false;
- (gphNxpNciHal_fw_IoctlCtx.bDnldInitiated) = false;
- (gphNxpNciHal_fw_IoctlCtx.bForceDnld) = false;
- (gphNxpNciHal_fw_IoctlCtx.bSkipSeq) = false;
- (gphNxpNciHal_fw_IoctlCtx.bSkipForce) = false;
- (gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) = false;
- (gphNxpNciHal_fw_IoctlCtx.bSendNciCmd) = false;
-
- /* Perform the download sequence ... after successful recover attempt */
- wStatus = phNxpNciHal_fw_seq_handler(phNxpNciHal_dwnld_seqhandler);
-
- status = phNxpNciHal_fw_dnld_complete(pContext, wStatus, &pInfo);
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_FWDNLD_D(" phNxpNciHal_fw_dnld_complete : SUCCESS");
- } else {
- NXPLOG_FWDNLD_E(" phNxpNciHal_fw_dnld_complete : FAILED");
- }
- } else {
- NXPLOG_FWDNLD_D("phNxpNciHal_fw_dnld_complete: Download Status = 0x%x",
- status);
- if ((gphNxpNciHal_fw_IoctlCtx.bSkipSeq) == false) {
- if (NFCSTATUS_SUCCESS == status) {
- if (NFC_FW_DOWNLOAD == gphNxpNciHal_fw_IoctlCtx.IoctlCode) {
- NXPLOG_FWDNLD_E("Fw Download success.. ");
- } else if (PHLIBNFC_DNLD_MEM_READ ==
- gphNxpNciHal_fw_IoctlCtx.IoctlCode) {
- NXPLOG_FWDNLD_E("Read Request success.. ");
- } else if (PHLIBNFC_DNLD_MEM_WRITE ==
- gphNxpNciHal_fw_IoctlCtx.IoctlCode) {
- NXPLOG_FWDNLD_E("Write Request success.. ");
- } else if (PHLIBNFC_DNLD_READ_LOG ==
- gphNxpNciHal_fw_IoctlCtx.IoctlCode) {
- NXPLOG_FWDNLD_E("ReadLog Request success.. ");
- } else {
- NXPLOG_FWDNLD_E("Invalid Request!!");
- }
- } else {
- if (NFC_FW_DOWNLOAD == gphNxpNciHal_fw_IoctlCtx.IoctlCode) {
- NXPLOG_FWDNLD_E("Fw Download Failed!!");
- } else if (NFC_MEM_READ == gphNxpNciHal_fw_IoctlCtx.IoctlCode) {
- NXPLOG_FWDNLD_E("Read Request Failed!!");
- } else if (NFC_MEM_WRITE == gphNxpNciHal_fw_IoctlCtx.IoctlCode) {
- NXPLOG_FWDNLD_E("Write Request Failed!!");
- } else if (PHLIBNFC_DNLD_READ_LOG ==
- gphNxpNciHal_fw_IoctlCtx.IoctlCode) {
- NXPLOG_FWDNLD_E("ReadLog Request Failed!!");
- } else {
- NXPLOG_FWDNLD_E("Invalid Request!!");
- }
- }
- }
-
- if (gphNxpNciHal_fw_IoctlCtx.bSendNciCmd == false) {
- /* Call Tml Ioctl to enable/restore normal mode */
- wStatus = phTmlNfc_IoCtl(phTmlNfc_e_EnableNormalMode);
-
- if (NFCSTATUS_SUCCESS != wStatus) {
- NXPLOG_FWDNLD_E("Switching to NormalMode Failed!!");
- } else {
- wStatus = fStatus;
- }
- }
-
- (gphNxpNciHal_fw_IoctlCtx.bPrevSessnOpen) = false;
- (gphNxpNciHal_fw_IoctlCtx.bDnldInitiated) = false;
- (gphNxpNciHal_fw_IoctlCtx.bChipVer) = 0;
- (gphNxpNciHal_fw_IoctlCtx.bSkipSeq) = false;
- (gphNxpNciHal_fw_IoctlCtx.bForceDnld) = false;
- (gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) = false;
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = false;
- (gphNxpNciHal_fw_IoctlCtx.bSkipReset) = false;
- (gphNxpNciHal_fw_IoctlCtx.bSkipForce) = false;
- (gphNxpNciHal_fw_IoctlCtx.bSendNciCmd) = false;
- (gphNxpNciHal_fw_IoctlCtx.bDnldAttempts) = 0;
-
- if (gphNxpNciHal_fw_IoctlCtx.bDnldAttemptFailed == false) {
- } else {
- NXPLOG_FWDNLD_E("Returning Download Failed Status to Caller!!");
-
- (gphNxpNciHal_fw_IoctlCtx.bLastStatus) = NFCSTATUS_SUCCESS;
- (gphNxpNciHal_fw_IoctlCtx.bDnldAttemptFailed) = false;
- }
- phDnldNfc_CloseFwLibHandle();
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_fw_download_seq
-**
-** Description Download Sequence
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-NFCSTATUS phNxpNciHal_fw_download_seq(uint8_t bClkSrcVal, uint8_t bClkFreqVal) {
- NFCSTATUS status = NFCSTATUS_FAILED;
- phDnldNfc_Buff_t pInfo;
- char* pContext = "FW-Download";
-
- /* reset the global flags */
- gphNxpNciHal_fw_IoctlCtx.IoctlCode = NFC_FW_DOWNLOAD;
- (gphNxpNciHal_fw_IoctlCtx.bPrevSessnOpen) = false;
- (gphNxpNciHal_fw_IoctlCtx.bDnldInitiated) = false;
- (gphNxpNciHal_fw_IoctlCtx.bChipVer) = 0;
- (gphNxpNciHal_fw_IoctlCtx.bSkipSeq) = false;
- (gphNxpNciHal_fw_IoctlCtx.bForceDnld) = false;
- (gphNxpNciHal_fw_IoctlCtx.bDnldRecovery) = false;
- (gphNxpNciHal_fw_IoctlCtx.bRetryDnld) = false;
- (gphNxpNciHal_fw_IoctlCtx.bSkipReset) = false;
- (gphNxpNciHal_fw_IoctlCtx.bSkipForce) = false;
- (gphNxpNciHal_fw_IoctlCtx.bSendNciCmd) = false;
- (gphNxpNciHal_fw_IoctlCtx.bDnldAttempts) = 0;
- (gphNxpNciHal_fw_IoctlCtx.bClkSrcVal) = bClkSrcVal;
- (gphNxpNciHal_fw_IoctlCtx.bClkFreqVal) = bClkFreqVal;
- /* Get firmware version */
- if (NFCSTATUS_SUCCESS == phDnldNfc_InitImgInfo()) {
- NXPLOG_FWDNLD_D("phDnldNfc_InitImgInfo:SUCCESS");
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- if (gRecFWDwnld == true) {
- status =
- phNxpNciHal_fw_seq_handler(phNxpNciHal_dummy_rec_dwnld_seqhandler);
- } else
-#endif
- {
- status = phNxpNciHal_fw_seq_handler(phNxpNciHal_dwnld_seqhandler);
- }
- } else {
- NXPLOG_FWDNLD_E("phDnldNfc_InitImgInfo: FAILED");
- }
-
- /* Chage to normal mode */
- status = phNxpNciHal_fw_dnld_complete(pContext, status, &pInfo);
- /*if (NFCSTATUS_SUCCESS == status)
- {
- NXPLOG_FWDNLD_D(" phNxpNciHal_fw_dnld_complete : SUCCESS");
- }
- else
- {
- NXPLOG_FWDNLD_E(" phNxpNciHal_fw_dnld_complete : FAILED");
- }*/
-
- return status;
-}
-
-static NFCSTATUS phLibNfc_VerifyCrcStatus(uint8_t bCrcStatus) {
-#if ((NFC_NXP_CHIP_TYPE == PN551) || (NFC_NXP_CHIP_TYPE == PN553))
- uint8_t bBitPos = 1;
- uint8_t bShiftVal = 2;
-#else
- uint8_t bBitPos = 0;
- uint8_t bShiftVal = 1;
-#endif
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- while (bBitPos < 7) {
- if (!(bCrcStatus & bShiftVal)) {
- switch (bBitPos) {
- case 0: {
- NXPLOG_FWDNLD_E("User Data Crc is NOT OK!!");
- wStatus = NFCSTATUS_FAILED;
- break;
- }
- case 1: {
- NXPLOG_FWDNLD_E("Trim Data Crc is NOT OK!!");
- wStatus = NFCSTATUS_FAILED;
- break;
- }
- case 2: {
- NXPLOG_FWDNLD_E("Protected Data Crc is NOT OK!!");
- wStatus = NFCSTATUS_FAILED;
- break;
- }
- case 3: {
- NXPLOG_FWDNLD_E("Patch Code Crc is NOT OK!!");
- wStatus = NFCSTATUS_FAILED;
- break;
- }
- case 4: {
- NXPLOG_FWDNLD_E("Function Code Crc is NOT OK!!");
- wStatus = NFCSTATUS_FAILED;
- break;
- }
- case 5: {
- NXPLOG_FWDNLD_E("Patch Table Crc is NOT OK!!");
- wStatus = NFCSTATUS_FAILED;
- break;
- }
- case 6: {
- NXPLOG_FWDNLD_E("Function Table Crc is NOT OK!!");
- wStatus = NFCSTATUS_FAILED;
- break;
- }
- default: { break; }
- }
- }
-
- bShiftVal <<= 1;
- ++bBitPos;
- }
-
- return wStatus;
-}
diff --git a/halimpl/pn54x/dnld/phNxpNciHal_Dnld.h b/halimpl/pn54x/dnld/phNxpNciHal_Dnld.h
deleted file mode 100644
index d32fead..0000000
--- a/halimpl/pn54x/dnld/phNxpNciHal_Dnld.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2012-2014 NXP Semiconductors
- *
- * 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.
- */
-#ifndef _PHNXPNCIHAL_DNLD_H_
-#define _PHNXPNCIHAL_DNLD_H_
-
-#include <phNfcStatus.h>
-#include <phNfcTypes.h>
-
-NFCSTATUS phNxpNciHal_fw_download_seq(uint8_t bClkSrcVal, uint8_t bClkFreqVal);
-
-#endif /* _PHNXPNCIHAL_DNLD_H_ */
diff --git a/halimpl/pn54x/hal/phNxpNciHal.c b/halimpl/pn54x/hal/phNxpNciHal.c
deleted file mode 100644
index 5a799d5..0000000
--- a/halimpl/pn54x/hal/phNxpNciHal.c
+++ /dev/null
@@ -1,2653 +0,0 @@
-/*
- * Copyright (C) 2012-2014 NXP Semiconductors
- *
- * 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.
- */
-
-#include <phDal4Nfc_messageQueueLib.h>
-#include <phDnldNfc.h>
-#include <phNxpConfig.h>
-#include <phNxpLog.h>
-#include <phNxpNciHal.h>
-#include <phNxpNciHal_Adaptation.h>
-#include <phNxpNciHal_Dnld.h>
-#include <phNxpNciHal_NfcDepSWPrio.h>
-#include <phNxpNciHal_ext.h>
-#include <phTmlNfc.h>
-#include <sys/stat.h>
-/*********************** Global Variables *************************************/
-#define PN547C2_CLOCK_SETTING
-#undef PN547C2_FACTORY_RESET_DEBUG
-#define CORE_RES_STATUS_BYTE 3
-/* FW Mobile major number */
-#define FW_MOBILE_MAJOR_NUMBER_PN553 0x01
-#define FW_MOBILE_MAJOR_NUMBER_PN81A 0x02
-#define FW_MOBILE_MAJOR_NUMBER_PN551 0x05
-#define FW_MOBILE_MAJOR_NUMBER_PN48AD 0x01
-
-#if (NFC_NXP_CHIP_TYPE == PN551)
-#define FW_MOBILE_MAJOR_NUMBER FW_MOBILE_MAJOR_NUMBER_PN551
-#elif (NFC_NXP_CHIP_TYPE == PN553)
-#define FW_MOBILE_MAJOR_NUMBER FW_MOBILE_MAJOR_NUMBER_PN553
-#else
-#define FW_MOBILE_MAJOR_NUMBER FW_MOBILE_MAJOR_NUMBER_PN48AD
-#endif
-/* Processing of ISO 15693 EOF */
-extern uint8_t icode_send_eof;
-extern uint8_t icode_detected;
-static uint8_t cmd_icode_eof[] = {0x00, 0x00, 0x00};
-
-/* FW download success flag */
-static uint8_t fw_download_success = 0;
-
-static uint8_t config_access = false;
-static uint8_t config_success = true;
-/* NCI HAL Control structure */
-phNxpNciHal_Control_t nxpncihal_ctrl;
-
-/* NXP Poll Profile structure */
-phNxpNciProfile_Control_t nxpprofile_ctrl;
-
-/* TML Context */
-extern phTmlNfc_Context_t* gpphTmlNfc_Context;
-extern void phTmlNfc_set_fragmentation_enabled(
- phTmlNfc_i2cfragmentation_t result);
-/* global variable to get FW version from NCI response*/
-uint32_t wFwVerRsp;
-/* External global variable to get FW version */
-extern uint16_t wFwVer;
-
-extern uint16_t fw_maj_ver;
-extern uint16_t rom_version;
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
-extern uint8_t gRecFWDwnld;
-static uint8_t gRecFwRetryCount; // variable to hold dummy FW recovery count
-#endif
-static uint8_t Rx_data[NCI_MAX_DATA_LEN];
-
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
-uint8_t discovery_cmd[50] = {0};
-uint8_t discovery_cmd_len = 0;
-#endif
-uint32_t timeoutTimerId = 0;
-phNxpNciHal_Sem_t config_data;
-
-phNxpNciClock_t phNxpNciClock = {0, {0}, false};
-
-phNxpNciRfSetting_t phNxpNciRfSet = {false, {0}};
-
-phNxpNciMwEepromArea_t phNxpNciMwEepromArea = {false, {0}};
-
-/**************** local methods used in this file only ************************/
-static NFCSTATUS phNxpNciHal_fw_download(void);
-static void phNxpNciHal_open_complete(NFCSTATUS status);
-static void phNxpNciHal_write_complete(void* pContext,
- phTmlNfc_TransactInfo_t* pInfo);
-static void phNxpNciHal_read_complete(void* pContext,
- phTmlNfc_TransactInfo_t* pInfo);
-static void phNxpNciHal_close_complete(NFCSTATUS status);
-static void phNxpNciHal_core_initialized_complete(NFCSTATUS status);
-static void phNxpNciHal_pre_discover_complete(NFCSTATUS status);
-static void phNxpNciHal_power_cycle_complete(NFCSTATUS status);
-static void phNxpNciHal_kill_client_thread(
- phNxpNciHal_Control_t* p_nxpncihal_ctrl);
-static void* phNxpNciHal_client_thread(void* arg);
-static void phNxpNciHal_get_clk_freq(void);
-static void phNxpNciHal_set_clock(void);
-static void phNxpNciHal_check_factory_reset(void);
-static void phNxpNciHal_print_res_status(uint8_t* p_rx_data, uint16_t* p_len);
-static NFCSTATUS phNxpNciHal_CheckValidFwVersion(void);
-static void phNxpNciHal_enable_i2c_fragmentation();
-static NFCSTATUS phNxpNciHal_get_mw_eeprom(void);
-static NFCSTATUS phNxpNciHal_set_mw_eeprom(void);
-static int phNxpNciHal_fw_mw_ver_check();
-NFCSTATUS phNxpNciHal_check_clock_config(void);
-NFCSTATUS phNxpNciHal_china_tianjin_rf_setting(void);
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
-static NFCSTATUS phNxpNciHalRFConfigCmdRecSequence();
-static NFCSTATUS phNxpNciHal_CheckRFCmdRespStatus();
-#endif
-int check_config_parameter();
-
-/******************************************************************************
- * Function phNxpNciHal_client_thread
- *
- * Description This function is a thread handler which handles all TML and
- * NCI messages.
- *
- * Returns void
- *
- ******************************************************************************/
-static void* phNxpNciHal_client_thread(void* arg) {
- phNxpNciHal_Control_t* p_nxpncihal_ctrl = (phNxpNciHal_Control_t*)arg;
- phLibNfc_Message_t msg;
-
- NXPLOG_NCIHAL_D("thread started");
-
- p_nxpncihal_ctrl->thread_running = 1;
-
- while (p_nxpncihal_ctrl->thread_running == 1) {
- /* Fetch next message from the NFC stack message queue */
- if (phDal4Nfc_msgrcv(p_nxpncihal_ctrl->gDrvCfg.nClientId, &msg, 0, 0) ==
- -1) {
- NXPLOG_NCIHAL_E("NFC client received bad message");
- continue;
- }
-
- if (p_nxpncihal_ctrl->thread_running == 0) {
- break;
- }
-
- switch (msg.eMsgType) {
- case PH_LIBNFC_DEFERREDCALL_MSG: {
- phLibNfc_DeferredCall_t* deferCall =
- (phLibNfc_DeferredCall_t*)(msg.pMsgData);
-
- REENTRANCE_LOCK();
- deferCall->pCallback(deferCall->pParameter);
- REENTRANCE_UNLOCK();
-
- break;
- }
-
- case NCI_HAL_OPEN_CPLT_MSG: {
- REENTRANCE_LOCK();
- if (nxpncihal_ctrl.p_nfc_stack_cback != NULL) {
- /* Send the event */
- (*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_OPEN_CPLT_EVT,
- HAL_NFC_STATUS_OK);
- }
- REENTRANCE_UNLOCK();
- break;
- }
-
- case NCI_HAL_CLOSE_CPLT_MSG: {
- REENTRANCE_LOCK();
- if (nxpncihal_ctrl.p_nfc_stack_cback != NULL) {
- /* Send the event */
- (*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_CLOSE_CPLT_EVT,
- HAL_NFC_STATUS_OK);
- phNxpNciHal_kill_client_thread(&nxpncihal_ctrl);
- }
- REENTRANCE_UNLOCK();
- break;
- }
-
- case NCI_HAL_POST_INIT_CPLT_MSG: {
- REENTRANCE_LOCK();
- if (nxpncihal_ctrl.p_nfc_stack_cback != NULL) {
- /* Send the event */
- (*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_POST_INIT_CPLT_EVT,
- HAL_NFC_STATUS_OK);
- }
- REENTRANCE_UNLOCK();
- break;
- }
-
- case NCI_HAL_PRE_DISCOVER_CPLT_MSG: {
- REENTRANCE_LOCK();
- if (nxpncihal_ctrl.p_nfc_stack_cback != NULL) {
- /* Send the event */
- (*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_PRE_DISCOVER_CPLT_EVT,
- HAL_NFC_STATUS_OK);
- }
- REENTRANCE_UNLOCK();
- break;
- }
-
- case NCI_HAL_ERROR_MSG: {
- REENTRANCE_LOCK();
- if (nxpncihal_ctrl.p_nfc_stack_cback != NULL) {
- /* Send the event */
- (*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_ERROR_EVT,
- HAL_NFC_STATUS_FAILED);
- }
- REENTRANCE_UNLOCK();
- break;
- }
-
- case NCI_HAL_RX_MSG: {
- REENTRANCE_LOCK();
- if (nxpncihal_ctrl.p_nfc_stack_data_cback != NULL) {
- (*nxpncihal_ctrl.p_nfc_stack_data_cback)(nxpncihal_ctrl.rsp_len,
- nxpncihal_ctrl.p_rsp_data);
- }
- REENTRANCE_UNLOCK();
- break;
- }
- }
- }
-
- NXPLOG_NCIHAL_D("NxpNciHal thread stopped");
-
- return NULL;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_kill_client_thread
- *
- * Description This function safely kill the client thread and clean all
- * resources.
- *
- * Returns void.
- *
- ******************************************************************************/
-static void phNxpNciHal_kill_client_thread(
- phNxpNciHal_Control_t* p_nxpncihal_ctrl) {
- NXPLOG_NCIHAL_D("Terminating phNxpNciHal client thread...");
-
- p_nxpncihal_ctrl->p_nfc_stack_cback = NULL;
- p_nxpncihal_ctrl->p_nfc_stack_data_cback = NULL;
- p_nxpncihal_ctrl->thread_running = 0;
-
- return;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_fw_download
- *
- * Description This function download the PN54X secure firmware to IC. If
- * firmware version in Android filesystem and firmware in the
- * IC is same then firmware download will return with success
- * without downloading the firmware.
- *
- * Returns NFCSTATUS_SUCCESS if firmware download successful
- * NFCSTATUS_FAILED in case of failure
- *
- ******************************************************************************/
-static NFCSTATUS phNxpNciHal_fw_download(void) {
- NFCSTATUS status = NFCSTATUS_FAILED;
- /*NCI_RESET_CMD*/
- static uint8_t cmd_reset_nci[] = {0x20, 0x00, 0x01, 0x00};
-
- phNxpNciHal_get_clk_freq();
- status = phTmlNfc_IoCtl(phTmlNfc_e_EnableDownloadMode);
- if (NFCSTATUS_SUCCESS == status) {
- /* Set the obtained device handle to download module */
- phDnldNfc_SetHwDevHandle();
- NXPLOG_NCIHAL_D("Calling Seq handler for FW Download \n");
- status = phNxpNciHal_fw_download_seq(nxpprofile_ctrl.bClkSrcVal,
- nxpprofile_ctrl.bClkFreqVal);
- if (status != NFCSTATUS_SUCCESS) {
- /* Abort any pending read and write */
- phNxpNciHal_send_ext_cmd(sizeof(cmd_reset_nci), cmd_reset_nci);
- phTmlNfc_ReadAbort();
- phTmlNfc_WriteAbort();
- }
- phDnldNfc_ReSetHwDevHandle();
- } else {
- status = NFCSTATUS_FAILED;
- }
-
- return status;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_CheckValidFwVersion
- *
- * Description This function checks the valid FW for Mobile device.
- * If the FW doesn't belong the Mobile device it further
- * checks nxp config file to override.
- *
- * Returns NFCSTATUS_SUCCESS if valid fw version found
- * NFCSTATUS_NOT_ALLOWED in case of FW not valid for mobile
- * device
- *
- ******************************************************************************/
-static NFCSTATUS phNxpNciHal_CheckValidFwVersion(void) {
- NFCSTATUS status = NFCSTATUS_NOT_ALLOWED;
- const unsigned char sfw_infra_major_no = 0x02;
- unsigned char ufw_current_major_no = 0x00;
- unsigned long num = 0;
- int isfound = 0;
-
- /* extract the firmware's major no */
- ufw_current_major_no = ((0x00FF) & (wFwVer >> 8U));
-
- NXPLOG_NCIHAL_D("%s current_major_no = 0x%x", __FUNCTION__,
- ufw_current_major_no);
- if ((ufw_current_major_no == FW_MOBILE_MAJOR_NUMBER) ||
- ((ufw_current_major_no == FW_MOBILE_MAJOR_NUMBER_PN81A &&
- (nxpncihal_ctrl.nci_info.nci_version == NCI_VERSION_2_0)))
-#if (NFC_NXP_CHIP_TYPE == PN553)
- || ((rom_version == 0x00) &&
- (ufw_current_major_no == FW_MOBILE_MAJOR_NUMBER_PN81A))
-#endif
- )
-
- {
- status = NFCSTATUS_SUCCESS;
- } else if (ufw_current_major_no == sfw_infra_major_no) {
- if (rom_version == FW_MOBILE_ROM_VERSION_PN553 &&
- nxpncihal_ctrl.nci_info.nci_version == NCI_VERSION_2_0) {
- NXPLOG_NCIHAL_D(" PN81A allow Fw download with major number = 0x%x",
- ufw_current_major_no);
- status = NFCSTATUS_SUCCESS;
- } else {
- /* Check the nxp config file if still want to go for download */
- /* By default NAME_NXP_FW_PROTECION_OVERRIDE will not be defined in config
- file.
- If user really want to override the Infra firmware over mobile
- firmware, please
- put "NXP_FW_PROTECION_OVERRIDE=0x01" in libnfc-nxp.conf file.
- Please note once Infra firmware downloaded to Mobile device, The device
- can never be updated to Mobile firmware*/
- isfound =
- GetNxpNumValue(NAME_NXP_FW_PROTECION_OVERRIDE, &num, sizeof(num));
- if (isfound > 0) {
- if (num == 0x01) {
- NXPLOG_NCIHAL_D("Override Infra FW over Mobile");
- status = NFCSTATUS_SUCCESS;
- } else {
- NXPLOG_NCIHAL_D(
- "Firmware download not allowed (NXP_FW_PROTECION_OVERRIDE "
- "invalid value)");
- }
- } else {
- NXPLOG_NCIHAL_D(
- "Firmware download not allowed (NXP_FW_PROTECION_OVERRIDE not "
- "defined)");
- }
- }
- }
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- else if (gRecFWDwnld == TRUE) {
- status = NFCSTATUS_SUCCESS;
- }
-#endif
- else if (wFwVerRsp == 0) {
- NXPLOG_NCIHAL_E(
- "FW Version not received by NCI command >>> Force Firmware download");
- status = NFCSTATUS_SUCCESS;
- } else {
- NXPLOG_NCIHAL_E("Wrong FW Version >>> Firmware download not allowed");
- }
-
- return status;
-}
-
-static void phNxpNciHal_get_clk_freq(void) {
- unsigned long num = 0;
- int isfound = 0;
-
- nxpprofile_ctrl.bClkSrcVal = 0;
- nxpprofile_ctrl.bClkFreqVal = 0;
- nxpprofile_ctrl.bTimeout = 0;
-
- isfound = GetNxpNumValue(NAME_NXP_SYS_CLK_SRC_SEL, &num, sizeof(num));
- if (isfound > 0) {
- nxpprofile_ctrl.bClkSrcVal = num;
- }
-
- num = 0;
- isfound = 0;
- isfound = GetNxpNumValue(NAME_NXP_SYS_CLK_FREQ_SEL, &num, sizeof(num));
- if (isfound > 0) {
- nxpprofile_ctrl.bClkFreqVal = num;
- }
-
- num = 0;
- isfound = 0;
- isfound = GetNxpNumValue(NAME_NXP_SYS_CLOCK_TO_CFG, &num, sizeof(num));
- if (isfound > 0) {
- nxpprofile_ctrl.bTimeout = num;
- }
-
- NXPLOG_FWDNLD_D("gphNxpNciHal_fw_IoctlCtx.bClkSrcVal = 0x%x",
- nxpprofile_ctrl.bClkSrcVal);
- NXPLOG_FWDNLD_D("gphNxpNciHal_fw_IoctlCtx.bClkFreqVal = 0x%x",
- nxpprofile_ctrl.bClkFreqVal);
- NXPLOG_FWDNLD_D("gphNxpNciHal_fw_IoctlCtx.bClkFreqVal = 0x%x",
- nxpprofile_ctrl.bTimeout);
-
- if ((nxpprofile_ctrl.bClkSrcVal < CLK_SRC_XTAL) ||
- (nxpprofile_ctrl.bClkSrcVal > CLK_SRC_PLL)) {
- NXPLOG_FWDNLD_E(
- "Clock source value is wrong in config file, setting it as default");
- nxpprofile_ctrl.bClkSrcVal = NXP_SYS_CLK_SRC_SEL;
- }
- if ((nxpprofile_ctrl.bClkFreqVal < CLK_FREQ_13MHZ) ||
- (nxpprofile_ctrl.bClkFreqVal > CLK_FREQ_52MHZ)) {
- NXPLOG_FWDNLD_E(
- "Clock frequency value is wrong in config file, setting it as default");
- nxpprofile_ctrl.bClkFreqVal = NXP_SYS_CLK_FREQ_SEL;
- }
- if ((nxpprofile_ctrl.bTimeout < CLK_TO_CFG_DEF) ||
- (nxpprofile_ctrl.bTimeout > CLK_TO_CFG_MAX)) {
- NXPLOG_FWDNLD_E(
- "Clock timeout value is wrong in config file, setting it as default");
- nxpprofile_ctrl.bTimeout = CLK_TO_CFG_DEF;
- }
-}
-
-/******************************************************************************
- * Function phNxpNciHal_open
- *
- * Description This function is called by libnfc-nci during the
- * initialization of the NFCC. It opens the physical connection
- * with NFCC (PN54X) and creates required client thread for
- * operation.
- * After open is complete, status is informed to libnfc-nci
- * through callback function.
- *
- * Returns This function return NFCSTATUS_SUCCES (0) in case of success
- * In case of failure returns other failure value.
- *
- ******************************************************************************/
-int phNxpNciHal_open(nfc_stack_callback_t* p_cback,
- nfc_stack_data_callback_t* p_data_cback) {
- phOsalNfc_Config_t tOsalConfig;
- phTmlNfc_Config_t tTmlConfig;
- char* nfc_dev_node = NULL;
- const uint16_t max_len = 260;
- NFCSTATUS wConfigStatus = NFCSTATUS_SUCCESS;
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- /*NCI_INIT_CMD*/
- static uint8_t cmd_init_nci[] = {0x20, 0x01, 0x00};
- /*NCI_RESET_CMD*/
- static uint8_t cmd_reset_nci[] = {0x20, 0x00, 0x01, 0x00};
- /*NCI2_0_INIT_CMD*/
- static uint8_t cmd_init_nci2_0[] = {0x20, 0x01, 0x02, 0x00, 0x00};
- if (nxpncihal_ctrl.halStatus == HAL_STATUS_OPEN) {
- NXPLOG_NCIHAL_E("phNxpNciHal_open already open");
- return NFCSTATUS_SUCCESS;
- }
- /* reset config cache */
- resetNxpConfig();
-
- int init_retry_cnt = 0;
- int8_t ret_val = 0x00;
-
- /* initialize trace level */
- phNxpLog_InitializeLogLevel();
-
- /*Create the timer for extns write response*/
- timeoutTimerId = phOsalNfc_Timer_Create();
-
- if (phNxpNciHal_init_monitor() == NULL) {
- NXPLOG_NCIHAL_E("Init monitor failed");
- return NFCSTATUS_FAILED;
- }
-
- CONCURRENCY_LOCK();
- memset(&nxpncihal_ctrl, 0x00, sizeof(nxpncihal_ctrl));
- memset(&tOsalConfig, 0x00, sizeof(tOsalConfig));
- memset(&tTmlConfig, 0x00, sizeof(tTmlConfig));
- memset(&nxpprofile_ctrl, 0, sizeof(phNxpNciProfile_Control_t));
-
- /* By default HAL status is HAL_STATUS_OPEN */
- nxpncihal_ctrl.halStatus = HAL_STATUS_OPEN;
-
- nxpncihal_ctrl.p_nfc_stack_cback = p_cback;
- nxpncihal_ctrl.p_nfc_stack_data_cback = p_data_cback;
- /*nci version NCI_VERSION_UNKNOWN version by default*/
- nxpncihal_ctrl.nci_info.nci_version = NCI_VERSION_UNKNOWN;
- /* Read the nfc device node name */
- nfc_dev_node = (char*)malloc(max_len * sizeof(char));
- if (nfc_dev_node == NULL) {
- NXPLOG_NCIHAL_E("malloc of nfc_dev_node failed ");
- goto clean_and_return;
- } else if (!GetNxpStrValue(NAME_NXP_NFC_DEV_NODE, nfc_dev_node,
- sizeof(nfc_dev_node))) {
- NXPLOG_NCIHAL_E(
- "Invalid nfc device node name keeping the default device node "
- "/dev/pn54x");
- strcpy(nfc_dev_node, "/dev/pn54x");
- }
-
- /* Configure hardware link */
- nxpncihal_ctrl.gDrvCfg.nClientId = phDal4Nfc_msgget(0, 0600);
- nxpncihal_ctrl.gDrvCfg.nLinkType = ENUM_LINK_TYPE_I2C; /* For PN54X */
- tTmlConfig.pDevName = (int8_t*)nfc_dev_node;
- tOsalConfig.dwCallbackThreadId = (uintptr_t)nxpncihal_ctrl.gDrvCfg.nClientId;
- tOsalConfig.pLogFile = NULL;
- tTmlConfig.dwGetMsgThreadId = (uintptr_t)nxpncihal_ctrl.gDrvCfg.nClientId;
-
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
- memset(discovery_cmd, 0, sizeof(discovery_cmd));
- discovery_cmd_len = 0;
-#endif
-
- /* Initialize TML layer */
- wConfigStatus = phTmlNfc_Init(&tTmlConfig);
- if (wConfigStatus != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("phTmlNfc_Init Failed");
- goto clean_and_return;
- } else {
- if (nfc_dev_node != NULL) {
- free(nfc_dev_node);
- nfc_dev_node = NULL;
- }
- }
-
- /* Create the client thread */
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- ret_val = pthread_create(&nxpncihal_ctrl.client_thread, &attr,
- phNxpNciHal_client_thread, &nxpncihal_ctrl);
- pthread_attr_destroy(&attr);
- if (ret_val != 0) {
- NXPLOG_NCIHAL_E("pthread_create failed");
- wConfigStatus = phTmlNfc_Shutdown();
- goto clean_and_return;
- }
-
- CONCURRENCY_UNLOCK();
-
- /* call read pending */
- status = phTmlNfc_Read(
- nxpncihal_ctrl.p_cmd_data, NCI_MAX_DATA_LEN,
- (pphTmlNfc_TransactCompletionCb_t)&phNxpNciHal_read_complete, NULL);
- if (status != NFCSTATUS_PENDING) {
- NXPLOG_NCIHAL_E("TML Read status error status = %x", status);
- wConfigStatus = phTmlNfc_Shutdown();
- wConfigStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
-init_retry:
-
- phNxpNciHal_ext_init();
-
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_reset_nci), cmd_reset_nci);
- if ((status != NFCSTATUS_SUCCESS) &&
- (nxpncihal_ctrl.retry_cnt >= MAX_RETRY_COUNT)) {
- NXPLOG_NCIHAL_E("Force FW Download, NFCC not coming out from Standby");
- wConfigStatus = NFCSTATUS_FAILED;
- goto force_download;
- } else if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NCI_CORE_RESET: Failed");
- if (init_retry_cnt < 3) {
- init_retry_cnt++;
- (void)phNxpNciHal_power_cycle();
- goto init_retry;
- } else
- init_retry_cnt = 0;
- wConfigStatus = phTmlNfc_Shutdown();
- wConfigStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_init_nci2_0), cmd_init_nci2_0);
- if (status == NFCSTATUS_SUCCESS) {
- if (nxpncihal_ctrl.nci_info.nci_version != NCI_VERSION_2_0) {
- NXPLOG_NCIHAL_E("Chip is in NCI1.0 mode reset the chip again");
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_reset_nci), cmd_reset_nci);
- if (status == NFCSTATUS_SUCCESS) {
- if (nxpncihal_ctrl.nci_info.nci_version == NCI_VERSION_2_0) {
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_init_nci2_0),
- cmd_init_nci2_0);
- } else {
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_init_nci), cmd_init_nci);
- }
- }
- }
- }
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NCI_CORE_INIT : Failed");
- if (init_retry_cnt < 3) {
- init_retry_cnt++;
- (void)phNxpNciHal_power_cycle();
- goto init_retry;
- } else
- init_retry_cnt = 0;
- wConfigStatus = phTmlNfc_Shutdown();
- wConfigStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
- phNxpNciHal_enable_i2c_fragmentation();
- /*Get FW version from device*/
- status = phDnldNfc_InitImgInfo();
- NXPLOG_NCIHAL_E("FW version for FW file = 0x%x", wFwVer);
- NXPLOG_NCIHAL_E("FW version from device = 0x%x", wFwVerRsp);
- if ((wFwVerRsp & 0x0000FFFF) == wFwVer) {
- NXPLOG_NCIHAL_D("FW uptodate not required");
- phDnldNfc_ReSetHwDevHandle();
- } else {
- force_download:
- if (wFwVerRsp == 0) {
- phDnldNfc_InitImgInfo();
- }
- if (NFCSTATUS_SUCCESS == phNxpNciHal_CheckValidFwVersion()) {
- NXPLOG_NCIHAL_D("FW update required");
- fw_download_success = 0;
- status = phNxpNciHal_fw_download();
- if (status != NFCSTATUS_SUCCESS) {
- if (NFCSTATUS_SUCCESS != phNxpNciHal_fw_mw_ver_check()) {
- NXPLOG_NCIHAL_D("Chip Version Middleware Version mismatch!!!!");
- phOsalNfc_Timer_Cleanup();
- phTmlNfc_Shutdown();
- wConfigStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
- NXPLOG_NCIHAL_E("FW Download failed - NFCC init will continue");
- } else {
- wConfigStatus = NFCSTATUS_SUCCESS;
- fw_download_success = 1;
- /* call read pending */
- status = phTmlNfc_Read(
- nxpncihal_ctrl.p_cmd_data, NCI_MAX_DATA_LEN,
- (pphTmlNfc_TransactCompletionCb_t)&phNxpNciHal_read_complete, NULL);
- if (status != NFCSTATUS_PENDING) {
- NXPLOG_NCIHAL_E("TML Read status error status = %x", status);
- wConfigStatus = phTmlNfc_Shutdown();
- wConfigStatus = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
- }
- } else {
- if (wFwVerRsp == 0) phDnldNfc_ReSetHwDevHandle();
- }
- }
- /* Call open complete */
- phNxpNciHal_open_complete(wConfigStatus);
-
- return wConfigStatus;
-
-clean_and_return:
- CONCURRENCY_UNLOCK();
- if (nfc_dev_node != NULL) {
- free(nfc_dev_node);
- nfc_dev_node = NULL;
- }
- /* Report error status */
- (*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_OPEN_CPLT_EVT,
- HAL_NFC_STATUS_FAILED);
-
- nxpncihal_ctrl.p_nfc_stack_cback = NULL;
- nxpncihal_ctrl.p_nfc_stack_data_cback = NULL;
- phNxpNciHal_cleanup_monitor();
- nxpncihal_ctrl.halStatus = HAL_STATUS_CLOSE;
- return NFCSTATUS_FAILED;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_fw_mw_check
- *
- * Description This function inform the status of phNxpNciHal_fw_mw_check
- * function to libnfc-nci.
- *
- * Returns int.
- *
- ******************************************************************************/
-int phNxpNciHal_fw_mw_ver_check() {
- NFCSTATUS status = NFCSTATUS_FAILED;
- if (!(strcmp(COMPILATION_MW, "PN553")) &&
- (rom_version == FW_MOBILE_ROM_VERSION_PN553) &&
- (fw_maj_ver == 0x01 || fw_maj_ver == 0x02)) {
- status = NFCSTATUS_SUCCESS;
- } else if (!strcmp(COMPILATION_MW, "PN551") &&
- (rom_version == FW_MOBILE_ROM_VERSION_PN551) &&
- (fw_maj_ver == 0x05)) {
- status = NFCSTATUS_SUCCESS;
- } else if (!strcmp(COMPILATION_MW, "PN548C2") &&
- (rom_version == FW_MOBILE_ROM_VERSION_PN548AD) &&
- (fw_maj_ver == 0x01)) {
- status = NFCSTATUS_SUCCESS;
- } else if (!strcmp(COMPILATION_MW, "PN547C2") &&
- (rom_version == FW_MOBILE_ROM_VERSION_PN547C2) &&
- (fw_maj_ver == 0x01)) {
- status = NFCSTATUS_SUCCESS;
- }
- return status;
-}
-/******************************************************************************
- * Function phNxpNciHal_open_complete
- *
- * Description This function inform the status of phNxpNciHal_open
- * function to libnfc-nci.
- *
- * Returns void.
- *
- ******************************************************************************/
-static void phNxpNciHal_open_complete(NFCSTATUS status) {
- static phLibNfc_Message_t msg;
-
- if (status == NFCSTATUS_SUCCESS) {
- msg.eMsgType = NCI_HAL_OPEN_CPLT_MSG;
- nxpncihal_ctrl.hal_open_status = true;
- } else {
- msg.eMsgType = NCI_HAL_ERROR_MSG;
- }
-
- msg.pMsgData = NULL;
- msg.Size = 0;
-
- phTmlNfc_DeferredCall(gpphTmlNfc_Context->dwCallbackThreadId,
- (phLibNfc_Message_t*)&msg);
-
- return;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_write
- *
- * Description This function write the data to NFCC through physical
- * interface (e.g. I2C) using the PN54X driver interface.
- * Before sending the data to NFCC, phNxpNciHal_write_ext
- * is called to check if there is any extension processing
- * is required for the NCI packet being sent out.
- *
- * Returns It returns number of bytes successfully written to NFCC.
- *
- ******************************************************************************/
-int phNxpNciHal_write(uint16_t data_len, const uint8_t* p_data) {
- NFCSTATUS status = NFCSTATUS_FAILED;
- static phLibNfc_Message_t msg;
- if (nxpncihal_ctrl.halStatus != HAL_STATUS_OPEN) {
- return NFCSTATUS_FAILED;
- }
- /* Create local copy of cmd_data */
- memcpy(nxpncihal_ctrl.p_cmd_data, p_data, data_len);
- nxpncihal_ctrl.cmd_len = data_len;
- if (nxpncihal_ctrl.cmd_len > NCI_MAX_DATA_LEN) {
- NXPLOG_NCIHAL_D("cmd_len exceeds limit NCI_MAX_DATA_LEN");
- goto clean_and_return;
- }
-#ifdef P2P_PRIO_LOGIC_HAL_IMP
- /* Specific logic to block RF disable when P2P priority logic is busy */
- if (p_data[0] == 0x21 && p_data[1] == 0x06 && p_data[2] == 0x01 &&
- EnableP2P_PrioLogic == true) {
- NXPLOG_NCIHAL_D("P2P priority logic busy: Disable it.");
- phNxpNciHal_clean_P2P_Prio();
- }
-#endif
-
- /* Check for NXP ext before sending write */
- status =
- phNxpNciHal_write_ext(&nxpncihal_ctrl.cmd_len, nxpncihal_ctrl.p_cmd_data,
- &nxpncihal_ctrl.rsp_len, nxpncihal_ctrl.p_rsp_data);
- if (status != NFCSTATUS_SUCCESS) {
- /* Do not send packet to PN54X, send response directly */
- msg.eMsgType = NCI_HAL_RX_MSG;
- msg.pMsgData = NULL;
- msg.Size = 0;
-
- phTmlNfc_DeferredCall(gpphTmlNfc_Context->dwCallbackThreadId,
- (phLibNfc_Message_t*)&msg);
- goto clean_and_return;
- }
-
- CONCURRENCY_LOCK();
- data_len = phNxpNciHal_write_unlocked(nxpncihal_ctrl.cmd_len,
- nxpncihal_ctrl.p_cmd_data);
- CONCURRENCY_UNLOCK();
-
- if (icode_send_eof == 1) {
- usleep(10000);
- icode_send_eof = 2;
- phNxpNciHal_send_ext_cmd(3, cmd_icode_eof);
- }
-
-clean_and_return:
- /* No data written */
- return data_len;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_write_unlocked
- *
- * Description This is the actual function which is being called by
- * phNxpNciHal_write. This function writes the data to NFCC.
- * It waits till write callback provide the result of write
- * process.
- *
- * Returns It returns number of bytes successfully written to NFCC.
- *
- ******************************************************************************/
-int phNxpNciHal_write_unlocked(uint16_t data_len, const uint8_t* p_data) {
- NFCSTATUS status = NFCSTATUS_INVALID_PARAMETER;
- phNxpNciHal_Sem_t cb_data;
- nxpncihal_ctrl.retry_cnt = 0;
- static uint8_t reset_ntf[] = {0x60, 0x00, 0x06, 0xA0, 0x00,
- 0xC7, 0xD4, 0x00, 0x00};
-
- /* Create the local semaphore */
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("phNxpNciHal_write_unlocked Create cb data failed");
- data_len = 0;
- goto clean_and_return;
- }
-
- /* Create local copy of cmd_data */
- memcpy(nxpncihal_ctrl.p_cmd_data, p_data, data_len);
- nxpncihal_ctrl.cmd_len = data_len;
-
-retry:
-
- data_len = nxpncihal_ctrl.cmd_len;
-
- status = phTmlNfc_Write(
- (uint8_t*)nxpncihal_ctrl.p_cmd_data, (uint16_t)nxpncihal_ctrl.cmd_len,
- (pphTmlNfc_TransactCompletionCb_t)&phNxpNciHal_write_complete,
- (void*)&cb_data);
- if (status != NFCSTATUS_PENDING) {
- NXPLOG_NCIHAL_E("write_unlocked status error");
- data_len = 0;
- goto clean_and_return;
- }
-
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_NCIHAL_E("write_unlocked semaphore error");
- data_len = 0;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- data_len = 0;
- if (nxpncihal_ctrl.retry_cnt++ < MAX_RETRY_COUNT) {
- NXPLOG_NCIHAL_E(
- "write_unlocked failed - PN54X Maybe in Standby Mode - Retry");
- /* 10ms delay to give NFCC wake up delay */
- usleep(1000 * 10);
- goto retry;
- } else {
- NXPLOG_NCIHAL_E(
- "write_unlocked failed - PN54X Maybe in Standby Mode (max count = "
- "0x%x)",
- nxpncihal_ctrl.retry_cnt);
-
- status = phTmlNfc_IoCtl(phTmlNfc_e_ResetDevice);
-
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_NCIHAL_D("PN54X Reset - SUCCESS\n");
- } else {
- NXPLOG_NCIHAL_D("PN54X Reset - FAILED\n");
- }
- if (nxpncihal_ctrl.p_nfc_stack_data_cback != NULL &&
- nxpncihal_ctrl.p_rx_data != NULL &&
- nxpncihal_ctrl.hal_open_status == true) {
- NXPLOG_NCIHAL_D(
- "Send the Core Reset NTF to upper layer, which will trigger the "
- "recovery\n");
- // Send the Core Reset NTF to upper layer, which will trigger the
- // recovery.
- nxpncihal_ctrl.rx_data_len = sizeof(reset_ntf);
- memcpy(nxpncihal_ctrl.p_rx_data, reset_ntf, sizeof(reset_ntf));
- (*nxpncihal_ctrl.p_nfc_stack_data_cback)(nxpncihal_ctrl.rx_data_len,
- nxpncihal_ctrl.p_rx_data);
- }
- }
- }
-
-clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
- return data_len;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_write_complete
- *
- * Description This function handles write callback.
- *
- * Returns void.
- *
- ******************************************************************************/
-static void phNxpNciHal_write_complete(void* pContext,
- phTmlNfc_TransactInfo_t* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
-
- if (pInfo->wStatus == NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("write successful status = 0x%x", pInfo->wStatus);
- } else {
- NXPLOG_NCIHAL_E("write error status = 0x%x", pInfo->wStatus);
- }
-
- p_cb_data->status = pInfo->wStatus;
-
- SEM_POST(p_cb_data);
-
- return;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_read_complete
- *
- * Description This function is called whenever there is an NCI packet
- * received from NFCC. It could be RSP or NTF packet. This
- * function provide the received NCI packet to libnfc-nci
- * using data callback of libnfc-nci.
- * There is a pending read called from each
- * phNxpNciHal_read_complete so each a packet received from
- * NFCC can be provide to libnfc-nci.
- *
- * Returns void.
- *
- ******************************************************************************/
-static void phNxpNciHal_read_complete(void* pContext,
- phTmlNfc_TransactInfo_t* pInfo) {
- NFCSTATUS status = NFCSTATUS_FAILED;
- UNUSED(pContext);
- if (nxpncihal_ctrl.read_retry_cnt == 1) {
- nxpncihal_ctrl.read_retry_cnt = 0;
- }
-
- if (pInfo->wStatus == NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("read successful status = 0x%x", pInfo->wStatus);
-
- nxpncihal_ctrl.p_rx_data = pInfo->pBuff;
- nxpncihal_ctrl.rx_data_len = pInfo->wLength;
-
- status = phNxpNciHal_process_ext_rsp(nxpncihal_ctrl.p_rx_data,
- &nxpncihal_ctrl.rx_data_len);
-
- phNxpNciHal_print_res_status(nxpncihal_ctrl.p_rx_data,
- &nxpncihal_ctrl.rx_data_len);
- /* Check if response should go to hal module only */
- if (nxpncihal_ctrl.hal_ext_enabled == TRUE &&
- (nxpncihal_ctrl.p_rx_data[0x00] & NCI_MT_MASK) == NCI_MT_RSP) {
- if (status == NFCSTATUS_FAILED) {
- NXPLOG_NCIHAL_D("enter into NFCC init recovery");
- nxpncihal_ctrl.ext_cb_data.status = status;
- }
- /* Unlock semaphore only for responses*/
- if ((nxpncihal_ctrl.p_rx_data[0x00] & NCI_MT_MASK) == NCI_MT_RSP ||
- ((icode_detected == true) && (icode_send_eof == 3))) {
- /* Unlock semaphore */
- SEM_POST(&(nxpncihal_ctrl.ext_cb_data));
- }
- } // Notification Checking
- else if ((nxpncihal_ctrl.hal_ext_enabled == TRUE) &&
- ((nxpncihal_ctrl.p_rx_data[0x00] & NCI_MT_MASK) == NCI_MT_NTF) &&
- (nxpncihal_ctrl.nci_info.wait_for_ntf == TRUE)) {
- /* Unlock semaphore waiting for only ntf*/
- SEM_POST(&(nxpncihal_ctrl.ext_cb_data));
- nxpncihal_ctrl.nci_info.wait_for_ntf = FALSE;
- }
- /* Read successful send the event to higher layer */
- else if ((nxpncihal_ctrl.p_nfc_stack_data_cback != NULL) &&
- (status == NFCSTATUS_SUCCESS)) {
- (*nxpncihal_ctrl.p_nfc_stack_data_cback)(nxpncihal_ctrl.rx_data_len,
- nxpncihal_ctrl.p_rx_data);
- }
- } else {
- NXPLOG_NCIHAL_E("read error status = 0x%x", pInfo->wStatus);
- }
-
- if (nxpncihal_ctrl.halStatus == HAL_STATUS_CLOSE &&
- nxpncihal_ctrl.nci_info.wait_for_ntf == FALSE) {
- NXPLOG_NCIHAL_E(" Ignoring read , HAL close triggered");
- return;
- }
- /* Read again because read must be pending always.*/
- status = phTmlNfc_Read(
- Rx_data, NCI_MAX_DATA_LEN,
- (pphTmlNfc_TransactCompletionCb_t)&phNxpNciHal_read_complete, NULL);
- if (status != NFCSTATUS_PENDING) {
- NXPLOG_NCIHAL_E("read status error status = %x", status);
- /* TODO: Not sure how to handle this ? */
- }
-
- return;
-}
-
-void read_retry() {
- /* Read again because read must be pending always.*/
- NFCSTATUS status = phTmlNfc_Read(
- Rx_data, NCI_MAX_DATA_LEN,
- (pphTmlNfc_TransactCompletionCb_t)&phNxpNciHal_read_complete, NULL);
- if (status != NFCSTATUS_PENDING) {
- NXPLOG_NCIHAL_E("read status error status = %x", status);
- /* TODO: Not sure how to handle this ? */
- }
-}
-/******************************************************************************
- * Function phNxpNciHal_core_initialized
- *
- * Description This function is called by libnfc-nci after successful open
- * of NFCC. All proprietary setting for PN54X are done here.
- * After completion of proprietary settings notification is
- * provided to libnfc-nci through callback function.
- *
- * Returns Always returns NFCSTATUS_SUCCESS (0).
- *
- ******************************************************************************/
-int phNxpNciHal_core_initialized(uint8_t* p_core_init_rsp_params) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- static uint8_t p2p_listen_mode_routing_cmd[] = {0x21, 0x01, 0x07, 0x00, 0x01,
- 0x01, 0x03, 0x00, 0x01, 0x05};
-
- uint8_t swp_full_pwr_mode_on_cmd[] = {0x20, 0x02, 0x05, 0x01,
- 0xA0, 0xF1, 0x01, 0x01};
-
- static uint8_t android_l_aid_matching_mode_on_cmd[] = {
- 0x20, 0x02, 0x05, 0x01, 0xA0, 0x91, 0x01, 0x01};
- static uint8_t swp_switch_timeout_cmd[] = {0x20, 0x02, 0x06, 0x01, 0xA0,
- 0xF3, 0x02, 0x00, 0x00};
- config_success = true;
- uint8_t* buffer = NULL;
- long bufflen = 260;
- long retlen = 0;
- int isfound;
- /* Temp fix to re-apply the proper clock setting */
- int temp_fix = 1;
- unsigned long num = 0;
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- // initialize dummy FW recovery variables
- gRecFwRetryCount = 0;
- gRecFWDwnld = 0;
-#endif
- // recovery --start
- /*NCI_INIT_CMD*/
- static uint8_t cmd_init_nci[] = {0x20, 0x01, 0x00};
- /*NCI_RESET_CMD*/
- static uint8_t cmd_reset_nci[] = {0x20, 0x00, 0x01,
- 0x00}; // keep configuration
- static uint8_t cmd_init_nci2_0[] = {0x20, 0x01, 0x02, 0x00, 0x00};
- /* reset config cache */
- static uint8_t retry_core_init_cnt;
- if (nxpncihal_ctrl.halStatus != HAL_STATUS_OPEN) {
- return NFCSTATUS_FAILED;
- }
- if ((*p_core_init_rsp_params > 0) &&
- (*p_core_init_rsp_params < 4)) // initializing for recovery.
- {
- retry_core_init:
- config_access = false;
- if (buffer != NULL) {
- free(buffer);
- buffer = NULL;
- }
- if (retry_core_init_cnt > 3) {
- return NFCSTATUS_FAILED;
- }
-
- status = phTmlNfc_IoCtl(phTmlNfc_e_ResetDevice);
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_NCIHAL_D("PN54X Reset - SUCCESS\n");
- } else {
- NXPLOG_NCIHAL_D("PN54X Reset - FAILED\n");
- }
-
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_reset_nci), cmd_reset_nci);
- if ((status != NFCSTATUS_SUCCESS) &&
- (nxpncihal_ctrl.retry_cnt >= MAX_RETRY_COUNT)) {
- NXPLOG_NCIHAL_E("Force FW Download, NFCC not coming out from Standby");
- retry_core_init_cnt++;
- goto retry_core_init;
- } else if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NCI_CORE_RESET: Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
-
- if (*p_core_init_rsp_params == 2) {
- NXPLOG_NCIHAL_E(" Last command is CORE_RESET!!");
- goto invoke_callback;
- }
- if (nxpncihal_ctrl.nci_info.nci_version == NCI_VERSION_2_0) {
- status =
- phNxpNciHal_send_ext_cmd(sizeof(cmd_init_nci2_0), cmd_init_nci2_0);
- } else {
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_init_nci), cmd_init_nci);
- }
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NCI_CORE_INIT : Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
-
- if (*p_core_init_rsp_params == 3) {
- NXPLOG_NCIHAL_E(" Last command is CORE_INIT!!");
- goto invoke_callback;
- }
- }
- // recovery --end
-
- buffer = (uint8_t*)malloc(bufflen * sizeof(uint8_t));
- if (NULL == buffer) {
- return NFCSTATUS_FAILED;
- }
- config_access = true;
- retlen = 0;
- isfound = GetNxpByteArrayValue(NAME_NXP_ACT_PROP_EXTN, (char*)buffer, bufflen,
- &retlen);
- if (retlen > 0) {
- /* NXP ACT Proprietary Ext */
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NXP ACT Proprietary Ext failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
-
- // Check if firmware download success
- status = phNxpNciHal_get_mw_eeprom();
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NXP GET MW EEPROM AREA Proprietary Ext failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
-
- //
- status = phNxpNciHal_check_clock_config();
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("phNxpNciHal_check_clock_config failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
-
-#ifdef PN547C2_CLOCK_SETTING
- if (isNxpConfigModified() || (fw_download_success == 1) ||
- (phNxpNciClock.issetConfig)
-#if (NFC_NXP_HFO_SETTINGS == TRUE)
- || temp_fix == 1
-#endif
- ) {
- // phNxpNciHal_get_clk_freq();
- phNxpNciHal_set_clock();
- phNxpNciClock.issetConfig = false;
-#if (NFC_NXP_HFO_SETTINGS == TRUE)
- if (temp_fix == 1) {
- NXPLOG_NCIHAL_D(
- "Applying Default Clock setting and DPLL register at power on");
- /*
- # A0, 0D, 06, 06, 83, 55, 2A, 04, 00 RF_CLIF_CFG_TARGET CLIF_DPLL_GEAR_REG
- # A0, 0D, 06, 06, 82, 33, 14, 17, 00 RF_CLIF_CFG_TARGET CLIF_DPLL_INIT_REG
- # A0, 0D, 06, 06, 84, AA, 85, 00, 80 RF_CLIF_CFG_TARGET
- CLIF_DPLL_INIT_FREQ_REG
- # A0, 0D, 06, 06, 81, 63, 00, 00, 00 RF_CLIF_CFG_TARGET
- CLIF_DPLL_CONTROL_REG
- */
- static uint8_t cmd_dpll_set_reg_nci[] = {
- 0x20, 0x02, 0x25, 0x04, 0xA0, 0x0D, 0x06, 0x06, 0x83, 0x55,
- 0x2A, 0x04, 0x00, 0xA0, 0x0D, 0x06, 0x06, 0x82, 0x33, 0x14,
- 0x17, 0x00, 0xA0, 0x0D, 0x06, 0x06, 0x84, 0xAA, 0x85, 0x00,
- 0x80, 0xA0, 0x0D, 0x06, 0x06, 0x81, 0x63, 0x00, 0x00, 0x00};
-
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_dpll_set_reg_nci),
- cmd_dpll_set_reg_nci);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NXP DPLL REG ACT Proprietary Ext failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- /* reset the NFCC after applying the clock setting and DPLL setting */
- // phTmlNfc_IoCtl(phTmlNfc_e_ResetDevice);
- temp_fix = 0;
- goto retry_core_init;
- }
-#endif
- }
-#endif
-
- phNxpNciHal_check_factory_reset();
- retlen = 0;
- config_access = true;
- isfound = GetNxpByteArrayValue(NAME_NXP_NFC_PROFILE_EXTN, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- /* NXP ACT Proprietary Ext */
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NXP ACT Proprietary Ext failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
-
- if (isNxpConfigModified() || (fw_download_success == 1)) {
- retlen = 0;
- fw_download_success = 0;
-
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- NXPLOG_NCIHAL_D("Performing TVDD Settings");
- isfound = GetNxpNumValue(NAME_NXP_EXT_TVDD_CFG, &num, sizeof(num));
- if (isfound > 0) {
- if (num == 1) {
- isfound = GetNxpByteArrayValue(NAME_NXP_EXT_TVDD_CFG_1, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("EXT TVDD CFG 1 Settings failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- } else if (num == 2) {
- isfound = GetNxpByteArrayValue(NAME_NXP_EXT_TVDD_CFG_2, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("EXT TVDD CFG 2 Settings failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- } else if (num == 3) {
- isfound = GetNxpByteArrayValue(NAME_NXP_EXT_TVDD_CFG_3, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("EXT TVDD CFG 3 Settings failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- } else {
- NXPLOG_NCIHAL_E("Wrong Configuration Value %ld", num);
- }
- }
-#endif
- retlen = 0;
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- config_access = false;
-#endif
- NXPLOG_NCIHAL_D("Performing RF Settings BLK 1");
- isfound = GetNxpByteArrayValue(NAME_NXP_RF_CONF_BLK_1, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- if (status == NFCSTATUS_SUCCESS) {
- status = phNxpNciHal_CheckRFCmdRespStatus();
- /*STATUS INVALID PARAM 0x09*/
- if (status == 0x09) {
- phNxpNciHalRFConfigCmdRecSequence();
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- } else
-#endif
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("RF Settings BLK 1 failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- retlen = 0;
-
- NXPLOG_NCIHAL_D("Performing RF Settings BLK 2");
- isfound = GetNxpByteArrayValue(NAME_NXP_RF_CONF_BLK_2, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- if (status == NFCSTATUS_SUCCESS) {
- status = phNxpNciHal_CheckRFCmdRespStatus();
- /*STATUS INVALID PARAM 0x09*/
- if (status == 0x09) {
- phNxpNciHalRFConfigCmdRecSequence();
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- } else
-#endif
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("RF Settings BLK 2 failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- retlen = 0;
-
- NXPLOG_NCIHAL_D("Performing RF Settings BLK 3");
- isfound = GetNxpByteArrayValue(NAME_NXP_RF_CONF_BLK_3, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- if (status == NFCSTATUS_SUCCESS) {
- status = phNxpNciHal_CheckRFCmdRespStatus();
- /*STATUS INVALID PARAM 0x09*/
- if (status == 0x09) {
- phNxpNciHalRFConfigCmdRecSequence();
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- } else
-#endif
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("RF Settings BLK 3 failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- retlen = 0;
-
- NXPLOG_NCIHAL_D("Performing RF Settings BLK 4");
- isfound = GetNxpByteArrayValue(NAME_NXP_RF_CONF_BLK_4, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- if (status == NFCSTATUS_SUCCESS) {
- status = phNxpNciHal_CheckRFCmdRespStatus();
- /*STATUS INVALID PARAM 0x09*/
- if (status == 0x09) {
- phNxpNciHalRFConfigCmdRecSequence();
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- } else
-#endif
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("RF Settings BLK 4 failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- retlen = 0;
-
- NXPLOG_NCIHAL_D("Performing RF Settings BLK 5");
- isfound = GetNxpByteArrayValue(NAME_NXP_RF_CONF_BLK_5, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- if (status == NFCSTATUS_SUCCESS) {
- status = phNxpNciHal_CheckRFCmdRespStatus();
- /*STATUS INVALID PARAM 0x09*/
- if (status == 0x09) {
- phNxpNciHalRFConfigCmdRecSequence();
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- } else
-#endif
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("RF Settings BLK 5 failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- retlen = 0;
-
- NXPLOG_NCIHAL_D("Performing RF Settings BLK 6");
- isfound = GetNxpByteArrayValue(NAME_NXP_RF_CONF_BLK_6, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- if (status == NFCSTATUS_SUCCESS) {
- status = phNxpNciHal_CheckRFCmdRespStatus();
- /*STATUS INVALID PARAM 0x09*/
- if (status == 0x09) {
- phNxpNciHalRFConfigCmdRecSequence();
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- } else
-#endif
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("RF Settings BLK 6 failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- retlen = 0;
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- config_access = true;
-#endif
- NXPLOG_NCIHAL_D("Performing NAME_NXP_CORE_CONF_EXTN Settings");
- isfound = GetNxpByteArrayValue(NAME_NXP_CORE_CONF_EXTN, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- /* NXP ACT Proprietary Ext */
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NXP Core configuration failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
-
- retlen = 0;
-
- isfound = GetNxpByteArrayValue(NAME_NXP_CORE_MFCKEY_SETTING, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- /* NXP ACT Proprietary Ext */
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("Setting mifare keys failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
-
- retlen = 0;
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- config_access = false;
-#endif
- isfound = GetNxpByteArrayValue(NAME_NXP_CORE_RF_FIELD, (char*)buffer,
- bufflen, &retlen);
- if (retlen > 0) {
- /* NXP ACT Proprietary Ext */
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- if (status == NFCSTATUS_SUCCESS) {
- status = phNxpNciHal_CheckRFCmdRespStatus();
- /*STATUS INVALID PARAM 0x09*/
- if (status == 0x09) {
- phNxpNciHalRFConfigCmdRecSequence();
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- } else
-#endif
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("Setting NXP_CORE_RF_FIELD status failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- config_access = true;
-#endif
-
- retlen = 0;
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- /* NXP SWP switch timeout Setting*/
- if (GetNxpNumValue(NAME_NXP_SWP_SWITCH_TIMEOUT, (void*)&retlen,
- sizeof(retlen))) {
- // Check the permissible range [0 - 60]
- if (0 <= retlen && retlen <= 60) {
- if (0 < retlen) {
- unsigned int timeout = retlen * 1000;
- unsigned int timeoutHx = 0x0000;
-
- char tmpbuffer[10] = {0};
- snprintf((char*)tmpbuffer, 10, "%04x", timeout);
- sscanf((char*)tmpbuffer, "%x", &timeoutHx);
-
- swp_switch_timeout_cmd[7] = (timeoutHx & 0xFF);
- swp_switch_timeout_cmd[8] = ((timeoutHx & 0xFF00) >> 8);
- }
-
- status = phNxpNciHal_send_ext_cmd(sizeof(swp_switch_timeout_cmd),
- swp_switch_timeout_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("SWP switch timeout Setting Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- } else {
- NXPLOG_NCIHAL_E("SWP switch timeout Setting Failed - out of range!");
- }
- }
-
- status = phNxpNciHal_china_tianjin_rf_setting();
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("phNxpNciHal_china_tianjin_rf_setting failed");
- return NFCSTATUS_FAILED;
- }
-#endif
- // Update eeprom value
- status = phNxpNciHal_set_mw_eeprom();
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NXP Update MW EEPROM Proprietary Ext failed");
- }
- }
-
- retlen = 0;
-
- isfound = GetNxpByteArrayValue(NAME_NXP_CORE_STANDBY, (char*)buffer, bufflen,
- &retlen);
- if (retlen > 0) {
- /* NXP ACT Proprietary Ext */
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("Stand by mode enable failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- retlen = 0;
-
- isfound =
- GetNxpByteArrayValue(NAME_NXP_CORE_CONF, (char*)buffer, bufflen, &retlen);
- if (retlen > 0) {
- /* NXP ACT Proprietary Ext */
- status = phNxpNciHal_send_ext_cmd(retlen, buffer);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("Core Set Config failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
-
- config_access = false;
- // if recovery mode and length of last command is 0 then only reset the P2P
- // listen mode routing.
- if ((*p_core_init_rsp_params > 0) && (*p_core_init_rsp_params < 4) &&
- p_core_init_rsp_params[35] == 0) {
- /* P2P listen mode routing */
- status = phNxpNciHal_send_ext_cmd(sizeof(p2p_listen_mode_routing_cmd),
- p2p_listen_mode_routing_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("P2P listen mode routing failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
-
- retlen = 0;
-
- /* SWP FULL PWR MODE SETTING ON */
- if (GetNxpNumValue(NAME_NXP_SWP_FULL_PWR_ON, (void*)&retlen,
- sizeof(retlen))) {
- if (1 == retlen) {
- status = phNxpNciHal_send_ext_cmd(sizeof(swp_full_pwr_mode_on_cmd),
- swp_full_pwr_mode_on_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("SWP FULL PWR MODE SETTING ON CMD FAILED");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- } else {
- swp_full_pwr_mode_on_cmd[7] = 0x00;
- status = phNxpNciHal_send_ext_cmd(sizeof(swp_full_pwr_mode_on_cmd),
- swp_full_pwr_mode_on_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("SWP FULL PWR MODE SETTING OFF CMD FAILED");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- }
-
- /* Android L AID Matching Platform Setting*/
- if (GetNxpNumValue(NAME_AID_MATCHING_PLATFORM, (void*)&retlen,
- sizeof(retlen))) {
- if (1 == retlen) {
- status =
- phNxpNciHal_send_ext_cmd(sizeof(android_l_aid_matching_mode_on_cmd),
- android_l_aid_matching_mode_on_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("Android L AID Matching Platform Setting Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- } else if (2 == retlen) {
- android_l_aid_matching_mode_on_cmd[7] = 0x00;
- status =
- phNxpNciHal_send_ext_cmd(sizeof(android_l_aid_matching_mode_on_cmd),
- android_l_aid_matching_mode_on_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("Android L AID Matching Platform Setting Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- }
-
- if ((*p_core_init_rsp_params > 0) && (*p_core_init_rsp_params < 4)) {
- static phLibNfc_Message_t msg;
- uint16_t tmp_len = 0;
- uint8_t uicc_set_mode[] = {0x22, 0x01, 0x02, 0x02, 0x01};
- uint8_t set_screen_state[] = {0x2F, 0x15, 01, 00}; // SCREEN ON
- uint8_t nfcc_core_conn_create[] = {0x20, 0x04, 0x06, 0x03, 0x01,
- 0x01, 0x02, 0x01, 0x01};
- uint8_t nfcc_mode_set_on[] = {0x22, 0x01, 0x02, 0x01, 0x01};
-
- NXPLOG_NCIHAL_E(
- "Sending DH and NFCC core connection command as raw packet!!");
- status = phNxpNciHal_send_ext_cmd(sizeof(nfcc_core_conn_create),
- nfcc_core_conn_create);
-
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E(
- "Sending DH and NFCC core connection command as raw packet!! Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
-
- NXPLOG_NCIHAL_E("Sending DH and NFCC mode set as raw packet!!");
- status =
- phNxpNciHal_send_ext_cmd(sizeof(nfcc_mode_set_on), nfcc_mode_set_on);
-
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("Sending DH and NFCC mode set as raw packet!! Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
-
- NXPLOG_NCIHAL_E("Sending UICC Select Command as raw packet!!");
- status = phNxpNciHal_send_ext_cmd(sizeof(uicc_set_mode), uicc_set_mode);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("Sending UICC Select Command as raw packet!! Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
-
- if (*(p_core_init_rsp_params + 1) == 1) // RF state is Discovery!!
- {
- NXPLOG_NCIHAL_E("Sending Set Screen ON State Command as raw packet!!");
- status =
- phNxpNciHal_send_ext_cmd(sizeof(set_screen_state), set_screen_state);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E(
- "Sending Set Screen ON State Command as raw packet!! Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
-
- NXPLOG_NCIHAL_E("Sending discovery as raw packet!!");
- status = phNxpNciHal_send_ext_cmd(p_core_init_rsp_params[2],
- (uint8_t*)&p_core_init_rsp_params[3]);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("Sending discovery as raw packet Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
-
- } else {
- NXPLOG_NCIHAL_E("Sending Set Screen OFF State Command as raw packet!!");
- set_screen_state[3] = 0x01; // Screen OFF
- status =
- phNxpNciHal_send_ext_cmd(sizeof(set_screen_state), set_screen_state);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E(
- "Sending Set Screen OFF State Command as raw packet!! Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- NXPLOG_NCIHAL_E("Sending last command for Recovery ");
-
- if (p_core_init_rsp_params[35] > 0) { // if length of last command is 0
- // then it doesn't need to send last
- // command.
- if (!(((p_core_init_rsp_params[36] == 0x21) &&
- (p_core_init_rsp_params[37] == 0x03)) &&
- (*(p_core_init_rsp_params + 1) == 1)) &&
- !((p_core_init_rsp_params[36] == 0x21) &&
- (p_core_init_rsp_params[37] == 0x06) &&
- (p_core_init_rsp_params[39] == 0x00) &&
- (*(p_core_init_rsp_params + 1) == 0x00)))
- // if last command is discovery and RF status is also discovery state,
- // then it doesn't need to execute or similarly
- // if the last command is deactivate to idle and RF status is also idle ,
- // no need to execute the command .
- {
- tmp_len = p_core_init_rsp_params[35];
-
- /* Check for NXP ext before sending write */
- status = phNxpNciHal_write_ext(
- &tmp_len, (uint8_t*)&p_core_init_rsp_params[36],
- &nxpncihal_ctrl.rsp_len, nxpncihal_ctrl.p_rsp_data);
- if (status != NFCSTATUS_SUCCESS) {
- if (buffer) {
- free(buffer);
- buffer = NULL;
- }
- /* Do not send packet to PN54X, send response directly */
- msg.eMsgType = NCI_HAL_RX_MSG;
- msg.pMsgData = NULL;
- msg.Size = 0;
-
- phTmlNfc_DeferredCall(gpphTmlNfc_Context->dwCallbackThreadId,
- (phLibNfc_Message_t*)&msg);
- return NFCSTATUS_SUCCESS;
- }
-
- p_core_init_rsp_params[35] = (uint8_t)tmp_len;
-
- status = phNxpNciHal_send_ext_cmd(
- p_core_init_rsp_params[35], (uint8_t*)&p_core_init_rsp_params[36]);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("Sending last command for Recovery Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- }
- }
- }
-
- retry_core_init_cnt = 0;
-
- if (buffer) {
- free(buffer);
- buffer = NULL;
- }
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- // initialize dummy FW recovery variables
- gRecFWDwnld = 0;
- gRecFwRetryCount = 0;
-#endif
- if (!((*p_core_init_rsp_params > 0) && (*p_core_init_rsp_params < 4)))
- phNxpNciHal_core_initialized_complete(status);
- else {
- invoke_callback:
- config_access = false;
- if (nxpncihal_ctrl.p_nfc_stack_data_cback != NULL) {
- *p_core_init_rsp_params = 0;
- NXPLOG_NCIHAL_E("Invoking data callback!!");
- (*nxpncihal_ctrl.p_nfc_stack_data_cback)(nxpncihal_ctrl.rx_data_len,
- nxpncihal_ctrl.p_rx_data);
- }
- }
-
- if (config_success == false) return NFCSTATUS_FAILED;
-#ifdef PN547C2_CLOCK_SETTING
- if (isNxpConfigModified()) {
- updateNxpConfigTimestamp();
- }
-#endif
- return NFCSTATUS_SUCCESS;
-}
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
-/******************************************************************************
- * Function phNxpNciHal_CheckRFCmdRespStatus
- *
- * Description This function is called to check the resp status of
- * RF update commands.
- *
- * Returns NFCSTATUS_SUCCESS if successful,
- * NFCSTATUS_INVALID_PARAMETER if parameter is inavlid
- * NFCSTATUS_FAILED if failed response
- *
- ******************************************************************************/
-NFCSTATUS phNxpNciHal_CheckRFCmdRespStatus() {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- static uint16_t INVALID_PARAM = 0x09;
- if ((nxpncihal_ctrl.rx_data_len > 0) && (nxpncihal_ctrl.p_rx_data[2] > 0)) {
- if (nxpncihal_ctrl.p_rx_data[3] == 0x09) {
- status = INVALID_PARAM;
- } else if (nxpncihal_ctrl.p_rx_data[3] != NFCSTATUS_SUCCESS) {
- status = NFCSTATUS_FAILED;
- }
- }
- return status;
-}
-/******************************************************************************
- * Function phNxpNciHalRFConfigCmdRecSequence
- *
- * Description This function is called to handle dummy FW recovery sequence
- * Whenever RF settings are failed to apply with invalid param
- * response, recovery mechanism includes dummy firmware
- *download
- * followed by firmware download and then config settings. The
- *dummy
- * firmware changes the major number of the firmware inside
- *NFCC.
- * Then actual firmware dowenload will be successful. This can
- *be
- * retried maximum three times.
- *
- * Returns Always returns NFCSTATUS_SUCCESS
- *
- ******************************************************************************/
-NFCSTATUS phNxpNciHalRFConfigCmdRecSequence() {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- uint16_t recFWState = 1;
- gRecFWDwnld = true;
- gRecFwRetryCount++;
- if (gRecFwRetryCount > 0x03) {
- NXPLOG_NCIHAL_D("Max retry count for RF config FW recovery exceeded ");
- gRecFWDwnld = false;
- return NFCSTATUS_FAILED;
- }
- do {
- status = phTmlNfc_IoCtl(phTmlNfc_e_ResetDevice);
- phDnldNfc_InitImgInfo();
- if (NFCSTATUS_SUCCESS == phNxpNciHal_CheckValidFwVersion()) {
- fw_download_success = 0;
- status = phNxpNciHal_fw_download();
- if (status == NFCSTATUS_SUCCESS) {
- fw_download_success = 1;
- }
- status = phTmlNfc_Read(
- nxpncihal_ctrl.p_cmd_data, NCI_MAX_DATA_LEN,
- (pphTmlNfc_TransactCompletionCb_t)&phNxpNciHal_read_complete, NULL);
- if (status != NFCSTATUS_PENDING) {
- NXPLOG_NCIHAL_E("TML Read status error status = %x", status);
- phOsalNfc_Timer_Cleanup();
- phTmlNfc_Shutdown();
- status = NFCSTATUS_FAILED;
- }
- break;
- }
- gRecFWDwnld = false;
- } while (recFWState--);
- gRecFWDwnld = false;
- return status;
-}
-#endif
-/******************************************************************************
- * Function phNxpNciHal_core_initialized_complete
- *
- * Description This function is called when phNxpNciHal_core_initialized
- * complete all proprietary command exchanges. This function
- * informs libnfc-nci about completion of core initialize
- * and result of that through callback.
- *
- * Returns void.
- *
- ******************************************************************************/
-static void phNxpNciHal_core_initialized_complete(NFCSTATUS status) {
- static phLibNfc_Message_t msg;
-
- if (status == NFCSTATUS_SUCCESS) {
- msg.eMsgType = NCI_HAL_POST_INIT_CPLT_MSG;
- } else {
- msg.eMsgType = NCI_HAL_ERROR_MSG;
- }
- msg.pMsgData = NULL;
- msg.Size = 0;
-
- phTmlNfc_DeferredCall(gpphTmlNfc_Context->dwCallbackThreadId,
- (phLibNfc_Message_t*)&msg);
-
- return;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_pre_discover
- *
- * Description This function is called by libnfc-nci to perform any
- * proprietary exchange before RF discovery. When proprietary
- * exchange is over completion is informed to libnfc-nci
- * through phNxpNciHal_pre_discover_complete function.
- *
- * Returns It always returns NFCSTATUS_SUCCESS (0).
- *
- ******************************************************************************/
-int phNxpNciHal_pre_discover(void) {
- /* Nothing to do here for initial version */
- return NFCSTATUS_SUCCESS;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_pre_discover_complete
- *
- * Description This function informs libnfc-nci about completion and
- * status of phNxpNciHal_pre_discover through callback.
- *
- * Returns void.
- *
- ******************************************************************************/
-static void phNxpNciHal_pre_discover_complete(NFCSTATUS status) {
- static phLibNfc_Message_t msg;
-
- if (status == NFCSTATUS_SUCCESS) {
- msg.eMsgType = NCI_HAL_PRE_DISCOVER_CPLT_MSG;
- } else {
- msg.eMsgType = NCI_HAL_ERROR_MSG;
- }
- msg.pMsgData = NULL;
- msg.Size = 0;
-
- phTmlNfc_DeferredCall(gpphTmlNfc_Context->dwCallbackThreadId, &msg);
-
- return;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_close
- *
- * Description This function close the NFCC interface and free all
- * resources.This is called by libnfc-nci on NFC service stop.
- *
- * Returns Always return NFCSTATUS_SUCCESS (0).
- *
- ******************************************************************************/
-int phNxpNciHal_close(void) {
- NFCSTATUS status;
- /*NCI_RESET_CMD*/
- static uint8_t cmd_reset_nci[] = {0x20, 0x00, 0x01, 0x00};
-
- static uint8_t cmd_ce_disc_nci[] = {0x21, 0x03, 0x07, 0x03, 0x80,
- 0x01, 0x81, 0x01, 0x82, 0x01};
-
- if (nxpncihal_ctrl.halStatus == HAL_STATUS_CLOSE) {
- NXPLOG_NCIHAL_E("phNxpNciHal_close is already closed, ignoring close");
- return NFCSTATUS_FAILED;
- }
- CONCURRENCY_LOCK();
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_ce_disc_nci), cmd_ce_disc_nci);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("CMD_CE_DISC_NCI: Failed");
- }
-
- nxpncihal_ctrl.halStatus = HAL_STATUS_CLOSE;
-
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_reset_nci), cmd_reset_nci);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NCI_CORE_RESET: Failed");
- }
-
- if (NULL != gpphTmlNfc_Context->pDevHandle) {
- phNxpNciHal_close_complete(NFCSTATUS_SUCCESS);
- /* Abort any pending read and write */
- status = phTmlNfc_ReadAbort();
- status = phTmlNfc_WriteAbort();
-
- phOsalNfc_Timer_Cleanup();
-
- status = phTmlNfc_Shutdown();
-
- phDal4Nfc_msgrelease(nxpncihal_ctrl.gDrvCfg.nClientId);
-
- memset(&nxpncihal_ctrl, 0x00, sizeof(nxpncihal_ctrl));
-
- NXPLOG_NCIHAL_D("phNxpNciHal_close - phOsalNfc_DeInit completed");
- }
-
- CONCURRENCY_UNLOCK();
-
- phNxpNciHal_cleanup_monitor();
-
- /* Return success always */
- return NFCSTATUS_SUCCESS;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_close_complete
- *
- * Description This function inform libnfc-nci about result of
- * phNxpNciHal_close.
- *
- * Returns void.
- *
- ******************************************************************************/
-void phNxpNciHal_close_complete(NFCSTATUS status) {
- static phLibNfc_Message_t msg;
-
- if (status == NFCSTATUS_SUCCESS) {
- msg.eMsgType = NCI_HAL_CLOSE_CPLT_MSG;
- } else {
- msg.eMsgType = NCI_HAL_ERROR_MSG;
- }
- msg.pMsgData = NULL;
- msg.Size = 0;
-
- phTmlNfc_DeferredCall(gpphTmlNfc_Context->dwCallbackThreadId, &msg);
-
- return;
-}
-/******************************************************************************
- * Function phNxpNciHal_notify_i2c_fragmentation
- *
- * Description This function can be used by HAL to inform
- * libnfc-nci that i2c fragmentation is enabled/disabled
- *
- * Returns void.
- *
- ******************************************************************************/
-void phNxpNciHal_notify_i2c_fragmentation(void) {
- if (nxpncihal_ctrl.p_nfc_stack_cback != NULL) {
- /*inform libnfc-nci that i2c fragmentation is enabled/disabled */
- (*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_ENABLE_I2C_FRAGMENTATION_EVT,
- HAL_NFC_STATUS_OK);
- }
-}
-/******************************************************************************
- * Function phNxpNciHal_control_granted
- *
- * Description Called by libnfc-nci when NFCC control is granted to HAL.
- *
- * Returns Always returns NFCSTATUS_SUCCESS (0).
- *
- ******************************************************************************/
-int phNxpNciHal_control_granted(void) {
- /* Take the concurrency lock so no other calls from upper layer
- * will be allowed
- */
- CONCURRENCY_LOCK();
-
- if (NULL != nxpncihal_ctrl.p_control_granted_cback) {
- (*nxpncihal_ctrl.p_control_granted_cback)();
- }
- /* At the end concurrency unlock so calls from upper layer will
- * be allowed
- */
- CONCURRENCY_UNLOCK();
- return NFCSTATUS_SUCCESS;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_request_control
- *
- * Description This function can be used by HAL to request control of
- * NFCC to libnfc-nci. When control is provided to HAL it is
- * notified through phNxpNciHal_control_granted.
- *
- * Returns void.
- *
- ******************************************************************************/
-void phNxpNciHal_request_control(void) {
- if (nxpncihal_ctrl.p_nfc_stack_cback != NULL) {
- /* Request Control of NCI Controller from NCI NFC Stack */
- (*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_REQUEST_CONTROL_EVT,
- HAL_NFC_STATUS_OK);
- }
-
- return;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_release_control
- *
- * Description This function can be used by HAL to release the control of
- * NFCC back to libnfc-nci.
- *
- * Returns void.
- *
- ******************************************************************************/
-void phNxpNciHal_release_control(void) {
- if (nxpncihal_ctrl.p_nfc_stack_cback != NULL) {
- /* Release Control of NCI Controller to NCI NFC Stack */
- (*nxpncihal_ctrl.p_nfc_stack_cback)(HAL_NFC_RELEASE_CONTROL_EVT,
- HAL_NFC_STATUS_OK);
- }
-
- return;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_power_cycle
- *
- * Description This function is called by libnfc-nci when power cycling is
- * performed. When processing is complete it is notified to
- * libnfc-nci through phNxpNciHal_power_cycle_complete.
- *
- * Returns Always return NFCSTATUS_SUCCESS (0).
- *
- ******************************************************************************/
-int phNxpNciHal_power_cycle(void) {
- NXPLOG_NCIHAL_D("Power Cycle");
- NFCSTATUS status = NFCSTATUS_FAILED;
- if (nxpncihal_ctrl.halStatus != HAL_STATUS_OPEN) {
- NXPLOG_NCIHAL_D("Power Cycle failed due to hal status not open");
- return NFCSTATUS_FAILED;
- }
- status = phTmlNfc_IoCtl(phTmlNfc_e_ResetDevice);
-
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_NCIHAL_D("PN54X Reset - SUCCESS\n");
- } else {
- NXPLOG_NCIHAL_D("PN54X Reset - FAILED\n");
- }
-
- phNxpNciHal_power_cycle_complete(NFCSTATUS_SUCCESS);
- return NFCSTATUS_SUCCESS;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_power_cycle_complete
- *
- * Description This function is called to provide the status of
- * phNxpNciHal_power_cycle to libnfc-nci through callback.
- *
- * Returns void.
- *
- ******************************************************************************/
-static void phNxpNciHal_power_cycle_complete(NFCSTATUS status) {
- static phLibNfc_Message_t msg;
-
- if (status == NFCSTATUS_SUCCESS) {
- msg.eMsgType = NCI_HAL_OPEN_CPLT_MSG;
- } else {
- msg.eMsgType = NCI_HAL_ERROR_MSG;
- }
- msg.pMsgData = NULL;
- msg.Size = 0;
-
- phTmlNfc_DeferredCall(gpphTmlNfc_Context->dwCallbackThreadId, &msg);
-
- return;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_get_mw_eeprom
- *
- * Description This function is called to retreive data in mw eeprom area
- *
- * Returns NFCSTATUS.
- *
- ******************************************************************************/
-static NFCSTATUS phNxpNciHal_get_mw_eeprom(void) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- uint8_t retry_cnt = 0;
- static uint8_t get_mw_eeprom_cmd[] = {0x20, 0x03, 0x03, 0x01, 0xA0, 0x0F};
- uint8_t bConfig;
-
-retry_send_ext:
- if (retry_cnt > 3) {
- return NFCSTATUS_FAILED;
- }
-
- phNxpNciMwEepromArea.isGetEepromArea = true;
- status =
- phNxpNciHal_send_ext_cmd(sizeof(get_mw_eeprom_cmd), get_mw_eeprom_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("unable to get the mw eeprom data");
- phNxpNciMwEepromArea.isGetEepromArea = false;
- retry_cnt++;
- goto retry_send_ext;
- }
- phNxpNciMwEepromArea.isGetEepromArea = false;
-
- if (phNxpNciMwEepromArea.p_rx_data[12]) {
- fw_download_success = 1;
- }
- return status;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_set_mw_eeprom
- *
- * Description This function is called to update data in mw eeprom area
- *
- * Returns void.
- *
- ******************************************************************************/
-static NFCSTATUS phNxpNciHal_set_mw_eeprom(void) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- uint8_t retry_cnt = 0;
- uint8_t set_mw_eeprom_cmd[39] = {0};
- uint8_t cmd_header[] = {0x20, 0x02, 0x24, 0x01, 0xA0, 0x0F, 0x20};
-
- memcpy(set_mw_eeprom_cmd, cmd_header, sizeof(cmd_header));
- phNxpNciMwEepromArea.p_rx_data[12] = 0;
- memcpy(set_mw_eeprom_cmd + sizeof(cmd_header), phNxpNciMwEepromArea.p_rx_data,
- sizeof(phNxpNciMwEepromArea.p_rx_data));
-
-retry_send_ext:
- if (retry_cnt > 3) {
- return NFCSTATUS_FAILED;
- }
-
- status =
- phNxpNciHal_send_ext_cmd(sizeof(set_mw_eeprom_cmd), set_mw_eeprom_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("unable to update the mw eeprom data");
- retry_cnt++;
- goto retry_send_ext;
- }
- return status;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_set_clock
- *
- * Description This function is called after successfull download
- * to apply the clock setting provided in config file
- *
- * Returns void.
- *
- ******************************************************************************/
-static void phNxpNciHal_set_clock(void) {
- NFCSTATUS status = NFCSTATUS_FAILED;
- int retryCount = 0;
-
-retrySetclock:
- phNxpNciClock.isClockSet = true;
- if (nxpprofile_ctrl.bClkSrcVal == CLK_SRC_PLL) {
- static uint8_t set_clock_cmd[] = {0x20, 0x02, 0x09, 0x02, 0xA0, 0x03,
- 0x01, 0x11, 0xA0, 0x04, 0x01, 0x01};
-#if (NFC_NXP_CHIP_TYPE == PN553)
- uint8_t param_clock_src = 0x00;
-#else
- uint8_t param_clock_src = CLK_SRC_PLL;
- param_clock_src = param_clock_src << 3;
-#endif
-
- if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_13MHZ) {
- param_clock_src |= 0x00;
- } else if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_19_2MHZ) {
- param_clock_src |= 0x01;
- } else if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_24MHZ) {
- param_clock_src |= 0x02;
- } else if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_26MHZ) {
- param_clock_src |= 0x03;
- } else if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_38_4MHZ) {
- param_clock_src |= 0x04;
- } else if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_52MHZ) {
- param_clock_src |= 0x05;
- } else {
- NXPLOG_NCIHAL_E("Wrong clock freq, send default PLL@19.2MHz");
-#if (NFC_NXP_CHIP_TYPE == PN553)
- param_clock_src = 0x01;
-#else
- param_clock_src = 0x11;
-#endif
- }
-
- set_clock_cmd[7] = param_clock_src;
- set_clock_cmd[11] = nxpprofile_ctrl.bTimeout;
- status = phNxpNciHal_send_ext_cmd(sizeof(set_clock_cmd), set_clock_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("PLL colck setting failed !!");
- }
- } else if (nxpprofile_ctrl.bClkSrcVal == CLK_SRC_XTAL) {
- static uint8_t set_clock_cmd[] = {0x20, 0x02, 0x05, 0x01,
- 0xA0, 0x03, 0x01, 0x08};
- status = phNxpNciHal_send_ext_cmd(sizeof(set_clock_cmd), set_clock_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("XTAL colck setting failed !!");
- }
- } else {
- NXPLOG_NCIHAL_E("Wrong clock source. Dont apply any modification")
- }
-
- // Checking for SET CONFG SUCCESS, re-send the command if not.
- phNxpNciClock.isClockSet = false;
- if (phNxpNciClock.p_rx_data[3] != NFCSTATUS_SUCCESS) {
- if (retryCount++ < 3) {
- NXPLOG_NCIHAL_E("Set-clk failed retry again ");
- goto retrySetclock;
- } else {
- NXPLOG_NCIHAL_D("Set clk failed - max count = 0x%x exceeded ",
- retryCount);
- // NXPLOG_NCIHAL_E("Set Config is failed for Clock Due to
- // elctrical disturbances, aborting the NFC process");
- // abort ();
- }
- }
-}
-
-/******************************************************************************
- * Function phNxpNciHal_check_clock_config
- *
- * Description This function is called after successfull download
- * to check if clock settings in config file and chip
- * is same
- *
- * Returns void.
- *
- ******************************************************************************/
-NFCSTATUS phNxpNciHal_check_clock_config(void) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- uint8_t param_clock_src;
- static uint8_t get_clock_cmd[] = {0x20, 0x03, 0x07, 0x03, 0xA0,
- 0x02, 0xA0, 0x03, 0xA0, 0x04};
- phNxpNciClock.isClockSet = true;
- phNxpNciHal_get_clk_freq();
- status = phNxpNciHal_send_ext_cmd(sizeof(get_clock_cmd), get_clock_cmd);
-
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("unable to retrieve get_clk_src_sel");
- return status;
- }
- param_clock_src = check_config_parameter();
- if (phNxpNciClock.p_rx_data[12] == param_clock_src &&
- phNxpNciClock.p_rx_data[16] == nxpprofile_ctrl.bTimeout) {
- phNxpNciClock.issetConfig = false;
- } else {
- phNxpNciClock.issetConfig = true;
- }
- phNxpNciClock.isClockSet = false;
-
- return status;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_china_tianjin_rf_setting
- *
- * Description This function is called to check RF Setting
- *
- * Returns Status.
- *
- ******************************************************************************/
-NFCSTATUS phNxpNciHal_china_tianjin_rf_setting(void) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- int isfound = 0;
- int rf_enable = false;
- int rf_val = 0;
- int send_flag;
- uint8_t retry_cnt = 0;
- int enable_bit = 0;
- static uint8_t get_rf_cmd[] = {0x20, 0x03, 0x03, 0x01, 0xA0, 0x85};
-
-retry_send_ext:
- if (retry_cnt > 3) {
- return NFCSTATUS_FAILED;
- }
- send_flag = true;
- phNxpNciRfSet.isGetRfSetting = true;
- status = phNxpNciHal_send_ext_cmd(sizeof(get_rf_cmd), get_rf_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("unable to get the RF setting");
- phNxpNciRfSet.isGetRfSetting = false;
- retry_cnt++;
- goto retry_send_ext;
- }
- phNxpNciRfSet.isGetRfSetting = false;
- if (phNxpNciRfSet.p_rx_data[3] != 0x00) {
- NXPLOG_NCIHAL_E("GET_CONFIG_RSP is FAILED for CHINA TIANJIN");
- return status;
- }
- rf_val = phNxpNciRfSet.p_rx_data[10];
- isfound = (GetNxpNumValue(NAME_NXP_CHINA_TIANJIN_RF_ENABLED,
- (void*)&rf_enable, sizeof(rf_enable)));
- if (isfound > 0) {
- enable_bit = rf_val & 0x40;
- if ((enable_bit != 0x40) && (rf_enable == 1)) {
- phNxpNciRfSet.p_rx_data[10] |= 0x40; // Enable if it is disabled
- } else if ((enable_bit == 0x40) && (rf_enable == 0)) {
- phNxpNciRfSet.p_rx_data[10] &= 0xBF; // Disable if it is Enabled
- } else {
- send_flag = false; // No need to change in RF setting
- }
-
- if (send_flag == true) {
- static uint8_t set_rf_cmd[] = {0x20, 0x02, 0x08, 0x01, 0xA0, 0x85,
- 0x04, 0x50, 0x08, 0x68, 0x00};
- memcpy(&set_rf_cmd[4], &phNxpNciRfSet.p_rx_data[5], 7);
- status = phNxpNciHal_send_ext_cmd(sizeof(set_rf_cmd), set_rf_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("unable to set the RF setting");
- retry_cnt++;
- goto retry_send_ext;
- }
- }
- }
-
- return status;
-}
-
-int check_config_parameter() {
- NFCSTATUS status = NFCSTATUS_FAILED;
- uint8_t param_clock_src = CLK_SRC_PLL;
- if (nxpprofile_ctrl.bClkSrcVal == CLK_SRC_PLL) {
-#if (NFC_NXP_CHIP_TYPE != PN553)
- param_clock_src = param_clock_src << 3;
-#endif
- if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_13MHZ) {
- param_clock_src |= 0x00;
- } else if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_19_2MHZ) {
- param_clock_src |= 0x01;
- } else if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_24MHZ) {
- param_clock_src |= 0x02;
- } else if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_26MHZ) {
- param_clock_src |= 0x03;
- } else if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_38_4MHZ) {
- param_clock_src |= 0x04;
- } else if (nxpprofile_ctrl.bClkFreqVal == CLK_FREQ_52MHZ) {
- param_clock_src |= 0x05;
- } else {
- NXPLOG_NCIHAL_E("Wrong clock freq, send default PLL@19.2MHz");
- param_clock_src = 0x11;
- }
- } else if (nxpprofile_ctrl.bClkSrcVal == CLK_SRC_XTAL) {
- param_clock_src = 0x08;
-
- } else {
- NXPLOG_NCIHAL_E("Wrong clock source. Dont apply any modification")
- }
- return param_clock_src;
-}
-/******************************************************************************
- * Function phNxpNciHal_enable_i2c_fragmentation
- *
- * Description This function is called to process the response status
- * and print the status byte.
- *
- * Returns void.
- *
- ******************************************************************************/
-void phNxpNciHal_enable_i2c_fragmentation() {
- NFCSTATUS status = NFCSTATUS_FAILED;
- static uint8_t fragmentation_enable_config_cmd[] = {0x20, 0x02, 0x05, 0x01,
- 0xA0, 0x05, 0x01, 0x10};
- int isfound = 0;
- long i2c_status = 0x00;
- long config_i2c_vlaue = 0xff;
- /*NCI_RESET_CMD*/
- static uint8_t cmd_reset_nci[] = {0x20, 0x00, 0x01, 0x00};
- /*NCI_INIT_CMD*/
- static uint8_t cmd_init_nci[] = {0x20, 0x01, 0x00};
- static uint8_t cmd_init_nci2_0[] = {0x20, 0x01, 0x02, 0x00, 0x00};
- static uint8_t get_i2c_fragmentation_cmd[] = {0x20, 0x03, 0x03,
- 0x01, 0xA0, 0x05};
- isfound = (GetNxpNumValue(NAME_NXP_I2C_FRAGMENTATION_ENABLED,
- (void*)&i2c_status, sizeof(i2c_status)));
- status = phNxpNciHal_send_ext_cmd(sizeof(get_i2c_fragmentation_cmd),
- get_i2c_fragmentation_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("unable to retrieve get_i2c_fragmentation_cmd");
- } else {
- if (nxpncihal_ctrl.p_rx_data[8] == 0x10) {
- config_i2c_vlaue = 0x01;
- phNxpNciHal_notify_i2c_fragmentation();
- phTmlNfc_set_fragmentation_enabled(I2C_FRAGMENTATION_ENABLED);
- } else if (nxpncihal_ctrl.p_rx_data[8] == 0x00) {
- config_i2c_vlaue = 0x00;
- }
- if (config_i2c_vlaue == i2c_status) {
- NXPLOG_NCIHAL_E("i2c_fragmentation_status existing");
- } else {
- if (i2c_status == 0x01) {
- /* NXP I2C fragmenation enabled*/
- status =
- phNxpNciHal_send_ext_cmd(sizeof(fragmentation_enable_config_cmd),
- fragmentation_enable_config_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NXP fragmentation enable failed");
- }
- } else if (i2c_status == 0x00 || config_i2c_vlaue == 0xff) {
- fragmentation_enable_config_cmd[7] = 0x00;
- /* NXP I2C fragmentation disabled*/
- status =
- phNxpNciHal_send_ext_cmd(sizeof(fragmentation_enable_config_cmd),
- fragmentation_enable_config_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NXP fragmentation disable failed");
- }
- }
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_reset_nci), cmd_reset_nci);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NCI_CORE_RESET: Failed");
- }
- if (nxpncihal_ctrl.nci_info.nci_version == NCI_VERSION_2_0) {
- status =
- phNxpNciHal_send_ext_cmd(sizeof(cmd_init_nci2_0), cmd_init_nci2_0);
- } else {
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_init_nci), cmd_init_nci);
- }
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NCI_CORE_INIT : Failed");
- } else if (i2c_status == 0x01) {
- phNxpNciHal_notify_i2c_fragmentation();
- phTmlNfc_set_fragmentation_enabled(I2C_FRAGMENTATION_ENABLED);
- }
- }
- }
-}
-/******************************************************************************
- * Function phNxpNciHal_check_factory_reset
- *
- * Description This function is called at init time to check
- * the presence of ese related info. If file are not
- * present set the SWP_INT_SESSION_ID_CFG to FF to
- * force the NFCEE to re-run its initialization sequence.
- *
- * Returns void.
- *
- ******************************************************************************/
-static void phNxpNciHal_check_factory_reset(void) {
- struct stat st;
- int ret = 0;
- NFCSTATUS status = NFCSTATUS_FAILED;
- const char config_eseinfo_path[] = "/data/nfc/nfaStorage.bin1";
- static uint8_t reset_ese_session_identity_set[] = {
- 0x20, 0x02, 0x17, 0x02, 0xA0, 0xEA, 0x08, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xEB, 0x08,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
-#ifdef PN547C2_FACTORY_RESET_DEBUG
- static uint8_t reset_ese_session_identity[] = {0x20, 0x03, 0x05, 0x02,
- 0xA0, 0xEA, 0xA0, 0xEB};
-#endif
- if (stat(config_eseinfo_path, &st) == -1) {
- NXPLOG_NCIHAL_D("%s file not present = %s", __func__, config_eseinfo_path);
- ret = -1;
- } else {
- ret = 0;
- }
-
- if (ret == -1) {
-#ifdef PN547C2_FACTORY_RESET_DEBUG
- /* NXP ACT Proprietary Ext */
- status = phNxpNciHal_send_ext_cmd(sizeof(reset_ese_session_identity),
- reset_ese_session_identity);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NXP reset_ese_session_identity command failed");
- }
-#endif
- status = phNxpNciHal_send_ext_cmd(sizeof(reset_ese_session_identity_set),
- reset_ese_session_identity_set);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NXP reset_ese_session_identity_set command failed");
- }
-#ifdef PN547C2_FACTORY_RESET_DEBUG
- /* NXP ACT Proprietary Ext */
- status = phNxpNciHal_send_ext_cmd(sizeof(reset_ese_session_identity),
- reset_ese_session_identity);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("NXP reset_ese_session_identity command failed");
- }
-#endif
- }
-}
-
-/******************************************************************************
- * Function phNxpNciHal_print_res_status
- *
- * Description This function is called to process the response status
- * and print the status byte.
- *
- * Returns void.
- *
- ******************************************************************************/
-static void phNxpNciHal_print_res_status(uint8_t* p_rx_data, uint16_t* p_len) {
- static uint8_t response_buf[][30] = {"STATUS_OK",
- "STATUS_REJECTED",
- "STATUS_RF_FRAME_CORRUPTED",
- "STATUS_FAILED",
- "STATUS_NOT_INITIALIZED",
- "STATUS_SYNTAX_ERROR",
- "STATUS_SEMANTIC_ERROR",
- "RFU",
- "RFU",
- "STATUS_INVALID_PARAM",
- "STATUS_MESSAGE_SIZE_EXCEEDED",
- "STATUS_UNDEFINED"};
- int status_byte;
- if (p_rx_data[0] == 0x40 && (p_rx_data[1] == 0x02 || p_rx_data[1] == 0x03)) {
- if (p_rx_data[2] && p_rx_data[3] <= 10) {
- status_byte = p_rx_data[CORE_RES_STATUS_BYTE];
- NXPLOG_NCIHAL_D("%s: response status =%s", __func__,
- response_buf[status_byte]);
- } else {
- NXPLOG_NCIHAL_D("%s: response status =%s", __func__, response_buf[11]);
- }
- if (phNxpNciClock.isClockSet) {
- int i;
- for (i = 0; i < *p_len; i++) {
- phNxpNciClock.p_rx_data[i] = p_rx_data[i];
- }
- }
-
- else if (phNxpNciRfSet.isGetRfSetting) {
- int i;
- for (i = 0; i < *p_len; i++) {
- phNxpNciRfSet.p_rx_data[i] = p_rx_data[i];
- // NXPLOG_NCIHAL_D("%s: response status =0x%x",__func__,p_rx_data[i]);
- }
- } else if (phNxpNciMwEepromArea.isGetEepromArea) {
- int i;
- for (i = 8; i < *p_len; i++) {
- phNxpNciMwEepromArea.p_rx_data[i - 8] = p_rx_data[i];
- }
- }
- }
-
- if (p_rx_data[2] && (config_access == true)) {
- if (p_rx_data[3] != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_W("Invalid Data from config file.");
- config_success = false;
- }
- }
-}
-
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
-NFCSTATUS phNxpNciHal_core_reset_recovery() {
- NFCSTATUS status = NFCSTATUS_FAILED;
-
- uint8_t buffer[260];
- long bufflen = 260;
-
- /*NCI_INIT_CMD*/
- static uint8_t cmd_init_nci[] = {0x20, 0x01, 0x00};
- /*NCI_RESET_CMD*/
- static uint8_t cmd_reset_nci[] = {0x20, 0x00, 0x01,
- 0x00}; // keep configuration
- static uint8_t cmd_init_nci2_0[] = {0x20, 0x01, 0x02, 0x00, 0x00};
- /* reset config cache */
- uint8_t retry_core_init_cnt = 0;
-
- if (discovery_cmd_len == 0) {
- goto FAILURE;
- }
- NXPLOG_NCIHAL_D("%s: recovery", __func__);
-
-retry_core_init:
- if (retry_core_init_cnt > 3) {
- goto FAILURE;
- }
-
- status = phTmlNfc_IoCtl(phTmlNfc_e_ResetDevice);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("PN54X Reset - FAILED\n");
- goto FAILURE;
- }
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_reset_nci), cmd_reset_nci);
- if ((status != NFCSTATUS_SUCCESS) &&
- (nxpncihal_ctrl.retry_cnt >= MAX_RETRY_COUNT)) {
- retry_core_init_cnt++;
- goto retry_core_init;
- } else if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("NCI_CORE_RESET: Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
- if (nxpncihal_ctrl.nci_info.nci_version == NCI_VERSION_2_0) {
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_init_nci2_0), cmd_init_nci2_0);
- } else {
- status = phNxpNciHal_send_ext_cmd(sizeof(cmd_init_nci), cmd_init_nci);
- }
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("NCI_CORE_INIT : Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
-
- status = phNxpNciHal_send_ext_cmd(discovery_cmd_len, discovery_cmd);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("RF_DISCOVERY : Failed");
- retry_core_init_cnt++;
- goto retry_core_init;
- }
-
- return NFCSTATUS_SUCCESS;
-FAILURE:
- abort();
-}
-
-void phNxpNciHal_discovery_cmd_ext(uint8_t* p_cmd_data, uint16_t cmd_len) {
- NXPLOG_NCIHAL_D("phNxpNciHal_discovery_cmd_ext");
- if (cmd_len > 0 && cmd_len <= sizeof(discovery_cmd)) {
- memcpy(discovery_cmd, p_cmd_data, cmd_len);
- discovery_cmd_len = cmd_len;
- }
-}
-#endif
diff --git a/halimpl/pn54x/hal/phNxpNciHal.h b/halimpl/pn54x/hal/phNxpNciHal.h
deleted file mode 100644
index 00ec236..0000000
--- a/halimpl/pn54x/hal/phNxpNciHal.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-#ifndef _PHNXPNCIHAL_H_
-#define _PHNXPNCIHAL_H_
-
-#include <hardware/nfc.h>
-#include <phNxpNciHal_utils.h>
-
-/********************* Definitions and structures *****************************/
-#define MAX_RETRY_COUNT 5
-#define NCI_MAX_DATA_LEN 300
-#define NCI_POLL_DURATION 500
-#define HAL_NFC_ENABLE_I2C_FRAGMENTATION_EVT 0x07
-#undef P2P_PRIO_LOGIC_HAL_IMP
-#define NCI_VERSION_2_0 0x20
-#define NCI_VERSION_1_1 0x11
-#define NCI_VERSION_1_0 0x10
-#define NCI_VERSION_UNKNOWN 0x00
-typedef void(phNxpNciHal_control_granted_callback_t)();
-
-/*ROM CODE VERSION FW*/
-#define FW_MOBILE_ROM_VERSION_PN551 0x10
-#define FW_MOBILE_ROM_VERSION_PN553 0x11
-#define FW_MOBILE_ROM_VERSION_PN548AD 0x10
-#define FW_MOBILE_ROM_VERSION_PN547C2 0x08
-/* NCI Data */
-
-#define NCI_MT_CMD 0x20
-#define NCI_MT_RSP 0x40
-#define NCI_MT_NTF 0x60
-
-#define CORE_RESET_TRIGGER_TYPE_CORE_RESET_CMD_RECEIVED 0x02
-#define CORE_RESET_TRIGGER_TYPE_POWERED_ON 0x01
-#define NCI_MSG_CORE_RESET 0x00
-#define NCI_MSG_CORE_INIT 0x01
-#define NCI_MT_MASK 0xE0
-#define NCI_OID_MASK 0x3F
-typedef struct nci_data {
- uint16_t len;
- uint8_t p_data[NCI_MAX_DATA_LEN];
-} nci_data_t;
-
-typedef enum { HAL_STATUS_CLOSE = 0, HAL_STATUS_OPEN } phNxpNci_HalStatus;
-
-/* Macros to enable and disable extensions */
-#define HAL_ENABLE_EXT() (nxpncihal_ctrl.hal_ext_enabled = 1)
-#define HAL_DISABLE_EXT() (nxpncihal_ctrl.hal_ext_enabled = 0)
-typedef struct phNxpNciInfo {
- uint8_t nci_version;
- bool_t wait_for_ntf;
-} phNxpNciInfo_t;
-/* NCI Control structure */
-typedef struct phNxpNciHal_Control {
- phNxpNci_HalStatus halStatus; /* Indicate if hal is open or closed */
- pthread_t client_thread; /* Integration thread handle */
- uint8_t thread_running; /* Thread running if set to 1, else set to 0 */
- phLibNfc_sConfig_t gDrvCfg; /* Driver config data */
-
- /* Rx data */
- uint8_t* p_rx_data;
- uint16_t rx_data_len;
-
- /* libnfc-nci callbacks */
- nfc_stack_callback_t* p_nfc_stack_cback;
- nfc_stack_data_callback_t* p_nfc_stack_data_cback;
-
- /* control granted callback */
- phNxpNciHal_control_granted_callback_t* p_control_granted_cback;
-
- /* HAL open status */
- bool_t hal_open_status;
-
- /* HAL extensions */
- uint8_t hal_ext_enabled;
-
- /* Waiting semaphore */
- phNxpNciHal_Sem_t ext_cb_data;
-
- uint16_t cmd_len;
- uint8_t p_cmd_data[NCI_MAX_DATA_LEN];
- uint16_t rsp_len;
- uint8_t p_rsp_data[NCI_MAX_DATA_LEN];
-
- /* retry count used to force download */
- uint16_t retry_cnt;
- uint8_t read_retry_cnt;
- phNxpNciInfo_t nci_info;
-} phNxpNciHal_Control_t;
-
-typedef struct phNxpNciClock {
- bool_t isClockSet;
- uint8_t p_rx_data[20];
- bool_t issetConfig;
-} phNxpNciClock_t;
-
-typedef struct phNxpNciRfSetting {
- bool_t isGetRfSetting;
- uint8_t p_rx_data[20];
-} phNxpNciRfSetting_t;
-
-typedef struct phNxpNciMwEepromArea {
- bool_t isGetEepromArea;
- uint8_t p_rx_data[32];
-} phNxpNciMwEepromArea_t;
-
-typedef enum {
- NFC_FORUM_PROFILE,
- EMV_CO_PROFILE,
- INVALID_PROFILe
-} phNxpNciProfile_t;
-/* NXP Poll Profile control structure */
-typedef struct phNxpNciProfile_Control {
- phNxpNciProfile_t profile_type;
- uint8_t bClkSrcVal; /* Holds the System clock source read from config file */
- uint8_t
- bClkFreqVal; /* Holds the System clock frequency read from config file */
- uint8_t bTimeout; /* Holds the Timeout Value */
-} phNxpNciProfile_Control_t;
-
-/* Internal messages to handle callbacks */
-#define NCI_HAL_OPEN_CPLT_MSG 0x411
-#define NCI_HAL_CLOSE_CPLT_MSG 0x412
-#define NCI_HAL_POST_INIT_CPLT_MSG 0x413
-#define NCI_HAL_PRE_DISCOVER_CPLT_MSG 0x414
-#define NCI_HAL_ERROR_MSG 0x415
-#define NCI_HAL_RX_MSG 0xF01
-
-#define NCIHAL_CMD_CODE_LEN_BYTE_OFFSET (2U)
-#define NCIHAL_CMD_CODE_BYTE_LEN (3U)
-
-/******************** NCI HAL exposed functions *******************************/
-
-void phNxpNciHal_request_control(void);
-void phNxpNciHal_release_control(void);
-int phNxpNciHal_write_unlocked(uint16_t data_len, const uint8_t* p_data);
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
-NFCSTATUS phNxpNciHal_core_reset_recovery();
-void phNxpNciHal_discovery_cmd_ext(uint8_t* p_cmd_data, uint16_t cmd_len);
-#endif
-#endif /* _PHNXPNCIHAL_H_ */
diff --git a/halimpl/pn54x/hal/phNxpNciHal_NfcDepSWPrio.c b/halimpl/pn54x/hal/phNxpNciHal_NfcDepSWPrio.c
deleted file mode 100644
index 4243904..0000000
--- a/halimpl/pn54x/hal/phNxpNciHal_NfcDepSWPrio.c
+++ /dev/null
@@ -1,550 +0,0 @@
-/*
- * Copyright (C) 2012-2014 NXP Semiconductors
- *
- * 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.
- */
-
-#include <phNxpLog.h>
-#include <phNxpNciHal.h>
-#include <phNxpNciHal_NfcDepSWPrio.h>
-
-/* Timeout value to wait for NFC-DEP detection.*/
-#define CUSTOM_POLL_TIMEOUT 160
-#define CLEAN_UP_TIMEOUT 250
-#define MAX_WRITE_RETRY 5
-
-/******************* Global variables *****************************************/
-extern phNxpNciHal_Control_t nxpncihal_ctrl;
-extern NFCSTATUS phNxpNciHal_send_ext_cmd(uint16_t cmd_len, uint8_t* p_cmd);
-static uint8_t cmd_stop_rf_discovery[] = {0x21, 0x06, 0x01, 0x00}; /* IDLE */
-static uint8_t cmd_resume_rf_discovery[] = {0x21, 0x06, 0x01,
- 0x03}; /* RF_DISCOVER */
-
-/*RF_DISCOVER_SELECT_CMD*/
-static uint8_t cmd_select_rf_discovery[] = {0x21, 0x04, 0x03, 0x01, 0x04, 0x02};
-
-static uint8_t cmd_poll[64];
-static uint8_t cmd_poll_len = 0;
-int discover_type = 0xFF;
-uint32_t cleanup_timer;
-
-/*PRIO LOGIC related dead functions undefined*/
-#ifdef P2P_PRIO_LOGIC_HAL_IMP
-
-static int iso_dep_detected = 0x00;
-static int poll_timer_fired = 0x00;
-static uint8_t bIgnorep2plogic = 0;
-static uint8_t* p_iso_ntf_buff = NULL; /* buffer to store second notification */
-static uint8_t bIgnoreIsoDep = 0;
-static uint32_t custom_poll_timer;
-
-/************** NFC-DEP SW PRIO functions *************************************/
-
-static NFCSTATUS phNxpNciHal_start_polling_loop(void);
-static NFCSTATUS phNxpNciHal_stop_polling_loop(void);
-static NFCSTATUS phNxpNciHal_resume_polling_loop(void);
-static void phNxpNciHal_NfcDep_store_ntf(uint8_t* p_cmd_data, uint16_t cmd_len);
-
-/*******************************************************************************
-**
-** Function cleanup_timer_handler
-**
-** Description Callback function for cleanup timer.
-**
-** Returns None
-**
-*******************************************************************************/
-static void cleanup_timer_handler(uint32_t timerId, void* pContext) {
- NXPLOG_NCIHAL_D(">> cleanup_timer_handler.");
-
- NXPLOG_NCIHAL_D(
- ">> cleanup_timer_handler. ISO_DEP not detected second time.");
-
- phOsalNfc_Timer_Delete(cleanup_timer);
- cleanup_timer = 0;
- iso_dep_detected = 0x00;
- EnableP2P_PrioLogic = false;
- return;
-}
-
-/*******************************************************************************
-**
-** Function custom_poll_timer_handler
-**
-** Description Callback function for custom poll timer.
-**
-** Returns None
-**
-*******************************************************************************/
-static void custom_poll_timer_handler(uint32_t timerId, void* pContext) {
- NXPLOG_NCIHAL_D(">> custom_poll_timer_handler.");
-
- NXPLOG_NCIHAL_D(
- ">> custom_poll_timer_handler. NFC_DEP not detected. so giving early "
- "chance to ISO_DEP.");
-
- phOsalNfc_Timer_Delete(custom_poll_timer);
-
- if (iso_dep_detected == 0x01) {
- poll_timer_fired = 0x01;
-
- /*
- * Restart polling loop.
- * When the polling loop is stopped, polling will be restarted.
- */
- NXPLOG_NCIHAL_D(">> custom_poll_timer_handler - restart polling loop.");
-
- phNxpNciHal_stop_polling_loop();
- } else {
- NXPLOG_NCIHAL_E(
- ">> custom_poll_timer_handler - invalid flag state (iso_dep_detected)");
- }
-
- return;
-}
-/*******************************************************************************
-**
-** Function phNxpNciHal_stop_polling_loop
-**
-** Description Sends stop polling cmd to NFCC
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_stop_polling_loop() {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- phNxpNciHal_Sem_t cb_data;
- pthread_t pthread;
- discover_type = STOP_POLLING;
-
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- if (pthread_create(&pthread, &attr, tmp_thread, (void*)&discover_type) != 0) {
- NXPLOG_NCIHAL_E("fail to create pthread");
- }
- pthread_attr_destroy(&attr);
- return status;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_resume_polling_loop
-**
-** Description Sends resume polling cmd to NFCC
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_resume_polling_loop() {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- phNxpNciHal_Sem_t cb_data;
- pthread_t pthread;
- discover_type = RESUME_POLLING;
-
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- if (pthread_create(&pthread, &attr, tmp_thread, (void*)&discover_type) != 0) {
- NXPLOG_NCIHAL_E("fail to create pthread");
- }
- pthread_attr_destroy(&attr);
- return status;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_start_polling_loop
-**
-** Description Sends start polling cmd to NFCC
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED
-**
-*******************************************************************************/
-NFCSTATUS phNxpNciHal_start_polling_loop() {
- NFCSTATUS status = NFCSTATUS_FAILED;
- phNxpNciHal_Sem_t cb_data;
- pthread_t pthread;
- discover_type = START_POLLING;
-
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- if (pthread_create(&pthread, &attr, tmp_thread, (void*)&discover_type) != 0) {
- NXPLOG_NCIHAL_E("fail to create pthread");
- }
- pthread_attr_destroy(&attr);
- return status;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_NfcDep_rsp_ext
-**
-** Description Implements algorithm for NFC-DEP protocol priority over
-** ISO-DEP protocol.
-** Following the algorithm:
-** IF ISO-DEP detected first time,set the ISO-DEP detected flag
-** and resume polling loop with 60ms timeout value.
-** a) if than NFC-DEP detected than send the response to
-** libnfc-nci stack and stop the timer.
-** b) if NFC-DEP not detected with in 60ms, than restart
-** the polling loop to give early chance to ISO-DEP with
-** a cleanup timer.
-** c) if ISO-DEP detected second time send the response to
-** libnfc-nci stack and stop the cleanup timer.
-** d) if ISO-DEP not detected with in cleanup timeout, than
-** clear the ISO-DEP detection flag.
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED
-**
-*******************************************************************************/
-NFCSTATUS phNxpNciHal_NfcDep_rsp_ext(uint8_t* p_ntf, uint16_t* p_len) {
- NFCSTATUS status = NFCSTATUS_INVALID_PARAMETER;
-
- NXPLOG_NCIHAL_D(">> p_ntf[0]=%02x , p_ntf[1]=%02x", p_ntf[0], p_ntf[1]);
-
- if (p_ntf[0] == 0x41 && p_ntf[1] == 0x04) {
- // Tag selected, Disable P2P Prio logic.
- bIgnoreIsoDep = 1;
- NXPLOG_NCIHAL_D(">> Tag selected, Disable P2P Prio logic.");
-
- } else if (((p_ntf[0] == 0x61 && p_ntf[1] == 0x06) ||
- (p_ntf[0] == 0x41 && p_ntf[1] == 0x06)) &&
- bIgnoreIsoDep == 1) {
- // Tag deselected, enable P2P Prio logic.
- bIgnoreIsoDep = 0x00;
- NXPLOG_NCIHAL_D(">> Tag deselected, enable P2P Prio logic.");
- }
- if (bIgnoreIsoDep == 0x00 && p_ntf[0] == 0x61 && p_ntf[1] == 0x05 &&
- *p_len > 5) {
- if (p_ntf[5] == 0x04 && p_ntf[6] < 0x80) {
- NXPLOG_NCIHAL_D(">> ISO DEP detected.");
-
- if (iso_dep_detected == 0x00) {
- NXPLOG_NCIHAL_D(">> ISO DEP detected first time. Resume polling loop");
-
- iso_dep_detected = 0x01;
- status = phNxpNciHal_resume_polling_loop();
-
- custom_poll_timer = phOsalNfc_Timer_Create();
- NXPLOG_NCIHAL_D("custom poll timer started - %d", custom_poll_timer);
-
- status = phOsalNfc_Timer_Start(custom_poll_timer, CUSTOM_POLL_TIMEOUT,
- &custom_poll_timer_handler, NULL);
-
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_NCIHAL_D("custom poll timer started");
- } else {
- NXPLOG_NCIHAL_E("custom poll timer not started!!!");
- status = NFCSTATUS_FAILED;
- }
-
- status = NFCSTATUS_FAILED;
- } else {
- NXPLOG_NCIHAL_D(">> ISO DEP detected second time.");
- /* Store notification */
- phNxpNciHal_NfcDep_store_ntf(p_ntf, *p_len);
-
- /* Stop Cleanup_timer */
- phOsalNfc_Timer_Stop(cleanup_timer);
- phOsalNfc_Timer_Delete(cleanup_timer);
- cleanup_timer = 0;
- EnableP2P_PrioLogic = false;
- iso_dep_detected = 0;
- status = NFCSTATUS_SUCCESS;
- }
- } else if (p_ntf[5] == 0x05) {
- NXPLOG_NCIHAL_D(">> NFC-DEP Detected - stopping the custom poll timer");
-
- phOsalNfc_Timer_Stop(custom_poll_timer);
- phOsalNfc_Timer_Delete(custom_poll_timer);
- EnableP2P_PrioLogic = false;
- iso_dep_detected = 0;
- status = NFCSTATUS_SUCCESS;
- } else {
- NXPLOG_NCIHAL_D(
- ">> detected other technology- stopping the custom poll timer");
- phOsalNfc_Timer_Stop(custom_poll_timer);
- phOsalNfc_Timer_Delete(custom_poll_timer);
- EnableP2P_PrioLogic = false;
- iso_dep_detected = 0;
- status = NFCSTATUS_INVALID_PARAMETER;
- }
- } else if (bIgnoreIsoDep == 0x00 &&
- ((p_ntf[0] == 0x41 && p_ntf[1] == 0x06) ||
- (p_ntf[0] == 0x61 && p_ntf[1] == 0x06))) {
- NXPLOG_NCIHAL_D(">> RF disabled");
- if (poll_timer_fired == 0x01) {
- poll_timer_fired = 0x00;
-
- NXPLOG_NCIHAL_D(">>restarting polling loop.");
-
- /* start polling loop */
- phNxpNciHal_start_polling_loop();
- EnableP2P_PrioLogic = false;
- NXPLOG_NCIHAL_D(
- ">> NFC DEP NOT detected - custom poll timer expired - RF disabled");
-
- cleanup_timer = phOsalNfc_Timer_Create();
-
- /* Start cleanup_timer */
- NFCSTATUS status = phOsalNfc_Timer_Start(cleanup_timer, CLEAN_UP_TIMEOUT,
- &cleanup_timer_handler, NULL);
-
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_NCIHAL_D("cleanup timer started");
- } else {
- NXPLOG_NCIHAL_E("cleanup timer not started!!!");
- status = NFCSTATUS_FAILED;
- }
-
- status = NFCSTATUS_FAILED;
- } else {
- status = NFCSTATUS_SUCCESS;
- }
- }
- if (bIgnoreIsoDep == 0x00 && iso_dep_detected == 1) {
- if ((p_ntf[0] == 0x41 && p_ntf[1] == 0x06) ||
- (p_ntf[0] == 0x61 && p_ntf[1] == 0x06)) {
- NXPLOG_NCIHAL_D(">>iso_dep_detected Disconnect related notification");
- status = NFCSTATUS_FAILED;
- } else {
- NXPLOG_NCIHAL_W("Never come here");
- }
- }
-
- return status;
-}
-/*******************************************************************************
-**
-** Function phNxpNciHal_NfcDep_store_ntf
-**
-** Description Stores the iso dep notification locally.
-**
-** Returns None
-**
-*******************************************************************************/
-static void phNxpNciHal_NfcDep_store_ntf(uint8_t* p_cmd_data,
- uint16_t cmd_len) {
- p_iso_ntf_buff = NULL;
-
- p_iso_ntf_buff = malloc(sizeof(uint8_t) * cmd_len);
- if (p_iso_ntf_buff == NULL) {
- NXPLOG_NCIHAL_E("Error allocating memory (p_iso_ntf_buff)");
- return;
- }
- memcpy(p_iso_ntf_buff, p_cmd_data, cmd_len);
- bIgnorep2plogic = 1;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_NfcDep_comapre_ntf
-**
-** Description Compare the notification with previous iso dep notification.
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED
-**
-*******************************************************************************/
-NFCSTATUS phNxpNciHal_NfcDep_comapre_ntf(uint8_t* p_cmd_data,
- uint16_t cmd_len) {
- NFCSTATUS status = NFCSTATUS_FAILED;
- int32_t ret_val = -1;
-
- if (bIgnorep2plogic == 1) {
- ret_val = memcmp(p_cmd_data, p_iso_ntf_buff, cmd_len);
- if (ret_val != 0) {
- NXPLOG_NCIHAL_E("Third notification is not equal to last");
- } else {
- NXPLOG_NCIHAL_E(
- "Third notification is equal to last (disable p2p logic)");
- status = NFCSTATUS_SUCCESS;
- }
- bIgnorep2plogic = 0;
- }
- if (p_iso_ntf_buff != NULL) {
- free(p_iso_ntf_buff);
- p_iso_ntf_buff = NULL;
- }
-
- return status;
-}
-
-extern NFCSTATUS phNxpNciHal_clean_P2P_Prio() {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
-
- iso_dep_detected = 0x00;
- EnableP2P_PrioLogic = false;
- poll_timer_fired = 0x00;
- bIgnorep2plogic = 0x00;
- bIgnoreIsoDep = 0x00;
-
- status = phOsalNfc_Timer_Stop(cleanup_timer);
- status |= phOsalNfc_Timer_Delete(cleanup_timer);
-
- status |= phOsalNfc_Timer_Stop(custom_poll_timer);
- status |= phOsalNfc_Timer_Delete(custom_poll_timer);
- cleanup_timer = 0;
- return status;
-}
-
-#endif
-/*******************************************************************************
-**
-** Function hal_write_cb
-**
-** Description Callback function for hal write.
-**
-** Returns None
-**
-*******************************************************************************/
-static void hal_write_cb(void* pContext, phTmlNfc_TransactInfo_t* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
-
- if (pInfo->wStatus == NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("hal_write_cb: write successful status = 0x%x",
- pInfo->wStatus);
- } else {
- NXPLOG_NCIHAL_E("hal_write_cb: write error status = 0x%x", pInfo->wStatus);
- }
-
- p_cb_data->status = pInfo->wStatus;
-
- SEM_POST(p_cb_data);
- return;
-}
-
-/*******************************************************************************
- **
- ** Function tmp_thread
- **
- ** Description Thread to execute custom poll commands .
- **
- ** Returns None
- **
- *******************************************************************************/
-void* tmp_thread(void* tmp) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- uint16_t data_len;
- NXPLOG_NCIHAL_E("tmp_thread: enter type=0x0%x", *((int*)tmp));
- usleep(10 * 1000);
-
- switch (*((int*)tmp)) {
- case START_POLLING: {
- CONCURRENCY_LOCK();
- data_len = phNxpNciHal_write_unlocked(cmd_poll_len, cmd_poll);
- CONCURRENCY_UNLOCK();
-
- if (data_len != cmd_poll_len) {
- NXPLOG_NCIHAL_E("phNxpNciHal_start_polling_loop: data len mismatch");
- status = NFCSTATUS_FAILED;
- }
- } break;
-
- case RESUME_POLLING: {
- CONCURRENCY_LOCK();
- data_len = phNxpNciHal_write_unlocked(sizeof(cmd_resume_rf_discovery),
- cmd_resume_rf_discovery);
- CONCURRENCY_UNLOCK();
-
- if (data_len != sizeof(cmd_resume_rf_discovery)) {
- NXPLOG_NCIHAL_E("phNxpNciHal_resume_polling_loop: data len mismatch");
- status = NFCSTATUS_FAILED;
- }
- } break;
-
- case STOP_POLLING: {
- CONCURRENCY_LOCK();
- data_len = phNxpNciHal_write_unlocked(sizeof(cmd_stop_rf_discovery),
- cmd_stop_rf_discovery);
- CONCURRENCY_UNLOCK();
-
- if (data_len != sizeof(cmd_stop_rf_discovery)) {
- NXPLOG_NCIHAL_E("phNxpNciHal_stop_polling_loop: data len mismatch");
- status = NFCSTATUS_FAILED;
- }
- } break;
-
- case DISCOVER_SELECT: {
- CONCURRENCY_LOCK();
- data_len = phNxpNciHal_write_unlocked(sizeof(cmd_select_rf_discovery),
- cmd_select_rf_discovery);
- CONCURRENCY_UNLOCK();
-
- if (data_len != sizeof(cmd_resume_rf_discovery)) {
- NXPLOG_NCIHAL_E("phNxpNciHal_resume_polling_loop: data len mismatch");
- status = NFCSTATUS_FAILED;
- }
- } break;
-
- default:
- NXPLOG_NCIHAL_E("No Matching case");
- status = NFCSTATUS_FAILED;
- break;
- }
-
- NXPLOG_NCIHAL_E("tmp_thread: exit");
- return NULL;
-}
-/*******************************************************************************
- **
- ** Function phNxpNciHal_select_RF_Discovery
- **
- ** Description Sends RF_DISCOVER_SELECT_CMD
- ** Parameters RfID , RfProtocolType
- ** Returns NFCSTATUS_PENDING if success
- **
- *******************************************************************************/
-NFCSTATUS phNxpNciHal_select_RF_Discovery(unsigned int RfID,
- unsigned int RfProtocolType) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- phNxpNciHal_Sem_t cb_data;
- pthread_t pthread;
- discover_type = DISCOVER_SELECT;
- cmd_select_rf_discovery[3] = RfID;
- cmd_select_rf_discovery[4] = RfProtocolType;
-
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- if (pthread_create(&pthread, &attr, tmp_thread, (void*)&discover_type) != 0) {
- NXPLOG_NCIHAL_E("fail to create pthread");
- }
- pthread_attr_destroy(&attr);
- return status;
-}
-/*******************************************************************************
-**
-** Function phNxpNciHal_NfcDep_cmd_ext
-**
-** Description Stores the polling loop configuration locally.
-**
-** Returns None
-**
-*******************************************************************************/
-void phNxpNciHal_NfcDep_cmd_ext(uint8_t* p_cmd_data, uint16_t* cmd_len) {
- if (p_cmd_data[0] == 0x21 && p_cmd_data[1] == 0x03) {
- if (*cmd_len == 6 && p_cmd_data[3] == 0x01 && p_cmd_data[4] == 0x02 &&
- p_cmd_data[5] == 0x01) {
- /* DO NOTHING */
- } else {
- /* Store the polling loop configuration */
- cmd_poll_len = *cmd_len;
- memset(&cmd_poll, 0, cmd_poll_len);
- memcpy(&cmd_poll, p_cmd_data, cmd_poll_len);
- }
- }
-
- return;
-}
diff --git a/halimpl/pn54x/hal/phNxpNciHal_NfcDepSWPrio.h b/halimpl/pn54x/hal/phNxpNciHal_NfcDepSWPrio.h
deleted file mode 100644
index 12bf9d4..0000000
--- a/halimpl/pn54x/hal/phNxpNciHal_NfcDepSWPrio.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2012-2014 NXP Semiconductors
- *
- * 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.
- */
-#ifndef _PHNXPNCIHAL_NFCDEPSWPRIO_H_
-#define _PHNXPNCIHAL_NFCDEPSWPRIO_H_
-
-#include <phNxpNciHal.h>
-#include <phTmlNfc.h>
-#include <string.h>
-
-#define START_POLLING 0x00
-#define RESUME_POLLING 0x01
-#define STOP_POLLING 0x02
-#define DISCOVER_SELECT 0x03
-#define CLEAR_PIPE_RSP 0x04
-
-extern uint8_t EnableP2P_PrioLogic;
-
-extern NFCSTATUS phNxpNciHal_NfcDep_rsp_ext(uint8_t* p_ntf, uint16_t* p_len);
-extern void phNxpNciHal_NfcDep_cmd_ext(uint8_t* p_cmd_data, uint16_t* cmd_len);
-extern NFCSTATUS phNxpNciHal_NfcDep_comapre_ntf(uint8_t* p_cmd_data,
- uint16_t cmd_len);
-extern NFCSTATUS phNxpNciHal_select_RF_Discovery(unsigned int RfID,
- unsigned int RfProtocolType);
-extern NFCSTATUS phNxpNciHal_clean_P2P_Prio();
-extern NFCSTATUS phNxpNciHal_send_clear_pipe_rsp(void);
-
-#endif /* _PHNXPNCIHAL_NFCDEPSWPRIO_H_ */
diff --git a/halimpl/pn54x/hal/phNxpNciHal_dta.c b/halimpl/pn54x/hal/phNxpNciHal_dta.c
deleted file mode 100644
index a6611ea..0000000
--- a/halimpl/pn54x/hal/phNxpNciHal_dta.c
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
-* Copyright (C) 2012-2014 NXP Semiconductors
-*
-* 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.
-*/
-#include <phNxpConfig.h>
-#include <phNxpLog.h>
-#include <phNxpNciHal_dta.h>
-
-/*********************** Global Variables *************************************/
-static phNxpDta_Control_t nxpdta_ctrl = {0, 0, 0};
-
-/*******************************************************************************
-**
-** Function phNxpEnable_DtaMode
-**
-** Description This function configures
-** HAL in DTA mode
-**
-*******************************************************************************/
-void phNxpEnable_DtaMode(uint16_t pattern_no) {
- nxpdta_ctrl.dta_ctrl_flag = false;
- nxpdta_ctrl.dta_t1t_flag = false;
- nxpdta_ctrl.dta_pattern_no = pattern_no;
- ALOGD(">>>>DTA - Mode is enabled");
- nxpdta_ctrl.dta_ctrl_flag = true;
-}
-
-/*******************************************************************************
-**
-** Function phNxpDisable_DtaMode
-**
-** Description This function disable DTA mode
-**
-*******************************************************************************/
-void phNxpDisable_DtaMode(void) {
- nxpdta_ctrl.dta_ctrl_flag = false;
- nxpdta_ctrl.dta_t1t_flag = false;
- NXPLOG_NCIHAL_D(">>>>DTA - Mode is Disabled");
-}
-
-/******************************************************************************
- * Function phNxpDta_IsEnable
- *
- * Description This function checks the DTA mode is enable or not.
- *
- * Returns It returns TRUE if DTA enabled otherwise FALSE
- *
- ******************************************************************************/
-NFCSTATUS phNxpDta_IsEnable(void) { return nxpdta_ctrl.dta_ctrl_flag; }
-
-/******************************************************************************
- * Function phNxpDta_T1TEnable
- *
- * Description This function enables DTA mode for T1T tag.
- *
- *
- ******************************************************************************/
-void phNxpDta_T1TEnable(void) { nxpdta_ctrl.dta_t1t_flag = true; }
-/******************************************************************************
- * Function phNxpNHal_DtaUpdate
- *
- * Description This function changes the command and responses specific
- * to make DTA application success
- *
- * Returns It return NFCSTATUS_SUCCESS then continue with send else
- * sends NFCSTATUS_FAILED direct response is prepared and
- * do not send anything to NFCC.
- *
- ******************************************************************************/
-
-NFCSTATUS phNxpNHal_DtaUpdate(uint16_t* cmd_len, uint8_t* p_cmd_data,
- uint16_t* rsp_len, uint8_t* p_rsp_data) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
-
- if (nxpdta_ctrl.dta_ctrl_flag == true) {
- // Workaround for DTA, block the set config command with general bytes */
- if (p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02 &&
- p_cmd_data[2] == 0x17 && p_cmd_data[3] == 0x01 &&
- p_cmd_data[4] == 0x29 && p_cmd_data[5] == 0x14) {
- *rsp_len = 5;
- NXPLOG_NCIHAL_D(">>>>DTA - Block set config command");
- phNxpNciHal_print_packet("DTASEND", p_cmd_data, *cmd_len);
-
- p_rsp_data[0] = 0x40;
- p_rsp_data[1] = 0x02;
- p_rsp_data[2] = 0x02;
- p_rsp_data[3] = 0x00;
- p_rsp_data[4] = 0x00;
-
- phNxpNciHal_print_packet("DTARECV", p_rsp_data, 5);
-
- status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_D(
- "Going through DTA workaround - Block set config command END");
-
- } else if (p_cmd_data[0] == 0x21 && p_cmd_data[1] == 0x08 &&
- p_cmd_data[2] == 0x04 && p_cmd_data[3] == 0xFF &&
- p_cmd_data[4] == 0xFF) {
- NXPLOG_NCIHAL_D(">>>>DTA Change Felica system code");
- *rsp_len = 4;
- p_rsp_data[0] = 0x41;
- p_rsp_data[1] = 0x08;
- p_rsp_data[2] = 0x01;
- p_rsp_data[3] = 0x00;
- status = NFCSTATUS_FAILED;
-
- phNxpNciHal_print_packet("DTARECV", p_rsp_data, 4);
- } else if (p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02 &&
- p_cmd_data[2] == 0x10 && p_cmd_data[3] == 0x05 &&
- p_cmd_data[10] == 0x32 && p_cmd_data[12] == 0x00) {
- NXPLOG_NCIHAL_D(">>>>DTA Update LA_SEL_INFO param");
-
- p_cmd_data[12] = 0x40;
- p_cmd_data[18] = 0x02;
- status = NFCSTATUS_SUCCESS;
- } else if (p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02 &&
- p_cmd_data[2] == 0x0D && p_cmd_data[3] == 0x04 &&
- p_cmd_data[10] == 0x32 && p_cmd_data[12] == 0x00) {
- NXPLOG_NCIHAL_D(">>>>DTA Blocking dirty set config");
- *rsp_len = 5;
- p_rsp_data[0] = 0x40;
- p_rsp_data[1] = 0x02;
- p_rsp_data[2] = 0x02;
- p_rsp_data[3] = 0x00;
- p_rsp_data[4] = 0x00;
- status = NFCSTATUS_FAILED;
- phNxpNciHal_print_packet("DTARECV", p_rsp_data, 5);
- } else if (p_cmd_data[0] == 0x21 && p_cmd_data[1] == 0x03) {
- NXPLOG_NCIHAL_D(">>>>DTA Add NFC-F listen tech params");
- p_cmd_data[2] += 6;
- p_cmd_data[3] += 3;
- p_cmd_data[*cmd_len] = 0x80;
- p_cmd_data[*cmd_len + 1] = 0x01;
- p_cmd_data[*cmd_len + 2] = 0x82;
- p_cmd_data[*cmd_len + 3] = 0x01;
- p_cmd_data[*cmd_len + 4] = 0x85;
- p_cmd_data[*cmd_len + 5] = 0x01;
-
- *cmd_len += 6;
- status = NFCSTATUS_SUCCESS;
- } else if (p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02 &&
- p_cmd_data[2] == 0x0D && p_cmd_data[3] == 0x04 &&
- p_cmd_data[10] == 0x32 && p_cmd_data[12] == 0x20 &&
- nxpdta_ctrl.dta_pattern_no == 0x1000) {
- NXPLOG_NCIHAL_D(">>>>DTA Blocking dirty set config for analog testing");
- *rsp_len = 5;
- p_rsp_data[0] = 0x40;
- p_rsp_data[1] = 0x02;
- p_rsp_data[2] = 0x02;
- p_rsp_data[3] = 0x00;
- p_rsp_data[4] = 0x00;
- status = NFCSTATUS_FAILED;
- phNxpNciHal_print_packet("DTARECV", p_rsp_data, 5);
- } else if (p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02 &&
- p_cmd_data[2] == 0x0D && p_cmd_data[3] == 0x04 &&
- p_cmd_data[4] == 0x32 && p_cmd_data[5] == 0x01 &&
- p_cmd_data[6] == 0x00) {
- NXPLOG_NCIHAL_D(">>>>DTA Blocking dirty set config");
- *rsp_len = 5;
- p_rsp_data[0] = 0x40;
- p_rsp_data[1] = 0x02;
- p_rsp_data[2] = 0x02;
- p_rsp_data[3] = 0x00;
- p_rsp_data[4] = 0x00;
- status = NFCSTATUS_FAILED;
- phNxpNciHal_print_packet("DTARECV", p_rsp_data, 5);
- } else if (p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02 &&
- p_cmd_data[2] == 0x04 && p_cmd_data[3] == 0x01 &&
- p_cmd_data[4] == 0x50 && p_cmd_data[5] == 0x01 &&
- p_cmd_data[6] == 0x00 && nxpdta_ctrl.dta_pattern_no == 0x1000) {
- NXPLOG_NCIHAL_D(">>>>DTA Blocking dirty set config for analog testing");
- *rsp_len = 5;
- p_rsp_data[0] = 0x40;
- p_rsp_data[1] = 0x02;
- p_rsp_data[2] = 0x02;
- p_rsp_data[3] = 0x00;
- p_rsp_data[4] = 0x00;
- status = NFCSTATUS_FAILED;
- phNxpNciHal_print_packet("DTARECV", p_rsp_data, 5);
- } else {
- }
- if (nxpdta_ctrl.dta_t1t_flag == true) {
- if (p_cmd_data[2] == 0x07 && p_cmd_data[3] == 0x78 &&
- p_cmd_data[4] == 0x00 && p_cmd_data[5] == 0x00) {
- /*if (nxpdta_ctrl.dta_pattern_no == 0)
- {
- NXPLOG_NCIHAL_D(">>>>DTA - T1T modification block RID command Custom
- Response (pattern 0)");
- phNxpNciHal_print_packet("DTASEND", p_cmd_data, *cmd_len);
- *rsp_len = 10;
- p_rsp_data[0] = 0x00;
- p_rsp_data[1] = 0x00;
- p_rsp_data[2] = 0x07;
- p_rsp_data[3] = 0x12;
- p_rsp_data[4] = 0x49;
- p_rsp_data[5] = 0x00;
- p_rsp_data[6] = 0x00;
- p_rsp_data[7] = 0x00;
- p_rsp_data[8] = 0x00;
- p_rsp_data[9] = 0x00;
-
- status = NFCSTATUS_FAILED;
-
- phNxpNciHal_print_packet("DTARECV", p_rsp_data, *rsp_len);
- }
- else
- {*/
- NXPLOG_NCIHAL_D("Change RID command's UID echo bytes to 0");
-
- nxpdta_ctrl.dta_t1t_flag = false;
- p_cmd_data[6] = 0x00;
- p_cmd_data[7] = 0x00;
- p_cmd_data[8] = 0x00;
- p_cmd_data[9] = 0x00;
- status = NFCSTATUS_SUCCESS;
- /*}*/
- }
- }
- }
- return status;
-}
diff --git a/halimpl/pn54x/hal/phNxpNciHal_dta.h b/halimpl/pn54x/hal/phNxpNciHal_dta.h
deleted file mode 100644
index ebcae1a..0000000
--- a/halimpl/pn54x/hal/phNxpNciHal_dta.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-* Copyright (C) 2012-2014 NXP Semiconductors
-*
-* 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.
-*/
-
-#ifndef _PHNXPNCIHAL_DTA_H_
-#define _PHNXPNCIHAL_DTA_H_
-
-#include <phNxpNciHal_utils.h>
-/* DTA Control structure */
-typedef struct phNxpDta_Control {
- uint8_t dta_ctrl_flag;
- uint16_t dta_pattern_no;
- uint8_t dta_t1t_flag;
-} phNxpDta_Control_t;
-
-void phNxpEnable_DtaMode(uint16_t pattern_no);
-void phNxpDisable_DtaMode(void);
-NFCSTATUS phNxpDta_IsEnable(void);
-void phNxpDta_T1TEnable(void);
-NFCSTATUS phNxpNHal_DtaUpdate(uint16_t* cmd_len, uint8_t* p_cmd_data,
- uint16_t* rsp_len, uint8_t* p_rsp_data);
-
-#endif /* _PHNXPNICHAL_DTA_H_ */
diff --git a/halimpl/pn54x/hal/phNxpNciHal_ext.c b/halimpl/pn54x/hal/phNxpNciHal_ext.c
deleted file mode 100644
index 864f9ae..0000000
--- a/halimpl/pn54x/hal/phNxpNciHal_ext.c
+++ /dev/null
@@ -1,945 +0,0 @@
-/*
- * Copyright (C) 2012-2014 NXP Semiconductors
- *
- * 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.
- */
-#include <log/log.h>
-#include <phDal4Nfc_messageQueueLib.h>
-#include <phNxpConfig.h>
-#include <phNxpLog.h>
-#include <phNxpNciHal.h>
-#include <phNxpNciHal_NfcDepSWPrio.h>
-#include <phNxpNciHal_ext.h>
-#include <phTmlNfc.h>
-
-/* Timeout value to wait for response from PN548AD */
-#define HAL_EXTNS_WRITE_RSP_TIMEOUT (1000)
-
-#undef P2P_PRIO_LOGIC_HAL_IMP
-
-/******************* Global variables *****************************************/
-extern phNxpNciHal_Control_t nxpncihal_ctrl;
-extern phNxpNciProfile_Control_t nxpprofile_ctrl;
-
-extern uint32_t cleanup_timer;
-uint8_t icode_detected = 0x00;
-uint8_t icode_send_eof = 0x00;
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
-uint8_t nfcdep_detected = 0x00;
-#endif
-static uint8_t ee_disc_done = 0x00;
-uint8_t EnableP2P_PrioLogic = false;
-static uint32_t RfDiscID = 1;
-static uint32_t RfProtocolType = 4;
-/* NFCEE Set mode */
-static uint8_t setEEModeDone = 0x00;
-static uint8_t cmd_nfcee_setmode_enable[] = {0x22, 0x01, 0x02, 0x01, 0x01};
-
-/* External global variable to get FW version from NCI response*/
-extern uint32_t wFwVerRsp;
-/* External global variable to get FW version from FW file*/
-extern uint16_t wFwVer;
-
-uint16_t fw_maj_ver;
-uint16_t rom_version;
-/* local buffer to store CORE_INIT response */
-static uint32_t bCoreInitRsp[40];
-static uint32_t iCoreInitRspLen;
-
-extern uint32_t timeoutTimerId;
-
-extern NFCSTATUS read_retry();
-
-/************** HAL extension functions ***************************************/
-static void hal_extns_write_rsp_timeout_cb(uint32_t TimerId, void* pContext);
-
-/*Proprietary cmd sent to HAL to send reader mode flag
- * Last byte of 4 byte proprietary cmd data contains ReaderMode flag
- * If this flag is enabled, NFC-DEP protocol is modified to T3T protocol
- * if FrameRF interface is selected. This needs to be done as the FW
- * always sends Ntf for FrameRF with NFC-DEP even though FrameRF with T3T is
- * previously selected with DISCOVER_SELECT_CMD
- */
-#define PROPRIETARY_CMD_FELICA_READER_MODE 0xFE
-static uint8_t gFelicaReaderMode;
-
-static NFCSTATUS phNxpNciHal_ext_process_nfc_init_rsp(uint8_t* p_ntf,
- uint16_t* p_len);
-/*******************************************************************************
-**
-** Function phNxpNciHal_ext_init
-**
-** Description initialize extension function
-**
-*******************************************************************************/
-void phNxpNciHal_ext_init(void) {
- icode_detected = 0x00;
- icode_send_eof = 0x00;
- setEEModeDone = 0x00;
- EnableP2P_PrioLogic = false;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_process_ext_rsp
-**
-** Description Process extension function response
-**
-** Returns NFCSTATUS_SUCCESS if success
-**
-*******************************************************************************/
-NFCSTATUS phNxpNciHal_process_ext_rsp(uint8_t* p_ntf, uint16_t* p_len) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- uint16_t rf_technology_length_param = 0;
-
- if (p_ntf[0] == 0x61 && p_ntf[1] == 0x05 && *p_len < 14) {
- if (*p_len <= 6) {
- android_errorWriteLog(0x534e4554, "118152591");
- }
- NXPLOG_NCIHAL_E("RF_INTF_ACTIVATED_NTF length error!");
- status = NFCSTATUS_FAILED;
- return status;
- }
-
- if (p_ntf[0] == 0x61 && p_ntf[1] == 0x05 && p_ntf[4] == 0x03 &&
- p_ntf[5] == 0x05 && nxpprofile_ctrl.profile_type == EMV_CO_PROFILE) {
- p_ntf[4] = 0xFF;
- p_ntf[5] = 0xFF;
- p_ntf[6] = 0xFF;
- NXPLOG_NCIHAL_D("Nfc-Dep Detect in EmvCo profile - Restart polling");
- }
-
- if (p_ntf[0] == 0x61 && p_ntf[1] == 0x05 && p_ntf[4] == 0x01 &&
- p_ntf[5] == 0x05 && p_ntf[6] == 0x02 && gFelicaReaderMode) {
- /*If FelicaReaderMode is enabled,Change Protocol to T3T from NFC-DEP
- * when FrameRF interface is selected*/
- p_ntf[5] = 0x03;
- NXPLOG_NCIHAL_D("FelicaReaderMode:Activity 1.1");
- }
-
-#ifdef P2P_PRIO_LOGIC_HAL_IMP
- if (p_ntf[0] == 0x61 && p_ntf[1] == 0x05 && p_ntf[4] == 0x02 &&
- p_ntf[5] == 0x04 && nxpprofile_ctrl.profile_type == NFC_FORUM_PROFILE) {
- EnableP2P_PrioLogic = true;
- }
-
- NXPLOG_NCIHAL_D("Is EnableP2P_PrioLogic: 0x0%X", EnableP2P_PrioLogic);
- if (phNxpDta_IsEnable() == false) {
- if ((icode_detected != 1) && (EnableP2P_PrioLogic == true)) {
- if (phNxpNciHal_NfcDep_comapre_ntf(p_ntf, *p_len) == NFCSTATUS_FAILED) {
- status = phNxpNciHal_NfcDep_rsp_ext(p_ntf, p_len);
- if (status != NFCSTATUS_INVALID_PARAMETER) {
- return status;
- }
- }
- }
- }
-#endif
-
- status = NFCSTATUS_SUCCESS;
-
- if (p_ntf[0] == 0x61 && p_ntf[1] == 0x05) {
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
- if (nfcdep_detected) {
- nfcdep_detected = 0x00;
- }
-#endif
-
- switch (p_ntf[4]) {
- case 0x00:
- NXPLOG_NCIHAL_D("NxpNci: RF Interface = NFCEE Direct RF");
- break;
- case 0x01:
- NXPLOG_NCIHAL_D("NxpNci: RF Interface = Frame RF");
- break;
- case 0x02:
- NXPLOG_NCIHAL_D("NxpNci: RF Interface = ISO-DEP");
- break;
- case 0x03:
- NXPLOG_NCIHAL_D("NxpNci: RF Interface = NFC-DEP");
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
- nfcdep_detected = 0x01;
-#endif
- break;
- case 0x80:
- NXPLOG_NCIHAL_D("NxpNci: RF Interface = MIFARE");
- break;
- default:
- NXPLOG_NCIHAL_D("NxpNci: RF Interface = Unknown");
- break;
- }
-
- switch (p_ntf[5]) {
- case 0x01:
- NXPLOG_NCIHAL_D("NxpNci: Protocol = T1T");
- phNxpDta_T1TEnable();
- break;
- case 0x02:
- NXPLOG_NCIHAL_D("NxpNci: Protocol = T2T");
- break;
- case 0x03:
- NXPLOG_NCIHAL_D("NxpNci: Protocol = T3T");
- break;
- case 0x04:
- NXPLOG_NCIHAL_D("NxpNci: Protocol = ISO-DEP");
- break;
- case 0x05:
- NXPLOG_NCIHAL_D("NxpNci: Protocol = NFC-DEP");
- break;
- case 0x06:
- NXPLOG_NCIHAL_D("NxpNci: Protocol = 15693");
- break;
- case 0x80:
- NXPLOG_NCIHAL_D("NxpNci: Protocol = MIFARE");
- break;
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- case 0x81:
-#else
- case 0x8A:
-#endif
- NXPLOG_NCIHAL_D("NxpNci: Protocol = Kovio");
- break;
- default:
- NXPLOG_NCIHAL_D("NxpNci: Protocol = Unknown");
- break;
- }
-
- switch (p_ntf[6]) {
- case 0x00:
- NXPLOG_NCIHAL_D("NxpNci: Mode = A Passive Poll");
- break;
- case 0x01:
- NXPLOG_NCIHAL_D("NxpNci: Mode = B Passive Poll");
- break;
- case 0x02:
- NXPLOG_NCIHAL_D("NxpNci: Mode = F Passive Poll");
- break;
- case 0x03:
- NXPLOG_NCIHAL_D("NxpNci: Mode = A Active Poll");
- break;
- case 0x05:
- NXPLOG_NCIHAL_D("NxpNci: Mode = F Active Poll");
- break;
- case 0x06:
- NXPLOG_NCIHAL_D("NxpNci: Mode = 15693 Passive Poll");
- break;
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- case 0x70:
-#else
- case 0x77:
-#endif
- NXPLOG_NCIHAL_D("NxpNci: Mode = Kovio");
- break;
- case 0x80:
- NXPLOG_NCIHAL_D("NxpNci: Mode = A Passive Listen");
- break;
- case 0x81:
- NXPLOG_NCIHAL_D("NxpNci: Mode = B Passive Listen");
- break;
- case 0x82:
- NXPLOG_NCIHAL_D("NxpNci: Mode = F Passive Listen");
- break;
- case 0x83:
- NXPLOG_NCIHAL_D("NxpNci: Mode = A Active Listen");
- break;
- case 0x85:
- NXPLOG_NCIHAL_D("NxpNci: Mode = F Active Listen");
- break;
- case 0x86:
- NXPLOG_NCIHAL_D("NxpNci: Mode = 15693 Passive Listen");
- break;
- default:
- NXPLOG_NCIHAL_D("NxpNci: Mode = Unknown");
- break;
- }
- }
- phNxpNciHal_ext_process_nfc_init_rsp(p_ntf, p_len);
-
- if (p_ntf[0] == 0x61 && p_ntf[1] == 0x05 && p_ntf[2] == 0x15 &&
- p_ntf[4] == 0x01 && p_ntf[5] == 0x06 && p_ntf[6] == 0x06) {
- NXPLOG_NCIHAL_D("> Going through workaround - notification of ISO 15693");
- icode_detected = 0x01;
- p_ntf[21] = 0x01;
- p_ntf[22] = 0x01;
- } else if (icode_detected == 1 && icode_send_eof == 2) {
- icode_send_eof = 3;
- } else if (p_ntf[0] == 0x00 && p_ntf[1] == 0x00 && icode_detected == 1) {
- if (icode_send_eof == 3) {
- icode_send_eof = 0;
- }
- if (nxpncihal_ctrl.nci_info.nci_version != NCI_VERSION_2_0) {
- if (p_ntf[p_ntf[2] + 2] == 0x00) {
- NXPLOG_NCIHAL_D("> Going through workaround - data of ISO 15693");
- p_ntf[2]--;
- (*p_len)--;
- } else {
- p_ntf[p_ntf[2] + 2] |= 0x01;
- }
- }
- } else if (p_ntf[2] == 0x02 && p_ntf[1] == 0x00 && icode_detected == 1) {
- NXPLOG_NCIHAL_D("> ICODE EOF response do not send to upper layer");
- } else if (p_ntf[0] == 0x61 && p_ntf[1] == 0x06 && icode_detected == 1) {
- NXPLOG_NCIHAL_D("> Polling Loop Re-Started");
- icode_detected = 0;
- icode_send_eof = 0;
- } else if (*p_len == 4 && p_ntf[0] == 0x40 && p_ntf[1] == 0x02 &&
- p_ntf[2] == 0x01 && p_ntf[3] == 0x06) {
- NXPLOG_NCIHAL_D("> Deinit workaround for LLCP set_config 0x%x 0x%x 0x%x",
- p_ntf[21], p_ntf[22], p_ntf[23]);
- p_ntf[0] = 0x40;
- p_ntf[1] = 0x02;
- p_ntf[2] = 0x02;
- p_ntf[3] = 0x00;
- p_ntf[4] = 0x00;
- *p_len = 5;
- }
- // 4200 02 00 01
- else if (p_ntf[0] == 0x42 && p_ntf[1] == 0x00 && ee_disc_done == 0x01) {
- NXPLOG_NCIHAL_D("Going through workaround - NFCEE_DISCOVER_RSP");
- if (p_ntf[4] == 0x01) {
- p_ntf[4] = 0x00;
-
- ee_disc_done = 0x00;
- }
- NXPLOG_NCIHAL_D("Going through workaround - NFCEE_DISCOVER_RSP - END");
-
- } else if (p_ntf[0] == 0x61 && p_ntf[1] == 0x03 /*&& cleanup_timer!=0*/) {
- if (cleanup_timer != 0) {
- /* if RF Notification Type of RF_DISCOVER_NTF is Last Notification */
- if (0 == (*(p_ntf + 2 + (*(p_ntf + 2))))) {
- phNxpNciHal_select_RF_Discovery(RfDiscID, RfProtocolType);
- status = NFCSTATUS_FAILED;
- return status;
- } else {
- RfDiscID = p_ntf[3];
- RfProtocolType = p_ntf[4];
- }
- status = NFCSTATUS_FAILED;
- return status;
- }
- } else if (p_ntf[0] == 0x41 && p_ntf[1] == 0x04 && cleanup_timer != 0) {
- status = NFCSTATUS_FAILED;
- return status;
- }
-#if (NFC_NXP_CHIP_TYPE == PN547C2)
- else if (p_ntf[0] == 0x61 && p_ntf[1] == 0x05 && p_ntf[4] == 0x02 &&
- p_ntf[5] == 0x80 && p_ntf[6] == 0x00) {
- NXPLOG_NCIHAL_D(
- "Going through workaround - iso-dep interface mifare protocol with "
- "sak value not equal to 0x20");
- rf_technology_length_param = p_ntf[9];
- if ((p_ntf[9 + rf_technology_length_param] & 0x20) != 0x20) {
- p_ntf[4] = 0x80;
- }
- }
-#endif
- else if (*p_len == 4 && p_ntf[0] == 0x4F && p_ntf[1] == 0x11 &&
- p_ntf[2] == 0x01) {
- if (p_ntf[3] == 0x00) {
- NXPLOG_NCIHAL_D(
- "> Workaround for ISO-DEP Presence Check, ignore response and wait "
- "for notification");
- p_ntf[0] = 0x60;
- p_ntf[1] = 0x06;
- p_ntf[2] = 0x03;
- p_ntf[3] = 0x01;
- p_ntf[4] = 0x00;
- p_ntf[5] = 0x01;
- *p_len = 6;
- } else {
- NXPLOG_NCIHAL_D(
- "> Workaround for ISO-DEP Presence Check, presence check return "
- "failed");
- p_ntf[0] = 0x60;
- p_ntf[1] = 0x08;
- p_ntf[2] = 0x02;
- p_ntf[3] = 0xB2;
- p_ntf[4] = 0x00;
- *p_len = 5;
- }
- } else if (*p_len == 4 && p_ntf[0] == 0x6F && p_ntf[1] == 0x11 &&
- p_ntf[2] == 0x01) {
- if (p_ntf[3] == 0x01) {
- NXPLOG_NCIHAL_D(
- "> Workaround for ISO-DEP Presence Check - Card still in field");
- p_ntf[0] = 0x00;
- p_ntf[1] = 0x00;
- p_ntf[2] = 0x01;
- p_ntf[3] = 0x7E;
- } else {
- NXPLOG_NCIHAL_D(
- "> Workaround for ISO-DEP Presence Check - Card not in field");
- p_ntf[0] = 0x60;
- p_ntf[1] = 0x08;
- p_ntf[2] = 0x02;
- p_ntf[3] = 0xB2;
- p_ntf[4] = 0x00;
- *p_len = 5;
- }
- }
- /*
- else if(p_ntf[0] == 0x61 && p_ntf[1] == 0x05 && p_ntf[4] == 0x01 && p_ntf[5]
- == 0x00 && p_ntf[6] == 0x01)
- {
- NXPLOG_NCIHAL_D("Picopass type 3-B with undefined protocol is not
- supported, disabling");
- p_ntf[4] = 0xFF;
- p_ntf[5] = 0xFF;
- p_ntf[6] = 0xFF;
- }*/
-
- return status;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_ext_process_nfc_init_rsp
- *
- * Description This function is used to process the HAL NFC core reset rsp
- * and ntf and core init rsp of NCI 1.0 or NCI2.0 and update
- * NCI version.
- * It also handles error response such as core_reset_ntf with
- * error status in both NCI2.0 and NCI1.0.
- *
- * Returns Returns NFCSTATUS_SUCCESS if parsing response is successful
- * or returns failure.
- *
- *******************************************************************************/
-static NFCSTATUS phNxpNciHal_ext_process_nfc_init_rsp(uint8_t* p_ntf,
- uint16_t* p_len) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- /* Parsing CORE_RESET_RSP and CORE_RESET_NTF to update NCI version.*/
- if (p_ntf == NULL || *p_len == 0x00) {
- return NFCSTATUS_FAILED;
- }
- if (p_ntf[0] == NCI_MT_RSP &&
- ((p_ntf[1] & NCI_OID_MASK) == NCI_MSG_CORE_RESET)) {
- if (p_ntf[2] == 0x01 && p_ntf[3] == 0x00) {
- NXPLOG_NCIHAL_D("CORE_RESET_RSP NCI2.0");
- if (nxpncihal_ctrl.hal_ext_enabled == TRUE) {
- nxpncihal_ctrl.nci_info.wait_for_ntf = TRUE;
- }
- } else if (p_ntf[2] == 0x03 && p_ntf[3] == 0x00) {
- NXPLOG_NCIHAL_D("CORE_RESET_RSP NCI1.0");
- nxpncihal_ctrl.nci_info.nci_version = p_ntf[4];
- }
- } else if (p_ntf[0] == NCI_MT_NTF &&
- ((p_ntf[1] & NCI_OID_MASK) == NCI_MSG_CORE_RESET)) {
- if (p_ntf[3] == CORE_RESET_TRIGGER_TYPE_CORE_RESET_CMD_RECEIVED ||
- p_ntf[3] == CORE_RESET_TRIGGER_TYPE_POWERED_ON) {
- NXPLOG_NCIHAL_D("CORE_RESET_NTF NCI2.0 reason CORE_RESET_CMD received !");
- nxpncihal_ctrl.nci_info.nci_version = p_ntf[5];
- int len = p_ntf[2] + 2; /*include 2 byte header*/
- wFwVerRsp = (((uint32_t)p_ntf[len - 2]) << 16U) |
- (((uint32_t)p_ntf[len - 1]) << 8U) | p_ntf[len];
- NXPLOG_NCIHAL_D("NxpNci> FW Version: %x.%x.%x", p_ntf[len - 2],
- p_ntf[len - 1], p_ntf[len]);
- } else {
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
- if (nfcdep_detected &&
- !(p_ntf[2] == 0x06 && p_ntf[3] == 0xA0 && p_ntf[4] == 0x00 &&
- ((p_ntf[5] == 0xC9 && p_ntf[6] == 0x95 && p_ntf[7] == 0x00 &&
- p_ntf[8] == 0x00) ||
- (p_ntf[5] == 0x07 && p_ntf[6] == 0x39 && p_ntf[7] == 0xF2 &&
- p_ntf[8] == 0x00)))) {
- nfcdep_detected = 0x00;
- }
-#endif
- phNxpNciHal_emergency_recovery();
- status = NFCSTATUS_FAILED;
- } /* Parsing CORE_INIT_RSP*/
- } else if (p_ntf[0] == NCI_MT_RSP &&
- ((p_ntf[1] & NCI_OID_MASK) == NCI_MSG_CORE_INIT)) {
- if (nxpncihal_ctrl.nci_info.nci_version == NCI_VERSION_2_0) {
- NXPLOG_NCIHAL_D("CORE_INIT_RSP NCI2.0 received !");
- } else {
- NXPLOG_NCIHAL_D("CORE_INIT_RSP NCI1.0 received !");
- int len = p_ntf[2] + 2; /*include 2 byte header*/
- wFwVerRsp = (((uint32_t)p_ntf[len - 2]) << 16U) |
- (((uint32_t)p_ntf[len - 1]) << 8U) | p_ntf[len];
- if (wFwVerRsp == 0) status = NFCSTATUS_FAILED;
- iCoreInitRspLen = *p_len;
- memcpy(bCoreInitRsp, p_ntf, *p_len);
- NXPLOG_NCIHAL_D("NxpNci> FW Version: %x.%x.%x", p_ntf[len - 2],
- p_ntf[len - 1], p_ntf[len]);
- fw_maj_ver = p_ntf[len - 1];
- rom_version = p_ntf[len - 2];
- }
- }
- return status;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_process_ext_cmd_rsp
- *
- * Description This function process the extension command response. It
- * also checks the received response to expected response.
- *
- * Returns returns NFCSTATUS_SUCCESS if response is as expected else
- * returns failure.
- *
- ******************************************************************************/
-static NFCSTATUS phNxpNciHal_process_ext_cmd_rsp(uint16_t cmd_len,
- uint8_t* p_cmd) {
- NFCSTATUS status = NFCSTATUS_FAILED;
- uint16_t data_written = 0;
-
- /* Create the local semaphore */
- if (phNxpNciHal_init_cb_data(&nxpncihal_ctrl.ext_cb_data, NULL) !=
- NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("Create ext_cb_data failed");
- return NFCSTATUS_FAILED;
- }
-
- nxpncihal_ctrl.ext_cb_data.status = NFCSTATUS_SUCCESS;
-
- /* Send ext command */
- data_written = phNxpNciHal_write_unlocked(cmd_len, p_cmd);
- if (data_written != cmd_len) {
- NXPLOG_NCIHAL_D("phNxpNciHal_write failed for hal ext");
- goto clean_and_return;
- }
-
- /* Start timer */
- status = phOsalNfc_Timer_Start(timeoutTimerId, HAL_EXTNS_WRITE_RSP_TIMEOUT,
- &hal_extns_write_rsp_timeout_cb, NULL);
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_NCIHAL_D("Response timer started");
- } else {
- NXPLOG_NCIHAL_E("Response timer not started!!!");
- status = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- /* Wait for rsp */
- NXPLOG_NCIHAL_D("Waiting after ext cmd sent");
- if (SEM_WAIT(nxpncihal_ctrl.ext_cb_data)) {
- NXPLOG_NCIHAL_E("p_hal_ext->ext_cb_data.sem semaphore error");
- goto clean_and_return;
- }
-
- /* Stop Timer */
- status = phOsalNfc_Timer_Stop(timeoutTimerId);
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_NCIHAL_D("Response timer stopped");
- } else {
- NXPLOG_NCIHAL_E("Response timer stop ERROR!!!");
- status = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
- /* Start timer to wait for NTF*/
- if (nxpncihal_ctrl.nci_info.wait_for_ntf == TRUE) {
- status = phOsalNfc_Timer_Start(timeoutTimerId, HAL_EXTNS_WRITE_RSP_TIMEOUT,
- &hal_extns_write_rsp_timeout_cb, NULL);
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_NCIHAL_D("Response timer started");
- } else {
- NXPLOG_NCIHAL_E("Response timer not started!!!");
- status = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
- if (SEM_WAIT(nxpncihal_ctrl.ext_cb_data)) {
- NXPLOG_NCIHAL_E("p_hal_ext->ext_cb_data.sem semaphore error");
- /* Stop Timer */
- status = phOsalNfc_Timer_Stop(timeoutTimerId);
- goto clean_and_return;
- }
- status = phOsalNfc_Timer_Stop(timeoutTimerId);
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_NCIHAL_D("Response timer stopped");
- } else {
- NXPLOG_NCIHAL_E("Response timer stop ERROR!!!");
- status = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
- }
-
- if (nxpncihal_ctrl.ext_cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E(
- "Callback Status is failed!! Timer Expired!! Couldn't read it! 0x%x",
- nxpncihal_ctrl.ext_cb_data.status);
- status = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- NXPLOG_NCIHAL_D("Checking response");
- status = NFCSTATUS_SUCCESS;
-
-clean_and_return:
- phNxpNciHal_cleanup_cb_data(&nxpncihal_ctrl.ext_cb_data);
- nxpncihal_ctrl.nci_info.wait_for_ntf = FALSE;
- return status;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_write_ext
- *
- * Description This function inform the status of phNxpNciHal_open
- * function to libnfc-nci.
- *
- * Returns It return NFCSTATUS_SUCCESS then continue with send else
- * sends NFCSTATUS_FAILED direct response is prepared and
- * do not send anything to NFCC.
- *
- ******************************************************************************/
-
-NFCSTATUS phNxpNciHal_write_ext(uint16_t* cmd_len, uint8_t* p_cmd_data,
- uint16_t* rsp_len, uint8_t* p_rsp_data) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
-
- unsigned long retval = 0;
- int isfound =
- GetNxpNumValue(NAME_MIFARE_READER_ENABLE, &retval, sizeof(unsigned long));
-
- phNxpNciHal_NfcDep_cmd_ext(p_cmd_data, cmd_len);
-
- if (phNxpDta_IsEnable() == true) {
- status = phNxpNHal_DtaUpdate(cmd_len, p_cmd_data, rsp_len, p_rsp_data);
- }
-
- if (p_cmd_data[0] == PROPRIETARY_CMD_FELICA_READER_MODE &&
- p_cmd_data[1] == PROPRIETARY_CMD_FELICA_READER_MODE &&
- p_cmd_data[2] == PROPRIETARY_CMD_FELICA_READER_MODE) {
- NXPLOG_NCIHAL_D("Received proprietary command to set Felica Reader mode:%d",
- p_cmd_data[3]);
- gFelicaReaderMode = p_cmd_data[3];
- /* frame the dummy response */
- *rsp_len = 4;
- p_rsp_data[0] = 0x00;
- p_rsp_data[1] = 0x00;
- p_rsp_data[2] = 0x00;
- p_rsp_data[3] = 0x00;
- status = NFCSTATUS_FAILED;
- } else if (p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02 &&
- p_cmd_data[2] == 0x05 && p_cmd_data[3] == 0x01 &&
- p_cmd_data[4] == 0xA0 && p_cmd_data[5] == 0x44 &&
- p_cmd_data[6] == 0x01 && p_cmd_data[7] == 0x01) {
- nxpprofile_ctrl.profile_type = EMV_CO_PROFILE;
- NXPLOG_NCIHAL_D("EMV_CO_PROFILE mode - Enabled");
- status = NFCSTATUS_SUCCESS;
- } else if (p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02 &&
- p_cmd_data[2] == 0x05 && p_cmd_data[3] == 0x01 &&
- p_cmd_data[4] == 0xA0 && p_cmd_data[5] == 0x44 &&
- p_cmd_data[6] == 0x01 && p_cmd_data[7] == 0x00) {
- NXPLOG_NCIHAL_D("NFC_FORUM_PROFILE mode - Enabled");
- nxpprofile_ctrl.profile_type = NFC_FORUM_PROFILE;
- status = NFCSTATUS_SUCCESS;
- }
-
- if (nxpprofile_ctrl.profile_type == EMV_CO_PROFILE) {
- if (p_cmd_data[0] == 0x21 && p_cmd_data[1] == 0x06 &&
- p_cmd_data[2] == 0x01 && p_cmd_data[3] == 0x03) {
-#if 0
- //Needs clarification whether to keep it or not
- NXPLOG_NCIHAL_D ("EmvCo Poll mode - RF Deactivate discard");
- phNxpNciHal_print_packet("SEND", p_cmd_data, *cmd_len);
- *rsp_len = 4;
- p_rsp_data[0] = 0x41;
- p_rsp_data[1] = 0x06;
- p_rsp_data[2] = 0x01;
- p_rsp_data[3] = 0x00;
- phNxpNciHal_print_packet("RECV", p_rsp_data, 4);
- status = NFCSTATUS_FAILED;
-#endif
- } else if (p_cmd_data[0] == 0x21 && p_cmd_data[1] == 0x03) {
- NXPLOG_NCIHAL_D("EmvCo Poll mode - Discover map only for A and B");
- p_cmd_data[2] = 0x05;
- p_cmd_data[3] = 0x02;
- p_cmd_data[4] = 0x00;
- p_cmd_data[5] = 0x01;
- p_cmd_data[6] = 0x01;
- p_cmd_data[7] = 0x01;
- *cmd_len = 8;
- }
- }
-
- if (retval == 0x01 && p_cmd_data[0] == 0x21 && p_cmd_data[1] == 0x00) {
- NXPLOG_NCIHAL_D("Going through extns - Adding Mifare in RF Discovery");
- p_cmd_data[2] += 3;
- p_cmd_data[3] += 1;
- p_cmd_data[*cmd_len] = 0x80;
- p_cmd_data[*cmd_len + 1] = 0x01;
- p_cmd_data[*cmd_len + 2] = 0x80;
- *cmd_len += 3;
- status = NFCSTATUS_SUCCESS;
- NXPLOG_NCIHAL_D(
- "Going through extns - Adding Mifare in RF Discovery - END");
- } else if (p_cmd_data[3] == 0x81 && p_cmd_data[4] == 0x01 &&
- p_cmd_data[5] == 0x03) {
- NXPLOG_NCIHAL_D("> Going through workaround - set host list");
-
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- *cmd_len = 8;
-
- p_cmd_data[2] = 0x05;
- p_cmd_data[6] = 0x02;
- p_cmd_data[7] = 0xC0;
-#else
- *cmd_len = 7;
-
- p_cmd_data[2] = 0x04;
- p_cmd_data[6] = 0xC0;
-#endif
-
- NXPLOG_NCIHAL_D("> Going through workaround - set host list - END");
- status = NFCSTATUS_SUCCESS;
- } else if (icode_detected) {
- if ((p_cmd_data[3] & 0x40) == 0x40 &&
- (p_cmd_data[4] == 0x21 || p_cmd_data[4] == 0x22 ||
- p_cmd_data[4] == 0x24 || p_cmd_data[4] == 0x27 ||
- p_cmd_data[4] == 0x28 || p_cmd_data[4] == 0x29 ||
- p_cmd_data[4] == 0x2a)) {
- NXPLOG_NCIHAL_D("> Send EOF set");
- icode_send_eof = 1;
- }
-
- if (p_cmd_data[3] == 0x20 || p_cmd_data[3] == 0x24 ||
- p_cmd_data[3] == 0x60) {
- NXPLOG_NCIHAL_D("> NFC ISO_15693 Proprietary CMD ");
- p_cmd_data[3] += 0x02;
- }
- } else if (p_cmd_data[0] == 0x21 && p_cmd_data[1] == 0x03) {
- NXPLOG_NCIHAL_D("> Polling Loop Started");
- icode_detected = 0;
- icode_send_eof = 0;
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
- // Cache discovery cmd for recovery
- phNxpNciHal_discovery_cmd_ext(p_cmd_data, *cmd_len);
-#endif
- }
- // 22000100
- else if (p_cmd_data[0] == 0x22 && p_cmd_data[1] == 0x00 &&
- p_cmd_data[2] == 0x01 && p_cmd_data[3] == 0x00) {
- // ee_disc_done = 0x01;//Reader Over SWP event getting
- *rsp_len = 0x05;
- p_rsp_data[0] = 0x42;
- p_rsp_data[1] = 0x00;
- p_rsp_data[2] = 0x02;
- p_rsp_data[3] = 0x00;
- p_rsp_data[4] = 0x00;
- phNxpNciHal_print_packet("RECV", p_rsp_data, 5);
- status = NFCSTATUS_FAILED;
- }
- // 2002 0904 3000 3100 3200 5000
- else if ((p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02) &&
- ((p_cmd_data[2] == 0x09 && p_cmd_data[3] == 0x04) /*||
- (p_cmd_data[2] == 0x0D && p_cmd_data[3] == 0x04)*/
- )) {
- *cmd_len += 0x01;
- p_cmd_data[2] += 0x01;
- p_cmd_data[9] = 0x01;
- p_cmd_data[10] = 0x40;
- p_cmd_data[11] = 0x50;
- p_cmd_data[12] = 0x00;
-
- NXPLOG_NCIHAL_D("> Going through workaround - Dirty Set Config ");
- // phNxpNciHal_print_packet("SEND", p_cmd_data, *cmd_len);
- NXPLOG_NCIHAL_D("> Going through workaround - Dirty Set Config - End ");
- }
- // 20020703300031003200
- // 2002 0301 3200
- else if ((p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02) &&
- ((p_cmd_data[2] == 0x07 && p_cmd_data[3] == 0x03) ||
- (p_cmd_data[2] == 0x03 && p_cmd_data[3] == 0x01 &&
- p_cmd_data[4] == 0x32))) {
- NXPLOG_NCIHAL_D("> Going through workaround - Dirty Set Config ");
- phNxpNciHal_print_packet("SEND", p_cmd_data, *cmd_len);
- *rsp_len = 5;
- p_rsp_data[0] = 0x40;
- p_rsp_data[1] = 0x02;
- p_rsp_data[2] = 0x02;
- p_rsp_data[3] = 0x00;
- p_rsp_data[4] = 0x00;
-
- phNxpNciHal_print_packet("RECV", p_rsp_data, 5);
- status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_D("> Going through workaround - Dirty Set Config - End ");
- }
-
- // 2002 0D04 300104 310100 320100 500100
- // 2002 0401 320100
- else if ((p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02) &&
- (
- /*(p_cmd_data[2] == 0x0D && p_cmd_data[3] == 0x04)*/
- (p_cmd_data[2] == 0x04 && p_cmd_data[3] == 0x01 &&
- p_cmd_data[4] == 0x32 && p_cmd_data[5] == 0x00))) {
- // p_cmd_data[12] = 0x40;
-
- NXPLOG_NCIHAL_D("> Going through workaround - Dirty Set Config ");
- phNxpNciHal_print_packet("SEND", p_cmd_data, *cmd_len);
- p_cmd_data[6] = 0x60;
-
- phNxpNciHal_print_packet("RECV", p_rsp_data, 5);
- // status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_D("> Going through workaround - Dirty Set Config - End ");
- } else if (p_cmd_data[0] == 0x21 && p_cmd_data[1] == 0x00) {
- NXPLOG_NCIHAL_D(
- "> Going through workaround - Add Mifare Classic in Discovery Map");
- p_cmd_data[*cmd_len] = 0x80;
- p_cmd_data[*cmd_len + 1] = 0x01;
- p_cmd_data[*cmd_len + 2] = 0x80;
- p_cmd_data[5] = 0x01;
- p_cmd_data[6] = 0x01;
- p_cmd_data[2] += 3;
- p_cmd_data[3] += 1;
- *cmd_len += 3;
- } else if (*cmd_len == 3 && p_cmd_data[0] == 0x00 && p_cmd_data[1] == 0x00 &&
- p_cmd_data[2] == 0x00) {
- NXPLOG_NCIHAL_D("> Going through workaround - ISO-DEP Presence Check ");
- p_cmd_data[0] = 0x2F;
- p_cmd_data[1] = 0x11;
- p_cmd_data[2] = 0x00;
- status = NFCSTATUS_SUCCESS;
- NXPLOG_NCIHAL_D(
- "> Going through workaround - ISO-DEP Presence Check - End");
- }
-#if 0
- else if ( (p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02 ) &&
- ((p_cmd_data[2] == 0x09 && p_cmd_data[3] == 0x04) ||
- (p_cmd_data[2] == 0x0B && p_cmd_data[3] == 0x05) ||
- (p_cmd_data[2] == 0x07 && p_cmd_data[3] == 0x02) ||
- (p_cmd_data[2] == 0x0A && p_cmd_data[3] == 0x03) ||
- (p_cmd_data[2] == 0x0A && p_cmd_data[3] == 0x04) ||
- (p_cmd_data[2] == 0x05 && p_cmd_data[3] == 0x02))
- )
- {
- NXPLOG_NCIHAL_D ("> Going through workaround - Dirty Set Config ");
- phNxpNciHal_print_packet("SEND", p_cmd_data, *cmd_len);
- *rsp_len = 5;
- p_rsp_data[0] = 0x40;
- p_rsp_data[1] = 0x02;
- p_rsp_data[2] = 0x02;
- p_rsp_data[3] = 0x00;
- p_rsp_data[4] = 0x00;
-
- phNxpNciHal_print_packet("RECV", p_rsp_data, 5);
- status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_D ("> Going through workaround - Dirty Set Config - End ");
- }
-
- else if((p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02) &&
- ((p_cmd_data[3] == 0x00) ||
- ((*cmd_len >= 0x06) && (p_cmd_data[5] == 0x00)))) /*If the length of the first param id is zero don't allow*/
- {
- NXPLOG_NCIHAL_D ("> Going through workaround - Dirty Set Config ");
- phNxpNciHal_print_packet("SEND", p_cmd_data, *cmd_len);
- *rsp_len = 5;
- p_rsp_data[0] = 0x40;
- p_rsp_data[1] = 0x02;
- p_rsp_data[2] = 0x02;
- p_rsp_data[3] = 0x00;
- p_rsp_data[4] = 0x00;
-
- phNxpNciHal_print_packet("RECV", p_rsp_data, 5);
- status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_D ("> Going through workaround - Dirty Set Config - End ");
- }
-#endif
- else if ((wFwVerRsp & 0x0000FFFF) == wFwVer) {
- /* skip CORE_RESET and CORE_INIT from Brcm */
- if (p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x00 &&
- p_cmd_data[2] == 0x01 && p_cmd_data[3] == 0x01) {
- // *rsp_len = 6;
- //
- // NXPLOG_NCIHAL_D("> Going - core reset optimization");
- //
- // p_rsp_data[0] = 0x40;
- // p_rsp_data[1] = 0x00;
- // p_rsp_data[2] = 0x03;
- // p_rsp_data[3] = 0x00;
- // p_rsp_data[4] = 0x10;
- // p_rsp_data[5] = 0x01;
- //
- // status = NFCSTATUS_FAILED;
- // NXPLOG_NCIHAL_D("> Going - core reset optimization - END");
- }
- /* CORE_INIT */
- else if (p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x01 &&
- p_cmd_data[2] == 0x00) {
- // NXPLOG_NCIHAL_D("> Going - core init optimization");
- // *rsp_len = iCoreInitRspLen;
- // memcpy(p_rsp_data, bCoreInitRsp, iCoreInitRspLen);
- // status = NFCSTATUS_FAILED;
- // NXPLOG_NCIHAL_D("> Going - core init optimization - END");
- }
- }
-
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
- if (p_cmd_data[0] == 0x20 && p_cmd_data[1] == 0x02) {
- uint8_t temp;
- uint8_t* p = p_cmd_data + 4;
- uint8_t* end = p_cmd_data + *cmd_len;
- while (p < end) {
- if (*p == 0x53) // LF_T3T_FLAGS
- {
- NXPLOG_NCIHAL_D("> Going through workaround - LF_T3T_FLAGS swap");
- temp = *(p + 3);
- *(p + 3) = *(p + 2);
- *(p + 2) = temp;
- NXPLOG_NCIHAL_D("> Going through workaround - LF_T3T_FLAGS - End");
- status = NFCSTATUS_SUCCESS;
- break;
- }
- if (*p == 0xA0) {
- p += *(p + 2) + 3;
- } else {
- p += *(p + 1) + 2;
- }
- }
- }
-#endif
-
- return status;
-}
-
-/******************************************************************************
- * Function phNxpNciHal_send_ext_cmd
- *
- * Description This function send the extension command to NFCC. No
- * response is checked by this function but it waits for
- * the response to come.
- *
- * Returns Returns NFCSTATUS_SUCCESS if sending cmd is successful and
- * response is received.
- *
- ******************************************************************************/
-NFCSTATUS phNxpNciHal_send_ext_cmd(uint16_t cmd_len, uint8_t* p_cmd) {
- NFCSTATUS status = NFCSTATUS_FAILED;
-
- HAL_ENABLE_EXT();
- nxpncihal_ctrl.cmd_len = cmd_len;
- memcpy(nxpncihal_ctrl.p_cmd_data, p_cmd, cmd_len);
- status = phNxpNciHal_process_ext_cmd_rsp(nxpncihal_ctrl.cmd_len,
- nxpncihal_ctrl.p_cmd_data);
- HAL_DISABLE_EXT();
-
- return status;
-}
-
-/******************************************************************************
- * Function hal_extns_write_rsp_timeout_cb
- *
- * Description Timer call back function
- *
- * Returns None
- *
- ******************************************************************************/
-static void hal_extns_write_rsp_timeout_cb(uint32_t timerId, void* pContext) {
- UNUSED(timerId);
- UNUSED(pContext);
- NXPLOG_NCIHAL_E("hal_extns_write_rsp_timeout_cb - write timeout!!!");
- nxpncihal_ctrl.ext_cb_data.status = NFCSTATUS_FAILED;
- usleep(1);
- SEM_POST(&(nxpncihal_ctrl.ext_cb_data));
-
- return;
-}
diff --git a/halimpl/pn54x/hal/phNxpNciHal_ext.h b/halimpl/pn54x/hal/phNxpNciHal_ext.h
deleted file mode 100644
index 72387e9..0000000
--- a/halimpl/pn54x/hal/phNxpNciHal_ext.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2012-2014 NXP Semiconductors
- *
- * 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.
- */
-#ifndef _PHNXPNCIHAL_EXT_H_
-#define _PHNXPNCIHAL_EXT_H_
-
-#include <phNxpNciHal.h>
-#include <phNxpNciHal_dta.h>
-#include <string.h>
-
-void phNxpNciHal_ext_init(void);
-NFCSTATUS phNxpNciHal_process_ext_rsp(uint8_t* p_ntf, uint16_t* p_len);
-NFCSTATUS phNxpNciHal_send_ext_cmd(uint16_t cmd_len, uint8_t* p_cmd);
-NFCSTATUS phNxpNciHal_write_ext(uint16_t* cmd_len, uint8_t* p_cmd_data,
- uint16_t* rsp_len, uint8_t* p_rsp_data);
-
-#endif /* _PHNXPNICHAL_EXT_H_ */
diff --git a/halimpl/pn54x/inc/phNxpNciHal_Adaptation.h b/halimpl/pn54x/inc/phNxpNciHal_Adaptation.h
deleted file mode 100644
index b4d5566..0000000
--- a/halimpl/pn54x/inc/phNxpNciHal_Adaptation.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2012-2014 NXP Semiconductors
- *
- * 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.
- */
-
-#ifndef _PHNXPNCIHAL_ADAPTATION_H_
-#define _PHNXPNCIHAL_ADAPTATION_H_
-
-#include <hardware/hardware.h>
-#include <hardware/nfc.h>
-
-typedef struct {
- struct nfc_nci_device nci_device;
-
- /* Local definitions */
-} pn547_dev_t;
-
-/* NXP HAL functions */
-
-int phNxpNciHal_open(nfc_stack_callback_t* p_cback,
- nfc_stack_data_callback_t* p_data_cback);
-int phNxpNciHal_write(uint16_t data_len, const uint8_t* p_data);
-int phNxpNciHal_core_initialized(uint8_t* p_core_init_rsp_params);
-int phNxpNciHal_pre_discover(void);
-int phNxpNciHal_close(void);
-int phNxpNciHal_control_granted(void);
-int phNxpNciHal_power_cycle(void);
-
-#endif /* _PHNXPNCIHAL_ADAPTATION_H_ */
diff --git a/halimpl/pn54x/inc/phNxpNciHal_Api.h b/halimpl/pn54x/inc/phNxpNciHal_Api.h
deleted file mode 100644
index e1e0649..0000000
--- a/halimpl/pn54x/inc/phNxpNciHal_Api.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2012-2014 NXP Semiconductors
- *
- * 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.
- */
-#ifndef _PHNXPNCIHAL_API_H_
-#define _PHNXPNCIHAL_API_H_
-
-#include <phNfcStatus.h>
-#include <phNxpNciHal.h>
-#include <phTmlNfc.h>
-
-/*******************************************************************************
- **
- ** Function phNxpNciHal_get_version
- **
- ** Description Function to get the HW, FW and SW versions.
- **
- ** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
- **
- ******************************************************************************/
-
-NFCSTATUS phNxpNciHal_get_version(uint32_t* hw_ver, uint32_t* fw_ver,
- uint32_t* sw_ver);
-
-#endif /* _PHNXPNCIHAL_API_H_ */
diff --git a/halimpl/pn54x/inc/phNxpNciHal_SelfTest.h b/halimpl/pn54x/inc/phNxpNciHal_SelfTest.h
deleted file mode 100644
index ee7c8d6..0000000
--- a/halimpl/pn54x/inc/phNxpNciHal_SelfTest.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright (C) 2012-2014 NXP Semiconductors
- *
- * 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.
- */
-#ifndef _PHNXPNCIHAL_SELFTEST_H_
-#define _PHNXPNCIHAL_SELFTEST_H_
-
-#ifdef NXP_HW_SELF_TEST
-
-#include <phNfcStatus.h>
-#include <phNxpNciHal.h>
-#include <phTmlNfc.h>
-
-/* PRBS Generation type */
-typedef enum {
- NFC_FW_PRBS, /* FW software would generate the PRBS */
- NFC_HW_PRBS /* Hardware would generate the PRBS */
-} phNxpNfc_PrbsType_t;
-
-/* Different HW PRBS types */
-typedef enum { NFC_HW_PRBS9, NFC_HW_PRBS15 } phNxpNfc_PrbsHwType_t;
-/* RF Technology */
-typedef enum {
- NFC_RF_TECHNOLOGY_A,
- NFC_RF_TECHNOLOGY_B,
- NFC_RF_TECHNOLOGY_F,
-} phNxpNfc_Tech_t;
-
-/* Bit rates */
-typedef enum {
- NFC_BIT_RATE_106,
- NFC_BIT_RATE_212,
- NFC_BIT_RATE_424,
- NFC_BIT_RATE_848,
-} phNxpNfc_Bitrate_t;
-
-typedef struct phAntenna_St_Resp {
- /* Txdo Raw Value*/
- uint16_t wTxdoRawValue;
- uint16_t wTxdoMeasuredRangeMin; /*Txdo Measured Range Max */
- uint16_t wTxdoMeasuredRangeMax; /*Txdo Measured Range Min */
- uint16_t wTxdoMeasuredTolerance; /*Txdo Measured Range Tolerance */
- /* Agc Values */
- uint16_t wAgcValue; /*Agc Min Value*/
- uint16_t wAgcValueTolerance; /*Txdo Measured Range*/
- /* Agc value with NFCLD */
- uint16_t wAgcValuewithfixedNFCLD; /*Agc Value with Fixed NFCLD Max */
- uint16_t wAgcValuewithfixedNFCLDTolerance; /*Agc Value with Fixed NFCLD
- Tolerance */
- /* Agc Differential Values With Open/Short RM */
- uint16_t wAgcDifferentialWithOpen1; /*Agc Differential With Open 1*/
- uint16_t wAgcDifferentialWithOpenTolerance1; /*Agc Differential With Open
- Tolerance 1*/
- uint16_t wAgcDifferentialWithOpen2; /*Agc Differential With Open 2*/
- uint16_t wAgcDifferentialWithOpenTolerance2; /*Agc Differential With Open
- Tolerance 2*/
-} phAntenna_St_Resp_t; /* Instance of Transaction structure */
-
-/*******************************************************************************
- **
- ** Function phNxpNciHal_TestMode_open
- **
- ** Description It opens the physical connection with NFCC (pn547) and
- ** creates required client thread for operation.
- **
- ** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
- **
- ******************************************************************************/
-
-NFCSTATUS phNxpNciHal_TestMode_open(void);
-
-/*******************************************************************************
- **
- ** Function phNxpNciHal_TestMode_close
- **
- ** Description This function close the NFCC interface and free all
- ** resources.
- **
- ** Returns None.
- **
- ******************************************************************************/
-
-void phNxpNciHal_TestMode_close(void);
-
-/*******************************************************************************
- **
- ** Function phNxpNciHal_SwpTest
- **
- ** Description Test function to validate the SWP line. SWP line number is
- ** is sent as parameter to the API.
- **
- ** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
- **
- ******************************************************************************/
-
-NFCSTATUS phNxpNciHal_SwpTest(uint8_t swp_line);
-
-/*******************************************************************************
- **
- ** Function phNxpNciHal_PrbsTestStart
- **
- ** Description Test function start RF generation for RF technology and bit
- ** rate. RF technology and bit rate are sent as parameter to
- ** the API.
- **
- ** Returns NFCSTATUS_SUCCESS if RF generation successful,
- ** otherwise NFCSTATUS_FAILED.
- **
- ******************************************************************************/
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
-NFCSTATUS phNxpNciHal_PrbsTestStart(phNxpNfc_PrbsType_t prbs_type,
- phNxpNfc_PrbsHwType_t hw_prbs_type,
- phNxpNfc_Tech_t tech,
- phNxpNfc_Bitrate_t bitrate);
-#else
-NFCSTATUS phNxpNciHal_PrbsTestStart(phNxpNfc_Tech_t tech,
- phNxpNfc_Bitrate_t bitrate);
-#endif
-/*******************************************************************************
- **
- ** Function phNxpNciHal_PrbsTestStop
- **
- ** Description Test function stop RF generation for RF technology started
- ** by phNxpNciHal_PrbsTestStart.
- **
- ** Returns NFCSTATUS_SUCCESS if operation successful,
- ** otherwise NFCSTATUS_FAILED.
- **
- ******************************************************************************/
-
-NFCSTATUS phNxpNciHal_PrbsTestStop();
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_AntennaSelfTest
-**
-** Description Test function to validate the Antenna's discrete
-** components connection.
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
-**
-*******************************************************************************/
-
-NFCSTATUS phNxpNciHal_AntennaSelfTest(phAntenna_St_Resp_t* phAntenna_St_Resp);
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_RfFieldTest
-**
-** Description Test function performs RF filed test.
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
-**
-*******************************************************************************/
-
-NFCSTATUS phNxpNciHal_RfFieldTest(uint8_t on);
-
-/*******************************************************************************
- **
- ** Function phNxpNciHal_DownloadPinTest
- **
- ** Description Test function to validate the FW download pin connection.
- **
- ** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
- **
- ******************************************************************************/
-
-NFCSTATUS phNxpNciHal_DownloadPinTest(void);
-
-#endif /* _NXP_HW_SELF_TEST_H_ */
-#endif /* _PHNXPNCIHAL_SELFTEST_H_ */
diff --git a/halimpl/pn54x/libnfc-brcm.conf b/halimpl/pn54x/libnfc-brcm.conf
deleted file mode 100644
index 14c6912..0000000
--- a/halimpl/pn54x/libnfc-brcm.conf
+++ /dev/null
@@ -1,400 +0,0 @@
-###################### Start of libnfc-brcm.conf #######################
-
-###############################################################################
-# Application options
-APPL_TRACE_LEVEL=0xFF
-PROTOCOL_TRACE_LEVEL=0xFFFFFFFF
-
-###############################################################################
-# performance measurement
-# Change this setting to control how often USERIAL log the performance (throughput)
-# data on read/write/poll
-# defailt is to log performance dara for every 100 read or write
-#REPORT_PERFORMANCE_MEASURE=100
-
-###############################################################################
-# File used for NFA storage
-NFA_STORAGE="/data/nfc"
-
-###############################################################################
-# Snooze Mode Settings
-#
-# By default snooze mode is enabled. Set SNOOZE_MODE_CFG byte[0] to 0
-# to disable.
-#
-# If SNOOZE_MODE_CFG is not provided, the default settings are used:
-# They are as follows:
-# 8 Sleep Mode (0=Disabled 1=UART 8=SPI/I2C)
-# 0 Idle Threshold Host
-# 0 Idle Threshold HC
-# 0 NFC Wake active mode (0=ActiveLow 1=ActiveHigh)
-# 1 Host Wake active mode (0=ActiveLow 1=ActiveHigh)
-#
-#SNOOZE_MODE_CFG={08:00:00:00:01}
-
-###############################################################################
-# Insert a delay in milliseconds after NFC_WAKE and before write to NFCC
-#NFC_WAKE_DELAY=20
-
-###############################################################################
-# Various Delay settings (in ms) used in USERIAL
-# POWER_ON_DELAY
-# Delay after turning on chip, before writing to transport (default 300)
-# PRE_POWER_OFF_DELAY
-# Delay after deasserting NFC-Wake before turn off chip (default 0)
-# POST_POWER_OFF_DELAY
-# Delay after turning off chip, before USERIAL_close returns (default 0)
-#
-#POWER_ON_DELAY=300
-#PRE_POWER_OFF_DELAY=0
-#POST_POWER_OFF_DELAY=0
-
-###############################################################################
-# Maximum time (ms) to wait for RESET NTF after setting REG_PU to high
-# The default is 1000.
-#NFCC_ENABLE_TIMEOUT=0
-
-###############################################################################
-# LPTD mode configuration
-# byte[0] is the length of the remaining bytes in this value
-# if set to 0, LPTD params will NOT be sent to NFCC (i.e. disabled).
-# byte[1] is the param id it should be set to B9.
-# byte[2] is the length of the LPTD parameters
-# byte[3] indicates if LPTD is enabled
-# if set to 0, LPTD will be disabled (parameters will still be sent).
-# byte[4-n] are the LPTD parameters.
-# By default, LPTD is enabled and default settings are used.
-# See nfc_hal_dm_cfg.c for defaults
-#LPTD_CFG={23:B9:21:01:02:FF:FF:04:A0:0F:40:00:80:02:02:10:00:00:00:31:0C:30:00:00:00:00:00:00:00:00:00:00:00:00:00:00}
-
-###############################################################################
-# Startup Configuration (100 bytes maximum)
-#
-# For the 0xCA parameter, byte[9] (marked by 'AA') is for UICC0, and byte[10] (marked by BB) is
-# for UICC1. The values are defined as:
-# 0 : UICCx only supports ISO_DEP in low power mode.
-# 2 : UICCx only supports Mifare in low power mode.
-# 3 : UICCx supports both ISO_DEP and Mifare in low power mode.
-#
-# AA BB
-#NFA_DM_START_UP_CFG={1F:CB:01:01:A5:01:01:CA:14:00:00:00:00:06:E8:03:00:00:00:00:00:00:00:00:00:00:00:00:00:80:01:01}
-
-###############################################################################
-# Startup Vendor Specific Configuration (100 bytes maximum);
-# byte[0] TLV total len = 0x5
-# byte[1] NCI_MTS_CMD|NCI_GID_PROP = 0x2f
-# byte[2] NCI_MSG_FRAME_LOG = 0x9
-# byte[3] 2
-# byte[4] 0=turn off RF frame logging; 1=turn on
-# byte[5] 0=turn off SWP frame logging; 1=turn on
-# NFA_DM_START_UP_VSC_CFG={05:2F:09:02:01:01}
-
-###############################################################################
-# Antenna Configuration - This data is used when setting 0xC8 config item
-# at startup (before discovery is started). If not used, no value is sent.
-#
-# The settings for this value are documented here:
-# http://wcgbu.broadcom.com/wpan/PM/Project%20Document%20Library/bcm20791B0/
-# Design/Doc/PHY%20register%20settings/BCM20791-B2-1027-02_PHY_Recommended_Reg_Settings.xlsx
-# This document is maintained by Paul Forshaw.
-#
-# The values marked as ?? should be tweaked per antenna or customer/app:
-# {20:C8:1E:06:??:00:??:??:??:00:??:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:??:01:00:00:40:04}
-# array[0] = 0x20 is length of the payload from array[1] to the end
-# array[1] = 0xC8 is PREINIT_DSP_CFG
-#PREINIT_DSP_CFG={20:C8:1E:06:1F:00:0F:03:3C:00:04:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:48:01:00:00:40:04}
-
-###############################################################################
-# Configure crystal frequency when internal LPO can't detect the frequency.
-#XTAL_FREQUENCY=0
-###############################################################################
-# Configure the default Destination Gate used by HCI (the default is 4, which
-# is the ETSI loopback gate.
-NFA_HCI_DEFAULT_DEST_GATE=0xF0
-
-###############################################################################
-# Configure the single default SE to use. The default is to use the first
-# SE that is detected by the stack. This value might be used when the phone
-# supports multiple SE (e.g. 0xF3 and 0xF4) but you want to force it to use
-# one of them (e.g. 0xF4).
-#ACTIVE_SE=0xF3
-
-###############################################################################
-# Configure the default NfcA/IsoDep techology and protocol route. Can be
-# either a secure element (e.g. 0xF4) or the host (0x00)
-#DEFAULT_ISODEP_ROUTE=0x00
-
-###############################################################################
-# Configure the NFC Extras to open and use a static pipe. If the value is
-# not set or set to 0, then the default is use a dynamic pipe based on a
-# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value
-# for each UICC (where F3="UICC0" and F4="UICC1")
-#NFA_HCI_STATIC_PIPE_ID_F3=0x70
-#NFA_HCI_STATIC_PIPE_ID_01=0x19
-NFA_HCI_STATIC_PIPE_ID_C0=0x19
-###############################################################################
-# When disconnecting from Oberthur secure element, perform a warm-reset of
-# the secure element to deselect the applet.
-# The default hex value of the command is 0x3. If this variable is undefined,
-# then this feature is not used.
-#OBERTHUR_WARM_RESET_COMMAND=0x03
-
-###############################################################################
-# Force UICC to only listen to the following technology(s).
-# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
-# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B | NFA_TECHNOLOGY_MASK_F
-UICC_LISTEN_TECH_MASK=0x07
-
-###############################################################################
-# Force HOST listen feature enable or disable.
-# 0: Disable
-# 1: Enable
-HOST_LISTEN_ENABLE=0x01
-
-###############################################################################
-# Enabling/Disabling Forward functionality
-# Disable 0x00
-# Enable 0x01
-NXP_FWD_FUNCTIONALITY_ENABLE=0x01
-
-###############################################################################
-# Allow UICC to be powered off if there is no traffic.
-# Timeout is in ms. If set to 0, then UICC will not be powered off.
-#UICC_IDLE_TIMEOUT=30000
-UICC_IDLE_TIMEOUT=0
-
-###############################################################################
-# AID for Empty Select command
-# If specified, this AID will be substituted when an Empty SELECT command is
-# detected. The first byte is the length of the AID. Maximum length is 16.
-AID_FOR_EMPTY_SELECT={08:A0:00:00:01:51:00:00:00}
-###############################################################################
-# Maximum Number of Credits to be allowed by the NFCC
-# This value overrides what the NFCC specifices allowing the host to have
-# the control to work-around transport limitations. If this value does
-# not exist or is set to 0, the NFCC will provide the number of credits.
-MAX_RF_DATA_CREDITS=1
-
-###############################################################################
-# This setting allows you to disable registering the T4t Virtual SE that causes
-# the NFCC to send PPSE requests to the DH.
-# The default setting is enabled (i.e. T4t Virtual SE is registered).
-#REGISTER_VIRTUAL_SE=1
-
-###############################################################################
-# When screen is turned off, specify the desired power state of the controller.
-# 0: power-off-sleep state; DEFAULT
-# 1: full-power state
-# 2: screen-off card-emulation (CE4/CE3/CE1 modes are used)
-SCREEN_OFF_POWER_STATE=1
-
-###############################################################################
-# Firmware patch file
-# If the value is not set then patch download is disabled.
-#FW_PATCH="/vendor/firmware/bcm2079x_firmware.ncd"
-
-###############################################################################
-# Firmware pre-patch file (sent before the above patch file)
-# If the value is not set then pre-patch is not used.
-#FW_PRE_PATCH="/vendor/firmware/bcm2079x_pre_firmware.ncd"
-
-###############################################################################
-# Firmware patch format
-# 1 = HCD
-# 2 = NCD (default)
-#NFA_CONFIG_FORMAT=2
-
-###############################################################################
-# SPD Debug mode
-# If set to 1, any failure of downloading a patch will trigger a hard-stop
-#SPD_DEBUG=0
-
-###############################################################################
-# SPD Max Retry Count
-# The number of attempts to download a patch before giving up (defualt is 3).
-# Note, this resets after a power-cycle.
-#SPD_MAX_RETRY_COUNT=3
-
-###############################################################################
-# transport driver
-#
-# TRANSPORT_DRIVER=<driver>
-#
-# where <driver> can be, for example:
-# "/dev/ttyS" (UART)
-# "/dev/bcmi2cnfc" (I2C)
-# "hwtun" (HW Tunnel)
-# "/dev/bcmspinfc" (SPI)
-# "/dev/btusb0" (BT USB)
-#TRANSPORT_DRIVER="/dev/bcm2079x-i2c"
-
-###############################################################################
-# power control driver
-# Specify a kernel driver that support ioctl commands to control NFC_EN and
-# NFC_WAKE gpio signals.
-#
-# POWER_CONTRL_DRIVER=<driver>
-# where <driver> can be, for example:
-# "/dev/nfcpower"
-# "/dev/bcmi2cnfc" (I2C)
-# "/dev/bcmspinfc" (SPI)
-# i2c and spi driver may be used to control NFC_EN and NFC_WAKE signal
-#POWER_CONTROL_DRIVER="/dev/bcm2079x-i2c"
-
-###############################################################################
-# I2C transport driver options
-# Mako does not support 10-bit I2C addresses
-# Revert to 7-bit address
-#BCMI2CNFC_ADDRESS=0x77
-
-###############################################################################
-# I2C transport driver try to read multiple packets in read() if data is available
-# remove the comment below to enable this feature
-#READ_MULTIPLE_PACKETS=1
-
-###############################################################################
-# SPI transport driver options
-#SPI_NEGOTIATION={0A:F0:00:01:00:00:00:FF:FF:00:00}
-
-###############################################################################
-# UART transport driver options
-#
-# PORT=1,2,3,...
-# BAUD=115200, 19200, 9600, 4800,
-# DATABITS=8, 7, 6, 5
-# PARITY="even" | "odd" | "none"
-# STOPBITS="0" | "1" | "1.5" | "2"
-
-#UART_PORT=2
-#UART_BAUD=115200
-#UART_DATABITS=8
-#UART_PARITY="none"
-#UART_STOPBITS="1"
-
-###############################################################################
-# Insert a delay in microseconds per byte after a write to NFCC.
-# after writing a block of data to the NFCC, delay this an amopunt of time before
-# writing next block of data. the delay is calculated as below
-# NFC_WRITE_DELAY * (number of byte written) / 1000 milliseconds
-# e.g. after 259 bytes is written, delay (259 * 20 / 1000) 5 ms before next write
-#NFC_WRITE_DELAY=20
-
-###############################################################################
-# Maximum Number of Credits to be allowed by the NFCC
-# This value overrides what the NFCC specifices allowing the host to have
-# the control to work-around transport limitations. If this value does
-# not exist or is set to 0, the NFCC will provide the number of credits.
-MAX_RF_DATA_CREDITS=1
-
-###############################################################################
-# Default poll duration (in ms)
-# The defualt is 500ms if not set (see nfc_target.h)
-#NFA_DM_DISC_DURATION_POLL=333
-###############################################################################
-# Antenna Configuration - This data is used when setting 0xC8 config item
-# at startup (before discovery is started). If not used, no value is sent.
-#
-# The settings for this value are documented here:
-# http://wcgbu.broadcom.com/wpan/PM/Project%20Document%20Library/bcm20791B0/
-# Design/Doc/PHY%20register%20settings/BCM20791-B2-1027-02_PHY_Recommended_Reg_Settings.xlsx
-# This document is maintained by Paul Forshaw.
-#
-# The values marked as ?? should be tweaked per antenna or customer/app:
-# {20:C8:1E:06:??:00:??:??:??:00:??:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:??:01:00:00:40:04}
-# array[0] = 0x20 is length of the payload from array[1] to the end
-# array[1] = 0xC8 is PREINIT_DSP_CFG
-#PREINIT_DSP_CFG={20:C8:1E:06:1F:00:0F:03:3C:00:04:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:48:01:00:00:40:04}
-
-###############################################################################
-# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1.
-# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm
-# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block
-# 2 NFA_RW_PRES_CHK_RESET; Deactivate to Sleep, then re-activate
-# 3 NFA_RW_PRES_CHK_RB_CH0; Type-4 tag protocol's ReadBinary command on channel 0
-# 4 NFA_RW_PRES_CHK_RB_CH3; Type-4 tag protocol's ReadBinary command on channel 3
-PRESENCE_CHECK_ALGORITHM=1
-
-###############################################################################
-# Force tag polling for the following technology(s).
-# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
-# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B |
-# NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 |
-# NFA_TECHNOLOGY_MASK_B_PRIME | NFA_TECHNOLOGY_MASK_KOVIO |
-# NFA_TECHNOLOGY_MASK_A_ACTIVE | NFA_TECHNOLOGY_MASK_F_ACTIVE.
-#
-# Notable bits:
-# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */
-# NFA_TECHNOLOGY_MASK_B 0x02 /* NFC Technology B */
-# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
-# NFA_TECHNOLOGY_MASK_ISO15693 0x08 /* Proprietary Technology */
-# NFA_TECHNOLOGY_MASK_KOVIO 0x20 /* Proprietary Technology */
-# NFA_TECHNOLOGY_MASK_A_ACTIVE 0x40 /* NFC Technology A active mode */
-# NFA_TECHNOLOGY_MASK_F_ACTIVE 0x80 /* NFC Technology F active mode */
-POLLING_TECH_MASK=0xEF
-
-###############################################################################
-# Force P2P to only listen for the following technology(s).
-# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
-# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F |
-# NFA_TECHNOLOGY_MASK_A_ACTIVE | NFA_TECHNOLOGY_MASK_F_ACTIVE
-#
-# Notable bits:
-# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */
-# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
-# NFA_TECHNOLOGY_MASK_A_ACTIVE 0x40 /* NFC Technology A active mode */
-# NFA_TECHNOLOGY_MASK_F_ACTIVE 0x80 /* NFC Technology F active mode */
-P2P_LISTEN_TECH_MASK=0xC5
-
-PRESERVE_STORAGE=0x01
-
-###############################################################################
-# Override the stack default for NFA_EE_MAX_EE_SUPPORTED set in nfc_target.h.
-# The value is set to 3 by default as it assumes we will discover 0xF2,
-# 0xF3, and 0xF4. If a platform will exclude and SE, this value can be reduced
-# so that the stack will not wait any longer than necessary.
-
-# Maximum EE supported number
-# NXP PN547C2 0x02
-# NXP PN65T 0x03
-# NXP PN548C2 0x02
-# NXP PN66T 0x03
-NFA_MAX_EE_SUPPORTED=0x02
-
-###############################################################################
-# NCI Hal Module name
-NCI_HAL_MODULE="nfc_nci"
-
-##############################################################################
-# Deactivate notification wait time out in seconds used in ETSI Reader mode
-# 0 - Infinite wait
-#NFA_DM_DISC_NTF_TIMEOUT=0
-
-###############################################################################
-# AID_MATCHING constants
-# AID_MATCHING_EXACT_ONLY 0x00
-# AID_MATCHING_EXACT_OR_PREFIX 0x01
-# AID_MATCHING_PREFIX_ONLY 0x02
-AID_MATCHING_MODE=0x01
-
-###############################################################################
-# Default Secure Element route id
-DEFAULT_OFFHOST_ROUTE=0x02
-
-###############################################################################
-# Vendor Specific Proprietary Protocol & Discovery Configuration
-# Set to 0xFF if unsupported
-# byte[0] NCI_PROTOCOL_18092_ACTIVE
-# byte[1] NCI_PROTOCOL_B_PRIME
-# byte[2] NCI_PROTOCOL_DUAL
-# byte[3] NCI_PROTOCOL_15693
-# byte[4] NCI_PROTOCOL_KOVIO
-# byte[5] NCI_PROTOCOL_MIFARE
-# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO
-# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME
-# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME
-NFA_PROPRIETARY_CFG={05:FF:FF:06:81:80:70:FF:FF}
-
-###############################################################################
-# Bail out mode
-# If set to 1, NFCC is using bail out mode for either Type A or Type B poll.
-NFA_POLL_BAIL_OUT_MODE=0x01
diff --git a/halimpl/pn54x/libnfc-brcm_NCI2_0.conf b/halimpl/pn54x/libnfc-brcm_NCI2_0.conf
deleted file mode 100644
index a4d3290..0000000
--- a/halimpl/pn54x/libnfc-brcm_NCI2_0.conf
+++ /dev/null
@@ -1,407 +0,0 @@
-###################### Start of libnfc-brcm.conf #######################
-
-###############################################################################
-# Application options
-APPL_TRACE_LEVEL=0xFF
-PROTOCOL_TRACE_LEVEL=0xFFFFFFFF
-
-###############################################################################
-# performance measurement
-# Change this setting to control how often USERIAL log the performance (throughput)
-# data on read/write/poll
-# defailt is to log performance dara for every 100 read or write
-#REPORT_PERFORMANCE_MEASURE=100
-
-###############################################################################
-# File used for NFA storage
-NFA_STORAGE="/data/nfc"
-
-###############################################################################
-# Snooze Mode Settings
-#
-# By default snooze mode is enabled. Set SNOOZE_MODE_CFG byte[0] to 0
-# to disable.
-#
-# If SNOOZE_MODE_CFG is not provided, the default settings are used:
-# They are as follows:
-# 8 Sleep Mode (0=Disabled 1=UART 8=SPI/I2C)
-# 0 Idle Threshold Host
-# 0 Idle Threshold HC
-# 0 NFC Wake active mode (0=ActiveLow 1=ActiveHigh)
-# 1 Host Wake active mode (0=ActiveLow 1=ActiveHigh)
-#
-#SNOOZE_MODE_CFG={08:00:00:00:01}
-
-###############################################################################
-# Insert a delay in milliseconds after NFC_WAKE and before write to NFCC
-#NFC_WAKE_DELAY=20
-
-###############################################################################
-# Various Delay settings (in ms) used in USERIAL
-# POWER_ON_DELAY
-# Delay after turning on chip, before writing to transport (default 300)
-# PRE_POWER_OFF_DELAY
-# Delay after deasserting NFC-Wake before turn off chip (default 0)
-# POST_POWER_OFF_DELAY
-# Delay after turning off chip, before USERIAL_close returns (default 0)
-#
-#POWER_ON_DELAY=300
-#PRE_POWER_OFF_DELAY=0
-#POST_POWER_OFF_DELAY=0
-
-###############################################################################
-# Maximum time (ms) to wait for RESET NTF after setting REG_PU to high
-# The default is 1000.
-#NFCC_ENABLE_TIMEOUT=0
-
-###############################################################################
-# LPTD mode configuration
-# byte[0] is the length of the remaining bytes in this value
-# if set to 0, LPTD params will NOT be sent to NFCC (i.e. disabled).
-# byte[1] is the param id it should be set to B9.
-# byte[2] is the length of the LPTD parameters
-# byte[3] indicates if LPTD is enabled
-# if set to 0, LPTD will be disabled (parameters will still be sent).
-# byte[4-n] are the LPTD parameters.
-# By default, LPTD is enabled and default settings are used.
-# See nfc_hal_dm_cfg.c for defaults
-#LPTD_CFG={23:B9:21:01:02:FF:FF:04:A0:0F:40:00:80:02:02:10:00:00:00:31:0C:30:00:00:00:00:00:00:00:00:00:00:00:00:00:00}
-
-###############################################################################
-# Startup Configuration (100 bytes maximum)
-#
-# For the 0xCA parameter, byte[9] (marked by 'AA') is for UICC0, and byte[10] (marked by BB) is
-# for UICC1. The values are defined as:
-# 0 : UICCx only supports ISO_DEP in low power mode.
-# 2 : UICCx only supports Mifare in low power mode.
-# 3 : UICCx supports both ISO_DEP and Mifare in low power mode.
-#
-# AA BB
-#NFA_DM_START_UP_CFG={1F:CB:01:01:A5:01:01:CA:14:00:00:00:00:06:E8:03:00:00:00:00:00:00:00:00:00:00:00:00:00:80:01:01}
-
-###############################################################################
-# Startup Vendor Specific Configuration (100 bytes maximum);
-# byte[0] TLV total len = 0x5
-# byte[1] NCI_MTS_CMD|NCI_GID_PROP = 0x2f
-# byte[2] NCI_MSG_FRAME_LOG = 0x9
-# byte[3] 2
-# byte[4] 0=turn off RF frame logging; 1=turn on
-# byte[5] 0=turn off SWP frame logging; 1=turn on
-# NFA_DM_START_UP_VSC_CFG={05:2F:09:02:01:01}
-
-###############################################################################
-# Antenna Configuration - This data is used when setting 0xC8 config item
-# at startup (before discovery is started). If not used, no value is sent.
-#
-# The settings for this value are documented here:
-# http://wcgbu.broadcom.com/wpan/PM/Project%20Document%20Library/bcm20791B0/
-# Design/Doc/PHY%20register%20settings/BCM20791-B2-1027-02_PHY_Recommended_Reg_Settings.xlsx
-# This document is maintained by Paul Forshaw.
-#
-# The values marked as ?? should be tweaked per antenna or customer/app:
-# {20:C8:1E:06:??:00:??:??:??:00:??:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:??:01:00:00:40:04}
-# array[0] = 0x20 is length of the payload from array[1] to the end
-# array[1] = 0xC8 is PREINIT_DSP_CFG
-#PREINIT_DSP_CFG={20:C8:1E:06:1F:00:0F:03:3C:00:04:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:48:01:00:00:40:04}
-
-###############################################################################
-# Configure crystal frequency when internal LPO can't detect the frequency.
-#XTAL_FREQUENCY=0
-###############################################################################
-# Configure the default Destination Gate used by HCI (the default is 4, which
-# is the ETSI loopback gate.
-NFA_HCI_DEFAULT_DEST_GATE=0xF0
-
-###############################################################################
-# Configure the single default SE to use. The default is to use the first
-# SE that is detected by the stack. This value might be used when the phone
-# supports multiple SE (e.g. 0xF3 and 0xF4) but you want to force it to use
-# one of them (e.g. 0xF4).
-#ACTIVE_SE=0xF3
-
-###############################################################################
-# Configure the default NfcA/IsoDep techology and protocol route. Can be
-# either a secure element (e.g. 0xF4) or the host (0x00)
-#DEFAULT_ISODEP_ROUTE=0x00
-
-###############################################################################
-# Configure the NFC Extras to open and use a static pipe. If the value is
-# not set or set to 0, then the default is use a dynamic pipe based on a
-# destination gate (see NFA_HCI_DEFAULT_DEST_GATE). Note there is a value
-# for each UICC (where F3="UICC0" and F4="UICC1")
-#NFA_HCI_STATIC_PIPE_ID_F3=0x70
-#NFA_HCI_STATIC_PIPE_ID_01=0x19
-NFA_HCI_STATIC_PIPE_ID_C0=0x19
-###############################################################################
-# When disconnecting from Oberthur secure element, perform a warm-reset of
-# the secure element to deselect the applet.
-# The default hex value of the command is 0x3. If this variable is undefined,
-# then this feature is not used.
-#OBERTHUR_WARM_RESET_COMMAND=0x03
-
-###############################################################################
-# Force UICC to only listen to the following technology(s).
-# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
-# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B | NFA_TECHNOLOGY_MASK_F
-UICC_LISTEN_TECH_MASK=0x07
-
-###############################################################################
-# Force HOST listen feature enable or disable.
-# 0: Disable
-# 1: Enable
-HOST_LISTEN_ENABLE=0x01
-
-###############################################################################
-# Enabling/Disabling Forward functionality
-# Disable 0x00
-# Enable 0x01
-NXP_FWD_FUNCTIONALITY_ENABLE=0x01
-
-###############################################################################
-# Allow UICC to be powered off if there is no traffic.
-# Timeout is in ms. If set to 0, then UICC will not be powered off.
-#UICC_IDLE_TIMEOUT=30000
-UICC_IDLE_TIMEOUT=0
-
-###############################################################################
-# AID for Empty Select command
-# If specified, this AID will be substituted when an Empty SELECT command is
-# detected. The first byte is the length of the AID. Maximum length is 16.
-AID_FOR_EMPTY_SELECT={08:A0:00:00:01:51:00:00:00}
-###############################################################################
-# Maximum Number of Credits to be allowed by the NFCC
-# This value overrides what the NFCC specifices allowing the host to have
-# the control to work-around transport limitations. If this value does
-# not exist or is set to 0, the NFCC will provide the number of credits.
-MAX_RF_DATA_CREDITS=1
-
-###############################################################################
-# This setting allows you to disable registering the T4t Virtual SE that causes
-# the NFCC to send PPSE requests to the DH.
-# The default setting is enabled (i.e. T4t Virtual SE is registered).
-#REGISTER_VIRTUAL_SE=1
-
-###############################################################################
-# When screen is turned off, specify the desired power state of the controller.
-# 0: power-off-sleep state; DEFAULT
-# 1: full-power state
-# 2: screen-off card-emulation (CE4/CE3/CE1 modes are used)
-SCREEN_OFF_POWER_STATE=1
-
-###############################################################################
-# Firmware patch file
-# If the value is not set then patch download is disabled.
-#FW_PATCH="/vendor/firmware/bcm2079x_firmware.ncd"
-
-###############################################################################
-# Firmware pre-patch file (sent before the above patch file)
-# If the value is not set then pre-patch is not used.
-#FW_PRE_PATCH="/vendor/firmware/bcm2079x_pre_firmware.ncd"
-
-###############################################################################
-# Firmware patch format
-# 1 = HCD
-# 2 = NCD (default)
-#NFA_CONFIG_FORMAT=2
-
-###############################################################################
-# SPD Debug mode
-# If set to 1, any failure of downloading a patch will trigger a hard-stop
-#SPD_DEBUG=0
-
-###############################################################################
-# SPD Max Retry Count
-# The number of attempts to download a patch before giving up (defualt is 3).
-# Note, this resets after a power-cycle.
-#SPD_MAX_RETRY_COUNT=3
-
-###############################################################################
-# transport driver
-#
-# TRANSPORT_DRIVER=<driver>
-#
-# where <driver> can be, for example:
-# "/dev/ttyS" (UART)
-# "/dev/bcmi2cnfc" (I2C)
-# "hwtun" (HW Tunnel)
-# "/dev/bcmspinfc" (SPI)
-# "/dev/btusb0" (BT USB)
-#TRANSPORT_DRIVER="/dev/bcm2079x-i2c"
-
-###############################################################################
-# power control driver
-# Specify a kernel driver that support ioctl commands to control NFC_EN and
-# NFC_WAKE gpio signals.
-#
-# POWER_CONTRL_DRIVER=<driver>
-# where <driver> can be, for example:
-# "/dev/nfcpower"
-# "/dev/bcmi2cnfc" (I2C)
-# "/dev/bcmspinfc" (SPI)
-# i2c and spi driver may be used to control NFC_EN and NFC_WAKE signal
-#POWER_CONTROL_DRIVER="/dev/bcm2079x-i2c"
-
-###############################################################################
-# I2C transport driver options
-# Mako does not support 10-bit I2C addresses
-# Revert to 7-bit address
-#BCMI2CNFC_ADDRESS=0x77
-
-###############################################################################
-# I2C transport driver try to read multiple packets in read() if data is available
-# remove the comment below to enable this feature
-#READ_MULTIPLE_PACKETS=1
-
-###############################################################################
-# SPI transport driver options
-#SPI_NEGOTIATION={0A:F0:00:01:00:00:00:FF:FF:00:00}
-
-###############################################################################
-# UART transport driver options
-#
-# PORT=1,2,3,...
-# BAUD=115200, 19200, 9600, 4800,
-# DATABITS=8, 7, 6, 5
-# PARITY="even" | "odd" | "none"
-# STOPBITS="0" | "1" | "1.5" | "2"
-
-#UART_PORT=2
-#UART_BAUD=115200
-#UART_DATABITS=8
-#UART_PARITY="none"
-#UART_STOPBITS="1"
-
-###############################################################################
-# Insert a delay in microseconds per byte after a write to NFCC.
-# after writing a block of data to the NFCC, delay this an amopunt of time before
-# writing next block of data. the delay is calculated as below
-# NFC_WRITE_DELAY * (number of byte written) / 1000 milliseconds
-# e.g. after 259 bytes is written, delay (259 * 20 / 1000) 5 ms before next write
-#NFC_WRITE_DELAY=20
-
-###############################################################################
-# Maximum Number of Credits to be allowed by the NFCC
-# This value overrides what the NFCC specifices allowing the host to have
-# the control to work-around transport limitations. If this value does
-# not exist or is set to 0, the NFCC will provide the number of credits.
-MAX_RF_DATA_CREDITS=1
-
-###############################################################################
-# Default poll duration (in ms)
-# The defualt is 500ms if not set (see nfc_target.h)
-#NFA_DM_DISC_DURATION_POLL=333
-###############################################################################
-# Antenna Configuration - This data is used when setting 0xC8 config item
-# at startup (before discovery is started). If not used, no value is sent.
-#
-# The settings for this value are documented here:
-# http://wcgbu.broadcom.com/wpan/PM/Project%20Document%20Library/bcm20791B0/
-# Design/Doc/PHY%20register%20settings/BCM20791-B2-1027-02_PHY_Recommended_Reg_Settings.xlsx
-# This document is maintained by Paul Forshaw.
-#
-# The values marked as ?? should be tweaked per antenna or customer/app:
-# {20:C8:1E:06:??:00:??:??:??:00:??:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:??:01:00:00:40:04}
-# array[0] = 0x20 is length of the payload from array[1] to the end
-# array[1] = 0xC8 is PREINIT_DSP_CFG
-#PREINIT_DSP_CFG={20:C8:1E:06:1F:00:0F:03:3C:00:04:24:00:1C:00:75:00:77:00:76:00:1C:00:03:00:0A:00:48:01:00:00:40:04}
-
-###############################################################################
-# Choose the presence-check algorithm for type-4 tag. If not defined, the default value is 1.
-# 0 NFA_RW_PRES_CHK_DEFAULT; Let stack selects an algorithm
-# 1 NFA_RW_PRES_CHK_I_BLOCK; ISO-DEP protocol's empty I-block
-# 2 NFA_RW_PRES_CHK_RESET; Deactivate to Sleep, then re-activate
-# 3 NFA_RW_PRES_CHK_RB_CH0; Type-4 tag protocol's ReadBinary command on channel 0
-# 4 NFA_RW_PRES_CHK_RB_CH3; Type-4 tag protocol's ReadBinary command on channel 3
-# 5 NFA_RW_PRES_CHK_ISO_DEP_NAK; Type - 4 tag protocol iso-dep nak presence check
-# command is sent waiting for rsp and ntf.
-PRESENCE_CHECK_ALGORITHM=5
-
-###############################################################################
-# Force tag polling for the following technology(s).
-# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
-# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B |
-# NFA_TECHNOLOGY_MASK_F | NFA_TECHNOLOGY_MASK_ISO15693 |
-# NFA_TECHNOLOGY_MASK_B_PRIME | NFA_TECHNOLOGY_MASK_KOVIO |
-#NFA_TECHNOLOGY_MASK_ACTIVE
-#
-# Notable bits:
-# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */
-# NFA_TECHNOLOGY_MASK_B 0x02 /* NFC Technology B */
-# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
-# NFA_TECHNOLOGY_MASK_ISO15693 0x08 /* Proprietary Technology */
-# NFA_TECHNOLOGY_MASK_KOVIO 0x20 /* Proprietary Technology */
-# NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */
-POLLING_TECH_MASK=0x6F
-
-###############################################################################
-# Force P2P to only listen for the following technology(s).
-# The bits are defined as tNFA_TECHNOLOGY_MASK in nfa_api.h.
-# Default is NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F |
-#NFA_TECHNOLOGY_MASK_ACTIVE
-#
-# Notable bits:
-# NFA_TECHNOLOGY_MASK_A 0x01 /* NFC Technology A */
-# NFA_TECHNOLOGY_MASK_F 0x04 /* NFC Technology F */
-#NFA_TECHNOLOGY_MASK_ACTIVE 0x40 /* NFC Technology Active */
-P2P_LISTEN_TECH_MASK=0x45
-
-PRESERVE_STORAGE=0x01
-
-###############################################################################
-# Override the stack default for NFA_EE_MAX_EE_SUPPORTED set in nfc_target.h.
-# The value is set to 3 by default as it assumes we will discover 0xF2,
-# 0xF3, and 0xF4. If a platform will exclude and SE, this value can be reduced
-# so that the stack will not wait any longer than necessary.
-
-# Maximum EE supported number
-# NXP PN547C2 0x02
-# NXP PN65T 0x03
-# NXP PN548C2 0x02
-# NXP PN66T 0x03
-NFA_MAX_EE_SUPPORTED=0x02
-
-###############################################################################
-# NCI Hal Module name
-NCI_HAL_MODULE="nfc_nci"
-
-##############################################################################
-# Deactivate notification wait time out in seconds used in ETSI Reader mode
-# 0 - Infinite wait
-#NFA_DM_DISC_NTF_TIMEOUT=0
-
-###############################################################################
-# AID_MATCHING constants
-# AID_MATCHING_EXACT_ONLY 0x00
-# AID_MATCHING_EXACT_OR_PREFIX 0x01
-# AID_MATCHING_PREFIX_ONLY 0x02
-# AID_MATCHING_EXACT_OR_SUBSET_OR_PREFIX 0x03
-AID_MATCHING_MODE=0x03
-
-###############################################################################
-# Default Secure Element route id
-DEFAULT_OFFHOST_ROUTE=0x02
-
-###############################################################################
-# Vendor Specific Proprietary Protocol & Discovery Configuration
-# Set to 0xFF if unsupported
-# byte[0] NCI_PROTOCOL_18092_ACTIVE
-# byte[1] NCI_PROTOCOL_B_PRIME
-# byte[2] NCI_PROTOCOL_DUAL
-# byte[3] NCI_PROTOCOL_15693
-# byte[4] NCI_PROTOCOL_KOVIO
-# byte[5] NCI_PROTOCOL_MIFARE
-# byte[6] NCI_DISCOVERY_TYPE_POLL_KOVIO
-# byte[7] NCI_DISCOVERY_TYPE_POLL_B_PRIME
-# byte[8] NCI_DISCOVERY_TYPE_LISTEN_B_PRIME
-NFA_PROPRIETARY_CFG={05:FF:FF:06:81:80:70:FF:FF}
-
-###############################################################################
-# Bail out mode
-# If set to 1, NFCC is using bail out mode for either Type A or Type B poll.
-NFA_POLL_BAIL_OUT_MODE=0x01
-###############################################################################
-# Enable/Disable Block Route feature.
-# Block Route will restrict routing to first matched rule
-# Block Route enable 0x01
-# Block Route disable 0x00
-NFA_BLOCK_ROUTE=0x00
diff --git a/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf b/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
deleted file mode 100644
index 913030f..0000000
--- a/halimpl/pn54x/libnfc-nxp-PN547C2_example.conf
+++ /dev/null
@@ -1,224 +0,0 @@
-## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn54x)
-## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn54x)
-
-###############################################################################
-# Application options
-# Logging Levels
-# NXPLOG_DEFAULT_LOGLEVEL 0x01
-# ANDROID_LOG_DEBUG 0x03
-# ANDROID_LOG_WARN 0x02
-# ANDROID_LOG_ERROR 0x01
-# ANDROID_LOG_SILENT 0x00
-#
-NXPLOG_EXTNS_LOGLEVEL=0x03
-NXPLOG_NCIHAL_LOGLEVEL=0x03
-NXPLOG_NCIX_LOGLEVEL=0x03
-NXPLOG_NCIR_LOGLEVEL=0x03
-NXPLOG_FWDNLD_LOGLEVEL=0x03
-NXPLOG_TML_LOGLEVEL=0x03
-
-###############################################################################
-# Nfc Device Node name
-NXP_NFC_DEV_NODE="/dev/pn54x"
-
-###############################################################################
-# Extension for Mifare reader enable
-MIFARE_READER_ENABLE=0x01
-
-###############################################################################
-# Vzw Feature enable
-VZW_FEATURE_ENABLE=0x01
-###############################################################################
-# File name for Firmware
-NXP_FW_NAME="libpn547_fw.so"
-
-###############################################################################
-# System clock source selection configuration
-#define CLK_SRC_XTAL 1
-#define CLK_SRC_PLL 2
-
-NXP_SYS_CLK_SRC_SEL=0x01
-
-###############################################################################
-# System clock frequency selection configuration
-#define CLK_FREQ_13MHZ 1
-#define CLK_FREQ_19_2MHZ 2
-#define CLK_FREQ_24MHZ 3
-#define CLK_FREQ_26MHZ 4
-#define CLK_FREQ_38_4MHZ 5
-#define CLK_FREQ_52MHZ 6
-
-NXP_SYS_CLK_FREQ_SEL=0x00
-
-###############################################################################
-# The timeout value to be used for clock request acknowledgment
-# min value = 0x01 to max = 0x06
-
-NXP_SYS_CLOCK_TO_CFG=0x01
-
-###############################################################################
-# NXP proprietary settings
-NXP_ACT_PROP_EXTN={2F, 02, 00}
-
-###############################################################################
-# NFC forum profile settings
-NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00}
-
-###############################################################################
-# Standby enable settings
-#NXP_CORE_STANDBY={2F, 00, 01, 01}
-
-###############################################################################
-#Atonomous Mode
-#Enable 0x01
-#Disable 0x00
-NXP_CORE_SCRN_OFF_AUTONOMOUS_ENABLE=0x00
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-# NXP_RF_CONF_BLK_1={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_2={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_3={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_4={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_5={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_6={
-#}
-
-###############################################################################
-# Core configuration extensions
-# It includes
-# Wired mode settings A0ED, A0EE
-# Tag Detector A040, A041, A043
-# Low Power mode A007
-# Clock settings A002, A003
-# PbF settings A008
-NXP_CORE_CONF_EXTN={20, 02, 16, 04,
- A0, EC, 01, 01,
- A0, ED, 01, 01,
- A0, 5E, 01, 01,
- A0, 0D, 06, 3E, 2D, 15, 88, 15, 00
- }
-
-###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
- }
-
-###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
-NXP_I2C_FRAGMENTATION_ENABLED=0x00
-
-###############################################################################
-# Core configuration settings
-NXP_CORE_CONF={ 20, 02, 2B, 0D,
- 28, 01, 00,
- 21, 01, 00,
- 30, 01, 08,
- 31, 01, 03,
- 33, 04, 01, 02, 03, 04,
- 54, 01, 06,
- 50, 01, 02,
- 5B, 01, 00,
- 60, 01, 0E,
- 80, 01, 01,
- 81, 01, 01,
- 82, 01, 0E,
- 18, 01, 01
- }
-
-###############################################################################
-# Mifare Classic Key settings
-#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5,
-# A0, 52, 06, D3, F7, D3, F7, D3, F7,
-# A0, 53, 06, FF, FF, FF, FF, FF, FF,
-# A0, 54, 06, 00, 00, 00, 00, 00, 00}
-
-###############################################################################
-# Default SE Options
-# No secure element 0x00
-# eSE 0x01
-# UICC 0x02
-
-NXP_DEFAULT_SE=0x02
-
-NXP_DEFAULT_NFCEE_TIMEOUT=0x06
-
-###############################################################################
-#Enable SWP full power mode when phone is power off
-NXP_SWP_FULL_PWR_ON=0x01
-
-###############################################################################
-#Set the default AID route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_AID_ROUTE=0x00
-
-###############################################################################
-#Set the Mifare Desfire route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_DESFIRE_ROUTE=0x02
-
-###############################################################################
-#Set the Mifare CLT route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_MIFARE_CLT_ROUTE=0x02
-
-##############################################################################
-#### Select the CHIP ####
-#PN547C2 0x01
-#PN65T 0x02
-#PN548AD 0x03
-#PN66T 0x04
-
-NXP_NFC_CHIP=0x01
-
-#Timeout in secs
-NXP_SWP_RD_START_TIMEOUT=0x0A
-#Timeout in secs
-NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
-
-###############################################################################
-# CE when Screen state is locked
-# Disable 0x00
-# Enable 0x01
-NXP_CE_ROUTE_STRICT_DISABLE=0x01
-
-###############################################################################
-# AID Matching platform options
-# AID_MATCHING_L 0x01
-# AID_MATCHING_K 0x02
-AID_MATCHING_PLATFORM=0x01
diff --git a/halimpl/pn54x/libnfc-nxp-PN548AD_example.conf b/halimpl/pn54x/libnfc-nxp-PN548AD_example.conf
deleted file mode 100644
index 53121b2..0000000
--- a/halimpl/pn54x/libnfc-nxp-PN548AD_example.conf
+++ /dev/null
@@ -1,271 +0,0 @@
-## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn54x)
-## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn54x)
-
-###############################################################################
-# Application options
-# Logging Levels
-# NXPLOG_DEFAULT_LOGLEVEL 0x01
-# ANDROID_LOG_DEBUG 0x03
-# ANDROID_LOG_WARN 0x02
-# ANDROID_LOG_ERROR 0x01
-# ANDROID_LOG_SILENT 0x00
-#
-NXPLOG_EXTNS_LOGLEVEL=0x03
-NXPLOG_NCIHAL_LOGLEVEL=0x03
-NXPLOG_NCIX_LOGLEVEL=0x03
-NXPLOG_NCIR_LOGLEVEL=0x03
-NXPLOG_FWDNLD_LOGLEVEL=0x03
-NXPLOG_TML_LOGLEVEL=0x03
-
-###############################################################################
-# Nfc Device Node name
-NXP_NFC_DEV_NODE="/dev/pn54x"
-
-###############################################################################
-# Extension for Mifare reader enable
-MIFARE_READER_ENABLE=0x01
-
-###############################################################################
-# Vzw Feature enable
-VZW_FEATURE_ENABLE=0x01
-
-###############################################################################
-# File name for Firmware
-NXP_FW_NAME="libpn548ad_fw.so"
-
-###############################################################################
-# System clock source selection configuration
-#define CLK_SRC_XTAL 1
-#define CLK_SRC_PLL 2
-
-NXP_SYS_CLK_SRC_SEL=0x02
-
-###############################################################################
-# System clock frequency selection configuration
-#define CLK_FREQ_13MHZ 1
-#define CLK_FREQ_19_2MHZ 2
-#define CLK_FREQ_24MHZ 3
-#define CLK_FREQ_26MHZ 4
-#define CLK_FREQ_38_4MHZ 5
-#define CLK_FREQ_52MHZ 6
-
-NXP_SYS_CLK_FREQ_SEL=0x02
-
-###############################################################################
-# The timeout value to be used for clock request acknowledgment
-# min value = 0x01 to max = 0x06
-
-NXP_SYS_CLOCK_TO_CFG=0x01
-
-###############################################################################
-# NXP proprietary settings
-NXP_ACT_PROP_EXTN={2F, 02, 00}
-
-###############################################################################
-# NFC forum profile settings
-NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00}
-
-###############################################################################
-# NFCC Configuration Control
-# Allow NFCC to manage RF Config 0x01
-# Don't allow NFCC to manage RF Config 0x00
-NXP_NFC_MERGE_RF_PARAMS={20, 02, 04, 01, 85, 01, 01}
-
-###############################################################################
-# Standby enable settings
-#NXP_CORE_STANDBY={2F, 00, 01, 01}
-
-###############################################################################
-# NXP TVDD configurations settings
-# Allow NFCC to configure External TVDD, There are currently three
-#configurations (1, 2 and 3) are supported, out of them only one can be
-#supported.
-
-NXP_EXT_TVDD_CFG=0x01
-
-###############################################################################
-#config1:SLALM, 3.3V for both RM and CM
-NXP_EXT_TVDD_CFG_1={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 02, 09, 00}
-
-###############################################################################
-#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
-#monitoring 5V from DCDC, 4.7V for both RM and CM, DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_2={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 56, 64, 0A}
-
-###############################################################################
-#config3: use DCDC in CE, use Tx_Pwr_Req, SLALM, monitoring 5V from DCDC,
-#DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_3={20, 02, 0B, 02, A0, 66, 01, 01, A0, 0E, 03, 52, 64, 0A}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_1={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_2={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_3={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_4={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_5={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_6={
-#}
-
-###############################################################################
-# Core configuration extensions
-# It includes
-# Wired mode settings A0ED, A0EE
-# Tag Detector A040, A041, A043
-# Low Power mode A007
-# Clock settings A002, A003
-# PbF settings A008
-NXP_CORE_CONF_EXTN={20, 02, 19, 06,
- A0, EC, 01, 01,
- A0, ED, 01, 00,
- A0, 5E, 01, 01,
- A0, 40, 01, 01,
- A0, DD, 01, 2D,
- A0, 96, 01, 01
- }
-
-###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
- }
-
-###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
-NXP_I2C_FRAGMENTATION_ENABLED=0x00
-
-###############################################################################
-# Core configuration settings
-NXP_CORE_CONF={ 20, 02, 2E, 0E,
- 28, 01, 00,
- 21, 01, 00,
- 30, 01, 08,
- 31, 01, 03,
- 32, 01, 60,
- 38, 01, 01,
- 33, 04, 01, 02, 03, 04,
- 54, 01, 06,
- 50, 01, 02,
- 5B, 01, 00,
- 80, 01, 01,
- 81, 01, 01,
- 82, 01, 0E,
- 18, 01, 01
- }
-
-###############################################################################
-# Mifare Classic Key settings
-#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5,
-# A0, 52, 06, D3, F7, D3, F7, D3, F7,
-# A0, 53, 06, FF, FF, FF, FF, FF, FF,
-# A0, 54, 06, 00, 00, 00, 00, 00, 00}
-
-###############################################################################
-# Default SE Options
-# No secure element 0x00
-# eSE 0x01
-# UICC 0x02
-
-NXP_DEFAULT_SE=0x03
-
-###############################################################################
-#Enable SWP full power mode when phone is power off
-NXP_SWP_FULL_PWR_ON=0x00
-
-###############################################################################
-#### Select the CHIP ####
-#PN547C2 0x01
-#PN65T 0x02
-#PN548AD 0x03
-#PN66T 0x04
-
-NXP_NFC_CHIP=0x03
-
-###############################################################################
-# CE when Screen state is locked
-# Disable 0x00
-# Enable 0x01
-NXP_CE_ROUTE_STRICT_DISABLE=0x01
-
-###############################################################################
-#Timeout in secs to get NFCEE Discover notification
-NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
-
-NXP_DEFAULT_NFCEE_TIMEOUT=0x06
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_START_TIMEOUT=0x0A
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
-
-###############################################################################
-#Set the default AID route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_AID_ROUTE=0x00
-
-###############################################################################
-#Set the Mifare Desfire route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_DESFIRE_ROUTE=0x02
-
-###############################################################################
-#Set the Mifare CLT route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_MIFARE_CLT_ROUTE=0x02
-
-###############################################################################
-# AID Matching platform options
-# AID_MATCHING_L 0x01
-# AID_MATCHING_K 0x02
-AID_MATCHING_PLATFORM=0x01
-
-###############################################################################
-#CHINA_TIANJIN_RF_SETTING
-#Enable 0x01
-#Disable 0x00
-NXP_CHINA_TIANJIN_RF_ENABLED=0x01
-
-###############################################################################
-#SWP_SWITCH_TIMEOUT_SETTING
-# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
-# Timeout in milliseconds, for example
-# No Timeout 0x00
-# 10 millisecond timeout 0x0A
-NXP_SWP_SWITCH_TIMEOUT=0x0A
diff --git a/halimpl/pn54x/libnfc-nxp-PN551_example.conf b/halimpl/pn54x/libnfc-nxp-PN551_example.conf
deleted file mode 100644
index ba42b20..0000000
--- a/halimpl/pn54x/libnfc-nxp-PN551_example.conf
+++ /dev/null
@@ -1,273 +0,0 @@
-## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn54x)
-## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn54x)
-
-###############################################################################
-# Application options
-# Logging Levels
-# NXPLOG_DEFAULT_LOGLEVEL 0x01
-# ANDROID_LOG_DEBUG 0x03
-# ANDROID_LOG_WARN 0x02
-# ANDROID_LOG_ERROR 0x01
-# ANDROID_LOG_SILENT 0x00
-#
-NXPLOG_EXTNS_LOGLEVEL=0x03
-NXPLOG_NCIHAL_LOGLEVEL=0x03
-NXPLOG_NCIX_LOGLEVEL=0x03
-NXPLOG_NCIR_LOGLEVEL=0x03
-NXPLOG_FWDNLD_LOGLEVEL=0x03
-NXPLOG_TML_LOGLEVEL=0x03
-
-###############################################################################
-# Nfc Device Node name
-NXP_NFC_DEV_NODE="/dev/pn544"
-
-###############################################################################
-# Extension for Mifare reader enable
-MIFARE_READER_ENABLE=0x01
-
-###############################################################################
-# Vzw Feature enable
-VZW_FEATURE_ENABLE=0x01
-
-###############################################################################
-# File name for Firmware
-NXP_FW_NAME="libpn551_fw.so"
-
-###############################################################################
-# System clock source selection configuration
-#define CLK_SRC_XTAL 1
-#define CLK_SRC_PLL 2
-
-NXP_SYS_CLK_SRC_SEL=0x02
-
-###############################################################################
-# System clock frequency selection configuration
-#define CLK_FREQ_13MHZ 1
-#define CLK_FREQ_19_2MHZ 2
-#define CLK_FREQ_24MHZ 3
-#define CLK_FREQ_26MHZ 4
-#define CLK_FREQ_38_4MHZ 5
-#define CLK_FREQ_52MHZ 6
-
-NXP_SYS_CLK_FREQ_SEL=0x02
-
-###############################################################################
-# The timeout value to be used for clock request acknowledgment
-# min value = 0x01 to max = 0x06
-
-NXP_SYS_CLOCK_TO_CFG=0x06
-
-###############################################################################
-# NXP proprietary settings
-NXP_ACT_PROP_EXTN={2F, 02, 00}
-
-###############################################################################
-# NFC forum profile settings
-NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00}
-
-###############################################################################
-# NFCC Configuration Control
-# Allow NFCC to manage RF Config 0x01
-# Don't allow NFCC to manage RF Config 0x00
-NXP_NFC_MERGE_RF_PARAMS={20, 02, 04, 01, 85, 01, 01}
-
-###############################################################################
-# Standby enable settings
-#NXP_CORE_STANDBY={2F, 00, 01, 01}
-
-###############################################################################
-# NXP TVDD configurations settings
-# Allow NFCC to configure External TVDD, There are currently three
-#configurations (1, 2 and 3) are supported, out of them only one can be
-#supported.
-
-NXP_EXT_TVDD_CFG=0x01
-
-###############################################################################
-#config1:SLALM, 3.3V for both RM and CM
-NXP_EXT_TVDD_CFG_1={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 02, 09, 00}
-
-###############################################################################
-#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
-#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_2={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 56, 24, 08 }
-
-###############################################################################
-#config3: use DCDC in CE, use Tx_Pwr_Req, SLALM, monitoring 5V from DCDC,
-#DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_3={20, 02, 0B, 02, A0, 66, 01, 01, A0, 0E, 03, 52, 40, 0A}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_1={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_2={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_3={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_4={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_5={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_6={
-#}
-
-###############################################################################
-# Core configuration extensions
-# It includes
-# Wired mode settings A0ED, A0EE
-# Tag Detector A040, A041, A043
-# Low Power mode A007
-# Clock settings A002, A003
-# PbF settings A008
-NXP_CORE_CONF_EXTN={20, 02, 19, 06,
- A0, EC, 01, 01,
- A0, ED, 01, 00,
- A0, 5E, 01, 01,
- A0, 40, 01, 01,
- A0, DD, 01, 2D,
- A0, 96, 01, 01
- }
-
-###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
- }
-
-###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
-NXP_I2C_FRAGMENTATION_ENABLED=0x00
-
-###############################################################################
-# Core configuration settings
-NXP_CORE_CONF={ 20, 02, 2E, 0E,
- 28, 01, 00,
- 21, 01, 00,
- 30, 01, 08,
- 31, 01, 03,
- 32, 01, 60,
- 38, 01, 01,
- 33, 04, 01, 02, 03, 04,
- 54, 01, 06,
- 50, 01, 02,
- 5B, 01, 00,
- 80, 01, 01,
- 81, 01, 01,
- 82, 01, 0E,
- 18, 01, 01
- }
-
-###############################################################################
-# Mifare Classic Key settings
-#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5,
-# A0, 52, 06, D3, F7, D3, F7, D3, F7,
-# A0, 53, 06, FF, FF, FF, FF, FF, FF,
-# A0, 54, 06, 00, 00, 00, 00, 00, 00}
-
-###############################################################################
-# Default SE Options
-# No secure element 0x00
-# eSE 0x01
-# UICC 0x02
-
-NXP_DEFAULT_SE=0x03
-
-###############################################################################
-#Enable SWP full power mode when phone is power off
-NXP_SWP_FULL_PWR_ON=0x00
-
-###############################################################################
-#### Select the CHIP ####
-#PN547C2 0x01
-#PN65T 0x02
-#PN548AD 0x03
-#PN66T 0x04
-#PN551 0x05
-#PN67T 0x06
-
-NXP_NFC_CHIP=0x05
-
-###############################################################################
-# CE when Screen state is locked
-# Disable 0x00
-# Enable 0x01
-NXP_CE_ROUTE_STRICT_DISABLE=0x01
-
-###############################################################################
-#Timeout in secs to get NFCEE Discover notification
-NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
-
-NXP_DEFAULT_NFCEE_TIMEOUT=0x06
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_START_TIMEOUT=0x0A
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
-
-###############################################################################
-#Set the default AID route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_AID_ROUTE=0x00
-
-###############################################################################
-#Set the Mifare Desfire route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_DESFIRE_ROUTE=0x02
-
-###############################################################################
-#Set the Mifare CLT route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_MIFARE_CLT_ROUTE=0x02
-
-###############################################################################
-# AID Matching platform options
-# AID_MATCHING_L 0x01
-# AID_MATCHING_K 0x02
-AID_MATCHING_PLATFORM=0x01
-
-###############################################################################
-#CHINA_TIANJIN_RF_SETTING
-#Enable 0x01
-#Disable 0x00
-NXP_CHINA_TIANJIN_RF_ENABLED=0x01
-
-###############################################################################
-#SWP_SWITCH_TIMEOUT_SETTING
-# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
-# Timeout in milliseconds, for example
-# No Timeout 0x00
-# 10 millisecond timeout 0x0A
-NXP_SWP_SWITCH_TIMEOUT=0x0A
diff --git a/halimpl/pn54x/libnfc-nxp-PN553_example.conf b/halimpl/pn54x/libnfc-nxp-PN553_example.conf
deleted file mode 100644
index 818e473..0000000
--- a/halimpl/pn54x/libnfc-nxp-PN553_example.conf
+++ /dev/null
@@ -1,447 +0,0 @@
-## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547)
-## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547)
-###############################################################################
-# Application options
-# Logging Levels
-# NXPLOG_DEFAULT_LOGLEVEL 0x01
-# ANDROID_LOG_DEBUG 0x03
-# ANDROID_LOG_WARN 0x02
-# ANDROID_LOG_ERROR 0x01
-# ANDROID_LOG_SILENT 0x00
-NXPLOG_EXTNS_LOGLEVEL=0x03
-NXPLOG_NCIHAL_LOGLEVEL=0x03
-NXPLOG_NCIX_LOGLEVEL=0x03
-NXPLOG_NCIR_LOGLEVEL=0x03
-NXPLOG_FWDNLD_LOGLEVEL=0x03
-NXPLOG_TML_LOGLEVEL=0x03
-
-###############################################################################
-# Nfc Device Node name
-NXP_NFC_DEV_NODE="/dev/pn553"
-
-###############################################################################
-# Extension for Mifare reader enable
-MIFARE_READER_ENABLE=0x01
-
-###############################################################################
-# Vzw Feature enable
-VZW_FEATURE_ENABLE=0x01
-
-###############################################################################
-# File name for Firmware
-NXP_FW_NAME="libpn553_fw.so"
-
-###############################################################################
-# System clock source selection configuration
-#define CLK_SRC_XTAL 1
-#define CLK_SRC_PLL 2
-NXP_SYS_CLK_SRC_SEL=0x02
-
-###############################################################################
-# System clock frequency selection configuration
-#define CLK_FREQ_13MHZ 1
-#define CLK_FREQ_19_2MHZ 2
-#define CLK_FREQ_24MHZ 3
-#define CLK_FREQ_26MHZ 4
-#define CLK_FREQ_38_4MHZ 5
-#define CLK_FREQ_52MHZ 6
-NXP_SYS_CLK_FREQ_SEL=0x02
-
-###############################################################################
-# The timeout value to be used for clock request acknowledgment
-# min value = 0x01 to max = 0x06
-NXP_SYS_CLOCK_TO_CFG=0x01
-
-###############################################################################
-# NXP proprietary settings
-NXP_ACT_PROP_EXTN={2F, 02, 00}
-
-###############################################################################
-# NFC forum profile settings
-NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00}
-
-###############################################################################
-# NFCC Configuration Control
-# Allow NFCC to manage RF Config 0x01
-# Don't allow NFCC to manage RF Config 0x00
-NXP_NFC_MERGE_RF_PARAMS={20, 02, 04, 01, 85, 01, 01}
-
-###############################################################################
-# Standby enable settings
-#NXP_CORE_STANDBY={2F, 00, 01, 01}
-
-###############################################################################
-# NXP TVDD configurations settings
-# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported,
-# out of them only one can be configured at a time.
-NXP_EXT_TVDD_CFG=0x02
-
-###############################################################################
-#config1:SLALM, 3.3V for both RM and CM
-NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C}
-
-###############################################################################
-#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
-#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_1={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_2={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_3={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_4={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_5={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_6={
-#}
-
-###############################################################################
-# Set configuration optimization decision setting
-# Enable = 0x01
-# Disable = 0x00
-NXP_SET_CONFIG_ALWAYS=0x00
-
-###############################################################################
-# Core configuration extensions
-# It includes
-# Wired mode settings A0ED, A0EE
-# Tag Detector A040, A041, A043
-# Low Power mode A007
-# Clock settings A002, A003
-# PbF settings A008
-# Clock timeout settings A004
-# eSE (SVDD) PWR REQ settings A0F2
-# How eSE connected to PN553 A012
-# UICC2 bit rate A0D1
-# SWP1A interface A0D4
-# DWP intf behavior config, SVDD Load activated by default if set to 0x31 - A037
-NXP_CORE_CONF_EXTN={20, 02, 25, 09,
- A0, EC, 01, 01,
- A0, ED, 01, 00,
- A0, 5E, 01, 01,
- A0, 12, 01, 02,
- A0, 40, 01, 01,
- A0, DD, 01, 2D,
- A0, D1, 01, 02,
- A0, D4, 01, 01,
- A0, 37, 01, 35
- }
-# A0, F2, 01, 01,
-# A0, 40, 01, 01,
-# A0, 41, 01, 02,
-# A0, 43, 01, 04,
-# A0, 02, 01, 01,
-# A0, 03, 01, 11,
-# A0, 07, 01, 03,
-# A0, 08, 01, 01
-# }
-
-###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set
-# to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00 }
-
-###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set
-# to 0x00
-NXP_I2C_FRAGMENTATION_ENABLED=0x00
-
-###############################################################################
-# Core configuration settings
-NXP_CORE_CONF={ 20, 02, 2E, 0E,
- 28, 01, 00,
- 21, 01, 00,
- 30, 01, 08,
- 31, 01, 03,
- 32, 01, 60,
- 38, 01, 01,
- 33, 04, 01, 02, 03, 04,
- 54, 01, 06,
- 50, 01, 02,
- 5B, 01, 00,
- 80, 01, 01,
- 81, 01, 01,
- 82, 01, 0E,
- 18, 01, 01
- }
-
-###############################################################################
-# Mifare Classic Key settings
-#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5,
-# A0, 52, 06, D3, F7, D3, F7, D3, F7,
-# A0, 53, 06, FF, FF, FF, FF, FF, FF,
-# A0, 54, 06, 00, 00, 00, 00, 00, 00}
-
-
-###############################################################################
-# Default SE Options
-# No secure element 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x04
-
-NXP_DEFAULT_SE=0x07
-
-###############################################################################
-#Enable SWP full power mode when phone is power off
-NXP_SWP_FULL_PWR_ON=0x00
-
-###############################################################################
-#### Select the CHIP ####
-#PN547C2 0x01
-#PN65T 0x02
-#PN548AD 0x03
-#PN66T 0x04
-#PN551 0x05
-#PN67T 0x06
-#PN553 0x07
-#PN80T 0x08
-NXP_NFC_CHIP=0x07
-
-###############################################################################
-# CE when Screen state is locked
-# This setting is for DEFAULT_AID_ROUTE,
-# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE
-# Disable 0x00
-# Enable 0x01
-NXP_CE_ROUTE_STRICT_DISABLE=0x01
-
-###############################################################################
-#Timeout in secs to get NFCEE Discover notification
-NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
-
-###############################################################################
-NXP_DEFAULT_NFCEE_TIMEOUT=20
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_START_TIMEOUT=0x0A
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
-
-###############################################################################
-#Set the default AID route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_AID_ROUTE=0x00
-
-###############################################################################
-#Set the Mifare Desfire route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_DESFIRE_ROUTE=0x02
-
-###############################################################################
-#Set the Mifare CLT route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_MIFARE_CLT_ROUTE=0x02
-
-###############################################################################
-#Set the default AID Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_AID_PWR_STATE=0x19
-
-###############################################################################
-#Set the Mifare Desfire Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_DESFIRE_PWR_STATE=0x1B
-
-###############################################################################
-#Set the Mifare CLT Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_MIFARE_CLT_PWR_STATE=0x1B
-
-###############################################################################
-#Set the Felica CLT route Location :
-#This settings will be used when application does not set this parameter
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_FELICA_CLT_ROUTE=0x01
-
-###############################################################################
-#Set the Felica CLT Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_FELICA_CLT_PWR_STATE=0x1B
-
-###############################################################################
-# AID Matching platform options
-# AID_MATCHING_L 0x01
-# AID_MATCHING_K 0x02
-AID_MATCHING_PLATFORM=0x01
-
-###############################################################################
-# P61 interface options
-# NFC 0x01
-# SPI 0x02
-NXP_P61_LS_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-# P61 LTSM interface options
-# NFC 0x01
-# SPI 0x02
-NXP_P61_LTSM_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-#CHINA_TIANJIN_RF_SETTING
-#Enable 0x01
-#Disable 0x00
-NXP_CHINA_TIANJIN_RF_ENABLED=0x01
-
-###############################################################################
-#SWP_SWITCH_TIMEOUT_SETTING
-# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
-# Timeout in milliseconds, for example
-# No Timeout 0x00
-# 10 millisecond timeout 0x0A
-NXP_SWP_SWITCH_TIMEOUT=0x0A
-
-###############################################################################
-# P61 interface options for JCOP Download
-# NFC 0x01
-# SPI 0x02
-NXP_P61_JCOP_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-# P61 JCOP OS download options
-# FRAMEWORK API BY APPLICATION 0x00
-# AT BOOT_TIME 0x01
-NXP_JCOPDL_AT_BOOT_ENABLE=0x00
-
-###############################################################################
-# Loader service version
-# NFC service checks for LS version 2.0 or 2.1
-# LS2.0 0x20
-# LS2.1 0x21
-# LS2.2 0x22
-# AT NFC service intialization
-NXP_LOADER_SERVICE_VERSION=0x22
-
-###############################################################################
-#Timeout value in milliseconds for NFCC standby mode.The range is between 5000
-#msec to 20000 msec and zero is to disable.
-NXP_NFCC_STANDBY_TIMEOUT=20000
-
-###############################################################################
-#Dynamic RSSI feature enable
-# Disable 0x00
-# Enable 0x01
-NXP_AGC_DEBUG_ENABLE=0x00
-
-###############################################################################
-#Virtual Mode ESE and Wired Mode ongoing delay Wired Mode
-# For Technology routing to ESE Technology Mask = 4
-# For ISO-DEP Protocol routing to ESE Mask = 2
-# It can also take TECH|PROTO = 6
-# To ignore the delay set mask to = 0
-NXP_ESE_WIRED_PRT_MASK=0x00
-
-###############################################################################
-#Virtual Mode UICC and Wired Mode ongoing delay Wired Mode
-#For Technology routing to UICC Technology Mask = 4
-#For ISO-DEP Protocol routing to UICC set Mask = 2
-#For Select AID Routing to UICC set Mask = 1
-#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay
-#set mask = 0
-NXP_UICC_WIRED_PRT_MASK=0x00
-
-###############################################################################
-#RF field true delay Wired Mode
-# delay wired mode = 1
-# allow wired mode = 0
-NXP_WIRED_MODE_RF_FIELD_ENABLE=0x00
-
-###############################################################################
-#Config to allow adding aids
-#NFC on/off is required after this config
-#1 = enabling adding aid to NFCC routing table.
-#0 = disabling adding aid to NFCC routing table.
-NXP_ENABLE_ADD_AID=0x01
-
-###############################################################################
-# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal
-# JCOP CP TIMEOUT
-NXP_CP_TIMEOUT={00, 77}
-
-###############################################################################
-# Enable/Disable checking default proto SE Id
-# Disable 0x00
-# Enable 0x01
-NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01
-
-###############################################################################
-#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE
-#Enable/Disable block number checks for china transit use case
-#Enable 0x01
-#Disable 0x00
-NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01
-
-###############################################################################
-# Restrict routing to first matched rule only.
-# Blacklist enable 0x01
-# Blacklist disable 0x00
-NXP_PROP_BLACKLIST_ROUTING=0x00
-
-###############################################################################
-# Timeout value in milliseconds to send response for Felica command received
-NXP_HCEF_CMD_RSP_TIMEOUT_VALUE=5000
-
-###############################################################################
\ No newline at end of file
diff --git a/halimpl/pn54x/libnfc-nxp-PN553_example_NCI2_0.conf b/halimpl/pn54x/libnfc-nxp-PN553_example_NCI2_0.conf
deleted file mode 100644
index 3dca16e..0000000
--- a/halimpl/pn54x/libnfc-nxp-PN553_example_NCI2_0.conf
+++ /dev/null
@@ -1,449 +0,0 @@
-## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547)
-## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547)
-###############################################################################
-# Application options
-# Logging Levels
-# NXPLOG_DEFAULT_LOGLEVEL 0x01
-# ANDROID_LOG_DEBUG 0x03
-# ANDROID_LOG_WARN 0x02
-# ANDROID_LOG_ERROR 0x01
-# ANDROID_LOG_SILENT 0x00
-NXPLOG_EXTNS_LOGLEVEL=0x03
-NXPLOG_NCIHAL_LOGLEVEL=0x03
-NXPLOG_NCIX_LOGLEVEL=0x03
-NXPLOG_NCIR_LOGLEVEL=0x03
-NXPLOG_FWDNLD_LOGLEVEL=0x03
-NXPLOG_TML_LOGLEVEL=0x03
-
-###############################################################################
-# Nfc Device Node name
-NXP_NFC_DEV_NODE="/dev/pn553"
-
-###############################################################################
-# Extension for Mifare reader enable
-MIFARE_READER_ENABLE=0x01
-
-###############################################################################
-# Vzw Feature enable
-VZW_FEATURE_ENABLE=0x01
-
-###############################################################################
-# File name for Firmware
-NXP_FW_NAME="libpn553_fw.so"
-
-###############################################################################
-# System clock source selection configuration
-#define CLK_SRC_XTAL 1
-#define CLK_SRC_PLL 2
-NXP_SYS_CLK_SRC_SEL=0x02
-
-###############################################################################
-# System clock frequency selection configuration
-#define CLK_FREQ_13MHZ 1
-#define CLK_FREQ_19_2MHZ 2
-#define CLK_FREQ_24MHZ 3
-#define CLK_FREQ_26MHZ 4
-#define CLK_FREQ_38_4MHZ 5
-#define CLK_FREQ_52MHZ 6
-NXP_SYS_CLK_FREQ_SEL=0x02
-
-###############################################################################
-# The timeout value to be used for clock request acknowledgment
-# min value = 0x01 to max = 0x06
-NXP_SYS_CLOCK_TO_CFG=0x01
-
-###############################################################################
-# NXP proprietary settings
-NXP_ACT_PROP_EXTN={2F, 02, 00}
-
-###############################################################################
-# NFC forum profile settings
-NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00}
-
-###############################################################################
-# NFCC Configuration Control
-# Allow NFCC to manage RF Config 0x01
-# Don't allow NFCC to manage RF Config 0x00
-NXP_NFC_MERGE_RF_PARAMS={20, 02, 04, 01, 85, 01, 01}
-
-###############################################################################
-# Standby enable settings
-#NXP_CORE_STANDBY={2F, 00, 01, 01}
-
-###############################################################################
-# NXP TVDD configurations settings
-# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported,
-# out of them only one can be configured at a time.
-NXP_EXT_TVDD_CFG=0x02
-
-###############################################################################
-#config1:SLALM, 3.3V for both RM and CM
-NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C}
-
-###############################################################################
-#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
-#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_1={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_2={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_3={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_4={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_5={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_6={
-#}
-
-###############################################################################
-# Set configuration optimization decision setting
-# Enable = 0x01
-# Disable = 0x00
-NXP_SET_CONFIG_ALWAYS=0x00
-
-###############################################################################
-# Core configuration extensions
-# It includes
-# Wired mode settings A0ED, A0EE
-# Tag Detector A040, A041, A043
-# Low Power mode A007
-# Clock settings A002, A003
-# PbF settings A008
-# Clock timeout settings A004
-# eSE (SVDD) PWR REQ settings A0F2
-# How eSE connected to PN553 A012
-# UICC2 bit rate A0D1
-# SWP1A interface A0D4
-# DWP intf behavior config, SVDD Load activated by default if set to 0x31 - A037
-NXP_CORE_CONF_EXTN={20, 02, 25, 09,
- A0, EC, 01, 01,
- A0, ED, 01, 00,
- A0, 5E, 01, 01,
- A0, 12, 01, 02,
- A0, 40, 01, 01,
- A0, DD, 01, 2D,
- A0, D1, 01, 02,
- A0, D4, 01, 01,
- A0, 37, 01, 35
- }
-# A0, F2, 01, 01,
-# A0, 40, 01, 01,
-# A0, 41, 01, 02,
-# A0, 43, 01, 04,
-# A0, 02, 01, 01,
-# A0, 03, 01, 11,
-# A0, 07, 01, 03,
-# A0, 08, 01, 01
-# }
-
-###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set
-# to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00 }
-
-###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set
-# to 0x00
-NXP_I2C_FRAGMENTATION_ENABLED=0x00
-
-###############################################################################
-# Core configuration settings
-NXP_CORE_CONF={ 20, 02, 34, 10,
- 85, 01, 01,
- 28, 01, 00,
- 21, 01, 00,
- 30, 01, 08,
- 31, 01, 03,
- 32, 01, 60,
- 38, 01, 01,
- 33, 04, 01, 02, 03, 04,
- 54, 01, 06,
- 50, 01, 02,
- 5B, 01, 00,
- 80, 01, 01,
- 81, 01, 01,
- 82, 01, 0E,
- 18, 01, 01,
- 68, 01, 00
- }
-
-###############################################################################
-# Mifare Classic Key settings
-#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5,
-# A0, 52, 06, D3, F7, D3, F7, D3, F7,
-# A0, 53, 06, FF, FF, FF, FF, FF, FF,
-# A0, 54, 06, 00, 00, 00, 00, 00, 00}
-
-
-###############################################################################
-# Default SE Options
-# No secure element 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x04
-
-NXP_DEFAULT_SE=0x07
-
-###############################################################################
-#Enable SWP full power mode when phone is power off
-NXP_SWP_FULL_PWR_ON=0x00
-
-###############################################################################
-#### Select the CHIP ####
-#PN547C2 0x01
-#PN65T 0x02
-#PN548AD 0x03
-#PN66T 0x04
-#PN551 0x05
-#PN67T 0x06
-#PN553 0x07
-#PN80T 0x08
-NXP_NFC_CHIP=0x07
-
-###############################################################################
-# CE when Screen state is locked
-# This setting is for DEFAULT_AID_ROUTE,
-# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE
-# Disable 0x00
-# Enable 0x01
-NXP_CE_ROUTE_STRICT_DISABLE=0x01
-
-###############################################################################
-#Timeout in secs to get NFCEE Discover notification
-NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
-
-###############################################################################
-NXP_DEFAULT_NFCEE_TIMEOUT=20
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_START_TIMEOUT=0x0A
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
-
-###############################################################################
-#Set the default AID route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_AID_ROUTE=0x00
-
-###############################################################################
-#Set the Mifare Desfire route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_DESFIRE_ROUTE=0x02
-
-###############################################################################
-#Set the Mifare CLT route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_MIFARE_CLT_ROUTE=0x02
-
-###############################################################################
-#Set the default AID Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_AID_PWR_STATE=0x19
-
-###############################################################################
-#Set the Mifare Desfire Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_DESFIRE_PWR_STATE=0x1B
-
-###############################################################################
-#Set the Mifare CLT Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_MIFARE_CLT_PWR_STATE=0x1B
-
-###############################################################################
-#Set the Felica CLT route Location :
-#This settings will be used when application does not set this parameter
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_FELICA_CLT_ROUTE=0x01
-
-###############################################################################
-#Set the Felica CLT Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_FELICA_CLT_PWR_STATE=0x1B
-
-###############################################################################
-# AID Matching platform options
-# AID_MATCHING_L 0x01
-# AID_MATCHING_K 0x02
-AID_MATCHING_PLATFORM=0x01
-
-###############################################################################
-# P61 interface options
-# NFC 0x01
-# SPI 0x02
-NXP_P61_LS_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-# P61 LTSM interface options
-# NFC 0x01
-# SPI 0x02
-NXP_P61_LTSM_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-#CHINA_TIANJIN_RF_SETTING
-#Enable 0x01
-#Disable 0x00
-NXP_CHINA_TIANJIN_RF_ENABLED=0x01
-
-###############################################################################
-#SWP_SWITCH_TIMEOUT_SETTING
-# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
-# Timeout in milliseconds, for example
-# No Timeout 0x00
-# 10 millisecond timeout 0x0A
-NXP_SWP_SWITCH_TIMEOUT=0x0A
-
-###############################################################################
-# P61 interface options for JCOP Download
-# NFC 0x01
-# SPI 0x02
-NXP_P61_JCOP_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-# P61 JCOP OS download options
-# FRAMEWORK API BY APPLICATION 0x00
-# AT BOOT_TIME 0x01
-NXP_JCOPDL_AT_BOOT_ENABLE=0x00
-
-###############################################################################
-# Loader service version
-# NFC service checks for LS version 2.0 or 2.1
-# LS2.0 0x20
-# LS2.1 0x21
-# LS2.2 0x22
-# AT NFC service intialization
-NXP_LOADER_SERVICE_VERSION=0x22
-
-###############################################################################
-#Timeout value in milliseconds for NFCC standby mode.The range is between 5000
-#msec to 20000 msec and zero is to disable.
-NXP_NFCC_STANDBY_TIMEOUT=20000
-
-###############################################################################
-#Dynamic RSSI feature enable
-# Disable 0x00
-# Enable 0x01
-NXP_AGC_DEBUG_ENABLE=0x00
-
-###############################################################################
-#Virtual Mode ESE and Wired Mode ongoing delay Wired Mode
-# For Technology routing to ESE Technology Mask = 4
-# For ISO-DEP Protocol routing to ESE Mask = 2
-# It can also take TECH|PROTO = 6
-# To ignore the delay set mask to = 0
-NXP_ESE_WIRED_PRT_MASK=0x00
-
-###############################################################################
-#Virtual Mode UICC and Wired Mode ongoing delay Wired Mode
-#For Technology routing to UICC Technology Mask = 4
-#For ISO-DEP Protocol routing to UICC set Mask = 2
-#For Select AID Routing to UICC set Mask = 1
-#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay
-#set mask = 0
-NXP_UICC_WIRED_PRT_MASK=0x00
-
-###############################################################################
-#RF field true delay Wired Mode
-# delay wired mode = 1
-# allow wired mode = 0
-NXP_WIRED_MODE_RF_FIELD_ENABLE=0x00
-
-###############################################################################
-#Config to allow adding aids
-#NFC on/off is required after this config
-#1 = enabling adding aid to NFCC routing table.
-#0 = disabling adding aid to NFCC routing table.
-NXP_ENABLE_ADD_AID=0x01
-
-###############################################################################
-# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal
-# JCOP CP TIMEOUT
-NXP_CP_TIMEOUT={00, 77}
-
-###############################################################################
-# Enable/Disable checking default proto SE Id
-# Disable 0x00
-# Enable 0x01
-NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01
-
-###############################################################################
-#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE
-#Enable/Disable block number checks for china transit use case
-#Enable 0x01
-#Disable 0x00
-NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01
-
-###############################################################################
-# Restrict routing to first matched rule only.
-# Blacklist enable 0x01
-# Blacklist disable 0x00
-NXP_PROP_BLACKLIST_ROUTING=0x00
-
-###############################################################################
-# Timeout value in milliseconds to send response for Felica command received
-NXP_HCEF_CMD_RSP_TIMEOUT_VALUE=5000
-
-###############################################################################
\ No newline at end of file
diff --git a/halimpl/pn54x/libnfc-nxp-PN65T_example.conf b/halimpl/pn54x/libnfc-nxp-PN65T_example.conf
deleted file mode 100644
index 317776c..0000000
--- a/halimpl/pn54x/libnfc-nxp-PN65T_example.conf
+++ /dev/null
@@ -1,273 +0,0 @@
-## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn54x)
-## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn54x)
-
-###############################################################################
-# Application options
-# Logging Levels
-# NXPLOG_DEFAULT_LOGLEVEL 0x01
-# ANDROID_LOG_DEBUG 0x03
-# ANDROID_LOG_WARN 0x02
-# ANDROID_LOG_ERROR 0x01
-# ANDROID_LOG_SILENT 0x00
-#
-NXPLOG_EXTNS_LOGLEVEL=0x03
-NXPLOG_NCIHAL_LOGLEVEL=0x03
-NXPLOG_NCIX_LOGLEVEL=0x03
-NXPLOG_NCIR_LOGLEVEL=0x03
-NXPLOG_FWDNLD_LOGLEVEL=0x03
-NXPLOG_TML_LOGLEVEL=0x03
-
-###############################################################################
-# Nfc Device Node name
-NXP_NFC_DEV_NODE="/dev/pn54x"
-
-###############################################################################
-# Extension for Mifare reader enable
-MIFARE_READER_ENABLE=0x01
-
-###############################################################################
-# Vzw Feature enable
-VZW_FEATURE_ENABLE=0x01
-
-###############################################################################
-# File name for Firmware
-NXP_FW_NAME="libpn547_fw.so"
-
-###############################################################################
-# System clock source selection configuration
-#define CLK_SRC_XTAL 1
-#define CLK_SRC_PLL 2
-
-NXP_SYS_CLK_SRC_SEL=0x01
-
-###############################################################################
-# System clock frequency selection configuration
-#define CLK_FREQ_13MHZ 1
-#define CLK_FREQ_19_2MHZ 2
-#define CLK_FREQ_24MHZ 3
-#define CLK_FREQ_26MHZ 4
-#define CLK_FREQ_38_4MHZ 5
-#define CLK_FREQ_52MHZ 6
-
-NXP_SYS_CLK_FREQ_SEL=0x00
-
-###############################################################################
-# The timeout value to be used for clock request acknowledgment
-# min value = 0x01 to max = 0x06
-
-NXP_SYS_CLOCK_TO_CFG=0x01
-
-###############################################################################
-# NXP proprietary settings
-NXP_ACT_PROP_EXTN={2F, 02, 00}
-
-###############################################################################
-# NFC forum profile settings
-NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00}
-
-###############################################################################
-# Standby enable settings
-NXP_CORE_STANDBY={2F, 00, 01, 01}
-
-###############################################################################
-#Atonomous Mode
-#Enable 0x01
-#Disable 0x00
-NXP_CORE_SCRN_OFF_AUTONOMOUS_ENABLE=0x00
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-# NXP_RF_CONF_BLK_1={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_2={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_3={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_4={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_5={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_6={
-#}
-
-###############################################################################
-# Core configuration extensions
-# It includes
-# Wired mode settings A0ED, A0EE
-# Tag Detector A040, A041, A043
-# Low Power mode A007
-# Clock settings A002, A003
-# PbF settings A008
-NXP_CORE_CONF_EXTN={20, 02, 1A, 05,
- A0, EC, 01, 01,
- A0, ED, 01, 01,
- A0, 5E, 01, 01,
- A0, 12, 01, 02,
- A0, 0D, 06, 3E, 2D, 15, 88, 15, 00
- }
-
-###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
- }
-
-###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
-NXP_I2C_FRAGMENTATION_ENABLED=0x00
-
-###############################################################################
-# Core configuration settings
-NXP_CORE_CONF={ 20, 02, 2B, 0D,
- 28, 01, 00,
- 21, 01, 00,
- 30, 01, 08,
- 31, 01, 03,
- 33, 04, 01, 02, 03, 04,
- 54, 01, 06,
- 50, 01, 02,
- 5B, 01, 00,
- 60, 01, 0E,
- 80, 01, 01,
- 81, 01, 01,
- 82, 01, 0E,
- 18, 01, 01
- }
-
-###############################################################################
-# Mifare Classic Key settings
-#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5,
-# A0, 52, 06, D3, F7, D3, F7, D3, F7,
-# A0, 53, 06, FF, FF, FF, FF, FF, FF,
-# A0, 54, 06, 00, 00, 00, 00, 00, 00}
-
-###############################################################################
-# Default SE Options
-# No secure element 0x00
-# eSE 0x01
-# UICC 0x02
-
-NXP_DEFAULT_SE=0x02
-
-NXP_DEFAULT_NFCEE_TIMEOUT=0x06
-
-###############################################################################
-#Enable SWP full power mode when phone is power off
-NXP_SWP_FULL_PWR_ON=0x01
-
-###############################################################################
-#Set the default AID route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_AID_ROUTE=0x00
-
-###############################################################################
-#Set the Mifare Desfire route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_DESFIRE_ROUTE=0x02
-
-###############################################################################
-#Set the Mifare CLT route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_MIFARE_CLT_ROUTE=0x02
-
-##############################################################################
-#### Select the CHIP ####
-#PN547C2 0x01
-#PN65T 0x02
-#PN548AD 0x03
-#PN66T 0x04
-
-NXP_NFC_CHIP=0x02
-
-#Timeout in secs
-NXP_SWP_RD_START_TIMEOUT=0xFF
-#Timeout in secs
-NXP_SWP_RD_TAG_OP_TIMEOUT=0xFF
-
-###############################################################################
-# CE when Screen state is locked
-# Disable 0x00
-# Enable 0x01
-NXP_CE_ROUTE_STRICT_DISABLE=0x01
-
-###############################################################################
-# AID Matching platform options
-# AID_MATCHING_L 0x01
-# AID_MATCHING_K 0x02
-AID_MATCHING_PLATFORM=0x01
-
-###############################################################################
-# P61 interface options
-# NFC 0x01
-# SPI 0x02
-NXP_P61_LS_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-# P61 LTSM interface options
-# NFC 0x01
-# SPI 0x02
-NXP_P61_LTSM_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-#CHINA_TIANJIN_RF_SETTING
-#Enable 0x01
-#Disable 0x00
-NXP_CHINA_TIANJIN_RF_ENABLED=0x01
-
-###############################################################################
-#SWP_SWITCH_TIMEOUT_SETTING
-# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
-# Timeout in milliseconds, for example
-# No Timeout 0x00
-# 10 millisecond timeout 0x0A
-NXP_SWP_SWITCH_TIMEOUT=0x0A
-
-###############################################################################
-# P61 interface options for JCOP Download
-# NFC 0x01
-# SPI 0x02
-NXP_P61_JCOP_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-# P61 JCOP OS download options
-# FRAMEWORK API BY APPLICATION 0x00
-# AT BOOT_TIME 0x01
-NXP_JCOPDL_AT_BOOT_ENABLE=0x00
-
-###############################################################################
-# Loader service version
-# NFC service checks for LS version 2.0 or 2.1
-# LS2.0 0x20
-# LS2.1 0x21
-# LS2.2 0x22
-# AT NFC service intialization
-NXP_LOADER_SERVICE_VERSION=0x21
diff --git a/halimpl/pn54x/libnfc-nxp-PN66T_example.conf b/halimpl/pn54x/libnfc-nxp-PN66T_example.conf
deleted file mode 100644
index d63881f..0000000
--- a/halimpl/pn54x/libnfc-nxp-PN66T_example.conf
+++ /dev/null
@@ -1,305 +0,0 @@
-## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn54x)
-## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn54x)
-
-###############################################################################
-# Application options
-# Logging Levels
-# NXPLOG_DEFAULT_LOGLEVEL 0x01
-# ANDROID_LOG_DEBUG 0x03
-# ANDROID_LOG_WARN 0x02
-# ANDROID_LOG_ERROR 0x01
-# ANDROID_LOG_SILENT 0x00
-#
-NXPLOG_EXTNS_LOGLEVEL=0x03
-NXPLOG_NCIHAL_LOGLEVEL=0x03
-NXPLOG_NCIX_LOGLEVEL=0x03
-NXPLOG_NCIR_LOGLEVEL=0x03
-NXPLOG_FWDNLD_LOGLEVEL=0x03
-NXPLOG_TML_LOGLEVEL=0x03
-###############################################################################
-# Nfc Device Node name
-NXP_NFC_DEV_NODE="/dev/pn54x"
-
-###############################################################################
-# Extension for Mifare reader enable
-MIFARE_READER_ENABLE=0x01
-
-###############################################################################
-# Vzw Feature enable
-VZW_FEATURE_ENABLE=0x01
-
-###############################################################################
-# File name for Firmware
-NXP_FW_NAME="libpn548ad_fw.so"
-
-###############################################################################
-# System clock source selection configuration
-#define CLK_SRC_XTAL 1
-#define CLK_SRC_PLL 2
-
-NXP_SYS_CLK_SRC_SEL=0x02
-
-###############################################################################
-# System clock frequency selection configuration
-#define CLK_FREQ_13MHZ 1
-#define CLK_FREQ_19_2MHZ 2
-#define CLK_FREQ_24MHZ 3
-#define CLK_FREQ_26MHZ 4
-#define CLK_FREQ_38_4MHZ 5
-#define CLK_FREQ_52MHZ 6
-
-NXP_SYS_CLK_FREQ_SEL=0x02
-
-###############################################################################
-# The timeout value to be used for clock request acknowledgment
-# min value = 0x01 to max = 0x06
-
-NXP_SYS_CLOCK_TO_CFG=0x01
-
-###############################################################################
-# NXP proprietary settings
-NXP_ACT_PROP_EXTN={2F, 02, 00}
-
-###############################################################################
-# NFC forum profile settings
-NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00}
-
-###############################################################################
-# NFCC Configuration Control
-# Allow NFCC to manage RF Config 0x01
-# Don't allow NFCC to manage RF Config 0x00
-NXP_NFC_MERGE_RF_PARAMS={20, 02, 04, 01, 85, 01, 01}
-
-###############################################################################
-# Standby enable settings
-NXP_CORE_STANDBY={2F, 00, 01, 01}
-
-###############################################################################
-# NXP TVDD configurations settings
-# Allow NFCC to configure External TVDD, There are currently three
-#configurations (1, 2 and 3) are supported, out of them only one can be
-#supported.
-
-NXP_EXT_TVDD_CFG=0x01
-
-###############################################################################
-#config1:SLALM, 3.3V for both RM and CM
-NXP_EXT_TVDD_CFG_1={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 02, 09, 00}
-
-###############################################################################
-#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
-#monitoring 5V from DCDC, 4.7V for both RM and CM, DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_2={20, 02, 0B, 02, A0, 66, 01, 00, A0, 0E, 03, 56, 64, 0A}
-
-###############################################################################
-#config3: use DCDC in CE, use Tx_Pwr_Req, SLALM, monitoring 5V from DCDC,
-#DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_3={20, 02, 0B, 02, A0, 66, 01, 01, A0, 0E, 03, 52, 64, 0A}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_1={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_2={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_3={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_4={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_5={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_6={
-#}
-
-###############################################################################
-# Core configuration extensions
-# It includes
-# Wired mode settings A0ED, A0EE
-# Tag Detector A040, A041, A043
-# Low Power mode A007
-# Clock settings A002, A003
-# PbF settings A008
-# Clock timeout settings A004
-NXP_CORE_CONF_EXTN={20, 02, 1D, 07,
- A0, EC, 01, 01,
- A0, ED, 01, 03,
- A0, 5E, 01, 01,
- A0, 12, 01, 02,
- A0, 40, 01, 01,
- A0, DD, 01, 2D,
- A0, F2, 01, 01
- }
-
-###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 01
- }
-
-###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set to 0x00
-NXP_I2C_FRAGMENTATION_ENABLED=0x00
-
-###############################################################################
-# Core configuration settings
-NXP_CORE_CONF={ 20, 02, 2E, 0E,
- 28, 01, 00,
- 21, 01, 00,
- 30, 01, 08,
- 31, 01, 03,
- 32, 01, 60,
- 38, 01, 01,
- 33, 04, 01, 02, 03, 04,
- 54, 01, 06,
- 50, 01, 02,
- 5B, 01, 00,
- 80, 01, 01,
- 81, 01, 01,
- 82, 01, 0E,
- 18, 01, 01
- }
-
-###############################################################################
-# Mifare Classic Key settings
-#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5,
-# A0, 52, 06, D3, F7, D3, F7, D3, F7,
-# A0, 53, 06, FF, FF, FF, FF, FF, FF,
-# A0, 54, 06, 00, 00, 00, 00, 00, 00}
-
-###############################################################################
-# Default SE Options
-# No secure element 0x00
-# eSE 0x01
-# UICC 0x02
-
-NXP_DEFAULT_SE=0x03
-
-###############################################################################
-#Enable SWP full power mode when phone is power off
-NXP_SWP_FULL_PWR_ON=0x00
-
-###############################################################################
-#### Select the CHIP ####
-#PN547C2 0x01
-#PN65T 0x02
-#PN548AD 0x03
-#PN66T 0x04
-
-NXP_NFC_CHIP=0x04
-
-###############################################################################
-# CE when Screen state is locked
-# Disable 0x00
-# Enable 0x01
-NXP_CE_ROUTE_STRICT_DISABLE=0x01
-
-###############################################################################
-#Timeout in secs to get NFCEE Discover notification
-NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
-
-NXP_DEFAULT_NFCEE_TIMEOUT=0x06
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_START_TIMEOUT=0x0A
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
-
-###############################################################################
-#Set the default AID route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_AID_ROUTE=0x00
-
-###############################################################################
-#Set the Mifare Desfire route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_DESFIRE_ROUTE=0x02
-
-###############################################################################
-#Set the Mifare CLT route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-DEFAULT_MIFARE_CLT_ROUTE=0x02
-
-###############################################################################
-# AID Matching platform options
-# AID_MATCHING_L 0x01
-# AID_MATCHING_K 0x02
-AID_MATCHING_PLATFORM=0x01
-
-###############################################################################
-# P61 interface options
-# NFC 0x01
-# SPI 0x02
-NXP_P61_LS_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-# P61 LTSM interface options
-# NFC 0x01
-# SPI 0x02
-NXP_P61_LTSM_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-#CHINA_TIANJIN_RF_SETTING
-#Enable 0x01
-#Disable 0x00
-NXP_CHINA_TIANJIN_RF_ENABLED=0x01
-
-###############################################################################
-#SWP_SWITCH_TIMEOUT_SETTING
-# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
-# Timeout in milliseconds, for example
-# No Timeout 0x00
-# 10 millisecond timeout 0x0A
-NXP_SWP_SWITCH_TIMEOUT=0x0A
-
-###############################################################################
-# P61 interface options for JCOP Download
-# NFC 0x01
-# SPI 0x02
-NXP_P61_JCOP_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-# P61 JCOP OS download options
-# FRAMEWORK API BY APPLICATION 0x00
-# AT BOOT_TIME 0x01
-NXP_JCOPDL_AT_BOOT_ENABLE=0x00
-
-###############################################################################
-# Loader service version
-# NFC service checks for LS version 2.0 or 2.1
-# LS2.0 0x20
-# LS2.1 0x21
-# LS2.2 0x22
-# AT NFC service intialization
-NXP_LOADER_SERVICE_VERSION=0x21
diff --git a/halimpl/pn54x/libnfc-nxp-PN80T_example.conf b/halimpl/pn54x/libnfc-nxp-PN80T_example.conf
deleted file mode 100644
index 45d276c..0000000
--- a/halimpl/pn54x/libnfc-nxp-PN80T_example.conf
+++ /dev/null
@@ -1,487 +0,0 @@
-## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547)
-## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547)
-###############################################################################
-# Application options
-# Logging Levels
-# NXPLOG_DEFAULT_LOGLEVEL 0x01
-# ANDROID_LOG_DEBUG 0x03
-# ANDROID_LOG_WARN 0x02
-# ANDROID_LOG_ERROR 0x01
-# ANDROID_LOG_SILENT 0x00
-NXPLOG_EXTNS_LOGLEVEL=0x03
-NXPLOG_NCIHAL_LOGLEVEL=0x03
-NXPLOG_NCIX_LOGLEVEL=0x03
-NXPLOG_NCIR_LOGLEVEL=0x03
-NXPLOG_FWDNLD_LOGLEVEL=0x03
-NXPLOG_TML_LOGLEVEL=0x03
-
-###############################################################################
-# Nfc Device Node name
-NXP_NFC_DEV_NODE="/dev/pn553"
-
-###############################################################################
-# Extension for Mifare reader enable
-MIFARE_READER_ENABLE=0x01
-
-###############################################################################
-# Vzw Feature enable
-VZW_FEATURE_ENABLE=0x01
-
-###############################################################################
-# File name for Firmware
-NXP_FW_NAME="libpn553_fw.so"
-
-###############################################################################
-# System clock source selection configuration
-#define CLK_SRC_XTAL 1
-#define CLK_SRC_PLL 2
-NXP_SYS_CLK_SRC_SEL=0x02
-
-###############################################################################
-# System clock frequency selection configuration
-#define CLK_FREQ_13MHZ 1
-#define CLK_FREQ_19_2MHZ 2
-#define CLK_FREQ_24MHZ 3
-#define CLK_FREQ_26MHZ 4
-#define CLK_FREQ_38_4MHZ 5
-#define CLK_FREQ_52MHZ 6
-NXP_SYS_CLK_FREQ_SEL=0x02
-
-###############################################################################
-# The timeout value to be used for clock request acknowledgment
-# min value = 0x01 to max = 0x06
-NXP_SYS_CLOCK_TO_CFG=0x06
-
-###############################################################################
-# NXP proprietary settings
-NXP_ACT_PROP_EXTN={2F, 02, 00}
-
-###############################################################################
-# NFC forum profile settings
-NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00}
-
-###############################################################################
-# NFCC Configuration Control
-# Allow NFCC to manage RF Config 0x01
-# Don't allow NFCC to manage RF Config 0x00
-NXP_NFC_MERGE_RF_PARAMS={20, 02, 04, 01, 85, 01, 01}
-
-###############################################################################
-# Standby enable settings
-#NXP_CORE_STANDBY={2F, 00, 01, 01}
-
-###############################################################################
-# NXP TVDD configurations settings
-# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported,
-# out of them only one can be configured at a time.
-NXP_EXT_TVDD_CFG=0x02
-
-###############################################################################
-#config1:SLALM, 3.3V for both RM and CM
-NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C}
-
-###############################################################################
-#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
-#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_1={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_2={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_3={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_4={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_5={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_6={
-#}
-
-###############################################################################
-# Set configuration optimization decision setting
-# Enable = 0x01
-# Disable = 0x00
-NXP_SET_CONFIG_ALWAYS=0x00
-
-###############################################################################
-# Core configuration extensions
-# It includes
-# Wired mode settings A0ED, A0EE
-# Tag Detector A040, A041, A043
-# Low Power mode A007
-# Clock settings A002, A003
-# PbF settings A008
-# Clock timeout settings A004
-# eSE (SVDD) PWR REQ settings A0F2
-# Window size A0D8
-# DWP Speed A0D5
-# How eSE connected to PN553 A012
-# UICC2 bit rate A0D1
-# SWP1A interface A0D4
-# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037
-NXP_CORE_CONF_EXTN={20, 02, 29, 0A,
- A0, EC, 01, 01,
- A0, ED, 01, 01,
- A0, 5E, 01, 01,
- A0, 12, 01, 02,
- A0, 40, 01, 01,
- A0, D1, 01, 02,
- A0, D4, 01, 01,
- A0, 37, 01, 35,
- A0, D8, 01, 02,
- A0, D5, 01, 0A
- }
-# A0, F2, 01, 01,
-# A0, 40, 01, 01,
-# A0, 41, 01, 02,
-# A0, 43, 01, 04,
-# A0, 02, 01, 01,
-# A0, 03, 01, 11,
-# A0, 07, 01, 03,
-# A0, 08, 01, 01
-# }
-
-###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set
-# to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00 }
-
-###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set
-# to 0x00
-NXP_I2C_FRAGMENTATION_ENABLED=0x00
-
-###############################################################################
-# Core configuration settings
-NXP_CORE_CONF={ 20, 02, 2E, 0E,
- 28, 01, 00,
- 21, 01, 00,
- 30, 01, 08,
- 31, 01, 03,
- 32, 01, 60,
- 38, 01, 01,
- 33, 04, 01, 02, 03, 04,
- 54, 01, 06,
- 50, 01, 02,
- 5B, 01, 00,
- 80, 01, 01,
- 81, 01, 01,
- 82, 01, 0E,
- 18, 01, 01
- }
-
-###############################################################################
-# Mifare Classic Key settings
-#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5,
-# A0, 52, 06, D3, F7, D3, F7, D3, F7,
-# A0, 53, 06, FF, FF, FF, FF, FF, FF,
-# A0, 54, 06, 00, 00, 00, 00, 00, 00}
-
-###############################################################################
-# Default SE Options
-# No secure element 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x04
-NXP_DEFAULT_SE=0x07
-
-###############################################################################
-#Enable SWP full power mode when phone is power off
-NXP_SWP_FULL_PWR_ON=0x00
-
-###############################################################################
-#### Select the CHIP ####
-#PN547C2 0x01
-#PN65T 0x02
-#PN548AD 0x03
-#PN66T 0x04
-#PN551 0x05
-#PN67T 0x06
-#PN553 0x07
-#PN80T 0x08
-NXP_NFC_CHIP=0x08
-
-###############################################################################
-# CE when Screen state is locked
-# This setting is for DEFAULT_AID_ROUTE,
-# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE
-# Disable 0x00
-# Enable 0x01
-NXP_CE_ROUTE_STRICT_DISABLE=0x01
-
-###############################################################################
-#Timeout in secs to get NFCEE Discover notification
-NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
-
-###############################################################################
-NXP_DEFAULT_NFCEE_TIMEOUT=20
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_START_TIMEOUT=0x0A
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
-
-###############################################################################
-#Set the default AID route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_AID_ROUTE=0x00
-
-###############################################################################
-#Set the Mifare Desfire route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_DESFIRE_ROUTE=0x02
-
-###############################################################################
-#Set the Mifare CLT route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_MIFARE_CLT_ROUTE=0x02
-
-###############################################################################
-#Set the Felica CLT route Location :
-#This settings will be used when application does not set this parameter
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_FELICA_CLT_ROUTE=0x01
-
-###############################################################################
-#Set the default AID Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_AID_PWR_STATE=0x19
-
-###############################################################################
-#Set the Mifare Desfire Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_DESFIRE_PWR_STATE=0x1B
-
-###############################################################################
-#Set the Mifare CLT Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_MIFARE_CLT_PWR_STATE=0x1B
-
-###############################################################################
-#Set the Felica CLT Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_FELICA_CLT_PWR_STATE=0x1B
-
-###############################################################################
-# AID Matching platform options
-# AID_MATCHING_L 0x01
-# AID_MATCHING_K 0x02
-AID_MATCHING_PLATFORM=0x01
-
-###############################################################################
-# P61 interface options
-# NFC 0x01
-# SPI 0x02
-NXP_P61_LS_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-# P61 LTSM interface options
-# NFC 0x01
-# SPI 0x02
-NXP_P61_LTSM_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-#CHINA_TIANJIN_RF_SETTING
-#Enable 0x01
-#Disable 0x00
-NXP_CHINA_TIANJIN_RF_ENABLED=0x01
-
-###############################################################################
-#SWP_SWITCH_TIMEOUT_SETTING
-# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
-# Timeout in milliseconds, for example
-# No Timeout 0x00
-# 10 millisecond timeout 0x0A
-NXP_SWP_SWITCH_TIMEOUT=0x0A
-
-###############################################################################
-# P61 interface options for JCOP Download
-# NFC 0x01
-# SPI 0x02
-NXP_P61_JCOP_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-# P61 JCOP OS download options
-# FRAMEWORK API BY APPLICATION 0x00
-# AT BOOT_TIME 0x01
-NXP_JCOPDL_AT_BOOT_ENABLE=0x00
-
-###############################################################################
-# Loader service version
-# NFC service checks for LS version 2.0 or 2.1
-# LS2.0 0x20
-# LS2.1 0x21
-# LS2.2 0x22
-# AT NFC service intialization
-NXP_LOADER_SERVICE_VERSION=0x22
-
-###############################################################################
-#Timeout value in milliseconds for NFCC standby mode.The range is between 5000
-#msec to 20000 msec and zero is to disable.
-NXP_NFCC_STANDBY_TIMEOUT=20000
-
-###############################################################################
-#Dynamic RSSI feature enable
-# Disable 0x00
-# Enable 0x01
-NXP_AGC_DEBUG_ENABLE=0x00
-
-###############################################################################
-#Virtual Mode ESE and Wired Mode ongoing delay Wired Mode
-# For Technology routing to ESE Technology Mask = 4
-# For ISO-DEP Protocol routing to ESE Mask = 2
-# It can also take TECH|PROTO = 6
-# To ignore the delay set mask to = 0
-NXP_ESE_WIRED_PRT_MASK=0x00
-
-###############################################################################
-#Virtual Mode UICC and Wired Mode ongoing delay Wired Mode
-#For Technology routing to UICC Technology Mask = 4
-#For ISO-DEP Protocol routing to UICC set Mask = 2
-#For Select AID Routing to UICC set Mask = 1
-#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay
-#set mask = 0
-NXP_UICC_WIRED_PRT_MASK=0x00
-
-################################################################################
-#RF field true delay Wired Mode
-# delay wired mode = 1
-# allow wired mode = 0
-NXP_WIRED_MODE_RF_FIELD_ENABLE=0x00
-
-###############################################################################
-#Config to allow adding aids
-#NFC on/off is required after this config
-#1 = enabling adding aid to NFCC routing table.
-#0 = disabling adding aid to NFCC routing table.
-NXP_ENABLE_ADD_AID=0x01
-
-###############################################################################
-# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal
-# JCOP CP TIMEOUT
-NXP_CP_TIMEOUT={00, 77}
-
-###############################################################################
-# Enable/Disable checking default proto SE Id
-# Disable 0x00
-# Enable 0x01
-NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01
-
-###############################################################################
-#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE
-#Enable/Disable block number checks for china transit use case
-#Enable 0x01
-#Disable 0x00
-NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01
-
-###############################################################################
-# Wired mode resume timeout vaule in wired mode resume feature enable
-# DWP resume time out in ms( 4 bytes hex value and LSB first)
-#example 1000 = 0x03E8
-#exmaple 2000 = 0x07D0
-#example 500 = 0x01F4
-NXP_WIREDMODE_RESUME_TIMEOUT={E8,03,00,00}
-###############################################################################
-# Power to eSE is controlled by DH or PMU depending on following configurations
-#define DH_PWR_CONTROL 1
-#define PMU_PWR_CONTROL 2
-NXP_ESE_POWER_DH_CONTROL=1
-
-###############################################################################
-# Timeout value in milliseconds for wired mode resume after RF field event timeout
-NXP_NFCC_RF_FIELD_EVENT_TIMEOUT=3000
-
-###############################################################################
-# NXP PMU Support configuration is sent if PMU_PWR_CONTROL is configured
-# External PMU available in phone ON and phone OFF case if NXP_ESE_POWER_EXT_PMU=1
-# External PMU available only in phone ON case if NXP_ESE_POWER_EXT_PMU=2
-NXP_ESE_POWER_EXT_PMU=2
-
-###############################################################################
-# Whether to allow wired mode in desfire and mifare CLT
-# Disable 0x00
-# Enable 0x01
-NXP_ALLOW_WIRED_IN_MIFARE_DESFIRE_CLT=0x00
-
-###############################################################################
-# Restrict routing to first matched rule only.
-# Blacklist enable 0x01
-# Blacklist disable 0x00
-NXP_PROP_BLACKLIST_ROUTING=0x00
-
-###############################################################################
-# Send DWP interface reset command as part of SE open
-# Disable 0x00
-# Enable 0x01
-NXP_DWP_INTF_RESET_ENABLE=0x01
-
-###############################################################################
-# Timeout value in milliseconds for JCOP OS download to complete
-OS_DOWNLOAD_TIMEOUT_VALUE=60000
-
-###############################################################################
-# Timeout value in milliseconds to send response for Felica command received
-NXP_HCEF_CMD_RSP_TIMEOUT_VALUE=5000
-
-###############################################################################
\ No newline at end of file
diff --git a/halimpl/pn54x/libnfc-nxp-PN80T_example_NCI2_0.conf b/halimpl/pn54x/libnfc-nxp-PN80T_example_NCI2_0.conf
deleted file mode 100644
index 1f64ec7..0000000
--- a/halimpl/pn54x/libnfc-nxp-PN80T_example_NCI2_0.conf
+++ /dev/null
@@ -1,488 +0,0 @@
-## This file is used by NFC NXP NCI HAL(external/libnfc-nci/halimpl/pn547)
-## and NFC Service Java Native Interface Extensions (packages/apps/Nfc/nci/jni/extns/pn547)
-###############################################################################
-# Application options
-# Logging Levels
-# NXPLOG_DEFAULT_LOGLEVEL 0x01
-# ANDROID_LOG_DEBUG 0x03
-# ANDROID_LOG_WARN 0x02
-# ANDROID_LOG_ERROR 0x01
-# ANDROID_LOG_SILENT 0x00
-NXPLOG_EXTNS_LOGLEVEL=0x03
-NXPLOG_NCIHAL_LOGLEVEL=0x03
-NXPLOG_NCIX_LOGLEVEL=0x03
-NXPLOG_NCIR_LOGLEVEL=0x03
-NXPLOG_FWDNLD_LOGLEVEL=0x03
-NXPLOG_TML_LOGLEVEL=0x03
-
-###############################################################################
-# Nfc Device Node name
-NXP_NFC_DEV_NODE="/dev/pn553"
-
-###############################################################################
-# Extension for Mifare reader enable
-MIFARE_READER_ENABLE=0x01
-
-###############################################################################
-# Vzw Feature enable
-VZW_FEATURE_ENABLE=0x01
-
-###############################################################################
-# File name for Firmware
-NXP_FW_NAME="libpn553_fw.so"
-
-###############################################################################
-# System clock source selection configuration
-#define CLK_SRC_XTAL 1
-#define CLK_SRC_PLL 2
-NXP_SYS_CLK_SRC_SEL=0x02
-
-###############################################################################
-# System clock frequency selection configuration
-#define CLK_FREQ_13MHZ 1
-#define CLK_FREQ_19_2MHZ 2
-#define CLK_FREQ_24MHZ 3
-#define CLK_FREQ_26MHZ 4
-#define CLK_FREQ_38_4MHZ 5
-#define CLK_FREQ_52MHZ 6
-NXP_SYS_CLK_FREQ_SEL=0x02
-
-###############################################################################
-# The timeout value to be used for clock request acknowledgment
-# min value = 0x01 to max = 0x06
-NXP_SYS_CLOCK_TO_CFG=0x06
-
-###############################################################################
-# NXP proprietary settings
-NXP_ACT_PROP_EXTN={2F, 02, 00}
-
-###############################################################################
-# NFC forum profile settings
-NXP_NFC_PROFILE_EXTN={20, 02, 05, 01, A0, 44, 01, 00}
-
-###############################################################################
-# NFCC Configuration Control
-# Allow NFCC to manage RF Config 0x01
-# Don't allow NFCC to manage RF Config 0x00
-NXP_NFC_MERGE_RF_PARAMS={20, 02, 04, 01, 85, 01, 01}
-
-###############################################################################
-# Standby enable settings
-#NXP_CORE_STANDBY={2F, 00, 01, 01}
-
-###############################################################################
-# NXP TVDD configurations settings
-# Allow NFCC to configure External TVDD, two configurations (1 and 2) supported,
-# out of them only one can be configured at a time.
-NXP_EXT_TVDD_CFG=0x02
-
-###############################################################################
-#config1:SLALM, 3.3V for both RM and CM
-NXP_EXT_TVDD_CFG_1={20, 02, 0F, 01, A0, 0E, 0B, 31, 01, 01, 31, 00, 00, 00, 01, 00, D0, 0C}
-
-###############################################################################
-#config2: use DCDC in CE, use Tx_Pwr_Req, set CFG2 mode, SLALM,
-#monitoring 5V from DCDC, 3.3V for both RM and CM, DCDCWaitTime=4.2ms
-NXP_EXT_TVDD_CFG_2={20, 02, 0F, 01, A0, 0E, 0B, 11, 01, C2, B2, 00, B2, 1E, 1F, 00, D0, 0C}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_1={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_2={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_3={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_4={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_5={
-#}
-
-###############################################################################
-# NXP RF configuration ALM/PLM settings
-# This section needs to be updated with the correct values based on the platform
-#NXP_RF_CONF_BLK_6={
-#}
-
-###############################################################################
-# Set configuration optimization decision setting
-# Enable = 0x01
-# Disable = 0x00
-NXP_SET_CONFIG_ALWAYS=0x00
-
-###############################################################################
-# Core configuration extensions
-# It includes
-# Wired mode settings A0ED, A0EE
-# Tag Detector A040, A041, A043
-# Low Power mode A007
-# Clock settings A002, A003
-# PbF settings A008
-# Clock timeout settings A004
-# eSE (SVDD) PWR REQ settings A0F2
-# Window size A0D8
-# DWP Speed A0D5
-# How eSE connected to PN553 A012
-# UICC2 bit rate A0D1
-# SWP1A interface A0D4
-# DWP intf behavior config, SVDD Load activated by default if set to 0x31 A037
-NXP_CORE_CONF_EXTN={20, 02, 29, 0A,
- A0, EC, 01, 01,
- A0, ED, 01, 01,
- A0, 5E, 01, 01,
- A0, 12, 01, 02,
- A0, 40, 01, 01,
- A0, D1, 01, 02,
- A0, D4, 01, 01,
- A0, 37, 01, 35,
- A0, D8, 01, 02,
- A0, D5, 01, 0A
- }
-# A0, F2, 01, 01,
-# A0, 40, 01, 01,
-# A0, 41, 01, 02,
-# A0, 43, 01, 04,
-# A0, 02, 01, 01,
-# A0, 03, 01, 11,
-# A0, 07, 01, 03,
-# A0, 08, 01, 01
-# }
-
-###############################################################################
-# Core configuration rf field filter settings to enable set to 01 to disable set
-# to 00 last bit
-NXP_CORE_RF_FIELD={ 20, 02, 05, 01, A0, 62, 01, 00 }
-
-###############################################################################
-# To enable i2c fragmentation set i2c fragmentation enable 0x01 to disable set
-# to 0x00
-NXP_I2C_FRAGMENTATION_ENABLED=0x00
-
-###############################################################################
-# Core configuration settings
-NXP_CORE_CONF={ 20, 02, 31, 0F,
- 85, 01, 01,
- 28, 01, 00,
- 21, 01, 00,
- 30, 01, 08,
- 31, 01, 03,
- 32, 01, 60,
- 38, 01, 01,
- 33, 04, 01, 02, 03, 04,
- 54, 01, 06,
- 50, 01, 02,
- 5B, 01, 00,
- 80, 01, 01,
- 81, 01, 01,
- 82, 01, 0E,
- 18, 01, 01
- }
-
-###############################################################################
-# Mifare Classic Key settings
-#NXP_CORE_MFCKEY_SETTING={20, 02, 25,04, A0, 51, 06, A0, A1, A2, A3, A4, A5,
-# A0, 52, 06, D3, F7, D3, F7, D3, F7,
-# A0, 53, 06, FF, FF, FF, FF, FF, FF,
-# A0, 54, 06, 00, 00, 00, 00, 00, 00}
-
-###############################################################################
-# Default SE Options
-# No secure element 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x04
-NXP_DEFAULT_SE=0x07
-
-###############################################################################
-#Enable SWP full power mode when phone is power off
-NXP_SWP_FULL_PWR_ON=0x00
-
-###############################################################################
-#### Select the CHIP ####
-#PN547C2 0x01
-#PN65T 0x02
-#PN548AD 0x03
-#PN66T 0x04
-#PN551 0x05
-#PN67T 0x06
-#PN553 0x07
-#PN80T 0x08
-NXP_NFC_CHIP=0x08
-
-###############################################################################
-# CE when Screen state is locked
-# This setting is for DEFAULT_AID_ROUTE,
-# DEFAULT_DESFIRE_ROUTE and DEFAULT_MIFARE_CLT_ROUTE
-# Disable 0x00
-# Enable 0x01
-NXP_CE_ROUTE_STRICT_DISABLE=0x01
-
-###############################################################################
-#Timeout in secs to get NFCEE Discover notification
-NXP_DEFAULT_NFCEE_DISC_TIMEOUT=20
-
-###############################################################################
-NXP_DEFAULT_NFCEE_TIMEOUT=20
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_START_TIMEOUT=0x0A
-
-###############################################################################
-#Timeout in secs
-NXP_SWP_RD_TAG_OP_TIMEOUT=0x01
-
-###############################################################################
-#Set the default AID route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_AID_ROUTE=0x00
-
-###############################################################################
-#Set the Mifare Desfire route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_DESFIRE_ROUTE=0x02
-
-###############################################################################
-#Set the Mifare CLT route Location :
-#This settings will be used when application does not set this parameter
-# host 0x00
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_MIFARE_CLT_ROUTE=0x02
-
-###############################################################################
-#Set the Felica CLT route Location :
-#This settings will be used when application does not set this parameter
-# eSE 0x01
-# UICC 0x02
-# UICC2 0x03
-DEFAULT_FELICA_CLT_ROUTE=0x01
-
-###############################################################################
-#Set the default AID Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_AID_PWR_STATE=0x19
-
-###############################################################################
-#Set the Mifare Desfire Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_DESFIRE_PWR_STATE=0x1B
-
-###############################################################################
-#Set the Mifare CLT Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_MIFARE_CLT_PWR_STATE=0x1B
-
-###############################################################################
-#Set the Felica CLT Power state :
-#This settings will be used when application does not set this parameter
-# bit pos 0 = Switch On
-# bit pos 1 = Switch Off
-# bit pos 2 = Battery Off
-# bit pos 3 = Screen Lock
-# bit pos 4 = Screen Off
-DEFAULT_FELICA_CLT_PWR_STATE=0x1B
-
-###############################################################################
-# AID Matching platform options
-# AID_MATCHING_L 0x01
-# AID_MATCHING_K 0x02
-AID_MATCHING_PLATFORM=0x01
-
-###############################################################################
-# P61 interface options
-# NFC 0x01
-# SPI 0x02
-NXP_P61_LS_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-# P61 LTSM interface options
-# NFC 0x01
-# SPI 0x02
-NXP_P61_LTSM_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-#CHINA_TIANJIN_RF_SETTING
-#Enable 0x01
-#Disable 0x00
-NXP_CHINA_TIANJIN_RF_ENABLED=0x01
-
-###############################################################################
-#SWP_SWITCH_TIMEOUT_SETTING
-# Allowed range of swp timeout setting is 0x00 to 0x3C [0 - 60].
-# Timeout in milliseconds, for example
-# No Timeout 0x00
-# 10 millisecond timeout 0x0A
-NXP_SWP_SWITCH_TIMEOUT=0x0A
-
-###############################################################################
-# P61 interface options for JCOP Download
-# NFC 0x01
-# SPI 0x02
-NXP_P61_JCOP_DEFAULT_INTERFACE=0x01
-
-###############################################################################
-# P61 JCOP OS download options
-# FRAMEWORK API BY APPLICATION 0x00
-# AT BOOT_TIME 0x01
-NXP_JCOPDL_AT_BOOT_ENABLE=0x00
-
-###############################################################################
-# Loader service version
-# NFC service checks for LS version 2.0 or 2.1
-# LS2.0 0x20
-# LS2.1 0x21
-# LS2.2 0x22
-# AT NFC service intialization
-NXP_LOADER_SERVICE_VERSION=0x22
-
-###############################################################################
-#Timeout value in milliseconds for NFCC standby mode.The range is between 5000
-#msec to 20000 msec and zero is to disable.
-NXP_NFCC_STANDBY_TIMEOUT=20000
-
-###############################################################################
-#Dynamic RSSI feature enable
-# Disable 0x00
-# Enable 0x01
-NXP_AGC_DEBUG_ENABLE=0x00
-
-###############################################################################
-#Virtual Mode ESE and Wired Mode ongoing delay Wired Mode
-# For Technology routing to ESE Technology Mask = 4
-# For ISO-DEP Protocol routing to ESE Mask = 2
-# It can also take TECH|PROTO = 6
-# To ignore the delay set mask to = 0
-NXP_ESE_WIRED_PRT_MASK=0x00
-
-###############################################################################
-#Virtual Mode UICC and Wired Mode ongoing delay Wired Mode
-#For Technology routing to UICC Technology Mask = 4
-#For ISO-DEP Protocol routing to UICC set Mask = 2
-#For Select AID Routing to UICC set Mask = 1
-#It can also take values TECH|PROTO|SELECT_AID = 7 , 6 , 5 ,3 .To ignore delay
-#set mask = 0
-NXP_UICC_WIRED_PRT_MASK=0x00
-
-################################################################################
-#RF field true delay Wired Mode
-# delay wired mode = 1
-# allow wired mode = 0
-NXP_WIRED_MODE_RF_FIELD_ENABLE=0x00
-
-###############################################################################
-#Config to allow adding aids
-#NFC on/off is required after this config
-#1 = enabling adding aid to NFCC routing table.
-#0 = disabling adding aid to NFCC routing table.
-NXP_ENABLE_ADD_AID=0x01
-
-###############################################################################
-# JCOP-3.3 continuous process timeout in msec and value should be in Hexadecimal
-# JCOP CP TIMEOUT
-NXP_CP_TIMEOUT={00, 77}
-
-###############################################################################
-# Enable/Disable checking default proto SE Id
-# Disable 0x00
-# Enable 0x01
-NXP_CHECK_DEFAULT_PROTO_SE_ID=0x01
-
-###############################################################################
-#NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE
-#Enable/Disable block number checks for china transit use case
-#Enable 0x01
-#Disable 0x00
-NXP_CN_TRANSIT_BLK_NUM_CHECK_ENABLE=0x01
-
-###############################################################################
-# Wired mode resume timeout vaule in wired mode resume feature enable
-# DWP resume time out in ms( 4 bytes hex value and LSB first)
-#example 1000 = 0x03E8
-#exmaple 2000 = 0x07D0
-#example 500 = 0x01F4
-NXP_WIREDMODE_RESUME_TIMEOUT={E8,03,00,00}
-###############################################################################
-# Power to eSE is controlled by DH or PMU depending on following configurations
-#define DH_PWR_CONTROL 1
-#define PMU_PWR_CONTROL 2
-NXP_ESE_POWER_DH_CONTROL=1
-
-###############################################################################
-# Timeout value in milliseconds for wired mode resume after RF field event timeout
-NXP_NFCC_RF_FIELD_EVENT_TIMEOUT=3000
-
-###############################################################################
-# NXP PMU Support configuration is sent if PMU_PWR_CONTROL is configured
-# External PMU available in phone ON and phone OFF case if NXP_ESE_POWER_EXT_PMU=1
-# External PMU available only in phone ON case if NXP_ESE_POWER_EXT_PMU=2
-NXP_ESE_POWER_EXT_PMU=2
-
-###############################################################################
-# Whether to allow wired mode in desfire and mifare CLT
-# Disable 0x00
-# Enable 0x01
-NXP_ALLOW_WIRED_IN_MIFARE_DESFIRE_CLT=0x00
-
-###############################################################################
-# Restrict routing to first matched rule only.
-# Blacklist enable 0x01
-# Blacklist disable 0x00
-NXP_PROP_BLACKLIST_ROUTING=0x00
-
-###############################################################################
-# Send DWP interface reset command as part of SE open
-# Disable 0x00
-# Enable 0x01
-NXP_DWP_INTF_RESET_ENABLE=0x01
-
-###############################################################################
-# Timeout value in milliseconds for JCOP OS download to complete
-OS_DOWNLOAD_TIMEOUT_VALUE=60000
-
-###############################################################################
-# Timeout value in milliseconds to send response for Felica command received
-NXP_HCEF_CMD_RSP_TIMEOUT_VALUE=5000
-
-###############################################################################
\ No newline at end of file
diff --git a/halimpl/pn54x/log/phNxpLog.c b/halimpl/pn54x/log/phNxpLog.c
deleted file mode 100644
index 49d6911..0000000
--- a/halimpl/pn54x/log/phNxpLog.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-#include <stdio.h>
-#include <string.h>
-#if !defined(NXPLOG__H_INCLUDED)
-#include "phNxpConfig.h"
-#include "phNxpLog.h"
-#endif
-#include <cutils/properties.h>
-
-const char* NXPLOG_ITEM_EXTNS = "NxpExtns";
-const char* NXPLOG_ITEM_NCIHAL = "NxpHal";
-const char* NXPLOG_ITEM_NCIX = "NxpNciX";
-const char* NXPLOG_ITEM_NCIR = "NxpNciR";
-const char* NXPLOG_ITEM_FWDNLD = "NxpFwDnld";
-const char* NXPLOG_ITEM_TML = "NxpTml";
-
-#ifdef NXP_HCI_REQ
-const char* NXPLOG_ITEM_HCPX = "NxpHcpX";
-const char* NXPLOG_ITEM_HCPR = "NxpHcpR";
-#endif /*NXP_HCI_REQ*/
-
-/* global log level structure */
-nci_log_level_t gLog_level;
-
-/*******************************************************************************
- *
- * Function phNxpLog_SetGlobalLogLevel
- *
- * Description Sets the global log level for all modules.
- * This value is set by Android property
- *nfc.nxp_log_level_global.
- * If value can be overridden by module log level.
- *
- * Returns The value of global log level
- *
- ******************************************************************************/
-static uint8_t phNxpLog_SetGlobalLogLevel(void) {
- uint8_t level = NXPLOG_DEFAULT_LOGLEVEL;
- unsigned long num = 0;
- char valueStr[PROPERTY_VALUE_MAX] = {0};
-
- int len = property_get(PROP_NAME_NXPLOG_GLOBAL_LOGLEVEL, valueStr, "");
- if (len > 0) {
- /* let Android property override .conf variable */
- sscanf(valueStr, "%lu", &num);
- level = (unsigned char)num;
- }
- memset(&gLog_level, level, sizeof(nci_log_level_t));
- return level;
-}
-
-/*******************************************************************************
- *
- * Function phNxpLog_SetHALLogLevel
- *
- * Description Sets the HAL layer log level.
- *
- * Returns void
- *
- ******************************************************************************/
-static void phNxpLog_SetHALLogLevel(uint8_t level) {
- unsigned long num = 0;
- int len;
- char valueStr[PROPERTY_VALUE_MAX] = {0};
-
- if (GetNxpNumValue(NAME_NXPLOG_HAL_LOGLEVEL, &num, sizeof(num))) {
- gLog_level.hal_log_level =
- (level > (unsigned char)num) ? level : (unsigned char)num;
- ;
- }
-
- len = property_get(PROP_NAME_NXPLOG_HAL_LOGLEVEL, valueStr, "");
- if (len > 0) {
- /* let Android property override .conf variable */
- sscanf(valueStr, "%lu", &num);
- gLog_level.hal_log_level = (unsigned char)num;
- }
-}
-
-/*******************************************************************************
- *
- * Function phNxpLog_SetExtnsLogLevel
- *
- * Description Sets the Extensions layer log level.
- *
- * Returns void
- *
- ******************************************************************************/
-static void phNxpLog_SetExtnsLogLevel(uint8_t level) {
- unsigned long num = 0;
- int len;
- char valueStr[PROPERTY_VALUE_MAX] = {0};
- if (GetNxpNumValue(NAME_NXPLOG_EXTNS_LOGLEVEL, &num, sizeof(num))) {
- gLog_level.extns_log_level =
- (level > (unsigned char)num) ? level : (unsigned char)num;
- ;
- }
-
- len = property_get(PROP_NAME_NXPLOG_EXTNS_LOGLEVEL, valueStr, "");
- if (len > 0) {
- /* let Android property override .conf variable */
- sscanf(valueStr, "%lu", &num);
- gLog_level.extns_log_level = (unsigned char)num;
- }
-}
-
-/*******************************************************************************
- *
- * Function phNxpLog_SetTmlLogLevel
- *
- * Description Sets the Tml layer log level.
- *
- * Returns void
- *
- ******************************************************************************/
-static void phNxpLog_SetTmlLogLevel(uint8_t level) {
- unsigned long num = 0;
- int len;
- char valueStr[PROPERTY_VALUE_MAX] = {0};
- if (GetNxpNumValue(NAME_NXPLOG_TML_LOGLEVEL, &num, sizeof(num))) {
- gLog_level.tml_log_level =
- (level > (unsigned char)num) ? level : (unsigned char)num;
- ;
- }
-
- len = property_get(PROP_NAME_NXPLOG_TML_LOGLEVEL, valueStr, "");
- if (len > 0) {
- /* let Android property override .conf variable */
- sscanf(valueStr, "%lu", &num);
- gLog_level.tml_log_level = (unsigned char)num;
- }
-}
-
-/*******************************************************************************
- *
- * Function phNxpLog_SetDnldLogLevel
- *
- * Description Sets the FW download layer log level.
- *
- * Returns void
- *
- ******************************************************************************/
-static void phNxpLog_SetDnldLogLevel(uint8_t level) {
- unsigned long num = 0;
- int len;
- char valueStr[PROPERTY_VALUE_MAX] = {0};
- if (GetNxpNumValue(NAME_NXPLOG_FWDNLD_LOGLEVEL, &num, sizeof(num))) {
- gLog_level.dnld_log_level =
- (level > (unsigned char)num) ? level : (unsigned char)num;
- ;
- }
-
- len = property_get(PROP_NAME_NXPLOG_FWDNLD_LOGLEVEL, valueStr, "");
- if (len > 0) {
- /* let Android property override .conf variable */
- sscanf(valueStr, "%lu", &num);
- gLog_level.dnld_log_level = (unsigned char)num;
- }
-}
-
-/*******************************************************************************
- *
- * Function phNxpLog_SetNciTxLogLevel
- *
- * Description Sets the NCI transaction layer log level.
- *
- * Returns void
- *
- ******************************************************************************/
-static void phNxpLog_SetNciTxLogLevel(uint8_t level) {
- unsigned long num = 0;
- int len;
- char valueStr[PROPERTY_VALUE_MAX] = {0};
- if (GetNxpNumValue(NAME_NXPLOG_NCIX_LOGLEVEL, &num, sizeof(num))) {
- gLog_level.ncix_log_level =
- (level > (unsigned char)num) ? level : (unsigned char)num;
- }
- if (GetNxpNumValue(NAME_NXPLOG_NCIR_LOGLEVEL, &num, sizeof(num))) {
- gLog_level.ncir_log_level =
- (level > (unsigned char)num) ? level : (unsigned char)num;
- ;
- }
-
- len = property_get(PROP_NAME_NXPLOG_NCI_LOGLEVEL, valueStr, "");
- if (len > 0) {
- /* let Android property override .conf variable */
- sscanf(valueStr, "%lu", &num);
- gLog_level.ncix_log_level = (unsigned char)num;
- gLog_level.ncir_log_level = (unsigned char)num;
- }
-}
-
-/******************************************************************************
- * Function phNxpLog_InitializeLogLevel
- *
- * Description Initialize and get log level of module from libnfc-nxp.conf
- *or
- * Android runtime properties.
- * The Android property nfc.nxp_global_log_level is to
- * define log level for all modules. Modules log level will
- *overwide global level.
- * The Android property will overwide the level
- * in libnfc-nxp.conf
- *
- * Android property names:
- * nfc.nxp_log_level_global * defines log level for all
- *modules
- * nfc.nxp_log_level_extns * extensions module log
- * nfc.nxp_log_level_hal * Hal module log
- * nfc.nxp_log_level_dnld * firmware download module
- *log
- * nfc.nxp_log_level_tml * TML module log
- * nfc.nxp_log_level_nci * NCI transaction log
- *
- * Log Level values:
- * NXPLOG_LOG_SILENT_LOGLEVEL 0 * No trace to show
- * NXPLOG_LOG_ERROR_LOGLEVEL 1 * Show Error trace
- *only
- * NXPLOG_LOG_WARN_LOGLEVEL 2 * Show Warning
- *trace and Error trace
- * NXPLOG_LOG_DEBUG_LOGLEVEL 3 * Show all traces
- *
- * Returns void
- *
- ******************************************************************************/
-void phNxpLog_InitializeLogLevel(void) {
- uint8_t level = phNxpLog_SetGlobalLogLevel();
- phNxpLog_SetHALLogLevel(level);
- phNxpLog_SetExtnsLogLevel(level);
- phNxpLog_SetTmlLogLevel(level);
- phNxpLog_SetDnldLogLevel(level);
- phNxpLog_SetNciTxLogLevel(level);
-
- ALOGD(
- "%s: global =%u, Fwdnld =%u, extns =%u, \
- hal =%u, tml =%u, ncir =%u, \
- ncix =%u",
- __func__, gLog_level.global_log_level, gLog_level.dnld_log_level,
- gLog_level.extns_log_level, gLog_level.hal_log_level,
- gLog_level.tml_log_level, gLog_level.ncir_log_level,
- gLog_level.ncix_log_level);
-}
diff --git a/halimpl/pn54x/log/phNxpLog.h b/halimpl/pn54x/log/phNxpLog.h
deleted file mode 100644
index 5037a4c..0000000
--- a/halimpl/pn54x/log/phNxpLog.h
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-#if !defined(NXPLOG__H_INCLUDED)
-#define NXPLOG__H_INCLUDED
-
-#include <log/log.h>
-
-typedef struct nci_log_level {
- uint8_t global_log_level;
- uint8_t extns_log_level;
- uint8_t hal_log_level;
- uint8_t dnld_log_level;
- uint8_t tml_log_level;
- uint8_t ncix_log_level;
- uint8_t ncir_log_level;
-} nci_log_level_t;
-
-/* global log level Ref */
-extern nci_log_level_t gLog_level;
-
-/* define log module included when compile */
-#define ENABLE_EXTNS_TRACES TRUE
-#define ENABLE_HAL_TRACES TRUE
-#define ENABLE_TML_TRACES TRUE
-#define ENABLE_FWDNLD_TRACES TRUE
-#define ENABLE_NCIX_TRACES TRUE
-#define ENABLE_NCIR_TRACES TRUE
-
-#define ENABLE_HCPX_TRACES FALSE
-#define ENABLE_HCPR_TRACES FALSE
-
-/* ####################### Set the log module name in .conf file
- * ########################## */
-#define NAME_NXPLOG_EXTNS_LOGLEVEL "NXPLOG_EXTNS_LOGLEVEL"
-#define NAME_NXPLOG_HAL_LOGLEVEL "NXPLOG_NCIHAL_LOGLEVEL"
-#define NAME_NXPLOG_NCIX_LOGLEVEL "NXPLOG_NCIX_LOGLEVEL"
-#define NAME_NXPLOG_NCIR_LOGLEVEL "NXPLOG_NCIR_LOGLEVEL"
-#define NAME_NXPLOG_FWDNLD_LOGLEVEL "NXPLOG_FWDNLD_LOGLEVEL"
-#define NAME_NXPLOG_TML_LOGLEVEL "NXPLOG_TML_LOGLEVEL"
-
-/* ####################### Set the log module name by Android property
- * ########################## */
-#define PROP_NAME_NXPLOG_GLOBAL_LOGLEVEL "nfc.nxp_log_level_global"
-#define PROP_NAME_NXPLOG_EXTNS_LOGLEVEL "nfc.nxp_log_level_extns"
-#define PROP_NAME_NXPLOG_HAL_LOGLEVEL "nfc.nxp_log_level_hal"
-#define PROP_NAME_NXPLOG_NCI_LOGLEVEL "nfc.nxp_log_level_nci"
-#define PROP_NAME_NXPLOG_FWDNLD_LOGLEVEL "nfc.nxp_log_level_dnld"
-#define PROP_NAME_NXPLOG_TML_LOGLEVEL "nfc.nxp_log_level_tml"
-
-/* ####################### Set the logging level for EVERY COMPONENT here
- * ######################## :START: */
-#define NXPLOG_LOG_SILENT_LOGLEVEL 0x00
-#define NXPLOG_LOG_ERROR_LOGLEVEL 0x01
-#define NXPLOG_LOG_WARN_LOGLEVEL 0x02
-#define NXPLOG_LOG_DEBUG_LOGLEVEL 0x03
-/* ####################### Set the default logging level for EVERY COMPONENT
- * here ########################## :END: */
-
-/* The Default log level for all the modules. */
-#define NXPLOG_DEFAULT_LOGLEVEL NXPLOG_LOG_ERROR_LOGLEVEL
-
-/* ################################################################################################################
- */
-/* ############################################### Component Names
- * ################################################ */
-/* ################################################################################################################
- */
-
-extern const char* NXPLOG_ITEM_EXTNS; /* Android logging tag for NxpExtns */
-extern const char* NXPLOG_ITEM_NCIHAL; /* Android logging tag for NxpNciHal */
-extern const char* NXPLOG_ITEM_NCIX; /* Android logging tag for NxpNciX */
-extern const char* NXPLOG_ITEM_NCIR; /* Android logging tag for NxpNciR */
-extern const char* NXPLOG_ITEM_FWDNLD; /* Android logging tag for NxpFwDnld */
-extern const char* NXPLOG_ITEM_TML; /* Android logging tag for NxpTml */
-
-#ifdef NXP_HCI_REQ
-extern const char* NXPLOG_ITEM_HCPX; /* Android logging tag for NxpHcpX */
-extern const char* NXPLOG_ITEM_HCPR; /* Android logging tag for NxpHcpR */
-#endif /*NXP_HCI_REQ*/
-
-/* ######################################## Defines used for Logging data
- * ######################################### */
-#ifdef NXP_VRBS_REQ
-#define NXPLOG_FUNC_ENTRY(COMP) \
- LOG_PRI(ANDROID_LOG_VERBOSE, (COMP), "+:%s", (__func__))
-#define NXPLOG_FUNC_EXIT(COMP) \
- LOG_PRI(ANDROID_LOG_VERBOSE, (COMP), "-:%s", (__func__))
-#endif /*NXP_VRBS_REQ*/
-
-/* ################################################################################################################
- */
-/* ######################################## Logging APIs of actual modules
- * ######################################## */
-/* ################################################################################################################
- */
-/* Logging APIs used by NxpExtns module */
-#if (ENABLE_EXTNS_TRACES == TRUE)
-#define NXPLOG_EXTNS_D(...) \
- { \
- if (gLog_level.extns_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_EXTNS, __VA_ARGS__); \
- }
-#define NXPLOG_EXTNS_W(...) \
- { \
- if (gLog_level.extns_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_EXTNS, __VA_ARGS__); \
- }
-#define NXPLOG_EXTNS_E(...) \
- { \
- if (gLog_level.extns_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_EXTNS, __VA_ARGS__); \
- }
-#else
-#define NXPLOG_EXTNS_D(...)
-#define NXPLOG_EXTNS_W(...)
-#define NXPLOG_EXTNS_E(...)
-#endif /* Logging APIs used by NxpExtns module */
-
-/* Logging APIs used by NxpNciHal module */
-#if (ENABLE_HAL_TRACES == TRUE)
-#define NXPLOG_NCIHAL_D(...) \
- { \
- if (gLog_level.hal_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIHAL, __VA_ARGS__); \
- }
-#define NXPLOG_NCIHAL_W(...) \
- { \
- if (gLog_level.hal_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_NCIHAL, __VA_ARGS__); \
- }
-#define NXPLOG_NCIHAL_E(...) \
- { \
- if (gLog_level.hal_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIHAL, __VA_ARGS__); \
- }
-#else
-#define NXPLOG_NCIHAL_D(...)
-#define NXPLOG_NCIHAL_W(...)
-#define NXPLOG_NCIHAL_E(...)
-#endif /* Logging APIs used by HAL module */
-
-/* Logging APIs used by NxpNciX module */
-#if (ENABLE_NCIX_TRACES == TRUE)
-#define NXPLOG_NCIX_D(...) \
- { \
- if (gLog_level.ncix_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIX, __VA_ARGS__); \
- }
-#define NXPLOG_NCIX_W(...) \
- { \
- if (gLog_level.ncix_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_NCIX, __VA_ARGS__); \
- }
-#define NXPLOG_NCIX_E(...) \
- { \
- if (gLog_level.ncix_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIX, __VA_ARGS__); \
- }
-#else
-#define NXPLOG_NCIX_D(...)
-#define NXPLOG_NCIX_W(...)
-#define NXPLOG_NCIX_E(...)
-#endif /* Logging APIs used by NCIx module */
-
-/* Logging APIs used by NxpNciR module */
-#if (ENABLE_NCIR_TRACES == TRUE)
-#define NXPLOG_NCIR_D(...) \
- { \
- if (gLog_level.ncir_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIR, __VA_ARGS__); \
- }
-#define NXPLOG_NCIR_W(...) \
- { \
- if (gLog_level.ncir_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_NCIR, __VA_ARGS__); \
- }
-#define NXPLOG_NCIR_E(...) \
- { \
- if (gLog_level.ncir_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIR, __VA_ARGS__); \
- }
-#else
-#define NXPLOG_NCIR_D(...)
-#define NXPLOG_NCIR_W(...)
-#define NXPLOG_NCIR_E(...)
-#endif /* Logging APIs used by NCIR module */
-
-/* Logging APIs used by NxpFwDnld module */
-#if (ENABLE_FWDNLD_TRACES == TRUE)
-#define NXPLOG_FWDNLD_D(...) \
- { \
- if (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
- }
-#define NXPLOG_FWDNLD_W(...) \
- { \
- if (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
- }
-#define NXPLOG_FWDNLD_E(...) \
- { \
- if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
- }
-#else
-#define NXPLOG_FWDNLD_D(...)
-#define NXPLOG_FWDNLD_W(...)
-#define NXPLOG_FWDNLD_E(...)
-#endif /* Logging APIs used by NxpFwDnld module */
-
-/* Logging APIs used by NxpTml module */
-#if (ENABLE_TML_TRACES == TRUE)
-#define NXPLOG_TML_D(...) \
- { \
- if (gLog_level.tml_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_TML, __VA_ARGS__); \
- }
-#define NXPLOG_TML_W(...) \
- { \
- if (gLog_level.tml_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_TML, __VA_ARGS__); \
- }
-#define NXPLOG_TML_E(...) \
- { \
- if (gLog_level.tml_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_TML, __VA_ARGS__); \
- }
-#else
-#define NXPLOG_TML_D(...)
-#define NXPLOG_TML_W(...)
-#define NXPLOG_TML_E(...)
-#endif /* Logging APIs used by NxpTml module */
-
-#ifdef NXP_HCI_REQ
-/* Logging APIs used by NxpHcpX module */
-#if (ENABLE_HCPX_TRACES == TRUE)
-#define NXPLOG_HCPX_D(...) \
- { \
- if (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
- }
-#define NXPLOG_HCPX_W(...) \
- { \
- if (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
- }
-#define NXPLOG_HCPX_E(...) \
- { \
- if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
- }
-#else
-#define NXPLOG_HCPX_D(...)
-#define NXPLOG_HCPX_W(...)
-#define NXPLOG_HCPX_E(...)
-#endif /* Logging APIs used by NxpHcpX module */
-
-/* Logging APIs used by NxpHcpR module */
-#if (ENABLE_HCPR_TRACES == TRUE)
-#define NXPLOG_HCPR_D(...) \
- { \
- if (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
- }
-#define NXPLOG_HCPR_W(...) \
- { \
- if (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
- }
-#define NXPLOG_HCPR_E(...) \
- { \
- if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \
- LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
- }
-#else
-#define NXPLOG_HCPR_D(...)
-#define NXPLOG_HCPR_W(...)
-#define NXPLOG_HCPR_E(...)
-#endif /* Logging APIs used by NxpHcpR module */
-#endif /* NXP_HCI_REQ */
-
-#ifdef NXP_VRBS_REQ
-#if (ENABLE_EXTNS_TRACES == TRUE)
-#define NXPLOG_EXTNS_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_EXTNS)
-#define NXPLOG_EXTNS_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_EXTNS)
-#else
-#define NXPLOG_EXTNS_ENTRY()
-#define NXPLOG_EXTNS_EXIT()
-#endif
-
-#if (ENABLE_HAL_TRACES == TRUE)
-#define NXPLOG_NCIHAL_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_NCIHAL)
-#define NXPLOG_NCIHAL_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_NCIHAL)
-#else
-#define NXPLOG_NCIHAL_ENTRY()
-#define NXPLOG_NCIHAL_EXIT()
-#endif
-
-#if (ENABLE_NCIX_TRACES == TRUE)
-#define NXPLOG_NCIX_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_NCIX)
-#define NXPLOG_NCIX_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_NCIX)
-#else
-#define NXPLOG_NCIX_ENTRY()
-#define NXPLOG_NCIX_EXIT()
-#endif
-
-#if (ENABLE_NCIR_TRACES == TRUE)
-#define NXPLOG_NCIR_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_NCIR)
-#define NXPLOG_NCIR_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_NCIR)
-#else
-#define NXPLOG_NCIR_ENTRY()
-#define NXPLOG_NCIR_EXIT()
-#endif
-
-#ifdef NXP_HCI_REQ
-
-#if (ENABLE_HCPX_TRACES == TRUE)
-#define NXPLOG_HCPX_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_HCPX)
-#define NXPLOG_HCPX_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_HCPX)
-#else
-#define NXPLOG_HCPX_ENTRY()
-#define NXPLOG_HCPX_EXIT()
-#endif
-
-#if (ENABLE_HCPR_TRACES == TRUE)
-#define NXPLOG_HCPR_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_HCPR)
-#define NXPLOG_HCPR_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_HCPR)
-#else
-#define NXPLOG_HCPR_ENTRY()
-#define NXPLOG_HCPR_EXIT()
-#endif
-#endif /* NXP_HCI_REQ */
-
-#endif /* NXP_VRBS_REQ */
-
-void phNxpLog_InitializeLogLevel(void);
-
-#endif /* NXPLOG__H_INCLUDED */
diff --git a/halimpl/pn54x/nfc_nci.c b/halimpl/pn54x/nfc_nci.c
deleted file mode 100644
index 611c83c..0000000
--- a/halimpl/pn54x/nfc_nci.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (C) 2012-2014 NXP Semiconductors
- *
- * 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.
- */
-
-#define LOG_TAG "NxpNfcNciHal"
-
-#include <errno.h>
-#include <hardware/hardware.h>
-#include <hardware/nfc.h>
-#include <log/log.h>
-#include <phNxpNciHal_Adaptation.h>
-#include <stdlib.h>
-#include <string.h>
-
-/*****************************************************************************
- * NXP NCI HAL Function implementations.
- *****************************************************************************/
-
-/*******************************************************************************
-**
-** Function hal_open
-**
-** Description It opens and initialzes the physical connection with NFCC.
-**
-** Returns 0 if successful
-**
-*******************************************************************************/
-static int hal_open(const struct nfc_nci_device* p_dev,
- nfc_stack_callback_t p_hal_cback,
- nfc_stack_data_callback_t* p_hal_data_callback) {
- int retval = 0;
-
- pn547_dev_t* dev = (pn547_dev_t*)p_dev;
- retval = phNxpNciHal_open(p_hal_cback, p_hal_data_callback);
-
- return retval;
-}
-
-/*******************************************************************************
-**
-** Function hal_write
-**
-** Description Write the data to NFCC.
-**
-** Returns Number of bytes successfully written to NFCC.
-**
-*******************************************************************************/
-static int hal_write(const struct nfc_nci_device* p_dev, uint16_t data_len,
- const uint8_t* p_data) {
- int retval = 0;
- pn547_dev_t* dev = (pn547_dev_t*)p_dev;
-
- retval = phNxpNciHal_write(data_len, p_data);
- return retval;
-}
-
-/*******************************************************************************
-**
-** Function hal_core_initialized
-**
-** Description Notify NFCC after successful initialization of NFCC.
-** All proprietary settings can be done here.
-**
-** Returns 0 if successful
-**
-*******************************************************************************/
-static int hal_core_initialized(const struct nfc_nci_device* p_dev,
- uint8_t* p_core_init_rsp_params) {
- int retval = 0;
- pn547_dev_t* dev = (pn547_dev_t*)p_dev;
-
- retval = phNxpNciHal_core_initialized(p_core_init_rsp_params);
- return retval;
-}
-
-/*******************************************************************************
-**
-** Function hal_pre_discover
-**
-** Description Notify NFCC before start discovery.
-**
-** Returns 0 if successful
-**
-*******************************************************************************/
-static int hal_pre_discover(const struct nfc_nci_device* p_dev) {
- int retval = 0;
- pn547_dev_t* dev = (pn547_dev_t*)p_dev;
-
- retval = phNxpNciHal_pre_discover();
- return retval;
-}
-
-/*******************************************************************************
-**
-** Function hal_close
-**
-** Description Close the NFCC interface and free all resources.
-**
-** Returns 0 if successful
-**
-*******************************************************************************/
-static int hal_close(const struct nfc_nci_device* p_dev) {
- int retval = 0;
- pn547_dev_t* dev = (pn547_dev_t*)p_dev;
-
- retval = phNxpNciHal_close();
- return retval;
-}
-
-/*******************************************************************************
-**
-** Function hal_control_granted
-**
-** Description Notify NFCC that control is granted to HAL.
-**
-** Returns 0 if successful
-**
-*******************************************************************************/
-static int hal_control_granted(const struct nfc_nci_device* p_dev) {
- int retval = 0;
- pn547_dev_t* dev = (pn547_dev_t*)p_dev;
-
- retval = phNxpNciHal_control_granted();
- return retval;
-}
-
-/*******************************************************************************
-**
-** Function hal_power_cycle
-**
-** Description Notify power cycling has performed.
-**
-** Returns 0 if successful
-**
-*******************************************************************************/
-static int hal_power_cycle(const struct nfc_nci_device* p_dev) {
- int retval = 0;
- pn547_dev_t* dev = (pn547_dev_t*)p_dev;
-
- retval = phNxpNciHal_power_cycle();
- return retval;
-}
-
-/*************************************
- * Generic device handling.
- *************************************/
-
-/*******************************************************************************
-**
-** Function nfc_close
-**
-** Description Close the nfc device instance.
-**
-** Returns 0 if successful
-**
-*******************************************************************************/
-static int nfc_close(hw_device_t* dev) {
- int retval = 0;
- free(dev);
- return retval;
-}
-
-/*******************************************************************************
-**
-** Function nfc_open
-**
-** Description Open the nfc device instance.
-**
-** Returns 0 if successful
-**
-*******************************************************************************/
-static int nfc_open(const hw_module_t* module, const char* name,
- hw_device_t** device) {
- ALOGD("%s: enter; name=%s", __func__, name);
- int retval = 0; /* 0 is ok; -1 is error */
-
- if (strcmp(name, NFC_NCI_CONTROLLER) == 0) {
- pn547_dev_t* dev = calloc(1, sizeof(pn547_dev_t));
-
- /* Common hw_device_t fields */
- dev->nci_device.common.tag = HARDWARE_DEVICE_TAG;
- dev->nci_device.common.version =
- 0x00010000; /* [31:16] major, [15:0] minor */
- dev->nci_device.common.module = (struct hw_module_t*)module;
- dev->nci_device.common.close = nfc_close;
-
- /* NCI HAL method pointers */
- dev->nci_device.open = hal_open;
- dev->nci_device.write = hal_write;
- dev->nci_device.core_initialized = hal_core_initialized;
- dev->nci_device.pre_discover = hal_pre_discover;
- dev->nci_device.close = hal_close;
- dev->nci_device.control_granted = hal_control_granted;
- dev->nci_device.power_cycle = hal_power_cycle;
-
- *device = (hw_device_t*)dev;
- } else {
- retval = -EINVAL;
- }
-
- ALOGD("%s: exit %d", __func__, retval);
- return retval;
-}
-
-/* Android hardware module definition */
-static struct hw_module_methods_t nfc_module_methods = {
- .open = nfc_open,
-};
-
-/* NFC module definition */
-struct nfc_nci_module_t HAL_MODULE_INFO_SYM = {
- .common =
- {
- .tag = HARDWARE_MODULE_TAG,
- .module_api_version = 0x0100, /* [15:8] major, [7:0] minor (1.0) */
- .hal_api_version = 0x00, /* 0 is only valid value */
- .id = NFC_NCI_HARDWARE_MODULE_ID,
- .name = "NXP PN54X NFC NCI HW HAL",
- .author = "NXP Semiconductors",
- .methods = &nfc_module_methods,
- },
-};
diff --git a/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c b/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
deleted file mode 100644
index 37d6a3e..0000000
--- a/halimpl/pn54x/self-test/phNxpNciHal_SelfTest.c
+++ /dev/null
@@ -1,1847 +0,0 @@
-/*
- * Copyright (C) 2012-2014 NXP Semiconductors
- *
- * 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.
- */
-
-#ifdef NXP_HW_SELF_TEST
-
-#include <phNxpConfig.h>
-#include <phNxpLog.h>
-#include <phNxpNciHal_SelfTest.h>
-#include <phOsalNfc_Timer.h>
-#include <pthread.h>
-
-/* Timeout value to wait for response from PN54X */
-#define HAL_WRITE_RSP_TIMEOUT (2000)
-#define HAL_WRITE_MAX_RETRY (10)
-
-/******************* Structures and definitions *******************************/
-
-typedef uint8_t (*st_validator_t)(nci_data_t* exp,
- phTmlNfc_TransactInfo_t* act);
-
-phAntenna_St_Resp_t phAntenna_resp;
-
-typedef struct nci_test_data {
- nci_data_t cmd;
- nci_data_t exp_rsp;
- nci_data_t exp_ntf;
- st_validator_t rsp_validator;
- st_validator_t ntf_validator;
-
-} nci_test_data_t;
-
-/******************* Global variables *****************************************/
-
-static int thread_running = 0;
-static uint32_t timeoutTimerId = 0;
-static int hal_write_timer_fired = 0;
-
-/* TML Context */
-extern phTmlNfc_Context_t* gpphTmlNfc_Context;
-
-/* Global HAL Ref */
-extern phNxpNciHal_Control_t nxpncihal_ctrl;
-
-/* Driver parameters */
-phLibNfc_sConfig_t gDrvCfg;
-
-NFCSTATUS gtxldo_status = NFCSTATUS_FAILED;
-NFCSTATUS gagc_value_status = NFCSTATUS_FAILED;
-NFCSTATUS gagc_nfcld_status = NFCSTATUS_FAILED;
-NFCSTATUS gagc_differential_status = NFCSTATUS_FAILED;
-
-static uint8_t st_validator_testEquals(nci_data_t* exp,
- phTmlNfc_TransactInfo_t* act);
-static uint8_t st_validator_null(nci_data_t* exp, phTmlNfc_TransactInfo_t* act);
-static uint8_t st_validator_testSWP1_vltg(nci_data_t* exp,
- phTmlNfc_TransactInfo_t* act);
-static uint8_t st_validator_testAntenna_Txldo(nci_data_t* exp,
- phTmlNfc_TransactInfo_t* act);
-static uint8_t st_validator_testAntenna_AgcVal(nci_data_t* exp,
- phTmlNfc_TransactInfo_t* act);
-static uint8_t st_validator_testAntenna_AgcVal_FixedNfcLd(
- nci_data_t* exp, phTmlNfc_TransactInfo_t* act);
-static uint8_t st_validator_testAntenna_AgcVal_Differential(
- nci_data_t* exp, phTmlNfc_TransactInfo_t* act);
-
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
-NFCSTATUS phNxpNciHal_getPrbsCmd(phNxpNfc_PrbsType_t prbs_type,
- phNxpNfc_PrbsHwType_t hw_prbs_type,
- uint8_t tech, uint8_t bitrate,
- uint8_t* prbs_cmd, uint8_t prbs_cmd_len);
-#else
-NFCSTATUS phNxpNciHal_getPrbsCmd(uint8_t tech, uint8_t bitrate,
- uint8_t* prbs_cmd, uint8_t prbs_cmd_len);
-#endif
-/* Test data to validate SWP line 2*/
-static nci_test_data_t swp2_test_data[] = {
- {{
- 0x04, {0x20, 0x00, 0x01, 0x00} /* cmd */
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x11, 0x00} /* exp_rsp */
-#else
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x10, 0x00} /* exp_rsp */
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x05, {0x20, 0x01, 0x02, 0x00, 0x00} /* cmd */
-#else
- 0x03, {0x20, 0x01, 0x00}
-#endif
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x4, {0x40, 0x01, 0x19, 0x00} /* exp_rsp */
-#else
- 0x4, {0x40, 0x01, 0x17, 0x00}
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
- 0x03, {0x2F, 0x02, 0x00} /* cmd */
- },
- {
- 0x04, {0x4F, 0x02, 0x05, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
- 0x04, {0x2F, 0x3E, 0x01, 0x01} /* cmd */
- },
- {
- 0x04, {0x4F, 0x3E, 0x01, 0x00} /* exp_rsp */
- },
- {
- 0x04, {0x6F, 0x3E, 0x02, 0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_testEquals},
-
-};
-
-/* Test data to validate SWP line 1*/
-static nci_test_data_t swp1_test_data[] = {
-
- {{
- 0x04, {0x20, 0x00, 0x01, 0x00} /* cmd */
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x11, 0x00} /* exp_rsp */
-#else
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x10, 0x00} /* exp_rsp */
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x05, {0x20, 0x01, 0x02, 0x00, 0x00} /* cmd */
-#else
- 0x03, {0x20, 0x01, 0x00}
-#endif
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x4, {0x40, 0x01, 0x19, 0x00} /* exp_rsp */
-#else
- 0x4, {0x40, 0x01, 0x17, 0x00}
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
- 0x03, {0x2F, 0x02, 0x00} /* cmd */
- },
- {
- 0x04, {0x4F, 0x02, 0x05, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
- 0x04, {0x2F, 0x3E, 0x01, 0x00} /* cmd */
- },
- {
- 0x04, {0x4F, 0x3E, 0x01, 0x00} /* exp_rsp */
- },
- {
- 0x04, {0x6F, 0x3E, 0x02, 0x00} /* ext_ntf */
- },
-
- st_validator_testEquals, /* validator */
- st_validator_testSWP1_vltg},
-};
-
-static nci_test_data_t prbs_test_data[] = {
- {{
- 0x04, {0x20, 0x00, 0x01, 0x00} /* cmd */
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x11, 0x00} /* exp_rsp */
-#else
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x10, 0x00} /* exp_rsp */
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x05, {0x20, 0x01, 0x02, 0x00, 0x00} /* cmd */
-#else
- 0x03, {0x20, 0x01, 0x00} /* cmd */
-#endif
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x4, {0x40, 0x01, 0x19, 0x00} /* exp_rsp */
-#else
- 0x4, {0x40, 0x01, 0x17, 0x00} /* exp_rsp */
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- },
- {{
- 0x04, {0x2F, 0x00, 0x01, 0x00} /* cmd */
- },
- {
- 0x04, {0x4F, 0x00, 0x01, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null
-#endif
- }};
-
-/* for rf field test, first requires to disable the standby mode */
-static nci_test_data_t rf_field_on_test_data[] = {
- {{
- 0x04, {0x20, 0x00, 0x01, 0x00} /* cmd */
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x11, 0x00} /* exp_rsp */
-#else
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x10, 0x00} /* exp_rsp */
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x05, {0x20, 0x01, 0x02, 0x00, 0x00} /* cmd */
-#else
- 0x03, {0x20, 0x01, 0x00} /* cmd */
-#endif
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x4, {0x40, 0x01, 0x19, 0x00} /* exp_rsp */
-#else
- 0x4, {0x40, 0x01, 0x17, 0x00} /* exp_rsp */
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- {{
- 0x03, {0x2F, 0x02, 0x00} /* cmd */
- },
- {
- 0x04, {0x4F, 0x02, 0x05, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
- 0x04, {0x2F, 0x00, 0x01, 0x00} /* cmd */
- },
- {
- 0x04, {0x4F, 0x00, 0x01, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
-#endif
- {{
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x05, {0x2F, 0x3D, 0x02, 0x20, 0x01} /* cmd */
-#else
- 0x08, {0x2F, 0x3D, 0x05, 0x20, 0x01, 0x00, 0x00, 0x00} /* cmd */
-#endif
- },
- {
- 0x04, {0x4F, 0x3D, 0x05, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- },
- {{
- 0x04, {0x2F, 0x00, 0x01, 0x01} /* cmd */
- },
- {
- 0x04, {0x4F, 0x00, 0x01, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null
-#endif
- }};
-
-static nci_test_data_t rf_field_off_test_data[] = {
- {{
- 0x04, {0x20, 0x00, 0x01, 0x00} /* cmd */
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x11, 0x00} /* exp_rsp */
-#else
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x10, 0x00} /* exp_rsp */
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x05, {0x20, 0x01, 0x02, 0x00, 0x00} /* cmd */
-#else
- 0x03, {0x20, 0x01, 0x00} /* cmd */
-#endif
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x4, {0x40, 0x01, 0x19, 0x00} /* exp_rsp */
-#else
- 0x4, {0x40, 0x01, 0x17, 0x00} /* exp_rsp */
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- {{
- 0x03, {0x2F, 0x02, 0x00} /* cmd */
- },
- {
- 0x04, {0x4F, 0x02, 0x05, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
- 0x04, {0x2F, 0x00, 0x01, 0x00} /* cmd */
- },
- {
- 0x04, {0x4F, 0x00, 0x01, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
-#endif
- {{
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x05, {0x2F, 0x3D, 0x02, 0x20, 0x00} /* cmd */
-#else
- 0x08, {0x2F, 0x3D, 0x05, 0x20, 0x00, 0x00, 0x00, 0x00} /* cmd */
-#endif
- },
- {
- 0x04, {0x4F, 0x3D, 0x05, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- },
- {{
- 0x04, {0x2F, 0x00, 0x01, 0x01} /* cmd */
- },
- {
- 0x04, {0x4F, 0x00, 0x01, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null
-#endif
- }};
-
-/* Download pin test data 1 */
-static nci_test_data_t download_pin_test_data1[] = {
- {{
- 0x04, {0x20, 0x00, 0x01, 0x00} /* cmd */
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x11, 0x00} /* exp_rsp */
-#else
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x10, 0x00} /* exp_rsp */
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
-};
-
-/* Download pin test data 2 */
-static nci_test_data_t download_pin_test_data2[] = {
- {{
- 0x08, {0x00, 0x04, 0xD0, 0x11, 0x00, 0x00, 0x5B, 0x46} /* cmd */
- },
- {
- 0x08, {0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x87, 0x16} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
-};
-/* Antenna self test data*/
-static nci_test_data_t antenna_self_test_data[] = {
- {{
- 0x04, {0x20, 0x00, 0x01, 0x00} /* cmd */
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x11, 0x00} /* exp_rsp */
-#else
- 0x06, {0x40, 0x00, 0x03, 0x00, 0x10, 0x00} /* exp_rsp */
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x05, {0x20, 0x01, 0x02, 0x00, 0x00} /* cmd */
-#else
- 0x03, {0x20, 0x01, 0x00} /* cmd */
-#endif
- },
- {
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x4, {0x40, 0x01, 0x19, 0x00} /* exp_rsp */
-#else
- 0x4, {0x40, 0x01, 0x17, 0x00} /* exp_rsp */
-#endif
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
- {{
- 0x03, {0x2F, 0x02, 0x00} /* cmd */
- },
- {
- 0x04, {0x4F, 0x02, 0x05, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- {{
- 0x04, {0x2F, 0x00, 0x01, 0x00} /* cmd */
- },
- {
- 0x04, {0x4F, 0x00, 0x01, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null},
-#endif
- {{
- 0x05,
- {0x2F, 0x3D, 0x02, 0x01, 0x80} /* TxLDO cureent measurement cmd */
- },
- {
- 0x03, {0x4F, 0x3D, 05} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testAntenna_Txldo,
- st_validator_null},
- {{
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- 0x07,
- {0x2F, 0x3D, 0x04, 0x02, 0xC8, 0x60, 0x03} /* AGC measurement cmd */
-#else
- 0x07,
- {0x2F, 0x3D, 0x04, 0x02, 0xCD, 0x60, 0x03} /* AGC measurement cmd */
-#endif
- },
- {
- 0x03, {0x4F, 0x3D, 05} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testAntenna_AgcVal,
- st_validator_null},
- {{
- 0x07,
- {0x2F, 0x3D, 0x04, 0x04, 0x20, 0x08,
- 0x20} /* AGC with NFCLD measurement cmd */
- },
- {
- 0x03, {0x4F, 0x3D, 05} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testAntenna_AgcVal_FixedNfcLd,
- st_validator_null},
- {{
- 0x07,
- {0x2F, 0x3D, 0x04, 0x08, 0x8C, 0x60,
- 0x03} /* AGC with NFCLD measurement cmd */
- },
- {
- 0x03, {0x4F, 0x3D, 05} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testAntenna_AgcVal_Differential,
- st_validator_null
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- },
- {{
- 0x04, {0x2F, 0x00, 0x01, 0x01} /* cmd */
- },
- {
- 0x04, {0x4F, 0x00, 0x01, 0x00} /* exp_rsp */
- },
- {
- 0x00, {0x00} /* ext_ntf */
- },
- st_validator_testEquals, /* validator */
- st_validator_null
-#endif
- }};
-
-/************** Self test functions ***************************************/
-
-static uint8_t st_validator_testEquals(nci_data_t* exp,
- phTmlNfc_TransactInfo_t* act);
-static void hal_write_cb(void* pContext, phTmlNfc_TransactInfo_t* pInfo);
-static void hal_write_rsp_timeout_cb(uint32_t TimerId, void* pContext);
-static void hal_read_cb(void* pContext, phTmlNfc_TransactInfo_t* pInfo);
-
-/*******************************************************************************
-**
-** Function st_validator_null
-**
-** Description Null Validator
-**
-** Returns One
-**
-*******************************************************************************/
-static uint8_t st_validator_null(nci_data_t* exp,
- phTmlNfc_TransactInfo_t* act) {
- UNUSED(exp);
- UNUSED(act);
- return 1;
-}
-
-/*******************************************************************************
-**
-** Function st_validator_testSWP1_vltg
-**
-** Description Validator function to validate swp1 connection.
-**
-** Returns One if successful otherwise Zero.
-**
-*******************************************************************************/
-static uint8_t st_validator_testSWP1_vltg(nci_data_t* exp,
- phTmlNfc_TransactInfo_t* act) {
- uint8_t result = 0;
-
- if (NULL == exp || NULL == act) {
- return result;
- }
-
- if ((act->wLength == 0x05) &&
- (memcmp(exp->p_data, act->pBuff, exp->len) == 0)) {
- if (act->pBuff[4] == 0x01 || act->pBuff[4] == 0x02) {
- result = 1;
- }
- }
-
- return result;
-}
-
-/*******************************************************************************
-**
-** Function st_validator_testAntenna_Txldo
-**
-** Description Validator function to validate Antenna TxLDO current
-** measurement.
-**
-** Returns One if successful otherwise Zero.
-**
-*******************************************************************************/
-static uint8_t st_validator_testAntenna_Txldo(nci_data_t* exp,
- phTmlNfc_TransactInfo_t* act) {
- uint8_t result = 0;
- uint8_t mesuredrange = 0;
- long measured_val = 0;
- int tolerance = 0;
-
- if (NULL == exp || NULL == act) {
- return result;
- }
-
- NXPLOG_NCIHAL_D("st_validator_testAntenna_Txldo = 0x%x", act->pBuff[3]);
- if (0x05 == act->pBuff[2]) {
- if (NFCSTATUS_SUCCESS == act->pBuff[3]) {
- result = 1;
- NXPLOG_NCIHAL_D("Antenna: TxLDO current measured raw value in mA : 0x%x",
- act->pBuff[4]);
- if (0x00 == act->pBuff[5]) {
- NXPLOG_NCIHAL_D("Measured range : 0x00 = 50 - 100 mA");
- measured_val = ((0.40 * act->pBuff[4]) + 50);
- NXPLOG_NCIHAL_D("TxLDO current absolute value in mA = %ld",
- measured_val);
- } else {
- NXPLOG_NCIHAL_D("Measured range : 0x01 = 20 - 70 mA");
- measured_val = ((0.40 * act->pBuff[4]) + 20);
- NXPLOG_NCIHAL_D("TxLDO current absolute value in mA = %ld",
- measured_val);
- }
-
- tolerance = (phAntenna_resp.wTxdoMeasuredRangeMax *
- phAntenna_resp.wTxdoMeasuredTolerance) /
- 100;
- if ((measured_val <= phAntenna_resp.wTxdoMeasuredRangeMax + tolerance)) {
- tolerance = (phAntenna_resp.wTxdoMeasuredRangeMin *
- phAntenna_resp.wTxdoMeasuredTolerance) /
- 100;
- if ((measured_val >=
- phAntenna_resp.wTxdoMeasuredRangeMin - tolerance)) {
- gtxldo_status = NFCSTATUS_SUCCESS;
- NXPLOG_NCIHAL_E("Test Antenna Response for TxLDO measurement PASS");
- } else {
- gtxldo_status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_E("Test Antenna Response for TxLDO measurement FAIL");
- }
- } else {
- gtxldo_status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_E("Test Antenna Response for TxLDO measurement FAIL");
- }
- } else {
- gtxldo_status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_E(
- "Test Antenna Response for TxLDO measurement failed: Invalid status");
- }
-
- } else {
- gtxldo_status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_E(
- "Test Antenna Response for TxLDO measurement failed: Invalid payload "
- "length");
- }
-
- return result;
-}
-
-/*******************************************************************************
-**
-** Function st_validator_testAntenna_AgcVal
-**
-** Description Validator function reads AGC value of antenna and print the
-** info
-**
-** Returns One if successful otherwise Zero.
-**
-*******************************************************************************/
-static uint8_t st_validator_testAntenna_AgcVal(nci_data_t* exp,
- phTmlNfc_TransactInfo_t* act) {
- uint8_t result = 0;
- int agc_tolerance = 0;
- long agc_val = 0;
-
- if (NULL == exp || NULL == act) {
- return result;
- }
-
- if (0x05 == act->pBuff[2]) {
- if (NFCSTATUS_SUCCESS == act->pBuff[3]) {
- result = 1;
- agc_tolerance =
- (phAntenna_resp.wAgcValue * phAntenna_resp.wAgcValueTolerance) / 100;
- agc_val = ((act->pBuff[5] << 8) | (act->pBuff[4]));
- NXPLOG_NCIHAL_D("AGC value : %ld", agc_val);
- if (((phAntenna_resp.wAgcValue - agc_tolerance) <= agc_val) &&
- (agc_val <= (phAntenna_resp.wAgcValue + agc_tolerance))) {
- gagc_value_status = NFCSTATUS_SUCCESS;
- NXPLOG_NCIHAL_E("Test Antenna Response for AGC Values PASS");
- } else {
- gagc_value_status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_E("Test Antenna Response for AGC Values FAIL");
- }
- } else {
- gagc_value_status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_E("Test Antenna Response for AGC Values FAIL");
- }
- } else {
- gagc_value_status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_E(
- "Test Antenna Response for AGC value failed: Invalid payload length");
- }
-
- return result;
-}
-/*******************************************************************************
-**
-** Function st_validator_testAntenna_AgcVal_FixedNfcLd
-**
-** Description Validator function reads and print AGC value of
-** antenna with fixed NFCLD
-**
-** Returns One if successful otherwise Zero.
-**
-*******************************************************************************/
-static uint8_t st_validator_testAntenna_AgcVal_FixedNfcLd(
- nci_data_t* exp, phTmlNfc_TransactInfo_t* act) {
- uint8_t result = 0;
- int agc_nfcld_tolerance = 0;
- long agc_nfcld = 0;
-
- if (NULL == exp || NULL == act) {
- return result;
- }
-
- if (0x05 == act->pBuff[2]) {
- if (NFCSTATUS_SUCCESS == act->pBuff[3]) {
- result = 1;
- agc_nfcld_tolerance = (phAntenna_resp.wAgcValuewithfixedNFCLD *
- phAntenna_resp.wAgcValuewithfixedNFCLDTolerance) /
- 100;
- agc_nfcld = ((act->pBuff[5] << 8) | (act->pBuff[4]));
- NXPLOG_NCIHAL_D("AGC value with Fixed Nfcld : %ld", agc_nfcld);
-
- if (((phAntenna_resp.wAgcValuewithfixedNFCLD - agc_nfcld_tolerance) <=
- agc_nfcld) &&
- (agc_nfcld <=
- (phAntenna_resp.wAgcValuewithfixedNFCLD + agc_nfcld_tolerance))) {
- gagc_nfcld_status = NFCSTATUS_SUCCESS;
- NXPLOG_NCIHAL_E(
- "Test Antenna Response for AGC value with fixed NFCLD PASS");
- } else {
- gagc_nfcld_status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_E(
- "Test Antenna Response for AGC value with fixed NFCLD FAIL");
- }
- } else {
- gagc_nfcld_status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_E(
- "Test Antenna Response for AGC value with fixed NFCLD failed: "
- "Invalid status");
- }
- } else {
- gagc_nfcld_status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_E(
- "Test Antenna Response for AGC value with fixed NFCLD failed: Invalid "
- "payload length");
- }
-
- return result;
-}
-
-/*******************************************************************************
-**
-** Function st_validator_testAntenna_AgcVal_Differential
-**
-** Description Reads the AGC value with open/short RM from buffer and print
-**
-** Returns One if successful otherwise Zero.
-**
-*******************************************************************************/
-static uint8_t st_validator_testAntenna_AgcVal_Differential(
- nci_data_t* exp, phTmlNfc_TransactInfo_t* act) {
- uint8_t result = 0;
- int agc_toleranceopne1 = 0;
- int agc_toleranceopne2 = 0;
- long agc_differentialOpne1 = 0;
- long agc_differentialOpne2 = 0;
-
- if (NULL == exp || NULL == act) {
- return result;
- }
-
- if (0x05 == act->pBuff[2]) {
- if (NFCSTATUS_SUCCESS == act->pBuff[3]) {
- result = 1;
- agc_toleranceopne1 = (phAntenna_resp.wAgcDifferentialWithOpen1 *
- phAntenna_resp.wAgcDifferentialWithOpenTolerance1) /
- 100;
- agc_toleranceopne2 = (phAntenna_resp.wAgcDifferentialWithOpen2 *
- phAntenna_resp.wAgcDifferentialWithOpenTolerance2) /
- 100;
- agc_differentialOpne1 = ((act->pBuff[5] << 8) | (act->pBuff[4]));
- agc_differentialOpne2 = ((act->pBuff[7] << 8) | (act->pBuff[6]));
- NXPLOG_NCIHAL_D("AGC value differential Opne 1 : %ld",
- agc_differentialOpne1);
- NXPLOG_NCIHAL_D("AGC value differentialOpne 2 : %ld",
- agc_differentialOpne2);
-
- if (((agc_differentialOpne1 >=
- phAntenna_resp.wAgcDifferentialWithOpen1 - agc_toleranceopne1) &&
- (agc_differentialOpne1 <=
- phAntenna_resp.wAgcDifferentialWithOpen1 + agc_toleranceopne1)) &&
- ((agc_differentialOpne2 >=
- phAntenna_resp.wAgcDifferentialWithOpen2 - agc_toleranceopne2) &&
- (agc_differentialOpne2 <=
- phAntenna_resp.wAgcDifferentialWithOpen2 + agc_toleranceopne2))) {
- gagc_differential_status = NFCSTATUS_SUCCESS;
- NXPLOG_NCIHAL_E("Test Antenna Response for AGC Differential Open PASS");
- } else {
- gagc_differential_status = NFCSTATUS_FAILED;
- NXPLOG_NCIHAL_E(
- "Test Antenna Response for AGC Differential Open FAIL");
- }
- } else {
- NXPLOG_NCIHAL_E(
- "Test Antenna Response for AGC Differential failed: Invalid status");
- gagc_differential_status = NFCSTATUS_FAILED;
- }
-
- } else {
- NXPLOG_NCIHAL_E(
- "Test Antenna Response for AGC Differential failed: Invalid payload "
- "length");
- gagc_differential_status = NFCSTATUS_FAILED;
- }
-
- return result;
-}
-/*******************************************************************************
-**
-** Function st_validator_testEquals
-**
-** Description Validator function to validate for equality between actual
-** and expected values.
-**
-** Returns One if successful otherwise Zero.
-**
-*******************************************************************************/
-static uint8_t st_validator_testEquals(nci_data_t* exp,
- phTmlNfc_TransactInfo_t* act) {
- uint8_t result = 0;
-
- if (NULL == exp || NULL == act) {
- return result;
- }
- if (exp->len <= act->wLength &&
- (memcmp(exp->p_data, act->pBuff, exp->len) == 0)) {
- result = 1;
- }
-
- return result;
-}
-
-/*******************************************************************************
-**
-** Function hal_write_rsp_timeout_cb
-**
-** Description Callback function for hal write response timer.
-**
-** Returns None
-**
-*******************************************************************************/
-static void hal_write_rsp_timeout_cb(uint32_t timerId, void* pContext) {
- UNUSED(timerId);
- NXPLOG_NCIHAL_E("hal_write_rsp_timeout_cb - write timeout!!!");
- hal_write_timer_fired = 1;
- hal_read_cb(pContext, NULL);
-}
-
-/*******************************************************************************
-**
-** Function hal_write_cb
-**
-** Description Callback function for hal write.
-**
-** Returns None
-**
-*******************************************************************************/
-static void hal_write_cb(void* pContext, phTmlNfc_TransactInfo_t* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
-
- if (pInfo->wStatus == NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("write successful status = 0x%x", pInfo->wStatus);
- } else {
- NXPLOG_NCIHAL_E("write error status = 0x%x", pInfo->wStatus);
- }
-
- p_cb_data->status = pInfo->wStatus;
- SEM_POST(p_cb_data);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function hal_read_cb
-**
-** Description Callback function for hal read.
-**
-** Returns None
-**
-*******************************************************************************/
-static void hal_read_cb(void* pContext, phTmlNfc_TransactInfo_t* pInfo) {
- phNxpNciHal_Sem_t* p_cb_data = (phNxpNciHal_Sem_t*)pContext;
- NFCSTATUS status;
- if (hal_write_timer_fired == 1) {
- NXPLOG_NCIHAL_D("hal_read_cb - response timeout occurred");
-
- hal_write_timer_fired = 0;
- p_cb_data->status = NFCSTATUS_RESPONSE_TIMEOUT;
- status = phTmlNfc_ReadAbort();
- } else {
- NFCSTATUS status = phOsalNfc_Timer_Stop(timeoutTimerId);
-
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_NCIHAL_D("Response timer stopped");
- } else {
- NXPLOG_NCIHAL_E("Response timer stop ERROR!!!");
- p_cb_data->status = NFCSTATUS_FAILED;
- }
- if (pInfo == NULL) {
- NXPLOG_NCIHAL_E("Empty TransactInfo");
- p_cb_data->status = NFCSTATUS_FAILED;
- } else {
- if (pInfo->wStatus == NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("hal_read_cb successful status = 0x%x", pInfo->wStatus);
- p_cb_data->status = NFCSTATUS_SUCCESS;
- } else {
- NXPLOG_NCIHAL_E("hal_read_cb error status = 0x%x", pInfo->wStatus);
- p_cb_data->status = NFCSTATUS_FAILED;
- }
-
- p_cb_data->status = pInfo->wStatus;
- nci_test_data_t* test_data = (nci_test_data_t*)p_cb_data->pContext;
-
- if (test_data->exp_rsp.len == 0) {
- /* Compare the actual notification with expected notification.*/
- if (test_data->ntf_validator(&(test_data->exp_ntf), pInfo) == 1) {
- p_cb_data->status = NFCSTATUS_SUCCESS;
- } else {
- p_cb_data->status = NFCSTATUS_FAILED;
- }
- }
-
- /* Compare the actual response with expected response.*/
- else if (test_data->rsp_validator(&(test_data->exp_rsp), pInfo) == 1) {
- p_cb_data->status = NFCSTATUS_SUCCESS;
- } else {
- p_cb_data->status = NFCSTATUS_FAILED;
- }
-
- test_data->exp_rsp.len = 0;
- }
- }
-
- SEM_POST(p_cb_data);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_test_rx_thread
-**
-** Description Thread to fetch and process messages from message queue.
-**
-** Returns NULL
-**
-*******************************************************************************/
-static void* phNxpNciHal_test_rx_thread(void* arg) {
- phLibNfc_Message_t msg;
- UNUSED(arg);
- NXPLOG_NCIHAL_D("Self test thread started");
-
- thread_running = 1;
-
- while (thread_running == 1) {
- /* Fetch next message from the NFC stack message queue */
- if (phDal4Nfc_msgrcv(gDrvCfg.nClientId, &msg, 0, 0) == -1) {
- NXPLOG_NCIHAL_E("Received bad message");
- continue;
- }
-
- if (thread_running == 0) {
- break;
- }
-
- switch (msg.eMsgType) {
- case PH_LIBNFC_DEFERREDCALL_MSG: {
- phLibNfc_DeferredCall_t* deferCall =
- (phLibNfc_DeferredCall_t*)(msg.pMsgData);
-
- REENTRANCE_LOCK();
- deferCall->pCallback(deferCall->pParameter);
- REENTRANCE_UNLOCK();
-
- break;
- }
- }
- }
-
- NXPLOG_NCIHAL_D("Self test thread stopped");
-
- return NULL;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_readLocked
-**
-** Description Reads response and notification from NFCC and waits for
-** read completion, for a definitive timeout value.
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED,
-** NFCSTATUS_RESPONSE_TIMEOUT in case of timeout.
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_readLocked(nci_test_data_t* pData) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- phNxpNciHal_Sem_t cb_data;
- uint16_t read_len = 16;
- /* RX Buffer */
- uint32_t rx_data[NCI_MAX_DATA_LEN];
-
- /* Create the local semaphore */
- if (phNxpNciHal_init_cb_data(&cb_data, pData) != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("phTmlNfc_Read Create cb data failed");
- status = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- /* call read pending */
- status =
- phTmlNfc_Read((uint8_t*)rx_data, (uint16_t)read_len,
- (pphTmlNfc_TransactCompletionCb_t)&hal_read_cb, &cb_data);
-
- if (status != NFCSTATUS_PENDING) {
- NXPLOG_NCIHAL_E("TML Read status error status = %x", status);
- status = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- status = phOsalNfc_Timer_Start(timeoutTimerId, HAL_WRITE_RSP_TIMEOUT,
- &hal_write_rsp_timeout_cb, &cb_data);
-
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_NCIHAL_D("Response timer started");
- } else {
- NXPLOG_NCIHAL_E("Response timer not started");
- status = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_NCIHAL_E("phTmlNfc_Read semaphore error");
- status = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status == NFCSTATUS_RESPONSE_TIMEOUT) {
- NXPLOG_NCIHAL_E("Response timeout!!!");
- status = NFCSTATUS_RESPONSE_TIMEOUT;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("phTmlNfc_Read failed ");
- status = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
-clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
-
- return status;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_writeLocked
-**
-** Description Send command to NFCC and waits for cmd write completion, for
-** a definitive timeout value.
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED,
-** NFCSTATUS_RESPONSE_TIMEOUT in case of timeout.
-**
-*******************************************************************************/
-static NFCSTATUS phNxpNciHal_writeLocked(nci_test_data_t* pData) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
-
- phNxpNciHal_Sem_t cb_data;
- int retryCnt = 0;
-
- /* Create the local semaphore */
- if (phNxpNciHal_init_cb_data(&cb_data, NULL) != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("phTmlNfc_Write Create cb data failed");
- goto clean_and_return;
- }
-
-retry:
- status =
- phTmlNfc_Write(pData->cmd.p_data, pData->cmd.len,
- (pphTmlNfc_TransactCompletionCb_t)&hal_write_cb, &cb_data);
-
- if (status != NFCSTATUS_PENDING) {
- NXPLOG_NCIHAL_E("phTmlNfc_Write status error");
- goto clean_and_return;
- }
-
- /* Wait for callback response */
- if (SEM_WAIT(cb_data)) {
- NXPLOG_NCIHAL_E("write_unlocked semaphore error");
- status = NFCSTATUS_FAILED;
- goto clean_and_return;
- }
-
- if (cb_data.status != NFCSTATUS_SUCCESS && retryCnt < HAL_WRITE_MAX_RETRY) {
- retryCnt++;
- NXPLOG_NCIHAL_E(
- "write_unlocked failed - PN54X Maybe in Standby Mode - Retry %d",
- retryCnt);
- goto retry;
- }
-
- status = cb_data.status;
-
-clean_and_return:
- phNxpNciHal_cleanup_cb_data(&cb_data);
-
- return status;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_performTest
-**
-** Description Performs a single cycle of command,response and
-** notification.
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED,
-**
-*******************************************************************************/
-NFCSTATUS phNxpNciHal_performTest(nci_test_data_t* pData) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
-
- if (NULL == pData) {
- return NFCSTATUS_FAILED;
- }
-
- CONCURRENCY_LOCK();
-
- status = phNxpNciHal_writeLocked(pData);
-
- if (status == NFCSTATUS_RESPONSE_TIMEOUT) {
- goto clean_and_return;
- }
- if (status != NFCSTATUS_SUCCESS) {
- goto clean_and_return;
- }
-
- status = phNxpNciHal_readLocked(pData);
-
- if (status != NFCSTATUS_SUCCESS) {
- goto clean_and_return;
- }
-
- if (0 != pData->exp_ntf.len) {
- status = phNxpNciHal_readLocked(pData);
-
- if (status != NFCSTATUS_SUCCESS) {
- goto clean_and_return;
- }
- }
-
-clean_and_return:
- CONCURRENCY_UNLOCK();
- return status;
-}
-
-/*******************************************************************************
- **
- ** Function phNxpNciHal_TestMode_open
- **
- ** Description It opens the physical connection with NFCC (PN54X) and
- ** creates required client thread for operation.
- **
- ** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
- **
- ******************************************************************************/
-NFCSTATUS phNxpNciHal_TestMode_open(void) {
- /* Thread */
- pthread_t test_rx_thread;
-
- phOsalNfc_Config_t tOsalConfig;
- phTmlNfc_Config_t tTmlConfig;
- char* nfc_dev_node = NULL;
- const uint16_t max_len = 260;
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- uint16_t read_len = 255;
- int8_t ret_val = 0x00;
- /* initialize trace level */
- phNxpLog_InitializeLogLevel();
-
- if (phNxpNciHal_init_monitor() == NULL) {
- NXPLOG_NCIHAL_E("Init monitor failed");
- return NFCSTATUS_FAILED;
- }
-
- CONCURRENCY_LOCK();
-
- memset(&tOsalConfig, 0x00, sizeof(tOsalConfig));
- memset(&tTmlConfig, 0x00, sizeof(tTmlConfig));
-
- /* Read the nfc device node name */
- nfc_dev_node = (char*)malloc(max_len * sizeof(char));
- if (nfc_dev_node == NULL) {
- NXPLOG_NCIHAL_E("malloc of nfc_dev_node failed ");
- goto clean_and_return;
- } else if (!GetNxpStrValue(NAME_NXP_NFC_DEV_NODE, nfc_dev_node,
- sizeof(nfc_dev_node))) {
- NXPLOG_NCIHAL_E(
- "Invalid nfc device node name keeping the default device node "
- "/dev/pn54x");
- strcpy(nfc_dev_node, "/dev/pn54x");
- }
-
- gDrvCfg.nClientId = phDal4Nfc_msgget(0, 0600);
- gDrvCfg.nLinkType = ENUM_LINK_TYPE_I2C; /* For PN54X */
- tTmlConfig.pDevName = (int8_t*)nfc_dev_node;
- tOsalConfig.dwCallbackThreadId = (uintptr_t)gDrvCfg.nClientId;
- tOsalConfig.pLogFile = NULL;
- tTmlConfig.dwGetMsgThreadId = (uintptr_t)gDrvCfg.nClientId;
- nxpncihal_ctrl.gDrvCfg.nClientId = (uintptr_t)gDrvCfg.nClientId;
-
- /* Initialize TML layer */
- status = phTmlNfc_Init(&tTmlConfig);
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_E("phTmlNfc_Init Failed");
- goto clean_and_return;
- } else {
- if (nfc_dev_node != NULL) {
- free(nfc_dev_node);
- nfc_dev_node = NULL;
- }
- }
-
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- ret_val =
- pthread_create(&test_rx_thread, &attr, phNxpNciHal_test_rx_thread, NULL);
- pthread_attr_destroy(&attr);
- if (ret_val != 0) {
- NXPLOG_NCIHAL_E("pthread_create failed");
- phTmlNfc_Shutdown();
- goto clean_and_return;
- }
-
- timeoutTimerId = phOsalNfc_Timer_Create();
-
- if (timeoutTimerId == 0xFFFF) {
- NXPLOG_NCIHAL_E("phOsalNfc_Timer_Create failed");
- } else {
- NXPLOG_NCIHAL_D("phOsalNfc_Timer_Create SUCCESS");
- }
- CONCURRENCY_UNLOCK();
-
- return NFCSTATUS_SUCCESS;
-
-clean_and_return:
- CONCURRENCY_UNLOCK();
- if (nfc_dev_node != NULL) {
- free(nfc_dev_node);
- nfc_dev_node = NULL;
- }
- phNxpNciHal_cleanup_monitor();
- return NFCSTATUS_FAILED;
-}
-
-/*******************************************************************************
- **
- ** Function phNxpNciHal_TestMode_close
- **
- ** Description This function close the NFCC interface and free all
- ** resources.
- **
- ** Returns None.
- **
- ******************************************************************************/
-
-void phNxpNciHal_TestMode_close() {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
-
- CONCURRENCY_LOCK();
-
- if (NULL != gpphTmlNfc_Context->pDevHandle) {
- /* Abort any pending read and write */
- status = phTmlNfc_ReadAbort();
- status = phTmlNfc_WriteAbort();
-
- phOsalNfc_Timer_Cleanup();
-
- status = phTmlNfc_Shutdown();
-
- NXPLOG_NCIHAL_D("phNxpNciHal_close return status = %d", status);
-
- thread_running = 0;
-
- phDal4Nfc_msgrelease(gDrvCfg.nClientId);
-
- status = phOsalNfc_Timer_Delete(timeoutTimerId);
- }
-
- CONCURRENCY_UNLOCK();
-
- phNxpNciHal_cleanup_monitor();
-
- /* Return success always */
- return;
-}
-
-/*******************************************************************************
- **
- ** Function phNxpNciHal_SwpTest
- **
- ** Description Test function to validate the SWP line. SWP line number is
- ** is sent as parameter to the API.
- **
- ** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
- **
- ******************************************************************************/
-
-NFCSTATUS phNxpNciHal_SwpTest(uint8_t swp_line) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- int len = 0;
- int cnt = 0;
-
- NXPLOG_NCIHAL_D("phNxpNciHal_SwpTest - start\n");
-
- if (swp_line == 0x01) {
- len = (sizeof(swp1_test_data) / sizeof(swp1_test_data[0]));
-
- for (cnt = 0; cnt < len; cnt++) {
- status = phNxpNciHal_performTest(&(swp1_test_data[cnt]));
- if (status == NFCSTATUS_RESPONSE_TIMEOUT || status == NFCSTATUS_FAILED) {
- break;
- }
- }
- } else if (swp_line == 0x02) {
- len = (sizeof(swp2_test_data) / sizeof(swp2_test_data[0]));
-
- for (cnt = 0; cnt < len; cnt++) {
- status = phNxpNciHal_performTest(&(swp2_test_data[cnt]));
- if (status == NFCSTATUS_RESPONSE_TIMEOUT || status == NFCSTATUS_FAILED) {
- break;
- }
- }
- } else {
- status = NFCSTATUS_FAILED;
- }
-
- if (status == NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("phNxpNciHal_SwpTest - SUCCESSS\n");
- } else {
- NXPLOG_NCIHAL_D("phNxpNciHal_SwpTest - FAILED\n");
- }
-
- NXPLOG_NCIHAL_D("phNxpNciHal_SwpTest - end\n");
-
- return status;
-}
-
-/*******************************************************************************
- **
- ** Function phNxpNciHal_PrbsTestStart
- **
- ** Description Test function start RF generation for RF technology and bit
- ** rate. RF technology and bit rate are sent as parameter to
- ** the API.
- **
- ** Returns NFCSTATUS_SUCCESS if RF generation successful,
- ** otherwise NFCSTATUS_FAILED.
- **
- ******************************************************************************/
-
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
-NFCSTATUS phNxpNciHal_PrbsTestStart(phNxpNfc_PrbsType_t prbs_type,
- phNxpNfc_PrbsHwType_t hw_prbs_type,
- phNxpNfc_Tech_t tech,
- phNxpNfc_Bitrate_t bitrate)
-#else
-NFCSTATUS phNxpNciHal_PrbsTestStart(phNxpNfc_Tech_t tech,
- phNxpNfc_Bitrate_t bitrate)
-#endif
-{
- NFCSTATUS status = NFCSTATUS_FAILED;
-
- nci_test_data_t prbs_cmd_data;
-
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- uint8_t rsp_cmd_info[] = {0x4F, 0x30, 0x01, 0x00};
- prbs_cmd_data.cmd.len = 0x09;
-#else
- uint8_t rsp_cmd_info[] = {0x4F, 0x30, 0x01, 0x00};
- prbs_cmd_data.cmd.len = 0x07;
-#endif
-
- memcpy(prbs_cmd_data.exp_rsp.p_data, &rsp_cmd_info[0], sizeof(rsp_cmd_info));
- prbs_cmd_data.exp_rsp.len = sizeof(rsp_cmd_info);
-
- // prbs_cmd_data.exp_rsp.len = 0x00;
- prbs_cmd_data.exp_ntf.len = 0x00;
- prbs_cmd_data.rsp_validator = st_validator_testEquals;
- prbs_cmd_data.ntf_validator = st_validator_null;
-
- uint8_t len = 0;
- uint8_t cnt = 0;
-
-// [NCI] -> [0x2F 0x30 0x04 0x00 0x00 0x01 0xFF]
-
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- status =
- phNxpNciHal_getPrbsCmd(prbs_type, hw_prbs_type, tech, bitrate,
- prbs_cmd_data.cmd.p_data, prbs_cmd_data.cmd.len);
-#else
- status = phNxpNciHal_getPrbsCmd(tech, bitrate, prbs_cmd_data.cmd.p_data,
- prbs_cmd_data.cmd.len);
-#endif
-
- if (status == NFCSTATUS_FAILED) {
- // Invalid Param.
- NXPLOG_NCIHAL_D("phNxpNciHal_PrbsTestStart - INVALID_PARAM\n");
-
- goto clean_and_return;
- }
-
- len = (sizeof(prbs_test_data) / sizeof(prbs_test_data[0]));
-
- for (cnt = 0; cnt < len; cnt++) {
- status = phNxpNciHal_performTest(&(prbs_test_data[cnt]));
- if (status == NFCSTATUS_RESPONSE_TIMEOUT || status == NFCSTATUS_FAILED) {
- break;
- }
- }
-
- /* Ignoring status, as there will be no response - Applicable till FW version
- * 8.1.1*/
- status = phNxpNciHal_performTest(&prbs_cmd_data);
-clean_and_return:
-
- if (status == NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("phNxpNciHal_PrbsTestStart - SUCCESSS\n");
- } else {
- NXPLOG_NCIHAL_D("phNxpNciHal_PrbsTestStart - FAILED\n");
- }
-
- NXPLOG_NCIHAL_D("phNxpNciHal_PrbsTestStart - end\n");
-
- return status;
-}
-
-/*******************************************************************************
- **
- ** Function phNxpNciHal_PrbsTestStop
- **
- ** Description Test function stop RF generation for RF technology started
- ** by phNxpNciHal_PrbsTestStart.
- **
- ** Returns NFCSTATUS_SUCCESS if operation successful,
- ** otherwise NFCSTATUS_FAILED.
- **
- ******************************************************************************/
-
-NFCSTATUS phNxpNciHal_PrbsTestStop() {
- NXPLOG_NCIHAL_D("phNxpNciHal_PrbsTestStop - Start\n");
-
- NFCSTATUS status = NFCSTATUS_SUCCESS;
-
- status = phTmlNfc_IoCtl(phTmlNfc_e_ResetDevice);
-
- if (NFCSTATUS_SUCCESS == status) {
- NXPLOG_NCIHAL_D("phNxpNciHal_PrbsTestStop - SUCCESS\n");
- } else {
- NXPLOG_NCIHAL_D("phNxpNciHal_PrbsTestStop - FAILED\n");
- }
- NXPLOG_NCIHAL_D("phNxpNciHal_PrbsTestStop - end\n");
-
- return status;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_getPrbsCmd
-**
-** Description Test function frames the PRBS command.
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
-**
-*******************************************************************************/
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
-NFCSTATUS phNxpNciHal_getPrbsCmd(phNxpNfc_PrbsType_t prbs_type,
- phNxpNfc_PrbsHwType_t hw_prbs_type,
- uint8_t tech, uint8_t bitrate,
- uint8_t* prbs_cmd, uint8_t prbs_cmd_len)
-#else
-NFCSTATUS phNxpNciHal_getPrbsCmd(uint8_t tech, uint8_t bitrate,
- uint8_t* prbs_cmd, uint8_t prbs_cmd_len)
-#endif
-{
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- int position_tech_param = 0;
- int position_bit_param = 0;
-
- NXPLOG_NCIHAL_D("phNxpNciHal_getPrbsCmd - tech 0x%x bitrate = 0x%x", tech,
- bitrate);
- if (NULL == prbs_cmd ||
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- prbs_cmd_len != 0x09)
-#else
- prbs_cmd_len != 0x07)
-#endif
- {
- return status;
- }
-
- prbs_cmd[0] = 0x2F;
- prbs_cmd[1] = 0x30;
-#if (NFC_NXP_CHIP_TYPE != PN547C2)
- prbs_cmd[2] = 0x06;
- prbs_cmd[3] = (uint8_t)prbs_type;
- // 0xFF Error value used for validation.
- prbs_cmd[4] = (uint8_t)hw_prbs_type;
- prbs_cmd[5] = 0xFF; // TECH
- prbs_cmd[6] = 0xFF; // BITRATE
- prbs_cmd[7] = 0x01;
- prbs_cmd[8] = 0xFF;
- position_tech_param = 5;
- position_bit_param = 6;
-#else
- prbs_cmd[2] = 0x04;
- // 0xFF Error value used for validation.
- prbs_cmd[3] = 0xFF; // TECH
- // 0xFF Error value used for validation.
- prbs_cmd[4] = 0xFF; // BITRATE
- prbs_cmd[5] = 0x01;
- prbs_cmd[6] = 0xFF;
- position_tech_param = 3;
- position_bit_param = 4;
-#endif
-
- switch (tech) {
- case NFC_RF_TECHNOLOGY_A:
- NXPLOG_NCIHAL_D("phNxpNciHal_getPrbsCmd - NFC_RF_TECHNOLOGY_A");
- prbs_cmd[position_tech_param] = 0x00;
- break;
- case NFC_RF_TECHNOLOGY_B:
- NXPLOG_NCIHAL_D("phNxpNciHal_getPrbsCmd - NFC_RF_TECHNOLOGY_B");
- prbs_cmd[position_tech_param] = 0x01;
- break;
- case NFC_RF_TECHNOLOGY_F:
- NXPLOG_NCIHAL_D("phNxpNciHal_getPrbsCmd - NFC_RF_TECHNOLOGY_F");
- prbs_cmd[position_tech_param] = 0x02;
- break;
- default:
- break;
- }
-
- switch (bitrate) {
- case NFC_BIT_RATE_106:
- NXPLOG_NCIHAL_D("phNxpNciHal_getPrbsCmd - NFC_BIT_RATE_106");
- if (prbs_cmd[position_tech_param] != 0x02) {
- prbs_cmd[position_bit_param] = 0x00;
- }
- break;
- case NFC_BIT_RATE_212:
- NXPLOG_NCIHAL_D("phNxpNciHal_getPrbsCmd - NFC_BIT_RATE_212");
- prbs_cmd[position_bit_param] = 0x01;
- break;
- case NFC_BIT_RATE_424:
- NXPLOG_NCIHAL_D("phNxpNciHal_getPrbsCmd - NFC_BIT_RATE_424");
- prbs_cmd[position_bit_param] = 0x02;
- break;
- case NFC_BIT_RATE_848:
- NXPLOG_NCIHAL_D("phNxpNciHal_getPrbsCmd - NFC_BIT_RATE_848");
- if (prbs_cmd[position_tech_param] != 0x02) {
- prbs_cmd[position_bit_param] = 0x03;
- }
- break;
- default:
- break;
- }
-
- if (prbs_cmd[position_tech_param] == 0xFF ||
- prbs_cmd[position_bit_param] == 0xFF) {
- // Invalid Param.
- status = NFCSTATUS_FAILED;
- }
-
- return status;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_RfFieldTest
-**
-** Description Test function performs RF filed test.
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
-**
-*******************************************************************************/
-NFCSTATUS phNxpNciHal_RfFieldTest(uint8_t on) {
- NFCSTATUS status = NFCSTATUS_SUCCESS;
- int len = 0;
- int cnt = 0;
-
- NXPLOG_NCIHAL_D("phNxpNciHal_RfFieldTest - start %x\n", on);
-
- if (on == 0x01) {
- len = (sizeof(rf_field_on_test_data) / sizeof(rf_field_on_test_data[0]));
-
- for (cnt = 0; cnt < len; cnt++) {
- status = phNxpNciHal_performTest(&(rf_field_on_test_data[cnt]));
- if (status == NFCSTATUS_RESPONSE_TIMEOUT || status == NFCSTATUS_FAILED) {
- break;
- }
- }
- } else if (on == 0x00) {
- len = (sizeof(rf_field_off_test_data) / sizeof(rf_field_off_test_data[0]));
-
- for (cnt = 0; cnt < len; cnt++) {
- status = phNxpNciHal_performTest(&(rf_field_off_test_data[cnt]));
- if (status == NFCSTATUS_RESPONSE_TIMEOUT || status == NFCSTATUS_FAILED) {
- break;
- }
- }
- } else {
- status = NFCSTATUS_FAILED;
- }
-
- if (status == NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("phNxpNciHal_RfFieldTest - SUCCESSS\n");
- } else {
- NXPLOG_NCIHAL_D("phNxpNciHal_RfFieldTest - FAILED\n");
- }
-
- NXPLOG_NCIHAL_D("phNxpNciHal_RfFieldTest - end\n");
-
- return status;
-}
-
-/*******************************************************************************
- **
- ** Function phNxpNciHal_AntennaTest
- **
- ** Description
- **
- ** Returns
- **
- ******************************************************************************/
-NFCSTATUS phNxpNciHal_AntennaTest() {
- NFCSTATUS status = NFCSTATUS_FAILED;
-
- return status;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_DownloadPinTest
-**
-** Description Test function to validate the FW download pin connection.
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
-**
-*******************************************************************************/
-NFCSTATUS phNxpNciHal_DownloadPinTest(void) {
- NFCSTATUS status = NFCSTATUS_FAILED;
- int len = 0;
- int cnt = 0;
-
- NXPLOG_NCIHAL_D("phNxpNciHal_DownloadPinTest - start\n");
-
- len = (sizeof(download_pin_test_data1) / sizeof(download_pin_test_data1[0]));
-
- for (cnt = 0; cnt < len; cnt++) {
- status = phNxpNciHal_performTest(&(download_pin_test_data1[cnt]));
- if (status == NFCSTATUS_RESPONSE_TIMEOUT || status == NFCSTATUS_FAILED) {
- break;
- }
- }
-
- if (status != NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("phNxpNciHal_DownloadPinTest - FAILED\n");
- return status;
- }
-
- status = NFCSTATUS_FAILED;
- status = phTmlNfc_IoCtl(phTmlNfc_e_EnableDownloadMode);
- if (NFCSTATUS_SUCCESS != status) {
- NXPLOG_NCIHAL_D("phNxpNciHal_DownloadPinTest - FAILED\n");
- return status;
- }
-
- status = NFCSTATUS_FAILED;
- len = (sizeof(download_pin_test_data2) / sizeof(download_pin_test_data2[0]));
-
- for (cnt = 0; cnt < len; cnt++) {
- status = phNxpNciHal_performTest(&(download_pin_test_data2[cnt]));
- if (status == NFCSTATUS_RESPONSE_TIMEOUT || status == NFCSTATUS_FAILED) {
- break;
- }
- }
-
- if (status == NFCSTATUS_SUCCESS) {
- NXPLOG_NCIHAL_D("phNxpNciHal_DownloadPinTest - SUCCESSS\n");
- } else {
- NXPLOG_NCIHAL_D("phNxpNciHal_DownloadPinTest - FAILED\n");
- }
-
- NXPLOG_NCIHAL_D("phNxpNciHal_DownloadPinTest - end\n");
-
- return status;
-}
-/*******************************************************************************
-**
-** Function phNxpNciHal_AntennaSelfTest
-**
-** Description Test function to validate the Antenna's discrete
-** components connection.
-**
-** Returns NFCSTATUS_SUCCESS if successful,otherwise NFCSTATUS_FAILED.
-**
-*******************************************************************************/
-NFCSTATUS phNxpNciHal_AntennaSelfTest(phAntenna_St_Resp_t* phAntenna_St_Resp) {
- NFCSTATUS status = NFCSTATUS_FAILED;
- NFCSTATUS antenna_st_status = NFCSTATUS_FAILED;
- int len = 0;
- int cnt = 0;
-
- NXPLOG_NCIHAL_D("phNxpNciHal_AntennaSelfTest - start\n");
- memcpy(&phAntenna_resp, phAntenna_St_Resp, sizeof(phAntenna_St_Resp_t));
- len = (sizeof(antenna_self_test_data) / sizeof(antenna_self_test_data[0]));
-
- for (cnt = 0; cnt < len; cnt++) {
- status = phNxpNciHal_performTest(&(antenna_self_test_data[cnt]));
- if (status == NFCSTATUS_RESPONSE_TIMEOUT || status == NFCSTATUS_FAILED) {
- NXPLOG_NCIHAL_E(
- "phNxpNciHal_AntennaSelfTest: commnad execution - FAILED\n");
- break;
- }
- }
-
- if (status == NFCSTATUS_SUCCESS) {
- if ((gtxldo_status == NFCSTATUS_SUCCESS) &&
- (gagc_value_status == NFCSTATUS_SUCCESS) &&
- (gagc_nfcld_status == NFCSTATUS_SUCCESS) &&
- (gagc_differential_status == NFCSTATUS_SUCCESS)) {
- antenna_st_status = NFCSTATUS_SUCCESS;
- NXPLOG_NCIHAL_D("phNxpNciHal_AntennaSelfTest - SUCESS\n");
- } else {
- NXPLOG_NCIHAL_D("phNxpNciHal_AntennaSelfTest - FAILED\n");
- }
- } else {
- NXPLOG_NCIHAL_D("phNxpNciHal_AntennaSelfTest - FAILED\n");
- }
-
- NXPLOG_NCIHAL_D("phNxpNciHal_AntennaSelfTest - end\n");
-
- return antenna_st_status;
-}
-
-#endif /*#ifdef NXP_HW_SELF_TEST*/
diff --git a/halimpl/pn54x/tml/phDal4Nfc_messageQueueLib.c b/halimpl/pn54x/tml/phDal4Nfc_messageQueueLib.c
deleted file mode 100644
index f43774d..0000000
--- a/halimpl/pn54x/tml/phDal4Nfc_messageQueueLib.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * DAL independent message queue implementation for Android (can be used under
- * Linux too)
- */
-
-#include <errno.h>
-#include <linux/ipc.h>
-#include <phDal4Nfc_messageQueueLib.h>
-#include <phNxpLog.h>
-#include <pthread.h>
-#include <semaphore.h>
-
-typedef struct phDal4Nfc_message_queue_item {
- phLibNfc_Message_t nMsg;
- struct phDal4Nfc_message_queue_item* pPrev;
- struct phDal4Nfc_message_queue_item* pNext;
-} phDal4Nfc_message_queue_item_t;
-
-typedef struct phDal4Nfc_message_queue {
- phDal4Nfc_message_queue_item_t* pItems;
- pthread_mutex_t nCriticalSectionMutex;
- sem_t nProcessSemaphore;
-
-} phDal4Nfc_message_queue_t;
-
-/*******************************************************************************
-**
-** Function phDal4Nfc_msgget
-**
-** Description Allocates message queue
-**
-** Parameters Ignored, included only for Linux queue API compatibility
-**
-** Returns (int) value of pQueue if successful
-** -1, if failed to allocate memory or to init mutex
-**
-*******************************************************************************/
-intptr_t phDal4Nfc_msgget(key_t key, int msgflg) {
- phDal4Nfc_message_queue_t* pQueue;
- UNUSED(key);
- UNUSED(msgflg);
- pQueue =
- (phDal4Nfc_message_queue_t*)malloc(sizeof(phDal4Nfc_message_queue_t));
- if (pQueue == NULL) return -1;
- memset(pQueue, 0, sizeof(phDal4Nfc_message_queue_t));
- if (pthread_mutex_init(&pQueue->nCriticalSectionMutex, NULL) == -1) {
- free(pQueue);
- return -1;
- }
- if (sem_init(&pQueue->nProcessSemaphore, 0, 0) == -1) {
- free(pQueue);
- return -1;
- }
-
- return ((intptr_t)pQueue);
-}
-
-/*******************************************************************************
-**
-** Function phDal4Nfc_msgrelease
-**
-** Description Releases message queue
-**
-** Parameters msqid - message queue handle
-**
-** Returns None
-**
-*******************************************************************************/
-void phDal4Nfc_msgrelease(intptr_t msqid) {
- phDal4Nfc_message_queue_t* pQueue = (phDal4Nfc_message_queue_t*)msqid;
-
- if (pQueue != NULL) {
- sem_post(&pQueue->nProcessSemaphore);
- usleep(3000);
- if (sem_destroy(&pQueue->nProcessSemaphore)) {
- NXPLOG_TML_E("Failed to destroy semaphore (errno=0x%08x)", errno);
- }
- pthread_mutex_destroy(&pQueue->nCriticalSectionMutex);
-
- free(pQueue);
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phDal4Nfc_msgctl
-**
-** Description Destroys message queue
-**
-** Parameters msqid - message queue handle
-** cmd, buf - ignored, included only for Linux queue API
-** compatibility
-**
-** Returns 0, if successful
-** -1, if invalid handle is passed
-**
-*******************************************************************************/
-int phDal4Nfc_msgctl(intptr_t msqid, int cmd, void* buf) {
- phDal4Nfc_message_queue_t* pQueue;
- phDal4Nfc_message_queue_item_t* p;
- UNUSED(cmd);
- UNUSED(buf);
- if (msqid == 0) return -1;
-
- pQueue = (phDal4Nfc_message_queue_t*)msqid;
- pthread_mutex_lock(&pQueue->nCriticalSectionMutex);
- if (pQueue->pItems != NULL) {
- p = pQueue->pItems;
- while (p->pNext != NULL) {
- p = p->pNext;
- }
- while (p->pPrev != NULL) {
- p = p->pPrev;
- free(p->pNext);
- p->pNext = NULL;
- }
- free(p);
- }
- pQueue->pItems = NULL;
- pthread_mutex_unlock(&pQueue->nCriticalSectionMutex);
- pthread_mutex_destroy(&pQueue->nCriticalSectionMutex);
- free(pQueue);
-
- return 0;
-}
-
-/*******************************************************************************
-**
-** Function phDal4Nfc_msgsnd
-**
-** Description Sends a message to the queue. The message will be added at
-** the end of the queue as appropriate for FIFO policy
-**
-** Parameters msqid - message queue handle
-** msgp - message to be sent
-** msgsz - message size
-** msgflg - ignored
-**
-** Returns 0, if successful
-** -1, if invalid parameter passed or failed to allocate memory
-**
-*******************************************************************************/
-intptr_t phDal4Nfc_msgsnd(intptr_t msqid, phLibNfc_Message_t* msg, int msgflg) {
- phDal4Nfc_message_queue_t* pQueue;
- phDal4Nfc_message_queue_item_t* p;
- phDal4Nfc_message_queue_item_t* pNew;
- UNUSED(msgflg);
- if ((msqid == 0) || (msg == NULL)) return -1;
-
- pQueue = (phDal4Nfc_message_queue_t*)msqid;
- pNew = (phDal4Nfc_message_queue_item_t*)malloc(
- sizeof(phDal4Nfc_message_queue_item_t));
- if (pNew == NULL) return -1;
- memset(pNew, 0, sizeof(phDal4Nfc_message_queue_item_t));
- memcpy(&pNew->nMsg, msg, sizeof(phLibNfc_Message_t));
- pthread_mutex_lock(&pQueue->nCriticalSectionMutex);
-
- if (pQueue->pItems != NULL) {
- p = pQueue->pItems;
- while (p->pNext != NULL) {
- p = p->pNext;
- }
- p->pNext = pNew;
- pNew->pPrev = p;
- } else {
- pQueue->pItems = pNew;
- }
- pthread_mutex_unlock(&pQueue->nCriticalSectionMutex);
-
- sem_post(&pQueue->nProcessSemaphore);
-
- return 0;
-}
-
-/*******************************************************************************
-**
-** Function phDal4Nfc_msgrcv
-**
-** Description Gets the oldest message from the queue.
-** If the queue is empty the function waits (blocks on a mutex)
-** until a message is posted to the queue with phDal4Nfc_msgsnd
-**
-** Parameters msqid - message queue handle
-** msgp - message to be received
-** msgsz - message size
-** msgtyp - ignored
-** msgflg - ignored
-**
-** Returns 0, if successful
-** -1, if invalid parameter passed
-**
-*******************************************************************************/
-int phDal4Nfc_msgrcv(intptr_t msqid, phLibNfc_Message_t* msg, long msgtyp,
- int msgflg) {
- phDal4Nfc_message_queue_t* pQueue;
- phDal4Nfc_message_queue_item_t* p;
- UNUSED(msgflg);
- UNUSED(msgtyp);
- if ((msqid == 0) || (msg == NULL)) return -1;
-
- pQueue = (phDal4Nfc_message_queue_t*)msqid;
-
- sem_wait(&pQueue->nProcessSemaphore);
-
- pthread_mutex_lock(&pQueue->nCriticalSectionMutex);
-
- if (pQueue->pItems != NULL) {
- memcpy(msg, &(pQueue->pItems)->nMsg, sizeof(phLibNfc_Message_t));
- p = pQueue->pItems->pNext;
- free(pQueue->pItems);
- pQueue->pItems = p;
- }
- pthread_mutex_unlock(&pQueue->nCriticalSectionMutex);
-
- return 0;
-}
diff --git a/halimpl/pn54x/tml/phDal4Nfc_messageQueueLib.h b/halimpl/pn54x/tml/phDal4Nfc_messageQueueLib.h
deleted file mode 100644
index 1e0ede2..0000000
--- a/halimpl/pn54x/tml/phDal4Nfc_messageQueueLib.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * DAL independent message queue implementation for Android
- */
-
-#ifndef PHDAL4NFC_MESSAGEQUEUE_H
-#define PHDAL4NFC_MESSAGEQUEUE_H
-
-#include <linux/ipc.h>
-#include <phNfcTypes.h>
-
-intptr_t phDal4Nfc_msgget(key_t key, int msgflg);
-void phDal4Nfc_msgrelease(intptr_t msqid);
-int phDal4Nfc_msgctl(intptr_t msqid, int cmd, void* buf);
-intptr_t phDal4Nfc_msgsnd(intptr_t msqid, phLibNfc_Message_t* msg, int msgflg);
-int phDal4Nfc_msgrcv(intptr_t msqid, phLibNfc_Message_t* msg, long msgtyp,
- int msgflg);
-
-#endif /* PHDAL4NFC_MESSAGEQUEUE_H */
diff --git a/halimpl/pn54x/tml/phOsalNfc_Timer.c b/halimpl/pn54x/tml/phOsalNfc_Timer.c
deleted file mode 100644
index 3f5269d..0000000
--- a/halimpl/pn54x/tml/phOsalNfc_Timer.c
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * OSAL Implementation for Timers.
- */
-
-#include <phNfcCommon.h>
-#include <phNfcTypes.h>
-#include <phNxpLog.h>
-#include <phNxpNciHal.h>
-#include <phOsalNfc_Timer.h>
-#include <signal.h>
-
-#define PH_NFC_MAX_TIMER (5U)
-static phOsalNfc_TimerHandle_t apTimerInfo[PH_NFC_MAX_TIMER];
-
-extern phNxpNciHal_Control_t nxpncihal_ctrl;
-
-/*
- * Defines the base address for generating timerid.
- */
-#define PH_NFC_TIMER_BASE_ADDRESS (100U)
-
-/*
- * Defines the value for invalid timerid returned during timeSetEvent
- */
-#define PH_NFC_TIMER_ID_ZERO (0x00)
-
-/*
- * Invalid timer ID type. This ID used indicate timer creation is failed */
-#define PH_NFC_TIMER_ID_INVALID (0xFFFF)
-
-/* Forward declarations */
-static void phOsalNfc_PostTimerMsg(phLibNfc_Message_t* pMsg);
-static void phOsalNfc_DeferredCall(void* pParams);
-static void phOsalNfc_Timer_Expired(union sigval sv);
-
-/*
- *************************** Function Definitions ******************************
- */
-
-/*******************************************************************************
-**
-** Function phOsalNfc_Timer_Create
-**
-** Description Creates a timer which shall call back the specified function
-** when the timer expires. Fails if OSAL module is not
-** initialized or timers are already occupied
-**
-** Parameters None
-**
-** Returns TimerId
-** TimerId value of PH_OSALNFC_TIMER_ID_INVALID indicates that
-** timer is not created
-**
-*******************************************************************************/
-uint32_t phOsalNfc_Timer_Create(void) {
- /* dwTimerId is also used as an index at which timer object can be stored */
- uint32_t dwTimerId = PH_OSALNFC_TIMER_ID_INVALID;
- static struct sigevent se;
- phOsalNfc_TimerHandle_t* pTimerHandle;
- /* Timer needs to be initialized for timer usage */
-
- se.sigev_notify = SIGEV_THREAD;
- se.sigev_notify_function = phOsalNfc_Timer_Expired;
- se.sigev_notify_attributes = NULL;
- dwTimerId = phUtilNfc_CheckForAvailableTimer();
-
- /* Check whether timers are available, if yes create a timer handle structure
- */
- if ((PH_NFC_TIMER_ID_ZERO != dwTimerId) && (dwTimerId <= PH_NFC_MAX_TIMER)) {
- pTimerHandle = (phOsalNfc_TimerHandle_t*)&apTimerInfo[dwTimerId - 1];
- /* Build the Timer Id to be returned to Caller Function */
- dwTimerId += PH_NFC_TIMER_BASE_ADDRESS;
- se.sigev_value.sival_int = (int)dwTimerId;
- /* Create POSIX timer */
- if (timer_create(CLOCK_REALTIME, &se, &(pTimerHandle->hTimerHandle)) ==
- -1) {
- dwTimerId = PH_NFC_TIMER_ID_INVALID;
- } else {
- /* Set the state to indicate timer is ready */
- pTimerHandle->eState = eTimerIdle;
- /* Store the Timer Id which shall act as flag during check for timer
- * availability */
- pTimerHandle->TimerId = dwTimerId;
- }
- } else {
- dwTimerId = PH_NFC_TIMER_ID_INVALID;
- }
-
- /* Timer ID invalid can be due to Uninitialized state,Non availability of
- * Timer */
- return dwTimerId;
-}
-
-/*******************************************************************************
-**
-** Function phOsalNfc_Timer_Start
-**
-** Description Starts the requested, already created, timer.
-** If the timer is already running, timer stops and restarts
-** with the new timeout value and new callback function in case
-** any ??????
-** Creates a timer which shall call back the specified function
-** when the timer expires
-**
-** Parameters dwTimerId - valid timer ID obtained during timer creation
-** dwRegTimeCnt - requested timeout in milliseconds
-** pApplication_callback - application callback interface to be
-** called when timer expires
-** pContext - caller context, to be passed to the application
-** callback function
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - the operation was successful
-** NFCSTATUS_NOT_INITIALISED - OSAL Module is not initialized
-** NFCSTATUS_INVALID_PARAMETER - invalid parameter passed to
-** the function
-** PH_OSALNFC_TIMER_START_ERROR - timer could not be created
-** due to system error
-**
-*******************************************************************************/
-NFCSTATUS phOsalNfc_Timer_Start(uint32_t dwTimerId, uint32_t dwRegTimeCnt,
- pphOsalNfc_TimerCallbck_t pApplication_callback,
- void* pContext) {
- NFCSTATUS wStartStatus = NFCSTATUS_SUCCESS;
-
- struct itimerspec its;
- uint32_t dwIndex;
- phOsalNfc_TimerHandle_t* pTimerHandle;
- /* Retrieve the index at which the timer handle structure is stored */
- dwIndex = dwTimerId - PH_NFC_TIMER_BASE_ADDRESS - 0x01;
- pTimerHandle = (phOsalNfc_TimerHandle_t*)&apTimerInfo[dwIndex];
- /* OSAL Module needs to be initialized for timer usage */
- /* Check whether the handle provided by user is valid */
- if ((dwIndex < PH_NFC_MAX_TIMER) && (0x00 != pTimerHandle->TimerId) &&
- (NULL != pApplication_callback)) {
- its.it_interval.tv_sec = 0;
- its.it_interval.tv_nsec = 0;
- its.it_value.tv_sec = dwRegTimeCnt / 1000;
- its.it_value.tv_nsec = 1000000 * (dwRegTimeCnt % 1000);
- if (its.it_value.tv_sec == 0 && its.it_value.tv_nsec == 0) {
- /* This would inadvertently stop the timer*/
- its.it_value.tv_nsec = 1;
- }
- pTimerHandle->Application_callback = pApplication_callback;
- pTimerHandle->pContext = pContext;
- pTimerHandle->eState = eTimerRunning;
- /* Arm the timer */
- if ((timer_settime(pTimerHandle->hTimerHandle, 0, &its, NULL)) == -1) {
- wStartStatus = PHNFCSTVAL(CID_NFC_OSAL, PH_OSALNFC_TIMER_START_ERROR);
- }
- } else {
- wStartStatus = PHNFCSTVAL(CID_NFC_OSAL, NFCSTATUS_INVALID_PARAMETER);
- }
-
- return wStartStatus;
-}
-
-/*******************************************************************************
-**
-** Function phOsalNfc_Timer_Stop
-**
-** Description Stops already started timer
-** Allows to stop running timer. In case timer is stopped,
-** timer callback will not be notified any more
-**
-** Parameters dwTimerId - valid timer ID obtained during timer creation
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - the operation was successful
-** NFCSTATUS_NOT_INITIALISED - OSAL Module is not initialized
-** NFCSTATUS_INVALID_PARAMETER - invalid parameter passed to
-** the function
-** PH_OSALNFC_TIMER_STOP_ERROR - timer could not be stopped due
-** to system error
-**
-*******************************************************************************/
-NFCSTATUS phOsalNfc_Timer_Stop(uint32_t dwTimerId) {
- NFCSTATUS wStopStatus = NFCSTATUS_SUCCESS;
- static struct itimerspec its = {{0, 0}, {0, 0}};
-
- uint32_t dwIndex;
- phOsalNfc_TimerHandle_t* pTimerHandle;
- dwIndex = dwTimerId - PH_NFC_TIMER_BASE_ADDRESS - 0x01;
- pTimerHandle = (phOsalNfc_TimerHandle_t*)&apTimerInfo[dwIndex];
- /* OSAL Module and Timer needs to be initialized for timer usage */
- /* Check whether the TimerId provided by user is valid */
- if ((dwIndex < PH_NFC_MAX_TIMER) && (0x00 != pTimerHandle->TimerId) &&
- (pTimerHandle->eState != eTimerIdle)) {
- /* Stop the timer only if the callback has not been invoked */
- if (pTimerHandle->eState == eTimerRunning) {
- if ((timer_settime(pTimerHandle->hTimerHandle, 0, &its, NULL)) == -1) {
- wStopStatus = PHNFCSTVAL(CID_NFC_OSAL, PH_OSALNFC_TIMER_STOP_ERROR);
- } else {
- /* Change the state of timer to Stopped */
- pTimerHandle->eState = eTimerStopped;
- }
- }
- } else {
- wStopStatus = PHNFCSTVAL(CID_NFC_OSAL, NFCSTATUS_INVALID_PARAMETER);
- }
-
- return wStopStatus;
-}
-
-/*******************************************************************************
-**
-** Function phOsalNfc_Timer_Delete
-**
-** Description Deletes previously created timer
-** Allows to delete previously created timer. In case timer is
-** running, it is first stopped and then deleted
-**
-** Parameters dwTimerId - valid timer ID obtained during timer creation
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - the operation was successful
-** NFCSTATUS_NOT_INITIALISED - OSAL Module is not initialized
-** NFCSTATUS_INVALID_PARAMETER - invalid parameter passed to
-** the function
-** PH_OSALNFC_TIMER_DELETE_ERROR - timer could not be stopped
-** due to system error
-**
-*******************************************************************************/
-NFCSTATUS phOsalNfc_Timer_Delete(uint32_t dwTimerId) {
- NFCSTATUS wDeleteStatus = NFCSTATUS_SUCCESS;
-
- uint32_t dwIndex;
- phOsalNfc_TimerHandle_t* pTimerHandle;
- dwIndex = dwTimerId - PH_NFC_TIMER_BASE_ADDRESS - 0x01;
- pTimerHandle = (phOsalNfc_TimerHandle_t*)&apTimerInfo[dwIndex];
- /* OSAL Module and Timer needs to be initialized for timer usage */
-
- /* Check whether the TimerId passed by user is valid and Deregistering of
- * timer is successful */
- if ((dwIndex < PH_NFC_MAX_TIMER) && (0x00 != pTimerHandle->TimerId) &&
- (NFCSTATUS_SUCCESS == phOsalNfc_CheckTimerPresence(pTimerHandle))) {
- /* Cancel the timer before deleting */
- if (timer_delete(pTimerHandle->hTimerHandle) == -1) {
- wDeleteStatus = PHNFCSTVAL(CID_NFC_OSAL, PH_OSALNFC_TIMER_DELETE_ERROR);
- }
- /* Clear Timer structure used to store timer related data */
- memset(pTimerHandle, (uint8_t)0x00, sizeof(phOsalNfc_TimerHandle_t));
- } else {
- wDeleteStatus = PHNFCSTVAL(CID_NFC_OSAL, NFCSTATUS_INVALID_PARAMETER);
- }
- return wDeleteStatus;
-}
-
-/*******************************************************************************
-**
-** Function phOsalNfc_Timer_Cleanup
-**
-** Description Deletes all previously created timers
-** Allows to delete previously created timers. In case timer is
-** running, it is first stopped and then deleted
-**
-** Parameters None
-**
-** Returns None
-**
-*******************************************************************************/
-void phOsalNfc_Timer_Cleanup(void) {
- /* Delete all timers */
- uint32_t dwIndex;
- phOsalNfc_TimerHandle_t* pTimerHandle;
- for (dwIndex = 0; dwIndex < PH_NFC_MAX_TIMER; dwIndex++) {
- pTimerHandle = (phOsalNfc_TimerHandle_t*)&apTimerInfo[dwIndex];
- /* OSAL Module and Timer needs to be initialized for timer usage */
-
- /* Check whether the TimerId passed by user is valid and Deregistering of
- * timer is successful */
- if ((0x00 != pTimerHandle->TimerId) &&
- (NFCSTATUS_SUCCESS == phOsalNfc_CheckTimerPresence(pTimerHandle))) {
- /* Cancel the timer before deleting */
- if (timer_delete(pTimerHandle->hTimerHandle) == -1) {
- NXPLOG_TML_E("timer %d delete error!", dwIndex);
- }
- /* Clear Timer structure used to store timer related data */
- memset(pTimerHandle, (uint8_t)0x00, sizeof(phOsalNfc_TimerHandle_t));
- }
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phOsalNfc_DeferredCall
-**
-** Description Invokes the timer callback function after timer expiration.
-** Shall invoke the callback function registered by the timer
-** caller function
-**
-** Parameters pParams - parameters indicating the ID of the timer
-**
-** Returns None -
-**
-*******************************************************************************/
-static void phOsalNfc_DeferredCall(void* pParams) {
- /* Retrieve the timer id from the parameter */
- uint32_t dwIndex;
- phOsalNfc_TimerHandle_t* pTimerHandle;
- if (NULL != pParams) {
- /* Retrieve the index at which the timer handle structure is stored */
- dwIndex = (uintptr_t)pParams - PH_NFC_TIMER_BASE_ADDRESS - 0x01;
- pTimerHandle = (phOsalNfc_TimerHandle_t*)&apTimerInfo[dwIndex];
- if (pTimerHandle->Application_callback != NULL) {
- /* Invoke the callback function with osal Timer ID */
- pTimerHandle->Application_callback((uintptr_t)pParams,
- pTimerHandle->pContext);
- }
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phOsalNfc_PostTimerMsg
-**
-** Description Posts message on the user thread
-** Shall be invoked upon expiration of a timer
-** Shall post message on user thread through which timer
-** callback function shall be invoked
-**
-** Parameters pMsg - pointer to the message structure posted on user
-** thread
-**
-** Returns None
-**
-*******************************************************************************/
-static void phOsalNfc_PostTimerMsg(phLibNfc_Message_t* pMsg) {
- (void)phDal4Nfc_msgsnd(
- nxpncihal_ctrl.gDrvCfg
- .nClientId /*gpphOsalNfc_Context->dwCallbackThreadID*/,
- pMsg, 0);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phOsalNfc_Timer_Expired
-**
-** Description posts message upon expiration of timer
-** Shall be invoked when any one timer is expired
-** Shall post message on user thread to invoke respective
-** callback function provided by the caller of Timer function
-**
-** Returns None
-**
-*******************************************************************************/
-static void phOsalNfc_Timer_Expired(union sigval sv) {
- uint32_t dwIndex;
- phOsalNfc_TimerHandle_t* pTimerHandle;
-
- dwIndex = ((uint32_t)(sv.sival_int)) - PH_NFC_TIMER_BASE_ADDRESS - 0x01;
- pTimerHandle = (phOsalNfc_TimerHandle_t*)&apTimerInfo[dwIndex];
- /* Timer is stopped when callback function is invoked */
- pTimerHandle->eState = eTimerStopped;
-
- pTimerHandle->tDeferedCallInfo.pDeferedCall = &phOsalNfc_DeferredCall;
- pTimerHandle->tDeferedCallInfo.pParam = (void*)((intptr_t)(sv.sival_int));
-
- pTimerHandle->tOsalMessage.eMsgType = PH_LIBNFC_DEFERREDCALL_MSG;
- pTimerHandle->tOsalMessage.pMsgData = (void*)&pTimerHandle->tDeferedCallInfo;
-
- /* Post a message on the queue to invoke the function */
- phOsalNfc_PostTimerMsg((phLibNfc_Message_t*)&pTimerHandle->tOsalMessage);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phUtilNfc_CheckForAvailableTimer
-**
-** Description Find an available timer id
-**
-** Parameters void
-**
-** Returns Available timer id
-**
-*******************************************************************************/
-uint32_t phUtilNfc_CheckForAvailableTimer(void) {
- /* Variable used to store the index at which the object structure details
- can be stored. Initialize it as not available. */
- uint32_t dwIndex = 0x00;
- uint32_t dwRetval = 0x00;
-
- /* Check whether Timer object can be created */
- for (dwIndex = 0x00; ((dwIndex < PH_NFC_MAX_TIMER) && (0x00 == dwRetval));
- dwIndex++) {
- if (!(apTimerInfo[dwIndex].TimerId)) {
- dwRetval = (dwIndex + 0x01);
- }
- }
-
- return (dwRetval);
-}
-
-/*******************************************************************************
-**
-** Function phOsalNfc_CheckTimerPresence
-**
-** Description Checks the requested timer is present or not
-**
-** Parameters pObjectHandle - timer context
-**
-** Returns NFCSTATUS_SUCCESS if found
-** Other value if not found
-**
-*******************************************************************************/
-NFCSTATUS phOsalNfc_CheckTimerPresence(void* pObjectHandle) {
- uint32_t dwIndex;
- NFCSTATUS wRegisterStatus = NFCSTATUS_INVALID_PARAMETER;
-
- for (dwIndex = 0x00;
- ((dwIndex < PH_NFC_MAX_TIMER) && (wRegisterStatus != NFCSTATUS_SUCCESS));
- dwIndex++) {
- /* For Timer, check whether the requested handle is present or not */
- if (((&apTimerInfo[dwIndex]) == (phOsalNfc_TimerHandle_t*)pObjectHandle) &&
- (apTimerInfo[dwIndex].TimerId)) {
- wRegisterStatus = NFCSTATUS_SUCCESS;
- }
- }
- return wRegisterStatus;
-}
diff --git a/halimpl/pn54x/tml/phOsalNfc_Timer.h b/halimpl/pn54x/tml/phOsalNfc_Timer.h
deleted file mode 100644
index 5315455..0000000
--- a/halimpl/pn54x/tml/phOsalNfc_Timer.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * OSAL header files related to Timer functions.
- */
-
-#ifndef PHOSALNFC_TIMER_H
-#define PHOSALNFC_TIMER_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-************************* Include Files ****************************************
-*/
-
-/*
- * Timer callback interface which will be called once registered timer
- * time out expires.
- * TimerId - Timer Id for which callback is called.
- * pContext - Parameter to be passed to the callback function
- */
-typedef void (*pphOsalNfc_TimerCallbck_t)(uint32_t TimerId, void* pContext);
-
-/*
- * The Timer could not be created due to a
- * system error */
-#define PH_OSALNFC_TIMER_CREATE_ERROR (0X00E0)
-
-/*
- * The Timer could not be started due to a
- * system error or invalid handle */
-#define PH_OSALNFC_TIMER_START_ERROR (0X00E1)
-
-/*
- * The Timer could not be stopped due to a
- * system error or invalid handle */
-#define PH_OSALNFC_TIMER_STOP_ERROR (0X00E2)
-
-/*
- * The Timer could not be deleted due to a
- * system error or invalid handle */
-#define PH_OSALNFC_TIMER_DELETE_ERROR (0X00E3)
-
-/*
- * Invalid timer ID type.This ID used indicate timer creation is failed */
-#define PH_OSALNFC_TIMER_ID_INVALID (0xFFFF)
-
-/*
- * OSAL timer message .This message type will be posted to
- * calling application thread.*/
-#define PH_OSALNFC_TIMER_MSG (0x315)
-
-/*
-***************************Globals,Structure and Enumeration ******************
-*/
-
-uint32_t phOsalNfc_Timer_Create(void);
-NFCSTATUS phOsalNfc_Timer_Start(uint32_t dwTimerId, uint32_t dwRegTimeCnt,
- pphOsalNfc_TimerCallbck_t pApplication_callback,
- void* pContext);
-NFCSTATUS phOsalNfc_Timer_Stop(uint32_t dwTimerId);
-NFCSTATUS phOsalNfc_Timer_Delete(uint32_t dwTimerId);
-void phOsalNfc_Timer_Cleanup(void);
-uint32_t phUtilNfc_CheckForAvailableTimer(void);
-NFCSTATUS phOsalNfc_CheckTimerPresence(void* pObjectHandle);
-
-#ifdef __cplusplus
-}
-#endif /* C++ Compilation guard */
-#endif /* PHOSALNFC_TIMER_H */
diff --git a/halimpl/pn54x/tml/phTmlNfc.c b/halimpl/pn54x/tml/phTmlNfc.c
deleted file mode 100644
index 8aad810..0000000
--- a/halimpl/pn54x/tml/phTmlNfc.c
+++ /dev/null
@@ -1,949 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * TML Implementation.
- */
-
-#include <phDal4Nfc_messageQueueLib.h>
-#include <phNxpLog.h>
-#include <phNxpNciHal_utils.h>
-#include <phOsalNfc_Timer.h>
-#include <phTmlNfc.h>
-#include <phTmlNfc_i2c.h>
-
-/*
- * Duration of Timer to wait after sending an Nci packet
- */
-#define PHTMLNFC_MAXTIME_RETRANSMIT (200U)
-#define MAX_WRITE_RETRY_COUNT 0x03
-/* Retry Count = Standby Recovery time of NFCC / Retransmission time + 1 */
-static uint8_t bCurrentRetryCount = (2000 / PHTMLNFC_MAXTIME_RETRANSMIT) + 1;
-
-/* Value to reset variables of TML */
-#define PH_TMLNFC_RESET_VALUE (0x00)
-
-/* Indicates a Initial or offset value */
-#define PH_TMLNFC_VALUE_ONE (0x01)
-
-/* Initialize Context structure pointer used to access context structure */
-phTmlNfc_Context_t* gpphTmlNfc_Context = NULL;
-phTmlNfc_i2cfragmentation_t fragmentation_enabled = I2C_FRAGMENATATION_DISABLED;
-/* Local Function prototypes */
-static NFCSTATUS phTmlNfc_StartThread(void);
-static void phTmlNfc_CleanUp(void);
-static void phTmlNfc_ReadDeferredCb(void* pParams);
-static void phTmlNfc_WriteDeferredCb(void* pParams);
-static void phTmlNfc_TmlThread(void* pParam);
-static void phTmlNfc_TmlWriterThread(void* pParam);
-static void phTmlNfc_ReTxTimerCb(uint32_t dwTimerId, void* pContext);
-static NFCSTATUS phTmlNfc_InitiateTimer(void);
-
-/* Function definitions */
-
-/*******************************************************************************
-**
-** Function phTmlNfc_Init
-**
-** Description Provides initialization of TML layer and hardware interface
-** Configures given hardware interface and sends handle to the
-** caller
-**
-** Parameters pConfig - TML configuration details as provided by the upper
-** layer
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - initialization successful
-** NFCSTATUS_INVALID_PARAMETER - at least one parameter is
-** invalid
-** NFCSTATUS_FAILED - initialization failed (for example,
-** unable to open hardware interface)
-** NFCSTATUS_INVALID_DEVICE - device has not been opened or has
-** been disconnected
-**
-*******************************************************************************/
-NFCSTATUS phTmlNfc_Init(pphTmlNfc_Config_t pConfig) {
- NFCSTATUS wInitStatus = NFCSTATUS_SUCCESS;
-
- /* Check if TML layer is already Initialized */
- if (NULL != gpphTmlNfc_Context) {
- /* TML initialization is already completed */
- wInitStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_ALREADY_INITIALISED);
- }
- /* Validate Input parameters */
- else if ((NULL == pConfig) ||
- (PH_TMLNFC_RESET_VALUE == pConfig->dwGetMsgThreadId)) {
- /*Parameters passed to TML init are wrong */
- wInitStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_INVALID_PARAMETER);
- } else {
- /* Allocate memory for TML context */
- gpphTmlNfc_Context = malloc(sizeof(phTmlNfc_Context_t));
-
- if (NULL == gpphTmlNfc_Context) {
- wInitStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_FAILED);
- } else {
- /* Initialise all the internal TML variables */
- memset(gpphTmlNfc_Context, PH_TMLNFC_RESET_VALUE,
- sizeof(phTmlNfc_Context_t));
- /* Make sure that the thread runs once it is created */
- gpphTmlNfc_Context->bThreadDone = 1;
-
- /* Open the device file to which data is read/written */
- wInitStatus = phTmlNfc_i2c_open_and_configure(
- pConfig, &(gpphTmlNfc_Context->pDevHandle));
-
- if (NFCSTATUS_SUCCESS != wInitStatus) {
- wInitStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_INVALID_DEVICE);
- gpphTmlNfc_Context->pDevHandle = NULL;
- } else {
- gpphTmlNfc_Context->tReadInfo.bEnable = 0;
- gpphTmlNfc_Context->tWriteInfo.bEnable = 0;
- gpphTmlNfc_Context->tReadInfo.bThreadBusy = false;
- gpphTmlNfc_Context->tWriteInfo.bThreadBusy = false;
-
- if (0 != sem_init(&gpphTmlNfc_Context->rxSemaphore, 0, 0)) {
- wInitStatus = NFCSTATUS_FAILED;
- } else if (0 != sem_init(&gpphTmlNfc_Context->txSemaphore, 0, 0)) {
- wInitStatus = NFCSTATUS_FAILED;
- } else if (0 != sem_init(&gpphTmlNfc_Context->postMsgSemaphore, 0, 0)) {
- wInitStatus = NFCSTATUS_FAILED;
- } else {
- sem_post(&gpphTmlNfc_Context->postMsgSemaphore);
- /* Start TML thread (to handle write and read operations) */
- if (NFCSTATUS_SUCCESS != phTmlNfc_StartThread()) {
- wInitStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_FAILED);
- } else {
- /* Create Timer used for Retransmission of NCI packets */
- gpphTmlNfc_Context->dwTimerId = phOsalNfc_Timer_Create();
- if (PH_OSALNFC_TIMER_ID_INVALID != gpphTmlNfc_Context->dwTimerId) {
- /* Store the Thread Identifier to which Message is to be posted */
- gpphTmlNfc_Context->dwCallbackThreadId =
- pConfig->dwGetMsgThreadId;
- /* Enable retransmission of Nci packet & set retry count to
- * default */
- gpphTmlNfc_Context->eConfig = phTmlNfc_e_DisableRetrans;
- /* Retry Count = Standby Recovery time of NFCC / Retransmission
- * time + 1 */
- gpphTmlNfc_Context->bRetryCount =
- (2000 / PHTMLNFC_MAXTIME_RETRANSMIT) + 1;
- gpphTmlNfc_Context->bWriteCbInvoked = false;
- } else {
- wInitStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_FAILED);
- }
- }
- }
- }
- }
- }
- /* Clean up all the TML resources if any error */
- if (NFCSTATUS_SUCCESS != wInitStatus) {
- /* Clear all handles and memory locations initialized during init */
- phTmlNfc_CleanUp();
- }
-
- return wInitStatus;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_ConfigNciPktReTx
-**
-** Description Provides Enable/Disable Retransmission of NCI packets
-** Needed in case of Timeout between Transmission and Reception
-** of NCI packets. Retransmission can be enabled only if
-** standby mode is enabled
-**
-** Parameters eConfig - values from phTmlNfc_ConfigRetrans_t
-** bRetryCount - Number of times Nci packets shall be
-** retransmitted (default = 3)
-**
-** Returns None
-**
-*******************************************************************************/
-void phTmlNfc_ConfigNciPktReTx(phTmlNfc_ConfigRetrans_t eConfiguration,
- uint8_t bRetryCounter) {
- /* Enable/Disable Retransmission */
-
- gpphTmlNfc_Context->eConfig = eConfiguration;
- if (phTmlNfc_e_EnableRetrans == eConfiguration) {
- /* Check whether Retry counter passed is valid */
- if (0 != bRetryCounter) {
- gpphTmlNfc_Context->bRetryCount = bRetryCounter;
- }
- /* Set retry counter to its default value */
- else {
- /* Retry Count = Standby Recovery time of NFCC / Retransmission time + 1
- */
- gpphTmlNfc_Context->bRetryCount =
- (2000 / PHTMLNFC_MAXTIME_RETRANSMIT) + 1;
- }
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_StartThread
-**
-** Description Initializes comport, reader and writer threads
-**
-** Parameters None
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - threads initialized successfully
-** NFCSTATUS_FAILED - initialization failed due to system error
-**
-*******************************************************************************/
-static NFCSTATUS phTmlNfc_StartThread(void) {
- NFCSTATUS wStartStatus = NFCSTATUS_SUCCESS;
- void* h_threadsEvent = 0x00;
- uint32_t dwEvent;
- int pthread_create_status = 0;
-
- /* Create Reader and Writer threads */
- pthread_create_status =
- pthread_create(&gpphTmlNfc_Context->readerThread, NULL,
- (void*)&phTmlNfc_TmlThread, (void*)h_threadsEvent);
- if (0 != pthread_create_status) {
- wStartStatus = NFCSTATUS_FAILED;
- } else {
- /*Start Writer Thread*/
- pthread_create_status =
- pthread_create(&gpphTmlNfc_Context->writerThread, NULL,
- (void*)&phTmlNfc_TmlWriterThread, (void*)h_threadsEvent);
- if (0 != pthread_create_status) {
- wStartStatus = NFCSTATUS_FAILED;
- }
- }
-
- return wStartStatus;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_ReTxTimerCb
-**
-** Description This is the timer callback function after timer expiration.
-**
-** Parameters dwThreadId - id of the thread posting message
-** pContext - context provided by upper layer
-**
-** Returns None
-**
-*******************************************************************************/
-static void phTmlNfc_ReTxTimerCb(uint32_t dwTimerId, void* pContext) {
- if ((gpphTmlNfc_Context->dwTimerId == dwTimerId) && (NULL == pContext)) {
- /* If Retry Count has reached its limit,Retransmit Nci
- packet */
- if (0 == bCurrentRetryCount) {
- /* Since the count has reached its limit,return from timer callback
- Upper layer Timeout would have happened */
- } else {
- bCurrentRetryCount--;
- gpphTmlNfc_Context->tWriteInfo.bThreadBusy = true;
- gpphTmlNfc_Context->tWriteInfo.bEnable = 1;
- }
- sem_post(&gpphTmlNfc_Context->txSemaphore);
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_InitiateTimer
-**
-** Description Start a timer for Tx and Rx thread.
-**
-** Parameters void
-**
-** Returns NFC status
-**
-*******************************************************************************/
-static NFCSTATUS phTmlNfc_InitiateTimer(void) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
-
- /* Start Timer once Nci packet is sent */
- wStatus = phOsalNfc_Timer_Start(gpphTmlNfc_Context->dwTimerId,
- (uint32_t)PHTMLNFC_MAXTIME_RETRANSMIT,
- phTmlNfc_ReTxTimerCb, NULL);
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_TmlThread
-**
-** Description Read the data from the lower layer driver
-**
-** Parameters pParam - parameters for Writer thread function
-**
-** Returns None
-**
-*******************************************************************************/
-static void phTmlNfc_TmlThread(void* pParam) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- int32_t dwNoBytesWrRd = PH_TMLNFC_RESET_VALUE;
- uint8_t temp[260];
- /* Transaction info buffer to be passed to Callback Thread */
- static phTmlNfc_TransactInfo_t tTransactionInfo;
- /* Structure containing Tml callback function and parameters to be invoked
- by the callback thread */
- static phLibNfc_DeferredCall_t tDeferredInfo;
- /* Initialize Message structure to post message onto Callback Thread */
- static phLibNfc_Message_t tMsg;
- UNUSED(pParam);
- NXPLOG_TML_D("PN54X - Tml Reader Thread Started................\n");
-
- /* Writer thread loop shall be running till shutdown is invoked */
- while (gpphTmlNfc_Context->bThreadDone) {
- /* If Tml write is requested */
- /* Set the variable to success initially */
- wStatus = NFCSTATUS_SUCCESS;
- sem_wait(&gpphTmlNfc_Context->rxSemaphore);
-
- /* If Tml read is requested */
- if (1 == gpphTmlNfc_Context->tReadInfo.bEnable) {
- NXPLOG_TML_D("PN54X - Read requested.....\n");
- /* Set the variable to success initially */
- wStatus = NFCSTATUS_SUCCESS;
-
- /* Variable to fetch the actual number of bytes read */
- dwNoBytesWrRd = PH_TMLNFC_RESET_VALUE;
-
- /* Read the data from the file onto the buffer */
- if (NULL != gpphTmlNfc_Context->pDevHandle) {
- NXPLOG_TML_D("PN54X - Invoking I2C Read.....\n");
- dwNoBytesWrRd =
- phTmlNfc_i2c_read(gpphTmlNfc_Context->pDevHandle, temp, 260);
-
- if (-1 == dwNoBytesWrRd) {
- NXPLOG_TML_E("PN54X - Error in I2C Read.....\n");
- sem_post(&gpphTmlNfc_Context->rxSemaphore);
- } else if (dwNoBytesWrRd > 260) {
- NXPLOG_TML_E("Numer of bytes read exceeds the limit 260.....\n");
- sem_post(&gpphTmlNfc_Context->rxSemaphore);
- } else {
- memcpy(gpphTmlNfc_Context->tReadInfo.pBuffer, temp, dwNoBytesWrRd);
-
- NXPLOG_TML_D("PN54X - I2C Read successful.....\n");
- /* This has to be reset only after a successful read */
- gpphTmlNfc_Context->tReadInfo.bEnable = 0;
- if ((phTmlNfc_e_EnableRetrans == gpphTmlNfc_Context->eConfig) &&
- (0x00 != (gpphTmlNfc_Context->tReadInfo.pBuffer[0] & 0xE0))) {
- NXPLOG_TML_D("PN54X - Retransmission timer stopped.....\n");
- /* Stop Timer to prevent Retransmission */
- uint32_t timerStatus =
- phOsalNfc_Timer_Stop(gpphTmlNfc_Context->dwTimerId);
- if (NFCSTATUS_SUCCESS != timerStatus) {
- NXPLOG_TML_E("PN54X - timer stopped returned failure.....\n");
- } else {
- gpphTmlNfc_Context->bWriteCbInvoked = false;
- }
- }
- if (gpphTmlNfc_Context->tWriteInfo.bThreadBusy) {
- NXPLOG_TML_D("Delay Read if write thread is busy");
- usleep(2000); /*2ms delay to give prio to write complete */
- }
- /* Update the actual number of bytes read including header */
- gpphTmlNfc_Context->tReadInfo.wLength = (uint16_t)(dwNoBytesWrRd);
- phNxpNciHal_print_packet("RECV",
- gpphTmlNfc_Context->tReadInfo.pBuffer,
- gpphTmlNfc_Context->tReadInfo.wLength);
-
- dwNoBytesWrRd = PH_TMLNFC_RESET_VALUE;
-
- /* Fill the Transaction info structure to be passed to Callback
- * Function */
- tTransactionInfo.wStatus = wStatus;
- tTransactionInfo.pBuff = gpphTmlNfc_Context->tReadInfo.pBuffer;
- /* Actual number of bytes read is filled in the structure */
- tTransactionInfo.wLength = gpphTmlNfc_Context->tReadInfo.wLength;
-
- /* Read operation completed successfully. Post a Message onto Callback
- * Thread*/
- /* Prepare the message to be posted on User thread */
- tDeferredInfo.pCallback = &phTmlNfc_ReadDeferredCb;
- tDeferredInfo.pParameter = &tTransactionInfo;
- tMsg.eMsgType = PH_LIBNFC_DEFERREDCALL_MSG;
- tMsg.pMsgData = &tDeferredInfo;
- tMsg.Size = sizeof(tDeferredInfo);
- NXPLOG_TML_D("PN54X - Posting read message.....\n");
- phTmlNfc_DeferredCall(gpphTmlNfc_Context->dwCallbackThreadId, &tMsg);
- }
- } else {
- NXPLOG_TML_D("PN54X -gpphTmlNfc_Context->pDevHandle is NULL");
- }
- } else {
- NXPLOG_TML_D("PN54X - read request NOT enabled");
- usleep(10 * 1000);
- }
- } /* End of While loop */
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_TmlWriterThread
-**
-** Description Writes the requested data onto the lower layer driver
-**
-** Parameters pParam - context provided by upper layer
-**
-** Returns None
-**
-*******************************************************************************/
-static void phTmlNfc_TmlWriterThread(void* pParam) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
- int32_t dwNoBytesWrRd = PH_TMLNFC_RESET_VALUE;
- /* Transaction info buffer to be passed to Callback Thread */
- static phTmlNfc_TransactInfo_t tTransactionInfo;
- /* Structure containing Tml callback function and parameters to be invoked
- by the callback thread */
- static phLibNfc_DeferredCall_t tDeferredInfo;
- /* Initialize Message structure to post message onto Callback Thread */
- static phLibNfc_Message_t tMsg;
- /* In case of I2C Write Retry */
- static uint16_t retry_cnt;
- UNUSED(pParam);
- NXPLOG_TML_D("PN54X - Tml Writer Thread Started................\n");
-
- /* Writer thread loop shall be running till shutdown is invoked */
- while (gpphTmlNfc_Context->bThreadDone) {
- NXPLOG_TML_D("PN54X - Tml Writer Thread Running................\n");
- sem_wait(&gpphTmlNfc_Context->txSemaphore);
- /* If Tml write is requested */
- if (1 == gpphTmlNfc_Context->tWriteInfo.bEnable) {
- NXPLOG_TML_D("PN54X - Write requested.....\n");
- /* Set the variable to success initially */
- wStatus = NFCSTATUS_SUCCESS;
- if (NULL != gpphTmlNfc_Context->pDevHandle) {
- retry:
- gpphTmlNfc_Context->tWriteInfo.bEnable = 0;
- /* Variable to fetch the actual number of bytes written */
- dwNoBytesWrRd = PH_TMLNFC_RESET_VALUE;
- /* Write the data in the buffer onto the file */
- NXPLOG_TML_D("PN54X - Invoking I2C Write.....\n");
- dwNoBytesWrRd =
- phTmlNfc_i2c_write(gpphTmlNfc_Context->pDevHandle,
- gpphTmlNfc_Context->tWriteInfo.pBuffer,
- gpphTmlNfc_Context->tWriteInfo.wLength);
-
- /* Try I2C Write Five Times, if it fails : Raju */
- if (-1 == dwNoBytesWrRd) {
- if (getDownloadFlag() == true) {
- if (retry_cnt++ < MAX_WRITE_RETRY_COUNT) {
- NXPLOG_NCIHAL_E("PN54X - Error in I2C Write - Retry 0x%x",
- retry_cnt);
- // Add a 10 ms delay to ensure NFCC is not still in stand by mode.
- usleep(10 * 1000);
- goto retry;
- }
- }
- NXPLOG_TML_E("PN54X - Error in I2C Write.....\n");
- wStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_FAILED);
- } else {
- phNxpNciHal_print_packet("SEND",
- gpphTmlNfc_Context->tWriteInfo.pBuffer,
- gpphTmlNfc_Context->tWriteInfo.wLength);
- }
- retry_cnt = 0;
- if (NFCSTATUS_SUCCESS == wStatus) {
- NXPLOG_TML_D("PN54X - I2C Write successful.....\n");
- dwNoBytesWrRd = PH_TMLNFC_VALUE_ONE;
- }
- /* Fill the Transaction info structure to be passed to Callback Function
- */
- tTransactionInfo.wStatus = wStatus;
- tTransactionInfo.pBuff = gpphTmlNfc_Context->tWriteInfo.pBuffer;
- /* Actual number of bytes written is filled in the structure */
- tTransactionInfo.wLength = (uint16_t)dwNoBytesWrRd;
-
- /* Prepare the message to be posted on the User thread */
- tDeferredInfo.pCallback = &phTmlNfc_WriteDeferredCb;
- tDeferredInfo.pParameter = &tTransactionInfo;
- /* Write operation completed successfully. Post a Message onto Callback
- * Thread*/
- tMsg.eMsgType = PH_LIBNFC_DEFERREDCALL_MSG;
- tMsg.pMsgData = &tDeferredInfo;
- tMsg.Size = sizeof(tDeferredInfo);
-
- /* Check whether Retransmission needs to be started,
- * If yes, Post message only if
- * case 1. Message is not posted &&
- * case 11. Write status is success ||
- * case 12. Last retry of write is also failure
- */
- if ((phTmlNfc_e_EnableRetrans == gpphTmlNfc_Context->eConfig) &&
- (0x00 != (gpphTmlNfc_Context->tWriteInfo.pBuffer[0] & 0xE0))) {
- if (gpphTmlNfc_Context->bWriteCbInvoked == false) {
- if ((NFCSTATUS_SUCCESS == wStatus) || (bCurrentRetryCount == 0)) {
- NXPLOG_TML_D("PN54X - Posting Write message.....\n");
- phTmlNfc_DeferredCall(gpphTmlNfc_Context->dwCallbackThreadId,
- &tMsg);
- gpphTmlNfc_Context->bWriteCbInvoked = true;
- }
- }
- } else {
- NXPLOG_TML_D("PN54X - Posting Fresh Write message.....\n");
- phTmlNfc_DeferredCall(gpphTmlNfc_Context->dwCallbackThreadId, &tMsg);
- }
- } else {
- NXPLOG_TML_D("PN54X - gpphTmlNfc_Context->pDevHandle is NULL");
- }
-
- /* If Data packet is sent, then NO retransmission */
- if ((phTmlNfc_e_EnableRetrans == gpphTmlNfc_Context->eConfig) &&
- (0x00 != (gpphTmlNfc_Context->tWriteInfo.pBuffer[0] & 0xE0))) {
- NXPLOG_TML_D("PN54X - Starting timer for Retransmission case");
- wStatus = phTmlNfc_InitiateTimer();
- if (NFCSTATUS_SUCCESS != wStatus) {
- /* Reset Variables used for Retransmission */
- NXPLOG_TML_D("PN54X - Retransmission timer initiate failed");
- gpphTmlNfc_Context->tWriteInfo.bEnable = 0;
- bCurrentRetryCount = 0;
- }
- }
- } else {
- NXPLOG_TML_D("PN54X - Write request NOT enabled");
- usleep(10000);
- }
-
- } /* End of While loop */
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_CleanUp
-**
-** Description Clears all handles opened during TML initialization
-**
-** Parameters None
-**
-** Returns None
-**
-*******************************************************************************/
-static void phTmlNfc_CleanUp(void) {
- NFCSTATUS wRetval = NFCSTATUS_SUCCESS;
-
- if (NULL == gpphTmlNfc_Context) {
- return;
- }
- if (NULL != gpphTmlNfc_Context->pDevHandle) {
- (void)phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 0);
- gpphTmlNfc_Context->bThreadDone = 0;
- }
- sem_destroy(&gpphTmlNfc_Context->rxSemaphore);
- sem_destroy(&gpphTmlNfc_Context->txSemaphore);
- sem_destroy(&gpphTmlNfc_Context->postMsgSemaphore);
- phTmlNfc_i2c_close(gpphTmlNfc_Context->pDevHandle);
- gpphTmlNfc_Context->pDevHandle = NULL;
- /* Clear memory allocated for storing Context variables */
- free((void*)gpphTmlNfc_Context);
- /* Set the pointer to NULL to indicate De-Initialization */
- gpphTmlNfc_Context = NULL;
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_Shutdown
-**
-** Description Uninitializes TML layer and hardware interface
-**
-** Parameters None
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - TML configuration released successfully
-** NFCSTATUS_INVALID_PARAMETER - at least one parameter is
-** invalid
-** NFCSTATUS_FAILED - un-initialization failed (example: unable
-** to close interface)
-**
-*******************************************************************************/
-NFCSTATUS phTmlNfc_Shutdown(void) {
- NFCSTATUS wShutdownStatus = NFCSTATUS_SUCCESS;
-
- /* Check whether TML is Initialized */
- if (NULL != gpphTmlNfc_Context) {
- /* Reset thread variable to terminate the thread */
- gpphTmlNfc_Context->bThreadDone = 0;
- usleep(1000);
- /* Clear All the resources allocated during initialization */
- sem_post(&gpphTmlNfc_Context->rxSemaphore);
- usleep(1000);
- sem_post(&gpphTmlNfc_Context->txSemaphore);
- usleep(1000);
- sem_post(&gpphTmlNfc_Context->postMsgSemaphore);
- usleep(1000);
- sem_post(&gpphTmlNfc_Context->postMsgSemaphore);
- usleep(1000);
- if (0 != pthread_join(gpphTmlNfc_Context->readerThread, (void**)NULL)) {
- NXPLOG_TML_E("Fail to kill reader thread!");
- }
- if (0 != pthread_join(gpphTmlNfc_Context->writerThread, (void**)NULL)) {
- NXPLOG_TML_E("Fail to kill writer thread!");
- }
- NXPLOG_TML_D("bThreadDone == 0");
-
- phTmlNfc_CleanUp();
- } else {
- wShutdownStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_NOT_INITIALISED);
- }
-
- return wShutdownStatus;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_Write
-**
-** Description Asynchronously writes given data block to hardware
-** interface/driver. Enables writer thread if there are no
-** write requests pending. Returns successfully once writer
-** thread completes write operation. Notifies upper layer using
-** callback mechanism.
-**
-** NOTE:
-** * it is important to post a message with id
-** PH_TMLNFC_WRITE_MESSAGE to IntegrationThread after data
-** has been written to PN54X
-** * if CRC needs to be computed, then input buffer should be
-** capable to store two more bytes apart from length of
-** packet
-**
-** Parameters pBuffer - data to be sent
-** wLength - length of data buffer
-** pTmlWriteComplete - pointer to the function to be invoked
-** upon completion
-** pContext - context provided by upper layer
-**
-** Returns NFC status:
-** NFCSTATUS_PENDING - command is yet to be processed
-** NFCSTATUS_INVALID_PARAMETER - at least one parameter is
-** invalid
-** NFCSTATUS_BUSY - write request is already in progress
-**
-*******************************************************************************/
-NFCSTATUS phTmlNfc_Write(uint8_t* pBuffer, uint16_t wLength,
- pphTmlNfc_TransactCompletionCb_t pTmlWriteComplete,
- void* pContext) {
- NFCSTATUS wWriteStatus;
-
- /* Check whether TML is Initialized */
-
- if (NULL != gpphTmlNfc_Context) {
- if ((NULL != gpphTmlNfc_Context->pDevHandle) && (NULL != pBuffer) &&
- (PH_TMLNFC_RESET_VALUE != wLength) && (NULL != pTmlWriteComplete)) {
- if (!gpphTmlNfc_Context->tWriteInfo.bThreadBusy) {
- /* Setting the flag marks beginning of a Write Operation */
- gpphTmlNfc_Context->tWriteInfo.bThreadBusy = true;
- /* Copy the buffer, length and Callback function,
- This shall be utilized while invoking the Callback function in thread
- */
- gpphTmlNfc_Context->tWriteInfo.pBuffer = pBuffer;
- gpphTmlNfc_Context->tWriteInfo.wLength = wLength;
- gpphTmlNfc_Context->tWriteInfo.pThread_Callback = pTmlWriteComplete;
- gpphTmlNfc_Context->tWriteInfo.pContext = pContext;
-
- wWriteStatus = NFCSTATUS_PENDING;
- // FIXME: If retry is going on. Stop the retry thread/timer
- if (phTmlNfc_e_EnableRetrans == gpphTmlNfc_Context->eConfig) {
- /* Set retry count to default value */
- // FIXME: If the timer expired there, and meanwhile we have created
- // a new request. The expired timer will think that retry is still
- // ongoing.
- bCurrentRetryCount = gpphTmlNfc_Context->bRetryCount;
- gpphTmlNfc_Context->bWriteCbInvoked = false;
- }
- /* Set event to invoke Writer Thread */
- gpphTmlNfc_Context->tWriteInfo.bEnable = 1;
- sem_post(&gpphTmlNfc_Context->txSemaphore);
- } else {
- wWriteStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_BUSY);
- }
- } else {
- wWriteStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_INVALID_PARAMETER);
- }
- } else {
- wWriteStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_NOT_INITIALISED);
- }
-
- return wWriteStatus;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_Read
-**
-** Description Asynchronously reads data from the driver
-** Number of bytes to be read and buffer are passed by upper
-** layer.
-** Enables reader thread if there are no read requests pending
-** Returns successfully once read operation is completed
-** Notifies upper layer using callback mechanism
-**
-** Parameters pBuffer - location to send read data to the upper layer via
-** callback
-** wLength - length of read data buffer passed by upper layer
-** pTmlReadComplete - pointer to the function to be invoked
-** upon completion of read operation
-** pContext - context provided by upper layer
-**
-** Returns NFC status:
-** NFCSTATUS_PENDING - command is yet to be processed
-** NFCSTATUS_INVALID_PARAMETER - at least one parameter is
-** invalid
-** NFCSTATUS_BUSY - read request is already in progress
-**
-*******************************************************************************/
-NFCSTATUS phTmlNfc_Read(uint8_t* pBuffer, uint16_t wLength,
- pphTmlNfc_TransactCompletionCb_t pTmlReadComplete,
- void* pContext) {
- NFCSTATUS wReadStatus;
-
- /* Check whether TML is Initialized */
- if (NULL != gpphTmlNfc_Context) {
- if ((gpphTmlNfc_Context->pDevHandle != NULL) && (NULL != pBuffer) &&
- (PH_TMLNFC_RESET_VALUE != wLength) && (NULL != pTmlReadComplete)) {
- if (!gpphTmlNfc_Context->tReadInfo.bThreadBusy) {
- /* Setting the flag marks beginning of a Read Operation */
- gpphTmlNfc_Context->tReadInfo.bThreadBusy = true;
- /* Copy the buffer, length and Callback function,
- This shall be utilized while invoking the Callback function in thread
- */
- gpphTmlNfc_Context->tReadInfo.pBuffer = pBuffer;
- gpphTmlNfc_Context->tReadInfo.wLength = wLength;
- gpphTmlNfc_Context->tReadInfo.pThread_Callback = pTmlReadComplete;
- gpphTmlNfc_Context->tReadInfo.pContext = pContext;
- wReadStatus = NFCSTATUS_PENDING;
-
- /* Set event to invoke Reader Thread */
- gpphTmlNfc_Context->tReadInfo.bEnable = 1;
- sem_post(&gpphTmlNfc_Context->rxSemaphore);
- } else {
- wReadStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_BUSY);
- }
- } else {
- wReadStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_INVALID_PARAMETER);
- }
- } else {
- wReadStatus = PHNFCSTVAL(CID_NFC_TML, NFCSTATUS_NOT_INITIALISED);
- }
-
- return wReadStatus;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_ReadAbort
-**
-** Description Aborts pending read request (if any)
-**
-** Parameters None
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - ongoing read operation aborted
-** NFCSTATUS_INVALID_PARAMETER - at least one parameter is
-** invalid
-** NFCSTATUS_NOT_INITIALIZED - TML layer is not initialized
-** NFCSTATUS_BOARD_COMMUNICATION_ERROR - unable to cancel read
-** operation
-**
-*******************************************************************************/
-NFCSTATUS phTmlNfc_ReadAbort(void) {
- NFCSTATUS wStatus = NFCSTATUS_INVALID_PARAMETER;
- gpphTmlNfc_Context->tReadInfo.bEnable = 0;
-
- /*Reset the flag to accept another Read Request */
- gpphTmlNfc_Context->tReadInfo.bThreadBusy = false;
- wStatus = NFCSTATUS_SUCCESS;
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_WriteAbort
-**
-** Description Aborts pending write request (if any)
-**
-** Parameters None
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - ongoing write operation aborted
-** NFCSTATUS_INVALID_PARAMETER - at least one parameter is
-** invalid
-** NFCSTATUS_NOT_INITIALIZED - TML layer is not initialized
-** NFCSTATUS_BOARD_COMMUNICATION_ERROR - unable to cancel write
-** operation
-**
-*******************************************************************************/
-NFCSTATUS phTmlNfc_WriteAbort(void) {
- NFCSTATUS wStatus = NFCSTATUS_INVALID_PARAMETER;
-
- gpphTmlNfc_Context->tWriteInfo.bEnable = 0;
- /* Stop if any retransmission is in progress */
- bCurrentRetryCount = 0;
-
- /* Reset the flag to accept another Write Request */
- gpphTmlNfc_Context->tWriteInfo.bThreadBusy = false;
- wStatus = NFCSTATUS_SUCCESS;
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_IoCtl
-**
-** Description Resets device when insisted by upper layer
-** Number of bytes to be read and buffer are passed by upper
-** layer
-** Enables reader thread if there are no read requests pending
-** Returns successfully once read operation is completed
-** Notifies upper layer using callback mechanism
-**
-** Parameters eControlCode - control code for a specific operation
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - ioctl command completed successfully
-** NFCSTATUS_FAILED - ioctl command request failed
-**
-*******************************************************************************/
-NFCSTATUS phTmlNfc_IoCtl(phTmlNfc_ControlCode_t eControlCode) {
- NFCSTATUS wStatus = NFCSTATUS_SUCCESS;
-
- if (NULL == gpphTmlNfc_Context) {
- wStatus = NFCSTATUS_FAILED;
- } else {
- switch (eControlCode) {
- case phTmlNfc_e_ResetDevice: {
- /*Reset PN54X*/
- phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 1);
- usleep(100 * 1000);
- phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 0);
- usleep(100 * 1000);
- phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 1);
- break;
- }
- case phTmlNfc_e_EnableNormalMode: {
- /*Reset PN54X*/
- phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 0);
- usleep(10 * 1000);
- phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 1);
- usleep(100 * 1000);
- break;
- }
- case phTmlNfc_e_EnableDownloadMode: {
- phTmlNfc_ConfigNciPktReTx(phTmlNfc_e_DisableRetrans, 0);
- (void)phTmlNfc_i2c_reset(gpphTmlNfc_Context->pDevHandle, 2);
- usleep(100 * 1000);
- break;
- }
- default: {
- wStatus = NFCSTATUS_INVALID_PARAMETER;
- break;
- }
- }
- }
-
- return wStatus;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_DeferredCall
-**
-** Description Posts message on upper layer thread
-** upon successful read or write operation
-**
-** Parameters dwThreadId - id of the thread posting message
-** ptWorkerMsg - message to be posted
-**
-** Returns None
-**
-*******************************************************************************/
-void phTmlNfc_DeferredCall(uintptr_t dwThreadId,
- phLibNfc_Message_t* ptWorkerMsg) {
- intptr_t bPostStatus;
- UNUSED(dwThreadId);
- /* Post message on the user thread to invoke the callback function */
- sem_wait(&gpphTmlNfc_Context->postMsgSemaphore);
- bPostStatus =
- phDal4Nfc_msgsnd(gpphTmlNfc_Context->dwCallbackThreadId, ptWorkerMsg, 0);
- sem_post(&gpphTmlNfc_Context->postMsgSemaphore);
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_ReadDeferredCb
-**
-** Description Read thread call back function
-**
-** Parameters pParams - context provided by upper layer
-**
-** Returns None
-**
-*******************************************************************************/
-static void phTmlNfc_ReadDeferredCb(void* pParams) {
- /* Transaction info buffer to be passed to Callback Function */
- phTmlNfc_TransactInfo_t* pTransactionInfo = (phTmlNfc_TransactInfo_t*)pParams;
-
- /* Reset the flag to accept another Read Request */
- gpphTmlNfc_Context->tReadInfo.bThreadBusy = false;
- gpphTmlNfc_Context->tReadInfo.pThread_Callback(
- gpphTmlNfc_Context->tReadInfo.pContext, pTransactionInfo);
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_WriteDeferredCb
-**
-** Description Write thread call back function
-**
-** Parameters pParams - context provided by upper layer
-**
-** Returns None
-**
-*******************************************************************************/
-static void phTmlNfc_WriteDeferredCb(void* pParams) {
- /* Transaction info buffer to be passed to Callback Function */
- phTmlNfc_TransactInfo_t* pTransactionInfo = (phTmlNfc_TransactInfo_t*)pParams;
-
- /* Reset the flag to accept another Write Request */
- gpphTmlNfc_Context->tWriteInfo.bThreadBusy = false;
- gpphTmlNfc_Context->tWriteInfo.pThread_Callback(
- gpphTmlNfc_Context->tWriteInfo.pContext, pTransactionInfo);
-
- return;
-}
-
-void phTmlNfc_set_fragmentation_enabled(phTmlNfc_i2cfragmentation_t result) {
- fragmentation_enabled = result;
-}
-
-phTmlNfc_i2cfragmentation_t phTmlNfc_get_fragmentation_enabled() {
- return fragmentation_enabled;
-}
diff --git a/halimpl/pn54x/tml/phTmlNfc.h b/halimpl/pn54x/tml/phTmlNfc.h
deleted file mode 100644
index 3955354..0000000
--- a/halimpl/pn54x/tml/phTmlNfc.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * Transport Mapping Layer header files containing APIs related to initializing,
- * reading
- * and writing data into files provided by the driver interface.
- *
- * API listed here encompasses Transport Mapping Layer interfaces required to be
- * mapped
- * to different Interfaces and Platforms.
- *
- */
-
-#ifndef PHTMLNFC_H
-#define PHTMLNFC_H
-
-#include <phNfcCommon.h>
-
-/*
- * Message posted by Reader thread upon
- * completion of requested operation
- */
-#define PH_TMLNFC_READ_MESSAGE (0xAA)
-
-/*
- * Message posted by Writer thread upon
- * completion of requested operation
- */
-#define PH_TMLNFC_WRITE_MESSAGE (0x55)
-
-/*
- * Value indicates to reset device
- */
-#define PH_TMLNFC_RESETDEVICE (0x00008001)
-
-/*
-***************************Globals,Structure and Enumeration ******************
-*/
-
-/*
- * Transaction (Tx/Rx) completion information structure of TML
- *
- * This structure holds the completion callback information of the
- * transaction passed from the TML layer to the Upper layer
- * along with the completion callback.
- *
- * The value of field wStatus can be interpreted as:
- *
- * - NFCSTATUS_SUCCESS Transaction performed
- * successfully.
- * - NFCSTATUS_FAILED Failed to wait on Read/Write
- * operation.
- * - NFCSTATUS_INSUFFICIENT_STORAGE Not enough memory to store data in
- * case of read.
- * - NFCSTATUS_BOARD_COMMUNICATION_ERROR Failure to Read/Write from the
- * file or timeout.
- */
-
-typedef struct phTmlNfc_TransactInfo {
- NFCSTATUS wStatus; /* Status of the Transaction Completion*/
- uint8_t* pBuff; /* Response Data of the Transaction*/
- uint16_t wLength; /* Data size of the Transaction*/
-} phTmlNfc_TransactInfo_t; /* Instance of Transaction structure */
-
-/*
- * TML transreceive completion callback to Upper Layer
- *
- * pContext - Context provided by upper layer
- * pInfo - Transaction info. See phTmlNfc_TransactInfo
- */
-typedef void (*pphTmlNfc_TransactCompletionCb_t)(
- void* pContext, phTmlNfc_TransactInfo_t* pInfo);
-
-/*
- * TML Deferred callback interface structure invoked by upper layer
- *
- * This could be used for read/write operations
- *
- * dwMsgPostedThread Message source identifier
- * pParams Parameters for the deferred call processing
- */
-typedef void (*pphTmlNfc_DeferFuncPointer_t)(uint32_t dwMsgPostedThread,
- void* pParams);
-
-/*
- * Enum definition contains supported ioctl control codes.
- *
- * phTmlNfc_IoCtl
- */
-typedef enum {
- phTmlNfc_e_Invalid = 0,
- phTmlNfc_e_ResetDevice = PH_TMLNFC_RESETDEVICE, /* Reset the device */
- phTmlNfc_e_EnableDownloadMode, /* Do the hardware setting to enter into
- download mode */
- phTmlNfc_e_EnableNormalMode /* Hardware setting for normal mode of operation
- */
-} phTmlNfc_ControlCode_t; /* Control code for IOCTL call */
-
-/*
- * Enable / Disable Re-Transmission of Packets
- *
- * phTmlNfc_ConfigNciPktReTx
- */
-typedef enum {
- phTmlNfc_e_EnableRetrans = 0x00, /*Enable retransmission of Nci packet */
- phTmlNfc_e_DisableRetrans = 0x01 /*Disable retransmission of Nci packet */
-} phTmlNfc_ConfigRetrans_t; /* Configuration for Retransmission */
-
-/*
- * Structure containing details related to read and write operations
- *
- */
-typedef struct phTmlNfc_ReadWriteInfo {
- volatile uint8_t bEnable; /*This flag shall decide whether to perform
- Write/Read operation */
- uint8_t
- bThreadBusy; /*Flag to indicate thread is busy on respective operation */
- /* Transaction completion Callback function */
- pphTmlNfc_TransactCompletionCb_t pThread_Callback;
- void* pContext; /*Context passed while invocation of operation */
- uint8_t* pBuffer; /*Buffer passed while invocation of operation */
- uint16_t wLength; /*Length of data read/written */
- NFCSTATUS wWorkStatus; /*Status of the transaction performed */
-} phTmlNfc_ReadWriteInfo_t;
-
-/*
- *Base Context Structure containing members required for entire session
- */
-typedef struct phTmlNfc_Context {
- pthread_t readerThread; /*Handle to the thread which handles write and read
- operations */
- pthread_t writerThread;
- volatile uint8_t
- bThreadDone; /*Flag to decide whether to run or abort the thread */
- phTmlNfc_ConfigRetrans_t
- eConfig; /*Retransmission of Nci Packet during timeout */
- uint8_t bRetryCount; /*Number of times retransmission shall happen */
- uint8_t bWriteCbInvoked; /* Indicates whether write callback is invoked during
- retransmission */
- uint32_t dwTimerId; /* Timer used to retransmit nci packet */
- phTmlNfc_ReadWriteInfo_t tReadInfo; /*Pointer to Reader Thread Structure */
- phTmlNfc_ReadWriteInfo_t tWriteInfo; /*Pointer to Writer Thread Structure */
- void* pDevHandle; /* Pointer to Device Handle */
- uintptr_t dwCallbackThreadId; /* Thread ID to which message to be posted */
- uint8_t bEnableCrc; /*Flag to validate/not CRC for input buffer */
- sem_t rxSemaphore;
- sem_t txSemaphore; /* Lock/Aquire txRx Semaphore */
- sem_t postMsgSemaphore; /* Semaphore to post message atomically by Reader &
- writer thread */
-} phTmlNfc_Context_t;
-
-/*
- * TML Configuration exposed to upper layer.
- */
-typedef struct phTmlNfc_Config {
- /* Port name connected to PN54X
- *
- * Platform specific canonical device name to which PN54X is connected.
- *
- * e.g. On Linux based systems this would be /dev/PN54X
- */
- int8_t* pDevName;
- /* Callback Thread ID
- *
- * This is the thread ID on which the Reader & Writer thread posts message. */
- uintptr_t dwGetMsgThreadId;
- /* Communication speed between DH and PN54X
- *
- * This is the baudrate of the bus for communication between DH and PN54X */
- uint32_t dwBaudRate;
-} phTmlNfc_Config_t, *pphTmlNfc_Config_t; /* pointer to phTmlNfc_Config_t */
-
-/*
- * TML Deferred Callback structure used to invoke Upper layer Callback function.
- */
-typedef struct {
- /* Deferred callback function to be invoked */
- pphTmlNfc_DeferFuncPointer_t pDef_call;
- /* Source identifier
- *
- * Identifier of the source which posted the message
- */
- uint32_t dwMsgPostedThread;
- /** Actual Message
- *
- * This is passed as a parameter passed to the deferred callback function
- * pDef_call. */
- void* pParams;
-} phTmlNfc_DeferMsg_t; /* DeferMsg structure passed to User Thread */
-
-typedef enum {
- I2C_FRAGMENATATION_DISABLED, /*i2c fragmentation_disabled */
- I2C_FRAGMENTATION_ENABLED /*i2c_fragmentation_enabled */
-} phTmlNfc_i2cfragmentation_t;
-/* Function declarations */
-NFCSTATUS phTmlNfc_Init(pphTmlNfc_Config_t pConfig);
-NFCSTATUS phTmlNfc_Shutdown(void);
-NFCSTATUS phTmlNfc_Write(uint8_t* pBuffer, uint16_t wLength,
- pphTmlNfc_TransactCompletionCb_t pTmlWriteComplete,
- void* pContext);
-NFCSTATUS phTmlNfc_Read(uint8_t* pBuffer, uint16_t wLength,
- pphTmlNfc_TransactCompletionCb_t pTmlReadComplete,
- void* pContext);
-NFCSTATUS phTmlNfc_WriteAbort(void);
-NFCSTATUS phTmlNfc_ReadAbort(void);
-NFCSTATUS phTmlNfc_IoCtl(phTmlNfc_ControlCode_t eControlCode);
-void phTmlNfc_DeferredCall(uintptr_t dwThreadId,
- phLibNfc_Message_t* ptWorkerMsg);
-void phTmlNfc_ConfigNciPktReTx(phTmlNfc_ConfigRetrans_t eConfig,
- uint8_t bRetryCount);
-void phTmlNfc_set_fragmentation_enabled(phTmlNfc_i2cfragmentation_t enable);
-phTmlNfc_i2cfragmentation_t phTmlNfc_get_fragmentation_enabled();
-#endif /* PHTMLNFC_H */
diff --git a/halimpl/pn54x/tml/phTmlNfc_i2c.c b/halimpl/pn54x/tml/phTmlNfc_i2c.c
deleted file mode 100644
index 781f19b..0000000
--- a/halimpl/pn54x/tml/phTmlNfc_i2c.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * DAL I2C port implementation for linux
- *
- * Project: Trusted NFC Linux
- *
- */
-#include <errno.h>
-#include <fcntl.h>
-#include <hardware/nfc.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-#include <sys/select.h>
-#include <termios.h>
-#include <unistd.h>
-
-#include <phNfcStatus.h>
-#include <phNxpLog.h>
-#include <phTmlNfc_i2c.h>
-#include <string.h>
-#include "phNxpNciHal_utils.h"
-
-#define CRC_LEN 2
-#define NORMAL_MODE_HEADER_LEN 3
-#define FW_DNLD_HEADER_LEN 2
-#define FW_DNLD_LEN_OFFSET 1
-#define NORMAL_MODE_LEN_OFFSET 2
-#define FRAGMENTSIZE_MAX PHNFC_I2C_FRAGMENT_SIZE
-static bool_t bFwDnldFlag = false;
-extern phTmlNfc_i2cfragmentation_t fragmentation_enabled;
-
-/*******************************************************************************
-**
-** Function phTmlNfc_i2c_close
-**
-** Description Closes PN54X device
-**
-** Parameters pDevHandle - device handle
-**
-** Returns None
-**
-*******************************************************************************/
-void phTmlNfc_i2c_close(void* pDevHandle) {
- if (NULL != pDevHandle) {
- close((intptr_t)pDevHandle);
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_i2c_open_and_configure
-**
-** Description Open and configure PN54X device
-**
-** Parameters pConfig - hardware information
-** pLinkHandle - device handle
-**
-** Returns NFC status:
-** NFCSTATUS_SUCCESS - open_and_configure operation success
-** NFCSTATUS_INVALID_DEVICE - device open operation failure
-**
-*******************************************************************************/
-NFCSTATUS phTmlNfc_i2c_open_and_configure(pphTmlNfc_Config_t pConfig,
- void** pLinkHandle) {
- int nHandle;
-
- NXPLOG_TML_D("Opening port=%s\n", pConfig->pDevName);
- /* open port */
- nHandle = open((const char*)pConfig->pDevName, O_RDWR);
- if (nHandle < 0) {
- NXPLOG_TML_E("_i2c_open() Failed: retval %x", nHandle);
- *pLinkHandle = NULL;
- return NFCSTATUS_INVALID_DEVICE;
- }
-
- *pLinkHandle = (void*)((intptr_t)nHandle);
-
- /*Reset PN54X*/
- phTmlNfc_i2c_reset((void*)((intptr_t)nHandle), 0);
- usleep(10 * 1000);
- phTmlNfc_i2c_reset((void*)((intptr_t)nHandle), 1);
-
- return NFCSTATUS_SUCCESS;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_i2c_read
-**
-** Description Reads requested number of bytes from PN54X device into given
-** buffer
-**
-** Parameters pDevHandle - valid device handle
-** pBuffer - buffer for read data
-** nNbBytesToRead - number of bytes requested to be read
-**
-** Returns numRead - number of successfully read bytes
-** -1 - read operation failure
-**
-*******************************************************************************/
-int phTmlNfc_i2c_read(void* pDevHandle, uint8_t* pBuffer, int nNbBytesToRead) {
- int ret_Read;
- int ret_Select;
- int numRead = 0;
- struct timeval tv;
- fd_set rfds;
- uint16_t totalBtyesToRead = 0;
-
- int i;
- UNUSED(nNbBytesToRead);
- if (NULL == pDevHandle) {
- return -1;
- }
-
- if (bFwDnldFlag == false) {
- totalBtyesToRead = NORMAL_MODE_HEADER_LEN;
- } else {
- totalBtyesToRead = FW_DNLD_HEADER_LEN;
- }
-
- /* Read with 2 second timeout, so that the read thread can be aborted
- when the PN54X does not respond and we need to switch to FW download
- mode. This should be done via a control socket instead. */
- FD_ZERO(&rfds);
- FD_SET((intptr_t)pDevHandle, &rfds);
- tv.tv_sec = 2;
- tv.tv_usec = 1;
-
- ret_Select =
- select((int)((intptr_t)pDevHandle + (int)1), &rfds, NULL, NULL, &tv);
- if (ret_Select < 0) {
- NXPLOG_TML_E("i2c select() errno : %x", errno);
- return -1;
- } else if (ret_Select == 0) {
- NXPLOG_TML_E("i2c select() Timeout");
- return -1;
- } else {
- ret_Read = read((intptr_t)pDevHandle, pBuffer, totalBtyesToRead - numRead);
- if (ret_Read > 0) {
- numRead += ret_Read;
- } else if (ret_Read == 0) {
- NXPLOG_TML_E("_i2c_read() [hdr]EOF");
- return -1;
- } else {
- NXPLOG_TML_E("_i2c_read() [hdr] errno : %x", errno);
- return -1;
- }
-
- if (bFwDnldFlag == false) {
- totalBtyesToRead = NORMAL_MODE_HEADER_LEN;
- } else {
- totalBtyesToRead = FW_DNLD_HEADER_LEN;
- }
-
- if (numRead < totalBtyesToRead) {
- ret_Read =
- read((intptr_t)pDevHandle, pBuffer, totalBtyesToRead - numRead);
- if (ret_Read != totalBtyesToRead - numRead) {
- NXPLOG_TML_E("_i2c_read() [hdr] errno : %x", errno);
- return -1;
- } else {
- numRead += ret_Read;
- }
- }
- if (bFwDnldFlag == true) {
- totalBtyesToRead =
- pBuffer[FW_DNLD_LEN_OFFSET] + FW_DNLD_HEADER_LEN + CRC_LEN;
- } else {
- totalBtyesToRead =
- pBuffer[NORMAL_MODE_LEN_OFFSET] + NORMAL_MODE_HEADER_LEN;
- }
- if ((totalBtyesToRead - numRead) != 0) {
- ret_Read = read((intptr_t)pDevHandle, (pBuffer + numRead),
- totalBtyesToRead - numRead);
- if (ret_Read > 0) {
- numRead += ret_Read;
- } else if (ret_Read == 0) {
- NXPLOG_TML_E("_i2c_read() [pyld] EOF");
- return -1;
- } else {
- if (bFwDnldFlag == false) {
- NXPLOG_TML_E("_i2c_read() [hdr] received");
- phNxpNciHal_print_packet("RECV", pBuffer, NORMAL_MODE_HEADER_LEN);
- }
- NXPLOG_TML_E("_i2c_read() [pyld] errno : %x", errno);
- return -1;
- }
- } else {
- NXPLOG_TML_E("_>>>>> Empty packet recieved !!");
- }
- }
- return numRead;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_i2c_write
-**
-** Description Writes requested number of bytes from given buffer into
-** PN54X device
-**
-** Parameters pDevHandle - valid device handle
-** pBuffer - buffer for read data
-** nNbBytesToWrite - number of bytes requested to be written
-**
-** Returns numWrote - number of successfully written bytes
-** -1 - write operation failure
-**
-*******************************************************************************/
-int phTmlNfc_i2c_write(void* pDevHandle, uint8_t* pBuffer,
- int nNbBytesToWrite) {
- int ret;
- int numWrote = 0;
- int i;
- int numBytes = nNbBytesToWrite;
- if (NULL == pDevHandle) {
- return -1;
- }
- if (fragmentation_enabled == I2C_FRAGMENATATION_DISABLED &&
- nNbBytesToWrite > FRAGMENTSIZE_MAX) {
- NXPLOG_TML_E(
- "i2c_write() data larger than maximum I2C size,enable I2C "
- "fragmentation");
- return -1;
- }
- while (numWrote < nNbBytesToWrite) {
- if (fragmentation_enabled == I2C_FRAGMENTATION_ENABLED &&
- nNbBytesToWrite > FRAGMENTSIZE_MAX) {
- if (nNbBytesToWrite - numWrote > FRAGMENTSIZE_MAX) {
- numBytes = numWrote + FRAGMENTSIZE_MAX;
- } else {
- numBytes = nNbBytesToWrite;
- }
- }
- ret = write((intptr_t)pDevHandle, pBuffer + numWrote, numBytes - numWrote);
- if (ret > 0) {
- numWrote += ret;
- if (fragmentation_enabled == I2C_FRAGMENTATION_ENABLED &&
- numWrote < nNbBytesToWrite) {
- usleep(500);
- }
- } else if (ret == 0) {
- NXPLOG_TML_E("_i2c_write() EOF");
- return -1;
- } else {
- NXPLOG_TML_E("_i2c_write() errno : %x", errno);
- if (errno == EINTR || errno == EAGAIN) {
- continue;
- }
- return -1;
- }
- }
-
- return numWrote;
-}
-
-/*******************************************************************************
-**
-** Function phTmlNfc_i2c_reset
-**
-** Description Reset PN54X device, using VEN pin
-**
-** Parameters pDevHandle - valid device handle
-** level - reset level
-**
-** Returns 0 - reset operation success
-** -1 - reset operation failure
-**
-*******************************************************************************/
-#define PN544_SET_PWR _IOW(0xe9, 0x01, unsigned int)
-int phTmlNfc_i2c_reset(void* pDevHandle, long level) {
- int ret;
- NXPLOG_TML_D("phTmlNfc_i2c_reset(), VEN level %ld", level);
-
- if (NULL == pDevHandle) {
- return -1;
- }
-
- ret = ioctl((intptr_t)pDevHandle, PN544_SET_PWR, level);
- if (level == 2 && ret == 0) {
- bFwDnldFlag = true;
- } else {
- bFwDnldFlag = false;
- }
- return ret;
-}
-
-/*******************************************************************************
-**
-** Function getDownloadFlag
-**
-** Description Returns the current mode
-**
-** Parameters none
-**
-** Returns Current mode download/NCI
-*******************************************************************************/
-bool_t getDownloadFlag(void) { return bFwDnldFlag; }
diff --git a/halimpl/pn54x/tml/phTmlNfc_i2c.h b/halimpl/pn54x/tml/phTmlNfc_i2c.h
deleted file mode 100644
index 0949a72..0000000
--- a/halimpl/pn54x/tml/phTmlNfc_i2c.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2010-2014 NXP Semiconductors
- *
- * 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.
- */
-
-/*
- * TML I2C port implementation for linux
- */
-
-/* Basic type definitions */
-#include <phNfcTypes.h>
-#include <phTmlNfc.h>
-
-/* Function declarations */
-void phTmlNfc_i2c_close(void* pDevHandle);
-NFCSTATUS phTmlNfc_i2c_open_and_configure(pphTmlNfc_Config_t pConfig,
- void** pLinkHandle);
-int phTmlNfc_i2c_read(void* pDevHandle, uint8_t* pBuffer, int nNbBytesToRead);
-int phTmlNfc_i2c_write(void* pDevHandle, uint8_t* pBuffer, int nNbBytesToWrite);
-int phTmlNfc_i2c_reset(void* pDevHandle, long level);
-bool_t getDownloadFlag(void);
diff --git a/halimpl/pn54x/utils/phNxpConfig.cpp b/halimpl/pn54x/utils/phNxpConfig.cpp
deleted file mode 100644
index 9e8c7cb..0000000
--- a/halimpl/pn54x/utils/phNxpConfig.cpp
+++ /dev/null
@@ -1,865 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2011-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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * The original Work has been changed by NXP Semiconductors.
- *
- * Copyright (C) 2013-2014 NXP Semiconductors
- *
- * 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.
- *
- ******************************************************************************/
-
-#include <stdio.h>
-#include <sys/stat.h>
-#include <list>
-#include <string>
-#include <vector>
-
-#include <phNxpConfig.h>
-#include <phNxpLog.h>
-#include "sparse_crc32.h"
-
-#if GENERIC_TARGET
-const char alternative_config_path[] = "/data/vendor/nfc/";
-#else
-const char alternative_config_path[] = "";
-#endif
-
-#if 1
-const char* transport_config_paths[] = {"/odm/etc/", "/vendor/etc/", "/etc/"};
-#else
-const char* transport_config_paths[] = {"res/"};
-#endif
-const int transport_config_path_size =
- (sizeof(transport_config_paths) / sizeof(transport_config_paths[0]));
-
-#define config_name "libnfc-nxp.conf"
-#define extra_config_base "libnfc-nxp-"
-#define extra_config_ext ".conf"
-#define IsStringValue 0x80000000
-
-const char config_timestamp_path[] =
- "/data/vendor/nfc/libnfc-nxpConfigState.bin";
-
-namespace {
-
-size_t readConfigFile(const char* fileName, uint8_t** p_data) {
- FILE* fd = fopen(fileName, "rb");
- if (fd == nullptr) return 0;
-
- fseek(fd, 0L, SEEK_END);
- const size_t file_size = ftell(fd);
- rewind(fd);
-
- uint8_t* buffer = new uint8_t[file_size];
- size_t read = fread(buffer, file_size, 1, fd);
- fclose(fd);
-
- if (read == 1) {
- *p_data = buffer;
- return file_size;
- }
-
- return 0;
-}
-
-} // namespace
-
-using namespace ::std;
-
-class CNfcParam : public string {
- public:
- CNfcParam();
- CNfcParam(const char* name, const string& value);
- CNfcParam(const char* name, unsigned long value);
- virtual ~CNfcParam();
- unsigned long numValue() const { return m_numValue; }
- const char* str_value() const { return m_str_value.c_str(); }
- size_t str_len() const { return m_str_value.length(); }
-
- private:
- string m_str_value;
- unsigned long m_numValue;
-};
-
-class CNfcConfig : public vector<const CNfcParam*> {
- public:
- virtual ~CNfcConfig();
- static CNfcConfig& GetInstance();
- friend void readOptionalConfig(const char* optional);
- bool isModified();
- void resetModified();
-
- bool getValue(const char* name, char* pValue, size_t len) const;
- bool getValue(const char* name, unsigned long& rValue) const;
- bool getValue(const char* name, unsigned short& rValue) const;
- bool getValue(const char* name, char* pValue, long len, long* readlen) const;
- const CNfcParam* find(const char* p_name) const;
- void clean();
-
- private:
- CNfcConfig();
- bool readConfig(const char* name, bool bResetContent);
- void moveFromList();
- void moveToList();
- void add(const CNfcParam* pParam);
- list<const CNfcParam*> m_list;
- bool mValidFile;
- uint32_t config_crc32_;
-
- unsigned long state;
-
- inline bool Is(unsigned long f) { return (state & f) == f; }
- inline void Set(unsigned long f) { state |= f; }
- inline void Reset(unsigned long f) { state &= ~f; }
-};
-
-/*******************************************************************************
-**
-** Function: isPrintable()
-**
-** Description: determine if 'c' is printable
-**
-** Returns: 1, if printable, otherwise 0
-**
-*******************************************************************************/
-inline bool isPrintable(char c) {
- return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') ||
- (c >= '0' && c <= '9') || c == '/' || c == '_' || c == '-' || c == '.';
-}
-
-/*******************************************************************************
-**
-** Function: isDigit()
-**
-** Description: determine if 'c' is numeral digit
-**
-** Returns: true, if numerical digit
-**
-*******************************************************************************/
-inline bool isDigit(char c, int base) {
- if ('0' <= c && c <= '9') return true;
- if (base == 16) {
- if (('A' <= c && c <= 'F') || ('a' <= c && c <= 'f')) return true;
- }
- return false;
-}
-
-/*******************************************************************************
-**
-** Function: getDigitValue()
-**
-** Description: return numerical value of a decimal or hex char
-**
-** Returns: numerical value if decimal or hex char, otherwise 0
-**
-*******************************************************************************/
-inline int getDigitValue(char c, int base) {
- if ('0' <= c && c <= '9') return c - '0';
- if (base == 16) {
- if ('A' <= c && c <= 'F')
- return c - 'A' + 10;
- else if ('a' <= c && c <= 'f')
- return c - 'a' + 10;
- }
- return 0;
-}
-
-/*******************************************************************************
-**
-** Function: findConfigFilePathFromTransportConfigPaths()
-**
-** Description: find a config file path with a given config name from transport
-** config paths
-**
-** Returns: none
-**
-*******************************************************************************/
-void findConfigFilePathFromTransportConfigPaths(const string& configName,
- string& filePath) {
- for (int i = 0; i < transport_config_path_size - 1; i++) {
- filePath.assign(transport_config_paths[i]);
- filePath += configName;
- struct stat file_stat;
- if (stat(filePath.c_str(), &file_stat) == 0 && S_ISREG(file_stat.st_mode)) {
- return;
- }
- }
- filePath.assign(transport_config_paths[transport_config_path_size - 1]);
- filePath += configName;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::readConfig()
-**
-** Description: read Config settings and parse them into a linked list
-** move the element from linked list to a array at the end
-**
-** Returns: 1, if there are any config data, 0 otherwise
-**
-*******************************************************************************/
-bool CNfcConfig::readConfig(const char* name, bool bResetContent) {
- enum {
- BEGIN_LINE = 1,
- TOKEN,
- STR_VALUE,
- NUM_VALUE,
- BEGIN_HEX,
- BEGIN_QUOTE,
- END_LINE
- };
-
- uint8_t* p_config = nullptr;
- size_t config_size = readConfigFile(name, &p_config);
- if (p_config == nullptr) {
- ALOGE("%s Cannot open config file %s\n", __func__, name);
- if (bResetContent) {
- ALOGE("%s Using default value for all settings\n", __func__);
- mValidFile = false;
- }
- return false;
- }
-
- string token;
- string strValue;
- unsigned long numValue = 0;
- CNfcParam* pParam = NULL;
- int i = 0;
- int base = 0;
- char c;
- int bflag = 0;
- state = BEGIN_LINE;
-
- config_crc32_ = sparse_crc32(0, p_config, config_size);
- mValidFile = true;
- if (size() > 0) {
- if (bResetContent)
- clean();
- else
- moveToList();
- }
-
- for (size_t offset = 0; offset != config_size; ++offset) {
- c = p_config[offset];
- switch (state & 0xff) {
- case BEGIN_LINE:
- if (c == '#')
- state = END_LINE;
- else if (isPrintable(c)) {
- i = 0;
- token.erase();
- strValue.erase();
- state = TOKEN;
- token.push_back(c);
- }
- break;
- case TOKEN:
- if (c == '=') {
- token.push_back('\0');
- state = BEGIN_QUOTE;
- } else if (isPrintable(c))
- token.push_back(c);
- else
- state = END_LINE;
- break;
- case BEGIN_QUOTE:
- if (c == '"') {
- state = STR_VALUE;
- base = 0;
- } else if (c == '0')
- state = BEGIN_HEX;
- else if (isDigit(c, 10)) {
- state = NUM_VALUE;
- base = 10;
- numValue = getDigitValue(c, base);
- i = 0;
- } else if (c == '{') {
- state = NUM_VALUE;
- bflag = 1;
- base = 16;
- i = 0;
- Set(IsStringValue);
- } else
- state = END_LINE;
- break;
- case BEGIN_HEX:
- if (c == 'x' || c == 'X') {
- state = NUM_VALUE;
- base = 16;
- numValue = 0;
- i = 0;
- break;
- } else if (isDigit(c, 10)) {
- state = NUM_VALUE;
- base = 10;
- numValue = getDigitValue(c, base);
- break;
- } else if (c != '\n' && c != '\r') {
- state = END_LINE;
- break;
- }
- // fall through to numValue to handle numValue
-
- case NUM_VALUE:
- if (isDigit(c, base)) {
- numValue *= base;
- numValue += getDigitValue(c, base);
- ++i;
- } else if (bflag == 1 &&
- (c == ' ' || c == '\r' || c == '\n' || c == '\t')) {
- break;
- } else if (base == 16 &&
- (c == ',' || c == ':' || c == '-' || c == ' ' || c == '}')) {
- if (c == '}') {
- bflag = 0;
- }
- if (i > 0) {
- int n = (i + 1) / 2;
- while (n-- > 0) {
- numValue = numValue >> (n * 8);
- unsigned char c = (numValue)&0xFF;
- strValue.push_back(c);
- }
- }
-
- Set(IsStringValue);
- numValue = 0;
- i = 0;
- } else {
- if (c == '\n' || c == '\r') {
- if (bflag == 0) {
- state = BEGIN_LINE;
- }
- } else {
- if (bflag == 0) {
- state = END_LINE;
- }
- }
- if (Is(IsStringValue) && base == 16 && i > 0) {
- int n = (i + 1) / 2;
- while (n-- > 0) strValue.push_back(((numValue >> (n * 8)) & 0xFF));
- }
- if (strValue.length() > 0)
- pParam = new CNfcParam(token.c_str(), strValue);
- else
- pParam = new CNfcParam(token.c_str(), numValue);
- add(pParam);
- strValue.erase();
- numValue = 0;
- }
- break;
- case STR_VALUE:
- if (c == '"') {
- strValue.push_back('\0');
- state = END_LINE;
- pParam = new CNfcParam(token.c_str(), strValue);
- add(pParam);
- } else if (isPrintable(c))
- strValue.push_back(c);
- break;
- case END_LINE:
- if (c == '\n' || c == '\r') state = BEGIN_LINE;
- break;
- default:
- break;
- }
- }
-
- delete[] p_config;
-
- moveFromList();
- return size() > 0;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::CNfcConfig()
-**
-** Description: class constructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcConfig::CNfcConfig() : mValidFile(true), state(0) {}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::~CNfcConfig()
-**
-** Description: class destructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcConfig::~CNfcConfig() {}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::GetInstance()
-**
-** Description: get class singleton object
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcConfig& CNfcConfig::GetInstance() {
- static CNfcConfig theInstance;
-
- if (theInstance.size() == 0 && theInstance.mValidFile) {
- string strPath;
- if (alternative_config_path[0] != '\0') {
- strPath.assign(alternative_config_path);
- strPath += config_name;
- theInstance.readConfig(strPath.c_str(), true);
- if (!theInstance.empty()) {
- return theInstance;
- }
- }
- findConfigFilePathFromTransportConfigPaths(config_name, strPath);
- theInstance.readConfig(strPath.c_str(), true);
- }
-
- return theInstance;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::getValue()
-**
-** Description: get a string value of a setting
-**
-** Returns: true if setting exists
-** false if setting does not exist
-**
-*******************************************************************************/
-bool CNfcConfig::getValue(const char* name, char* pValue, size_t len) const {
- const CNfcParam* pParam = find(name);
- if (pParam == NULL) return false;
-
- if (pParam->str_len() > 0) {
- memset(pValue, 0, len);
- memcpy(pValue, pParam->str_value(), pParam->str_len());
- return true;
- }
- return false;
-}
-
-bool CNfcConfig::getValue(const char* name, char* pValue, long len,
- long* readlen) const {
- const CNfcParam* pParam = find(name);
- if (pParam == NULL) return false;
-
- if (pParam->str_len() > 0) {
- if (pParam->str_len() <= (unsigned long)len) {
- memset(pValue, 0, len);
- memcpy(pValue, pParam->str_value(), pParam->str_len());
- *readlen = pParam->str_len();
- } else {
- *readlen = -1;
- }
-
- return true;
- }
- return false;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::getValue()
-**
-** Description: get a long numerical value of a setting
-**
-** Returns: true if setting exists
-** false if setting does not exist
-**
-*******************************************************************************/
-bool CNfcConfig::getValue(const char* name, unsigned long& rValue) const {
- const CNfcParam* pParam = find(name);
- if (pParam == NULL) return false;
-
- if (pParam->str_len() == 0) {
- rValue = static_cast<unsigned long>(pParam->numValue());
- return true;
- }
- return false;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::getValue()
-**
-** Description: get a short numerical value of a setting
-**
-** Returns: true if setting exists
-** false if setting does not exist
-**
-*******************************************************************************/
-bool CNfcConfig::getValue(const char* name, unsigned short& rValue) const {
- const CNfcParam* pParam = find(name);
- if (pParam == NULL) return false;
-
- if (pParam->str_len() == 0) {
- rValue = static_cast<unsigned short>(pParam->numValue());
- return true;
- }
- return false;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::find()
-**
-** Description: search if a setting exist in the setting array
-**
-** Returns: pointer to the setting object
-**
-*******************************************************************************/
-const CNfcParam* CNfcConfig::find(const char* p_name) const {
- if (size() == 0) return NULL;
-
- for (const_iterator it = begin(), itEnd = end(); it != itEnd; ++it) {
- if (**it < p_name) {
- continue;
- } else if (**it == p_name) {
- if ((*it)->str_len() > 0) {
- NXPLOG_EXTNS_D("%s found %s=%s\n", __func__, p_name,
- (*it)->str_value());
- } else {
- NXPLOG_EXTNS_D("%s found %s=(0x%lx)\n", __func__, p_name,
- (*it)->numValue());
- }
- return *it;
- } else
- break;
- }
- return NULL;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::clean()
-**
-** Description: reset the setting array
-**
-** Returns: none
-**
-*******************************************************************************/
-void CNfcConfig::clean() {
- if (size() == 0) return;
-
- for (iterator it = begin(), itEnd = end(); it != itEnd; ++it) delete *it;
- clear();
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::Add()
-**
-** Description: add a setting object to the list
-**
-** Returns: none
-**
-*******************************************************************************/
-void CNfcConfig::add(const CNfcParam* pParam) {
- if (m_list.size() == 0) {
- m_list.push_back(pParam);
- return;
- }
- for (list<const CNfcParam *>::iterator it = m_list.begin(),
- itEnd = m_list.end();
- it != itEnd; ++it) {
- if (**it < pParam->c_str()) continue;
- m_list.insert(it, pParam);
- return;
- }
- m_list.push_back(pParam);
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::moveFromList()
-**
-** Description: move the setting object from list to array
-**
-** Returns: none
-**
-*******************************************************************************/
-void CNfcConfig::moveFromList() {
- if (m_list.size() == 0) return;
-
- for (list<const CNfcParam *>::iterator it = m_list.begin(),
- itEnd = m_list.end();
- it != itEnd; ++it)
- push_back(*it);
- m_list.clear();
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::moveToList()
-**
-** Description: move the setting object from array to list
-**
-** Returns: none
-**
-*******************************************************************************/
-void CNfcConfig::moveToList() {
- if (m_list.size() != 0) m_list.clear();
-
- for (iterator it = begin(), itEnd = end(); it != itEnd; ++it)
- m_list.push_back(*it);
- clear();
-}
-
-bool CNfcConfig::isModified() {
- FILE* fd = fopen(config_timestamp_path, "r+");
- if (fd == nullptr) {
- ALOGE("%s Unable to open file '%s' - assuming modified", __func__,
- config_timestamp_path);
- return true;
- }
-
- uint32_t stored_crc32 = 0;
- fread(&stored_crc32, sizeof(uint32_t), 1, fd);
- fclose(fd);
-
- return stored_crc32 != config_crc32_;
-}
-
-void CNfcConfig::resetModified() {
- FILE* fd = fopen(config_timestamp_path, "w+");
- if (fd == nullptr) {
- ALOGE("%s Unable to open file '%s' for writing", __func__,
- config_timestamp_path);
- return;
- }
-
- fwrite(&config_crc32_, sizeof(uint32_t), 1, fd);
- fclose(fd);
-}
-
-/*******************************************************************************
-**
-** Function: CNfcParam::CNfcParam()
-**
-** Description: class constructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcParam::CNfcParam() : m_numValue(0) {}
-
-/*******************************************************************************
-**
-** Function: CNfcParam::~CNfcParam()
-**
-** Description: class destructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcParam::~CNfcParam() {}
-
-/*******************************************************************************
-**
-** Function: CNfcParam::CNfcParam()
-**
-** Description: class copy constructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcParam::CNfcParam(const char* name, const string& value)
- : string(name), m_str_value(value), m_numValue(0) {}
-
-/*******************************************************************************
-**
-** Function: CNfcParam::CNfcParam()
-**
-** Description: class copy constructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcParam::CNfcParam(const char* name, unsigned long value)
- : string(name), m_numValue(value) {}
-
-/*******************************************************************************
-**
-** Function: GetStrValue
-**
-** Description: API function for getting a string value of a setting
-**
-** Returns: True if found, otherwise False.
-**
-*******************************************************************************/
-extern "C" int GetNxpStrValue(const char* name, char* pValue,
- unsigned long len) {
- CNfcConfig& rConfig = CNfcConfig::GetInstance();
-
- return rConfig.getValue(name, pValue, len);
-}
-
-/*******************************************************************************
-**
-** Function: GetByteArrayValue()
-**
-** Description: Read byte array value from the config file.
-**
-** Parameters:
-** name - name of the config param to read.
-** pValue - pointer to input buffer.
-** bufflen - input buffer length.
-** len - out parameter to return the number of bytes read from
-** config file, return -1 in case bufflen is not enough.
-**
-** Returns: TRUE[1] if config param name is found in the config file, else
-** FALSE[0]
-**
-*******************************************************************************/
-extern "C" int GetNxpByteArrayValue(const char* name, char* pValue,
- long bufflen, long* len) {
- CNfcConfig& rConfig = CNfcConfig::GetInstance();
-
- return rConfig.getValue(name, pValue, bufflen, len);
-}
-
-/*******************************************************************************
-**
-** Function: GetNumValue
-**
-** Description: API function for getting a numerical value of a setting
-**
-** Returns: true, if successful
-**
-*******************************************************************************/
-extern "C" int GetNxpNumValue(const char* name, void* pValue,
- unsigned long len) {
- if (!pValue) return false;
-
- CNfcConfig& rConfig = CNfcConfig::GetInstance();
- const CNfcParam* pParam = rConfig.find(name);
-
- if (pParam == NULL) return false;
- unsigned long v = pParam->numValue();
- if (v == 0 && pParam->str_len() > 0 && pParam->str_len() < 4) {
- const unsigned char* p = (const unsigned char*)pParam->str_value();
- for (unsigned int i = 0; i < pParam->str_len(); ++i) {
- v *= 256;
- v += *p++;
- }
- }
- switch (len) {
- case sizeof(unsigned long):
- *(static_cast<unsigned long*>(pValue)) = (unsigned long)v;
- break;
- case sizeof(unsigned short):
- *(static_cast<unsigned short*>(pValue)) = (unsigned short)v;
- break;
- case sizeof(unsigned char):
- *(static_cast<unsigned char*>(pValue)) = (unsigned char)v;
- break;
- default:
- return false;
- }
- return true;
-}
-
-/*******************************************************************************
-**
-** Function: resetConfig
-**
-** Description: reset settings array
-**
-** Returns: none
-**
-*******************************************************************************/
-extern "C" void resetNxpConfig()
-
-{
- CNfcConfig& rConfig = CNfcConfig::GetInstance();
-
- rConfig.clean();
-}
-
-/*******************************************************************************
-**
-** Function: readOptionalConfig()
-**
-** Description: read Config settings from an optional conf file
-**
-** Returns: none
-**
-*******************************************************************************/
-void readOptionalConfig(const char* extra) {
- string strPath;
- string configName(extra_config_base);
- configName += extra;
- configName += extra_config_ext;
-
- if (alternative_config_path[0] != '\0') {
- strPath.assign(alternative_config_path);
- strPath += configName;
- } else {
- findConfigFilePathFromTransportConfigPaths(configName, strPath);
- }
-
- CNfcConfig::GetInstance().readConfig(strPath.c_str(), false);
-}
-
-/*******************************************************************************
-**
-** Function: isNxpConfigModified()
-**
-** Description: check if config file has modified
-**
-** Returns: 0 if not modified, 1 otherwise.
-**
-*******************************************************************************/
-extern "C" int isNxpConfigModified() {
- CNfcConfig& rConfig = CNfcConfig::GetInstance();
- return rConfig.isModified();
-}
-
-/*******************************************************************************
-**
-** Function: updateNxpConfigTimestamp()
-**
-** Description: update if config file has modified
-**
-** Returns: 0 if not modified, 1 otherwise.
-**
-*******************************************************************************/
-extern "C" int updateNxpConfigTimestamp() {
- CNfcConfig& rConfig = CNfcConfig::GetInstance();
- rConfig.resetModified();
- return 0;
-}
diff --git a/halimpl/pn54x/utils/phNxpConfig.h b/halimpl/pn54x/utils/phNxpConfig.h
deleted file mode 100644
index 9488ecc..0000000
--- a/halimpl/pn54x/utils/phNxpConfig.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * The original Work has been changed by NXP Semiconductors.
- *
- * Copyright (C) 2013-2014 NXP Semiconductors
- *
- * 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.
- *
- ******************************************************************************/
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int GetNxpStrValue(const char* name, char* p_value, unsigned long len);
-int GetNxpNumValue(const char* name, void* p_value, unsigned long len);
-int GetNxpByteArrayValue(const char* name, char* pValue, long bufflen,
- long* len);
-void resetNxpConfig(void);
-int isNxpConfigModified();
-int updateNxpConfigTimestamp();
-
-#ifdef __cplusplus
-};
-#endif
-
-#define NAME_NXPLOG_EXTNS_LOGLEVEL "NXPLOG_EXTNS_LOGLEVEL"
-#define NAME_NXPLOG_NCIHAL_LOGLEVEL "NXPLOG_NCIHAL_LOGLEVEL"
-#define NAME_NXPLOG_NCIX_LOGLEVEL "NXPLOG_NCIX_LOGLEVEL"
-#define NAME_NXPLOG_NCIR_LOGLEVEL "NXPLOG_NCIR_LOGLEVEL"
-#define NAME_NXPLOG_FWDNLD_LOGLEVEL "NXPLOG_FWDNLD_LOGLEVEL"
-#define NAME_NXPLOG_TML_LOGLEVEL "NXPLOG_TML_LOGLEVEL"
-
-#define NAME_MIFARE_READER_ENABLE "MIFARE_READER_ENABLE"
-#define NAME_FW_STORAGE "FW_STORAGE"
-#define NAME_NXP_NFC_DEV_NODE "NXP_NFC_DEV_NODE"
-#define NAME_NXP_FW_NAME "NXP_FW_NAME"
-#define NAME_NXP_FW_PROTECION_OVERRIDE "NXP_FW_PROTECION_OVERRIDE"
-#define NAME_NXP_SYS_CLK_SRC_SEL "NXP_SYS_CLK_SRC_SEL"
-#define NAME_NXP_SYS_CLK_FREQ_SEL "NXP_SYS_CLK_FREQ_SEL"
-#define NAME_NXP_SYS_CLOCK_TO_CFG "NXP_SYS_CLOCK_TO_CFG"
-#define NAME_NXP_ACT_PROP_EXTN "NXP_ACT_PROP_EXTN"
-#define NAME_NXP_EXT_TVDD_CFG "NXP_EXT_TVDD_CFG"
-#define NAME_NXP_EXT_TVDD_CFG_1 "NXP_EXT_TVDD_CFG_1"
-#define NAME_NXP_EXT_TVDD_CFG_2 "NXP_EXT_TVDD_CFG_2"
-#define NAME_NXP_EXT_TVDD_CFG_3 "NXP_EXT_TVDD_CFG_3"
-#define NAME_NXP_RF_CONF_BLK_1 "NXP_RF_CONF_BLK_1"
-#define NAME_NXP_RF_CONF_BLK_2 "NXP_RF_CONF_BLK_2"
-#define NAME_NXP_RF_CONF_BLK_3 "NXP_RF_CONF_BLK_3"
-#define NAME_NXP_RF_CONF_BLK_4 "NXP_RF_CONF_BLK_4"
-#define NAME_NXP_RF_CONF_BLK_5 "NXP_RF_CONF_BLK_5"
-#define NAME_NXP_RF_CONF_BLK_6 "NXP_RF_CONF_BLK_6"
-#define NAME_NXP_CORE_CONF_EXTN "NXP_CORE_CONF_EXTN"
-#define NAME_NXP_CORE_CONF "NXP_CORE_CONF"
-#define NAME_NXP_CORE_MFCKEY_SETTING "NXP_CORE_MFCKEY_SETTING"
-#define NAME_NXP_CORE_STANDBY "NXP_CORE_STANDBY"
-#define NAME_NXP_NFC_PROFILE_EXTN "NXP_NFC_PROFILE_EXTN"
-#define NAME_NXP_CHINA_TIANJIN_RF_ENABLED "NXP_CHINA_TIANJIN_RF_ENABLED"
-#define NAME_NXP_SWP_SWITCH_TIMEOUT "NXP_SWP_SWITCH_TIMEOUT"
-#define NAME_NXP_SWP_FULL_PWR_ON "NXP_SWP_FULL_PWR_ON"
-#define NAME_NXP_CORE_RF_FIELD "NXP_CORE_RF_FIELD"
-#define NAME_NXP_NFC_MERGE_RF_PARAMS "NXP_NFC_MERGE_RF_PARAMS"
-#define NAME_NXP_I2C_FRAGMENTATION_ENABLED "NXP_I2C_FRAGMENTATION_ENABLED"
-#define NAME_AID_MATCHING_PLATFORM "AID_MATCHING_PLATFORM"
-
-/* default configuration */
-#define default_storage_location "/data/vendor/nfc"
-
-#endif
diff --git a/halimpl/pn54x/utils/phNxpNciHal_utils.c b/halimpl/pn54x/utils/phNxpNciHal_utils.c
deleted file mode 100644
index 46e4908..0000000
--- a/halimpl/pn54x/utils/phNxpNciHal_utils.c
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- *
- * Copyright (C) 2013-2014 NXP Semiconductors
- *
- * 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.
- *
- ******************************************************************************/
-#include <errno.h>
-#include <pthread.h>
-
-#include <phNxpLog.h>
-#include <phNxpNciHal.h>
-#include <phNxpNciHal_utils.h>
-
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
-extern uint8_t discovery_cmd[50];
-extern uint8_t discovery_cmd_len;
-extern uint8_t nfcdep_detected;
-#endif
-
-/*********************** Link list functions **********************************/
-
-/*******************************************************************************
-**
-** Function listInit
-**
-** Description List initialization
-**
-** Returns 1, if list initialized, 0 otherwise
-**
-*******************************************************************************/
-int listInit(struct listHead* pList) {
- pList->pFirst = NULL;
- if (pthread_mutex_init(&pList->mutex, NULL) == -1) {
- NXPLOG_NCIHAL_E("Mutex creation failed (errno=0x%08x)", errno);
- return 0;
- }
-
- return 1;
-}
-
-/*******************************************************************************
-**
-** Function listDestroy
-**
-** Description List destruction
-**
-** Returns 1, if list destroyed, 0 if failed
-**
-*******************************************************************************/
-int listDestroy(struct listHead* pList) {
- int bListNotEmpty = 1;
- while (bListNotEmpty) {
- bListNotEmpty = listGetAndRemoveNext(pList, NULL);
- }
-
- if (pthread_mutex_destroy(&pList->mutex) == -1) {
- NXPLOG_NCIHAL_E("Mutex destruction failed (errno=0x%08x)", errno);
- return 0;
- }
-
- return 1;
-}
-
-/*******************************************************************************
-**
-** Function listAdd
-**
-** Description Add a node to the list
-**
-** Returns 1, if added, 0 if otherwise
-**
-*******************************************************************************/
-int listAdd(struct listHead* pList, void* pData) {
- struct listNode* pNode;
- struct listNode* pLastNode;
- int result;
-
- /* Create node */
- pNode = (struct listNode*)malloc(sizeof(struct listNode));
- if (pNode == NULL) {
- result = 0;
- NXPLOG_NCIHAL_E("Failed to malloc");
- goto clean_and_return;
- }
- pNode->pData = pData;
- pNode->pNext = NULL;
-
- pthread_mutex_lock(&pList->mutex);
-
- /* Add the node to the list */
- if (pList->pFirst == NULL) {
- /* Set the node as the head */
- pList->pFirst = pNode;
- } else {
- /* Seek to the end of the list */
- pLastNode = pList->pFirst;
- while (pLastNode->pNext != NULL) {
- pLastNode = pLastNode->pNext;
- }
-
- /* Add the node to the current list */
- pLastNode->pNext = pNode;
- }
-
- result = 1;
-
-clean_and_return:
- pthread_mutex_unlock(&pList->mutex);
- return result;
-}
-
-/*******************************************************************************
-**
-** Function listRemove
-**
-** Description Remove node from the list
-**
-** Returns 1, if removed, 0 if otherwise
-**
-*******************************************************************************/
-int listRemove(struct listHead* pList, void* pData) {
- struct listNode* pNode;
- struct listNode* pRemovedNode;
- int result;
-
- pthread_mutex_lock(&pList->mutex);
-
- if (pList->pFirst == NULL) {
- /* Empty list */
- NXPLOG_NCIHAL_E("Failed to deallocate (list empty)");
- result = 0;
- goto clean_and_return;
- }
-
- pNode = pList->pFirst;
- if (pList->pFirst->pData == pData) {
- /* Get the removed node */
- pRemovedNode = pNode;
-
- /* Remove the first node */
- pList->pFirst = pList->pFirst->pNext;
- } else {
- while (pNode->pNext != NULL) {
- if (pNode->pNext->pData == pData) {
- /* Node found ! */
- break;
- }
- pNode = pNode->pNext;
- }
-
- if (pNode->pNext == NULL) {
- /* Node not found */
- result = 0;
- NXPLOG_NCIHAL_E("Failed to deallocate (not found %8p)", pData);
- goto clean_and_return;
- }
-
- /* Get the removed node */
- pRemovedNode = pNode->pNext;
-
- /* Remove the node from the list */
- pNode->pNext = pNode->pNext->pNext;
- }
-
- /* Deallocate the node */
- free(pRemovedNode);
-
- result = 1;
-
-clean_and_return:
- pthread_mutex_unlock(&pList->mutex);
- return result;
-}
-
-/*******************************************************************************
-**
-** Function listGetAndRemoveNext
-**
-** Description Get next node on the list and remove it
-**
-** Returns 1, if successful, 0 if otherwise
-**
-*******************************************************************************/
-int listGetAndRemoveNext(struct listHead* pList, void** ppData) {
- struct listNode* pNode;
- int result;
-
- pthread_mutex_lock(&pList->mutex);
-
- if (pList->pFirst == NULL) {
- /* Empty list */
- NXPLOG_NCIHAL_D("Failed to deallocate (list empty)");
- result = 0;
- goto clean_and_return;
- }
-
- /* Work on the first node */
- pNode = pList->pFirst;
-
- /* Return the data */
- if (ppData != NULL) {
- *ppData = pNode->pData;
- }
-
- /* Remove and deallocate the node */
- pList->pFirst = pNode->pNext;
- free(pNode);
-
- result = 1;
-
-clean_and_return:
- listDump(pList);
- pthread_mutex_unlock(&pList->mutex);
- return result;
-}
-
-/*******************************************************************************
-**
-** Function listDump
-**
-** Description Dump list information
-**
-** Returns None
-**
-*******************************************************************************/
-void listDump(struct listHead* pList) {
- struct listNode* pNode = pList->pFirst;
-
- NXPLOG_NCIHAL_D("Node dump:");
- while (pNode != NULL) {
- NXPLOG_NCIHAL_D("- %8p (%8p)", pNode, pNode->pData);
- pNode = pNode->pNext;
- }
-
- return;
-}
-
-/* END Linked list source code */
-
-/****************** Semaphore and mutex helper functions **********************/
-
-static phNxpNciHal_Monitor_t* nxpncihal_monitor = NULL;
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_init_monitor
-**
-** Description Initialize the semaphore monitor
-**
-** Returns Pointer to monitor, otherwise NULL if failed
-**
-*******************************************************************************/
-phNxpNciHal_Monitor_t* phNxpNciHal_init_monitor(void) {
- NXPLOG_NCIHAL_D("Entering phNxpNciHal_init_monitor");
-
- if (nxpncihal_monitor == NULL) {
- nxpncihal_monitor =
- (phNxpNciHal_Monitor_t*)malloc(sizeof(phNxpNciHal_Monitor_t));
- }
-
- if (nxpncihal_monitor != NULL) {
- memset(nxpncihal_monitor, 0x00, sizeof(phNxpNciHal_Monitor_t));
-
- if (pthread_mutex_init(&nxpncihal_monitor->reentrance_mutex, NULL) == -1) {
- NXPLOG_NCIHAL_E("reentrance_mutex creation returned 0x%08x", errno);
- goto clean_and_return;
- }
-
- if (pthread_mutex_init(&nxpncihal_monitor->concurrency_mutex, NULL) == -1) {
- NXPLOG_NCIHAL_E("concurrency_mutex creation returned 0x%08x", errno);
- pthread_mutex_destroy(&nxpncihal_monitor->reentrance_mutex);
- goto clean_and_return;
- }
-
- if (listInit(&nxpncihal_monitor->sem_list) != 1) {
- NXPLOG_NCIHAL_E("Semaphore List creation failed");
- pthread_mutex_destroy(&nxpncihal_monitor->concurrency_mutex);
- pthread_mutex_destroy(&nxpncihal_monitor->reentrance_mutex);
- goto clean_and_return;
- }
- } else {
- NXPLOG_NCIHAL_E("nxphal_monitor creation failed");
- goto clean_and_return;
- }
-
- NXPLOG_NCIHAL_D("Returning with SUCCESS");
-
- return nxpncihal_monitor;
-
-clean_and_return:
- NXPLOG_NCIHAL_D("Returning with FAILURE");
-
- if (nxpncihal_monitor != NULL) {
- free(nxpncihal_monitor);
- nxpncihal_monitor = NULL;
- }
-
- return NULL;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_cleanup_monitor
-**
-** Description Clean up semaphore monitor
-**
-** Returns None
-**
-*******************************************************************************/
-void phNxpNciHal_cleanup_monitor(void) {
- if (nxpncihal_monitor != NULL) {
- pthread_mutex_destroy(&nxpncihal_monitor->concurrency_mutex);
- REENTRANCE_UNLOCK();
- pthread_mutex_destroy(&nxpncihal_monitor->reentrance_mutex);
- phNxpNciHal_releaseall_cb_data();
- listDestroy(&nxpncihal_monitor->sem_list);
- }
-
- free(nxpncihal_monitor);
- nxpncihal_monitor = NULL;
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_get_monitor
-**
-** Description Get monitor
-**
-** Returns Pointer to monitor
-**
-*******************************************************************************/
-phNxpNciHal_Monitor_t* phNxpNciHal_get_monitor(void) {
- return nxpncihal_monitor;
-}
-
-/* Initialize the callback data */
-NFCSTATUS phNxpNciHal_init_cb_data(phNxpNciHal_Sem_t* pCallbackData,
- void* pContext) {
- /* Create semaphore */
- if (sem_init(&pCallbackData->sem, 0, 0) == -1) {
- NXPLOG_NCIHAL_E("Semaphore creation failed (errno=0x%08x)", errno);
- return NFCSTATUS_FAILED;
- }
-
- /* Set default status value */
- pCallbackData->status = NFCSTATUS_FAILED;
-
- /* Copy the context */
- pCallbackData->pContext = pContext;
-
- /* Add to active semaphore list */
- if (listAdd(&phNxpNciHal_get_monitor()->sem_list, pCallbackData) != 1) {
- NXPLOG_NCIHAL_E("Failed to add the semaphore to the list");
- }
-
- return NFCSTATUS_SUCCESS;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_cleanup_cb_data
-**
-** Description Clean up callback data
-**
-** Returns None
-**
-*******************************************************************************/
-void phNxpNciHal_cleanup_cb_data(phNxpNciHal_Sem_t* pCallbackData) {
- /* Destroy semaphore */
- if (sem_destroy(&pCallbackData->sem)) {
- NXPLOG_NCIHAL_E(
- "phNxpNciHal_cleanup_cb_data: Failed to destroy semaphore "
- "(errno=0x%08x)",
- errno);
- }
-
- /* Remove from active semaphore list */
- if (listRemove(&phNxpNciHal_get_monitor()->sem_list, pCallbackData) != 1) {
- NXPLOG_NCIHAL_E(
- "phNxpNciHal_cleanup_cb_data: Failed to remove semaphore from the "
- "list");
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_releaseall_cb_data
-**
-** Description Release all callback data
-**
-** Returns None
-**
-*******************************************************************************/
-void phNxpNciHal_releaseall_cb_data(void) {
- phNxpNciHal_Sem_t* pCallbackData;
-
- while (listGetAndRemoveNext(&phNxpNciHal_get_monitor()->sem_list,
- (void**)&pCallbackData)) {
- pCallbackData->status = NFCSTATUS_FAILED;
- sem_post(&pCallbackData->sem);
- }
-
- return;
-}
-
-/* END Semaphore and mutex helper functions */
-
-/**************************** Other functions *********************************/
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_print_packet
-**
-** Description Print packet
-**
-** Returns None
-**
-*******************************************************************************/
-void phNxpNciHal_print_packet(const char* pString, const uint8_t* p_data,
- uint16_t len) {
- uint32_t i, j;
- char print_buffer[len * 3 + 1];
-
- memset(print_buffer, 0, sizeof(print_buffer));
- for (i = 0; i < len; i++) {
- snprintf(&print_buffer[i * 2], 3, "%02X", p_data[i]);
- }
- if (0 == memcmp(pString, "SEND", 0x04)) {
- NXPLOG_NCIX_D("len = %3d > %s", len, print_buffer);
- } else if (0 == memcmp(pString, "RECV", 0x04)) {
- NXPLOG_NCIR_D("len = %3d > %s", len, print_buffer);
- }
-
- return;
-}
-
-/*******************************************************************************
-**
-** Function phNxpNciHal_emergency_recovery
-**
-** Description Emergency recovery in case of no other way out
-**
-** Returns None
-**
-*******************************************************************************/
-
-void phNxpNciHal_emergency_recovery(void) {
-#if (NFC_NXP_CHIP_TYPE == PN548C2)
- if (nfcdep_detected && discovery_cmd_len != 0) {
- pthread_t pthread;
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
- if (pthread_create(&pthread, &attr, (void*)phNxpNciHal_core_reset_recovery,
- NULL) == 0) {
- return;
- }
- }
-#endif
- NXPLOG_NCIHAL_E("%s: abort()", __func__);
- abort();
-}
diff --git a/halimpl/pn54x/utils/phNxpNciHal_utils.h b/halimpl/pn54x/utils/phNxpNciHal_utils.h
deleted file mode 100644
index 3ea33e4..0000000
--- a/halimpl/pn54x/utils/phNxpNciHal_utils.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- *
- * Copyright (C) 2013-2014 NXP Semiconductors
- *
- * 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.
- *
- ******************************************************************************/
-
-#ifndef _PHNXPNCIHAL_UTILS_H_
-#define _PHNXPNCIHAL_UTILS_H_
-
-#include <assert.h>
-#include <phNfcStatus.h>
-#include <pthread.h>
-#include <semaphore.h>
-
-/********************* Definitions and structures *****************************/
-
-/* List structures */
-struct listNode {
- void* pData;
- struct listNode* pNext;
-};
-
-struct listHead {
- struct listNode* pFirst;
- pthread_mutex_t mutex;
-};
-
-/* Semaphore handling structure */
-typedef struct phNxpNciHal_Sem {
- /* Semaphore used to wait for callback */
- sem_t sem;
-
- /* Used to store the status sent by the callback */
- NFCSTATUS status;
-
- /* Used to provide a local context to the callback */
- void* pContext;
-
-} phNxpNciHal_Sem_t;
-
-/* Semaphore helper macros */
-#define SEM_WAIT(cb_data) sem_wait(&((cb_data).sem))
-#define SEM_POST(p_cb_data) sem_post(&((p_cb_data)->sem))
-
-/* Semaphore and mutex monitor */
-typedef struct phNxpNciHal_Monitor {
- /* Mutex protecting native library against reentrance */
- pthread_mutex_t reentrance_mutex;
-
- /* Mutex protecting native library against concurrency */
- pthread_mutex_t concurrency_mutex;
-
- /* List used to track pending semaphores waiting for callback */
- struct listHead sem_list;
-
-} phNxpNciHal_Monitor_t;
-
-/************************ Exposed functions ***********************************/
-/* List functions */
-int listInit(struct listHead* pList);
-int listDestroy(struct listHead* pList);
-int listAdd(struct listHead* pList, void* pData);
-int listRemove(struct listHead* pList, void* pData);
-int listGetAndRemoveNext(struct listHead* pList, void** ppData);
-void listDump(struct listHead* pList);
-
-/* NXP NCI HAL utility functions */
-phNxpNciHal_Monitor_t* phNxpNciHal_init_monitor(void);
-void phNxpNciHal_cleanup_monitor(void);
-phNxpNciHal_Monitor_t* phNxpNciHal_get_monitor(void);
-NFCSTATUS phNxpNciHal_init_cb_data(phNxpNciHal_Sem_t* pCallbackData,
- void* pContext);
-void phNxpNciHal_cleanup_cb_data(phNxpNciHal_Sem_t* pCallbackData);
-void phNxpNciHal_releaseall_cb_data(void);
-void phNxpNciHal_print_packet(const char* pString, const uint8_t* p_data,
- uint16_t len);
-void phNxpNciHal_emergency_recovery(void);
-
-/* Lock unlock helper macros */
-/* Lock unlock helper macros */
-#define REENTRANCE_LOCK() \
- if (phNxpNciHal_get_monitor()) \
- pthread_mutex_lock(&phNxpNciHal_get_monitor()->reentrance_mutex)
-#define REENTRANCE_UNLOCK() \
- if (phNxpNciHal_get_monitor()) \
- pthread_mutex_unlock(&phNxpNciHal_get_monitor()->reentrance_mutex)
-#define CONCURRENCY_LOCK() \
- if (phNxpNciHal_get_monitor()) \
- pthread_mutex_lock(&phNxpNciHal_get_monitor()->concurrency_mutex)
-#define CONCURRENCY_UNLOCK() \
- if (phNxpNciHal_get_monitor()) \
- pthread_mutex_unlock(&phNxpNciHal_get_monitor()->concurrency_mutex)
-
-#endif /* _PHNXPNCIHAL_UTILS_H_ */
diff --git a/halimpl/pn54x/utils/sparse_crc32.c b/halimpl/pn54x/utils/sparse_crc32.c
deleted file mode 100644
index 1ce4c63..0000000
--- a/halimpl/pn54x/utils/sparse_crc32.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*-
- * COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or
- * code or tables extracted from it, as desired without restriction.
- */
-
-/*
- * First, the polynomial itself and its table of feedback terms. The
- * polynomial is
- * X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0
- *
- * Note that we take it "backwards" and put the highest-order term in
- * the lowest-order bit. The X^32 term is "implied"; the LSB is the
- * X^31 term, etc. The X^0 term (usually shown as "+1") results in
- * the MSB being 1
- *
- * Note that the usual hardware shift register implementation, which
- * is what we're using (we're merely optimizing it by doing eight-bit
- * chunks at a time) shifts bits into the lowest-order term. In our
- * implementation, that means shifting towards the right. Why do we
- * do it this way? Because the calculated CRC must be transmitted in
- * order from highest-order term to lowest-order term. UARTs transmit
- * characters in order from LSB to MSB. By storing the CRC this way
- * we hand it to the UART in the order low-byte to high-byte; the UART
- * sends each low-bit to hight-bit; and the result is transmission bit
- * by bit from highest- to lowest-order term without requiring any bit
- * shuffling on our part. Reception works similarly
- *
- * The feedback terms table consists of 256, 32-bit entries. Notes
- *
- * The table can be generated at runtime if desired; code to do so
- * is shown later. It might not be obvious, but the feedback
- * terms simply represent the results of eight shift/xor opera
- * tions for all combinations of data and CRC register values
- *
- * The values must be right-shifted by eight bits by the "updcrc
- * logic; the shift must be unsigned (bring in zeroes). On some
- * hardware you could probably optimize the shift in assembler by
- * using byte-swap instructions
- * polynomial $edb88320
- *
- *
- * CRC32 code derived from work by Gary S. Brown.
- */
-
-/* Code taken from FreeBSD 8 */
-#include <stdint.h>
-
-static uint32_t crc32_tab[] = {
- 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
- 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
- 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
- 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
- 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
- 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
- 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
- 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
- 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
- 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
- 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
- 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
- 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
- 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
- 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
- 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
- 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
- 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
- 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
- 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
- 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
- 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
- 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
- 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
- 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
- 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
- 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
- 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
- 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
- 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
- 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
- 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
- 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
- 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
- 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
- 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
- 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
- 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
- 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
- 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
- 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
- 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
- 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d};
-
-/*
- * A function that calculates the CRC-32 based on the table above is
- * given below for documentation purposes. An equivalent implementation
- * of this function that's actually used in the kernel can be found
- * in sys/libkern.h, where it can be inlined.
- */
-
-uint32_t sparse_crc32(uint32_t crc_in, const void* buf, int size) {
- const uint8_t* p = buf;
- uint32_t crc;
-
- crc = crc_in ^ ~0U;
- while (size--) crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8);
- return crc ^ ~0U;
-}
diff --git a/halimpl/pn54x/utils/sparse_crc32.h b/halimpl/pn54x/utils/sparse_crc32.h
deleted file mode 100644
index a776921..0000000
--- a/halimpl/pn54x/utils/sparse_crc32.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * 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.
- */
-
-#ifndef _LIBSPARSE_SPARSE_CRC32_H_
-#define _LIBSPARSE_SPARSE_CRC32_H_
-
-#include <stdint.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-uint32_t sparse_crc32(uint32_t crc, const void* buf, size_t size);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/run_unit_tests.sh b/run_unit_tests.sh
new file mode 100755
index 0000000..c2c9904
--- /dev/null
+++ b/run_unit_tests.sh
@@ -0,0 +1,125 @@
+#!/bin/sh
+
+known_tests=(
+ nfc_test_utils
+)
+
+known_remote_tests=(
+)
+
+
+usage() {
+ binary="$(basename "$0")"
+ echo "Usage: ${binary} --help"
+ echo " ${binary} [-i <iterations>] [-s <specific device>] [--all] [<test name>[.<filter>] ...] [--<arg> ...]"
+ echo
+ echo "Unknown long arguments are passed to the test."
+ echo
+ echo "Known test names:"
+
+ for name in "${known_tests[@]}"
+ do
+ echo " ${name}"
+ done
+
+ echo
+ echo "Known tests that need a remote device:"
+ for name in "${known_remote_tests[@]}"
+ do
+ echo " ${name}"
+ done
+}
+
+iterations=1
+device=
+tests=()
+test_args=()
+while [ $# -gt 0 ]
+do
+ case "$1" in
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ -i)
+ shift
+ if [ $# -eq 0 ]; then
+ echo "error: number of iterations expected" 1>&2
+ usage
+ exit 2
+ fi
+ iterations=$(( $1 ))
+ shift
+ ;;
+ -s)
+ shift
+ if [ $# -eq 0 ]; then
+ echo "error: no device specified" 1>&2
+ usage
+ exit 2
+ fi
+ device="$1"
+ shift
+ ;;
+ --all)
+ tests+=( "${known_tests[@]}" )
+ shift
+ ;;
+ --*)
+ test_args+=( "$1" )
+ shift
+ ;;
+ *)
+ tests+=( "$1" )
+ shift
+ ;;
+ esac
+done
+
+if [ "${#tests[@]}" -eq 0 ]; then
+ tests+=( "${known_tests[@]}" )
+fi
+
+adb=( "adb" )
+if [ -n "${device}" ]; then
+ adb+=( "-s" "${device}" )
+fi
+
+failed_tests=()
+for spec in "${tests[@]}"
+do
+ name="${spec%%.*}"
+ binary="/data/nativetest/${name}/${name}"
+
+ push_command=( "${adb[@]}" push {"${ANDROID_PRODUCT_OUT}",}"${binary}" )
+ test_command=( "${adb[@]}" shell "${binary}" )
+ if [ "${name}" != "${spec}" ]; then
+ filter="${spec#*.}"
+ test_command+=( "--gtest_filter=${filter}" )
+ fi
+ test_command+=( "${test_args[@]}" )
+
+ echo "--- ${name} ---"
+ echo "pushing..."
+ "${push_command[@]}"
+ echo "running..."
+ failed_count=0
+ for i in $(seq 1 ${iterations})
+ do
+ "${test_command[@]}" || failed_count=$(( $failed_count + 1 ))
+ done
+
+ if [ $failed_count != 0 ]; then
+ failed_tests+=( "${name} ${failed_count}/${iterations}" )
+ fi
+done
+
+if [ "${#failed_tests[@]}" -ne 0 ]; then
+ for failed_test in "${failed_tests[@]}"
+ do
+ echo "!!! FAILED TEST: ${failed_test} !!!"
+ done
+ exit 1
+fi
+
+exit 0
diff --git a/src/Android.bp b/src/Android.bp
index 39d3007..0db231d 100644
--- a/src/Android.bp
+++ b/src/Android.bp
@@ -13,6 +13,8 @@
"libmetricslogger",
"libpower",
"libz",
+ "libchrome",
+ "libbase",
// Treble configuration
"libhidlbase",
@@ -20,45 +22,45 @@
"libhwbinder",
"libutils",
"android.hardware.nfc@1.0",
+ "android.hardware.nfc@1.1",
+ ],
+ static_libs: [
+ "libnfcutils",
],
cflags: [
"-DBUILDCFG=1",
- "-Wno-deprecated-register",
- "-Wno-unused-parameter",
- "-Wno-missing-field-initializers",
+ "-Wall",
+ "-Werror",
],
local_include_dirs: [
"include",
"gki/ulinux",
"gki/common",
- "hal/include",
- "hal/int",
"nfa/include",
- "nfa/int",
"nfc/include",
- "nfc/int",
],
srcs: [
- "nfa/ce/*.c",
- "nfa/dm/*.c",
- "nfa/ee/*.c",
- "nfa/hci/*.c",
- "nfa/int/*.c",
- "nfa/p2p/*.c",
- "nfa/rw/*.c",
- "nfa/sys/*.c",
- "nfc/int/*.c",
- "nfc/llcp/*.c",
- "nfc/nci/*.c",
- "nfc/ndef/*.c",
- "nfc/nfc/*.c",
+ "nfa/ce/*.cc",
+ "nfa/dm/*.cc",
+ "nfa/ee/*.cc",
+ "nfa/hci/*.cc",
+ "nfa/p2p/*.cc",
+ "nfa/rw/*.cc",
+ "nfa/sys/*.cc",
+ "nfc/llcp/*.cc",
+ "nfc/nci/*.cc",
+ "nfc/ndef/*.cc",
"nfc/nfc/*.cc",
- "nfc/tags/*.c",
- "adaptation/*.c",
- "adaptation/*.cpp",
+ "nfc/tags/*.cc",
"adaptation/*.cc",
- "gki/common/*.c",
- "gki/ulinux/*.c",
- "nfca_version.c",
+ "gki/common/*.cc",
+ "gki/ulinux/*.cc",
],
+ product_variables: {
+ debuggable: {
+ cflags: [
+ "-DDCHECK_ALWAYS_ON"
+ ],
+ },
+ },
}
diff --git a/src/adaptation/CrcChecksum.cpp b/src/adaptation/CrcChecksum.cc
similarity index 87%
rename from src/adaptation/CrcChecksum.cpp
rename to src/adaptation/CrcChecksum.cc
index af20f6e..a94879e 100644
--- a/src/adaptation/CrcChecksum.cpp
+++ b/src/adaptation/CrcChecksum.cc
@@ -16,16 +16,17 @@
*
******************************************************************************/
#include "CrcChecksum.h"
-#include <errno.h>
+
#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/types.h>
#include <unistd.h>
#include <string>
-#include "_OverrideLog.h"
-#undef LOG_TAG
-#define LOG_TAG "NfcNciHal"
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
static const unsigned short crctab[256] = {
0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601,
@@ -69,9 +70,9 @@
**
*******************************************************************************/
unsigned short crcChecksumCompute(const unsigned char* buffer, int bufferLen) {
- register unsigned short crc = 0;
- const register unsigned char* cp = buffer;
- register int cnt = bufferLen;
+ unsigned short crc = 0;
+ const unsigned char* cp = buffer;
+ int cnt = bufferLen;
while (cnt--) {
crc = ((crc >> 8) & 0xff) ^ crctab[(crc & 0xff) ^ *cp++];
@@ -90,8 +91,9 @@
**
*******************************************************************************/
bool crcChecksumVerifyIntegrity(const char* filename) {
- ALOGD("%s: filename=%s", __func__, filename);
- bool isGood = FALSE;
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: filename=%s", __func__, filename);
+ bool isGood = false;
int fileStream = open(filename, O_RDONLY);
if (fileStream >= 0) {
unsigned short checksum = 0;
@@ -107,15 +109,16 @@
}
close(fileStream);
if ((actualReadCrc == sizeof(checksum)) && (data.size() > 0)) {
- ALOGD("%s: data size=%zu", __func__, data.size());
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: data size=%zu", __func__, data.size());
if (checksum ==
crcChecksumCompute((const unsigned char*)data.data(), data.size()))
- isGood = TRUE;
+ isGood = true;
else
- ALOGE("%s: checksum mismatch", __func__);
+ LOG(ERROR) << StringPrintf("%s: checksum mismatch", __func__);
} else
- ALOGE("%s: invalid length", __func__);
+ LOG(ERROR) << StringPrintf("%s: invalid length", __func__);
} else
- isGood = TRUE; // assume file does not exist
+ isGood = true; // assume file does not exist
return isGood;
}
diff --git a/src/adaptation/NfcAdaptation.cpp b/src/adaptation/NfcAdaptation.cc
old mode 100644
new mode 100755
similarity index 65%
rename from src/adaptation/NfcAdaptation.cpp
rename to src/adaptation/NfcAdaptation.cc
index 42bf55f..528bdd7
--- a/src/adaptation/NfcAdaptation.cpp
+++ b/src/adaptation/NfcAdaptation.cc
@@ -15,43 +15,41 @@
* limitations under the License.
*
******************************************************************************/
-#include "_OverrideLog.h"
-
-#include <android/hardware/nfc/1.0/INfc.h>
-#include <android/hardware/nfc/1.0/INfcClientCallback.h>
+#include <android-base/stringprintf.h>
+#include <android/hardware/nfc/1.1/INfc.h>
+#include <base/command_line.h>
+#include <base/logging.h>
+#include <cutils/properties.h>
#include <hwbinder/ProcessState.h>
-#include <pthread.h>
+
#include "NfcAdaptation.h"
-#include "debug_nfcsnoop.h"
-#include "nfc_target.h"
-
-extern "C" {
-#include "gki.h"
-#include "nfa_api.h"
-#include "nfc_int.h"
-#include "vendor_cfg.h"
-}
#include "android_logmsg.h"
-#include "config.h"
-
-#undef LOG_TAG
-#define LOG_TAG "NfcAdaptation"
+#include "debug_nfcsnoop.h"
+#include "nfa_api.h"
+#include "nfa_rw_api.h"
+#include "nfc_config.h"
+#include "nfc_int.h"
using android::OK;
using android::sp;
using android::status_t;
+using android::base::StringPrintf;
using android::hardware::ProcessState;
using android::hardware::Return;
using android::hardware::Void;
using android::hardware::nfc::V1_0::INfc;
-using android::hardware::nfc::V1_0::INfcClientCallback;
+using android::hardware::nfc::V1_1::PresenceCheckAlgorithm;
+using INfcV1_1 = android::hardware::nfc::V1_1::INfc;
+using NfcVendorConfig = android::hardware::nfc::V1_1::NfcConfig;
+using android::hardware::nfc::V1_1::INfcClientCallback;
using android::hardware::hidl_vec;
-extern "C" void GKI_shutdown();
-extern void resetConfig();
-extern "C" void verify_stack_non_volatile_store();
-extern "C" void delete_stack_non_volatile_store(bool forceDelete);
+extern bool nfc_debug_enabled;
+
+extern void GKI_shutdown();
+extern void verify_stack_non_volatile_store();
+extern void delete_stack_non_volatile_store(bool forceDelete);
NfcAdaptation* NfcAdaptation::mpInstance = NULL;
ThreadMutex NfcAdaptation::sLock;
@@ -60,25 +58,43 @@
ThreadCondVar NfcAdaptation::mHalOpenCompletedEvent;
ThreadCondVar NfcAdaptation::mHalCloseCompletedEvent;
sp<INfc> NfcAdaptation::mHal;
+sp<INfcV1_1> NfcAdaptation::mHal_1_1;
INfcClientCallback* NfcAdaptation::mCallback;
-uint32_t ScrProtocolTraceFlag = SCR_PROTO_TRACE_ALL; // 0x017F00;
-uint8_t appl_trace_level = 0xff;
+bool nfc_debug_enabled = false;
+std::string nfc_storage_path;
uint8_t appl_dta_mode_flag = 0x00;
-char bcm_nfc_location[120];
-static uint8_t nfa_dm_cfg[sizeof(tNFA_DM_CFG)];
-static uint8_t nfa_proprietary_cfg[sizeof(tNFA_PROPRIETARY_CFG)];
-extern tNFA_DM_CFG* p_nfa_dm_cfg;
-extern tNFA_PROPRIETARY_CFG* p_nfa_proprietary_cfg;
+extern tNFA_DM_CFG nfa_dm_cfg;
+extern tNFA_PROPRIETARY_CFG nfa_proprietary_cfg;
+extern tNFA_HCI_CFG nfa_hci_cfg;
extern uint8_t nfa_ee_max_ee_cfg;
-extern const uint8_t nfca_version_string[];
-extern const uint8_t nfa_version_string[];
-static uint8_t deviceHostWhiteList[NFA_HCI_MAX_HOST_IN_NETWORK];
-static tNFA_HCI_CFG jni_nfa_hci_cfg;
-extern tNFA_HCI_CFG* p_nfa_hci_cfg;
extern bool nfa_poll_bail_out_mode;
+// Whitelist for hosts allowed to create a pipe
+// See ADM_CREATE_PIPE command in the ETSI test specification
+// ETSI TS 102 622, section 6.1.3.1
+static std::vector<uint8_t> host_whitelist;
+
+namespace {
+void initializeGlobalDebugEnabledFlag() {
+ nfc_debug_enabled =
+ (NfcConfig::getUnsigned(NAME_NFC_DEBUG_ENABLED, 0) != 0) ? true : false;
+
+ char valueStr[PROPERTY_VALUE_MAX] = {0};
+ int len = property_get("nfc.debug_enabled", valueStr, "");
+ if (len > 0) {
+ // let Android property override .conf variable
+ unsigned debug_enabled = 0;
+ sscanf(valueStr, "%u", &debug_enabled);
+ nfc_debug_enabled = (debug_enabled == 0) ? false : true;
+ }
+
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: level=%u", __func__, nfc_debug_enabled);
+}
+} // namespace
+
class NfcClientCallback : public INfcClientCallback {
public:
NfcClientCallback(tHAL_NFC_CBACK* eventCallback,
@@ -87,6 +103,12 @@
mDataCallback = dataCallback;
};
virtual ~NfcClientCallback() = default;
+ Return<void> sendEvent_1_1(
+ ::android::hardware::nfc::V1_1::NfcEvent event,
+ ::android::hardware::nfc::V1_0::NfcStatus event_status) override {
+ mEventCallback((uint8_t)event, (tHAL_NFC_STATUS)event_status);
+ return Void();
+ };
Return<void> sendEvent(
::android::hardware::nfc::V1_0::NfcEvent event,
::android::hardware::nfc::V1_0::NfcStatus event_status) override {
@@ -141,10 +163,61 @@
NfcAdaptation& NfcAdaptation::GetInstance() {
AutoThreadMutex a(sLock);
- if (!mpInstance) mpInstance = new NfcAdaptation;
+ if (!mpInstance) {
+ mpInstance = new NfcAdaptation;
+ mpInstance->InitializeHalDeviceContext();
+ }
return *mpInstance;
}
+void NfcAdaptation::GetVendorConfigs(
+ std::map<std::string, ConfigValue>& configMap) {
+ if (mHal_1_1) {
+ mHal_1_1->getConfig([&configMap](NfcVendorConfig config) {
+ std::vector<uint8_t> nfaPropCfg = {
+ config.nfaProprietaryCfg.protocol18092Active,
+ config.nfaProprietaryCfg.protocolBPrime,
+ config.nfaProprietaryCfg.protocolDual,
+ config.nfaProprietaryCfg.protocol15693,
+ config.nfaProprietaryCfg.protocolKovio,
+ config.nfaProprietaryCfg.protocolMifare,
+ config.nfaProprietaryCfg.discoveryPollKovio,
+ config.nfaProprietaryCfg.discoveryPollBPrime,
+ config.nfaProprietaryCfg.discoveryListenBPrime};
+ configMap.emplace(NAME_NFA_PROPRIETARY_CFG, ConfigValue(nfaPropCfg));
+ configMap.emplace(NAME_NFA_POLL_BAIL_OUT_MODE,
+ ConfigValue(config.nfaPollBailOutMode ? 1 : 0));
+ configMap.emplace(NAME_DEFAULT_OFFHOST_ROUTE,
+ ConfigValue(config.defaultOffHostRoute));
+ configMap.emplace(NAME_DEFAULT_ROUTE, ConfigValue(config.defaultRoute));
+ configMap.emplace(NAME_DEFAULT_NFCF_ROUTE,
+ ConfigValue(config.defaultOffHostRouteFelica));
+ configMap.emplace(NAME_DEFAULT_SYS_CODE_ROUTE,
+ ConfigValue(config.defaultSystemCodeRoute));
+ configMap.emplace(NAME_DEFAULT_SYS_CODE_PWR_STATE,
+ ConfigValue(config.defaultSystemCodePowerState));
+ configMap.emplace(NAME_OFF_HOST_SIM_PIPE_ID,
+ ConfigValue(config.offHostSIMPipeId));
+ configMap.emplace(NAME_OFF_HOST_ESE_PIPE_ID,
+ ConfigValue(config.offHostESEPipeId));
+ configMap.emplace(NAME_ISO_DEP_MAX_TRANSCEIVE,
+ ConfigValue(config.maxIsoDepTransceiveLength));
+ if (config.hostWhitelist.size() != 0) {
+ configMap.emplace(NAME_DEVICE_HOST_WHITE_LIST,
+ ConfigValue(config.hostWhitelist));
+ }
+ /* For Backwards compatibility */
+ if (config.presenceCheckAlgorithm ==
+ PresenceCheckAlgorithm::ISO_DEP_NAK) {
+ configMap.emplace(NAME_PRESENCE_CHECK_ALGORITHM,
+ ConfigValue((uint32_t)NFA_RW_PRES_CHK_ISO_DEP_NAK));
+ } else {
+ configMap.emplace(NAME_PRESENCE_CHECK_ALGORITHM,
+ ConfigValue((uint32_t)config.presenceCheckAlgorithm));
+ }
+ });
+ }
+}
/*******************************************************************************
**
** Function: NfcAdaptation::Initialize()
@@ -156,64 +229,82 @@
*******************************************************************************/
void NfcAdaptation::Initialize() {
const char* func = "NfcAdaptation::Initialize";
- ALOGD("%s: enter", func);
- ALOGE("%s: ver=%s nfa=%s", func, nfca_version_string, nfa_version_string);
- unsigned long num;
+ const char* argv[] = {"libnfc_nci"};
+ // Init log tag
+ base::CommandLine::Init(1, argv);
- if (GetNumValue(NAME_USE_RAW_NCI_TRACE, &num, sizeof(num))) {
- if (num == 1) {
- // display protocol traces in raw format
- ProtoDispAdapterUseRawOutput(TRUE);
- ALOGD("%s: logging protocol in raw format", func);
- }
- }
- if (!GetStrValue(NAME_NFA_STORAGE, bcm_nfc_location,
- sizeof(bcm_nfc_location))) {
- strlcpy(bcm_nfc_location, "/data/nfc", sizeof(bcm_nfc_location));
+ // Android already logs thread_id, proc_id, timestamp, so disable those.
+ logging::SetLogItems(false, false, false, false);
+
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: enter", func);
+
+ nfc_storage_path = NfcConfig::getString(NAME_NFA_STORAGE, "/data/nfc");
+
+ if (NfcConfig::hasKey(NAME_NFA_DM_CFG)) {
+ std::vector<uint8_t> dm_config = NfcConfig::getBytes(NAME_NFA_DM_CFG);
+ if (dm_config.size() > 0) nfa_dm_cfg.auto_detect_ndef = dm_config[0];
+ if (dm_config.size() > 1) nfa_dm_cfg.auto_read_ndef = dm_config[1];
+ if (dm_config.size() > 2) nfa_dm_cfg.auto_presence_check = dm_config[2];
+ if (dm_config.size() > 3) nfa_dm_cfg.presence_check_option = dm_config[3];
+ // NOTE: The timeout value is not configurable here because the endianess
+ // of a byte array is ambiguous and needlessly difficult to configure.
+ // If this value needs to be configgurable, a numeric config option should
+ // be used.
}
- initializeProtocolLogLevel();
-
- if (GetStrValue(NAME_NFA_DM_CFG, (char*)nfa_dm_cfg, sizeof(nfa_dm_cfg)))
- p_nfa_dm_cfg = (tNFA_DM_CFG*)&nfa_dm_cfg[0];
-
- if (GetNumValue(NAME_NFA_MAX_EE_SUPPORTED, &num, sizeof(num))) {
- nfa_ee_max_ee_cfg = num;
- ALOGD("%s: Overriding NFA_EE_MAX_EE_SUPPORTED to use %d", func,
- nfa_ee_max_ee_cfg);
- }
- if (GetNumValue(NAME_NFA_POLL_BAIL_OUT_MODE, &num, sizeof(num))) {
- nfa_poll_bail_out_mode = num;
- ALOGD("%s: Overriding NFA_POLL_BAIL_OUT_MODE to use %d", func,
- nfa_poll_bail_out_mode);
+ if (NfcConfig::hasKey(NAME_NFA_MAX_EE_SUPPORTED)) {
+ nfa_ee_max_ee_cfg = NfcConfig::getUnsigned(NAME_NFA_MAX_EE_SUPPORTED);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: Overriding NFA_EE_MAX_EE_SUPPORTED to use %d",
+ func, nfa_ee_max_ee_cfg);
}
- if (GetStrValue(NAME_NFA_PROPRIETARY_CFG, (char*)nfa_proprietary_cfg,
- sizeof(tNFA_PROPRIETARY_CFG))) {
- p_nfa_proprietary_cfg = (tNFA_PROPRIETARY_CFG*)&nfa_proprietary_cfg[0];
+ if (NfcConfig::hasKey(NAME_NFA_POLL_BAIL_OUT_MODE)) {
+ nfa_poll_bail_out_mode =
+ NfcConfig::getUnsigned(NAME_NFA_POLL_BAIL_OUT_MODE);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: Overriding NFA_POLL_BAIL_OUT_MODE to use %d", func,
+ nfa_poll_bail_out_mode);
}
- // configure device host whitelist of HCI host ID's; see specification ETSI TS
- // 102 622 V11.1.10
- //(2012-10), section 6.1.3.1
- num = GetStrValue(NAME_DEVICE_HOST_WHITE_LIST, (char*)deviceHostWhiteList,
- sizeof(deviceHostWhiteList));
- if (num) {
- memmove(&jni_nfa_hci_cfg, p_nfa_hci_cfg, sizeof(jni_nfa_hci_cfg));
- jni_nfa_hci_cfg.num_whitelist_host =
- (uint8_t)num; // number of HCI host ID's in the whitelist
- jni_nfa_hci_cfg.p_whitelist = deviceHostWhiteList; // array of HCI host
- // ID's
- p_nfa_hci_cfg = &jni_nfa_hci_cfg;
+ if (NfcConfig::hasKey(NAME_NFA_PROPRIETARY_CFG)) {
+ std::vector<uint8_t> p_config =
+ NfcConfig::getBytes(NAME_NFA_PROPRIETARY_CFG);
+ if (p_config.size() > 0)
+ nfa_proprietary_cfg.pro_protocol_18092_active = p_config[0];
+ if (p_config.size() > 1)
+ nfa_proprietary_cfg.pro_protocol_b_prime = p_config[1];
+ if (p_config.size() > 2)
+ nfa_proprietary_cfg.pro_protocol_dual = p_config[2];
+ if (p_config.size() > 3)
+ nfa_proprietary_cfg.pro_protocol_15693 = p_config[3];
+ if (p_config.size() > 4)
+ nfa_proprietary_cfg.pro_protocol_kovio = p_config[4];
+ if (p_config.size() > 5) nfa_proprietary_cfg.pro_protocol_mfc = p_config[5];
+ if (p_config.size() > 6)
+ nfa_proprietary_cfg.pro_discovery_kovio_poll = p_config[6];
+ if (p_config.size() > 7)
+ nfa_proprietary_cfg.pro_discovery_b_prime_poll = p_config[7];
+ if (p_config.size() > 8)
+ nfa_proprietary_cfg.pro_discovery_b_prime_listen = p_config[8];
}
- initializeGlobalAppLogLevel();
+ // Configure whitelist of HCI host ID's
+ // See specification: ETSI TS 102 622, section 6.1.3.1
+ if (NfcConfig::hasKey(NAME_DEVICE_HOST_WHITE_LIST)) {
+ host_whitelist = NfcConfig::getBytes(NAME_DEVICE_HOST_WHITE_LIST);
+ nfa_hci_cfg.num_whitelist_host = host_whitelist.size();
+ nfa_hci_cfg.p_whitelist = &host_whitelist[0];
+ }
+
+ initializeGlobalDebugEnabledFlag();
verify_stack_non_volatile_store();
- if (GetNumValue(NAME_PRESERVE_STORAGE, (char*)&num, sizeof(num)) &&
- (num == 1))
- ALOGD("%s: preserve stack NV store", __func__);
- else {
+ if (NfcConfig::hasKey(NAME_PRESERVE_STORAGE) &&
+ NfcConfig::getUnsigned(NAME_PRESERVE_STORAGE) == 1) {
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: preserve stack NV store", __func__);
+ } else {
delete_stack_non_volatile_store(FALSE);
}
@@ -228,11 +319,8 @@
mCondVar.wait();
}
- mHalCallback = NULL;
- memset(&mHalEntryFuncs, 0, sizeof(mHalEntryFuncs));
- InitializeHalDeviceContext();
debug_nfcsnoop_init();
- ALOGD("%s: exit", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: exit", func);
}
/*******************************************************************************
@@ -248,18 +336,27 @@
const char* func = "NfcAdaptation::Finalize";
AutoThreadMutex a(sLock);
- ALOGD("%s: enter", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: enter", func);
GKI_shutdown();
- resetConfig();
+ NfcConfig::clear();
- mCallback = NULL;
- memset(&mHalEntryFuncs, 0, sizeof(mHalEntryFuncs));
-
- ALOGD("%s: exit", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: exit", func);
delete this;
}
+void NfcAdaptation::FactoryReset() {
+ if (mHal_1_1 != nullptr) {
+ mHal_1_1->factoryReset();
+ }
+}
+
+void NfcAdaptation::DeviceShutdown() {
+ if (mHal_1_1 != nullptr) {
+ mHal_1_1->closeForPowerOffCase();
+ }
+}
+
/*******************************************************************************
**
** Function: NfcAdaptation::Dump
@@ -291,11 +388,11 @@
** Returns: none
**
*******************************************************************************/
-uint32_t NfcAdaptation::NFCA_TASK(uint32_t arg) {
+uint32_t NfcAdaptation::NFCA_TASK(__attribute__((unused)) uint32_t arg) {
const char* func = "NfcAdaptation::NFCA_TASK";
- ALOGD("%s: enter", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: enter", func);
GKI_run(0);
- ALOGD("%s: exit", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: exit", func);
return 0;
}
@@ -308,9 +405,9 @@
** Returns: none
**
*******************************************************************************/
-uint32_t NfcAdaptation::Thread(uint32_t arg) {
+uint32_t NfcAdaptation::Thread(__attribute__((unused)) uint32_t arg) {
const char* func = "NfcAdaptation::Thread";
- ALOGD("%s: enter", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: enter", func);
{
ThreadCondVar CondVar;
@@ -323,7 +420,7 @@
NfcAdaptation::GetInstance().signal();
GKI_exit_task(GKI_get_taskid());
- ALOGD("%s: exit", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: exit", func);
return 0;
}
@@ -349,8 +446,6 @@
*******************************************************************************/
void NfcAdaptation::InitializeHalDeviceContext() {
const char* func = "NfcAdaptation::InitializeHalDeviceContext";
- ALOGD("%s: enter", func);
- int ret = 0; // 0 means success
mHalEntryFuncs.initialize = HalInitialize;
mHalEntryFuncs.terminate = HalTerminate;
@@ -362,12 +457,15 @@
mHalEntryFuncs.control_granted = HalControlGranted;
mHalEntryFuncs.power_cycle = HalPowerCycle;
mHalEntryFuncs.get_max_ee = HalGetMaxNfcee;
- ALOGI("%s: INfc::getService()", func);
- mHal = INfc::getService();
+ LOG(INFO) << StringPrintf("%s: INfc::getService()", func);
+ mHal = mHal_1_1 = INfcV1_1::getService();
+ if (mHal_1_1 == nullptr) {
+ mHal = INfc::getService();
+ }
LOG_FATAL_IF(mHal == nullptr, "Failed to retrieve the NFC HAL!");
- ALOGI("%s: INfc::getService() returned %p (%s)", func, mHal.get(),
- (mHal->isRemote() ? "remote" : "local"));
- ALOGD("%s: exit", func);
+ LOG(INFO) << StringPrintf("%s: INfc::getService() returned %p (%s)", func,
+ mHal.get(),
+ (mHal->isRemote() ? "remote" : "local"));
}
/*******************************************************************************
@@ -382,7 +480,7 @@
*******************************************************************************/
void NfcAdaptation::HalInitialize() {
const char* func = "NfcAdaptation::HalInitialize";
- ALOGD("%s", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", func);
}
/*******************************************************************************
@@ -397,7 +495,7 @@
*******************************************************************************/
void NfcAdaptation::HalTerminate() {
const char* func = "NfcAdaptation::HalTerminate";
- ALOGD("%s", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", func);
}
/*******************************************************************************
@@ -412,9 +510,13 @@
void NfcAdaptation::HalOpen(tHAL_NFC_CBACK* p_hal_cback,
tHAL_NFC_DATA_CBACK* p_data_cback) {
const char* func = "NfcAdaptation::HalOpen";
- ALOGD("%s", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", func);
mCallback = new NfcClientCallback(p_hal_cback, p_data_cback);
- mHal->open(mCallback);
+ if (mHal_1_1 != nullptr) {
+ mHal_1_1->open_1_1(mCallback);
+ } else {
+ mHal->open(mCallback);
+ }
}
/*******************************************************************************
@@ -428,7 +530,7 @@
*******************************************************************************/
void NfcAdaptation::HalClose() {
const char* func = "NfcAdaptation::HalClose";
- ALOGD("%s", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", func);
mHal->close();
}
@@ -445,7 +547,7 @@
void NfcAdaptation::HalDeviceContextCallback(nfc_event_t event,
nfc_status_t event_status) {
const char* func = "NfcAdaptation::HalDeviceContextCallback";
- ALOGD("%s: event=%u", func, event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: event=%u", func, event);
if (mHalCallback) mHalCallback(event, (tHAL_NFC_STATUS)event_status);
}
@@ -462,7 +564,8 @@
void NfcAdaptation::HalDeviceContextDataCallback(uint16_t data_len,
uint8_t* p_data) {
const char* func = "NfcAdaptation::HalDeviceContextDataCallback";
- ALOGD("%s: len=%u", func, data_len);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: len=%u", func, data_len);
if (mHalDataCallback) mHalDataCallback(data_len, p_data);
}
@@ -477,7 +580,7 @@
*******************************************************************************/
void NfcAdaptation::HalWrite(uint16_t data_len, uint8_t* p_data) {
const char* func = "NfcAdaptation::HalWrite";
- ALOGD("%s", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", func);
::android::hardware::nfc::V1_0::NfcData data;
data.setToExternal(p_data, data_len);
mHal->write(data);
@@ -495,7 +598,7 @@
void NfcAdaptation::HalCoreInitialized(uint16_t data_len,
uint8_t* p_core_init_rsp_params) {
const char* func = "NfcAdaptation::HalCoreInitialized";
- ALOGD("%s", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", func);
hidl_vec<uint8_t> data;
data.setToExternal(p_core_init_rsp_params, data_len);
@@ -518,7 +621,7 @@
*******************************************************************************/
bool NfcAdaptation::HalPrediscover() {
const char* func = "NfcAdaptation::HalPrediscover";
- ALOGD("%s", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", func);
bool retval = FALSE;
mHal->prediscover();
return retval;
@@ -539,7 +642,7 @@
*******************************************************************************/
void NfcAdaptation::HalControlGranted() {
const char* func = "NfcAdaptation::HalControlGranted";
- ALOGD("%s", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", func);
mHal->controlGranted();
}
@@ -554,7 +657,7 @@
*******************************************************************************/
void NfcAdaptation::HalPowerCycle() {
const char* func = "NfcAdaptation::HalPowerCycle";
- ALOGD("%s", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", func);
mHal->powerCycle();
}
@@ -569,8 +672,7 @@
*******************************************************************************/
uint8_t NfcAdaptation::HalGetMaxNfcee() {
const char* func = "NfcAdaptation::HalPowerCycle";
- uint8_t maxNfcee = 0;
- ALOGD("%s", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", func);
return nfa_ee_max_ee_cfg;
}
@@ -586,21 +688,21 @@
*******************************************************************************/
void NfcAdaptation::DownloadFirmware() {
const char* func = "NfcAdaptation::DownloadFirmware";
- ALOGD("%s: enter", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: enter", func);
HalInitialize();
mHalOpenCompletedEvent.lock();
- ALOGD("%s: try open HAL", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: try open HAL", func);
HalOpen(HalDownloadFirmwareCallback, HalDownloadFirmwareDataCallback);
mHalOpenCompletedEvent.wait();
mHalCloseCompletedEvent.lock();
- ALOGD("%s: try close HAL", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: try close HAL", func);
HalClose();
mHalCloseCompletedEvent.wait();
HalTerminate();
- ALOGD("%s: exit", func);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: exit", func);
}
/*******************************************************************************
@@ -613,17 +715,21 @@
**
*******************************************************************************/
void NfcAdaptation::HalDownloadFirmwareCallback(nfc_event_t event,
+ __attribute__((unused))
nfc_status_t event_status) {
const char* func = "NfcAdaptation::HalDownloadFirmwareCallback";
- ALOGD("%s: event=0x%X", func, event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: event=0x%X", func, event);
switch (event) {
case HAL_NFC_OPEN_CPLT_EVT: {
- ALOGD("%s: HAL_NFC_OPEN_CPLT_EVT", func);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: HAL_NFC_OPEN_CPLT_EVT", func);
mHalOpenCompletedEvent.signal();
break;
}
case HAL_NFC_CLOSE_CPLT_EVT: {
- ALOGD("%s: HAL_NFC_CLOSE_CPLT_EVT", func);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: HAL_NFC_CLOSE_CPLT_EVT", func);
mHalCloseCompletedEvent.signal();
break;
}
@@ -639,7 +745,9 @@
** Returns: None.
**
*******************************************************************************/
-void NfcAdaptation::HalDownloadFirmwareDataCallback(uint16_t data_len,
+void NfcAdaptation::HalDownloadFirmwareDataCallback(__attribute__((unused))
+ uint16_t data_len,
+ __attribute__((unused))
uint8_t* p_data) {}
/*******************************************************************************
diff --git a/src/adaptation/OverrideLog.cpp b/src/adaptation/OverrideLog.cpp
deleted file mode 100644
index 81beafc..0000000
--- a/src/adaptation/OverrideLog.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Override the ALOGD(), ALOGE(), and other logging macros from
- * /system/core/include/cutils/log.h
- *
- ******************************************************************************/
-#include <cutils/properties.h>
-#include <string.h>
-#include "_OverrideLog.h"
-#include "android_logmsg.h"
-#include "config.h"
-
-#undef LOG_TAG
-#define LOG_TAG "BrcmNfcJni"
-
-/*******************************************************************************
-**
-** Function: initializeGlobalAppLogLevel
-**
-** Description: Initialize and get global logging level from .conf or
-** Android property nfc.app_log_level. The Android property
-** overrides .conf variable.
-**
-** Returns: Global log level:
-** BT_TRACE_LEVEL_NONE 0 * No trace messages to be generated
-** BT_TRACE_LEVEL_ERROR 1 * Error condition trace messages
-** BT_TRACE_LEVEL_WARNING 2 * Warning condition trace messages
-** BT_TRACE_LEVEL_API 3 * API traces
-** BT_TRACE_LEVEL_EVENT 4 * Debug messages for events
-** BT_TRACE_LEVEL_DEBUG 5 * Debug messages (general)
-**
-*******************************************************************************/
-unsigned char initializeGlobalAppLogLevel() {
- unsigned long num = 0;
- char valueStr[PROPERTY_VALUE_MAX] = {0};
-
- num = 1;
- if (GetNumValue(NAME_APPL_TRACE_LEVEL, &num, sizeof(num)))
- appl_trace_level = (unsigned char)num;
-
- int len = property_get("nfc.app_log_level", valueStr, "");
- if (len > 0) {
- // let Android property override .conf variable
- sscanf(valueStr, "%lu", &num);
- appl_trace_level = (unsigned char)num;
- }
-
- // 0xFF is a special value used by the stack to query the current
- // trace level; it does not change any trace level
- if (appl_trace_level == 0xFF) appl_trace_level = BT_TRACE_LEVEL_DEBUG;
- ALOGD("%s: level=%u", __func__, appl_trace_level);
-
- if (appl_trace_level < BT_TRACE_LEVEL_DEBUG) {
- // display protocol traces in raw format
- ProtoDispAdapterUseRawOutput(TRUE);
- }
- return appl_trace_level;
-}
-
-uint32_t initializeProtocolLogLevel() {
- uint32_t num = 0;
- char valueStr[PROPERTY_VALUE_MAX] = {0};
-
- if (GetNumValue(NAME_PROTOCOL_TRACE_LEVEL, &num, sizeof(num)))
- ScrProtocolTraceFlag = num;
-
- int len = property_get("nfc.enable_protocol_log", valueStr, "");
- if (len > 0) {
- if (strncmp("0", valueStr, 1) == 0) {
- ScrProtocolTraceFlag = 0;
- } else {
- ScrProtocolTraceFlag = ~0;
- }
- }
-
- return ScrProtocolTraceFlag;
-}
-
-void initializeGlobalAppDtaMode() {
- appl_dta_mode_flag = 0x01;
- ALOGD("%s: DTA Enabled", __func__);
-}
diff --git a/src/adaptation/android_logmsg.cc b/src/adaptation/android_logmsg.cc
new file mode 100644
index 0000000..bdfe3b9
--- /dev/null
+++ b/src/adaptation/android_logmsg.cc
@@ -0,0 +1,108 @@
+/******************************************************************************
+ *
+ * Copyright (C) 1999-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.
+ *
+ ******************************************************************************/
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+#include <cutils/log.h>
+
+#include "android_logmsg.h"
+#include "buildcfg.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
+#define MAX_NCI_PACKET_SIZE 259
+#define BTE_LOG_BUF_SIZE 1024
+#define BTE_LOG_MAX_SIZE (BTE_LOG_BUF_SIZE - 12)
+#define MAX_LOGCAT_LINE 4096
+#define PRINT(s) __android_log_write(ANDROID_LOG_DEBUG, "BrcmNci", s)
+static char log_line[MAX_LOGCAT_LINE];
+static const char* sTable = "0123456789abcdef";
+
+static void ToHex(const uint8_t* data, uint16_t len, char* hexString,
+ uint16_t hexStringSize);
+
+void ProtoDispAdapterDisplayNciPacket(uint8_t* nciPacket, uint16_t nciPacketLen,
+ bool is_recv) {
+ if (!nfc_debug_enabled) return;
+
+ char line_buf[(MAX_NCI_PACKET_SIZE * 2) + 1];
+ ToHex(nciPacket, nciPacketLen, line_buf, sizeof(line_buf));
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s:%s", is_recv ? "NciR" : "NciX", line_buf);
+}
+
+void ToHex(const uint8_t* data, uint16_t len, char* hexString,
+ uint16_t hexStringSize) {
+ int i = 0, j = 0;
+ for (i = 0, j = 0; i < len && j < hexStringSize - 3; i++) {
+ hexString[j++] = sTable[(*data >> 4) & 0xf];
+ hexString[j++] = sTable[*data & 0xf];
+ data++;
+ }
+ hexString[j] = '\0';
+}
+
+inline void byte2hex(const char* data, char** str) {
+ **str = sTable[(*data >> 4) & 0xf];
+ ++*str;
+ **str = sTable[*data & 0xf];
+ ++*str;
+}
+
+/***************************************************************************
+**
+** Function DispLLCP
+**
+** Description Log LLCP packet as hex-ascii bytes.
+**
+** Returns None.
+**
+***************************************************************************/
+void DispLLCP(NFC_HDR* p_buf, bool is_recv) {
+ if (!nfc_debug_enabled) return;
+
+ uint32_t nBytes = ((NFC_HDR_SIZE + p_buf->offset + p_buf->len) * 2) + 1;
+ if (nBytes > sizeof(log_line)) return;
+
+ uint8_t* data = (uint8_t*)p_buf;
+ int data_len = NFC_HDR_SIZE + p_buf->offset + p_buf->len;
+ ToHex(data, data_len, log_line, sizeof(log_line));
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s:%s", is_recv ? "LlcpR" : "LlcpX", log_line);
+}
+
+/***************************************************************************
+**
+** Function DispHcp
+**
+** Description Log raw HCP packet as hex-ascii bytes
+**
+** Returns None.
+**
+***************************************************************************/
+void DispHcp(uint8_t* data, uint16_t len, bool is_recv) {
+ if (!nfc_debug_enabled) return;
+
+ uint32_t nBytes = (len * 2) + 1;
+ if (nBytes > sizeof(log_line)) return;
+
+ ToHex(data, len, log_line, sizeof(log_line));
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s:%s", is_recv ? "HcpR" : "HcpX", log_line);
+}
diff --git a/src/adaptation/android_logmsg.cpp b/src/adaptation/android_logmsg.cpp
deleted file mode 100644
index c7a7250..0000000
--- a/src/adaptation/android_logmsg.cpp
+++ /dev/null
@@ -1,302 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#include "_OverrideLog.h"
-
-#include <cutils/log.h>
-#include "android_logmsg.h"
-#include "buildcfg.h"
-#include "nfc_target.h"
-
-extern uint32_t ScrProtocolTraceFlag;
-#define MAX_NCI_PACKET_SIZE 259
-#define BTE_LOG_BUF_SIZE 1024
-#define BTE_LOG_MAX_SIZE (BTE_LOG_BUF_SIZE - 12)
-#define MAX_LOGCAT_LINE 4096
-#define PRINT(s) __android_log_write(ANDROID_LOG_DEBUG, "BrcmNci", s)
-static char log_line[MAX_LOGCAT_LINE];
-static const char* sTable = "0123456789abcdef";
-static bool sIsUseRaw = FALSE;
-static void ToHex(const uint8_t* data, uint16_t len, char* hexString,
- uint16_t hexStringSize);
-static void dumpbin(const char* data, int size, uint32_t trace_layer,
- uint32_t trace_type);
-static inline void word2hex(const char* data, char** hex);
-static inline void byte2char(const char* data, char** str);
-static inline void byte2hex(const char* data, char** str);
-
-void BTDISP_LOCK_LOG() {}
-
-void BTDISP_UNLOCK_LOG() {}
-
-void BTDISP_INIT_LOCK() {}
-
-void BTDISP_UNINIT_LOCK() {}
-
-void ProtoDispAdapterUseRawOutput(bool isUseRaw) { sIsUseRaw = isUseRaw; }
-
-void ProtoDispAdapterDisplayNciPacket(uint8_t* nciPacket, uint16_t nciPacketLen,
- bool is_recv) {
- // Protocol decoder is not available, so decode NCI packet into hex numbers.
- if (!(ScrProtocolTraceFlag & SCR_PROTO_TRACE_NCI)) return;
- char line_buf[(MAX_NCI_PACKET_SIZE * 2) + 1];
- ToHex(nciPacket, nciPacketLen, line_buf, sizeof(line_buf));
- __android_log_write(ANDROID_LOG_DEBUG, (is_recv) ? "BrcmNciR" : "BrcmNciX",
- line_buf);
-}
-
-void ToHex(const uint8_t* data, uint16_t len, char* hexString,
- uint16_t hexStringSize) {
- int i = 0, j = 0;
- for (i = 0, j = 0; i < len && j < hexStringSize - 3; i++) {
- hexString[j++] = sTable[(*data >> 4) & 0xf];
- hexString[j++] = sTable[*data & 0xf];
- data++;
- }
- hexString[j] = '\0';
-}
-
-// Protodisp code calls ScrLog() to print decoded texts.
-void ScrLog(uint32_t trace_set_mask, const char* fmt_str, ...) {
- static char buffer[BTE_LOG_BUF_SIZE];
- va_list ap;
-
- va_start(ap, fmt_str);
- vsnprintf(buffer, BTE_LOG_MAX_SIZE, fmt_str, ap);
- va_end(ap);
- __android_log_write(ANDROID_LOG_INFO, "BrcmNci", buffer);
-}
-
-uint8_t* scru_dump_hex(uint8_t* p, char* pTitle, uint32_t len, uint32_t layer,
- uint32_t type) {
- if (pTitle && *pTitle) PRINT(pTitle);
- dumpbin((char*)p, len, layer, type);
- return p;
-}
-
-void dumpbin(const char* data, int size, uint32_t trace_layer,
- uint32_t trace_type) {
- char line_buff[256];
- char* line;
- int i, j, addr;
- const int width = 16;
- if (size <= 0) return;
- for (i = 0; i < size / width; i++) {
- line = line_buff;
- // write address:
- addr = i * width;
- word2hex((const char*)&addr, &line);
- *line++ = ':';
- *line++ = ' ';
- // write hex of data
- for (j = 0; j < width; j++) {
- byte2hex(&data[j], &line);
- *line++ = ' ';
- }
- // write char of data
- for (j = 0; j < width; j++) byte2char(data++, &line);
- // wirte the end of line
- *line = 0;
- // output the line
- PRINT(line_buff);
- }
- // last line of left over if any
- int leftover = size % width;
- if (leftover > 0) {
- line = line_buff;
- // write address:
- addr = i * width;
- word2hex((const char*)&addr, &line);
- *line++ = ':';
- *line++ = ' ';
- // write hex of data
- for (j = 0; j < leftover; j++) {
- byte2hex(&data[j], &line);
- *line++ = ' ';
- }
- // write hex padding
- for (; j < width; j++) {
- *line++ = ' ';
- *line++ = ' ';
- *line++ = ' ';
- }
- // write char of data
- for (j = 0; j < leftover; j++) byte2char(data++, &line);
- // write the end of line
- *line = 0;
- // output the line
- PRINT(line_buff);
- }
-}
-
-inline void word2hex(const char* data, char** hex) {
- byte2hex(&data[1], hex);
- byte2hex(&data[0], hex);
-}
-
-inline void byte2char(const char* data, char** str) {
- **str = *data < ' ' ? '.' : *data > '~' ? '.' : *data;
- ++(*str);
-}
-
-inline void byte2hex(const char* data, char** str) {
- **str = sTable[(*data >> 4) & 0xf];
- ++*str;
- **str = sTable[*data & 0xf];
- ++*str;
-}
-
-// Decode a few Bluetooth HCI packets into hex numbers.
-void DispHciCmd(NFC_HDR* p_buf) {
- uint32_t nBytes = ((NFC_HDR_SIZE + p_buf->offset + p_buf->len) * 2) + 1;
- uint8_t* data = (uint8_t*)p_buf;
- int data_len = NFC_HDR_SIZE + p_buf->offset + p_buf->len;
-
- if (appl_trace_level < BT_TRACE_LEVEL_DEBUG) return;
-
- if (nBytes > sizeof(log_line)) return;
-
- ToHex(data, data_len, log_line, sizeof(log_line));
- __android_log_write(ANDROID_LOG_DEBUG, "BrcmHciX", log_line);
-}
-
-// Decode a few Bluetooth HCI packets into hex numbers.
-void DispHciEvt(NFC_HDR* p_buf) {
- uint32_t nBytes = ((NFC_HDR_SIZE + p_buf->offset + p_buf->len) * 2) + 1;
- uint8_t* data = (uint8_t*)p_buf;
- int data_len = NFC_HDR_SIZE + p_buf->offset + p_buf->len;
-
- if (appl_trace_level < BT_TRACE_LEVEL_DEBUG) return;
-
- if (nBytes > sizeof(log_line)) return;
-
- ToHex(data, data_len, log_line, sizeof(log_line));
- __android_log_write(ANDROID_LOG_DEBUG, "BrcmHciR", log_line);
-}
-
-/***************************************************************************
-**
-** Function DispLLCP
-**
-** Description Log LLCP packet as hex-ascii bytes.
-**
-** Returns None.
-**
-***************************************************************************/
-void DispLLCP(NFC_HDR* p_buf, bool is_recv) {
- uint32_t nBytes = ((NFC_HDR_SIZE + p_buf->offset + p_buf->len) * 2) + 1;
- uint8_t* data = (uint8_t*)p_buf;
- int data_len = NFC_HDR_SIZE + p_buf->offset + p_buf->len;
-
- if (appl_trace_level < BT_TRACE_LEVEL_DEBUG) return;
-
- if (nBytes > sizeof(log_line)) return;
-
- ToHex(data, data_len, log_line, sizeof(log_line));
- __android_log_write(ANDROID_LOG_DEBUG, (is_recv) ? "BrcmLlcpR" : "BrcmLlcpX",
- log_line);
-}
-
-/***************************************************************************
-**
-** Function DispHcp
-**
-** Description Log raw HCP packet as hex-ascii bytes
-**
-** Returns None.
-**
-***************************************************************************/
-void DispHcp(uint8_t* data, uint16_t len, bool is_recv) {
- uint32_t nBytes = (len * 2) + 1;
-
- if (appl_trace_level < BT_TRACE_LEVEL_DEBUG) return;
-
- // Only trace HCP if we're tracing HCI as well
- if (!(ScrProtocolTraceFlag & SCR_PROTO_TRACE_HCI_SUMMARY)) return;
-
- if (nBytes > sizeof(log_line)) return;
-
- ToHex(data, len, log_line, sizeof(log_line));
- __android_log_write(ANDROID_LOG_DEBUG, (is_recv) ? "BrcmHcpR" : "BrcmHcpX",
- log_line);
-}
-
-void DispSNEP(uint8_t local_sap, uint8_t remote_sap, NFC_HDR* p_buf,
- bool is_first, bool is_rx) {}
-void DispCHO(uint8_t* pMsg, uint32_t MsgLen, bool is_rx) {}
-void DispT3TagMessage(NFC_HDR* p_msg, bool is_rx) {}
-void DispRWT4Tags(NFC_HDR* p_buf, bool is_rx) {}
-void DispCET4Tags(NFC_HDR* p_buf, bool is_rx) {}
-void DispRWI93Tag(NFC_HDR* p_buf, bool is_rx, uint8_t command_to_respond) {}
-void DispNDEFMsg(uint8_t* pMsg, uint32_t MsgLen, bool is_recv) {}
-
-/*******************************************************************************
-**
-** Function: LogMsg
-**
-** Description: Print messages from NFC stack.
-**
-** Returns: None.
-**
-*******************************************************************************/
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {
- static char buffer[BTE_LOG_BUF_SIZE];
- va_list ap;
- uint32_t trace_type =
- trace_set_mask & 0x07; // lower 3 bits contain trace type
- int android_log_type = ANDROID_LOG_INFO;
-
- va_start(ap, fmt_str);
- vsnprintf(buffer, BTE_LOG_MAX_SIZE, fmt_str, ap);
- va_end(ap);
- if (trace_type == TRACE_TYPE_ERROR) android_log_type = ANDROID_LOG_ERROR;
- __android_log_write(android_log_type, LOGMSG_TAG_NAME, buffer);
-}
-
-void LogMsg_0(uint32_t maskTraceSet, const char* p_str) {
- LogMsg(maskTraceSet, p_str);
-}
-
-void LogMsg_1(uint32_t maskTraceSet, const char* fmt_str, uintptr_t p1) {
- LogMsg(maskTraceSet, fmt_str, p1);
-}
-
-void LogMsg_2(uint32_t maskTraceSet, const char* fmt_str, uintptr_t p1,
- uintptr_t p2) {
- LogMsg(maskTraceSet, fmt_str, p1, p2);
-}
-
-void LogMsg_3(uint32_t maskTraceSet, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3) {
- LogMsg(maskTraceSet, fmt_str, p1, p2, p3);
-}
-
-void LogMsg_4(uint32_t maskTraceSet, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4) {
- LogMsg(maskTraceSet, fmt_str, p1, p2, p3, p4);
-}
-
-void LogMsg_5(uint32_t maskTraceSet, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4, uintptr_t p5) {
- LogMsg(maskTraceSet, fmt_str, p1, p2, p3, p4, p5);
-}
-
-void LogMsg_6(uint32_t maskTraceSet, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4, uintptr_t p5,
- uintptr_t p6) {
- LogMsg(maskTraceSet, fmt_str, p1, p2, p3, p4, p5, p6);
-}
diff --git a/src/adaptation/config.cpp b/src/adaptation/config.cpp
deleted file mode 100644
index 8085daa..0000000
--- a/src/adaptation/config.cpp
+++ /dev/null
@@ -1,683 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2011-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.
- *
- ******************************************************************************/
-#include "config.h"
-#include <stdio.h>
-#include <sys/stat.h>
-#include <list>
-#include <string>
-#include <vector>
-#include "_OverrideLog.h"
-
-#undef LOG_TAG
-#define LOG_TAG "NfcAdaptation"
-
-const char* transport_config_paths[] = {"/odm/etc/", "/vendor/etc/", "/etc/"};
-const int transport_config_path_size =
- (sizeof(transport_config_paths) / sizeof(transport_config_paths[0]));
-
-#define config_name "libnfc-brcm.conf"
-#define extra_config_base "libnfc-brcm-"
-#define extra_config_ext ".conf"
-#define IsStringValue 0x80000000
-
-using namespace ::std;
-
-class CNfcParam : public string {
- public:
- CNfcParam();
- CNfcParam(const char* name, const string& value);
- CNfcParam(const char* name, unsigned long value);
- virtual ~CNfcParam();
- unsigned long numValue() const { return m_numValue; }
- const char* str_value() const { return m_str_value.c_str(); }
- size_t str_len() const { return m_str_value.length(); }
-
- private:
- string m_str_value;
- unsigned long m_numValue;
-};
-
-class CNfcConfig : public vector<const CNfcParam*> {
- public:
- virtual ~CNfcConfig();
- static CNfcConfig& GetInstance();
- friend void readOptionalConfig(const char* optional);
-
- bool getValue(const char* name, char* pValue, size_t& len) const;
- bool getValue(const char* name, unsigned long& rValue) const;
- bool getValue(const char* name, unsigned short& rValue) const;
- const CNfcParam* find(const char* p_name) const;
- void clean();
-
- private:
- CNfcConfig();
- bool readConfig(const char* name, bool bResetContent);
- void moveFromList();
- void moveToList();
- void add(const CNfcParam* pParam);
- list<const CNfcParam*> m_list;
- bool mValidFile;
-
- unsigned long state;
-
- inline bool Is(unsigned long f) { return (state & f) == f; }
- inline void Set(unsigned long f) { state |= f; }
- inline void Reset(unsigned long f) { state &= ~f; }
-};
-
-/*******************************************************************************
-**
-** Function: isPrintable()
-**
-** Description: detremine if a char is printable
-**
-** Returns: none
-**
-*******************************************************************************/
-inline bool isPrintable(char c) {
- return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') ||
- (c >= '0' && c <= '9') || c == '/' || c == '_' || c == '-' || c == '.';
-}
-
-/*******************************************************************************
-**
-** Function: isDigit()
-**
-** Description: detremine if a char is numeral digit
-**
-** Returns: none
-**
-*******************************************************************************/
-inline bool isDigit(char c, int base) {
- if ('0' <= c && c <= '9') return true;
- if (base == 16) {
- if (('A' <= c && c <= 'F') || ('a' <= c && c <= 'f')) return true;
- }
- return false;
-}
-
-/*******************************************************************************
-**
-** Function: getDigitValue()
-**
-** Description: return numercal value of a char
-**
-** Returns: none
-**
-*******************************************************************************/
-inline int getDigitValue(char c, int base) {
- if ('0' <= c && c <= '9') return c - '0';
- if (base == 16) {
- if ('A' <= c && c <= 'F')
- return c - 'A' + 10;
- else if ('a' <= c && c <= 'f')
- return c - 'a' + 10;
- }
- return 0;
-}
-
-/*******************************************************************************
-**
-** Function: findConfigFilePathFromTransportConfigPaths()
-**
-** Description: find a config file path with a given config name from transport
-** config paths
-**
-** Returns: none
-**
-*******************************************************************************/
-void findConfigFilePathFromTransportConfigPaths(const string& configName,
- string& filePath) {
- for (int i = 0; i < transport_config_path_size - 1; i++) {
- filePath.assign(transport_config_paths[i]);
- filePath += configName;
- struct stat file_stat;
- if (stat(filePath.c_str(), &file_stat) == 0 && S_ISREG(file_stat.st_mode)) {
- return;
- }
- }
- filePath.assign(transport_config_paths[transport_config_path_size - 1]);
- filePath += configName;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::readConfig()
-**
-** Description: read Config settings and parse them into a linked list
-** move the element from linked list to a array at the end
-**
-** Returns: none
-**
-*******************************************************************************/
-bool CNfcConfig::readConfig(const char* name, bool bResetContent) {
- enum {
- BEGIN_LINE = 1,
- TOKEN,
- STR_VALUE,
- NUM_VALUE,
- BEGIN_HEX,
- BEGIN_QUOTE,
- END_LINE
- };
-
- FILE* fd = NULL;
- string token;
- string strValue;
- unsigned long numValue = 0;
- CNfcParam* pParam = NULL;
- int i = 0;
- int base = 0;
- char c = 0;
-
- state = BEGIN_LINE;
- /* open config file, read it into a buffer */
- if ((fd = fopen(name, "rb")) == NULL) {
- ALOGD("%s Cannot open config file %s\n", __func__, name);
- if (bResetContent) {
- ALOGD("%s Using default value for all settings\n", __func__);
- mValidFile = false;
- }
- return false;
- }
- ALOGD("%s Opened %s config %s\n", __func__,
- (bResetContent ? "base" : "optional"), name);
-
- mValidFile = true;
- if (size() > 0) {
- if (bResetContent)
- clean();
- else
- moveToList();
- }
-
- for (;;) {
- if (feof(fd) || fread(&c, 1, 1, fd) != 1) {
- if (state == BEGIN_LINE) break;
-
- // got to the EOF but not in BEGIN_LINE state so the file
- // probably does not end with a newline, so the parser has
- // not processed current line, simulate a newline in the file
- c = '\n';
- }
-
- switch (state & 0xff) {
- case BEGIN_LINE:
- if (c == '#')
- state = END_LINE;
- else if (isPrintable(c)) {
- i = 0;
- token.erase();
- strValue.erase();
- state = TOKEN;
- token.push_back(c);
- }
- break;
- case TOKEN:
- if (c == '=') {
- token.push_back('\0');
- state = BEGIN_QUOTE;
- } else if (isPrintable(c))
- token.push_back(c);
- else
- state = END_LINE;
- break;
- case BEGIN_QUOTE:
- if (c == '"') {
- state = STR_VALUE;
- base = 0;
- } else if (c == '0')
- state = BEGIN_HEX;
- else if (isDigit(c, 10)) {
- state = NUM_VALUE;
- base = 10;
- numValue = getDigitValue(c, base);
- i = 0;
- } else if (c == '{') {
- state = NUM_VALUE;
- base = 16;
- i = 0;
- Set(IsStringValue);
- } else
- state = END_LINE;
- break;
- case BEGIN_HEX:
- if (c == 'x' || c == 'X') {
- state = NUM_VALUE;
- base = 16;
- numValue = 0;
- i = 0;
- break;
- } else if (isDigit(c, 10)) {
- state = NUM_VALUE;
- base = 10;
- numValue = getDigitValue(c, base);
- break;
- } else if (c != '\n' && c != '\r') {
- state = END_LINE;
- break;
- }
- // fal through to numValue to handle numValue
-
- case NUM_VALUE:
- if (isDigit(c, base)) {
- numValue *= base;
- numValue += getDigitValue(c, base);
- ++i;
- } else if (base == 16 &&
- (c == ':' || c == '-' || c == ' ' || c == '}')) {
- if (i > 0) {
- int n = (i + 1) / 2;
- while (n-- > 0) {
- unsigned char c = (numValue >> (n * 8)) & 0xFF;
- strValue.push_back(c);
- }
- }
- Set(IsStringValue);
- numValue = 0;
- i = 0;
- } else {
- if (c == '\n' || c == '\r')
- state = BEGIN_LINE;
- else
- state = END_LINE;
- if (Is(IsStringValue) && base == 16 && i > 0) {
- int n = (i + 1) / 2;
- while (n-- > 0) strValue.push_back(((numValue >> (n * 8)) & 0xFF));
- }
- if (strValue.length() > 0)
- pParam = new CNfcParam(token.c_str(), strValue);
- else
- pParam = new CNfcParam(token.c_str(), numValue);
- add(pParam);
- strValue.erase();
- numValue = 0;
- }
- break;
- case STR_VALUE:
- if (c == '"') {
- strValue.push_back('\0');
- state = END_LINE;
- pParam = new CNfcParam(token.c_str(), strValue);
- add(pParam);
- } else if (isPrintable(c))
- strValue.push_back(c);
- break;
- case END_LINE:
- if (c == '\n' || c == '\r') state = BEGIN_LINE;
- break;
- default:
- break;
- }
-
- if (feof(fd)) break;
- }
-
- fclose(fd);
-
- moveFromList();
- return size() > 0;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::CNfcConfig()
-**
-** Description: class constructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcConfig::CNfcConfig() : mValidFile(true), state(0) {}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::~CNfcConfig()
-**
-** Description: class destructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcConfig::~CNfcConfig() {}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::GetInstance()
-**
-** Description: get class singleton object
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcConfig& CNfcConfig::GetInstance() {
- static CNfcConfig theInstance;
-
- if (theInstance.size() == 0 && theInstance.mValidFile) {
- string strPath;
- findConfigFilePathFromTransportConfigPaths(config_name, strPath);
- theInstance.readConfig(strPath.c_str(), true);
- }
-
- return theInstance;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::getValue()
-**
-** Description: get a string value of a setting
-**
-** Returns: true if setting exists
-** false if setting does not exist
-**
-*******************************************************************************/
-bool CNfcConfig::getValue(const char* name, char* pValue, size_t& len) const {
- const CNfcParam* pParam = find(name);
- if (pParam == NULL) return false;
-
- if (pParam->str_len() > 0) {
- memset(pValue, 0, len);
- if (len > pParam->str_len()) len = pParam->str_len();
- memcpy(pValue, pParam->str_value(), len);
- return true;
- }
- return false;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::getValue()
-**
-** Description: get a long numerical value of a setting
-**
-** Returns: true if setting exists
-** false if setting does not exist
-**
-*******************************************************************************/
-bool CNfcConfig::getValue(const char* name, unsigned long& rValue) const {
- const CNfcParam* pParam = find(name);
- if (pParam == NULL) return false;
-
- if (pParam->str_len() == 0) {
- rValue = static_cast<unsigned long>(pParam->numValue());
- return true;
- }
- return false;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::getValue()
-**
-** Description: get a short numerical value of a setting
-**
-** Returns: true if setting exists
-** false if setting does not exist
-**
-*******************************************************************************/
-bool CNfcConfig::getValue(const char* name, unsigned short& rValue) const {
- const CNfcParam* pParam = find(name);
- if (pParam == NULL) return false;
-
- if (pParam->str_len() == 0) {
- rValue = static_cast<unsigned short>(pParam->numValue());
- return true;
- }
- return false;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::find()
-**
-** Description: search if a setting exist in the setting array
-**
-** Returns: pointer to the setting object
-**
-*******************************************************************************/
-const CNfcParam* CNfcConfig::find(const char* p_name) const {
- if (size() == 0) return NULL;
-
- for (const_iterator it = begin(), itEnd = end(); it != itEnd; ++it) {
- if (**it < p_name)
- continue;
- else if (**it == p_name) {
- if ((*it)->str_len() > 0)
- ALOGD("%s found %s=%s\n", __func__, p_name, (*it)->str_value());
- else
- ALOGD("%s found %s=(0x%lX)\n", __func__, p_name, (*it)->numValue());
- return *it;
- } else
- break;
- }
- return NULL;
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::clean()
-**
-** Description: reset the setting array
-**
-** Returns: none
-**
-*******************************************************************************/
-void CNfcConfig::clean() {
- if (size() == 0) return;
-
- for (iterator it = begin(), itEnd = end(); it != itEnd; ++it) delete *it;
- clear();
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::Add()
-**
-** Description: add a setting object to the list
-**
-** Returns: none
-**
-*******************************************************************************/
-void CNfcConfig::add(const CNfcParam* pParam) {
- if (m_list.size() == 0) {
- m_list.push_back(pParam);
- return;
- }
- for (list<const CNfcParam *>::iterator it = m_list.begin(),
- itEnd = m_list.end();
- it != itEnd; ++it) {
- if (**it < pParam->c_str()) continue;
- m_list.insert(it, pParam);
- return;
- }
- m_list.push_back(pParam);
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::moveFromList()
-**
-** Description: move the setting object from list to array
-**
-** Returns: none
-**
-*******************************************************************************/
-void CNfcConfig::moveFromList() {
- if (m_list.size() == 0) return;
-
- for (list<const CNfcParam *>::iterator it = m_list.begin(),
- itEnd = m_list.end();
- it != itEnd; ++it)
- push_back(*it);
- m_list.clear();
-}
-
-/*******************************************************************************
-**
-** Function: CNfcConfig::moveToList()
-**
-** Description: move the setting object from array to list
-**
-** Returns: none
-**
-*******************************************************************************/
-void CNfcConfig::moveToList() {
- if (m_list.size() != 0) m_list.clear();
-
- for (iterator it = begin(), itEnd = end(); it != itEnd; ++it)
- m_list.push_back(*it);
- clear();
-}
-
-/*******************************************************************************
-**
-** Function: CNfcParam::CNfcParam()
-**
-** Description: class constructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcParam::CNfcParam() : m_numValue(0) {}
-
-/*******************************************************************************
-**
-** Function: CNfcParam::~CNfcParam()
-**
-** Description: class destructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcParam::~CNfcParam() {}
-
-/*******************************************************************************
-**
-** Function: CNfcParam::CNfcParam()
-**
-** Description: class copy constructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcParam::CNfcParam(const char* name, const string& value)
- : string(name), m_str_value(value), m_numValue(0) {}
-
-/*******************************************************************************
-**
-** Function: CNfcParam::CNfcParam()
-**
-** Description: class copy constructor
-**
-** Returns: none
-**
-*******************************************************************************/
-CNfcParam::CNfcParam(const char* name, unsigned long value)
- : string(name), m_numValue(value) {}
-
-/*******************************************************************************
-**
-** Function: GetStrValue
-**
-** Description: API function for getting a string value of a setting
-**
-** Returns: none
-**
-*******************************************************************************/
-extern "C" int GetStrValue(const char* name, char* pValue, unsigned long l) {
- size_t len = l;
- CNfcConfig& rConfig = CNfcConfig::GetInstance();
-
- bool b = rConfig.getValue(name, pValue, len);
- return b ? len : 0;
-}
-
-/*******************************************************************************
-**
-** Function: GetNumValue
-**
-** Description: API function for getting a numerical value of a setting
-**
-** Returns: none
-**
-*******************************************************************************/
-extern "C" int GetNumValue(const char* name, void* pValue, unsigned long len) {
- if (!pValue) return false;
-
- CNfcConfig& rConfig = CNfcConfig::GetInstance();
- const CNfcParam* pParam = rConfig.find(name);
-
- if (pParam == NULL) return false;
- unsigned long v = pParam->numValue();
- if (v == 0 && pParam->str_len() > 0 && pParam->str_len() < 4) {
- const unsigned char* p = (const unsigned char*)pParam->str_value();
- for (size_t i = 0; i < pParam->str_len(); ++i) {
- v *= 256;
- v += *p++;
- }
- }
- switch (len) {
- case sizeof(unsigned long):
- *(static_cast<unsigned long*>(pValue)) = (unsigned long)v;
- break;
- case sizeof(unsigned short):
- *(static_cast<unsigned short*>(pValue)) = (unsigned short)v;
- break;
- case sizeof(unsigned char):
- *(static_cast<unsigned char*>(pValue)) = (unsigned char)v;
- break;
- default:
- return false;
- }
- return true;
-}
-
-/*******************************************************************************
-**
-** Function: resetConfig
-**
-** Description: reset settings array
-**
-** Returns: none
-**
-*******************************************************************************/
-extern void resetConfig() {
- CNfcConfig& rConfig = CNfcConfig::GetInstance();
-
- rConfig.clean();
-}
-
-/*******************************************************************************
-**
-** Function: readOptionalConfig()
-**
-** Description: read Config settings from an optional conf file
-**
-** Returns: none
-**
-*******************************************************************************/
-void readOptionalConfig(const char* extra) {
- string strPath;
- string configName(extra_config_base);
- configName += extra;
- configName += extra_config_ext;
-
- findConfigFilePathFromTransportConfigPaths(configName, strPath);
- CNfcConfig::GetInstance().readConfig(strPath.c_str(), false);
-}
diff --git a/src/adaptation/debug_nfcsnoop.cc b/src/adaptation/debug_nfcsnoop.cc
index b7229d6..9466b9f 100644
--- a/src/adaptation/debug_nfcsnoop.cc
+++ b/src/adaptation/debug_nfcsnoop.cc
@@ -16,16 +16,16 @@
*
******************************************************************************/
-#include <assert.h>
+#include <android-base/logging.h>
#include <resolv.h>
#include <zlib.h>
#include <mutex>
+#include <ringbuffer.h>
+
#include "bt_types.h"
#include "include/debug_nfcsnoop.h"
-#include "include/ringbuffer.h"
#include "nfc_int.h"
-#include "nfc_types.h"
#define USEC_PER_SEC 1000000ULL
@@ -60,8 +60,13 @@
// Insert data
header.length = length;
header.is_received = is_received ? 1 : 0;
- header.delta_time_ms =
- last_timestamp_ms ? timestamp_us - last_timestamp_ms : 0;
+
+ uint64_t delta_time_ms = 0;
+ if (last_timestamp_ms) {
+ __builtin_sub_overflow(timestamp_us, last_timestamp_ms, &delta_time_ms);
+ }
+ header.delta_time_ms = delta_time_ms;
+
last_timestamp_ms = timestamp_us;
ringbuffer_insert(buffer, (uint8_t*)&header, sizeof(nfcsnooz_header_t));
@@ -69,8 +74,8 @@
}
static bool nfcsnoop_compress(ringbuffer_t* rb_dst, ringbuffer_t* rb_src) {
- assert(rb_dst != NULL);
- assert(rb_src != NULL);
+ CHECK(rb_dst != NULL);
+ CHECK(rb_src != NULL);
z_stream zs;
zs.zalloc = Z_NULL;
diff --git a/src/adaptation/libmain.c b/src/adaptation/libmain.cc
similarity index 61%
rename from src/adaptation/libmain.c
rename to src/adaptation/libmain.cc
index bc78e6c..eb9a9f1 100644
--- a/src/adaptation/libmain.c
+++ b/src/adaptation/libmain.cc
@@ -15,22 +15,26 @@
* limitations under the License.
*
******************************************************************************/
-#include "_OverrideLog.h"
-
-#include <errno.h>
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
#include <fcntl.h>
-#include <malloc.h>
-#include <sys/stat.h>
-#include <sys/types.h>
+#include <vector>
+
#include "CrcChecksum.h"
-#include "buildcfg.h"
-#include "config.h"
#include "nfa_nv_ci.h"
-#include "nfa_nv_co.h"
#include "nfc_hal_nv_co.h"
-#include "nfc_hal_target.h"
-extern char bcm_nfc_location[];
-static const char* sNfaStorageBin = "/nfaStorage.bin";
+
+using android::base::StringPrintf;
+
+extern std::string nfc_storage_path;
+extern bool nfc_debug_enabled;
+
+namespace {
+std::string getFilenameForBlock(const unsigned block) {
+ std::string bin = "nfaStorage.bin";
+ return StringPrintf("%s/%s%u", nfc_storage_path.c_str(), bin.c_str(), block);
+}
+} // namespace
/*******************************************************************************
**
@@ -78,34 +82,27 @@
**
*******************************************************************************/
extern void nfa_nv_co_read(uint8_t* pBuffer, uint16_t nbytes, uint8_t block) {
- char filename[256], filename2[256];
+ std::string filename = getFilenameForBlock(block);
- memset(filename, 0, sizeof(filename));
- memset(filename2, 0, sizeof(filename2));
- strcpy(filename2, bcm_nfc_location);
- strncat(filename2, sNfaStorageBin, sizeof(filename2) - strlen(filename2) - 1);
- if (strlen(filename2) > 200) {
- ALOGE("%s: filename too long", __func__);
- return;
- }
- sprintf(filename, "%s%u", filename2, block);
-
- ALOGD("%s: buffer len=%u; file=%s", __func__, nbytes, filename);
- int fileStream = open(filename, O_RDONLY);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "%s: buffer len=%u; file=%s", __func__, nbytes, filename.c_str());
+ int fileStream = open(filename.c_str(), O_RDONLY);
if (fileStream >= 0) {
unsigned short checksum = 0;
- size_t actualReadCrc = read(fileStream, &checksum, sizeof(checksum));
+ read(fileStream, &checksum, sizeof(checksum));
size_t actualReadData = read(fileStream, pBuffer, nbytes);
close(fileStream);
if (actualReadData > 0) {
- ALOGD("%s: data size=%zu", __func__, actualReadData);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: data size=%zu", __func__, actualReadData);
nfa_nv_ci_read(actualReadData, NFA_NV_CO_OK, block);
} else {
- ALOGE("%s: fail to read", __func__);
+ LOG(ERROR) << StringPrintf("%s: fail to read", __func__);
nfa_nv_ci_read(0, NFA_NV_CO_FAIL, block);
}
} else {
- ALOGD("%s: fail to open", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: fail to open", __func__);
nfa_nv_ci_read(0, NFA_NV_CO_FAIL, block);
}
}
@@ -131,37 +128,29 @@
*******************************************************************************/
extern void nfa_nv_co_write(const uint8_t* pBuffer, uint16_t nbytes,
uint8_t block) {
- char filename[256], filename2[256];
+ std::string filename = getFilenameForBlock(block);
- memset(filename, 0, sizeof(filename));
- memset(filename2, 0, sizeof(filename2));
- strcpy(filename2, bcm_nfc_location);
- strncat(filename2, sNfaStorageBin, sizeof(filename2) - strlen(filename2) - 1);
- if (strlen(filename2) > 200) {
- ALOGE("%s: filename too long", __func__);
- return;
- }
- sprintf(filename, "%s%u", filename2, block);
- ALOGD("%s: bytes=%u; file=%s", __func__, nbytes, filename);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "%s: bytes=%u; file=%s", __func__, nbytes, filename.c_str());
- int fileStream = 0;
-
- fileStream = open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
+ int fileStream =
+ open(filename.c_str(), O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
if (fileStream >= 0) {
unsigned short checksum = crcChecksumCompute(pBuffer, nbytes);
size_t actualWrittenCrc = write(fileStream, &checksum, sizeof(checksum));
size_t actualWrittenData = write(fileStream, pBuffer, nbytes);
- ALOGD("%s: %zu bytes written", __func__, actualWrittenData);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: %zu bytes written", __func__, actualWrittenData);
if ((actualWrittenData == nbytes) &&
(actualWrittenCrc == sizeof(checksum))) {
nfa_nv_ci_write(NFA_NV_CO_OK);
} else {
- ALOGE("%s: fail to write", __func__);
+ LOG(ERROR) << StringPrintf("%s: fail to write", __func__);
nfa_nv_ci_write(NFA_NV_CO_FAIL);
}
close(fileStream);
} else {
- ALOGE("%s: fail to open, error = %d", __func__, errno);
+ LOG(ERROR) << StringPrintf("%s: fail to open, error = %d", __func__, errno);
nfa_nv_ci_write(NFA_NV_CO_FAIL);
}
}
@@ -179,31 +168,17 @@
*******************************************************************************/
void delete_stack_non_volatile_store(bool forceDelete) {
static bool firstTime = true;
- char filename[256], filename2[256];
if ((firstTime == false) && (forceDelete == false)) return;
firstTime = false;
- ALOGD("%s", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", __func__);
- memset(filename, 0, sizeof(filename));
- memset(filename2, 0, sizeof(filename2));
- strcpy(filename2, bcm_nfc_location);
- strncat(filename2, sNfaStorageBin, sizeof(filename2) - strlen(filename2) - 1);
- if (strlen(filename2) > 200) {
- ALOGE("%s: filename too long", __func__);
- return;
- }
- sprintf(filename, "%s%u", filename2, DH_NV_BLOCK);
- remove(filename);
- sprintf(filename, "%s%u", filename2, HC_F3_NV_BLOCK);
- remove(filename);
- sprintf(filename, "%s%u", filename2, HC_F4_NV_BLOCK);
- remove(filename);
- sprintf(filename, "%s%u", filename2, HC_F2_NV_BLOCK);
- remove(filename);
- sprintf(filename, "%s%u", filename2, HC_F5_NV_BLOCK);
- remove(filename);
+ remove(getFilenameForBlock(DH_NV_BLOCK).c_str());
+ remove(getFilenameForBlock(HC_F2_NV_BLOCK).c_str());
+ remove(getFilenameForBlock(HC_F3_NV_BLOCK).c_str());
+ remove(getFilenameForBlock(HC_F4_NV_BLOCK).c_str());
+ remove(getFilenameForBlock(HC_F5_NV_BLOCK).c_str());
}
/*******************************************************************************
@@ -218,33 +193,17 @@
**
*******************************************************************************/
void verify_stack_non_volatile_store() {
- ALOGD("%s", __func__);
- char filename[256], filename2[256];
- bool isValid = false;
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", __func__);
- memset(filename, 0, sizeof(filename));
- memset(filename2, 0, sizeof(filename2));
- strcpy(filename2, bcm_nfc_location);
- strncat(filename2, sNfaStorageBin, sizeof(filename2) - strlen(filename2) - 1);
- if (strlen(filename2) > 200) {
- ALOGE("%s: filename too long", __func__);
- return;
+ const std::vector<unsigned> verify_blocks = {DH_NV_BLOCK, HC_F2_NV_BLOCK,
+ HC_F3_NV_BLOCK, HC_F4_NV_BLOCK,
+ HC_F5_NV_BLOCK};
+
+ size_t verified = 0;
+ for (auto block : verify_blocks) {
+ if (!crcChecksumVerifyIntegrity(getFilenameForBlock(block).c_str())) break;
+ ++verified;
}
- sprintf(filename, "%s%u", filename2, DH_NV_BLOCK);
- if (crcChecksumVerifyIntegrity(filename)) {
- sprintf(filename, "%s%u", filename2, HC_F3_NV_BLOCK);
- if (crcChecksumVerifyIntegrity(filename)) {
- sprintf(filename, "%s%u", filename2, HC_F4_NV_BLOCK);
- if (crcChecksumVerifyIntegrity(filename)) {
- sprintf(filename, "%s%u", filename2, HC_F2_NV_BLOCK);
- if (crcChecksumVerifyIntegrity(filename)) {
- sprintf(filename, "%s%u", filename2, HC_F5_NV_BLOCK);
- if (crcChecksumVerifyIntegrity(filename)) isValid = true;
- }
- }
- }
- }
-
- if (isValid == false) delete_stack_non_volatile_store(true);
+ if (verified != verify_blocks.size()) delete_stack_non_volatile_store(true);
}
diff --git a/src/adaptation/nfc_config.cc b/src/adaptation/nfc_config.cc
new file mode 100644
index 0000000..5891cc4
--- /dev/null
+++ b/src/adaptation/nfc_config.cc
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2017 The Android Open Source Project
+ *
+ * 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.
+ */
+#include "nfc_config.h"
+#include "NfcAdaptation.h"
+
+#include <android-base/file.h>
+#include <android-base/logging.h>
+#include <android-base/parseint.h>
+#include <android-base/strings.h>
+
+#include <config.h>
+
+using namespace ::std;
+using namespace ::android::base;
+
+namespace {
+
+std::string findConfigPath() {
+ const vector<string> search_path = {"/odm/etc/", "/vendor/etc/",
+ "/product/etc/", "/etc/"};
+ const string file_name = "libnfc-nci.conf";
+
+ for (string path : search_path) {
+ path.append(file_name);
+ struct stat file_stat;
+ if (stat(path.c_str(), &file_stat) != 0) continue;
+ if (S_ISREG(file_stat.st_mode)) return path;
+ }
+ return "";
+}
+
+} // namespace
+
+void NfcConfig::loadConfig() {
+ string config_path = findConfigPath();
+ CHECK(config_path != "");
+ config_.parseFromFile(config_path);
+ /* Read vendor specific configs */
+ NfcAdaptation& theInstance = NfcAdaptation::GetInstance();
+ std::map<std::string, ConfigValue> configMap;
+ theInstance.GetVendorConfigs(configMap);
+ for (auto config : configMap) {
+ config_.addConfig(config.first, config.second);
+ }
+}
+
+NfcConfig::NfcConfig() { loadConfig(); }
+
+NfcConfig& NfcConfig::getInstance() {
+ static NfcConfig theInstance;
+ if (theInstance.config_.isEmpty()) {
+ theInstance.loadConfig();
+ }
+ return theInstance;
+}
+
+bool NfcConfig::hasKey(const std::string& key) {
+ return getInstance().config_.hasKey(key);
+}
+
+std::string NfcConfig::getString(const std::string& key) {
+ return getInstance().config_.getString(key);
+}
+
+std::string NfcConfig::getString(const std::string& key,
+ std::string default_value) {
+ if (hasKey(key)) return getString(key);
+ return default_value;
+}
+
+unsigned NfcConfig::getUnsigned(const std::string& key) {
+ return getInstance().config_.getUnsigned(key);
+}
+
+unsigned NfcConfig::getUnsigned(const std::string& key,
+ unsigned default_value) {
+ if (hasKey(key)) return getUnsigned(key);
+ return default_value;
+}
+
+std::vector<uint8_t> NfcConfig::getBytes(const std::string& key) {
+ return getInstance().config_.getBytes(key);
+}
+
+void NfcConfig::clear() { getInstance().config_.clear(); }
diff --git a/src/gki/common/gki.h b/src/gki/common/gki.h
index 1458e32..a6aa2e3 100644
--- a/src/gki/common/gki.h
+++ b/src/gki/common/gki.h
@@ -26,6 +26,8 @@
#define NFC_STANDALONE FALSE
#endif
+#include <string>
+
#include "bt_types.h"
#include "gki_target.h"
@@ -40,9 +42,7 @@
** send buffers to the task.
*/
#define TASK_MBOX_0 0
-#define TASK_MBOX_1 1
#define TASK_MBOX_2 2
-#define TASK_MBOX_3 3
#define NUM_TASK_MBOX 4
@@ -53,7 +53,6 @@
** There are 4 reserved events used to signal timeout events.
** There are 8 general purpose events available for applications.
*/
-#define MAX_EVENTS 16
#define TASK_MBOX_0_EVT_MASK 0x0001
#define TASK_MBOX_1_EVT_MASK 0x0002
@@ -71,12 +70,6 @@
#define TIMER_3_EVT_MASK 0x0080
#define APPL_EVT_0 8
-#define APPL_EVT_1 9
-#define APPL_EVT_2 10
-#define APPL_EVT_3 11
-#define APPL_EVT_4 12
-#define APPL_EVT_5 13
-#define APPL_EVT_6 14
#define APPL_EVT_7 15
#define EVENT_MASK(evt) ((uint16_t)(0x0001 << (evt)))
@@ -301,19 +294,20 @@
/* Timer list entry callback type
*/
-typedef void(TIMER_CBACK)(void* p_tle);
+struct TIMER_LIST_ENT;
+typedef void(TIMER_CBACK)(TIMER_LIST_ENT* p_tle);
/* Define a timer list entry
*/
-typedef struct _tle {
- struct _tle* p_next;
- struct _tle* p_prev;
+struct TIMER_LIST_ENT {
+ TIMER_LIST_ENT* p_next;
+ TIMER_LIST_ENT* p_prev;
TIMER_CBACK* p_cback;
int32_t ticks;
uintptr_t param;
uint16_t event;
uint8_t in_use;
-} TIMER_LIST_ENT;
+};
/* Define a timer list queue
*/
@@ -332,26 +326,19 @@
uint16_t count;
} BUFFER_Q;
-#define GKI_IS_QUEUE_EMPTY(p_q) ((p_q)->count == 0)
-
/* Task constants
*/
#ifndef TASKPTR
-typedef void (*TASKPTR)(uint32_t);
+typedef uint32_t (*TASKPTR)(uint32_t);
#endif
/* General pool accessible to GKI_getbuf() */
-#define GKI_PUBLIC_POOL 0
#define GKI_RESTRICTED_POOL 1 /* Inaccessible pool to GKI_getbuf() */
/***********************************************************************
** Function prototypes
*/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
/* Task management
*/
extern uint8_t GKI_create_task(TASKPTR, uint8_t, int8_t*, uint16_t*, uint16_t,
@@ -364,7 +351,6 @@
extern void GKI_run(void*);
extern void GKI_stop(void);
extern uint8_t GKI_suspend_task(uint8_t);
-extern uint8_t GKI_is_task_running(uint8_t);
/* memory management
*/
@@ -454,10 +440,6 @@
/* Exception handling
*/
-extern void GKI_exception(uint16_t, char*);
-
-#ifdef __cplusplus
-}
-#endif
+extern void GKI_exception(uint16_t, std::string);
#endif
diff --git a/src/gki/common/gki_buffer.c b/src/gki/common/gki_buffer.cc
similarity index 95%
rename from src/gki/common/gki_buffer.c
rename to src/gki/common/gki_buffer.cc
index 3f95093..b14f6c8 100644
--- a/src/gki/common/gki_buffer.c
+++ b/src/gki/common/gki_buffer.cc
@@ -15,7 +15,8 @@
* limitations under the License.
*
******************************************************************************/
-#include <stdio.h>
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
#include "gki_int.h"
#if (GKI_NUM_TOTAL_BUF_POOLS > 16)
@@ -27,6 +28,8 @@
static void gki_remove_from_pool_list(uint8_t pool_id);
#endif /* BTU_STACK_LITE_ENABLED == FALSE */
+using android::base::StringPrintf;
+
/*******************************************************************************
**
** Function gki_init_free_queue
@@ -94,7 +97,7 @@
if (Q->p_first == 0) {
void* p_mem = GKI_os_malloc((Q->size + BUFFER_PADDING_SIZE) * Q->total);
if (p_mem) {
-// re-initialize the queue with allocated memory
+ // re-initialize the queue with allocated memory
gki_init_free_queue(id, Q->size, Q->total, p_mem);
return true;
}
@@ -248,8 +251,7 @@
** Returns A pointer to the buffer, or NULL if none available
**
*******************************************************************************/
-void* GKI_getbuf(uint16_t size)
-{
+void* GKI_getbuf(uint16_t size) {
uint8_t i;
FREE_QUEUE_T* Q;
BUFFER_HDR_T* p_hdr;
@@ -282,14 +284,14 @@
Q = &p_cb->freeq[p_cb->pool_list[i]];
if (Q->cur_cnt < Q->total) {
if (Q->p_first == 0 && gki_alloc_free_queue(i) != true) {
- GKI_TRACE_ERROR_0("GKI_getbuf() out of buffer");
+ LOG(ERROR) << StringPrintf("out of buffer");
GKI_enable();
return NULL;
}
if (Q->p_first == 0) {
/* gki_alloc_free_queue() failed to alloc memory */
- GKI_TRACE_ERROR_0("GKI_getbuf() fail alloc free queue");
+ LOG(ERROR) << StringPrintf("fail alloc free queue");
GKI_enable();
return NULL;
}
@@ -312,7 +314,7 @@
}
}
- GKI_TRACE_ERROR_0("GKI_getbuf() unable to allocate buffer!!!!!");
+ LOG(ERROR) << StringPrintf("unable to allocate buffer!!!!!");
GKI_enable();
@@ -335,8 +337,7 @@
** Returns A pointer to the buffer, or NULL if none available
**
*******************************************************************************/
-void* GKI_getpoolbuf(uint8_t pool_id)
-{
+void* GKI_getpoolbuf(uint8_t pool_id) {
FREE_QUEUE_T* Q;
BUFFER_HDR_T* p_hdr;
tGKI_COM_CB* p_cb = &gki_cb.com;
@@ -352,7 +353,7 @@
if (Q->p_first == 0) {
/* gki_alloc_free_queue() failed to alloc memory */
- GKI_TRACE_ERROR_0("GKI_getpoolbuf() fail alloc free queue");
+ LOG(ERROR) << StringPrintf("fail alloc free queue");
return NULL;
}
@@ -454,7 +455,7 @@
p_hdr = (BUFFER_HDR_T*)((uint8_t*)p_buf - BUFFER_HDR_SIZE);
- if ((uint32_t)p_hdr & 1) return (0);
+ if ((uintptr_t)p_hdr & 1) return (0);
if (p_hdr->q_id < GKI_NUM_TOTAL_BUF_POOLS) {
return (gki_cb.com.freeq[p_hdr->q_id].size);
@@ -478,7 +479,7 @@
uint32_t* magic;
magic = (uint32_t*)((uint8_t*)p_buf + GKI_get_buf_size(p_buf));
- if ((uint32_t)magic & 1) return true;
+ if ((uintptr_t)magic & 1) return true;
if (*magic == MAGIC_NO) return false;
@@ -975,45 +976,6 @@
/*******************************************************************************
**
-** Function GKI_igetpoolbuf
-**
-** Description Called by an interrupt service routine to get a free buffer
-** from a specific buffer pool.
-**
-** Parameters pool_id - (input) pool ID to get a buffer out of.
-**
-** Returns A pointer to the buffer, or NULL if none available
-**
-*******************************************************************************/
-void* GKI_igetpoolbuf(uint8_t pool_id) {
- FREE_QUEUE_T* Q;
- BUFFER_HDR_T* p_hdr;
-
- if (pool_id >= GKI_NUM_TOTAL_BUF_POOLS) return (NULL);
-
- Q = &gki_cb.com.freeq[pool_id];
- if (Q->cur_cnt < Q->total) {
- p_hdr = Q->p_first;
- Q->p_first = p_hdr->p_next;
-
- if (!Q->p_first) Q->p_last = NULL;
-
- if (++Q->cur_cnt > Q->max_cnt) Q->max_cnt = Q->cur_cnt;
-
- p_hdr->task_id = GKI_get_taskid();
-
- p_hdr->status = BUF_STATUS_UNLINKED;
- p_hdr->p_next = NULL;
- p_hdr->Type = 0;
-
- return ((void*)((uint8_t*)p_hdr + BUFFER_HDR_SIZE));
- }
-
- return (NULL);
-}
-
-/*******************************************************************************
-**
** Function GKI_poolcount
**
** Description Called by an application to get the total number of buffers
diff --git a/src/gki/common/gki_common.h b/src/gki/common/gki_common.h
index 8f0cc7a..5cf7028 100644
--- a/src/gki/common/gki_common.h
+++ b/src/gki/common/gki_common.h
@@ -23,9 +23,6 @@
/* Task States: (For OSRdyTbl) */
#define TASK_DEAD 0 /* b0000 */
#define TASK_READY 1 /* b0001 */
-#define TASK_WAIT 2 /* b0010 */
-#define TASK_DELAY 4 /* b0100 */
-#define TASK_SUSPEND 8 /* b1000 */
/********************************************************************
** Internal Error codes
@@ -40,14 +37,12 @@
#define GKI_ERROR_DELETE_POOL_BAD_QID 0xFFF8
#define GKI_ERROR_BUF_SIZE_TOOBIG 0xFFF7
#define GKI_ERROR_BUF_SIZE_ZERO 0xFFF6
-#define GKI_ERROR_ADDR_NOT_IN_BUF 0xFFF5
/********************************************************************
** Misc constants
*********************************************************************/
#define GKI_MAX_INT32 (0x7fffffffL)
-#define GKI_MAX_TIMESTAMP (0xffffffffL)
/********************************************************************
** Buffer Management Data Structures
@@ -275,10 +270,6 @@
} tGKI_COM_CB;
-#ifdef __cplusplus
-extern "C" {
-#endif
-
/* Internal GKI function prototypes
*/
extern bool gki_chk_buf_damage(void*);
@@ -287,15 +278,4 @@
extern void gki_timers_init(void);
extern void gki_adjust_timer_count(int32_t);
-extern void OSStartRdy(void);
-extern void OSCtxSw(void);
-extern void OSIntCtxSw(void);
-extern void OSSched(void);
-extern void OSIntEnter(void);
-extern void OSIntExit(void);
-
-#ifdef __cplusplus
-}
-#endif
-
#endif
diff --git a/src/gki/common/gki_inet.h b/src/gki/common/gki_inet.h
index 079dfe3..720f17f 100644
--- a/src/gki/common/gki_inet.h
+++ b/src/gki/common/gki_inet.h
@@ -20,12 +20,6 @@
#include "data_types.h"
-#define htons ntohs
-#define htonl ntohl
-
-#define htonets nettohs
-#define htonetl nettohl
-
#if (BIG_ENDIAN == TRUE)
#define ntohs(n) (n)
#define ntohl(n) (n)
diff --git a/src/gki/common/gki_time.c b/src/gki/common/gki_time.cc
similarity index 97%
rename from src/gki/common/gki_time.c
rename to src/gki/common/gki_time.cc
index 2cb136b..ac9a649 100644
--- a/src/gki/common/gki_time.c
+++ b/src/gki/common/gki_time.cc
@@ -15,12 +15,10 @@
* limitations under the License.
*
******************************************************************************/
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
#include "gki_int.h"
-#ifndef BT_ERROR_TRACE_0
-#define BT_ERROR_TRACE_0(l, m)
-#endif
-
/* Make sure that this has been defined in target.h */
#ifndef GKI_NUM_TIMERS
#error NO TIMERS: Must define at least 1 timer in the system!
@@ -32,6 +30,10 @@
#define GKI_UNUSED_LIST_ENTRY (0x80000000L)
#define GKI_MAX_INT32 (0x7fffffffL)
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
/*******************************************************************************
**
** Function gki_timers_init
@@ -714,13 +716,13 @@
if (p_tle == p_target_tle) {
rem_ticks += p_tle->ticks;
} else {
- BT_ERROR_TRACE_0(TRACE_LAYER_GKI,
- "GKI_get_remaining_ticks: No timer entry in the list");
+ LOG(ERROR) << StringPrintf(
+ "GKI_get_remaining_ticks: No timer entry in the list");
return (0);
}
} else {
- BT_ERROR_TRACE_0(TRACE_LAYER_GKI,
- "GKI_get_remaining_ticks: timer entry is not active");
+ LOG(ERROR) << StringPrintf(
+ "GKI_get_remaining_ticks: timer entry is not active");
}
return (rem_ticks);
@@ -749,8 +751,9 @@
uint8_t tt;
TIMER_LIST_ENT* p_temp;
if (p_tle == NULL || p_timer_listq == NULL) {
- GKI_TRACE_3("%s: invalid argument %x, %x****************************<<",
- __func__, p_timer_listq, p_tle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "%s: invalid argument %p, %p****************************<<", __func__,
+ p_timer_listq, p_tle);
return;
}
diff --git a/src/gki/ulinux/data_types.h b/src/gki/ulinux/data_types.h
index 892b798..727cd3c 100644
--- a/src/gki/ulinux/data_types.h
+++ b/src/gki/ulinux/data_types.h
@@ -29,14 +29,10 @@
#define FALSE 0
#endif
-typedef uint32_t TIME_STAMP;
-
#ifndef TRUE
#define TRUE (!FALSE)
#endif
-typedef unsigned char UBYTE;
-
#ifdef __arm
#define PACKED __packed
#define INLINE __inline
@@ -49,7 +45,4 @@
#define BIG_ENDIAN FALSE
#endif
-#define UINT16_LOW_BYTE(x) ((x)&0xff)
-#define UINT16_HI_BYTE(x) ((x) >> 8)
-
#endif
diff --git a/src/gki/ulinux/gki_int.h b/src/gki/ulinux/gki_int.h
index 4d3f121..27ff76e 100644
--- a/src/gki/ulinux/gki_int.h
+++ b/src/gki/ulinux/gki_int.h
@@ -54,14 +54,6 @@
tGKI_COM_CB com;
} tGKI_CB;
-#ifdef __cplusplus
-extern "C" {
-#endif
-
extern tGKI_CB gki_cb;
-#ifdef __cplusplus
-}
-#endif
-
#endif
diff --git a/src/gki/ulinux/gki_ulinux.c b/src/gki/ulinux/gki_ulinux.cc
similarity index 85%
rename from src/gki/ulinux/gki_ulinux.c
rename to src/gki/ulinux/gki_ulinux.cc
index 31bdcd6..01ba892 100644
--- a/src/gki/ulinux/gki_ulinux.c
+++ b/src/gki/ulinux/gki_ulinux.cc
@@ -17,19 +17,20 @@
******************************************************************************/
#include <errno.h>
#include <malloc.h>
-#include <stdarg.h>
-#include <stdio.h>
-
#include <pthread.h> /* must be 1st header defined */
-#include <time.h>
-#include "bt_trace.h"
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "gki_int.h"
-#include "gki_target.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/* Temp android logging...move to android tgt config file */
#ifndef LINUX_NATIVE
-#include <cutils/log.h>
#else
#define LOGV(format, ...) fprintf(stdout, LOG_TAG format, ##__VA_ARGS__)
#define LOGE(format, ...) fprintf(stderr, LOG_TAG format, ##__VA_ARGS__)
@@ -53,10 +54,6 @@
#define LINUX_SEC (1000 / TICKS_PER_SEC)
// #define GKI_TICK_TIMER_DEBUG
-#define LOCK(m) pthread_mutex_lock(&m)
-#define UNLOCK(m) pthread_mutex_unlock(&m)
-#define INIT(m) pthread_mutex_init(&m, NULL)
-
/* this kind of mutex go into tGKI_OS control block!!!! */
/* static pthread_mutex_t GKI_sched_mutex; */
/*static pthread_mutex_t thread_delay_mutex;
@@ -86,39 +83,26 @@
** Returns void
**
*******************************************************************************/
-void gki_task_entry(uintptr_t params) {
+void* gki_task_entry(void* params) {
pthread_t thread_id = pthread_self();
gki_pthread_info_t* p_pthread_info = (gki_pthread_info_t*)params;
- GKI_TRACE_5("gki_task_entry task_id=%i, thread_id=%x/%x, pCond/pMutex=%x/%x",
- p_pthread_info->task_id,
- gki_cb.os.thread_id[p_pthread_info->task_id], pthread_self(),
- p_pthread_info->pCond, p_pthread_info->pMutex);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "gki_task_entry task_id=%i, thread_id=%lx/%lx, pCond/pMutex=%p/%p",
+ p_pthread_info->task_id, gki_cb.os.thread_id[p_pthread_info->task_id],
+ pthread_self(), p_pthread_info->pCond, p_pthread_info->pMutex);
gki_cb.os.thread_id[p_pthread_info->task_id] = thread_id;
/* Call the actual thread entry point */
(p_pthread_info->task_entry)(p_pthread_info->params);
- GKI_TRACE_ERROR_1("gki_task task_id=%i terminating", p_pthread_info->task_id);
+ LOG(ERROR) << StringPrintf("gki_task task_id=%i terminating",
+ p_pthread_info->task_id);
gki_cb.os.thread_id[p_pthread_info->task_id] = 0;
- return;
+ return NULL;
}
/* end android */
-#ifndef ANDROID
-void GKI_TRACE(char* fmt, ...) {
- LOCK(gki_cb.os.GKI_trace_mutex);
- va_list ap;
-
- va_start(ap, fmt);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
-
- va_end(ap);
- UNLOCK(gki_cb.os.GKI_trace_mutex);
-}
-#endif
-
/*******************************************************************************
**
** Function GKI_init
@@ -147,7 +131,7 @@
#endif
p_os = &gki_cb.os;
pthread_mutex_init(&p_os->GKI_mutex, &attr);
-/* pthread_mutex_init(&GKI_sched_mutex, NULL); */
+ /* pthread_mutex_init(&GKI_sched_mutex, NULL); */
/* pthread_mutex_init(&thread_delay_mutex, NULL); */ /* used in GKI_delay */
/* pthread_cond_init (&thread_delay_cond, NULL); */
@@ -200,8 +184,6 @@
uint8_t GKI_create_task(TASKPTR task_entry, uint8_t task_id, int8_t* taskname,
uint16_t* stack, uint16_t stacksize, void* pCondVar,
void* pMutex) {
- uint16_t i;
- uint8_t* p;
struct sched_param param;
int policy, ret = 0;
pthread_condattr_t attr;
@@ -209,12 +191,13 @@
pthread_condattr_init(&attr);
pthread_condattr_setclock(&attr, CLOCK_MONOTONIC);
- GKI_TRACE_5(
- "GKI_create_task func=0x%x id=%d name=%s stack=0x%x stackSize=%d",
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "GKI_create_task func=0x%p id=%d name=%s stack=0x%p stackSize=%d",
task_entry, task_id, taskname, stack, stacksize);
if (task_id >= GKI_MAX_TASKS) {
- GKI_TRACE_0("Error! task ID > max task allowed");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Error! task ID > max task allowed");
return (GKI_FAILURE);
}
@@ -234,10 +217,11 @@
#if (FALSE == GKI_PTHREAD_JOINABLE)
pthread_attr_setdetachstate(&attr1, PTHREAD_CREATE_DETACHED);
- GKI_TRACE_3("GKI creating task %i, pCond/pMutex=%x/%x", task_id, pCondVar,
- pMutex);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "GKI creating task %i, pCond/pMutex=%p/%p", task_id, pCondVar, pMutex);
#else
- GKI_TRACE_1("GKI creating JOINABLE task %i", task_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI creating JOINABLE task %i", task_id);
#endif
/* On Android, the new tasks starts running before
@@ -250,11 +234,12 @@
gki_pthread_info[task_id].pCond = (pthread_cond_t*)pCondVar;
gki_pthread_info[task_id].pMutex = (pthread_mutex_t*)pMutex;
- ret = pthread_create(&gki_cb.os.thread_id[task_id], &attr1,
- (void*)gki_task_entry, &gki_pthread_info[task_id]);
+ ret = pthread_create(&gki_cb.os.thread_id[task_id], &attr1, gki_task_entry,
+ &gki_pthread_info[task_id]);
if (ret != 0) {
- GKI_TRACE_2("pthread_create failed(%d), %s!", ret, taskname);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("pthread_create failed(%d), %s!", ret, taskname);
return GKI_FAILURE;
}
@@ -262,7 +247,8 @@
0) {
#if (PBS_SQL_TASK == TRUE)
if (task_id == PBS_SQL_TASK) {
- GKI_TRACE_0("PBS SQL lowest priority task");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("PBS SQL lowest priority task");
policy = SCHED_NORMAL;
} else
#endif
@@ -273,8 +259,9 @@
pthread_setschedparam(gki_cb.os.thread_id[task_id], policy, ¶m);
}
- GKI_TRACE_6("Leaving GKI_create_task %x %d %x %s %x %d", task_entry, task_id,
- gki_cb.os.thread_id[task_id], taskname, stack, stacksize);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Leaving GKI_create_task %p %d %lx %s %p %d", task_entry, task_id,
+ gki_cb.os.thread_id[task_id], taskname, stack, stacksize);
return (GKI_SUCCESS);
}
@@ -293,8 +280,8 @@
*******************************************************************************/
#define WAKE_LOCK_ID "brcm_nfca"
#define PARTIAL_WAKE_LOCK 1
-extern int acquire_wake_lock(int lock, const char* id);
-extern int release_wake_lock(const char* id);
+extern "C" int acquire_wake_lock(int lock, const char* id);
+extern "C" int release_wake_lock(const char* id);
void GKI_shutdown(void) {
uint8_t task_id;
@@ -328,10 +315,12 @@
/* wait for proper Arnold Schwarzenegger task state */
result = pthread_join(gki_cb.os.thread_id[task_id - 1], NULL);
if (result < 0) {
- GKI_TRACE_1("pthread_join() FAILED: result: %d", result);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("FAILED: result: %d", result);
}
#endif
- GKI_TRACE_1("GKI_shutdown(): task %s dead", gki_cb.com.OSTName[task_id]);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("task %s dead", gki_cb.com.OSTName[task_id]);
GKI_exit_task(task_id - 1);
}
}
@@ -349,7 +338,8 @@
shutdown_timer = 1;
#endif
if (gki_cb.os.gki_timer_wake_lock_on) {
- GKI_TRACE_0("GKI_shutdown : release_wake_lock(brcm_btld)");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_shutdown : release_wake_lock(brcm_btld)");
release_wake_lock(WAKE_LOCK_ID);
gki_cb.os.gki_timer_wake_lock_on = 0;
}
@@ -373,7 +363,9 @@
void gki_system_tick_start_stop_cback(bool start) {
tGKI_OS* p_os = &gki_cb.os;
volatile int* p_run_cond = &p_os->no_timer_suspend;
+#ifdef GKI_TICK_TIMER_DEBUG
static volatile int wake_lock_count;
+#endif
if (start == false) {
/* this can lead to a race condition. however as we only read this variable
* in the timer loop
@@ -383,9 +375,8 @@
*p_run_cond = GKI_TIMER_TICK_STOP_COND;
/* GKI_enable(); */
#ifdef GKI_TICK_TIMER_DEBUG
- BT_TRACE_1(TRACE_LAYER_HCI, TRACE_TYPE_DEBUG,
- ">>> STOP GKI_timer_update(), wake_lock_count:%d",
- --wake_lock_count);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(">>> STOP wake_lock_count:%d", --wake_lock_count);
#endif
release_wake_lock(WAKE_LOCK_ID);
gki_cb.os.gki_timer_wake_lock_on = 0;
@@ -399,9 +390,8 @@
pthread_mutex_unlock(&p_os->gki_timer_mutex);
#ifdef GKI_TICK_TIMER_DEBUG
- BT_TRACE_1(TRACE_LAYER_HCI, TRACE_TYPE_DEBUG,
- ">>> START GKI_timer_update(), wake_lock_count:%d",
- ++wake_lock_count);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(">>> START wake_lock_count:%d", ++wake_lock_count);
#endif
}
}
@@ -419,7 +409,7 @@
*******************************************************************************/
#ifdef NO_GKI_RUN_RETURN
void timer_thread(signed long id) {
- GKI_TRACE_1("%s enter", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s enter", __func__);
struct timespec delay;
int timeout = 1000; /* 10 ms per system tick */
int err;
@@ -436,7 +426,7 @@
GKI_timer_update(1);
}
- GKI_TRACE_ERROR_1("%s exit", __func__);
+ LOG(ERROR) << StringPrintf("%s exit", __func__);
return;
}
#endif
@@ -456,8 +446,8 @@
** one step, If your OS does it in one step, this function
** should be empty.
*******************************************************************************/
-void GKI_run(void* p_task_id) {
- GKI_TRACE_1("%s enter", __func__);
+void GKI_run(__attribute__((unused)) void* p_task_id) {
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s enter", __func__);
struct timespec delay;
int err = 0;
volatile int* p_run_cond = &gki_cb.os.no_timer_suspend;
@@ -467,11 +457,13 @@
* timers are
* in any GKI/BTA/BTU this should save power when BTLD is idle! */
GKI_timer_queue_register_callback(gki_system_tick_start_stop_cback);
- APPL_TRACE_DEBUG0("GKI_run(): Start/Stop GKI_timer_update_registered!");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Start/Stop GKI_timer_update_registered!");
#endif
#ifdef NO_GKI_RUN_RETURN
- GKI_TRACE_0("GKI_run == NO_GKI_RUN_RETURN");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_run == NO_GKI_RUN_RETURN");
pthread_attr_t timer_attr;
shutdown_timer = 0;
@@ -479,11 +471,13 @@
pthread_attr_init(&timer_attr);
pthread_attr_setdetachstate(&timer_attr, PTHREAD_CREATE_DETACHED);
if (pthread_create(&timer_thread_id, &timer_attr, timer_thread, NULL) != 0) {
- GKI_TRACE_0("GKI_run: pthread_create failed to create timer_thread!");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "GKI_run: pthread_create failed to create timer_thread!");
return GKI_FAILURE;
}
#else
- GKI_TRACE_2("GKI_run, run_cond(%x)=%d ", p_run_cond, *p_run_cond);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_run, run_cond(%p)=%d ", p_run_cond, *p_run_cond);
for (; GKI_TIMER_TICK_EXIT_COND != *p_run_cond;) {
do {
/* adjust hear bit tick in btld by changning TICKS_PER_SEC!!!!! this
@@ -504,33 +498,28 @@
* e.g. power saving you may want to provide more ticks
*/
GKI_timer_update(1);
- /* BT_TRACE_2( TRACE_LAYER_HCI, TRACE_TYPE_DEBUG, "update: tv_sec: %d,
- * tv_nsec: %d", delay.tv_sec, delay.tv_nsec ); */
} while (GKI_TIMER_TICK_RUN_COND == *p_run_cond);
/* currently on reason to exit above loop is no_timer_suspend ==
* GKI_TIMER_TICK_STOP_COND
* block timer main thread till re-armed by */
#ifdef GKI_TICK_TIMER_DEBUG
- BT_TRACE_0(TRACE_LAYER_HCI, TRACE_TYPE_DEBUG,
- ">>> SUSPENDED GKI_timer_update()");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(">>> SUSPENDED");
#endif
if (GKI_TIMER_TICK_EXIT_COND != *p_run_cond) {
- GKI_TRACE_1("%s waiting timer mutex", __func__);
pthread_mutex_lock(&gki_cb.os.gki_timer_mutex);
pthread_cond_wait(&gki_cb.os.gki_timer_cond, &gki_cb.os.gki_timer_mutex);
pthread_mutex_unlock(&gki_cb.os.gki_timer_mutex);
- GKI_TRACE_1("%s exited timer mutex", __func__);
}
/* potentially we need to adjust os gki_cb.com.OSTicks */
#ifdef GKI_TICK_TIMER_DEBUG
- BT_TRACE_1(TRACE_LAYER_HCI, TRACE_TYPE_DEBUG,
- ">>> RESTARTED GKI_timer_update(): run_cond: %d", *p_run_cond);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(">>> RESTARTED run_cond: %d", *p_run_cond);
#endif
} /* for */
#endif
- GKI_TRACE_1("%s exit", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s exit", __func__);
}
/*******************************************************************************
@@ -584,18 +573,18 @@
int nano_sec;
rtask = GKI_get_taskid();
- GKI_TRACE_3("GKI_wait %d %x %d", rtask, flag, timeout);
if (rtask >= GKI_MAX_TASKS) {
- GKI_TRACE_ERROR_3("%s() Exiting thread; rtask %d >= %d", __func__, rtask,
- GKI_MAX_TASKS);
+ LOG(ERROR) << StringPrintf("%s() Exiting thread; rtask %d >= %d", __func__,
+ rtask, GKI_MAX_TASKS);
return EVENT_MASK(GKI_SHUTDOWN_EVT);
}
gki_pthread_info_t* p_pthread_info = &gki_pthread_info[rtask];
if (p_pthread_info->pCond != NULL && p_pthread_info->pMutex != NULL) {
int ret;
- GKI_TRACE_3("GKI_wait task=%i, pCond/pMutex = %x/%x", rtask,
- p_pthread_info->pCond, p_pthread_info->pMutex);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_wait task=%i, pCond/pMutex = %p/%p", rtask,
+ p_pthread_info->pCond, p_pthread_info->pMutex);
ret = pthread_mutex_lock(p_pthread_info->pMutex);
ret = pthread_cond_signal(p_pthread_info->pCond);
ret = pthread_mutex_unlock(p_pthread_info->pMutex);
@@ -674,7 +663,8 @@
/* unlock thread_evt_mutex as pthread_cond_wait() does auto lock when cond
* is met */
pthread_mutex_unlock(&gki_cb.os.thread_evt_mutex[rtask]);
- GKI_TRACE_ERROR_1("GKI TASK_DEAD received. exit thread %d...", rtask);
+ LOG(ERROR) << StringPrintf("GKI TASK_DEAD received. exit thread %d...",
+ rtask);
gki_cb.os.thread_id[rtask] = 0;
return (EVENT_MASK(GKI_SHUTDOWN_EVT));
@@ -693,8 +683,6 @@
/* unlock thread_evt_mutex as pthread_cond_wait() does auto lock mutex when
* cond is met */
pthread_mutex_unlock(&gki_cb.os.thread_evt_mutex[rtask]);
- GKI_TRACE_4("GKI_wait %d %x %d %x resumed", rtask, flag, timeout, evt);
-
return (evt);
}
@@ -717,7 +705,8 @@
struct timespec delay;
int err;
- GKI_TRACE_2("GKI_delay %d %d", rtask, timeout);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_delay %d %d", rtask, timeout);
delay.tv_sec = timeout / 1000;
delay.tv_nsec = 1000 * 1000 * (timeout % 1000);
@@ -736,7 +725,8 @@
if (rtask && gki_cb.com.OSRdyTbl[rtask] == TASK_DEAD) {
}
- GKI_TRACE_2("GKI_delay %d %d done", rtask, timeout);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_delay %d %d done", rtask, timeout);
return;
}
@@ -756,8 +746,6 @@
**
*******************************************************************************/
uint8_t GKI_send_event(uint8_t task_id, uint16_t event) {
- GKI_TRACE_2("GKI_send_event %d %x", task_id, event);
-
/* use efficient coding to avoid pipeline stalls */
if (task_id < GKI_MAX_TASKS) {
/* protect OSWaitEvt[task_id] from manipulation in GKI_wait() */
@@ -770,7 +758,6 @@
pthread_mutex_unlock(&gki_cb.os.thread_evt_mutex[task_id]);
- GKI_TRACE_2("GKI_send_event %d %x done", task_id, event);
return (GKI_SUCCESS);
}
return (GKI_FAILURE);
@@ -797,8 +784,10 @@
**
*******************************************************************************/
uint8_t GKI_isend_event(uint8_t task_id, uint16_t event) {
- GKI_TRACE_2("GKI_isend_event %d %x", task_id, event);
- GKI_TRACE_2("GKI_isend_event %d %x done", task_id, event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_isend_event %d %x", task_id, event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_isend_event %d %x done", task_id, event);
return GKI_send_event(task_id, event);
}
@@ -818,17 +807,12 @@
*******************************************************************************/
uint8_t GKI_get_taskid(void) {
int i;
-
pthread_t thread_id = pthread_self();
for (i = 0; i < GKI_MAX_TASKS; i++) {
if (gki_cb.os.thread_id[i] == thread_id) {
- GKI_TRACE_2("GKI_get_taskid %x %d done", thread_id, i);
return (i);
}
}
-
- GKI_TRACE_1("GKI_get_taskid: thread id = %x, task id = -1", thread_id);
-
return (-1);
}
@@ -850,11 +834,12 @@
**
*******************************************************************************/
int8_t* GKI_map_taskname(uint8_t task_id) {
- GKI_TRACE_1("GKI_map_taskname %d", task_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_map_taskname %d", task_id);
if (task_id < GKI_MAX_TASKS) {
- GKI_TRACE_2("GKI_map_taskname %d %s done", task_id,
- gki_cb.com.OSTName[task_id]);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "GKI_map_taskname %d %s done", task_id, gki_cb.com.OSTName[task_id]);
return (gki_cb.com.OSTName[task_id]);
} else if (task_id == GKI_MAX_TASKS) {
return (gki_cb.com.OSTName[GKI_get_taskid()]);
@@ -873,11 +858,9 @@
**
*******************************************************************************/
void GKI_enable(void) {
- GKI_TRACE_0("GKI_enable");
pthread_mutex_unlock(&gki_cb.os.GKI_mutex);
/* pthread_mutex_xx is nesting save, no need for this: already_disabled =
* 0; */
- GKI_TRACE_0("Leaving GKI_enable");
return;
}
@@ -892,14 +875,16 @@
*******************************************************************************/
void GKI_disable(void) {
- // GKI_TRACE_0("GKI_disable");
+ // DLOG_IF(INFO, nfc_debug_enabled) <<
+ // StringPrintf("GKI_disable");
/* pthread_mutex_xx is nesting save, no need for this: if
(!already_disabled) {
already_disabled = 1; */
pthread_mutex_lock(&gki_cb.os.GKI_mutex);
/* } */
- // GKI_TRACE_0("Leaving GKI_disable");
+ // DLOG_IF(INFO, nfc_debug_enabled) <<
+ // StringPrintf("Leaving GKI_disable");
return;
}
@@ -917,26 +902,25 @@
**
*******************************************************************************/
-void GKI_exception(uint16_t code, char* msg) {
+void GKI_exception(uint16_t code, std::string msg) {
uint8_t task_id;
- int i = 0;
- GKI_TRACE_ERROR_0("GKI_exception(): Task State Table");
+ LOG(ERROR) << StringPrintf("Task State Table");
for (task_id = 0; task_id < GKI_MAX_TASKS; task_id++) {
- GKI_TRACE_ERROR_3("TASK ID [%d] task name [%s] state [%d]", task_id,
- gki_cb.com.OSTName[task_id],
- gki_cb.com.OSRdyTbl[task_id]);
+ LOG(ERROR) << StringPrintf("TASK ID [%d] task name [%s] state [%d]",
+ task_id, gki_cb.com.OSTName[task_id],
+ gki_cb.com.OSRdyTbl[task_id]);
}
- GKI_TRACE_ERROR_2("GKI_exception %d %s", code, msg);
- GKI_TRACE_ERROR_0(
+ LOG(ERROR) << StringPrintf("%d %s", code, msg.c_str());
+ LOG(ERROR) << StringPrintf(
"********************************************************************");
- GKI_TRACE_ERROR_2("* GKI_exception(): %d %s", code, msg);
- GKI_TRACE_ERROR_0(
+ LOG(ERROR) << StringPrintf("* %d %s", code, msg.c_str());
+ LOG(ERROR) << StringPrintf(
"********************************************************************");
- GKI_TRACE_ERROR_2("GKI_exception %d %s done", code, msg);
+ LOG(ERROR) << StringPrintf("%d %s done", code, msg.c_str());
return;
}
@@ -1064,9 +1048,11 @@
**
*******************************************************************************/
uint8_t GKI_suspend_task(uint8_t task_id) {
- GKI_TRACE_1("GKI_suspend_task %d - NOT implemented", task_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_suspend_task %d - NOT implemented", task_id);
- GKI_TRACE_1("GKI_suspend_task %d done", task_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_suspend_task %d done", task_id);
return (GKI_SUCCESS);
}
@@ -1087,9 +1073,11 @@
**
*******************************************************************************/
uint8_t GKI_resume_task(uint8_t task_id) {
- GKI_TRACE_1("GKI_resume_task %d - NOT implemented", task_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_resume_task %d - NOT implemented", task_id);
- GKI_TRACE_1("GKI_resume_task %d done", task_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_resume_task %d done", task_id);
return (GKI_SUCCESS);
}
@@ -1110,6 +1098,9 @@
**
*******************************************************************************/
void GKI_exit_task(uint8_t task_id) {
+ if (task_id >= GKI_MAX_TASKS) {
+ return;
+ }
GKI_disable();
gki_cb.com.OSRdyTbl[task_id] = TASK_DEAD;
@@ -1123,7 +1114,8 @@
// GKI_send_event(task_id, EVENT_MASK(GKI_SHUTDOWN_EVT));
- GKI_TRACE_1("GKI_exit_task %d done", task_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("GKI_exit_task %d done", task_id);
return;
}
@@ -1142,7 +1134,7 @@
**
*******************************************************************************/
void GKI_sched_lock(void) {
- GKI_TRACE_0("GKI_sched_lock");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("GKI_sched_lock");
GKI_disable();
return;
}
@@ -1162,7 +1154,7 @@
**
*******************************************************************************/
void GKI_sched_unlock(void) {
- GKI_TRACE_0("GKI_sched_unlock");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("GKI_sched_unlock");
GKI_enable();
}
@@ -1174,9 +1166,9 @@
**
*******************************************************************************/
void GKI_shiftdown(uint8_t* p_mem, uint32_t len, uint32_t shift_amount) {
- register uint8_t* ps = p_mem + len - 1;
- register uint8_t* pd = ps + shift_amount;
- register uint32_t xx;
+ uint8_t* ps = p_mem + len - 1;
+ uint8_t* pd = ps + shift_amount;
+ uint32_t xx;
for (xx = 0; xx < len; xx++) *pd-- = *ps--;
}
@@ -1189,9 +1181,9 @@
**
*******************************************************************************/
void GKI_shiftup(uint8_t* p_dest, uint8_t* p_src, uint32_t len) {
- register uint8_t* ps = p_src;
- register uint8_t* pd = p_dest;
- register uint32_t xx;
+ uint8_t* ps = p_src;
+ uint8_t* pd = p_dest;
+ uint32_t xx;
for (xx = 0; xx < len; xx++) *pd++ = *ps++;
}
diff --git a/src/hal/include/nfc_hal_api.h b/src/hal/include/nfc_hal_api.h
deleted file mode 100644
index e19a8c5..0000000
--- a/src/hal/include/nfc_hal_api.h
+++ /dev/null
@@ -1,248 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2012-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * NFC Hardware Abstraction Layer API
- *
- ******************************************************************************/
-#ifndef NFC_HAL_API_H
-#define NFC_HAL_API_H
-#include <hardware/nfc.h>
-#include "data_types.h"
-#include "nfc_hal_target.h"
-
-/*******************************************************************************
-** tHAL_HCI_NETWK_CMD Definitions
-*******************************************************************************/
-#define HAL_NFC_HCI_NO_UICC_HOST 0x00
-#define HAL_NFC_HCI_UICC0_HOST 0x01
-#define HAL_NFC_HCI_UICC1_HOST 0x02
-#define HAL_NFC_HCI_UICC2_HOST 0x04
-
-typedef uint8_t tHAL_NFC_STATUS;
-typedef void(tHAL_NFC_STATUS_CBACK)(tHAL_NFC_STATUS status);
-typedef void(tHAL_NFC_CBACK)(uint8_t event, tHAL_NFC_STATUS status);
-typedef void(tHAL_NFC_DATA_CBACK)(uint16_t data_len, uint8_t* p_data);
-
-/*******************************************************************************
-** tHAL_NFC_ENTRY HAL entry-point lookup table
-*******************************************************************************/
-
-typedef void(tHAL_API_INITIALIZE)(void);
-typedef void(tHAL_API_TERMINATE)(void);
-typedef void(tHAL_API_OPEN)(tHAL_NFC_CBACK* p_hal_cback,
- tHAL_NFC_DATA_CBACK* p_data_cback);
-typedef void(tHAL_API_CLOSE)(void);
-typedef void(tHAL_API_CORE_INITIALIZED)(uint16_t data_len,
- uint8_t* p_core_init_rsp_params);
-typedef void(tHAL_API_WRITE)(uint16_t data_len, uint8_t* p_data);
-typedef bool(tHAL_API_PREDISCOVER)(void);
-typedef void(tHAL_API_CONTROL_GRANTED)(void);
-typedef void(tHAL_API_POWER_CYCLE)(void);
-typedef uint8_t(tHAL_API_GET_MAX_NFCEE)(void);
-
-#define NFC_HAL_DM_PRE_SET_MEM_LEN 5
-typedef struct {
- uint32_t addr;
- uint32_t data;
-} tNFC_HAL_DM_PRE_SET_MEM;
-
-/* data members for NFC_HAL-HCI */
-typedef struct {
- bool nfc_hal_prm_nvm_required; /* set nfc_hal_prm_nvm_required to TRUE, if the
- platform wants to abort PRM process without
- NVM */
- uint16_t nfc_hal_nfcc_enable_timeout; /* max time to wait for RESET NTF after
- setting REG_PU to high */
- uint16_t nfc_hal_post_xtal_timeout; /* max time to wait for RESET NTF after
- setting Xtal frequency */
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
- bool nfc_hal_first_boot; /* set nfc_hal_first_boot to TRUE, if platform
- enables NFC for the first time after bootup */
- uint8_t nfc_hal_hci_uicc_support; /* set nfc_hal_hci_uicc_support to Zero, if
- no UICC is supported otherwise set
- corresponding bit(s) for every supported
- UICC(s) */
-#endif
-} tNFC_HAL_CFG;
-
-typedef struct {
- tHAL_API_INITIALIZE* initialize;
- tHAL_API_TERMINATE* terminate;
- tHAL_API_OPEN* open;
- tHAL_API_CLOSE* close;
- tHAL_API_CORE_INITIALIZED* core_initialized;
- tHAL_API_WRITE* write;
- tHAL_API_PREDISCOVER* prediscover;
- tHAL_API_CONTROL_GRANTED* control_granted;
- tHAL_API_POWER_CYCLE* power_cycle;
- tHAL_API_GET_MAX_NFCEE* get_max_ee;
-
-} tHAL_NFC_ENTRY;
-
-/*******************************************************************************
-** HAL API Function Prototypes
-*******************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*******************************************************************************
-**
-** Function HAL_NfcInitialize
-**
-** Description Called when HAL library is loaded.
-**
-** Initialize GKI and start the HCIT task
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcInitialize(void);
-
-/*******************************************************************************
-**
-** Function HAL_NfcTerminate
-**
-** Description Called to terminate NFC HAL
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcTerminate(void);
-
-/*******************************************************************************
-**
-** Function HAL_NfcOpen
-**
-** Description Open transport and intialize the NFCC, and
-** Register callback for HAL event notifications,
-**
-** HAL_OPEN_CPLT_EVT will notify when operation is complete.
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcOpen(tHAL_NFC_CBACK* p_hal_cback,
- tHAL_NFC_DATA_CBACK* p_data_cback);
-
-/*******************************************************************************
-**
-** Function HAL_NfcClose
-**
-** Description Prepare for shutdown. A HAL_CLOSE_CPLT_EVT will be
-** reported when complete.
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcClose(void);
-
-/*******************************************************************************
-**
-** Function HAL_NfcCoreInitialized
-**
-** Description Called after the CORE_INIT_RSP is received from the NFCC.
-** At this time, the HAL can do any chip-specific
-** configuration, and when finished signal the libnfc-nci with
-** event HAL_POST_INIT_CPLT_EVT.
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcCoreInitialized(uint16_t data_len, uint8_t* p_core_init_rsp_params);
-
-/*******************************************************************************
-**
-** Function HAL_NfcWrite
-**
-** Description Send an NCI control message or data packet to the
-** transport. If an NCI command message exceeds the transport
-** size, HAL is responsible for fragmenting it, Data packets
-** must be of the correct size.
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcWrite(uint16_t data_len, uint8_t* p_data);
-
-/*******************************************************************************
-**
-** Function HAL_NfcPreDiscover
-**
-** Description Perform any vendor-specific pre-discovery actions (if
-** needed). If any actions were performed TRUE will be
-** returned, and HAL_PRE_DISCOVER_CPLT_EVT will notify when
-** actions are completed.
-**
-** Returns TRUE if vendor-specific pre-discovery actions initialized
-** FALSE if no vendor-specific pre-discovery actions are
-** needed.
-**
-*******************************************************************************/
-bool HAL_NfcPreDiscover(void);
-
-/*******************************************************************************
-**
-** Function HAL_NfcControlGranted
-**
-** Description Grant control to HAL control for sending NCI commands.
-**
-** Call in response to HAL_REQUEST_CONTROL_EVT.
-**
-** Must only be called when there are no NCI commands pending.
-**
-** HAL_RELEASE_CONTROL_EVT will notify when HAL no longer
-** needs control of NCI.
-**
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcControlGranted(void);
-
-/*******************************************************************************
-**
-** Function HAL_NfcPowerCycle
-**
-** Description Restart NFCC by power cyle
-**
-** HAL_OPEN_CPLT_EVT will notify when operation is complete.
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcPowerCycle(void);
-
-/*******************************************************************************
-**
-** Function HAL_NfcGetMaxNfcee
-**
-** Description Retrieve the maximum number of NFCEEs supported by NFCC
-**
-** Returns the maximum number of NFCEEs supported by NFCC
-**
-*******************************************************************************/
-uint8_t HAL_NfcGetMaxNfcee(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* NFC_HAL_API_H */
diff --git a/src/hal/include/nfc_hal_target.h b/src/hal/include/nfc_hal_target.h
deleted file mode 100644
index 4bb66e6..0000000
--- a/src/hal/include/nfc_hal_target.h
+++ /dev/null
@@ -1,437 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2012-2014 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.
- *
- ******************************************************************************/
-
-#ifndef NFC_HAL_TARGET_H
-#define NFC_HAL_TARGET_H
-
-#include "data_types.h"
-#include "gki.h"
-
-/****************************************************************************
-** NCI related configuration
-****************************************************************************/
-
-/* Initial Max Control Packet Payload Size (until receiving payload size in
- * INIT_CORE_RSP) */
-#ifndef NFC_HAL_NCI_INIT_CTRL_PAYLOAD_SIZE
-#define NFC_HAL_NCI_INIT_CTRL_PAYLOAD_SIZE 0xFF
-#endif
-
-/* Number of bytes to reserve in front of NCI messages (e.g. for transport
- * header) */
-#ifndef NFC_HAL_NCI_MSG_OFFSET_SIZE
-#define NFC_HAL_NCI_MSG_OFFSET_SIZE 1
-#endif
-
-/* NFC-WAKE */
-#ifndef NFC_HAL_LP_NFC_WAKE_GPIO
-#define NFC_HAL_LP_NFC_WAKE_GPIO UPIO_GENERAL3
-#endif
-
-/* NFCC snooze mode idle timeout before deassert NFC_WAKE in ms */
-#ifndef NFC_HAL_LP_IDLE_TIMEOUT
-#define NFC_HAL_LP_IDLE_TIMEOUT 100
-#endif
-
-/* NFC snooze mode */
-#ifndef NFC_HAL_LP_SNOOZE_MODE
-#define NFC_HAL_LP_SNOOZE_MODE NFC_HAL_LP_SNOOZE_MODE_UART
-#endif
-
-/* Idle Threshold Host in 100ms unit */
-#ifndef NFC_HAL_LP_IDLE_THRESHOLD_HOST
-#define NFC_HAL_LP_IDLE_THRESHOLD_HOST 0
-#endif
-
-/* Idle Threshold HC in 100ms unit */
-#ifndef NFC_HAL_LP_IDLE_THRESHOLD_HC
-#define NFC_HAL_LP_IDLE_THRESHOLD_HC 0
-#endif
-
-/* Default NFCC power-up baud rate */
-#ifndef NFC_HAL_DEFAULT_BAUD
-#define NFC_HAL_DEFAULT_BAUD USERIAL_BAUD_115200
-#endif
-
-/* time (in ms) between power off and on NFCC */
-#ifndef NFC_HAL_POWER_CYCLE_DELAY
-#define NFC_HAL_POWER_CYCLE_DELAY 100
-#endif
-
-/* time (in ms) between power off and on NFCC */
-#ifndef NFC_HAL_NFCC_ENABLE_TIMEOUT
-#define NFC_HAL_NFCC_ENABLE_TIMEOUT 1000
-#endif
-
-#ifndef NFC_HAL_PRM_DEBUG
-#define NFC_HAL_PRM_DEBUG TRUE
-#endif
-
-/* max patch data length (Can be overridden by platform for ACL HCI command
- * size) */
-#ifndef NFC_HAL_PRM_HCD_CMD_MAXLEN
-#define NFC_HAL_PRM_HCD_CMD_MAXLEN 250
-#endif
-
-/* Require PreI2C patch by default */
-#ifndef NFC_HAL_PRE_I2C_PATCH_INCLUDED
-#define NFC_HAL_PRE_I2C_PATCH_INCLUDED TRUE
-#endif
-
-/* Mininum payload size for SPD NCI commands (used to validate
- * HAL_NfcPrmSetSpdNciCmdPayloadSize) */
-/* Default is 32, as required by the NCI specifications; however this value may
- * be */
-/* over-riden for platforms that have transport packet limitations */
-#ifndef NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE
-#define NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE (32)
-#endif
-
-/* amount of time to wait for authenticating/committing patch to NVM */
-#ifndef NFC_HAL_PRM_COMMIT_DELAY
-#define NFC_HAL_PRM_COMMIT_DELAY (30000)
-#endif
-
-/* amount of time to wait after downloading preI2C patch before downloading
- * LPM/FPM patch */
-#ifndef NFC_HAL_PRM_POST_I2C_FIX_DELAY
-#define NFC_HAL_PRM_POST_I2C_FIX_DELAY (200)
-#endif
-
-/* NFCC will respond to more than one technology during listen discovery */
-#ifndef NFC_HAL_DM_MULTI_TECH_RESP
-#define NFC_HAL_DM_MULTI_TECH_RESP TRUE
-#endif
-
-/* Data rate for 15693 command/response, it must be same as
- * RW_I93_FLAG_DATA_RATE in nfc_target.h */
-#define NFC_HAL_I93_FLAG_DATA_RATE_LOW 0x00
-#define NFC_HAL_I93_FLAG_DATA_RATE_HIGH 0x02
-
-#ifndef NFC_HAL_I93_FLAG_DATA_RATE
-#define NFC_HAL_I93_FLAG_DATA_RATE NFC_HAL_I93_FLAG_DATA_RATE_HIGH
-#endif
-
-/* NFC HAL HCI */
-#ifndef NFC_HAL_HCI_INCLUDED
-#define NFC_HAL_HCI_INCLUDED TRUE
-#endif
-
-/* Quick Timer */
-#ifndef QUICK_TIMER_TICKS_PER_SEC
-#define QUICK_TIMER_TICKS_PER_SEC 100 /* 10ms timer */
-#endif
-
-#ifndef NFC_HAL_SHARED_TRANSPORT_ENABLED
-#define NFC_HAL_SHARED_TRANSPORT_ENABLED FALSE
-#endif
-
-/* Enable verbose tracing by default */
-#ifndef NFC_HAL_TRACE_VERBOSE
-#define NFC_HAL_TRACE_VERBOSE TRUE
-#endif
-
-#ifndef NFC_HAL_INITIAL_TRACE_LEVEL
-#define NFC_HAL_INITIAL_TRACE_LEVEL 5
-#endif
-
-/* Map NFC serial port to USERIAL_PORT_6 by default */
-#ifndef USERIAL_NFC_PORT
-#define USERIAL_NFC_PORT (USERIAL_PORT_6)
-#endif
-
-/* Restore NFCC baud rate to default on shutdown if baud rate was updated */
-#ifndef NFC_HAL_RESTORE_BAUD_ON_SHUTDOWN
-#define NFC_HAL_RESTORE_BAUD_ON_SHUTDOWN TRUE
-#endif
-
-/* Enable protocol tracing by default */
-#ifndef NFC_HAL_TRACE_PROTOCOL
-#define NFC_HAL_TRACE_PROTOCOL TRUE
-#endif
-
-/* Legacy protocol-trace-enable macro */
-#ifndef BT_TRACE_PROTOCOL
-#define BT_TRACE_PROTOCOL (NFC_HAL_TRACE_PROTOCOL)
-#endif
-
-/* Enable HAL tracing by default */
-#ifndef NFC_HAL_USE_TRACES
-#define NFC_HAL_USE_TRACES TRUE
-#endif
-
-/* HAL trace macros */
-#if (NFC_HAL_USE_TRACES == TRUE)
-#define NCI_TRACE_0(l, t, m) \
- LogMsg((TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t)), (m))
-#define NCI_TRACE_1(l, t, m, p1) \
- LogMsg(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t), (m), (uintptr_t)(p1))
-#define NCI_TRACE_2(l, t, m, p1, p2) \
- LogMsg(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t), (m), \
- (uintptr_t)(p1), (uintptr_t)(p2))
-#define NCI_TRACE_3(l, t, m, p1, p2, p3) \
- LogMsg(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t), (m), \
- (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3))
-#define NCI_TRACE_4(l, t, m, p1, p2, p3, p4) \
- LogMsg(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t), (m), \
- (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), (uintptr_t)(p4))
-#define NCI_TRACE_5(l, t, m, p1, p2, p3, p4, p5) \
- LogMsg(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t), (m), \
- (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), (uintptr_t)(p4), \
- (uintptr_t)(p5))
-#define NCI_TRACE_6(l, t, m, p1, p2, p3, p4, p5, p6) \
- LogMsg(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t), (m), \
- (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), (uintptr_t)(p4), \
- (uintptr_t)(p5), (uintptr_t)(p6))
-
-#define HAL_TRACE_ERROR0(m) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- NCI_TRACE_0(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m); \
- }
-#define HAL_TRACE_ERROR1(m, p1) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- NCI_TRACE_1(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m, p1); \
- }
-#define HAL_TRACE_ERROR2(m, p1, p2) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- NCI_TRACE_2(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m, p1, p2); \
- }
-#define HAL_TRACE_ERROR3(m, p1, p2, p3) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- NCI_TRACE_3(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m, p1, p2, p3); \
- }
-#define HAL_TRACE_ERROR4(m, p1, p2, p3, p4) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- NCI_TRACE_4(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m, p1, p2, p3, p4); \
- }
-#define HAL_TRACE_ERROR5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- NCI_TRACE_5(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5); \
- }
-#define HAL_TRACE_ERROR6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- NCI_TRACE_6(TRACE_LAYER_HAL, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define HAL_TRACE_WARNING0(m) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- NCI_TRACE_0(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m); \
- }
-#define HAL_TRACE_WARNING1(m, p1) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- NCI_TRACE_1(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m, p1); \
- }
-#define HAL_TRACE_WARNING2(m, p1, p2) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- NCI_TRACE_2(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m, p1, p2); \
- }
-#define HAL_TRACE_WARNING3(m, p1, p2, p3) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- NCI_TRACE_3(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m, p1, p2, p3); \
- }
-#define HAL_TRACE_WARNING4(m, p1, p2, p3, p4) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- NCI_TRACE_4(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m, p1, p2, p3, p4); \
- }
-#define HAL_TRACE_WARNING5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- NCI_TRACE_5(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5); \
- }
-#define HAL_TRACE_WARNING6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- NCI_TRACE_6(TRACE_LAYER_HAL, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define HAL_TRACE_API0(m) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) \
- NCI_TRACE_0(TRACE_LAYER_HAL, TRACE_TYPE_API, m); \
- }
-#define HAL_TRACE_API1(m, p1) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) \
- NCI_TRACE_1(TRACE_LAYER_HAL, TRACE_TYPE_API, m, p1); \
- }
-#define HAL_TRACE_API2(m, p1, p2) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) \
- NCI_TRACE_2(TRACE_LAYER_HAL, TRACE_TYPE_API, m, p1, p2); \
- }
-#define HAL_TRACE_API3(m, p1, p2, p3) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) \
- NCI_TRACE_3(TRACE_LAYER_HAL, TRACE_TYPE_API, m, p1, p2, p3); \
- }
-#define HAL_TRACE_API4(m, p1, p2, p3, p4) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) \
- NCI_TRACE_4(TRACE_LAYER_HAL, TRACE_TYPE_API, m, p1, p2, p3, p4); \
- }
-#define HAL_TRACE_API5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) \
- NCI_TRACE_5(TRACE_LAYER_HAL, TRACE_TYPE_API, m, p1, p2, p3, p4, p5); \
- }
-#define HAL_TRACE_API6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_API) \
- NCI_TRACE_6(TRACE_LAYER_HAL, TRACE_TYPE_API, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define HAL_TRACE_EVENT0(m) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- NCI_TRACE_0(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m); \
- }
-#define HAL_TRACE_EVENT1(m, p1) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- NCI_TRACE_1(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m, p1); \
- }
-#define HAL_TRACE_EVENT2(m, p1, p2) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- NCI_TRACE_2(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m, p1, p2); \
- }
-#define HAL_TRACE_EVENT3(m, p1, p2, p3) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- NCI_TRACE_3(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m, p1, p2, p3); \
- }
-#define HAL_TRACE_EVENT4(m, p1, p2, p3, p4) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- NCI_TRACE_4(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m, p1, p2, p3, p4); \
- }
-#define HAL_TRACE_EVENT5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- NCI_TRACE_5(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5); \
- }
-#define HAL_TRACE_EVENT6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- NCI_TRACE_6(TRACE_LAYER_HAL, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define HAL_TRACE_DEBUG0(m) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- NCI_TRACE_0(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m); \
- }
-#define HAL_TRACE_DEBUG1(m, p1) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- NCI_TRACE_1(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m, p1); \
- }
-#define HAL_TRACE_DEBUG2(m, p1, p2) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- NCI_TRACE_2(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m, p1, p2); \
- }
-#define HAL_TRACE_DEBUG3(m, p1, p2, p3) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- NCI_TRACE_3(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m, p1, p2, p3); \
- }
-#define HAL_TRACE_DEBUG4(m, p1, p2, p3, p4) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- NCI_TRACE_4(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4); \
- }
-#define HAL_TRACE_DEBUG5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- NCI_TRACE_5(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5); \
- }
-#define HAL_TRACE_DEBUG6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfc_hal_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- NCI_TRACE_6(TRACE_LAYER_HAL, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#else /* Disable HAL tracing */
-
-#define HAL_TRACE_0(l, t, m)
-#define HAL_TRACE_1(l, t, m, p1)
-#define HAL_TRACE_2(l, t, m, p1, p2)
-#define HAL_TRACE_3(l, t, m, p1, p2, p3)
-#define HAL_TRACE_4(l, t, m, p1, p2, p3, p4)
-#define HAL_TRACE_5(l, t, m, p1, p2, p3, p4, p5)
-#define HAL_TRACE_6(l, t, m, p1, p2, p3, p4, p5, p6)
-
-#define HAL_TRACE_ERROR0(m)
-#define HAL_TRACE_ERROR1(m, p1)
-#define HAL_TRACE_ERROR2(m, p1, p2)
-#define HAL_TRACE_ERROR3(m, p1, p2, p3)
-#define HAL_TRACE_ERROR4(m, p1, p2, p3, p4)
-#define HAL_TRACE_ERROR5(m, p1, p2, p3, p4, p5)
-#define HAL_TRACE_ERROR6(m, p1, p2, p3, p4, p5, p6)
-
-#define HAL_TRACE_WARNING0(m)
-#define HAL_TRACE_WARNING1(m, p1)
-#define HAL_TRACE_WARNING2(m, p1, p2)
-#define HAL_TRACE_WARNING3(m, p1, p2, p3)
-#define HAL_TRACE_WARNING4(m, p1, p2, p3, p4)
-#define HAL_TRACE_WARNING5(m, p1, p2, p3, p4, p5)
-#define HAL_TRACE_WARNING6(m, p1, p2, p3, p4, p5, p6)
-
-#define HAL_TRACE_API0(m)
-#define HAL_TRACE_API1(m, p1)
-#define HAL_TRACE_API2(m, p1, p2)
-#define HAL_TRACE_API3(m, p1, p2, p3)
-#define HAL_TRACE_API4(m, p1, p2, p3, p4)
-#define HAL_TRACE_API5(m, p1, p2, p3, p4, p5)
-#define HAL_TRACE_API6(m, p1, p2, p3, p4, p5, p6)
-
-#define HAL_TRACE_EVENT0(m)
-#define HAL_TRACE_EVENT1(m, p1)
-#define HAL_TRACE_EVENT2(m, p1, p2)
-#define HAL_TRACE_EVENT3(m, p1, p2, p3)
-#define HAL_TRACE_EVENT4(m, p1, p2, p3, p4)
-#define HAL_TRACE_EVENT5(m, p1, p2, p3, p4, p5)
-#define HAL_TRACE_EVENT6(m, p1, p2, p3, p4, p5, p6)
-
-#define HAL_TRACE_DEBUG0(m)
-#define HAL_TRACE_DEBUG1(m, p1)
-#define HAL_TRACE_DEBUG2(m, p1, p2)
-#define HAL_TRACE_DEBUG3(m, p1, p2, p3)
-#define HAL_TRACE_DEBUG4(m, p1, p2, p3, p4)
-#define HAL_TRACE_DEBUG5(m, p1, p2, p3, p4, p5)
-#define HAL_TRACE_DEBUG6(m, p1, p2, p3, p4, p5, p6)
-#endif /* Disable HAL tracing */
-
-#endif /* GKI_TARGET_H */
diff --git a/src/hal/include/nfc_types.h b/src/hal/include/nfc_types.h
deleted file mode 100644
index 6ba5efc..0000000
--- a/src/hal/include/nfc_types.h
+++ /dev/null
@@ -1,351 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2012-2014 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.
- *
- ******************************************************************************/
-
-#ifndef NFC_TYPES_H
-#define NFC_TYPES_H
-
-/****************************************************************************
-** NFC_HDR header definition for NFC messages
-*****************************************************************************/
-typedef struct {
- uint16_t event;
- uint16_t len;
- uint16_t offset;
- uint16_t layer_specific;
-} NFC_HDR;
-#define NFC_HDR_SIZE (sizeof(NFC_HDR))
-
-/* Mask for NFC_HDR event field */
-#define NFC_EVT_MASK 0xFF00
-#define NFC_SUB_EVT_MASK 0x00FF
-
-/****************************************************************************
-** NFC_HAL_TASK definitions
-*****************************************************************************/
-
-/* NFC_HAL_TASK event messages */
-/* NCI message for sending to NFCC */
-#define NFC_HAL_EVT_TO_NFC_NCI 0x0100
-/* Request to start NCIT quick timer */
-#define NFC_HAL_EVT_POST_CORE_RESET 0x0200
-/* Request to start chip-specific config */
-#define NFC_HAL_EVT_TO_START_QUICK_TIMER 0x0300
-/* NCI message for hci persistency data */
-#define NFC_HAL_EVT_HCI 0x0400
-/* NCI message to issue prediscover config */
-#define NFC_HAL_EVT_PRE_DISCOVER 0x0500
-/* permission to send commands queued in HAL*/
-#define NFC_HAL_EVT_CONTROL_GRANTED 0x0600
-
-/* NFC_HAL_TASK sub event messages */
-#define NFC_HAL_HCI_RSP_NV_READ_EVT (0x01 | NFC_HAL_EVT_HCI)
-#define NFC_HAL_HCI_RSP_NV_WRITE_EVT (0x02 | NFC_HAL_EVT_HCI)
-#define NFC_HAL_HCI_VSC_TIMEOUT_EVT (0x03 | NFC_HAL_EVT_HCI)
-
-/* Event masks for NFC_TASK messages */
-/* NCI message for sending to host stack */
-#define NFC_EVT_TO_NFC_NCI 0x4000
-/* Error notification to NFC Task */
-#define NFC_EVT_TO_NFC_ERR 0x4100
-/* Messages between NFC and NCI task */
-#define NFC_EVT_TO_NFC_MSGS 0x4200
-
-/*****************************************************************************
-** Macros to get and put bytes to and from a stream (Little Endian format).
-*****************************************************************************/
-
-#define UINT32_TO_STREAM(p, u32) \
- { \
- *(p)++ = (uint8_t)(u32); \
- *(p)++ = (uint8_t)((u32) >> 8); \
- *(p)++ = (uint8_t)((u32) >> 16); \
- *(p)++ = (uint8_t)((u32) >> 24); \
- }
-#define UINT24_TO_STREAM(p, u24) \
- { \
- *(p)++ = (uint8_t)(u24); \
- *(p)++ = (uint8_t)((u24) >> 8); \
- *(p)++ = (uint8_t)((u24) >> 16); \
- }
-#define UINT16_TO_STREAM(p, u16) \
- { \
- *(p)++ = (uint8_t)(u16); \
- *(p)++ = (uint8_t)((u16) >> 8); \
- }
-#define UINT8_TO_STREAM(p, u8) \
- { *(p)++ = (uint8_t)(u8); }
-#define INT8_TO_STREAM(p, u8) \
- { *(p)++ = (int8_t)(u8); }
-#define ARRAY32_TO_STREAM(p, a) \
- { \
- register int ijk; \
- for (ijk = 0; ijk < 32; ijk++) *(p)++ = (uint8_t)a[31 - ijk]; \
- }
-#define ARRAY16_TO_STREAM(p, a) \
- { \
- register int ijk; \
- for (ijk = 0; ijk < 16; ijk++) *(p)++ = (uint8_t)a[15 - ijk]; \
- }
-#define ARRAY8_TO_STREAM(p, a) \
- { \
- register int ijk; \
- for (ijk = 0; ijk < 8; ijk++) *(p)++ = (uint8_t)a[7 - ijk]; \
- }
-#define BDADDR_TO_STREAM(p, a) \
- { \
- register int ijk; \
- for (ijk = 0; ijk < BD_ADDR_LEN; ijk++) \
- *(p)++ = (uint8_t)a[BD_ADDR_LEN - 1 - ijk]; \
- }
-#define LAP_TO_STREAM(p, a) \
- { \
- register int ijk; \
- for (ijk = 0; ijk < LAP_LEN; ijk++) \
- *(p)++ = (uint8_t)a[LAP_LEN - 1 - ijk]; \
- }
-#define DEVCLASS_TO_STREAM(p, a) \
- { \
- register int ijk; \
- for (ijk = 0; ijk < DEV_CLASS_LEN; ijk++) \
- *(p)++ = (uint8_t)a[DEV_CLASS_LEN - 1 - ijk]; \
- }
-#define ARRAY_TO_STREAM(p, a, len) \
- { \
- register int ijk; \
- for (ijk = 0; ijk < len; ijk++) *(p)++ = (uint8_t)a[ijk]; \
- }
-#define REVERSE_ARRAY_TO_STREAM(p, a, len) \
- { \
- register int ijk; \
- for (ijk = 0; ijk < len; ijk++) *(p)++ = (uint8_t)a[len - 1 - ijk]; \
- }
-
-#define STREAM_TO_UINT8(u8, p) \
- { \
- u8 = (uint8_t)(*(p)); \
- (p) += 1; \
- }
-#define STREAM_TO_UINT16(u16, p) \
- { \
- u16 = ((uint16_t)(*(p)) + (((uint16_t)(*((p) + 1))) << 8)); \
- (p) += 2; \
- }
-#define STREAM_TO_UINT24(u32, p) \
- { \
- u32 = (((uint32_t)(*(p))) + ((((uint32_t)(*((p) + 1)))) << 8) + \
- ((((uint32_t)(*((p) + 2)))) << 16)); \
- (p) += 3; \
- }
-#define STREAM_TO_UINT32(u32, p) \
- { \
- u32 = (((uint32_t)(*(p))) + ((((uint32_t)(*((p) + 1)))) << 8) + \
- ((((uint32_t)(*((p) + 2)))) << 16) + \
- ((((uint32_t)(*((p) + 3)))) << 24)); \
- (p) += 4; \
- }
-#define STREAM_TO_BDADDR(a, p) \
- { \
- register int ijk; \
- register uint8_t* pbda = (uint8_t*)a + BD_ADDR_LEN - 1; \
- for (ijk = 0; ijk < BD_ADDR_LEN; ijk++) *pbda-- = *p++; \
- }
-#define STREAM_TO_ARRAY32(a, p) \
- { \
- register int ijk; \
- register uint8_t* _pa = (uint8_t*)a + 31; \
- for (ijk = 0; ijk < 32; ijk++) *_pa-- = *p++; \
- }
-#define STREAM_TO_ARRAY16(a, p) \
- { \
- register int ijk; \
- register uint8_t* _pa = (uint8_t*)a + 15; \
- for (ijk = 0; ijk < 16; ijk++) *_pa-- = *p++; \
- }
-#define STREAM_TO_ARRAY8(a, p) \
- { \
- register int ijk; \
- register uint8_t* _pa = (uint8_t*)a + 7; \
- for (ijk = 0; ijk < 8; ijk++) *_pa-- = *p++; \
- }
-#define STREAM_TO_DEVCLASS(a, p) \
- { \
- register int ijk; \
- register uint8_t* _pa = (uint8_t*)a + DEV_CLASS_LEN - 1; \
- for (ijk = 0; ijk < DEV_CLASS_LEN; ijk++) *_pa-- = *p++; \
- }
-#define STREAM_TO_LAP(a, p) \
- { \
- register int ijk; \
- register uint8_t* plap = (uint8_t*)a + LAP_LEN - 1; \
- for (ijk = 0; ijk < LAP_LEN; ijk++) *plap-- = *p++; \
- }
-#define STREAM_TO_ARRAY(a, p, len) \
- { \
- register int ijk; \
- for (ijk = 0; ijk < len; ijk++) ((uint8_t*)a)[ijk] = *p++; \
- }
-#define REVERSE_STREAM_TO_ARRAY(a, p, len) \
- { \
- register int ijk; \
- register uint8_t* _pa = (uint8_t*)a + len - 1; \
- for (ijk = 0; ijk < len; ijk++) *_pa-- = *p++; \
- }
-
-/*****************************************************************************
-** Macros to get and put bytes to and from a field (Little Endian format).
-** These are the same as to stream, except the pointer is not incremented.
-*****************************************************************************/
-
-#define UINT32_TO_FIELD(p, u32) \
- { \
- *(uint8_t*)(p) = (uint8_t)(u32); \
- *((uint8_t*)(p) + 1) = (uint8_t)((u32) >> 8); \
- *((uint8_t*)(p) + 2) = (uint8_t)((u32) >> 16); \
- *((uint8_t*)(p) + 3) = (uint8_t)((u32) >> 24); \
- }
-#define UINT24_TO_FIELD(p, u24) \
- { \
- *(uint8_t*)(p) = (uint8_t)(u24); \
- *((uint8_t*)(p) + 1) = (uint8_t)((u24) >> 8); \
- *((uint8_t*)(p) + 2) = (uint8_t)((u24) >> 16); \
- }
-#define UINT16_TO_FIELD(p, u16) \
- { \
- *(uint8_t*)(p) = (uint8_t)(u16); \
- *((uint8_t*)(p) + 1) = (uint8_t)((u16) >> 8); \
- }
-#define UINT8_TO_FIELD(p, u8) \
- { *(uint8_t*)(p) = (uint8_t)(u8); }
-
-/*****************************************************************************
-** Macros to get and put bytes to and from a stream (Big Endian format)
-*****************************************************************************/
-
-#define UINT32_TO_BE_STREAM(p, u32) \
- { \
- *(p)++ = (uint8_t)((u32) >> 24); \
- *(p)++ = (uint8_t)((u32) >> 16); \
- *(p)++ = (uint8_t)((u32) >> 8); \
- *(p)++ = (uint8_t)(u32); \
- }
-#define UINT24_TO_BE_STREAM(p, u24) \
- { \
- *(p)++ = (uint8_t)((u24) >> 16); \
- *(p)++ = (uint8_t)((u24) >> 8); \
- *(p)++ = (uint8_t)(u24); \
- }
-#define UINT16_TO_BE_STREAM(p, u16) \
- { \
- *(p)++ = (uint8_t)((u16) >> 8); \
- *(p)++ = (uint8_t)(u16); \
- }
-#define UINT8_TO_BE_STREAM(p, u8) \
- { *(p)++ = (uint8_t)(u8); }
-#define ARRAY_TO_BE_STREAM(p, a, len) \
- { \
- register int ijk; \
- for (ijk = 0; ijk < len; ijk++) *(p)++ = (uint8_t)a[ijk]; \
- }
-
-#define BE_STREAM_TO_UINT8(u8, p) \
- { \
- u8 = (uint8_t)(*(p)); \
- (p) += 1; \
- }
-#define BE_STREAM_TO_UINT16(u16, p) \
- { \
- u16 = (uint16_t)(((uint16_t)(*(p)) << 8) + (uint16_t)(*((p) + 1))); \
- (p) += 2; \
- }
-#define BE_STREAM_TO_UINT24(u32, p) \
- { \
- u32 = (((uint32_t)(*((p) + 2))) + ((uint32_t)(*((p) + 1)) << 8) + \
- ((uint32_t)(*(p)) << 16)); \
- (p) += 3; \
- }
-#define BE_STREAM_TO_UINT32(u32, p) \
- { \
- u32 = ((uint32_t)(*((p) + 3)) + ((uint32_t)(*((p) + 2)) << 8) + \
- ((uint32_t)(*((p) + 1)) << 16) + ((uint32_t)(*(p)) << 24)); \
- (p) += 4; \
- }
-#define BE_STREAM_TO_ARRAY(p, a, len) \
- { \
- register int ijk; \
- for (ijk = 0; ijk < len; ijk++) ((uint8_t*)a)[ijk] = *p++; \
- }
-
-/*****************************************************************************
-** Macros to get and put bytes to and from a field (Big Endian format).
-** These are the same as to stream, except the pointer is not incremented.
-*****************************************************************************/
-
-#define UINT32_TO_BE_FIELD(p, u32) \
- { \
- *(uint8_t*)(p) = (uint8_t)((u32) >> 24); \
- *((uint8_t*)(p) + 1) = (uint8_t)((u32) >> 16); \
- *((uint8_t*)(p) + 2) = (uint8_t)((u32) >> 8); \
- *((uint8_t*)(p) + 3) = (uint8_t)(u32); \
- }
-#define UINT24_TO_BE_FIELD(p, u24) \
- { \
- *(uint8_t*)(p) = (uint8_t)((u24) >> 16); \
- *((uint8_t*)(p) + 1) = (uint8_t)((u24) >> 8); \
- *((uint8_t*)(p) + 2) = (uint8_t)(u24); \
- }
-#define UINT16_TO_BE_FIELD(p, u16) \
- { \
- *(uint8_t*)(p) = (uint8_t)((u16) >> 8); \
- *((uint8_t*)(p) + 1) = (uint8_t)(u16); \
- }
-#define UINT8_TO_BE_FIELD(p, u8) \
- { *(uint8_t*)(p) = (uint8_t)(u8); }
-
-/*****************************************************************************
-** Define trace levels
-*****************************************************************************/
-
-/* No trace messages to be generated */
-#define BT_TRACE_LEVEL_NONE 0
-/* Error condition trace messages */
-#define BT_TRACE_LEVEL_ERROR 1
-/* Warning condition trace messages */
-#define BT_TRACE_LEVEL_WARNING 2
-/* API traces */
-#define BT_TRACE_LEVEL_API 3
-/* Debug messages for events */
-#define BT_TRACE_LEVEL_EVENT 4
-/* Full debug messages */
-#define BT_TRACE_LEVEL_DEBUG 5
-
-#define TRACE_CTRL_GENERAL 0x00000000
-#define TRACE_LAYER_NCI 0x00280000
-#define TRACE_LAYER_HAL 0x00310000
-#define TRACE_LAYER_GKI 0x001a0000
-#define TRACE_ORG_STACK 0x00000000
-#define TRACE_ORG_GKI 0x00000400
-
-#define TRACE_TYPE_ERROR 0x00000000
-#define TRACE_TYPE_WARNING 0x00000001
-#define TRACE_TYPE_API 0x00000002
-#define TRACE_TYPE_EVENT 0x00000003
-#define TRACE_TYPE_DEBUG 0x00000004
-
-#define TRACE_TYPE_GENERIC 0x00000008
-
-#endif /* NFC_TYPES_H */
diff --git a/src/hal/int/nfc_brcm_defs.h b/src/hal/int/nfc_brcm_defs.h
deleted file mode 100644
index c66ecd4..0000000
--- a/src/hal/int/nfc_brcm_defs.h
+++ /dev/null
@@ -1,421 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2012-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * This file contains the Broadcom-specific defintions that are shared
- * between HAL, nfc stack, adaptation layer and applications.
- *
- ******************************************************************************/
-
-#ifndef NFC_BRCM_DEFS_H
-#define NFC_BRCM_DEFS_H
-
-/*****************************************************************************
-** Broadcom HW ID definitions
-*****************************************************************************/
-#define BRCM_20791B3_ID 0x20791b03
-#define BRCM_20791B4_ID 0x20791b04
-#define BRCM_20791B5_ID 0x20791b05
-#define BRCM_43341B0_ID 0x43341b00
-#define BRCM_20795T1_ID 0x20795a01
-#define BRCM_20795A0_ID 0x20795a00
-#define BRCM_20795A1_ID 0x20795a10
-
-#define BRCM_NFC_GEN_MASK 0xFFFFF000 /* HW generation mask */
-#define BRCM_NFC_REV_MASK 0x00000FFF /* HW revision mask */
-#define BRCM_NFC_20791_GEN 0x20791000
-#define BRCM_NFC_20791_GEN_MAX_EE 3 /* HCI access and 2 UICCs */
-#define BRCM_NFC_43341_GEN 0x43341000
-#define BRCM_NFC_43341_GEN_MAX_EE 3 /* HCI access and 2 UICCs */
-#define BRCM_NFC_20795_GEN 0x20795000
-#define BRCM_NFC_20795_GEN_MAX_EE 4 /* HCI access and 3 UICCs */
-
-/*****************************************************************************
-** Broadcom-specific NCI definitions
-*****************************************************************************/
-
-/**********************************************
- * NCI Message Proprietary Group - F
- **********************************************/
-#define NCI_MSG_TAG_SET_MEM 0x00
-#define NCI_MSG_TAG_GET_MEM 0x01
-#define NCI_MSG_T1T_SET_HR 0x02
-#define NCI_MSG_SET_CLF_REGISTERS 0x03
-#define NCI_MSG_GET_BUILD_INFO 0x04
-#define NCI_MSG_HCI_NETWK 0x05
-#define NCI_MSG_SET_FWFSM 0x06
-#define NCI_MSG_SET_UICCRDRF 0x07
-#define NCI_MSG_POWER_LEVEL 0x08
-#define NCI_MSG_FRAME_LOG 0x09
-#define NCI_MSG_UICC_READER_ACTION 0x0A
-#define NCI_MSG_SET_PPSE_RESPONSE 0x0B
-#define NCI_MSG_PRBS_SET 0x0C
-/* reset HCI network/close all pipes (S,D) register */
-#define NCI_MSG_RESET_ALL_UICC_CFG 0x0D
-#define NCI_MSG_GET_NFCEE_INFO 0x0E
-#define NCI_MSG_DISABLE_INIT_CHECK 0x0F
-#define NCI_MSG_ANTENNA_SELF_TEST 0x10
-#define NCI_MSG_SET_MAX_PKT_SIZE 0x11
-#define NCI_MSG_NCIP_CLK_REQ_OR_CAR_DET 0x12
-#define NCI_MSG_NCIP_CONFIG_DBUART 0x13
-#define NCI_MSG_NCIP_ENABLE_DVT_DRIVER 0x14
-#define NCI_MSG_SET_ASWP 0x15
-#define NCI_MSG_ENCAPSULATE_NCI 0x16
-#define NCI_MSG_CONFIGURE_ARM_JTAG 0x17
-#define NCI_MSG_STATISTICS 0x18
-#define NCI_MSG_SET_DSP_TABLE 0x19
-#define NCI_MSG_GET_DSP_TABLE 0x1a
-#define NCI_MSG_READY_RX_CMD 0x1b
-#define NCI_MSG_GET_VBAT 0x1c
-#define NCI_MSG_GET_XTAL_INDEX_FROM_DH 0x1d
-#define NCI_MSG_SWP_LOG 0x1e
-#define NCI_MSG_GET_PWRLEVEL 0x1f
-#define NCI_MSG_SET_VBAT_MONITOR 0x20
-#define NCI_MSG_SET_TINT_MODE 0x21
-#define NCI_MSG_ACCESS_APP 0x22
-#define NCI_MSG_SET_SECURE_MODE 0x23
-#define NCI_MSG_GET_NV_DEVICE 0x24
-#define NCI_MSG_LPTD 0x25
-#define NCI_MSG_SET_CE4_AS_SNOOZE 0x26
-#define NCI_MSG_NFCC_SEND_HCI 0x27
-#define NCI_MSG_CE4_PATCH_DOWNLOAD_DONE 0x28
-#define NCI_MSG_EEPROM_RW 0x29
-#define NCI_MSG_GET_CLF_REGISTERS 0x2A
-#define NCI_MSG_RF_TEST 0x2B
-#define NCI_MSG_DEBUG_PRINT 0x2C
-#define NCI_MSG_GET_PATCH_VERSION 0x2D
-#define NCI_MSG_SECURE_PATCH_DOWNLOAD 0x2E
-#define NCI_MSG_SPD_FORMAT_NVM 0x2F
-#define NCI_MSG_SPD_READ_NVM 0x30
-#define NCI_MSG_SWP_BIST 0x31
-#define NCI_MSG_WLESS_DBG_MODE 0x32
-#define NCI_MSG_I2C_REQ_POLARITY 0x33
-#define NCI_MSG_AID_FILTER 0x39
-
-/**********************************************
- * Proprietary NCI status codes
- **********************************************/
-#define NCI_STATUS_SPD_ERROR_ORDER 0xE0
-#define NCI_STATUS_SPD_ERROR_DEST 0xE1
-#define NCI_STATUS_SPD_ERROR_PROJECTID 0xE2
-#define NCI_STATUS_SPD_ERROR_CHIPVER 0xE3
-#define NCI_STATUS_SPD_ERROR_MAJORVER 0xE4
-#define NCI_STATUS_SPD_ERROR_INVALID_PARAM 0xE5
-#define NCI_STATUS_SPD_ERROR_INVALID_SIG 0xE6
-#define NCI_STATUS_SPD_ERROR_NVM_CORRUPTED 0xE7
-#define NCI_STATUS_SPD_ERROR_PWR_MODE 0xE8
-#define NCI_STATUS_SPD_ERROR_MSG_LEN 0xE9
-#define NCI_STATUS_SPD_ERROR_PATCHSIZE 0xEA
-
-#define NCI_NV_DEVICE_NONE 0x00
-#define NCI_NV_DEVICE_EEPROM 0x08
-#define NCI_NV_DEVICE_UICC1 0x10
-
-/* The events reported on tNFC_VS_CBACK */
-/* The event is (NCI_NTF_BIT|oid) or (NCI_RSP_BIT|oid) */
-#define NFC_VS_HCI_NETWK_EVT (NCI_NTF_BIT | NCI_MSG_HCI_NETWK)
-#define NFC_VS_HCI_NETWK_RSP (NCI_RSP_BIT | NCI_MSG_HCI_NETWK)
-#define NFC_VS_UICC_READER_ACTION_EVT (NCI_NTF_BIT | NCI_MSG_UICC_READER_ACTION)
-#define NFC_VS_POWER_LEVEL_RSP (NCI_RSP_BIT | NCI_MSG_POWER_LEVEL)
-#define NFC_VS_GET_NV_DEVICE_EVT (NCI_RSP_BIT | NCI_MSG_GET_NV_DEVICE)
-#define NFC_VS_LPTD_EVT (NCI_NTF_BIT | NCI_MSG_LPTD)
-#define NFC_VS_GET_BUILD_INFO_EVT (NCI_RSP_BIT | NCI_MSG_GET_BUILD_INFO)
-#define NFC_VS_GET_PATCH_VERSION_EVT (NCI_RSP_BIT | NCI_MSG_GET_PATCH_VERSION)
-#define NFC_VS_SEC_PATCH_DOWNLOAD_EVT \
- (NCI_RSP_BIT | NCI_MSG_SECURE_PATCH_DOWNLOAD)
-#define NFC_VS_SEC_PATCH_AUTH_EVT (NCI_NTF_BIT | NCI_MSG_SECURE_PATCH_DOWNLOAD)
-#define NFC_VS_EEPROM_RW_EVT (NCI_RSP_BIT | NCI_MSG_EEPROM_RW)
-
-#define NCI_GET_PATCH_VERSION_NVM_OFFSET 37
-
-/* Static and dynamic pipe id and status for each pipe to uicc0 and uicc1. */
-#define NCI_NFCC_PIPE_INFO_NV_SIZE 24
-#define NCI_PERSONALITY_SLOT_SIZE 19
-#define NCI_DYNAMIC_PIPE_SIZE 8
-
-/* Type of TLV in NCI_MSG_HCI_NETWK */
-#define NCI_SWP_INTERFACE_TYPE 0xFF
-/* Type of TLV in NCI_MSG_HCI_NETWK */
-#define NCI_HCI_GATE_TYPE 0xFE
-
-/* Secure Patch Download definitions (patch type definitions) */
-#define NCI_SPD_TYPE_HEADER 0x00
-#define NCI_SPD_TYPE_SRAM 0x01
-#define NCI_SPD_TYPE_AON 0x02
-#define NCI_SPD_TYPE_PATCH_TABLE 0x03
-#define NCI_SPD_TYPE_SECURE_CONFIG 0x04
-#define NCI_SPD_TYPE_CONTROLLED_CONFIG 0x05
-#define NCI_SPD_TYPE_SIGNATURE 0x06
-#define NCI_SPD_TYPE_SIGCHEK 0x07
-
-/* Secure Patch Download definitions (NCI_SPD_TYPE_HEADER definitions) */
-#define NCI_SPD_HEADER_OFFSET_CHIPVERLEN 0x18
-#define NCI_SPD_HEADER_CHIPVER_LEN 16
-
-/* NVM Type (in GET_PATCH_VERSION RSP) */
-#define NCI_SPD_NVM_TYPE_NONE 0x00
-#define NCI_SPD_NVM_TYPE_EEPROM 0x01
-#define NCI_SPD_NVM_TYPE_UICC 0x02
-
-/**********************************************
- * NCI NFCC proprietary features in octet 3
- **********************************************/
-#define NCI_FEAT_SIGNED_PATCH 0x01000000
-
-/**********************************************
- * NCI Interface Types
- **********************************************/
-#define NCI_INTERFACE_VS_MIFARE 0x80
-#define NCI_INTERFACE_VS_CALYPSO_CE 0x81
-#define NCI_INTERFACE_VS_T2T_CE 0x82 /* for Card Emulation side */
-/* for both Reader/Writer and Card Emulation side */
-#define NCI_INTERFACE_VS_15693 0x83
-#define NCI_INTERFACE_VS_T1T_CE 0x84 /* for Card Emulation side */
-
-/**********************************************
- * NCI Proprietary Parameter IDs
- **********************************************/
-#define NCI_PARAM_ID_LA_FSDI 0xA0
-#define NCI_PARAM_ID_LB_FSDI 0xA1
-#define NCI_PARAM_ID_HOST_LISTEN_MASK 0xA2
-#define NCI_PARAM_ID_CHIP_TYPE 0xA3 /* NFCDEP */
-#define NCI_PARAM_ID_PA_ANTICOLL 0xA4
-#define NCI_PARAM_ID_CONTINUE_MODE 0xA5
-#define NCI_PARAM_ID_LBP 0xA6
-#define NCI_PARAM_ID_T1T_RDR_ONLY 0xA7
-#define NCI_PARAM_ID_LA_SENS_RES 0xA8
-#define NCI_PARAM_ID_PWR_SETTING_BITMAP 0xA9
-#define NCI_PARAM_ID_WI_NTF_ENABLE 0xAA
-#define NCI_PARAM_ID_LN_BITRATE 0xAB /* NFCDEP Listen Bitrate */
-#define NCI_PARAM_ID_LF_BITRATE 0xAC /* FeliCa */
-#define NCI_PARAM_ID_SWP_BITRATE_MASK 0xAD
-#define NCI_PARAM_ID_KOVIO 0xAE
-#define NCI_PARAM_ID_UICC_NTF_TO 0xAF
-#define NCI_PARAM_ID_NFCDEP 0xB0
-#define NCI_PARAM_ID_CLF_REGS_CFG 0xB1
-#define NCI_PARAM_ID_NFCDEP_TRANS_TIME 0xB2
-#define NCI_PARAM_ID_CREDIT_TIMER 0xB3
-#define NCI_PARAM_ID_CORRUPT_RX 0xB4
-#define NCI_PARAM_ID_ISODEP 0xB5
-#define NCI_PARAM_ID_LF_CONFIG 0xB6
-#define NCI_PARAM_ID_I93_DATARATE 0xB7
-#define NCI_PARAM_ID_CREDITS_THRESHOLD 0xB8
-#define NCI_PARAM_ID_TAGSNIFF_CFG 0xB9
-#define NCI_PARAM_ID_PA_FSDI 0xBA /* ISODEP */
-#define NCI_PARAM_ID_PB_FSDI 0xBB /* ISODEP */
-#define NCI_PARAM_ID_FRAME_INTF_RETXN 0xBC
-
-#define NCI_PARAM_ID_UICC_RDR_PRIORITY 0xBD
-#define NCI_PARAM_ID_GUARD_TIME 0xBE
-#define NCI_PARAM_ID_STDCONFIG 0xBF /* dont not use this config item */
-/* dont not use this config item */
-#define NCI_PARAM_ID_PROPCFG 0xC0
-#define NCI_PARAM_ID_MAXTRY2ACTIVATE 0xC1
-#define NCI_PARAM_ID_SWPCFG 0xC2
-#define NCI_PARAM_ID_CLF_LPM_CFG 0xC3
-#define NCI_PARAM_ID_DCLB 0xC4
-#define NCI_PARAM_ID_ACT_ORDER 0xC5
-#define NCI_PARAM_ID_DEP_DELAY_ACT 0xC6
-#define NCI_PARAM_ID_DH_PARITY_CRC_CTL 0xC7
-#define NCI_PARAM_ID_PREINIT_DSP_CFG 0xC8
-#define NCI_PARAM_ID_FW_WORKAROUND 0xC9
-#define NCI_PARAM_ID_RFU_CONFIG 0xCA
-#define NCI_PARAM_ID_EMVCO_ENABLE 0xCB
-#define NCI_PARAM_ID_ANTDRIVER_PARAM 0xCC
-#define NCI_PARAM_ID_PLL325_CFG_PARAM 0xCD
-#define NCI_PARAM_ID_OPNLP_ADPLL_ENABLE 0xCE
-#define NCI_PARAM_ID_CONFORMANCE_MODE 0xCF
-
-#define NCI_PARAM_ID_LPO_ON_OFF_ENABLE 0xD0
-#define NCI_PARAM_ID_FORCE_VANT 0xD1
-#define NCI_PARAM_ID_COEX_CONFIG 0xD2
-#define NCI_PARAM_ID_INTEL_MODE 0xD3
-
-#define NCI_PARAM_ID_AID 0xFF
-
-/**********************************************
- * NCI Parameter ID Lens
- **********************************************/
-#define NCI_PARAM_LEN_PWR_SETTING_BITMAP 3
-#define NCI_PARAM_LEN_HOST_LISTEN_MASK 2
-#define NCI_PARAM_LEN_PLL325_CFG_PARAM 14
-#define NCI_PARAM_LEN_POWER_LEVEL 6
-
-/**********************************************
- * Snooze Mode
- **********************************************/
-#define NFC_SNOOZE_MODE_NONE 0x00 /* Snooze mode disabled */
-#define NFC_SNOOZE_MODE_UART 0x01 /* Snooze mode for UART */
-#define NFC_SNOOZE_MODE_SPI_I2C 0x08 /* Snooze mode for SPI/I2C */
-
-#define NFC_SNOOZE_ACTIVE_LOW 0x00 /* high to low voltage is asserting */
-#define NFC_SNOOZE_ACTIVE_HIGH 0x01 /* low to high voltage is asserting */
-
-/**********************************************
- * HCI definitions
- **********************************************/
-#define NFC_HAL_HCI_SESSION_ID_LEN 8
-#define NFC_HAL_HCI_SYNC_ID_LEN 2
-
-/* HCI Network command definitions */
-#define NFC_HAL_HCI_NETWK_INFO_SIZE 250
-#define NFC_HAL_HCI_NO_RW_MODE_NETWK_INFO_SIZE 184
-#define NFC_HAL_HCI_DH_NETWK_INFO_SIZE 111
-#define NFC_HAL_HCI_MIN_NETWK_INFO_SIZE 12
-#define NFC_HAL_HCI_MIN_DH_NETWK_INFO_SIZE 11
-
-/* Card emulation RF Gate A definitions */
-#define NFC_HAL_HCI_CE_RF_A_UID_REG_LEN 10
-#define NFC_HAL_HCI_CE_RF_A_ATQA_RSP_CODE_LEN 2
-#define NFC_HAL_HCI_CE_RF_A_MAX_HIST_DATA_LEN 15
-#define NFC_HAL_HCI_CE_RF_A_MAX_DATA_RATE_LEN 3
-
-/* Card emulation RF Gate B definitions */
-#define NFC_HAL_HCI_CE_RF_B_PUPI_LEN 4
-#define NFC_HAL_HCI_CE_RF_B_ATQB_LEN 4
-#define NFC_HAL_HCI_CE_RF_B_HIGHER_LAYER_RSP_LEN 61
-#define NFC_HAL_HCI_CE_RF_B_MAX_DATA_RATE_LEN 3
-
-/* Card emulation RF Gate BP definitions */
-#define NFC_HAL_HCI_CE_RF_BP_MAX_PAT_IN_LEN 8
-#define NFC_HAL_HCI_CE_RF_BP_DATA_OUT_LEN 40
-
-/* Reader RF Gate A definitions */
-#define NFC_HAL_HCI_RD_RF_B_HIGHER_LAYER_DATA_LEN 61
-
-/* DH HCI Network command definitions */
-#define NFC_HAL_HCI_DH_MAX_DYN_PIPES 20
-
-/* Target handle for different host in the network */
-#define NFC_HAL_HCI_DH_TARGET_HANDLE 0xF2
-#define NFC_HAL_HCI_UICC0_TARGET_HANDLE 0xF3
-#define NFC_HAL_HCI_UICC1_TARGET_HANDLE 0xF4
-#define NFC_HAL_HCI_UICC2_TARGET_HANDLE 0xF5
-
-/* Card emulation RF Gate A registry information */
-typedef struct {
- uint8_t pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */
- uint8_t mode; /* Type A card emulation enabled indicator, 0x02:enabled */
- uint8_t sak;
- uint8_t uid_reg_len;
- uint8_t uid_reg[NFC_HAL_HCI_CE_RF_A_UID_REG_LEN];
- uint8_t atqa[NFC_HAL_HCI_CE_RF_A_ATQA_RSP_CODE_LEN]; /* ATQA response code */
- uint8_t app_data_len;
- uint8_t
- app_data[NFC_HAL_HCI_CE_RF_A_MAX_HIST_DATA_LEN]; /* 15 bytes optional
- storage for historic
- data, use 2 slots */
- uint8_t fwi_sfgi; /* FRAME WAITING TIME, START-UP FRAME GUARD TIME */
- uint8_t cid_support;
- uint8_t datarate_max[NFC_HAL_HCI_CE_RF_A_MAX_DATA_RATE_LEN];
- uint8_t clt_support;
-} tNCI_HCI_CE_RF_A;
-
-/* Card emulation RF Gate B registry information */
-typedef struct {
- uint8_t pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */
- uint8_t mode; /* Type B card emulation enabled indicator, 0x02:enabled */
- uint8_t pupi_len;
- uint8_t pupi_reg[NFC_HAL_HCI_CE_RF_B_PUPI_LEN];
- uint8_t afi;
- uint8_t
- atqb[NFC_HAL_HCI_CE_RF_B_ATQB_LEN]; /* 4 bytes ATQB application data */
- uint8_t higherlayer_resp
- [NFC_HAL_HCI_CE_RF_B_HIGHER_LAYER_RSP_LEN]; /* 0~ 61 bytes ATRB_INF use
- 1~4 personality slots */
- uint8_t datarate_max[NFC_HAL_HCI_CE_RF_B_MAX_DATA_RATE_LEN];
- uint8_t natrb;
-} tNCI_HCI_CE_RF_B;
-
-/* Card emulation RF Gate BP registry information */
-typedef struct {
- uint8_t pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */
- uint8_t
- mode; /* Type B prime card emulation enabled indicator, 0x02:enabled */
- uint8_t pat_in_len;
- uint8_t pat_in[NFC_HAL_HCI_CE_RF_BP_MAX_PAT_IN_LEN];
- uint8_t dat_out_len;
- uint8_t
- dat_out[NFC_HAL_HCI_CE_RF_BP_DATA_OUT_LEN]; /* ISO7816-3 <=64 byte, and
- other fields are 9 bytes */
- uint8_t natr;
-} tNCI_HCI_CE_RF_BP;
-
-/* Card emulation RF Gate F registry information */
-typedef struct {
- uint8_t pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */
- uint8_t mode; /* Type F card emulation enabled indicator, 0x02:enabled */
- uint8_t speed_cap;
- uint8_t clt_support;
-} tNCI_HCI_CE_RF_F;
-
-/* Reader RF Gate A registry information */
-typedef struct {
- uint8_t pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */
- uint8_t datarate_max;
-} tNCI_HCI_RD_RF_A;
-
-/* Reader RF Gate B registry information */
-typedef struct {
- uint8_t pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */
- uint8_t afi;
- uint8_t hldata_len;
- uint8_t
- high_layer_data[NFC_HAL_HCI_RD_RF_B_HIGHER_LAYER_DATA_LEN]; /* INF field
- in ATTRIB
- command */
-} tNCI_HCI_RD_RF_B;
-
-/* Dynamic pipe information */
-typedef struct {
- uint8_t source_host;
- uint8_t dest_host;
- uint8_t source_gate;
- uint8_t dest_gate;
- uint8_t pipe_id; /* if MSB is set then valid, 7 bits for Pipe ID */
-} tNCI_HCI_DYN_PIPE_INFO;
-
-/*************************************************************
- * HCI Network CMD/NTF structure for UICC host in the network
- *************************************************************/
-typedef struct {
- uint8_t target_handle;
- uint8_t session_id[NFC_HAL_HCI_SESSION_ID_LEN];
- uint8_t sync_id[NFC_HAL_HCI_SYNC_ID_LEN];
- uint8_t static_pipe_info;
- tNCI_HCI_CE_RF_A ce_rf_a;
- tNCI_HCI_CE_RF_B ce_rf_b;
- tNCI_HCI_CE_RF_BP ce_rf_bp;
- tNCI_HCI_CE_RF_F ce_rf_f;
- tNCI_HCI_RD_RF_A rw_rf_a;
- tNCI_HCI_RD_RF_B rw_rf_b;
-} tNCI_HCI_NETWK;
-
-/************************************************
- * HCI Network CMD/NTF structure for Device host
- ************************************************/
-typedef struct {
- uint8_t target_handle;
- uint8_t session_id[NFC_HAL_HCI_SESSION_ID_LEN];
- uint8_t static_pipe_info;
- uint8_t num_dyn_pipes;
- tNCI_HCI_DYN_PIPE_INFO dyn_pipe_info[NFC_HAL_HCI_DH_MAX_DYN_PIPES];
-} tNCI_HCI_NETWK_DH;
-
-#endif /* NFC_BRCM_DEFS_H */
diff --git a/src/hal/int/nfc_hal_int.h b/src/hal/int/nfc_hal_int.h
deleted file mode 100644
index 4298205..0000000
--- a/src/hal/int/nfc_hal_int.h
+++ /dev/null
@@ -1,550 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2009-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * this file contains the NCI transport internal definitions and functions.
- *
- ******************************************************************************/
-
-#ifndef NFC_HAL_INT_H
-#define NFC_HAL_INT_H
-
-#include "gki.h"
-#include "nci_defs.h"
-#include "nfc_brcm_defs.h"
-#include "nfc_hal_api.h"
-#include "nfc_hal_int_api.h"
-#include "nfc_hal_target.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/****************************************************************************
-** NFC HAL TASK transport definitions
-****************************************************************************/
-/* NFC HAL Task event masks */
-#define NFC_HAL_TASK_EVT_DATA_RDY EVENT_MASK(APPL_EVT_0)
-#define NFC_HAL_TASK_EVT_INITIALIZE EVENT_MASK(APPL_EVT_5)
-#define NFC_HAL_TASK_EVT_TERMINATE EVENT_MASK(APPL_EVT_6)
-#define NFC_HAL_TASK_EVT_POWER_CYCLE EVENT_MASK(APPL_EVT_7)
-
-#define NFC_HAL_TASK_EVT_MBOX (TASK_MBOX_0_EVT_MASK)
-
-/* NFC HAL Task mailbox definitions */
-#define NFC_HAL_TASK_MBOX (TASK_MBOX_0)
-
-/* NFC HAL Task Timer events */
-#ifndef NFC_HAL_QUICK_TIMER_EVT_MASK
-#define NFC_HAL_QUICK_TIMER_EVT_MASK (TIMER_0_EVT_MASK)
-#endif
-
-#ifndef NFC_HAL_QUICK_TIMER_ID
-#define NFC_HAL_QUICK_TIMER_ID (TIMER_0)
-#endif
-
-/* NFC HAL Task Timer types */
-#define NFC_HAL_TTYPE_NCI_WAIT_RSP 0
-#define NFC_HAL_TTYPE_POWER_CYCLE 1
-#define NFC_HAL_TTYPE_NFCC_ENABLE 2
-
-/* NFC HAL Task Wait Response flag */
-/* wait response on an NCI command */
-#define NFC_HAL_WAIT_RSP_CMD 0x10
-/* wait response on an NCI vendor specific command */
-#define NFC_HAL_WAIT_RSP_VSC 0x20
-/* wait response on a proprietary command */
-#define NFC_HAL_WAIT_RSP_PROP 0x40
-/* not waiting for anything */
-#define NFC_HAL_WAIT_RSP_NONE 0x00
-
-typedef uint8_t tNFC_HAL_WAIT_RSP;
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
-
-typedef uint16_t tNFC_HAL_HCI_EVT;
-
-#define NFC_HAL_HCI_PIPE_INFO_SIZE 5
-
-#define NFC_HAL_HCI_ANY_SET_PARAMETER 0x01
-#define NFC_HAL_HCI_ANY_GET_PARAMETER 0x02
-#define NFC_HAL_HCI_ADM_NOTIFY_ALL_PIPE_CLEARED 0x15
-
-#define NFC_HAL_HCI_SESSION_IDENTITY_INDEX 0x01
-#define NFC_HAL_HCI_WHITELIST_INDEX 0x03
-
-#define NFC_HAL_HCI_ADMIN_PIPE 0x01
-/* Host ID for UICC 0 */
-#define NFC_HAL_HCI_HOST_ID_UICC0 0x02
-/* Host ID for UICC 1 */
-#define NFC_HAL_HCI_HOST_ID_UICC1 0x03
-/* Host ID for UICC 2 */
-#define NFC_HAL_HCI_HOST_ID_UICC2 0x04
-#define NFC_HAL_HCI_COMMAND_TYPE 0x00
-#define NFC_HAL_HCI_RESPONSE_TYPE 0x02
-
-/* NFC HAL HCI responses */
-#define NFC_HAL_HCI_ANY_OK 0x00
-
-#endif
-
-/* Flag defintions for tNFC_HAL_NVM */
-/* No NVM available */
-#define NFC_HAL_NVM_FLAGS_NO_NVM 0x01
-/* FPM patch in NVM failed CRC check */
-#define NFC_HAL_NVM_FLAGS_LPM_BAD 0x02
-/* LPM patch in NVM failed CRC check */
-#define NFC_HAL_NVM_FLAGS_FPM_BAD 0x04
-/* Patch is present in NVM */
-#define NFC_HAL_NVM_FLAGS_PATCH_PRESENT 0x08
-
-/* NFC HAL transport configuration */
-typedef struct {
- bool shared_transport; /* TRUE if using shared HCI/NCI transport */
- uint8_t userial_baud;
- uint8_t userial_fc;
-} tNFC_HAL_TRANS_CFG;
-
-#ifdef TESTER
-/* For Insight, ncit_cfg is runtime-configurable */
-#define NFC_HAL_TRANS_CFG_QUALIFIER
-#else
-/* For all other platforms, ncit_cfg is constant */
-#define NFC_HAL_TRANS_CFG_QUALIFIER const
-#endif
-extern NFC_HAL_TRANS_CFG_QUALIFIER tNFC_HAL_TRANS_CFG nfc_hal_trans_cfg;
-
-/*****************************************************************************
-* BT HCI definitions
-*****************************************************************************/
-
-/* Tranport message type */
-#define HCIT_TYPE_COMMAND 0x01
-#define HCIT_TYPE_EVENT 0x04
-#define HCIT_TYPE_NFC 0x10
-
-/* Vendor-Specific BT HCI definitions */
-#define HCI_SUCCESS 0x00
-#define HCI_GRP_VENDOR_SPECIFIC (0x3F << 10) /* 0xFC00 */
-#define HCI_BRCM_WRITE_SLEEP_MODE (0x0027 | HCI_GRP_VENDOR_SPECIFIC)
-#define HCI_GRP_HOST_CONT_BASEBAND_CMDS (0x03 << 10) /* 0x0C00 */
-#define HCI_RESET (0x0003 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
-#define HCI_COMMAND_COMPLETE_EVT 0x0E
-#define HCI_BRCM_WRITE_SLEEP_MODE_LENGTH 12
-#define HCI_BRCM_UPDATE_BAUD_RATE_UNENCODED_LENGTH 0x06
-#define HCIE_PREAMBLE_SIZE 2
-#define HCI_BRCM_PRE_SET_MEM (0x000C | HCI_GRP_VENDOR_SPECIFIC)
-#define HCI_BRCM_PRE_SET_MEM_LENGTH 10
-#define HCI_BRCM_PRE_SET_MEM_TYPE 8
-
-/****************************************************************************
-** Internal constants and definitions
-****************************************************************************/
-
-/* NFC HAL receiving states */
-enum {
- NFC_HAL_RCV_IDLE_ST, /* waiting for packet type byte */
- NFC_HAL_RCV_NCI_MSG_ST, /* waiting for the first byte of NCI header */
- NFC_HAL_RCV_NCI_HDR_ST, /* reading NCI header */
- NFC_HAL_RCV_NCI_PAYLOAD_ST, /* reading NCI payload */
- NFC_HAL_RCV_BT_MSG_ST, /* waiting for the first byte of BT header */
- NFC_HAL_RCV_BT_HDR_ST, /* reading BT HCI header */
- NFC_HAL_RCV_BT_PAYLOAD_ST /* reading BT HCI payload */
-};
-
-/* errors during NCI packet reassembly process */
-#define NFC_HAL_NCI_RAS_TOO_BIG 0x01
-#define NFC_HAL_NCI_RAS_ERROR 0x02
-typedef uint8_t tNFC_HAL_NCI_RAS;
-
-/* NFC HAL power mode */
-enum {
- NFC_HAL_POWER_MODE_FULL, /* NFCC is full power mode */
- NFC_HAL_POWER_MODE_LAST
-};
-typedef uint8_t tNFC_HAL_POWER_MODE;
-
-/* NFC HAL event for low power mode */
-enum {
- NFC_HAL_LP_TX_DATA_EVT, /* DH is sending data to NFCC */
- NFC_HAL_LP_RX_DATA_EVT, /* DH received data from NFCC */
- NFC_HAL_LP_TIMEOUT_EVT, /* Timeout */
- NFC_HAL_LP_LAST_EVT
-};
-typedef uint8_t tNFC_HAL_LP_EVT;
-
-#define NFC_HAL_ASSERT_NFC_WAKE 0x00 /* assert NFC_WAKE */
-#define NFC_HAL_DEASSERT_NFC_WAKE 0x01 /* deassert NFC_WAKE */
-
-#define NFC_HAL_BT_HCI_CMD_HDR_SIZE 3 /* opcode (2) + length (1) */
-#define NFC_HAL_CMD_TOUT (2000) /* timeout for NCI CMD (in ms) */
-
-#define NFC_HAL_SAVED_HDR_SIZE (2)
-#define NFC_HAL_SAVED_CMD_SIZE (2)
-
-#ifndef NFC_HAL_DEBUG
-#define NFC_HAL_DEBUG TRUE
-#endif
-
-#if (NFC_HAL_DEBUG == TRUE)
-extern const char* const nfc_hal_init_state_str[];
-#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;
-#else
-#define NFC_HAL_SET_INIT_STATE(state) \
- nfc_hal_cb.dev_cb.initializing_state = state;
-#endif
-
-/* NFC HAL - NFCC initializing state */
-enum {
- NFC_HAL_INIT_STATE_IDLE, /* Initialization is done */
- NFC_HAL_INIT_STATE_W4_XTAL_SET, /* Waiting for crystal setting rsp */
- NFC_HAL_INIT_STATE_POST_XTAL_SET, /* Waiting for reset ntf after xtal set */
- NFC_HAL_INIT_STATE_W4_NFCC_ENABLE, /* Waiting for reset ntf atter REG_PU up */
- NFC_HAL_INIT_STATE_W4_BUILD_INFO, /* Waiting for build info rsp */
- NFC_HAL_INIT_STATE_W4_PATCH_INFO, /* Waiting for patch info rsp */
- NFC_HAL_INIT_STATE_W4_APP_COMPLETE, /* Waiting for complete from application
- */
- NFC_HAL_INIT_STATE_W4_POST_INIT_DONE, /* Waiting for complete of post init */
- NFC_HAL_INIT_STATE_W4_CONTROL_DONE, /* Waiting for control release */
- NFC_HAL_INIT_STATE_W4_PREDISCOVER_DONE, /* Waiting for complete of prediscover
- */
- NFC_HAL_INIT_STATE_W4_NFCC_TURN_OFF, /* Waiting for NFCC to turn OFF */
- NFC_HAL_INIT_STATE_CLOSING /* Shutting down */
-};
-typedef uint8_t tNFC_HAL_INIT_STATE;
-
-/* NFC HAL - NFCC config items during post initialization */
-enum {
- NFC_HAL_DM_CONFIG_LPTD,
- NFC_HAL_DM_CONFIG_PLL_325,
- NFC_HAL_DM_CONFIG_START_UP,
- NFC_HAL_DM_CONFIG_I93_DATA_RATE,
- NFC_HAL_DM_CONFIG_FW_FSM,
- NFC_HAL_DM_CONFIG_START_UP_VSC,
- NFC_HAL_DM_CONFIG_NONE
-};
-typedef uint8_t tNFC_HAL_DM_CONFIG;
-
-/* callback function prototype */
-typedef struct {
- uint16_t opcode;
- uint16_t param_len;
- uint8_t* p_param_buf;
-} tNFC_HAL_BTVSC_CPLT;
-
-typedef void(tNFC_HAL_BTVSC_CPLT_CBACK)(tNFC_HAL_BTVSC_CPLT* p1);
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
-
-/* data type for NFC_HAL_HCI_RSP_NV_READ_EVT */
-typedef struct {
- NFC_HDR hdr;
- uint8_t block;
- uint16_t size;
- tHAL_NFC_STATUS status;
-} tNFC_HAL_HCI_RSP_NV_READ_EVT;
-
-/* data type for NFC_HAL_HCI_RSP_NV_WRITE_EVT */
-typedef struct {
- NFC_HDR hdr;
- tHAL_NFC_STATUS status;
-} tNFC_HAL_HCI_RSP_NV_WRITE_EVT;
-
-/* union of all event data types */
-typedef union {
- NFC_HDR hdr;
- /* Internal events */
- tNFC_HAL_HCI_RSP_NV_READ_EVT nv_read;
- tNFC_HAL_HCI_RSP_NV_WRITE_EVT nv_write;
-} tNFC_HAL_HCI_EVENT_DATA;
-
-#endif
-/*****************************************************************************
-** Control block for NFC HAL
-*****************************************************************************/
-
-/* Patch RAM Download Control block */
-
-/* PRM states */
-enum {
- NFC_HAL_PRM_ST_IDLE,
-
- /* Secure patch download stated */
- NFC_HAL_PRM_ST_SPD_COMPARE_VERSION,
- NFC_HAL_PRM_ST_SPD_GET_PATCH_HEADER,
- NFC_HAL_PRM_ST_SPD_DOWNLOADING,
- NFC_HAL_PRM_ST_SPD_AUTHENTICATING,
- NFC_HAL_PRM_ST_SPD_AUTH_DONE,
- NFC_HAL_PRM_ST_W4_GET_VERSION
-};
-typedef uint8_t tNFC_HAL_PRM_STATE;
-
-/* Maximum number of patches (currently 2: LPM and FPM) */
-#define NFC_HAL_PRM_MAX_PATCH_COUNT 2
-#define NFC_HAL_PRM_PATCH_MASK_ALL 0xFFFFFFFF
-#define NFC_HAL_PRM_MAX_CHIP_VER_LEN 8
-
-/* Structures for PRM Control Block */
-typedef struct {
- uint8_t power_mode;
- uint16_t len;
-} tNFC_HAL_PRM_PATCHDESC;
-
-typedef struct {
- tNFC_HAL_PRM_STATE state; /* download state */
- uint32_t flags; /* internal flags */
- uint16_t
- cur_patch_len_remaining; /* bytes remaining in patchfile to process */
- const uint8_t*
- p_cur_patch_data; /* pointer to patch currently being downloaded */
- uint16_t cur_patch_offset; /* offset of next byte to process */
- uint32_t dest_ram;
- TIMER_LIST_ENT timer; /* Timer for patch download */
- void* p_param; /* general purpose param for PRM */
- uint8_t param_idx; /* information related to general purpose param*/
-
- /* Secure Patch Download */
- uint32_t
- spd_patch_needed_mask; /* Mask of patches that need to be downloaded */
- uint8_t spd_patch_count; /* Number of patches left to download */
- uint8_t spd_cur_patch_idx; /* Current patch being downloaded */
-
- tNFC_HAL_PRM_PATCHDESC spd_patch_desc[NFC_HAL_PRM_MAX_PATCH_COUNT];
-
- /* I2C-patch */
- uint8_t* p_spd_patch; /* pointer to spd patch */
- uint16_t spd_patch_len_remaining; /* patch length */
- uint16_t spd_patch_offset; /* offset of next byte to process */
-
- tNFC_HAL_PRM_FORMAT format; /* format of patch ram */
- tNFC_HAL_PRM_CBACK* p_cback; /* Callback for download status notifications */
- uint32_t patchram_delay; /* the dealy after patch */
-} tNFC_HAL_PRM_CB;
-
-/* Information about current patch in NVM */
-typedef struct {
- uint16_t project_id; /* Current project_id of patch in nvm */
- uint16_t ver_major; /* Current major version of patch in nvm */
- uint16_t ver_minor; /* Current minor version of patch in nvm */
- uint16_t fpm_size; /* Current size of FPM patch in nvm */
- uint16_t lpm_size; /* Current size of LPM patch in nvm */
- uint8_t flags; /* See NFC_HAL_NVM_FLAGS_* flag definitions */
- uint8_t nvm_type; /* Current NVM Type - UICC/EEPROM */
- uint8_t chip_ver[NFC_HAL_PRM_MAX_CHIP_VER_LEN]; /* patch chip version */
-} tNFC_HAL_NVM;
-
-/* Patch for I2C fix */
-typedef struct {
- uint8_t* p_patch; /* patch for i2c fix */
- uint32_t prei2c_delay; /* the dealy after preI2C patch */
- uint16_t len; /* i2c patch length */
-} tNFC_HAL_PRM_I2C_FIX_CB;
-
-/* Control block for NCI transport */
-typedef struct {
- uint8_t nci_ctrl_size; /* Max size for NCI messages */
- uint8_t rcv_state; /* current rx state */
- uint16_t rcv_len; /* bytes remaining to be received in current rx state */
- NFC_HDR* p_rcv_msg; /* buffer to receive NCI message */
- NFC_HDR* p_frag_msg; /* fragmented NCI message; waiting for last fragment */
- NFC_HDR*
- p_pend_cmd; /* pending NCI message; waiting for NFCC state to be free */
- tNFC_HAL_NCI_RAS nci_ras; /* nci reassembly error status */
- TIMER_LIST_ENT
- nci_wait_rsp_timer; /* Timer for waiting for nci command response */
- tNFC_HAL_WAIT_RSP nci_wait_rsp; /* nci wait response flag */
- uint8_t
- last_hdr[NFC_HAL_SAVED_HDR_SIZE]; /* part of last NCI command header */
- uint8_t
- last_cmd[NFC_HAL_SAVED_CMD_SIZE]; /* part of last NCI command payload */
- void* p_vsc_cback; /* the callback function for last VSC command */
-} tNFC_HAL_NCIT_CB;
-
-/* Control block for device initialization */
-typedef struct {
- tNFC_HAL_INIT_STATE initializing_state; /* state of initializing NFCC */
-
- uint32_t brcm_hw_id; /* BRCM NFCC HW ID */
- tNFC_HAL_DM_CONFIG next_dm_config; /* next config in post initialization */
- uint8_t next_startup_vsc; /* next start-up VSC offset in post init */
-
- tNFC_HAL_POWER_MODE power_mode; /* NFCC power mode */
- uint8_t snooze_mode; /* current snooze mode */
- uint8_t new_snooze_mode; /* next snooze mode after receiving cmpl */
- uint8_t nfc_wake_active_mode; /* NFC_HAL_LP_ACTIVE_LOW/HIGH */
- TIMER_LIST_ENT lp_timer; /* timer for low power mode */
-
- tHAL_NFC_STATUS_CBACK*
- p_prop_cback; /* callback to notify complete of proprietary update */
-} tNFC_HAL_DEV_CB;
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
-
-/* data members for NFC_HAL-HCI */
-typedef struct {
- TIMER_LIST_ENT
- hci_timer; /* Timer to avoid indefinitely waiting for response */
- uint8_t*
- p_hci_netwk_info_buf; /* Buffer for reading HCI Network information */
- uint8_t* p_hci_netwk_dh_info_buf; /* Buffer for reading HCI Network DH
- information */
- uint8_t hci_netwk_config_block; /* Rsp awaiting for hci network configuration
- block */
- bool b_wait_hcp_conn_create_rsp; /* Waiting for hcp connection create response
- */
- bool clear_all_pipes_to_uicc1; /* UICC1 was restarted for patch download */
- bool update_session_id; /* Next response from NFCC is to Get Session id cmd */
- bool hci_fw_workaround; /* HAL HCI Workaround need */
- bool hci_fw_validate_netwk_cmd; /* Flag to indicate if hci network ntf to
- validate */
- uint8_t hcp_conn_id; /* NCI Connection id for HCP */
- uint8_t dh_session_id[1]; /* Byte 0 of DH Session ID */
-} tNFC_HAL_HCI_CB;
-
-#endif
-
-#define NFC_HAL_FLAGS_NEED_DISABLE_VSC 0x01
-typedef uint8_t tNFC_HAL_FLAGS;
-
-typedef struct {
- tHAL_NFC_CBACK* p_stack_cback; /* Callback for HAL event notification */
- tHAL_NFC_DATA_CBACK* p_data_cback; /* Callback for data event notification */
-
- TIMER_LIST_Q quick_timer_queue; /* timer list queue */
- TIMER_LIST_ENT timer; /* timer for NCI transport task */
-
- tNFC_HAL_NCIT_CB ncit_cb; /* NCI transport */
- tNFC_HAL_DEV_CB dev_cb; /* device initialization */
- tNFC_HAL_NVM nvm_cb; /* Information about current patch in NVM */
-
- /* Patchram control block */
- tNFC_HAL_PRM_CB prm;
- tNFC_HAL_PRM_I2C_FIX_CB prm_i2c;
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
- /* data members for NFC_HAL-HCI */
- tNFC_HAL_HCI_CB hci_cb;
-#endif
-
- uint8_t pre_discover_done; /* TRUE, when the prediscover config is complete */
- tNFC_HAL_FLAGS hal_flags;
- uint8_t pre_set_mem_idx;
-
- uint8_t max_rf_credits; /* NFC Max RF data credits */
- uint8_t max_ee; /* NFC Max number of NFCEE supported by NFCC */
- uint8_t trace_level; /* NFC HAL trace level */
-} tNFC_HAL_CB;
-
-/* Global NCI data */
-extern tNFC_HAL_CB nfc_hal_cb;
-
-extern uint8_t* p_nfc_hal_pre_discover_cfg;
-
-/****************************************************************************
-** Internal nfc functions
-****************************************************************************/
-
-/* From nfc_hal_main.c */
-uint32_t nfc_hal_main_task(uint32_t param);
-void nfc_hal_main_init(void);
-void nfc_hal_main_close(void);
-void nfc_hal_main_pre_init_done(tHAL_NFC_STATUS);
-void nfc_hal_main_exit_op_done(tNFC_HAL_NCI_EVT event, uint16_t data_len,
- uint8_t* p_data);
-void nfc_hal_main_start_quick_timer(TIMER_LIST_ENT* p_tle, uint16_t type,
- uint32_t timeout);
-void nfc_hal_main_stop_quick_timer(TIMER_LIST_ENT* p_tle);
-void nfc_hal_main_send_error(tHAL_NFC_STATUS status);
-void nfc_hal_send_nci_msg_to_nfc_task(NFC_HDR* p_msg);
-
-/* nfc_hal_nci.c */
-bool nfc_hal_nci_receive_msg(uint8_t byte);
-bool nfc_hal_nci_preproc_rx_nci_msg(NFC_HDR* p_msg);
-NFC_HDR* nfc_hal_nci_postproc_rx_nci_msg(void);
-void nfc_hal_nci_assemble_nci_msg(void);
-void nfc_hal_nci_add_nfc_pkt_type(NFC_HDR* p_msg);
-void nfc_hal_nci_send_cmd(NFC_HDR* p_buf);
-void nfc_hal_nci_cmd_timeout_cback(void* p_tle);
-
-/* nfc_hal_dm.c */
-void nfc_hal_dm_init(void);
-void nfc_hal_dm_set_xtal_freq_index(void);
-void nfc_hal_dm_set_power_level_zero(void);
-void nfc_hal_dm_send_get_build_info_cmd(void);
-void nfc_hal_dm_proc_msg_during_init(NFC_HDR* p_msg);
-void nfc_hal_dm_proc_msg_during_exit(NFC_HDR* p_msg);
-void nfc_hal_dm_config_nfcc(void);
-void nfc_hal_dm_send_nci_cmd(const uint8_t* p_data, uint16_t len,
- tNFC_HAL_NCI_CBACK* p_cback);
-void nfc_hal_dm_send_bt_cmd(const uint8_t* p_data, uint16_t len,
- tNFC_HAL_BTVSC_CPLT_CBACK* p_cback);
-void nfc_hal_dm_set_nfc_wake(uint8_t cmd);
-void nfc_hal_dm_pre_init_nfcc(void);
-void nfc_hal_dm_shutting_down_nfcc(void);
-bool nfc_hal_dm_power_mode_execute(tNFC_HAL_LP_EVT event);
-void nfc_hal_dm_send_pend_cmd(void);
-tHAL_NFC_STATUS nfc_hal_dm_set_config(uint8_t tlv_size, uint8_t* p_param_tlvs,
- tNFC_HAL_NCI_CBACK* p_cback);
-bool nfc_hal_dm_check_pre_set_mem(void);
-tNFC_HAL_NCI_CBACK* nfc_hal_dm_got_vs_rsp(void);
-
-/* nfc_hal_prm.c */
-void nfc_hal_prm_spd_reset_ntf(uint8_t reset_reason, uint8_t reset_type);
-void nfc_hal_prm_nci_command_complete_cback(tNFC_HAL_NCI_EVT event,
- uint16_t data_len, uint8_t* p_data);
-void nfc_hal_prm_process_timeout(void* p_tle);
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
-/* nfc_hal_hci.c */
-void nfc_hal_hci_enable(void);
-void nfc_hal_hci_evt_hdlr(tNFC_HAL_HCI_EVENT_DATA* p_evt_data);
-void nfc_hal_hci_handle_hci_netwk_info(uint8_t* p_data);
-void nfc_hal_hci_handle_hcp_pkt_from_hc(uint8_t* p_data);
-NFC_HDR* nfc_hal_hci_postproc_hcp(void);
-bool nfc_hal_hci_handle_hcp_pkt_to_hc(uint8_t* p_data);
-void nfc_hal_hci_timeout_cback(void* p_tle);
-void nfc_hal_hci_handle_build_info(uint8_t chipverlen, uint8_t* p_chipverstr);
-#else
-#define nfc_hal_hci_enable() NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
-#define nfc_hal_hci_handle_build_info(p, a)
-#define nfc_hal_hci_evt_hdlr(p) ;
-#endif
-
-/* Define default NCI protocol trace function (if protocol tracing is enabled)
- */
-#if (NFC_HAL_TRACE_PROTOCOL == TRUE)
-#if !defined(DISP_NCI)
-#define DISP_NCI (DispNci)
-void DispNci(uint8_t* p, uint16_t len, bool is_recv);
-#endif /* DISP_NCI */
-
-/* For displaying vendor-specific HCI commands */
-void DispHciCmd(NFC_HDR* p_buf);
-void DispHciEvt(NFC_HDR* p_buf);
-#endif /* NFC_HAL_TRACE_PROTOCOL */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* NFC_HAL_INT_H */
diff --git a/src/hal/int/nfc_hal_int_api.h b/src/hal/int/nfc_hal_int_api.h
deleted file mode 100644
index ffaf81a..0000000
--- a/src/hal/int/nfc_hal_int_api.h
+++ /dev/null
@@ -1,307 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2009-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Internal NFC HAL API functions.
- *
- ******************************************************************************/
-#ifndef NFC_HAL_INT_API_H
-#define NFC_HAL_INT_API_H
-
-/****************************************************************************
-** Device Configuration definitions
-****************************************************************************/
-
-#define NFC_HAL_PLL_325_SETCONFIG_PARAM_LEN (2 + NCI_PARAM_LEN_PLL325_CFG_PARAM)
-
-/* Crystal Frequency Index (in 1 KHz) */
-enum {
- NFC_HAL_XTAL_INDEX_9600,
- NFC_HAL_XTAL_INDEX_13000,
- NFC_HAL_XTAL_INDEX_16200,
- NFC_HAL_XTAL_INDEX_19200,
- NFC_HAL_XTAL_INDEX_24000,
- NFC_HAL_XTAL_INDEX_26000,
- NFC_HAL_XTAL_INDEX_38400,
- NFC_HAL_XTAL_INDEX_52000,
- NFC_HAL_XTAL_INDEX_37400,
- NFC_HAL_XTAL_INDEX_MAX,
- NFC_HAL_XTAL_INDEX_SPECIAL = 0xFF
-};
-typedef uint8_t tNFC_HAL_XTAL_INDEX;
-
-/* Broadcom specific device initialization before sending NCI reset */
-
-typedef struct {
- uint32_t brcm_hw_id;
- uint16_t xtal_freq;
- uint8_t xtal_index;
-} tNFC_HAL_DEV_INIT_XTAL_CFG;
-
-#define NFC_HAL_DEV_INIT_MAX_XTAL_CFG 5
-
-typedef struct {
- uint8_t num_xtal_cfg;
- tNFC_HAL_DEV_INIT_XTAL_CFG xtal_cfg[NFC_HAL_DEV_INIT_MAX_XTAL_CFG];
-} tNFC_HAL_DEV_INIT_CFG;
-
-/*****************************************************************************
-** Low Power Mode definitions
-*****************************************************************************/
-
-/* Snooze mode disabled */
-#define NFC_HAL_LP_SNOOZE_MODE_NONE NFC_SNOOZE_MODE_NONE
-/* Snooze mode for UART */
-#define NFC_HAL_LP_SNOOZE_MODE_UART NFC_SNOOZE_MODE_UART
-/* Snooze mode for SPI/I2C */
-#define NFC_HAL_LP_SNOOZE_MODE_SPI_I2C NFC_SNOOZE_MODE_SPI_I2C
-
-/* high to low voltage is asserting */
-#define NFC_HAL_LP_ACTIVE_LOW NFC_SNOOZE_ACTIVE_LOW
-/* low to high voltage is asserting */
-#define NFC_HAL_LP_ACTIVE_HIGH NFC_SNOOZE_ACTIVE_HIGH
-
-/*****************************************************************************
-** Patch RAM Constants
-*****************************************************************************/
-
-/* patch format type */
-#define NFC_HAL_PRM_FORMAT_BIN 0x00
-#define NFC_HAL_PRM_FORMAT_HCD 0x01
-#define NFC_HAL_PRM_FORMAT_NCD 0x02
-typedef uint8_t tNFC_HAL_PRM_FORMAT;
-
-/*****************************************************************************
-** Patch RAM Callback for event notificaton
-*****************************************************************************/
-/* Events for tNFC_HAL_PRM_CBACK */
-enum {
- NFC_HAL_PRM_CONTINUE_EVT,
- NFC_HAL_PRM_COMPLETE_EVT,
- NFC_HAL_PRM_ABORT_EVT,
- NFC_HAL_PRM_ABORT_INVALID_PATCH_EVT, /* Patch is invalid (bad version, project
- id, or chip) */
- NFC_HAL_PRM_ABORT_BAD_SIGNATURE_EVT, /* Patch has invalid signature */
- NFC_HAL_PRM_SPD_GET_PATCHFILE_HDR_EVT, /* Secure Patch Download: request for
- patchfile header */
- NFC_HAL_PRM_SPD_GET_NEXT_PATCH, /* Get first command of next patch in
- patchfile */
- NFC_HAL_PRM_ABORT_NO_NVM_EVT /* nfc_hal_prm_nvm_required is TRUE and NVM is
- unavail */
-};
-
-typedef void(tNFC_HAL_PRM_CBACK)(uint8_t event);
-
-typedef uint8_t tNFC_HAL_NCI_EVT; /* MT + Opcode */
-typedef void(tNFC_HAL_NCI_CBACK)(tNFC_HAL_NCI_EVT event, uint16_t data_len,
- uint8_t* p_data);
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*******************************************************************************
-**
-** Function HAL_NfcPreInitDone
-**
-** Description Notify that pre-initialization of NFCC is complete
-**
-** Returns void
-**
-*******************************************************************************/
-void HAL_NfcPreInitDone(tHAL_NFC_STATUS status);
-
-/*******************************************************************************
-**
-** Function HAL_NfcReInit
-**
-** Description This function is called to restart initialization after
-** REG_PU toggled because of failure to detect NVM type or
-** download patchram.
-**
-** Note This function should be called only during the HAL init
-** process
-**
-** Returns HAL_NFC_STATUS_OK if successfully initiated
-** HAL_NFC_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-tHAL_NFC_STATUS HAL_NfcReInit(void);
-
-/*******************************************************************************
-**
-** Function HAL_NfcSetSnoozeMode
-**
-** Description Set snooze mode
-** snooze_mode
-** NFC_HAL_LP_SNOOZE_MODE_NONE - Snooze mode disabled
-** NFC_HAL_LP_SNOOZE_MODE_UART - Snooze mode for UART
-** NFC_HAL_LP_SNOOZE_MODE_SPI_I2C - Snooze mode for SPI/I2C
-**
-** idle_threshold_dh/idle_threshold_nfcc
-** Idle Threshold Host in 100ms unit
-**
-** nfc_wake_active_mode/dh_wake_active_mode
-** NFC_HAL_LP_ACTIVE_LOW - high to low voltage is asserting
-** NFC_HAL_LP_ACTIVE_HIGH - low to high voltage is
-** asserting
-**
-** p_snooze_cback
-** Notify status of operation
-**
-** Returns tHAL_NFC_STATUS
-**
-*******************************************************************************/
-tHAL_NFC_STATUS HAL_NfcSetSnoozeMode(uint8_t snooze_mode,
- uint8_t idle_threshold_dh,
- uint8_t idle_threshold_nfcc,
- uint8_t nfc_wake_active_mode,
- uint8_t dh_wake_active_mode,
- tHAL_NFC_STATUS_CBACK* p_snooze_cback);
-
-/*******************************************************************************
-**
-** Function HAL_NfcPrmDownloadStart
-**
-** Description Initiate patch download
-**
-** Input Params
-** format_type patch format type
-** (NFC_HAL_PRM_FORMAT_BIN,
-** NFC_HAL_PRM_FORMAT_HCD, or
-** NFC_HAL_PRM_FORMAT_NCD)
-**
-** dest_address destination adderess (needed for BIN format
-** only)
-**
-** p_patchram_buf pointer to patchram buffer. If NULL, then
-** app must call HAL_NfcPrmDownloadContinue
-** when NFC_HAL_PRM_CONTINUE_EVT is received,
-** to send the next segment of patchram
-**
-** patchram_len size of p_patchram_buf (if non-NULL)
-**
-** patchram_delay The delay after each patch.
-** If the given value is less than the size of
-** the patchram, the size of patchram is used
-** instead.
-**
-** p_cback callback for download status
-**
-**
-** Returns TRUE if successful, otherwise FALSE
-**
-**
-*******************************************************************************/
-bool HAL_NfcPrmDownloadStart(tNFC_HAL_PRM_FORMAT format_type,
- uint32_t dest_address, uint8_t* p_patchram_buf,
- uint32_t patchram_len, uint32_t patchram_delay,
- tNFC_HAL_PRM_CBACK* p_cback);
-
-/*******************************************************************************
-**
-** Function HAL_NfcPrmDownloadContinue
-**
-** Description Send next segment of patchram to controller. Called when
-** NFC_HAL_PRM_CONTINUE_EVT is received.
-**
-** Only needed if HAL_NfcPrmDownloadStart was called with
-** p_patchram_buf=NULL
-**
-** Input Params p_patch_data pointer to patch data
-** patch_data_len patch data len
-**
-** Returns TRUE if successful, otherwise FALSE
-**
-*******************************************************************************/
-bool HAL_NfcPrmDownloadContinue(uint8_t* p_patch_data, uint16_t patch_data_len);
-
-/*******************************************************************************
-**
-** Function HAL_NfcPrmSetI2cPatch
-**
-** Description Specify patchfile for BCM20791B3 I2C fix. This fix
-** must be downloaded prior to initial patch download for I2C
-** transport
-**
-** Input Params p_i2c_patchfile_buf: pointer to patch for i2c fix
-** i2c_patchfile_len: length of patch
-** prei2c_delay: the delay before downloading main patch
-** if 0 is given, NFC_HAL_PRM_POST_I2C_FIX_DELAY
-** is used instead.
-**
-** Returns Nothing
-**
-**
-*******************************************************************************/
-void HAL_NfcPrmSetI2cPatch(uint8_t* p_i2c_patchfile_buf,
- uint16_t i2c_patchfile_len, uint32_t prei2c_delay);
-
-/*******************************************************************************
-**
-** Function HAL_NfcPrmSetSpdNciCmdPayloadSize
-**
-** Description Set Host-to-NFCC NCI message size for secure patch download
-**
-** This API must be called before calling
-** HAL_NfcPrmDownloadStart. If the API is not called, then PRM
-** will use the default message size.
-**
-** Typically, this API is only called for platforms that have
-** message-size limitations in the transport/driver.
-**
-** Valid message size range:
-** NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE to 255.
-**
-** Returns HAL_NFC_STATUS_OK if successful
-** HAL_NFC_STATUS_FAILED otherwise
-**
-**
-*******************************************************************************/
-tHAL_NFC_STATUS HAL_NfcPrmSetSpdNciCmdPayloadSize(uint8_t max_payload_size);
-
-/*******************************************************************************
-**
-** Function HAL_NfcSetMaxRfDataCredits
-**
-** Description This function sets the maximum RF data credit for HAL.
-** If 0, use the value reported from NFCC.
-**
-** Returns none
-**
-*******************************************************************************/
-void HAL_NfcSetMaxRfDataCredits(uint8_t max_credits);
-
-/*******************************************************************************
-**
-** Function HAL_NfcSetTraceLevel
-**
-** Description This function sets the trace level for HAL. If called with
-** a value of 0xFF, it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-uint8_t HAL_NfcSetTraceLevel(uint8_t new_level);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* NFC_HAL_INT_API_H */
diff --git a/src/hal/int/nfc_hal_nv_ci.h b/src/hal/int/nfc_hal_nv_ci.h
deleted file mode 100644
index 0a98edf..0000000
--- a/src/hal/int/nfc_hal_nv_ci.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2003-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * This is the interface file for non valtile memory call-in functions.
- *
- ******************************************************************************/
-#ifndef NFC_HAL_NV_CI_H
-#define NFC_HAL_NV_CI_H
-
-#include "nfc_hal_target.h"
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
-
-#include "nfc_hal_nv_co.h"
-
-/*****************************************************************************
-** Function Declarations
-*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*******************************************************************************
-**
-** Function nfc_hal_nv_ci_write
-**
-** Description This function sends an event to NFAA indicating the phone
-** has written the number of bytes specified in the call-out
-** function, nfa_nv_co_write (), and is ready for more data.
-** This function is used to control the TX data flow.
-** Note: The data buffer is released by the stack aioer
-** calling this function.
-**
-** Parameters status - NFA_NV_CO_OK, NFA_NV_CO_NOSPACE, or NFA_NV_CO_FAIL
-** evt - Used Internally by NFA -> MUST be same value passed
-** in call-out function.
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_nv_ci_write(tNFC_HAL_NV_CO_STATUS status);
-
-/*******************************************************************************
-**
-** Function nfc_hal_nv_ci_read
-**
-** Description This function sends an event to NCIT indicating the phone
-** has read in the requested amount of data specified in the
-** nfa_nv_co_read () call-out function. It should only be
-** called when the requested number of bytes has been read.
-**
-** Parameters num_bytes_read - number of bytes read into the buffer
-** specified in the read callout-function.
-** status - NFC_HAL_NV_CO_OK if full buffer of data,
-** NFC_HAL_NV_CO_EOF if the end of file has been
-** reached,
-** NFC_HAL_NV_CO_FAIL if an error has occurred.
-** evt - Used Internally by NFA -> MUST be same value passed
-** in call-out function.
-**
-** Returns void
-**
-*******************************************************************************/
-void nfc_hal_nv_ci_read(uint16_t num_bytes_read, tNFC_HAL_NV_CO_STATUS status,
- uint8_t block);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* NFC_HAL_HCI_INCLUDED */
-
-#endif /* NFC_HAL_NV_CI_H */
diff --git a/src/hal/int/nfc_hal_nv_co.h b/src/hal/int/nfc_hal_nv_co.h
deleted file mode 100644
index 2891c27..0000000
--- a/src/hal/int/nfc_hal_nv_co.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2003-2014 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * This is the interface file for storing nv data
- *
- ******************************************************************************/
-#ifndef NFC_HAL_NV_CO_H
-#define NFC_HAL_NV_CO_H
-
-#include "nfc_hal_target.h"
-
-#if (NFC_HAL_HCI_INCLUDED == TRUE)
-
-#include <time.h>
-
-/*****************************************************************************
-** Constants and Data Types
-*****************************************************************************/
-
-/**************************
-** Common Definitions
-***************************/
-
-/* Status codes returned by call-out functions, or in call-in functions as
- * status */
-#define NFC_HAL_NV_CO_OK 0x00
-#define NFC_HAL_NV_CO_FAIL 0x01 /* Used to pass all other errors */
-#define NFC_HAL_NV_CO_EACCES 0x02
-#define NFC_HAL_NV_CO_ENOTEMPTY 0x03
-#define NFC_HAL_NV_CO_EOF 0x04
-#define NFC_HAL_NV_CO_EODIR 0x05
-/* Returned in nfa_nv_ci_open if no room */
-#define NFC_HAL_NV_CO_ENOSPACE 0x06
-#define NFC_HAL_NV_CO_EIS_DIR 0x07
-#define NFC_HAL_NV_CO_RESUME 0x08 /* used in nfa_nv_ci_open, on resume */
-/* used in nfa_nv_ci_open, on resume (no file to resume) */
-#define NFC_HAL_NV_CO_NONE 0x09
-
-typedef uint8_t tNFC_HAL_NV_CO_STATUS;
-
-#define DH_NV_BLOCK 0x01
-#define HC_F3_NV_BLOCK 0x02
-#define HC_F4_NV_BLOCK 0x03
-#define HC_F2_NV_BLOCK 0x04
-#define HC_F5_NV_BLOCK 0x05
-
-/*****************************************************************************
-** Function Declarations
-*****************************************************************************/
-/**************************
-** Common Functions
-***************************/
-
-/*******************************************************************************
-**
-** Function nfc_hal_nv_co_read
-**
-** Description This function is called by NFA to read in data from the
-** previously opened file.
-**
-** Parameters p_buf - buffer to read the data into.
-** nbytes - number of bytes to read into the buffer.
-**
-** Returns void
-**
-** Note: Upon completion of the request, nfa_nv_ci_read () is
-** called with the buffer of data, along with the number
-** of bytes read into the buffer, and a status. The
-** call-in function should only be called when ALL
-** requested bytes have been read, the end of file has
-** been detected, or an error has occurred.
-**
-*******************************************************************************/
-void nfc_hal_nv_co_read(uint8_t* p_buf, uint16_t nbytes, uint8_t block);
-
-/*******************************************************************************
-**
-** Function nfc_hal_nv_co_write
-**
-** Description This function is called by io to send file data to the
-** phone.
-**
-** Parameters p_buf - buffer to read the data from.
-** nbytes - number of bytes to write out to the file.
-**
-** Returns void
-**
-** Note: Upon completion of the request, nfa_nv_ci_write () is
-** called with the file descriptor and the status. The
-** call-in function should only be called when ALL
-** requested bytes have been written, or an error has
-** been detected,
-**
-*******************************************************************************/
-void nfc_hal_nv_co_write(const uint8_t* p_buf, uint16_t nbytes, uint8_t block);
-
-#endif /* NFC_HAL_HCI_INCLUDED */
-#endif /* NFC_HAL_NV_CO_H */
diff --git a/src/include/CrcChecksum.h b/src/include/CrcChecksum.h
index f3154f2..ffbc9a7 100644
--- a/src/include/CrcChecksum.h
+++ b/src/include/CrcChecksum.h
@@ -19,10 +19,6 @@
#include <stdbool.h>
-#ifdef __cplusplus
-extern "C" {
-#endif
-
/*******************************************************************************
**
** Function crcChecksumCompute
@@ -45,7 +41,3 @@
**
*******************************************************************************/
bool crcChecksumVerifyIntegrity(const char* filename);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/src/include/NfcAdaptation.h b/src/include/NfcAdaptation.h
index 606f66b..cf1054e 100644
--- a/src/include/NfcAdaptation.h
+++ b/src/include/NfcAdaptation.h
@@ -18,6 +18,7 @@
#pragma once
#include <pthread.h>
+#include "config.h"
#include "nfc_hal_api.h"
#include "nfc_target.h"
@@ -30,6 +31,10 @@
struct INfc;
struct INfcClientCallback;
}
+namespace V1_1 {
+struct INfc;
+struct INfcClientCallback;
+}
}
}
}
@@ -77,9 +82,12 @@
virtual ~NfcAdaptation();
void Initialize();
void Finalize();
+ void FactoryReset();
+ void DeviceShutdown();
static NfcAdaptation& GetInstance();
tHAL_NFC_ENTRY* GetHalEntryFuncs();
void DownloadFirmware();
+ void GetVendorConfigs(std::map<std::string, ConfigValue>& configMap);
void Dump(int fd);
private:
@@ -89,9 +97,9 @@
static ThreadMutex sLock;
ThreadCondVar mCondVar;
tHAL_NFC_ENTRY mHalEntryFuncs; // function pointers for HAL entry points
- static nfc_nci_device_t* mHalDeviceContext;
static android::sp<android::hardware::nfc::V1_0::INfc> mHal;
- static android::hardware::nfc::V1_0::INfcClientCallback* mCallback;
+ static android::sp<android::hardware::nfc::V1_1::INfc> mHal_1_1;
+ static android::hardware::nfc::V1_1::INfcClientCallback* mCallback;
static tHAL_NFC_CBACK* mHalCallback;
static tHAL_NFC_DATA_CBACK* mHalDataCallback;
static ThreadCondVar mHalOpenCompletedEvent;
diff --git a/src/include/_OverrideLog.h b/src/include/_OverrideLog.h
deleted file mode 100644
index dd412ab..0000000
--- a/src/include/_OverrideLog.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * Override the Android logging macro(s) from
- * /system/core/include/cutils/log.h. This header must be the first header
- * included by a *.cpp file so the original Android macro can be replaced.
- * Do not include this header in another header, because that will create
- * unnecessary dependency.
- *
- ******************************************************************************/
-#pragma once
-
-// Override Android's ALOGD macro by adding a boolean expression.
-#define ALOGD(...) \
- ((void)ALOGD_IF(appl_trace_level >= BT_TRACE_LEVEL_DEBUG, __VA_ARGS__))
-
-#include <cutils/log.h> //define Android logging macros
-#include "bt_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern unsigned char appl_trace_level;
-extern uint32_t ScrProtocolTraceFlag;
-/* defined for run time DTA mode selection */
-extern unsigned char appl_dta_mode_flag;
-
-void initializeGlobalAppDtaMode();
-
-/*******************************************************************************
-**
-** Function: initializeGlobalAppLogLevel
-**
-** Description: Initialize and get global logging level from .conf or
-** Android property nfc.app_log_level. The Android property
-** overrides .conf variable.
-**
-** Returns: Global log level:
-** BT_TRACE_LEVEL_NONE 0 * No trace messages to be generated
-** BT_TRACE_LEVEL_ERROR 1 * Error condition trace messages
-** BT_TRACE_LEVEL_WARNING 2 * Warning condition trace messages
-** BT_TRACE_LEVEL_API 3 * API traces
-** BT_TRACE_LEVEL_EVENT 4 * Debug messages for events
-** BT_TRACE_LEVEL_DEBUG 5 * Debug messages (general)
-**
-*******************************************************************************/
-unsigned char initializeGlobalAppLogLevel();
-uint32_t initializeProtocolLogLevel();
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/src/include/android_logmsg.h b/src/include/android_logmsg.h
index 4dfccbc..ed38807 100644
--- a/src/include/android_logmsg.h
+++ b/src/include/android_logmsg.h
@@ -20,51 +20,11 @@
* If protocol decoder is not present, then decode packets into hex numbers.
******************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
#include "data_types.h"
#include "nfc_types.h"
#define DISP_NCI ProtoDispAdapterDisplayNciPacket
void ProtoDispAdapterDisplayNciPacket(uint8_t* nciPacket, uint16_t nciPacketLen,
bool is_recv);
-void ProtoDispAdapterUseRawOutput(bool isUseRaw);
-void ScrLog(uint32_t trace_set_mask, const char* fmt_str, ...);
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...);
-void LogMsg_0(uint32_t trace_set_mask, const char* p_str);
-void LogMsg_1(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1);
-void LogMsg_2(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2);
-void LogMsg_3(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3);
-void LogMsg_4(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4);
-void LogMsg_5(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4, uintptr_t p5);
-void LogMsg_6(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4, uintptr_t p5,
- uintptr_t p6);
-uint8_t* scru_dump_hex(uint8_t* p, char* pTitle, uint32_t len, uint32_t layer,
- uint32_t type);
-void BTDISP_LOCK_LOG();
-void BTDISP_UNLOCK_LOG();
-void BTDISP_INIT_LOCK();
-void BTDISP_UNINIT_LOCK();
-void DispHciCmd(NFC_HDR* p_buf);
-void DispHciEvt(NFC_HDR* p_buf);
void DispLLCP(NFC_HDR* p_buf, bool is_recv);
void DispHcp(uint8_t* data, uint16_t len, bool is_recv);
-void DispSNEP(uint8_t local_sap, uint8_t remote_sap, NFC_HDR* p_buf,
- bool is_first, bool is_rx);
-void DispCHO(uint8_t* pMsg, uint32_t MsgLen, bool is_rx);
-void DispT3TagMessage(NFC_HDR* p_msg, bool is_rx);
-void DispRWT4Tags(NFC_HDR* p_buf, bool is_rx);
-void DispCET4Tags(NFC_HDR* p_buf, bool is_rx);
-void DispRWI93Tag(NFC_HDR* p_buf, bool is_rx, uint8_t command_to_respond);
-void DispNDEFMsg(uint8_t* pMsg, uint32_t MsgLen, bool is_recv);
-
-#ifdef __cplusplus
-};
-#endif
diff --git a/src/include/bt_trace.h b/src/include/bt_trace.h
deleted file mode 100644
index e4d3165..0000000
--- a/src/include/bt_trace.h
+++ /dev/null
@@ -1,1875 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#ifndef BT_TRACE_H
-#define BT_TRACE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* External declaration for appl_trace_level here to avoid to add the
- * declaration in all the files using APPL_TRACExxx macros */
-extern uint8_t appl_trace_level;
-
-/* Prototype for message logging function. */
-extern void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...);
-extern void LogMsg_0(uint32_t trace_set_mask, const char* p_str);
-extern void LogMsg_1(uint32_t trace_set_mask, const char* fmt_str,
- uintptr_t p1);
-extern void LogMsg_2(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2);
-extern void LogMsg_3(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3);
-extern void LogMsg_4(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4);
-extern void LogMsg_5(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4, uintptr_t p5);
-extern void LogMsg_6(uint32_t trace_set_mask, const char* fmt_str, uintptr_t p1,
- uintptr_t p2, uintptr_t p3, uintptr_t p4, uintptr_t p5,
- uintptr_t p6);
-
-#ifdef __cplusplus
-}
-#endif
-
-/******************************************************************************
-**
-** Trace configurable parameters
-**
-******************************************************************************/
-
-/* Enables or disables verbose trace information. */
-#ifndef BT_TRACE_VERBOSE
-#define BT_TRACE_VERBOSE FALSE
-#endif
-
-/* Enables or disables protocol trace information. */
-#ifndef BT_TRACE_PROTOCOL
-#define BT_TRACE_PROTOCOL TRUE /* Android requires TRUE */
-#endif
-
-/******************************************************************************
-**
-** Trace Levels
-**
-** The following values may be used for different levels:
-** BT_TRACE_LEVEL_NONE 0 * No trace messages to be generated
-** BT_TRACE_LEVEL_ERROR 1 * Error condition trace messages
-** BT_TRACE_LEVEL_WARNING 2 * Warning condition trace messages
-** BT_TRACE_LEVEL_API 3 * API traces
-** BT_TRACE_LEVEL_EVENT 4 * Debug messages for events
-** BT_TRACE_LEVEL_DEBUG 5 * Debug messages (general)
-******************************************************************************/
-
-/* Core Stack default trace levels */
-#ifndef HCI_INITIAL_TRACE_LEVEL
-#define HCI_INITIAL_TRACE_LEVEL BT_TRACE_LEVEL_DEBUG
-#endif
-
-#ifndef LLCP_INITIAL_TRACE_LEVEL
-#define LLCP_INITIAL_TRACE_LEVEL BT_TRACE_LEVEL_DEBUG
-#endif
-
-#ifndef APPL_INITIAL_TRACE_LEVEL
-#define APPL_INITIAL_TRACE_LEVEL BT_TRACE_LEVEL_DEBUG
-#endif
-
-#ifndef NFC_INITIAL_TRACE_LEVEL
-#define NFC_INITIAL_TRACE_LEVEL BT_TRACE_LEVEL_DEBUG
-#endif
-
-#ifndef SMP_INITIAL_TRACE_LEVEL
-#define SMP_INITIAL_TRACE_LEVEL BT_TRACE_LEVEL_DEBUG
-#endif
-
-#define BT_TRACE_0(l, t, m) \
- LogMsg_0((TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t)), (m))
-#define BT_TRACE_1(l, t, m, p1) \
- LogMsg_1(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t), (m), \
- (uintptr_t)(p1))
-#define BT_TRACE_2(l, t, m, p1, p2) \
- LogMsg_2(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t), (m), \
- (uintptr_t)(p1), (uintptr_t)(p2))
-#define BT_TRACE_3(l, t, m, p1, p2, p3) \
- LogMsg_3(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t), (m), \
- (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3))
-#define BT_TRACE_4(l, t, m, p1, p2, p3, p4) \
- LogMsg_4(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t), (m), \
- (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), (uintptr_t)(p4))
-#define BT_TRACE_5(l, t, m, p1, p2, p3, p4, p5) \
- LogMsg_5(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t), (m), \
- (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), (uintptr_t)(p4), \
- (uintptr_t)(p5))
-#define BT_TRACE_6(l, t, m, p1, p2, p3, p4, p5, p6) \
- LogMsg_6(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t), (m), \
- (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), (uintptr_t)(p4), \
- (uintptr_t)(p5), (uintptr_t)(p6))
-
-#define BT_ERROR_TRACE_0(l, m) \
- LogMsg_0(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | TRACE_TYPE_ERROR, (m))
-#define BT_ERROR_TRACE_1(l, m, p1) \
- LogMsg_1(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | TRACE_TYPE_ERROR, (m), \
- (uintptr_t)(p1))
-#define BT_ERROR_TRACE_2(l, m, p1, p2) \
- LogMsg_2(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | TRACE_TYPE_ERROR, (m), \
- (uintptr_t)(p1), (uintptr_t)(p2))
-#define BT_ERROR_TRACE_3(l, m, p1, p2, p3) \
- LogMsg_3(TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | TRACE_TYPE_ERROR, (m), \
- (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3))
-
-/* Define tracing for the LLCP unit
-*/
-#define LLCP_TRACE_ERROR0(m) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_0(TRACE_LAYER_LLCP, TRACE_TYPE_ERROR, m); \
- }
-#define LLCP_TRACE_ERROR1(m, p1) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_1(TRACE_LAYER_LLCP, TRACE_TYPE_ERROR, m, p1); \
- }
-#define LLCP_TRACE_ERROR2(m, p1, p2) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_2(TRACE_LAYER_LLCP, TRACE_TYPE_ERROR, m, p1, p2); \
- }
-#define LLCP_TRACE_ERROR3(m, p1, p2, p3) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_3(TRACE_LAYER_LLCP, TRACE_TYPE_ERROR, m, p1, p2, p3); \
- }
-#define LLCP_TRACE_ERROR4(m, p1, p2, p3, p4) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_4(TRACE_LAYER_LLCP, TRACE_TYPE_ERROR, m, p1, p2, p3, p4); \
- }
-#define LLCP_TRACE_ERROR5(m, p1, p2, p3, p4, p5) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_5(TRACE_LAYER_LLCP, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5); \
- }
-#define LLCP_TRACE_ERROR6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_6(TRACE_LAYER_LLCP, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define LLCP_TRACE_WARNING0(m) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_0(TRACE_LAYER_LLCP, TRACE_TYPE_WARNING, m); \
- }
-#define LLCP_TRACE_WARNING1(m, p1) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_1(TRACE_LAYER_LLCP, TRACE_TYPE_WARNING, m, p1); \
- }
-#define LLCP_TRACE_WARNING2(m, p1, p2) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_2(TRACE_LAYER_LLCP, TRACE_TYPE_WARNING, m, p1, p2); \
- }
-#define LLCP_TRACE_WARNING3(m, p1, p2, p3) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_3(TRACE_LAYER_LLCP, TRACE_TYPE_WARNING, m, p1, p2, p3); \
- }
-#define LLCP_TRACE_WARNING4(m, p1, p2, p3, p4) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_4(TRACE_LAYER_LLCP, TRACE_TYPE_WARNING, m, p1, p2, p3, p4); \
- }
-#define LLCP_TRACE_WARNING5(m, p1, p2, p3, p4, p5) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_5(TRACE_LAYER_LLCP, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5); \
- }
-#define LLCP_TRACE_WARNING6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_6(TRACE_LAYER_LLCP, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define LLCP_TRACE_API0(m) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_0(TRACE_LAYER_LLCP, TRACE_TYPE_API, m); \
- }
-#define LLCP_TRACE_API1(m, p1) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_1(TRACE_LAYER_LLCP, TRACE_TYPE_API, m, p1); \
- }
-#define LLCP_TRACE_API2(m, p1, p2) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_2(TRACE_LAYER_LLCP, TRACE_TYPE_API, m, p1, p2); \
- }
-#define LLCP_TRACE_API3(m, p1, p2, p3) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_3(TRACE_LAYER_LLCP, TRACE_TYPE_API, m, p1, p2, p3); \
- }
-#define LLCP_TRACE_API4(m, p1, p2, p3, p4) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_4(TRACE_LAYER_LLCP, TRACE_TYPE_API, m, p1, p2, p3, p4); \
- }
-#define LLCP_TRACE_API5(m, p1, p2, p3, p4, p5) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_5(TRACE_LAYER_LLCP, TRACE_TYPE_API, m, p1, p2, p3, p4, p5); \
- }
-#define LLCP_TRACE_API6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_6(TRACE_LAYER_LLCP, TRACE_TYPE_API, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define LLCP_TRACE_EVENT0(m) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_0(TRACE_LAYER_LLCP, TRACE_TYPE_EVENT, m); \
- }
-#define LLCP_TRACE_EVENT1(m, p1) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_1(TRACE_LAYER_LLCP, TRACE_TYPE_EVENT, m, p1); \
- }
-#define LLCP_TRACE_EVENT2(m, p1, p2) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_2(TRACE_LAYER_LLCP, TRACE_TYPE_EVENT, m, p1, p2); \
- }
-#define LLCP_TRACE_EVENT3(m, p1, p2, p3) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_3(TRACE_LAYER_LLCP, TRACE_TYPE_EVENT, m, p1, p2, p3); \
- }
-#define LLCP_TRACE_EVENT4(m, p1, p2, p3, p4) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_4(TRACE_LAYER_LLCP, TRACE_TYPE_EVENT, m, p1, p2, p3, p4); \
- }
-#define LLCP_TRACE_EVENT5(m, p1, p2, p3, p4, p5) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_5(TRACE_LAYER_LLCP, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5); \
- }
-#define LLCP_TRACE_EVENT6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_6(TRACE_LAYER_LLCP, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define LLCP_TRACE_DEBUG0(m) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_0(TRACE_LAYER_LLCP, TRACE_TYPE_DEBUG, m); \
- }
-#define LLCP_TRACE_DEBUG1(m, p1) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_1(TRACE_LAYER_LLCP, TRACE_TYPE_DEBUG, m, p1); \
- }
-#define LLCP_TRACE_DEBUG2(m, p1, p2) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_2(TRACE_LAYER_LLCP, TRACE_TYPE_DEBUG, m, p1, p2); \
- }
-#define LLCP_TRACE_DEBUG3(m, p1, p2, p3) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_3(TRACE_LAYER_LLCP, TRACE_TYPE_DEBUG, m, p1, p2, p3); \
- }
-#define LLCP_TRACE_DEBUG4(m, p1, p2, p3, p4) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_4(TRACE_LAYER_LLCP, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4); \
- }
-#define LLCP_TRACE_DEBUG5(m, p1, p2, p3, p4, p5) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_5(TRACE_LAYER_LLCP, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5); \
- }
-#define LLCP_TRACE_DEBUG6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (llcp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_6(TRACE_LAYER_LLCP, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-/* Define tracing for the NFC unit
-*/
-#define NFC_TRACE_ERROR0(m) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_0(TRACE_LAYER_NFC, TRACE_TYPE_ERROR, m); \
- }
-#define NFC_TRACE_ERROR1(m, p1) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_1(TRACE_LAYER_NFC, TRACE_TYPE_ERROR, m, p1); \
- }
-#define NFC_TRACE_ERROR2(m, p1, p2) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_2(TRACE_LAYER_NFC, TRACE_TYPE_ERROR, m, p1, p2); \
- }
-#define NFC_TRACE_ERROR3(m, p1, p2, p3) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_3(TRACE_LAYER_NFC, TRACE_TYPE_ERROR, m, p1, p2, p3); \
- }
-#define NFC_TRACE_ERROR4(m, p1, p2, p3, p4) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_4(TRACE_LAYER_NFC, TRACE_TYPE_ERROR, m, p1, p2, p3, p4); \
- }
-#define NFC_TRACE_ERROR5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_5(TRACE_LAYER_NFC, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5); \
- }
-#define NFC_TRACE_ERROR6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_6(TRACE_LAYER_NFC, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NFC_TRACE_WARNING0(m) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_0(TRACE_LAYER_NFC, TRACE_TYPE_WARNING, m); \
- }
-#define NFC_TRACE_WARNING1(m, p1) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_1(TRACE_LAYER_NFC, TRACE_TYPE_WARNING, m, p1); \
- }
-#define NFC_TRACE_WARNING2(m, p1, p2) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_2(TRACE_LAYER_NFC, TRACE_TYPE_WARNING, m, p1, p2); \
- }
-#define NFC_TRACE_WARNING3(m, p1, p2, p3) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_3(TRACE_LAYER_NFC, TRACE_TYPE_WARNING, m, p1, p2, p3); \
- }
-#define NFC_TRACE_WARNING4(m, p1, p2, p3, p4) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_4(TRACE_LAYER_NFC, TRACE_TYPE_WARNING, m, p1, p2, p3, p4); \
- }
-#define NFC_TRACE_WARNING5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_5(TRACE_LAYER_NFC, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5); \
- }
-#define NFC_TRACE_WARNING6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_6(TRACE_LAYER_NFC, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NFC_TRACE_API0(m) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_0(TRACE_LAYER_NFC, TRACE_TYPE_API, m); \
- }
-#define NFC_TRACE_API1(m, p1) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_1(TRACE_LAYER_NFC, TRACE_TYPE_API, m, p1); \
- }
-#define NFC_TRACE_API2(m, p1, p2) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_2(TRACE_LAYER_NFC, TRACE_TYPE_API, m, p1, p2); \
- }
-#define NFC_TRACE_API3(m, p1, p2, p3) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_3(TRACE_LAYER_NFC, TRACE_TYPE_API, m, p1, p2, p3); \
- }
-#define NFC_TRACE_API4(m, p1, p2, p3, p4) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_4(TRACE_LAYER_NFC, TRACE_TYPE_API, m, p1, p2, p3, p4); \
- }
-#define NFC_TRACE_API5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_5(TRACE_LAYER_NFC, TRACE_TYPE_API, m, p1, p2, p3, p4, p5); \
- }
-#define NFC_TRACE_API6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_6(TRACE_LAYER_NFC, TRACE_TYPE_API, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define NFC_TRACE_EVENT0(m) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_0(TRACE_LAYER_NFC, TRACE_TYPE_EVENT, m); \
- }
-#define NFC_TRACE_EVENT1(m, p1) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_1(TRACE_LAYER_NFC, TRACE_TYPE_EVENT, m, p1); \
- }
-#define NFC_TRACE_EVENT2(m, p1, p2) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_2(TRACE_LAYER_NFC, TRACE_TYPE_EVENT, m, p1, p2); \
- }
-#define NFC_TRACE_EVENT3(m, p1, p2, p3) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_3(TRACE_LAYER_NFC, TRACE_TYPE_EVENT, m, p1, p2, p3); \
- }
-#define NFC_TRACE_EVENT4(m, p1, p2, p3, p4) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_4(TRACE_LAYER_NFC, TRACE_TYPE_EVENT, m, p1, p2, p3, p4); \
- }
-#define NFC_TRACE_EVENT5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_5(TRACE_LAYER_NFC, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5); \
- }
-#define NFC_TRACE_EVENT6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_6(TRACE_LAYER_NFC, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NFC_TRACE_DEBUG0(m) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_0(TRACE_LAYER_NFC, TRACE_TYPE_DEBUG, m); \
- }
-#define NFC_TRACE_DEBUG1(m, p1) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_1(TRACE_LAYER_NFC, TRACE_TYPE_DEBUG, m, p1); \
- }
-#define NFC_TRACE_DEBUG2(m, p1, p2) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_2(TRACE_LAYER_NFC, TRACE_TYPE_DEBUG, m, p1, p2); \
- }
-#define NFC_TRACE_DEBUG3(m, p1, p2, p3) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_3(TRACE_LAYER_NFC, TRACE_TYPE_DEBUG, m, p1, p2, p3); \
- }
-#define NFC_TRACE_DEBUG4(m, p1, p2, p3, p4) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_4(TRACE_LAYER_NFC, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4); \
- }
-#define NFC_TRACE_DEBUG5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_5(TRACE_LAYER_NFC, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5); \
- }
-#define NFC_TRACE_DEBUG6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfc_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_6(TRACE_LAYER_NFC, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NCI_TRACE_ERROR0(m) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_0(TRACE_LAYER_NCI, TRACE_TYPE_ERROR, m); \
- }
-#define NCI_TRACE_ERROR1(m, p1) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_1(TRACE_LAYER_NCI, TRACE_TYPE_ERROR, m, p1); \
- }
-#define NCI_TRACE_ERROR2(m, p1, p2) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_2(TRACE_LAYER_NCI, TRACE_TYPE_ERROR, m, p1, p2); \
- }
-#define NCI_TRACE_ERROR3(m, p1, p2, p3) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_3(TRACE_LAYER_NCI, TRACE_TYPE_ERROR, m, p1, p2, p3); \
- }
-#define NCI_TRACE_ERROR4(m, p1, p2, p3, p4) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_4(TRACE_LAYER_NCI, TRACE_TYPE_ERROR, m, p1, p2, p3, p4); \
- }
-#define NCI_TRACE_ERROR5(m, p1, p2, p3, p4, p5) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_5(TRACE_LAYER_NCI, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5); \
- }
-#define NCI_TRACE_ERROR6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_6(TRACE_LAYER_NCI, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NCI_TRACE_WARNING0(m) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_0(TRACE_LAYER_NCI, TRACE_TYPE_WARNING, m); \
- }
-#define NCI_TRACE_WARNING1(m, p1) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_1(TRACE_LAYER_NCI, TRACE_TYPE_WARNING, m, p1); \
- }
-#define NCI_TRACE_WARNING2(m, p1, p2) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_2(TRACE_LAYER_NCI, TRACE_TYPE_WARNING, m, p1, p2); \
- }
-#define NCI_TRACE_WARNING3(m, p1, p2, p3) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_3(TRACE_LAYER_NCI, TRACE_TYPE_WARNING, m, p1, p2, p3); \
- }
-#define NCI_TRACE_WARNING4(m, p1, p2, p3, p4) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_4(TRACE_LAYER_NCI, TRACE_TYPE_WARNING, m, p1, p2, p3, p4); \
- }
-#define NCI_TRACE_WARNING5(m, p1, p2, p3, p4, p5) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_5(TRACE_LAYER_NCI, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5); \
- }
-#define NCI_TRACE_WARNING6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_6(TRACE_LAYER_NCI, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NCI_TRACE_API0(m) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_0(TRACE_LAYER_NCI, TRACE_TYPE_API, m); \
- }
-#define NCI_TRACE_API1(m, p1) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_1(TRACE_LAYER_NCI, TRACE_TYPE_API, m, p1); \
- }
-#define NCI_TRACE_API2(m, p1, p2) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_2(TRACE_LAYER_NCI, TRACE_TYPE_API, m, p1, p2); \
- }
-#define NCI_TRACE_API3(m, p1, p2, p3) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_3(TRACE_LAYER_NCI, TRACE_TYPE_API, m, p1, p2, p3); \
- }
-#define NCI_TRACE_API4(m, p1, p2, p3, p4) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_4(TRACE_LAYER_NCI, TRACE_TYPE_API, m, p1, p2, p3, p4); \
- }
-#define NCI_TRACE_API5(m, p1, p2, p3, p4, p5) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_5(TRACE_LAYER_NCI, TRACE_TYPE_API, m, p1, p2, p3, p4, p5); \
- }
-#define NCI_TRACE_API6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_6(TRACE_LAYER_NCI, TRACE_TYPE_API, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define NCI_TRACE_EVENT0(m) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_0(TRACE_LAYER_NCI, TRACE_TYPE_EVENT, m); \
- }
-#define NCI_TRACE_EVENT1(m, p1) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_1(TRACE_LAYER_NCI, TRACE_TYPE_EVENT, m, p1); \
- }
-#define NCI_TRACE_EVENT2(m, p1, p2) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_2(TRACE_LAYER_NCI, TRACE_TYPE_EVENT, m, p1, p2); \
- }
-#define NCI_TRACE_EVENT3(m, p1, p2, p3) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_3(TRACE_LAYER_NCI, TRACE_TYPE_EVENT, m, p1, p2, p3); \
- }
-#define NCI_TRACE_EVENT4(m, p1, p2, p3, p4) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_4(TRACE_LAYER_NCI, TRACE_TYPE_EVENT, m, p1, p2, p3, p4); \
- }
-#define NCI_TRACE_EVENT5(m, p1, p2, p3, p4, p5) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_5(TRACE_LAYER_NCI, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5); \
- }
-#define NCI_TRACE_EVENT6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_6(TRACE_LAYER_NCI, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NCI_TRACE_DEBUG0(m) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_0(TRACE_LAYER_NCI, TRACE_TYPE_DEBUG, m); \
- }
-#define NCI_TRACE_DEBUG1(m, p1) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_1(TRACE_LAYER_NCI, TRACE_TYPE_DEBUG, m, p1); \
- }
-#define NCI_TRACE_DEBUG2(m, p1, p2) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_2(TRACE_LAYER_NCI, TRACE_TYPE_DEBUG, m, p1, p2); \
- }
-#define NCI_TRACE_DEBUG3(m, p1, p2, p3) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_3(TRACE_LAYER_NCI, TRACE_TYPE_DEBUG, m, p1, p2, p3); \
- }
-#define NCI_TRACE_DEBUG4(m, p1, p2, p3, p4) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_4(TRACE_LAYER_NCI, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4); \
- }
-#define NCI_TRACE_DEBUG5(m, p1, p2, p3, p4, p5) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_5(TRACE_LAYER_NCI, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5); \
- }
-#define NCI_TRACE_DEBUG6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ncit_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_6(TRACE_LAYER_NCI, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define RW_TRACE_ERROR0(m) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_0(TRACE_LAYER_RW, TRACE_TYPE_ERROR, m); \
- }
-#define RW_TRACE_ERROR1(m, p1) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_1(TRACE_LAYER_RW, TRACE_TYPE_ERROR, m, p1); \
- }
-#define RW_TRACE_ERROR2(m, p1, p2) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_2(TRACE_LAYER_RW, TRACE_TYPE_ERROR, m, p1, p2); \
- }
-#define RW_TRACE_ERROR3(m, p1, p2, p3) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_3(TRACE_LAYER_RW, TRACE_TYPE_ERROR, m, p1, p2, p3); \
- }
-#define RW_TRACE_ERROR4(m, p1, p2, p3, p4) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_4(TRACE_LAYER_RW, TRACE_TYPE_ERROR, m, p1, p2, p3, p4); \
- }
-#define RW_TRACE_ERROR5(m, p1, p2, p3, p4, p5) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_5(TRACE_LAYER_RW, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5); \
- }
-#define RW_TRACE_ERROR6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_6(TRACE_LAYER_RW, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define RW_TRACE_WARNING0(m) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_0(TRACE_LAYER_RW, TRACE_TYPE_WARNING, m); \
- }
-#define RW_TRACE_WARNING1(m, p1) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_1(TRACE_LAYER_RW, TRACE_TYPE_WARNING, m, p1); \
- }
-#define RW_TRACE_WARNING2(m, p1, p2) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_2(TRACE_LAYER_RW, TRACE_TYPE_WARNING, m, p1, p2); \
- }
-#define RW_TRACE_WARNING3(m, p1, p2, p3) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_3(TRACE_LAYER_RW, TRACE_TYPE_WARNING, m, p1, p2, p3); \
- }
-#define RW_TRACE_WARNING4(m, p1, p2, p3, p4) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_4(TRACE_LAYER_RW, TRACE_TYPE_WARNING, m, p1, p2, p3, p4); \
- }
-#define RW_TRACE_WARNING5(m, p1, p2, p3, p4, p5) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_5(TRACE_LAYER_RW, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5); \
- }
-#define RW_TRACE_WARNING6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_6(TRACE_LAYER_RW, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define RW_TRACE_API0(m) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_0(TRACE_LAYER_RW, TRACE_TYPE_API, m); \
- }
-#define RW_TRACE_API1(m, p1) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_1(TRACE_LAYER_RW, TRACE_TYPE_API, m, p1); \
- }
-#define RW_TRACE_API2(m, p1, p2) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_2(TRACE_LAYER_RW, TRACE_TYPE_API, m, p1, p2); \
- }
-#define RW_TRACE_API3(m, p1, p2, p3) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_3(TRACE_LAYER_RW, TRACE_TYPE_API, m, p1, p2, p3); \
- }
-#define RW_TRACE_API4(m, p1, p2, p3, p4) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_4(TRACE_LAYER_RW, TRACE_TYPE_API, m, p1, p2, p3, p4); \
- }
-#define RW_TRACE_API5(m, p1, p2, p3, p4, p5) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_5(TRACE_LAYER_RW, TRACE_TYPE_API, m, p1, p2, p3, p4, p5); \
- }
-#define RW_TRACE_API6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_6(TRACE_LAYER_RW, TRACE_TYPE_API, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define RW_TRACE_EVENT0(m) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_0(TRACE_LAYER_RW, TRACE_TYPE_EVENT, m); \
- }
-#define RW_TRACE_EVENT1(m, p1) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_1(TRACE_LAYER_RW, TRACE_TYPE_EVENT, m, p1); \
- }
-#define RW_TRACE_EVENT2(m, p1, p2) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_2(TRACE_LAYER_RW, TRACE_TYPE_EVENT, m, p1, p2); \
- }
-#define RW_TRACE_EVENT3(m, p1, p2, p3) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_3(TRACE_LAYER_RW, TRACE_TYPE_EVENT, m, p1, p2, p3); \
- }
-#define RW_TRACE_EVENT4(m, p1, p2, p3, p4) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_4(TRACE_LAYER_RW, TRACE_TYPE_EVENT, m, p1, p2, p3, p4); \
- }
-#define RW_TRACE_EVENT5(m, p1, p2, p3, p4, p5) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_5(TRACE_LAYER_RW, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5); \
- }
-#define RW_TRACE_EVENT6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_6(TRACE_LAYER_RW, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define RW_TRACE_DEBUG0(m) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_0(TRACE_LAYER_RW, TRACE_TYPE_DEBUG, m); \
- }
-#define RW_TRACE_DEBUG1(m, p1) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_1(TRACE_LAYER_RW, TRACE_TYPE_DEBUG, m, p1); \
- }
-#define RW_TRACE_DEBUG2(m, p1, p2) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_2(TRACE_LAYER_RW, TRACE_TYPE_DEBUG, m, p1, p2); \
- }
-#define RW_TRACE_DEBUG3(m, p1, p2, p3) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_3(TRACE_LAYER_RW, TRACE_TYPE_DEBUG, m, p1, p2, p3); \
- }
-#define RW_TRACE_DEBUG4(m, p1, p2, p3, p4) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_4(TRACE_LAYER_RW, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4); \
- }
-#define RW_TRACE_DEBUG5(m, p1, p2, p3, p4, p5) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_5(TRACE_LAYER_RW, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5); \
- }
-#define RW_TRACE_DEBUG6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (rw_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_6(TRACE_LAYER_RW, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define CE_TRACE_ERROR0(m) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_0(TRACE_LAYER_CE, TRACE_TYPE_ERROR, m); \
- }
-#define CE_TRACE_ERROR1(m, p1) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_1(TRACE_LAYER_CE, TRACE_TYPE_ERROR, m, p1); \
- }
-#define CE_TRACE_ERROR2(m, p1, p2) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_2(TRACE_LAYER_CE, TRACE_TYPE_ERROR, m, p1, p2); \
- }
-#define CE_TRACE_ERROR3(m, p1, p2, p3) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_3(TRACE_LAYER_CE, TRACE_TYPE_ERROR, m, p1, p2, p3); \
- }
-#define CE_TRACE_ERROR4(m, p1, p2, p3, p4) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_4(TRACE_LAYER_CE, TRACE_TYPE_ERROR, m, p1, p2, p3, p4); \
- }
-#define CE_TRACE_ERROR5(m, p1, p2, p3, p4, p5) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_5(TRACE_LAYER_CE, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5); \
- }
-#define CE_TRACE_ERROR6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_6(TRACE_LAYER_CE, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define CE_TRACE_WARNING0(m) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_0(TRACE_LAYER_CE, TRACE_TYPE_WARNING, m); \
- }
-#define CE_TRACE_WARNING1(m, p1) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_1(TRACE_LAYER_CE, TRACE_TYPE_WARNING, m, p1); \
- }
-#define CE_TRACE_WARNING2(m, p1, p2) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_2(TRACE_LAYER_CE, TRACE_TYPE_WARNING, m, p1, p2); \
- }
-#define CE_TRACE_WARNING3(m, p1, p2, p3) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_3(TRACE_LAYER_CE, TRACE_TYPE_WARNING, m, p1, p2, p3); \
- }
-#define CE_TRACE_WARNING4(m, p1, p2, p3, p4) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_4(TRACE_LAYER_CE, TRACE_TYPE_WARNING, m, p1, p2, p3, p4); \
- }
-#define CE_TRACE_WARNING5(m, p1, p2, p3, p4, p5) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_5(TRACE_LAYER_CE, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5); \
- }
-#define CE_TRACE_WARNING6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_6(TRACE_LAYER_CE, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define CE_TRACE_API0(m) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_0(TRACE_LAYER_CE, TRACE_TYPE_API, m); \
- }
-#define CE_TRACE_API1(m, p1) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_1(TRACE_LAYER_CE, TRACE_TYPE_API, m, p1); \
- }
-#define CE_TRACE_API2(m, p1, p2) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_2(TRACE_LAYER_CE, TRACE_TYPE_API, m, p1, p2); \
- }
-#define CE_TRACE_API3(m, p1, p2, p3) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_3(TRACE_LAYER_CE, TRACE_TYPE_API, m, p1, p2, p3); \
- }
-#define CE_TRACE_API4(m, p1, p2, p3, p4) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_4(TRACE_LAYER_CE, TRACE_TYPE_API, m, p1, p2, p3, p4); \
- }
-#define CE_TRACE_API5(m, p1, p2, p3, p4, p5) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_5(TRACE_LAYER_CE, TRACE_TYPE_API, m, p1, p2, p3, p4, p5); \
- }
-#define CE_TRACE_API6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_6(TRACE_LAYER_CE, TRACE_TYPE_API, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define CE_TRACE_EVENT0(m) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_0(TRACE_LAYER_CE, TRACE_TYPE_EVENT, m); \
- }
-#define CE_TRACE_EVENT1(m, p1) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_1(TRACE_LAYER_CE, TRACE_TYPE_EVENT, m, p1); \
- }
-#define CE_TRACE_EVENT2(m, p1, p2) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_2(TRACE_LAYER_CE, TRACE_TYPE_EVENT, m, p1, p2); \
- }
-#define CE_TRACE_EVENT3(m, p1, p2, p3) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_3(TRACE_LAYER_CE, TRACE_TYPE_EVENT, m, p1, p2, p3); \
- }
-#define CE_TRACE_EVENT4(m, p1, p2, p3, p4) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_4(TRACE_LAYER_CE, TRACE_TYPE_EVENT, m, p1, p2, p3, p4); \
- }
-#define CE_TRACE_EVENT5(m, p1, p2, p3, p4, p5) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_5(TRACE_LAYER_CE, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5); \
- }
-#define CE_TRACE_EVENT6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_6(TRACE_LAYER_CE, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define CE_TRACE_DEBUG0(m) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_0(TRACE_LAYER_CE, TRACE_TYPE_DEBUG, m); \
- }
-#define CE_TRACE_DEBUG1(m, p1) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_1(TRACE_LAYER_CE, TRACE_TYPE_DEBUG, m, p1); \
- }
-#define CE_TRACE_DEBUG2(m, p1, p2) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_2(TRACE_LAYER_CE, TRACE_TYPE_DEBUG, m, p1, p2); \
- }
-#define CE_TRACE_DEBUG3(m, p1, p2, p3) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_3(TRACE_LAYER_CE, TRACE_TYPE_DEBUG, m, p1, p2, p3); \
- }
-#define CE_TRACE_DEBUG4(m, p1, p2, p3, p4) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_4(TRACE_LAYER_CE, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4); \
- }
-#define CE_TRACE_DEBUG5(m, p1, p2, p3, p4, p5) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_5(TRACE_LAYER_CE, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5); \
- }
-#define CE_TRACE_DEBUG6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ce_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_6(TRACE_LAYER_CE, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define NDEF_TRACE_ERROR0(m) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_0(TRACE_LAYER_NDEF, TRACE_TYPE_ERROR, m); \
- }
-#define NDEF_TRACE_ERROR1(m, p1) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_1(TRACE_LAYER_NDEF, TRACE_TYPE_ERROR, m, p1); \
- }
-#define NDEF_TRACE_ERROR2(m, p1, p2) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_2(TRACE_LAYER_NDEF, TRACE_TYPE_ERROR, m, p1, p2); \
- }
-#define NDEF_TRACE_ERROR3(m, p1, p2, p3) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_3(TRACE_LAYER_NDEF, TRACE_TYPE_ERROR, m, p1, p2, p3); \
- }
-#define NDEF_TRACE_ERROR4(m, p1, p2, p3, p4) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_4(TRACE_LAYER_NDEF, TRACE_TYPE_ERROR, m, p1, p2, p3, p4); \
- }
-#define NDEF_TRACE_ERROR5(m, p1, p2, p3, p4, p5) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_5(TRACE_LAYER_NDEF, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5); \
- }
-#define NDEF_TRACE_ERROR6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_6(TRACE_LAYER_NDEF, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NDEF_TRACE_WARNING0(m) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_0(TRACE_LAYER_NDEF, TRACE_TYPE_WARNING, m); \
- }
-#define NDEF_TRACE_WARNING1(m, p1) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_1(TRACE_LAYER_NDEF, TRACE_TYPE_WARNING, m, p1); \
- }
-#define NDEF_TRACE_WARNING2(m, p1, p2) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_2(TRACE_LAYER_NDEF, TRACE_TYPE_WARNING, m, p1, p2); \
- }
-#define NDEF_TRACE_WARNING3(m, p1, p2, p3) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_3(TRACE_LAYER_NDEF, TRACE_TYPE_WARNING, m, p1, p2, p3); \
- }
-#define NDEF_TRACE_WARNING4(m, p1, p2, p3, p4) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_4(TRACE_LAYER_NDEF, TRACE_TYPE_WARNING, m, p1, p2, p3, p4); \
- }
-#define NDEF_TRACE_WARNING5(m, p1, p2, p3, p4, p5) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_5(TRACE_LAYER_NDEF, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5); \
- }
-#define NDEF_TRACE_WARNING6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_6(TRACE_LAYER_NDEF, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NDEF_TRACE_API0(m) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_0(TRACE_LAYER_NDEF, TRACE_TYPE_API, m); \
- }
-#define NDEF_TRACE_API1(m, p1) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_1(TRACE_LAYER_NDEF, TRACE_TYPE_API, m, p1); \
- }
-#define NDEF_TRACE_API2(m, p1, p2) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_2(TRACE_LAYER_NDEF, TRACE_TYPE_API, m, p1, p2); \
- }
-#define NDEF_TRACE_API3(m, p1, p2, p3) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_3(TRACE_LAYER_NDEF, TRACE_TYPE_API, m, p1, p2, p3); \
- }
-#define NDEF_TRACE_API4(m, p1, p2, p3, p4) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_4(TRACE_LAYER_NDEF, TRACE_TYPE_API, m, p1, p2, p3, p4); \
- }
-#define NDEF_TRACE_API5(m, p1, p2, p3, p4, p5) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_5(TRACE_LAYER_NDEF, TRACE_TYPE_API, m, p1, p2, p3, p4, p5); \
- }
-#define NDEF_TRACE_API6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_6(TRACE_LAYER_NDEF, TRACE_TYPE_API, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define NDEF_TRACE_EVENT0(m) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_0(TRACE_LAYER_NDEF, TRACE_TYPE_EVENT, m); \
- }
-#define NDEF_TRACE_EVENT1(m, p1) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_1(TRACE_LAYER_NDEF, TRACE_TYPE_EVENT, m, p1); \
- }
-#define NDEF_TRACE_EVENT2(m, p1, p2) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_2(TRACE_LAYER_NDEF, TRACE_TYPE_EVENT, m, p1, p2); \
- }
-#define NDEF_TRACE_EVENT3(m, p1, p2, p3) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_3(TRACE_LAYER_NDEF, TRACE_TYPE_EVENT, m, p1, p2, p3); \
- }
-#define NDEF_TRACE_EVENT4(m, p1, p2, p3, p4) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_4(TRACE_LAYER_NDEF, TRACE_TYPE_EVENT, m, p1, p2, p3, p4); \
- }
-#define NDEF_TRACE_EVENT5(m, p1, p2, p3, p4, p5) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_5(TRACE_LAYER_NDEF, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5); \
- }
-#define NDEF_TRACE_EVENT6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_6(TRACE_LAYER_NDEF, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NDEF_TRACE_DEBUG0(m) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_0(TRACE_LAYER_NDEF, TRACE_TYPE_DEBUG, m); \
- }
-#define NDEF_TRACE_DEBUG1(m, p1) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_1(TRACE_LAYER_NDEF, TRACE_TYPE_DEBUG, m, p1); \
- }
-#define NDEF_TRACE_DEBUG2(m, p1, p2) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_2(TRACE_LAYER_NDEF, TRACE_TYPE_DEBUG, m, p1, p2); \
- }
-#define NDEF_TRACE_DEBUG3(m, p1, p2, p3) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_3(TRACE_LAYER_NDEF, TRACE_TYPE_DEBUG, m, p1, p2, p3); \
- }
-#define NDEF_TRACE_DEBUG4(m, p1, p2, p3, p4) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_4(TRACE_LAYER_NDEF, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4); \
- }
-#define NDEF_TRACE_DEBUG5(m, p1, p2, p3, p4, p5) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_5(TRACE_LAYER_NDEF, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5); \
- }
-#define NDEF_TRACE_DEBUG6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (ndef_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_6(TRACE_LAYER_NDEF, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-/* Define tracing for the NFA unit
-*/
-#define NFA_TRACE_ERROR0(m) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_0(TRACE_LAYER_NFA, TRACE_TYPE_ERROR, m); \
- }
-#define NFA_TRACE_ERROR1(m, p1) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_1(TRACE_LAYER_NFA, TRACE_TYPE_ERROR, m, p1); \
- }
-#define NFA_TRACE_ERROR2(m, p1, p2) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_2(TRACE_LAYER_NFA, TRACE_TYPE_ERROR, m, p1, p2); \
- }
-#define NFA_TRACE_ERROR3(m, p1, p2, p3) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_3(TRACE_LAYER_NFA, TRACE_TYPE_ERROR, m, p1, p2, p3); \
- }
-#define NFA_TRACE_ERROR4(m, p1, p2, p3, p4) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_4(TRACE_LAYER_NFA, TRACE_TYPE_ERROR, m, p1, p2, p3, p4); \
- }
-#define NFA_TRACE_ERROR5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_5(TRACE_LAYER_NFA, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5); \
- }
-#define NFA_TRACE_ERROR6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_6(TRACE_LAYER_NFA, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NFA_TRACE_WARNING0(m) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_0(TRACE_LAYER_NFA, TRACE_TYPE_WARNING, m); \
- }
-#define NFA_TRACE_WARNING1(m, p1) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_1(TRACE_LAYER_NFA, TRACE_TYPE_WARNING, m, p1); \
- }
-#define NFA_TRACE_WARNING2(m, p1, p2) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_2(TRACE_LAYER_NFA, TRACE_TYPE_WARNING, m, p1, p2); \
- }
-#define NFA_TRACE_WARNING3(m, p1, p2, p3) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_3(TRACE_LAYER_NFA, TRACE_TYPE_WARNING, m, p1, p2, p3); \
- }
-#define NFA_TRACE_WARNING4(m, p1, p2, p3, p4) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_4(TRACE_LAYER_NFA, TRACE_TYPE_WARNING, m, p1, p2, p3, p4); \
- }
-#define NFA_TRACE_WARNING5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_5(TRACE_LAYER_NFA, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5); \
- }
-#define NFA_TRACE_WARNING6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_6(TRACE_LAYER_NFA, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NFA_TRACE_API0(m) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_0(TRACE_LAYER_NFA, TRACE_TYPE_API, m); \
- }
-#define NFA_TRACE_API1(m, p1) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_1(TRACE_LAYER_NFA, TRACE_TYPE_API, m, p1); \
- }
-#define NFA_TRACE_API2(m, p1, p2) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_2(TRACE_LAYER_NFA, TRACE_TYPE_API, m, p1, p2); \
- }
-#define NFA_TRACE_API3(m, p1, p2, p3) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_3(TRACE_LAYER_NFA, TRACE_TYPE_API, m, p1, p2, p3); \
- }
-#define NFA_TRACE_API4(m, p1, p2, p3, p4) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_4(TRACE_LAYER_NFA, TRACE_TYPE_API, m, p1, p2, p3, p4); \
- }
-#define NFA_TRACE_API5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_5(TRACE_LAYER_NFA, TRACE_TYPE_API, m, p1, p2, p3, p4, p5); \
- }
-#define NFA_TRACE_API6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_6(TRACE_LAYER_NFA, TRACE_TYPE_API, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define NFA_TRACE_EVENT0(m) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_0(TRACE_LAYER_NFA, TRACE_TYPE_EVENT, m); \
- }
-#define NFA_TRACE_EVENT1(m, p1) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_1(TRACE_LAYER_NFA, TRACE_TYPE_EVENT, m, p1); \
- }
-#define NFA_TRACE_EVENT2(m, p1, p2) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_2(TRACE_LAYER_NFA, TRACE_TYPE_EVENT, m, p1, p2); \
- }
-#define NFA_TRACE_EVENT3(m, p1, p2, p3) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_3(TRACE_LAYER_NFA, TRACE_TYPE_EVENT, m, p1, p2, p3); \
- }
-#define NFA_TRACE_EVENT4(m, p1, p2, p3, p4) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_4(TRACE_LAYER_NFA, TRACE_TYPE_EVENT, m, p1, p2, p3, p4); \
- }
-#define NFA_TRACE_EVENT5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_5(TRACE_LAYER_NFA, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5); \
- }
-#define NFA_TRACE_EVENT6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_6(TRACE_LAYER_NFA, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define NFA_TRACE_DEBUG0(m) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_0(TRACE_LAYER_NFA, TRACE_TYPE_DEBUG, m); \
- }
-#define NFA_TRACE_DEBUG1(m, p1) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_1(TRACE_LAYER_NFA, TRACE_TYPE_DEBUG, m, p1); \
- }
-#define NFA_TRACE_DEBUG2(m, p1, p2) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_2(TRACE_LAYER_NFA, TRACE_TYPE_DEBUG, m, p1, p2); \
- }
-#define NFA_TRACE_DEBUG3(m, p1, p2, p3) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_3(TRACE_LAYER_NFA, TRACE_TYPE_DEBUG, m, p1, p2, p3); \
- }
-#define NFA_TRACE_DEBUG4(m, p1, p2, p3, p4) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_4(TRACE_LAYER_NFA, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4); \
- }
-#define NFA_TRACE_DEBUG5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_5(TRACE_LAYER_NFA, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5); \
- }
-#define NFA_TRACE_DEBUG6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfa_sys_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_6(TRACE_LAYER_NFA, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-/* Define tracing for the NFA P2P unit
-*/
-#define P2P_TRACE_ERROR0(m) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_0(TRACE_LAYER_P2P, TRACE_TYPE_ERROR, m); \
- }
-#define P2P_TRACE_ERROR1(m, p1) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_1(TRACE_LAYER_P2P, TRACE_TYPE_ERROR, m, p1); \
- }
-#define P2P_TRACE_ERROR2(m, p1, p2) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_2(TRACE_LAYER_P2P, TRACE_TYPE_ERROR, m, p1, p2); \
- }
-#define P2P_TRACE_ERROR3(m, p1, p2, p3) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_3(TRACE_LAYER_P2P, TRACE_TYPE_ERROR, m, p1, p2, p3); \
- }
-#define P2P_TRACE_ERROR4(m, p1, p2, p3, p4) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_4(TRACE_LAYER_P2P, TRACE_TYPE_ERROR, m, p1, p2, p3, p4); \
- }
-#define P2P_TRACE_ERROR5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_5(TRACE_LAYER_P2P, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5); \
- }
-#define P2P_TRACE_ERROR6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_ERROR) \
- BT_TRACE_6(TRACE_LAYER_P2P, TRACE_TYPE_ERROR, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define P2P_TRACE_WARNING0(m) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_0(TRACE_LAYER_P2P, TRACE_TYPE_WARNING, m); \
- }
-#define P2P_TRACE_WARNING1(m, p1) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_1(TRACE_LAYER_P2P, TRACE_TYPE_WARNING, m, p1); \
- }
-#define P2P_TRACE_WARNING2(m, p1, p2) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_2(TRACE_LAYER_P2P, TRACE_TYPE_WARNING, m, p1, p2); \
- }
-#define P2P_TRACE_WARNING3(m, p1, p2, p3) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_3(TRACE_LAYER_P2P, TRACE_TYPE_WARNING, m, p1, p2, p3); \
- }
-#define P2P_TRACE_WARNING4(m, p1, p2, p3, p4) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_4(TRACE_LAYER_P2P, TRACE_TYPE_WARNING, m, p1, p2, p3, p4); \
- }
-#define P2P_TRACE_WARNING5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_5(TRACE_LAYER_P2P, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5); \
- }
-#define P2P_TRACE_WARNING6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_WARNING) \
- BT_TRACE_6(TRACE_LAYER_P2P, TRACE_TYPE_WARNING, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define P2P_TRACE_API0(m) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_0(TRACE_LAYER_P2P, TRACE_TYPE_API, m); \
- }
-#define P2P_TRACE_API1(m, p1) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_1(TRACE_LAYER_P2P, TRACE_TYPE_API, m, p1); \
- }
-#define P2P_TRACE_API2(m, p1, p2) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_2(TRACE_LAYER_P2P, TRACE_TYPE_API, m, p1, p2); \
- }
-#define P2P_TRACE_API3(m, p1, p2, p3) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_3(TRACE_LAYER_P2P, TRACE_TYPE_API, m, p1, p2, p3); \
- }
-#define P2P_TRACE_API4(m, p1, p2, p3, p4) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_4(TRACE_LAYER_P2P, TRACE_TYPE_API, m, p1, p2, p3, p4); \
- }
-#define P2P_TRACE_API5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_5(TRACE_LAYER_P2P, TRACE_TYPE_API, m, p1, p2, p3, p4, p5); \
- }
-#define P2P_TRACE_API6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_API) \
- BT_TRACE_6(TRACE_LAYER_P2P, TRACE_TYPE_API, m, p1, p2, p3, p4, p5, p6); \
- }
-
-#define P2P_TRACE_EVENT0(m) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_0(TRACE_LAYER_P2P, TRACE_TYPE_EVENT, m); \
- }
-#define P2P_TRACE_EVENT1(m, p1) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_1(TRACE_LAYER_P2P, TRACE_TYPE_EVENT, m, p1); \
- }
-#define P2P_TRACE_EVENT2(m, p1, p2) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_2(TRACE_LAYER_P2P, TRACE_TYPE_EVENT, m, p1, p2); \
- }
-#define P2P_TRACE_EVENT3(m, p1, p2, p3) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_3(TRACE_LAYER_P2P, TRACE_TYPE_EVENT, m, p1, p2, p3); \
- }
-#define P2P_TRACE_EVENT4(m, p1, p2, p3, p4) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_4(TRACE_LAYER_P2P, TRACE_TYPE_EVENT, m, p1, p2, p3, p4); \
- }
-#define P2P_TRACE_EVENT5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_5(TRACE_LAYER_P2P, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5); \
- }
-#define P2P_TRACE_EVENT6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_EVENT) \
- BT_TRACE_6(TRACE_LAYER_P2P, TRACE_TYPE_EVENT, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-#define P2P_TRACE_DEBUG0(m) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_0(TRACE_LAYER_P2P, TRACE_TYPE_DEBUG, m); \
- }
-#define P2P_TRACE_DEBUG1(m, p1) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_1(TRACE_LAYER_P2P, TRACE_TYPE_DEBUG, m, p1); \
- }
-#define P2P_TRACE_DEBUG2(m, p1, p2) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_2(TRACE_LAYER_P2P, TRACE_TYPE_DEBUG, m, p1, p2); \
- }
-#define P2P_TRACE_DEBUG3(m, p1, p2, p3) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_3(TRACE_LAYER_P2P, TRACE_TYPE_DEBUG, m, p1, p2, p3); \
- }
-#define P2P_TRACE_DEBUG4(m, p1, p2, p3, p4) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_4(TRACE_LAYER_P2P, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4); \
- }
-#define P2P_TRACE_DEBUG5(m, p1, p2, p3, p4, p5) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_5(TRACE_LAYER_P2P, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5); \
- }
-#define P2P_TRACE_DEBUG6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (nfa_p2p_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) \
- BT_TRACE_6(TRACE_LAYER_P2P, TRACE_TYPE_DEBUG, m, p1, p2, p3, p4, p5, \
- p6); \
- }
-
-/* define traces for application */
-#define APPL_TRACE_ERROR0(m) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_ERROR) \
- LogMsg_0(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_ERROR, \
- (m)); \
- }
-#define APPL_TRACE_ERROR1(m, p1) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_ERROR) \
- LogMsg_1(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_ERROR, \
- (m), (uintptr_t)(p1)); \
- }
-#define APPL_TRACE_ERROR2(m, p1, p2) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_ERROR) \
- LogMsg_2(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_ERROR, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2)); \
- }
-#define APPL_TRACE_ERROR3(m, p1, p2, p3) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_ERROR) \
- LogMsg_3(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_ERROR, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3)); \
- }
-#define APPL_TRACE_ERROR4(m, p1, p2, p3, p4) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_ERROR) \
- LogMsg_4(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_ERROR, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4)); \
- }
-#define APPL_TRACE_ERROR5(m, p1, p2, p3, p4, p5) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_ERROR) \
- LogMsg_5(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_ERROR, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4), (uintptr_t)(p5)); \
- }
-#define APPL_TRACE_ERROR6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_ERROR) \
- LogMsg_6(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_ERROR, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4), (uintptr_t)(p5), (uintptr_t)(p6)); \
- }
-
-#define APPL_TRACE_WARNING0(m) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_WARNING) \
- LogMsg_0(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_WARNING, \
- (m)); \
- }
-#define APPL_TRACE_WARNING1(m, p1) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_WARNING) \
- LogMsg_1(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_WARNING, \
- (m), (uintptr_t)(p1)); \
- }
-#define APPL_TRACE_WARNING2(m, p1, p2) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_WARNING) \
- LogMsg_2(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_WARNING, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2)); \
- }
-#define APPL_TRACE_WARNING3(m, p1, p2, p3) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_WARNING) \
- LogMsg_3(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_WARNING, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3)); \
- }
-#define APPL_TRACE_WARNING4(m, p1, p2, p3, p4) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_WARNING) \
- LogMsg_4(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_WARNING, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4)); \
- }
-#define APPL_TRACE_WARNING5(m, p1, p2, p3, p4, p5) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_WARNING) \
- LogMsg_5(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_WARNING, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4), (uintptr_t)(p5)); \
- }
-#define APPL_TRACE_WARNING6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_WARNING) \
- LogMsg_6(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_WARNING, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4), (uintptr_t)(p5), (uintptr_t)(p6)); \
- }
-
-#define APPL_TRACE_API0(m) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_API) \
- LogMsg_0(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_API, \
- (m)); \
- }
-#define APPL_TRACE_API1(m, p1) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_API) \
- LogMsg_1(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_API, \
- (m), (uintptr_t)(p1)); \
- }
-#define APPL_TRACE_API2(m, p1, p2) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_API) \
- LogMsg_2(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_API, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2)); \
- }
-#define APPL_TRACE_API3(m, p1, p2, p3) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_API) \
- LogMsg_3(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_API, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3)); \
- }
-#define APPL_TRACE_API4(m, p1, p2, p3, p4) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_API) \
- LogMsg_4(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_API, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4)); \
- }
-#define APPL_TRACE_API5(m, p1, p2, p3, p4, p5) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_API) \
- LogMsg_5(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_API, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4), (uintptr_t)(p5)); \
- }
-#define APPL_TRACE_API6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_API) \
- LogMsg_6(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_API, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4), (uintptr_t)(p5), (uintptr_t)(p6)); \
- }
-
-#define APPL_TRACE_EVENT0(m) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_EVENT) \
- LogMsg_0(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_EVENT, \
- (m)); \
- }
-#define APPL_TRACE_EVENT1(m, p1) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_EVENT) \
- LogMsg_1(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_EVENT, \
- (m), (uintptr_t)(p1)); \
- }
-#define APPL_TRACE_EVENT2(m, p1, p2) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_EVENT) \
- LogMsg_2(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_EVENT, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2)); \
- }
-#define APPL_TRACE_EVENT3(m, p1, p2, p3) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_EVENT) \
- LogMsg_3(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_EVENT, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3)); \
- }
-#define APPL_TRACE_EVENT4(m, p1, p2, p3, p4) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_EVENT) \
- LogMsg_4(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_EVENT, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4)); \
- }
-#define APPL_TRACE_EVENT5(m, p1, p2, p3, p4, p5) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_EVENT) \
- LogMsg_5(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_EVENT, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4), (uintptr_t)(p5)); \
- }
-#define APPL_TRACE_EVENT6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_EVENT) \
- LogMsg_6(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_EVENT, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4), (uintptr_t)(p5), (uintptr_t)(p6)); \
- }
-
-#define APPL_TRACE_DEBUG0(m) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_DEBUG) \
- LogMsg_0(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_DEBUG, \
- (m)); \
- }
-#define APPL_TRACE_DEBUG1(m, p1) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_DEBUG) \
- LogMsg_1(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_DEBUG, \
- (m), (uintptr_t)(p1)); \
- }
-#define APPL_TRACE_DEBUG2(m, p1, p2) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_DEBUG) \
- LogMsg_2(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_DEBUG, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2)); \
- }
-#define APPL_TRACE_DEBUG3(m, p1, p2, p3) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_DEBUG) \
- LogMsg_3(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_DEBUG, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3)); \
- }
-#define APPL_TRACE_DEBUG4(m, p1, p2, p3, p4) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_DEBUG) \
- LogMsg_4(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_DEBUG, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4)); \
- }
-#define APPL_TRACE_DEBUG5(m, p1, p2, p3, p4, p5) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_DEBUG) \
- LogMsg_5(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_DEBUG, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4), (uintptr_t)(p5)); \
- }
-#define APPL_TRACE_DEBUG6(m, p1, p2, p3, p4, p5, p6) \
- { \
- if (appl_trace_level >= BT_TRACE_LEVEL_DEBUG) \
- LogMsg_6(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \
- TRACE_TYPE_DEBUG, \
- (m), (uintptr_t)(p1), (uintptr_t)(p2), (uintptr_t)(p3), \
- (uintptr_t)(p4), (uintptr_t)(p5), (uintptr_t)(p6)); \
- }
-
-#endif /* BT_TRACE_H */
diff --git a/src/include/bt_types.h b/src/include/bt_types.h
index b147756..93bcb69 100644
--- a/src/include/bt_types.h
+++ b/src/include/bt_types.h
@@ -22,46 +22,14 @@
#include "data_types.h"
#include "nfc_types.h"
-#define SCR_PROTO_TRACE_NCI 0x00004000
-#define SCR_PROTO_TRACE_ALL 0x001fffff
-#define SCR_PROTO_TRACE_HCI_SUMMARY 0x00000001
-
-#define TRACE_LAYER_NONE 0x00000000
-#define TRACE_LAYER_HCI 0x00070000
-#define TRACE_LAYER_GKI 0x001a0000
-#define TRACE_LAYER_NFC 0x00270000
-/*it's overwritten in nfc_types.h*/
-#define TRACE_LAYER_NCI 0x00280000
-#define TRACE_LAYER_LLCP 0x00290000
-#define TRACE_LAYER_NDEF 0x002a0000
-#define TRACE_LAYER_RW 0x002b0000
-#define TRACE_LAYER_CE 0x002c0000
-#define TRACE_LAYER_P2P 0x002d0000
-#define TRACE_LAYER_NFA 0x00300000
-/*it's overwritten in nfc_types.h*/
-#define TRACE_LAYER_HAL 0x00310000
-#define TRACE_LAYER_MAX_NUM 0x0032
-
/* NCI Command, Notification or Data*/
#define BT_EVT_TO_NFC_NCI 0x4000
-#define BT_EVT_TO_NFC_NCI_VS 0x4200 /* Vendor specific message */
/* messages between NFC and NCI task */
#define BT_EVT_TO_NFC_MSGS 0x4300
/* start timer */
#define BT_EVT_TO_START_TIMER 0x3c00
-/* stop timer */
-#define BT_EVT_TO_STOP_TIMER 0x3d00
-
/* start quick timer */
#define BT_EVT_TO_START_QUICK_TIMER 0x3e00
-
-#define TRACE_ORG_APPL 0x00000500
-
-#define DEV_CLASS_LEN 3
-typedef uint8_t DEV_CLASS[DEV_CLASS_LEN]; /* Device class */
-
-#define BD_ADDR_LEN 6 /* Device address length */
-typedef uint8_t BD_ADDR[BD_ADDR_LEN]; /* Device address */
#endif
diff --git a/src/include/buildcfg.h b/src/include/buildcfg.h
index 932db88..53f7aa2 100644
--- a/src/include/buildcfg.h
+++ b/src/include/buildcfg.h
@@ -26,15 +26,6 @@
#define NFC_CONTORLLER_ID (1)
#endif
-#define BTE_APPL_MAX_USERIAL_DEV_NAME (256)
-
-#ifdef BT_TRACE_VERBOSE
-#undef BT_TRACE_VERBOSE
-#endif
-#define BT_TRACE_VERBOSE TRUE
-
-#define TRACE_TASK_INCLUDED TRUE
-
#define GKI_BUF1_MAX 0
// 2 is in use
#define GKI_BUF3_MAX 30
@@ -51,38 +42,11 @@
#define GKI_BUF0_SIZE 268
#define GKI_BUF0_MAX 40
-#define NCI_BUF_POOL_ID GKI_POOL_ID_0
#define GKI_NUM_FIXED_BUF_POOLS 4
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern uint8_t* scru_dump_hex(uint8_t* p, char* p_title, uint32_t len,
- uint32_t trace_layer, uint32_t trace_type);
-extern void ScrLog(uint32_t trace_set_mask, const char* fmt_str, ...);
extern void DispNci(uint8_t* p, uint16_t len, bool is_recv);
-extern void downloadFirmwarePatchFile(uint32_t brcm_hw_id);
-
void ProtoDispAdapterDisplayNciPacket(uint8_t* nciPacket, uint16_t nciPacketLen,
bool is_recv);
#define DISP_NCI ProtoDispAdapterDisplayNciPacket
-#define LOGMSG_TAG_NAME "BrcmNfcNfa"
-
-#ifndef _TIMEB
-#define _TIMEB
-struct _timeb {
- long time;
- short millitm;
- short timezone;
- short dstflag;
-};
-void _ftime(struct _timeb*);
-
-#endif
-
-#ifdef __cplusplus
-};
-#endif
#endif
diff --git a/src/include/config.h b/src/include/config.h
deleted file mode 100644
index 23c80fb..0000000
--- a/src/include/config.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 1999-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.
- *
- ******************************************************************************/
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int GetStrValue(const char* name, char* p_value, unsigned long len);
-int GetNumValue(const char* name, void* p_value, unsigned long len);
-
-#ifdef __cplusplus
-};
-#endif
-
-#define NAME_POLLING_TECH_MASK "POLLING_TECH_MASK"
-#define NAME_REGISTER_VIRTUAL_SE "REGISTER_VIRTUAL_SE"
-#define NAME_APPL_TRACE_LEVEL "APPL_TRACE_LEVEL"
-#define NAME_USE_RAW_NCI_TRACE "USE_RAW_NCI_TRACE"
-#define NAME_LOGCAT_FILTER "LOGCAT_FILTER"
-#define NAME_LPTD_CFG "LPTD_CFG"
-#define NAME_SCREEN_OFF_POWER_STATE "SCREEN_OFF_POWER_STATE"
-#define NAME_PREINIT_DSP_CFG "PREINIT_DSP_CFG"
-#define NAME_DTA_START_CFG "DTA_START_CFG"
-#define NAME_TRANSPORT_DRIVER "TRANSPORT_DRIVER"
-#define NAME_POWER_CONTROL_DRIVER "POWER_CONTROL_DRIVER"
-#define NAME_PROTOCOL_TRACE_LEVEL "PROTOCOL_TRACE_LEVEL"
-#define NAME_UART_PORT "UART_PORT"
-#define NAME_UART_BAUD "UART_BAUD"
-#define NAME_UART_PARITY "UART_PARITY"
-#define NAME_UART_STOPBITS "UART_STOPBITS"
-#define NAME_UART_DATABITS "UART_DATABITS"
-#define NAME_CLIENT_ADDRESS "BCMI2CNFC_ADDRESS"
-#define NAME_NFA_DM_START_UP_CFG "NFA_DM_START_UP_CFG"
-#define NAME_NFA_DM_CFG "NFA_DM_CFG"
-#define NAME_NFA_DM_LP_CFG "NFA_DM_LP_CFG"
-#define NAME_LOW_SPEED_TRANSPORT "LOW_SPEED_TRANSPORT"
-#define NAME_NFC_WAKE_DELAY "NFC_WAKE_DELAY"
-#define NAME_NFC_WRITE_DELAY "NFC_WRITE_DELAY"
-#define NAME_PERF_MEASURE_FREQ "REPORT_PERFORMANCE_MEASURE"
-#define NAME_READ_MULTI_PACKETS "READ_MULTIPLE_PACKETS"
-#define NAME_POWER_ON_DELAY "POWER_ON_DELAY"
-#define NAME_PRE_POWER_OFF_DELAY "PRE_POWER_OFF_DELAY"
-#define NAME_POST_POWER_OFF_DELAY "POST_POWER_OFF_DELAY"
-#define NAME_APPL_DTA_MODE "APPL_DTA_MODE"
-#define NAME_CE3_PRE_POWER_OFF_DELAY "CE3_PRE_POWER_OFF_DELAY"
-#define NAME_NFA_STORAGE "NFA_STORAGE"
-#define NAME_NFA_DM_START_UP_VSC_CFG "NFA_DM_START_UP_VSC_CFG"
-#define NAME_NFA_DTA_START_UP_VSC_CFG "NFA_DTA_START_UP_VSC_CFG"
-#define NAME_UICC_LISTEN_TECH_MASK "UICC_LISTEN_TECH_MASK"
-#define NAME_UICC_LISTEN_TECH_EX_MASK "UICC_LISTEN_TECH_EXCLUDE_MASK"
-#define NAME_SNOOZE_MODE_CFG "SNOOZE_MODE_CFG"
-#define NAME_NFA_DM_DISC_DURATION_POLL "NFA_DM_DISC_DURATION_POLL"
-#define NAME_SPD_DEBUG "SPD_DEBUG"
-#define NAME_SPD_MAXRETRYCOUNT "SPD_MAX_RETRY_COUNT"
-#define NAME_SPI_NEGOTIATION "SPI_NEGOTIATION"
-#define NAME_AID_FOR_EMPTY_SELECT "AID_FOR_EMPTY_SELECT"
-#define NAME_PRESERVE_STORAGE "PRESERVE_STORAGE"
-#define NAME_NFA_MAX_EE_SUPPORTED "NFA_MAX_EE_SUPPORTED"
-#define NAME_NFCC_ENABLE_TIMEOUT "NFCC_ENABLE_TIMEOUT"
-#define NAME_NFA_DM_PRE_DISCOVERY_CFG "NFA_DM_PRE_DISCOVERY_CFG"
-#define NAME_POLL_FREQUENCY "POLL_FREQUENCY"
-#define NAME_XTAL_HARDWARE_ID "XTAL_HARDWARE_ID"
-#define NAME_XTAL_FREQUENCY "XTAL_FREQUENCY"
-#define NAME_XTAL_FREQ_INDEX "XTAL_FREQ_INDEX"
-#define NAME_XTAL_PARAMS_CFG "XTAL_PARAMS_CFG"
-#define NAME_EXCLUSIVE_SE_ACCESS "EXCLUSIVE_SE_ACCESS"
-#define NAME_DBG_NO_UICC_IDLE_TIMEOUT_TOGGLING \
- "DBG_NO_UICC_IDLE_TIMEOUT_TOGGLING"
-#define NAME_PRESENCE_CHECK_ALGORITHM "PRESENCE_CHECK_ALGORITHM"
-#define NAME_ALLOW_NO_NVM "ALLOW_NO_NVM"
-#define NAME_DEVICE_HOST_WHITE_LIST "DEVICE_HOST_WHITE_LIST"
-#define NAME_POWER_OFF_MODE "POWER_OFF_MODE"
-#define NAME_GLOBAL_RESET "DO_GLOBAL_RESET"
-#define NAME_NCI_HAL_MODULE "NCI_HAL_MODULE"
-#define NAME_NFA_POLL_BAIL_OUT_MODE "NFA_POLL_BAIL_OUT_MODE"
-#define NAME_NFA_PROPRIETARY_CFG "NFA_PROPRIETARY_CFG"
-#define NAME_NFA_AID_BLOCK_ROUTE "NFA_AID_BLOCK_ROUTE"
-
-#define LPTD_PARAM_LEN (40)
-
-// default configuration
-#define default_transport "/dev/bcm2079x"
-#define default_storage_location "/data/nfc"
-
-struct tUART_CONFIG {
- int m_iBaudrate; // 115200
- int m_iDatabits; // 8
- int m_iParity; // 0 - none, 1 = odd, 2 = even
- int m_iStopbits;
-};
-
-extern struct tUART_CONFIG uartConfig;
-#define MAX_CHIPID_LEN (16)
-void readOptionalConfig(const char* option);
-
-/* Snooze mode configuration structure */
-typedef struct {
- unsigned char snooze_mode; /* Snooze Mode */
- unsigned char idle_threshold_dh; /* Idle Threshold Host */
- unsigned char idle_threshold_nfcc; /* Idle Threshold NFCC */
- unsigned char
- nfc_wake_active_mode; /* NFC_LP_ACTIVE_LOW or NFC_LP_ACTIVE_HIGH */
- unsigned char
- dh_wake_active_mode; /* NFC_LP_ACTIVE_LOW or NFC_LP_ACTIVE_HIGH */
-} tSNOOZE_MODE_CONFIG;
-#endif
diff --git a/src/hal/include/gki_hal_target.h b/src/include/gki_hal_target.h
similarity index 71%
rename from src/hal/include/gki_hal_target.h
rename to src/include/gki_hal_target.h
index 4b065c7..9ae1bfe 100644
--- a/src/hal/include/gki_hal_target.h
+++ b/src/include/gki_hal_target.h
@@ -215,51 +215,4 @@
#define GKI_SEND_MSG_FROM_ISR FALSE
#endif
-#define GKI_TRACE_0(m)
-#define GKI_TRACE_1(m, p1)
-#define GKI_TRACE_2(m, p1, p2)
-#define GKI_TRACE_3(m, p1, p2, p3)
-#define GKI_TRACE_4(m, p1, p2, p3, p4)
-#define GKI_TRACE_5(m, p1, p2, p3, p4, p5)
-#define GKI_TRACE_6(m, p1, p2, p3, p4, p5, p6)
-
-#define GKI_TRACE_ERROR_0(m) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m)
-#define GKI_TRACE_ERROR_1(m, p1) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m, p1)
-#define GKI_TRACE_ERROR_2(m, p1, p2) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m, p1, p2)
-#define GKI_TRACE_ERROR_3(m, p1, p2, p3) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m, p1, p2, p3)
-#define GKI_TRACE_ERROR_4(m, p1, p2, p3, p4) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m, p1, p2, p3, p4)
-#define GKI_TRACE_ERROR_5(m, p1, p2, p3, p4, p5) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m, p1, p2, p3, p4, p5)
-#define GKI_TRACE_ERROR_6(m, p1, p2, p3, p4, p5, p6) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m, p1, p2, p3, p4, p5, p6)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...);
-
-#ifdef __cplusplus
-}
-#endif
-
#endif /* GKI_TARGET_H */
diff --git a/src/include/gki_target.h b/src/include/gki_target.h
index 6413124..dfca10b 100644
--- a/src/include/gki_target.h
+++ b/src/include/gki_target.h
@@ -24,14 +24,6 @@
#include "data_types.h"
-/* Operating System Selection */
-#ifndef BTE_SIM_APP
-#define _GKI_ARM
-#define _GKI_STANDALONE
-#else
-#define _BT_WIN32
-#endif
-
/******************************************************************************
**
** Task configuration
@@ -176,7 +168,7 @@
/* The size of the buffers in pool 3. */
#ifndef GKI_BUF3_SIZE
-#define GKI_BUF3_SIZE 2500
+#define GKI_BUF3_SIZE (0xFFB0)
#endif
/* The number of buffers in buffer pool 3. */
@@ -361,51 +353,4 @@
#define GKI_BUF8_MAX 30
#endif
-#define GKI_TRACE_0(m)
-#define GKI_TRACE_1(m, p1)
-#define GKI_TRACE_2(m, p1, p2)
-#define GKI_TRACE_3(m, p1, p2, p3)
-#define GKI_TRACE_4(m, p1, p2, p3, p4)
-#define GKI_TRACE_5(m, p1, p2, p3, p4, p5)
-#define GKI_TRACE_6(m, p1, p2, p3, p4, p5, p6)
-
-#define GKI_TRACE_ERROR_0(m) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m)
-#define GKI_TRACE_ERROR_1(m, p1) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m, p1)
-#define GKI_TRACE_ERROR_2(m, p1, p2) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m, p1, p2)
-#define GKI_TRACE_ERROR_3(m, p1, p2, p3) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m, p1, p2, p3)
-#define GKI_TRACE_ERROR_4(m, p1, p2, p3, p4) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m, p1, p2, p3, p4)
-#define GKI_TRACE_ERROR_5(m, p1, p2, p3, p4, p5) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m, p1, p2, p3, p4, p5)
-#define GKI_TRACE_ERROR_6(m, p1, p2, p3, p4, p5, p6) \
- LogMsg( \
- TRACE_CTRL_GENERAL | TRACE_LAYER_GKI | TRACE_ORG_GKI | TRACE_TYPE_ERROR, \
- m, p1, p2, p3, p4, p5, p6)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...);
-
-#ifdef __cplusplus
-}
-#endif
-
#endif /* GKI_TARGET_H */
diff --git a/src/hal/include/nci_defs.h b/src/include/nci_defs.h
similarity index 77%
rename from src/hal/include/nci_defs.h
rename to src/include/nci_defs.h
index 1428e50..3cbe41b 100644
--- a/src/hal/include/nci_defs.h
+++ b/src/include/nci_defs.h
@@ -27,25 +27,17 @@
#include <stdint.h>
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define NCI_BRCM_CO_ID 0x2E
-
/* Define the message header size for all NCI Commands and Notifications.
*/
#define NCI_MSG_HDR_SIZE 3 /* per NCI spec */
#define NCI_DATA_HDR_SIZE 3 /* per NCI spec */
#define NCI_MAX_PAYLOAD_SIZE 0xFE
-#define NCI_MAX_CTRL_SIZE 0xFF /* max control message size */
#define NCI_CTRL_INIT_SIZE 32 /* initial NFCC control payload size */
#define NCI_MAX_VSC_SIZE 0xFF
#define APPL_DTA_MODE FALSE
/* NCI header (3) + callback function pointer(8; use 8 to be safe) + HCIT (1
* byte) */
#define NCI_VSC_MSG_HDR_SIZE 12
-#define NCI_TL_SIZE 2
/* Max frame size (256) - Prologue (1) - Epilogue (2) in ISO-DEP, CID and NAD
* are not used*/
@@ -66,12 +58,6 @@
#define NCI_MT_CMD 1 /* (NCI_MT_CMD << NCI_MT_SHIFT) = 0x20 */
#define NCI_MT_RSP 2 /* (NCI_MT_RSP << NCI_MT_SHIFT) = 0x40 */
#define NCI_MT_NTF 3 /* (NCI_MT_NTF << NCI_MT_SHIFT) = 0x60 */
-#define NCI_MT_CFG 4 /* (NCI_MT_CFG << NCI_MT_SHIFT) = 0x80 */
-
-#define NCI_MTS_CMD 0x20
-#define NCI_MTS_RSP 0x40
-#define NCI_MTS_NTF 0x60
-#define NCI_MTS_CFG 0x80
#define NCI_NTF_BIT 0x80 /* the tNFC_VS_EVT is a notification */
#define NCI_RSP_BIT 0x40 /* the tNFC_VS_EVT is a response */
@@ -79,18 +65,13 @@
/* for internal use only; not from specification */
/* the following 2 flags are used in layer_specific for fragmentation/reassembly
* of data packets */
-#define NCI_LS_DATA 0x00
-#define NCI_LS_DATA_PBF 0x01
/* PBF: Packet Boundary Flag (byte 0) */
#define NCI_PBF_MASK 0x10
#define NCI_PBF_SHIFT 4
-#define NCI_PBF_NO_OR_LAST 0x00 /* not fragmented or last fragment */
-#define NCI_PBF_ST_CONT 0x10 /* start or continuing fragment */
/* GID: Group Identifier (byte 0) */
#define NCI_GID_MASK 0x0F
-#define NCI_GID_SHIFT 0
#define NCI_GID_CORE 0x00 /* 0000b NCI Core group */
#define NCI_GID_RF_MANAGE 0x01 /* 0001b RF Management group */
#define NCI_GID_EE_MANAGE 0x02 /* 0010b NFCEE Management group */
@@ -115,26 +96,18 @@
#define NCI_MSG_BLD_HDR0(p, mt, gid) \
*(p)++ = (uint8_t)(((mt) << NCI_MT_SHIFT) | (gid));
-#define NCI_MSG_PBLD_HDR0(p, mt, pbf, gid) \
- *(p)++ = (uint8_t)(((mt) << NCI_MT_SHIFT) | ((pbf) << NCI_PBF_SHIFT) | (gid));
-
/* builds byte1 of NCI Command and Notification packet */
#define NCI_MSG_BLD_HDR1(p, oid) *(p)++ = (uint8_t)(((oid) << NCI_OID_SHIFT));
/* parse byte0 of NCI packet */
-#define NCI_MSG_PRS_HDR0(p, mt, pbf, gid) \
- mt = (*(p)&NCI_MT_MASK) >> NCI_MT_SHIFT; \
- pbf = (*(p)&NCI_PBF_MASK) >> NCI_PBF_SHIFT; \
- gid = *(p)++ & NCI_GID_MASK;
-
-/* parse MT and PBF bits of NCI packet */
-#define NCI_MSG_PRS_MT_PBF(p, mt, pbf) \
- mt = (*(p)&NCI_MT_MASK) >> NCI_MT_SHIFT; \
- pbf = (*(p)&NCI_PBF_MASK) >> NCI_PBF_SHIFT;
+#define NCI_MSG_PRS_HDR0(p, mt, pbf, gid) \
+ mt = (*(p)&NCI_MT_MASK) >> NCI_MT_SHIFT; \
+ (pbf) = (*(p)&NCI_PBF_MASK) >> NCI_PBF_SHIFT; \
+ (gid) = *(p)++ & NCI_GID_MASK;
/* parse byte1 of NCI Cmd/Ntf */
#define NCI_MSG_PRS_HDR1(p, oid) \
- oid = (*(p)&NCI_OID_MASK); \
+ (oid) = (*(p)&NCI_OID_MASK); \
(p)++;
/* NCI Data Format:
@@ -145,12 +118,6 @@
* is predefined */
#define NCI_CID_MASK 0x0F
-/* builds 3-byte message header of NCI Data packet */
-#define NCI_DATA_BLD_HDR(p, cid, len) \
- *(p)++ = (uint8_t)(cid); \
- *(p)++ = 0; \
- *(p)++ = (uint8_t)(len);
-
#define NCI_DATA_PBLD_HDR(p, pbf, cid, len) \
*(p)++ = (uint8_t)(((pbf) << NCI_PBF_SHIFT) | (cid)); \
*(p)++ = 0; \
@@ -159,14 +126,13 @@
#define NCI_DATA_PRS_HDR(p, pbf, cid, len) \
(pbf) = (*(p)&NCI_PBF_MASK) >> NCI_PBF_SHIFT; \
(cid) = (*(p)&NCI_CID_MASK); \
- p++; \
- p++; \
+ (p)++; \
+ (p)++; \
(len) = *(p)++;
/* Logical target ID 0x01-0xFE */
/* CORE_RESET_NTF reset trigger type*/
-#define NCI2_0_RESET_TRIGGER_TYPE_ERROR 0x00
#define NCI2_0_RESET_TRIGGER_TYPE_POWERED_ON 0x01
#define NCI2_0_RESET_TRIGGER_TYPE_CORE_RESET_CMD_RECEIVED 0x02
@@ -183,6 +149,7 @@
#define NCI_STATUS_UNKNOWN_OID 0x08
#define NCI_STATUS_INVALID_PARAM 0x09
#define NCI_STATUS_MSG_SIZE_TOO_BIG 0x0A
+#define NCI_STATUS_NOT_SUPPORTED 0x0B
/* discovery */
#define NCI_STATUS_ALREADY_STARTED 0xA0
#define NCI_STATUS_ACTIVATION_FAILED 0xA1
@@ -197,8 +164,6 @@
#define NCI_STATUS_EE_PROTOCOL_ERR 0xC2
#define NCI_STATUS_EE_TIMEOUT 0xC3
-typedef uint8_t tNCI_STATUS;
-
/* RF Technologies */
#define NCI_RF_TECHNOLOGY_A 0x00
#define NCI_RF_TECHNOLOGY_B 0x01
@@ -250,7 +215,8 @@
**********************************************/
#define NCI_MSG_NFCEE_DISCOVER 0
#define NCI_MSG_NFCEE_MODE_SET 1
-
+#define NCI_MSG_NFCEE_STATUS 2
+#define NCI_MSG_NFCEE_POWER_LINK_CTRL 3
/**********************************************
* NCI Proprietary Group - F
**********************************************/
@@ -259,73 +225,41 @@
* NCI Core Group Params
**********************************************/
#define NCI_CORE_PARAM_SIZE_RESET 0x01
-#define NCI_CORE_PARAM_SIZE_RESET_RSP 0x03
-#define NCI_CORE_PARAM_SIZE_RESET_NTF 0x02
+
+/**********************************************
+ * NCI Feature Bit
+ **********************************************/
+#define NCI_FEAT_HCI_NETWORK 0x00000008
#define NCI_CORE_PARAM_SIZE_INIT(X) (((X) == NCI_VERSION_2_0) ? (0x02) : (0x00))
#define NCI2_0_CORE_INIT_CMD_BYTE_0 0x00
#define NCI2_0_CORE_INIT_CMD_BYTE_1 0x00
-#define NCI_CORE_PARAM_SIZE_INIT_RSP 0x11
-#define NCI_CORE_INIT_RSP_OFFSET_NUM_INTF 0x05
/* Status (1 octet) and number of params */
-#define NCI_CORE_PARAM_SIZE_SET_CONFIG_RSP 0x02
#define NCI_CORE_PARAM_SIZE_SET_POWER_SUB_STATE 0x01
-/* octet 0 */
-#define NCI_FEAT_DISCOVERY_FREG 0x00000001
-#define NCI_FEAT_DISCOVERY_CFGM 0x00000006
-/* octet 1 */
-#define NCI_FEAT_TECHNOLOGY_ROUTING 0x00000200
-#define NCI_FEAT_PROTOCOL_ROUTING 0x00000400
-#define NCI_FEAT_AID_ROUTING 0x00000800
-/* octet 2 */
-#define NCI_FEAT_BATTERY_OFF_MD 0x00010000
-#define NCI_FEAT_SWITCH_OFF_MD 0x00020000
-
-/* supported Interfaces */
-#define NCI_SUP_INTF_FRAME 0x0001
-#define NCI_SUP_INTF_ISO_DEP 0x0002
-#define NCI_SUP_INTF_NFC_DEP 0x0004
-
#define NCI_CORE_PARAM_SIZE_CON_CREATE 0x02 /* handle, num_tlv, (tlv) */
/* status, size, credits, conn_id */
-#define NCI_CORE_PARAM_SIZE_CON_CREATE_RSP 0x04
-#define NCI_CON_CREATE_TAG_EE_INTF 0x00 /* old */
#define NCI_CON_CREATE_TAG_RF_DISC_ID 0x00
#define NCI_CON_CREATE_TAG_NFCEE_VAL 0x01
#define NCI_CORE_PARAM_SIZE_CON_CLOSE 0x01 /* Conn ID (1 octet) */
-#define NCI_CORE_PARAM_SIZE_CON_CLOSE_RSP 0x01 /* Status (1 octet) */
-/* RF Field Status (1 octet) */
-#define NCI_CORE_PARAM_SIZE_RF_FIELD_NTF 0x01
-
-/* Keep the NCI configuration (if possible) and perform NCI initialization. */
-#define NCI_RESET_TYPE_KEEP_CFG 0x00
/* Reset the NCI configuration, and perform NCI initialization. */
#define NCI_RESET_TYPE_RESET_CFG 0x01
-/* NCI Configuration has been kept */
-#define NCI_RESET_STATUS_KEPT_CFG 0x00
-/* NCI Configuration has been reset */
-#define NCI_RESET_STATUS_RESET_CFG 0x01
-
/* No operating field generated by remote device */
#define NCI_RF_STS_NO_REMOTE 0x00
/* Operating field generated by remote device */
#define NCI_RF_STS_REMOTE 0x01
-#define NCI_PARAM_SIZE_DISCOVER_NFCEE 0x01 /* Discovery Action (1 octet) */
-/* Status (1 octet)Number of NFCEEs (1 octet) */
-#define NCI_PARAM_SIZE_DISCOVER_NFCEE_RSP 0x02
+/* Discovery Action (1 octet) */
+#define NCI_PARAM_SIZE_DISCOVER_NFCEE(X) \
+ (((X) == NCI_VERSION_2_0) ? 0X00 : 0X01)
#define NCI_DISCOVER_ACTION_DISABLE 0
#define NCI_DISCOVER_ACTION_ENABLE 1
-#define NCI_EE_DISCOVER_REQ_TYPE_LISTEN 0x01
-#define NCI_EE_DISCOVER_REQ_TYPE_POLL 0x02
-
#define NCI_RF_PARAM_ID_TECH_N_MODE 0x00 /* RF Technology and Mode */
#define NCI_RF_PARAM_ID_TX_BIT_RATE 0x01 /* Transmit Bit Rate */
#define NCI_RF_PARAM_ID_RX_BIT_RATE 0x02 /* Receive Bit Rate */
@@ -338,15 +272,21 @@
#define NCI_NFCEE_INTERFACE_T3T 0x02
#define NCI_NFCEE_INTERFACE_TRANSPARENT 0x03
#define NCI_NFCEE_INTERFACE_PROPRIETARY 0x80
+/****************************************************
+ * NCI NFCEE INterface specific status Codes
+ ****************************************************/
+#define NCI_NFCEE_STS_UNRECOVERABLE_ERROR 0x00
+#define NCI_NFCEE_STS_INTF_ACTIVATION_FAILED 0xC0
+#define NCI_NFCEE_STS_TRANSMISSION_ERROR 0xC1
+#define NCI_NFCEE_STS_PROTOCOL_ERROR 0xC2
+#define NCI_NFCEE_STS_TIMEOUT_ERROR 0xC3
#define NCI_NFCEE_STS_CONN_ACTIVE 0x00
#define NCI_NFCEE_STS_CONN_INACTIVE 0x01
#define NCI_NFCEE_STS_REMOVED 0x02
-#define NCI_NUM_NFCEE_STS 3
/* Logical Target ID (1 octet)NFCEE Mode (1 octet) */
#define NCI_CORE_PARAM_SIZE_NFCEE_MODE_SET 0x02
-#define NCI_CORE_PARAM_SIZE_NFCEE_MODE_SET_RSP 0x01 /* Status (1 octet) */
/* Deactivate the connected NFCEE */
#define NCI_NFCEE_MD_DEACTIVATE 0x00
@@ -372,11 +312,15 @@
/* DH Request Failed due to error */
#define NCI_DEACTIVATE_REASON_DH_REQ_FAILED 4
+/* The NFCEE status in NFCEE Status Notification */
+typedef uint8_t tNCI_EE_NTF_STATUS;
+
+/* NFCEE Power and Link Configuration */
+typedef uint8_t tNCI_NFCEE_PL_CONFIG;
+
/**********************************************
* NCI Interface Mode
**********************************************/
-#define NCI_INTERFACE_MODE_POLL 1
-#define NCI_INTERFACE_MODE_LISTEN 2
#define NCI_INTERFACE_MODE_POLL_N_LISTEN 3
/**********************************************
@@ -394,15 +338,9 @@
/**********************************************
* NCI RF Management / DISCOVERY Group Params
**********************************************/
-#define NCI_DISCOVER_PARAM_SIZE_RSP 0x01
#define NCI_DISCOVER_PARAM_SIZE_SELECT 0x03 /* ID, protocol, interface */
-#define NCI_DISCOVER_PARAM_SIZE_SELECT_RSP 0x01 /* Status (1 octet) */
-#define NCI_DISCOVER_PARAM_SIZE_STOP 0x00 /* */
-#define NCI_DISCOVER_PARAM_SIZE_STOP_RSP 0x01 /* Status (1 octet) */
#define NCI_DISCOVER_PARAM_SIZE_DEACT 0x01 /* type */
-#define NCI_DISCOVER_PARAM_SIZE_DEACT_RSP 0x01 /* Status (1 octet) */
-#define NCI_DISCOVER_PARAM_SIZE_DEACT_NTF 0x01 /* type */
/**********************************************
* Supported Protocols
@@ -432,7 +370,6 @@
#define NCI_DISCOVERY_TYPE_LISTEN_ACTIVE 0x83
#define NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE 0x85
#define NCI_DISCOVERY_TYPE_LISTEN_ISO15693 0x86
-#define NCI_DISCOVERY_TYPE_MAX NCI_DISCOVERY_TYPE_LISTEN_ISO15693
typedef uint8_t tNCI_DISCOVERY_TYPE;
@@ -442,28 +379,32 @@
#define NCI_EE_TRIG_APP_INIT 0x10
#define NCI_EE_ACT_TAG_AID 0xC0 /* AID */
-#define NCI_EE_ACT_TAG_PROTO 0xC1 /* RF protocol */
-#define NCI_EE_ACT_TAG_TECH 0xC2 /* RF technology */
#define NCI_EE_ACT_TAG_DATA 0xC3 /* hex data for app */
-#define NCI_EE_ACT_TAG_DEBUG 0xC4 /* debug trace */
+/* NFCEE ID (1 octet) PL config (1 octet) */
+#define NCI_CORE_PARAM_SIZE_NFCEE_PL_CTRL 0x02
+/* Status (1 octet) */
/* Technology based routing */
#define NCI_ROUTE_TAG_TECH 0x00
/* Protocol based routing */
#define NCI_ROUTE_TAG_PROTO 0x01
#define NCI_ROUTE_TAG_AID 0x02 /* AID routing */
+#define NCI_ROUTE_TAG_SYSCODE 0x03 /* SystemCode routing */
#define NCI_ROUTE_PWR_STATE_ON 0x01 /* The device is on */
/* The device is switched off */
#define NCI_ROUTE_PWR_STATE_SWITCH_OFF 0x02
/* The device's battery is removed */
#define NCI_ROUTE_PWR_STATE_BATT_OFF 0x04
-/* The device is in screen off Unlock mode */
-#define NCI_ROUTE_PWR_STATE_SCREEN_OFF_UNLOCK 0x08
-/* The device is in screen on lock mode */
-#define NCI_ROUTE_PWR_STATE_SCREEN_ON_LOCK 0x10
-/* The device is in screen off lock mode */
-#define NCI_ROUTE_PWR_STATE_SCREEN_OFF_LOCK 0x20
+/* The device is screen off Unlock mode */
+#define NCI_ROUTE_PWR_STATE_SCREEN_OFF_UNLOCK() \
+ ((NFC_GetNCIVersion() == NCI_VERSION_2_0) ? 0x08 : 0x80)
+/* The device is screen on lock mode */
+#define NCI_ROUTE_PWR_STATE_SCREEN_ON_LOCK() \
+ ((NFC_GetNCIVersion() == NCI_VERSION_2_0) ? 0x10 : 0x40)
+/* The device is screen off lock mode */
+#define NCI_ROUTE_PWR_STATE_SCREEN_OFF_LOCK() \
+ ((NFC_GetNCIVersion() == NCI_VERSION_2_0) ? 0x20 : 0x00)
/* Hardware / Registration Identification */
#define NCI_NFCEE_TAG_HW_ID 0x00
@@ -546,25 +487,8 @@
#define NCI_PARAM_ID_ATR_RSP_CONFIG 0x62
#define NCI_PARAM_ID_RF_FIELD_INFO 0x80
-#define NCI_PARAM_ID_RF_NFCEE_ACTION 0x81
#define NCI_PARAM_ID_NFC_DEP_OP 0x82
-/* NCI_PARAM_ID_HOST_LISTEN_MASK (byte1 for DH, byte2 for UICC) */
-/* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_A_PASSIVE & 0x0F)) */
-#define NCI_LISTEN_MASK_A 0x01
-/* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_B_PASSIVE & 0x0F)) */
-#define NCI_LISTEN_MASK_B 0x02
-/* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_F_PASSIVE & 0x0F)) */
-#define NCI_LISTEN_MASK_F 0x04
-/* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_A_ACTIVE & 0x0F)) */
-#define NCI_LISTEN_MASK_A_ACTIVE 0x08
-/* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_B_PRIME & 0x0F)) */
-#define NCI_LISTEN_MASK_B_PRIME 0x10
-/* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE & 0x0F)) */
-#define NCI_LISTEN_MASK_F_ACTIVE 0x20
-/* (0x01 << (NCI_DISCOVERY_TYPE_LISTEN_ISO15693 & 0x0F)) */
-#define NCI_LISTEN_MASK_ISO15693 0x40
-
/* Type A Parameters */
#define NCI_PARAM_PLATFORM_T1T 0x0C
#define NCI_PARAM_SEL_INFO_ISODEP 0x20
@@ -576,8 +500,6 @@
#define NCI_PARAM_LEN_CON_DISCOVERY_PARAM 1
-#define NCI_PARAM_LEN_PA_FSDI 1
-
#define NCI_PARAM_LEN_PF_RC 1
#define NCI_PARAM_LEN_LA_BIT_FRAME_SDD 1
@@ -596,8 +518,6 @@
#define NCI_PARAM_LEN_LF_CON_ADV_FEAT 1
#define NCI_PARAM_LEN_LF_T3T_RD_ALLOWED 1 // Listen F NCI2.0 Parameter
-#define NCI_PARAM_LEN_LF_T3T_ID_MAX 16 // LF T3T indentifier Max Value 16
-#define NFA_CE_LISTEN_INFO_LF_MAX 16 // LF T3T indentifier Max Value 16
#define NCI_PARAM_LEN_FWI 1
#define NCI_PARAM_LEN_WT 1
@@ -608,11 +528,8 @@
#define NCI_LISTEN_PROTOCOL_ISO_DEP 0x01
#define NCI_LISTEN_PROTOCOL_NFC_DEP 0x02
-#define NCI_DISCOVER_PARAM_SIZE_TEST_RF 0x06
-
/* LF_T3T_FLAGS2 listen bits all-disabled definition */
#define NCI_LF_T3T_FLAGS2_ALL_DISABLED 0x0000
-#define NCI_LF_T3T_FLAGS2_ID1_ENABLED 0x0001
/* The DH-NFCEE listen is considered as a enable NFCEE */
#define NCI_LISTEN_DH_NFCEE_ENABLE_MASK 0x00
@@ -622,8 +539,9 @@
#define NCI_POLLING_DH_DISABLE_MASK 0x00
/* The DH polling is considered as a enable NFCEE */
#define NCI_POLLING_DH_ENABLE_MASK 0x01
+/* SCBR support check with Core Init resp OCT1 byte */
+#define NCI_SCBR_MASK 0x10
-#define NCI_ROUTE_QUAL_MASK 0x70
/* AID matching is allowed when the SELECT AID is longer */
#define NCI_ROUTE_QUAL_LONG_SELECT 0x10
/* AID matching is allowed when the SELECT AID is shorter */
@@ -631,28 +549,6 @@
/* AID is blocked in unsupported power mode */
#define NCI_ROUTE_QUAL_BLOCK_ROUTE 0x40
-typedef struct {
- uint16_t addr;
- uint8_t len;
- uint8_t* data;
-} NCIP_T1T_SETMEM_CMD_t;
-
-typedef struct { uint8_t status; } NCIP_T1T_SETMEM_RSP_t;
-
-typedef struct { uint16_t addr; } NCIP_T1T_GETMEM_CMD_t;
-
-typedef struct {
- uint8_t status;
- uint8_t* data;
-} NCIP_T1T_GETMEM_RSP_t;
-
-typedef struct {
- uint8_t hr0;
- uint8_t hr1;
-} NCIP_T1T_SETHR_CMD_t;
-
-typedef struct { uint8_t status; } NCIP_T1T_SETHR_RSP_t;
-
#ifndef NCI_GET_CMD_BUF
#if (HCI_USE_VARIABLE_SIZE_CMD_BUF == FALSE)
/* Allocate fixed-size buffer from HCI_CMD_POOL (default case) */
@@ -698,8 +594,6 @@
} tNCI_RF_PB_PARAMS;
#define NCI_MAX_SENSF_RES_LEN 18
-#define NCI_SENSF_RES_OFFSET_PAD0 8
-#define NCI_SENSF_RES_OFFSET_RD 16
#define NCI_NFCID2_LEN 8
#define NCI_T3T_PMM_LEN 8
#define NCI_SYSTEMCODE_LEN 2
@@ -719,16 +613,6 @@
Interface */
} tNCI_RF_LF_PARAMS;
-typedef struct {
- tNCI_DISCOVERY_TYPE mode;
- union {
- tNCI_RF_PA_PARAMS pa;
- tNCI_RF_PB_PARAMS pb;
- tNCI_RF_PF_PARAMS pf;
- tNCI_RF_LF_PARAMS lf;
- } param; /* Discovery Type specific parameters */
-} tNCI_RF_TECH_PARAMS;
-
#ifndef NCI_MAX_ATS_LEN
#define NCI_MAX_ATS_LEN 60
#endif
@@ -743,7 +627,6 @@
#define NCI_ATS_TC_MASK 0x40
#define NCI_ATS_TB_MASK 0x20
#define NCI_ATS_TA_MASK 0x10
-#define NCI_ATS_FSCI_MASK 0x0F
typedef struct {
uint8_t ats_res_len; /* Length of ATS RES */
uint8_t ats_res[NCI_MAX_ATS_LEN]; /* ATS RES defined in [DIGPROT] */
@@ -785,20 +668,6 @@
} tNCI_INTF_LB_ISO_DEP;
typedef struct {
- tNCI_INTF_TYPE type; /* Interface Type 1 Byte See Table 67 */
- union {
- tNCI_INTF_LA_ISO_DEP la_iso;
- tNCI_INTF_PA_ISO_DEP pa_iso;
- tNCI_INTF_LB_ISO_DEP lb_iso;
- tNCI_INTF_PB_ISO_DEP pb_iso;
- tNCI_INTF_LA_NFC_DEP la_nfc;
- tNCI_INTF_PA_NFC_DEP pa_nfc;
- tNCI_INTF_LF_NFC_DEP lf_nfc;
- tNCI_INTF_PF_NFC_DEP pf_nfc;
- } intf_param; /* Activation Parameters 0 - n Bytes */
-} tNCI_INTF_PARAMS;
-
-typedef struct {
uint8_t atr_res_len; /* Length of ATR_RES */
uint8_t atr_res[NCI_MAX_ATS_LEN]; /* ATR_RES (Byte 3 - Byte 17+n) */
uint8_t max_payload_size; /* 64, 128, 192 or 254 */
@@ -807,8 +676,5 @@
uint8_t waiting_time; /* WT -> Response Waiting Time
RWT = (256 x 16/fC) x 2WT */
} tNCI_RF_ACM_P_PARAMS;
-#ifdef __cplusplus
-}
-#endif
#endif /* NFC_NCI_DEFS_H */
diff --git a/src/include/nfc_brcm_defs.h b/src/include/nfc_brcm_defs.h
new file mode 100644
index 0000000..16a3e20
--- /dev/null
+++ b/src/include/nfc_brcm_defs.h
@@ -0,0 +1,91 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2012-2014 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.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * This file contains the Broadcom-specific defintions that are shared
+ * between HAL, nfc stack, adaptation layer and applications.
+ *
+ ******************************************************************************/
+
+#ifndef NFC_BRCM_DEFS_H
+#define NFC_BRCM_DEFS_H
+
+/**********************************************
+ * NCI Message Proprietary Group - F
+ **********************************************/
+#define NCI_MSG_GET_BUILD_INFO 0x04
+#define NCI_MSG_HCI_NETWK 0x05
+#define NCI_MSG_POWER_LEVEL 0x08
+#define NCI_MSG_UICC_READER_ACTION 0x0A
+/* reset HCI network/close all pipes (S,D) register */
+#define NCI_MSG_GET_NV_DEVICE 0x24
+#define NCI_MSG_LPTD 0x25
+#define NCI_MSG_EEPROM_RW 0x29
+#define NCI_MSG_GET_PATCH_VERSION 0x2D
+#define NCI_MSG_SECURE_PATCH_DOWNLOAD 0x2E
+
+/* Secure Patch Download definitions (patch type definitions) */
+#define NCI_SPD_TYPE_HEADER 0x00
+
+/**********************************************
+ * NCI Interface Types
+ **********************************************/
+#define NCI_INTERFACE_VS_MIFARE 0x80
+#define NCI_INTERFACE_VS_T2T_CE 0x82 /* for Card Emulation side */
+
+/**********************************************
+ * NCI Proprietary Parameter IDs
+ **********************************************/
+#define NCI_PARAM_ID_HOST_LISTEN_MASK 0xA2
+#define NCI_PARAM_ID_TAGSNIFF_CFG 0xB9
+#define NCI_PARAM_ID_ACT_ORDER 0xC5
+
+#define NFC_SNOOZE_MODE_UART 0x01 /* Snooze mode for UART */
+
+#define NFC_SNOOZE_ACTIVE_LOW 0x00 /* high to low voltage is asserting */
+
+/**********************************************
+ * HCI definitions
+ **********************************************/
+#define NFC_HAL_HCI_SESSION_ID_LEN 8
+#define NFC_HAL_HCI_SYNC_ID_LEN 2
+
+/* Card emulation RF Gate A definitions */
+#define NFC_HAL_HCI_CE_RF_A_UID_REG_LEN 10
+#define NFC_HAL_HCI_CE_RF_A_ATQA_RSP_CODE_LEN 2
+#define NFC_HAL_HCI_CE_RF_A_MAX_HIST_DATA_LEN 15
+#define NFC_HAL_HCI_CE_RF_A_MAX_DATA_RATE_LEN 3
+
+/* Card emulation RF Gate B definitions */
+#define NFC_HAL_HCI_CE_RF_B_PUPI_LEN 4
+#define NFC_HAL_HCI_CE_RF_B_ATQB_LEN 4
+#define NFC_HAL_HCI_CE_RF_B_HIGHER_LAYER_RSP_LEN 61
+#define NFC_HAL_HCI_CE_RF_B_MAX_DATA_RATE_LEN 3
+
+/* Card emulation RF Gate BP definitions */
+#define NFC_HAL_HCI_CE_RF_BP_MAX_PAT_IN_LEN 8
+#define NFC_HAL_HCI_CE_RF_BP_DATA_OUT_LEN 40
+
+/* Reader RF Gate A definitions */
+#define NFC_HAL_HCI_RD_RF_B_HIGHER_LAYER_DATA_LEN 61
+
+/* DH HCI Network command definitions */
+#define NFC_HAL_HCI_DH_MAX_DYN_PIPES 20
+
+#endif /* NFC_BRCM_DEFS_H */
diff --git a/src/include/nfc_config.h b/src/include/nfc_config.h
new file mode 100644
index 0000000..c3687d9
--- /dev/null
+++ b/src/include/nfc_config.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2017 The Android Open Source Project
+ *
+ * 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.
+ */
+#pragma once
+
+#include <string>
+#include <vector>
+
+#include <config.h>
+
+/* Configs from libnfc-nci.conf */
+#define NAME_NFC_DEBUG_ENABLED "NFC_DEBUG_ENABLED"
+#define NAME_NFA_STORAGE "NFA_STORAGE"
+#define NAME_PRESERVE_STORAGE "PRESERVE_STORAGE"
+#define NAME_POLLING_TECH_MASK "POLLING_TECH_MASK"
+#define NAME_P2P_LISTEN_TECH_MASK "P2P_LISTEN_TECH_MASK"
+#define NAME_UICC_LISTEN_TECH_MASK "UICC_LISTEN_TECH_MASK"
+#define NAME_NFA_DM_CFG "NFA_DM_CFG"
+#define NAME_SCREEN_OFF_POWER_STATE "SCREEN_OFF_POWER_STATE"
+#define NAME_NFA_MAX_EE_SUPPORTED "NFA_MAX_EE_SUPPORTED"
+#define NAME_NFA_DM_DISC_DURATION_POLL "NFA_DM_DISC_DURATION_POLL"
+#define NAME_POLL_FREQUENCY "POLL_FREQUENCY"
+#define NAME_NFA_AID_BLOCK_ROUTE "NFA_AID_BLOCK_ROUTE"
+#define NAME_AID_FOR_EMPTY_SELECT "AID_FOR_EMPTY_SELECT"
+#define NAME_AID_MATCHING_MODE "AID_MATCHING_MODE"
+#define NAME_OFFHOST_AID_ROUTE_PWR_STATE "OFFHOST_AID_ROUTE_PWR_STATE"
+
+/* Configs from vendor interface */
+#define NAME_NFA_POLL_BAIL_OUT_MODE "NFA_POLL_BAIL_OUT_MODE"
+#define NAME_PRESENCE_CHECK_ALGORITHM "PRESENCE_CHECK_ALGORITHM"
+#define NAME_NFA_PROPRIETARY_CFG "NFA_PROPRIETARY_CFG"
+#define NAME_DEFAULT_OFFHOST_ROUTE "DEFAULT_OFFHOST_ROUTE"
+#define NAME_DEFAULT_NFCF_ROUTE "DEFAULT_NFCF_ROUTE"
+#define NAME_DEFAULT_SYS_CODE "DEFAULT_SYS_CODE"
+#define NAME_DEFAULT_SYS_CODE_ROUTE "DEFAULT_SYS_CODE_ROUTE"
+#define NAME_DEFAULT_SYS_CODE_PWR_STATE "DEFAULT_SYS_CODE_PWR_STATE"
+#define NAME_DEFAULT_ROUTE "DEFAULT_ROUTE"
+#define NAME_OFF_HOST_ESE_PIPE_ID "OFF_HOST_ESE_PIPE_ID"
+#define NAME_OFF_HOST_SIM_PIPE_ID "OFF_HOST_SIM_PIPE_ID"
+#define NAME_ISO_DEP_MAX_TRANSCEIVE "ISO_DEP_MAX_TRANSCEIVE"
+#define NAME_DEVICE_HOST_WHITE_LIST "DEVICE_HOST_WHITE_LIST"
+
+class NfcConfig {
+ public:
+ static bool hasKey(const std::string& key);
+ static std::string getString(const std::string& key);
+ static std::string getString(const std::string& key,
+ std::string default_value);
+ static unsigned getUnsigned(const std::string& key);
+ static unsigned getUnsigned(const std::string& key, unsigned default_value);
+ static std::vector<uint8_t> getBytes(const std::string& key);
+ static void clear();
+
+ private:
+ void loadConfig();
+ static NfcConfig& getInstance();
+ NfcConfig();
+
+ ConfigFile config_;
+};
diff --git a/src/include/nfc_hal_api.h b/src/include/nfc_hal_api.h
new file mode 100644
index 0000000..205c6f7
--- /dev/null
+++ b/src/include/nfc_hal_api.h
@@ -0,0 +1,70 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2012-2014 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.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * NFC Hardware Abstraction Layer API
+ *
+ ******************************************************************************/
+#ifndef NFC_HAL_API_H
+#define NFC_HAL_API_H
+#include <hardware/nfc.h>
+#include "data_types.h"
+#include "nfc_hal_target.h"
+
+typedef uint8_t tHAL_NFC_STATUS;
+typedef void(tHAL_NFC_STATUS_CBACK)(tHAL_NFC_STATUS status);
+typedef void(tHAL_NFC_CBACK)(uint8_t event, tHAL_NFC_STATUS status);
+typedef void(tHAL_NFC_DATA_CBACK)(uint16_t data_len, uint8_t* p_data);
+
+/*******************************************************************************
+** tHAL_NFC_ENTRY HAL entry-point lookup table
+*******************************************************************************/
+
+typedef void(tHAL_API_INITIALIZE)(void);
+typedef void(tHAL_API_TERMINATE)(void);
+typedef void(tHAL_API_OPEN)(tHAL_NFC_CBACK* p_hal_cback,
+ tHAL_NFC_DATA_CBACK* p_data_cback);
+typedef void(tHAL_API_CLOSE)(void);
+typedef void(tHAL_API_CORE_INITIALIZED)(uint16_t data_len,
+ uint8_t* p_core_init_rsp_params);
+typedef void(tHAL_API_WRITE)(uint16_t data_len, uint8_t* p_data);
+typedef bool(tHAL_API_PREDISCOVER)(void);
+typedef void(tHAL_API_CONTROL_GRANTED)(void);
+typedef void(tHAL_API_POWER_CYCLE)(void);
+typedef uint8_t(tHAL_API_GET_MAX_NFCEE)(void);
+
+typedef struct {
+ tHAL_API_INITIALIZE* initialize;
+ tHAL_API_TERMINATE* terminate;
+ tHAL_API_OPEN* open;
+ tHAL_API_CLOSE* close;
+ tHAL_API_CORE_INITIALIZED* core_initialized;
+ tHAL_API_WRITE* write;
+ tHAL_API_PREDISCOVER* prediscover;
+ tHAL_API_CONTROL_GRANTED* control_granted;
+ tHAL_API_POWER_CYCLE* power_cycle;
+ tHAL_API_GET_MAX_NFCEE* get_max_ee;
+
+} tHAL_NFC_ENTRY;
+
+/*******************************************************************************
+** HAL API Function Prototypes
+*******************************************************************************/
+
+#endif /* NFC_HAL_API_H */
diff --git a/src/include/nfc_hal_int.h b/src/include/nfc_hal_int.h
new file mode 100644
index 0000000..b33a38b
--- /dev/null
+++ b/src/include/nfc_hal_int.h
@@ -0,0 +1,279 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2009-2014 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.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * this file contains the NCI transport internal definitions and functions.
+ *
+ ******************************************************************************/
+
+#ifndef NFC_HAL_INT_H
+#define NFC_HAL_INT_H
+
+#include "gki.h"
+#include "nci_defs.h"
+#include "nfc_brcm_defs.h"
+#include "nfc_hal_api.h"
+#include "nfc_hal_int_api.h"
+#include "nfc_hal_target.h"
+
+using android::base::StringPrintf;
+
+/* NFC HAL Task Timer events */
+#ifndef NFC_HAL_QUICK_TIMER_EVT_MASK
+#define NFC_HAL_QUICK_TIMER_EVT_MASK (TIMER_0_EVT_MASK)
+#endif
+
+#ifndef NFC_HAL_QUICK_TIMER_ID
+#define NFC_HAL_QUICK_TIMER_ID (TIMER_0)
+#endif
+
+typedef uint8_t tNFC_HAL_WAIT_RSP;
+
+#if (NFC_HAL_HCI_INCLUDED == TRUE)
+
+#endif
+
+/* NFC HAL transport configuration */
+typedef struct {
+ bool shared_transport; /* TRUE if using shared HCI/NCI transport */
+ uint8_t userial_baud;
+ uint8_t userial_fc;
+} tNFC_HAL_TRANS_CFG;
+
+#ifdef TESTER
+/* For Insight, ncit_cfg is runtime-configurable */
+#define NFC_HAL_TRANS_CFG_QUALIFIER
+#else
+/* For all other platforms, ncit_cfg is constant */
+#define NFC_HAL_TRANS_CFG_QUALIFIER const
+#endif
+extern NFC_HAL_TRANS_CFG_QUALIFIER tNFC_HAL_TRANS_CFG nfc_hal_trans_cfg;
+
+/****************************************************************************
+** Internal constants and definitions
+****************************************************************************/
+
+typedef uint8_t tNFC_HAL_NCI_RAS;
+
+typedef uint8_t tNFC_HAL_POWER_MODE;
+
+#define NFC_HAL_SAVED_HDR_SIZE (2)
+#define NFC_HAL_SAVED_CMD_SIZE (2)
+
+#ifndef NFC_HAL_DEBUG
+#define NFC_HAL_DEBUG TRUE
+#endif
+
+#if (NFC_HAL_DEBUG == TRUE)
+extern bool nfc_debug_enabled;
+extern const char* const nfc_hal_init_state_str[];
+#define NFC_HAL_SET_INIT_STATE(state) \
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf( \
+ "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;
+#else
+#define NFC_HAL_SET_INIT_STATE(state) \
+ nfc_hal_cb.dev_cb.initializing_state = state;
+#endif
+
+typedef uint8_t tNFC_HAL_INIT_STATE;
+
+typedef uint8_t tNFC_HAL_DM_CONFIG;
+
+/* callback function prototype */
+typedef struct {
+ uint16_t opcode;
+ uint16_t param_len;
+ uint8_t* p_param_buf;
+} tNFC_HAL_BTVSC_CPLT;
+
+#if (NFC_HAL_HCI_INCLUDED == TRUE)
+
+/* data type for NFC_HAL_HCI_RSP_NV_READ_EVT */
+typedef struct {
+ NFC_HDR hdr;
+ uint8_t block;
+ uint16_t size;
+ tHAL_NFC_STATUS status;
+} tNFC_HAL_HCI_RSP_NV_READ_EVT;
+
+/* data type for NFC_HAL_HCI_RSP_NV_WRITE_EVT */
+typedef struct {
+ NFC_HDR hdr;
+ tHAL_NFC_STATUS status;
+} tNFC_HAL_HCI_RSP_NV_WRITE_EVT;
+
+/* union of all event data types */
+typedef union {
+ NFC_HDR hdr;
+ /* Internal events */
+ tNFC_HAL_HCI_RSP_NV_READ_EVT nv_read;
+ tNFC_HAL_HCI_RSP_NV_WRITE_EVT nv_write;
+} tNFC_HAL_HCI_EVENT_DATA;
+
+#endif
+/*****************************************************************************
+** Control block for NFC HAL
+*****************************************************************************/
+
+/* Information about current patch in NVM */
+typedef struct {
+ uint16_t project_id; /* Current project_id of patch in nvm */
+ uint16_t ver_major; /* Current major version of patch in nvm */
+ uint16_t ver_minor; /* Current minor version of patch in nvm */
+ uint16_t fpm_size; /* Current size of FPM patch in nvm */
+ uint16_t lpm_size; /* Current size of LPM patch in nvm */
+ uint8_t flags; /* See NFC_HAL_NVM_FLAGS_* flag definitions */
+ uint8_t nvm_type; /* Current NVM Type - UICC/EEPROM */
+ uint8_t chip_ver[NFC_HAL_PRM_MAX_CHIP_VER_LEN]; /* patch chip version */
+} tNFC_HAL_NVM;
+
+/* Patch for I2C fix */
+typedef struct {
+ uint8_t* p_patch; /* patch for i2c fix */
+ uint32_t prei2c_delay; /* the dealy after preI2C patch */
+ uint16_t len; /* i2c patch length */
+} tNFC_HAL_PRM_I2C_FIX_CB;
+
+/* Control block for NCI transport */
+typedef struct {
+ uint8_t nci_ctrl_size; /* Max size for NCI messages */
+ uint8_t rcv_state; /* current rx state */
+ uint16_t rcv_len; /* bytes remaining to be received in current rx state */
+ NFC_HDR* p_rcv_msg; /* buffer to receive NCI message */
+ NFC_HDR* p_frag_msg; /* fragmented NCI message; waiting for last fragment */
+ NFC_HDR*
+ p_pend_cmd; /* pending NCI message; waiting for NFCC state to be free */
+ tNFC_HAL_NCI_RAS nci_ras; /* nci reassembly error status */
+ TIMER_LIST_ENT
+ nci_wait_rsp_timer; /* Timer for waiting for nci command response */
+ tNFC_HAL_WAIT_RSP nci_wait_rsp; /* nci wait response flag */
+ uint8_t
+ last_hdr[NFC_HAL_SAVED_HDR_SIZE]; /* part of last NCI command header */
+ uint8_t
+ last_cmd[NFC_HAL_SAVED_CMD_SIZE]; /* part of last NCI command payload */
+ void* p_vsc_cback; /* the callback function for last VSC command */
+} tNFC_HAL_NCIT_CB;
+
+/* Control block for device initialization */
+typedef struct {
+ tNFC_HAL_INIT_STATE initializing_state; /* state of initializing NFCC */
+
+ uint32_t brcm_hw_id; /* BRCM NFCC HW ID */
+ tNFC_HAL_DM_CONFIG next_dm_config; /* next config in post initialization */
+ uint8_t next_startup_vsc; /* next start-up VSC offset in post init */
+
+ tNFC_HAL_POWER_MODE power_mode; /* NFCC power mode */
+ uint8_t snooze_mode; /* current snooze mode */
+ uint8_t new_snooze_mode; /* next snooze mode after receiving cmpl */
+ uint8_t nfc_wake_active_mode; /* NFC_HAL_LP_ACTIVE_LOW/HIGH */
+ TIMER_LIST_ENT lp_timer; /* timer for low power mode */
+
+ tHAL_NFC_STATUS_CBACK*
+ p_prop_cback; /* callback to notify complete of proprietary update */
+} tNFC_HAL_DEV_CB;
+
+#if (NFC_HAL_HCI_INCLUDED == TRUE)
+
+/* data members for NFC_HAL-HCI */
+typedef struct {
+ TIMER_LIST_ENT
+ hci_timer; /* Timer to avoid indefinitely waiting for response */
+ uint8_t*
+ p_hci_netwk_info_buf; /* Buffer for reading HCI Network information */
+ uint8_t* p_hci_netwk_dh_info_buf; /* Buffer for reading HCI Network DH
+ information */
+ uint8_t hci_netwk_config_block; /* Rsp awaiting for hci network configuration
+ block */
+ bool b_wait_hcp_conn_create_rsp; /* Waiting for hcp connection create response
+ */
+ bool clear_all_pipes_to_uicc1; /* UICC1 was restarted for patch download */
+ bool update_session_id; /* Next response from NFCC is to Get Session id cmd */
+ bool hci_fw_workaround; /* HAL HCI Workaround need */
+ bool hci_fw_validate_netwk_cmd; /* Flag to indicate if hci network ntf to
+ validate */
+ uint8_t hcp_conn_id; /* NCI Connection id for HCP */
+ uint8_t dh_session_id[1]; /* Byte 0 of DH Session ID */
+} tNFC_HAL_HCI_CB;
+
+#endif
+
+typedef uint8_t tNFC_HAL_FLAGS;
+
+typedef struct {
+ tHAL_NFC_CBACK* p_stack_cback; /* Callback for HAL event notification */
+ tHAL_NFC_DATA_CBACK* p_data_cback; /* Callback for data event notification */
+
+ TIMER_LIST_Q quick_timer_queue; /* timer list queue */
+ TIMER_LIST_ENT timer; /* timer for NCI transport task */
+
+ tNFC_HAL_NCIT_CB ncit_cb; /* NCI transport */
+ tNFC_HAL_DEV_CB dev_cb; /* device initialization */
+ tNFC_HAL_NVM nvm_cb; /* Information about current patch in NVM */
+
+ /* Patchram control block */
+ tNFC_HAL_PRM_CB prm;
+ tNFC_HAL_PRM_I2C_FIX_CB prm_i2c;
+
+#if (NFC_HAL_HCI_INCLUDED == TRUE)
+ /* data members for NFC_HAL-HCI */
+ tNFC_HAL_HCI_CB hci_cb;
+#endif
+
+ uint8_t pre_discover_done; /* TRUE, when the prediscover config is complete */
+ tNFC_HAL_FLAGS hal_flags;
+ uint8_t pre_set_mem_idx;
+
+ uint8_t max_rf_credits; /* NFC Max RF data credits */
+ uint8_t max_ee; /* NFC Max number of NFCEE supported by NFCC */
+} tNFC_HAL_CB;
+
+/* Global NCI data */
+extern tNFC_HAL_CB nfc_hal_cb;
+
+extern uint8_t* p_nfc_hal_pre_discover_cfg;
+
+/****************************************************************************
+** Internal nfc functions
+****************************************************************************/
+
+#if (NFC_HAL_HCI_INCLUDED == TRUE)
+/* nfc_hal_hci.c */
+void nfc_hal_hci_enable(void);
+void nfc_hal_hci_evt_hdlr(tNFC_HAL_HCI_EVENT_DATA* p_evt_data);
+
+void nfc_hal_hci_handle_build_info(uint8_t chipverlen, uint8_t* p_chipverstr);
+#else
+#define nfc_hal_hci_enable() NFC_HAL_SET_INIT_STATE(NFC_HAL_INIT_STATE_IDLE);
+#define nfc_hal_hci_handle_build_info(p, a)
+#define nfc_hal_hci_evt_hdlr(p) ;
+#endif
+
+/* Define default NCI protocol trace function (if protocol tracing is enabled)
+ */
+#if (NFC_HAL_TRACE_PROTOCOL == TRUE)
+#if !defined(DISP_NCI)
+#define DISP_NCI (DispNci)
+void DispNci(uint8_t* p, uint16_t len, bool is_recv);
+#endif /* DISP_NCI */
+
+#endif /* NFC_HAL_TRACE_PROTOCOL */
+
+#endif /* NFC_HAL_INT_H */
diff --git a/src/include/nfc_hal_int_api.h b/src/include/nfc_hal_int_api.h
new file mode 100644
index 0000000..58b51d3
--- /dev/null
+++ b/src/include/nfc_hal_int_api.h
@@ -0,0 +1,77 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2009-2014 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.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * Internal NFC HAL API functions.
+ *
+ ******************************************************************************/
+#ifndef NFC_HAL_INT_API_H
+#define NFC_HAL_INT_API_H
+
+/****************************************************************************
+** Device Configuration definitions
+****************************************************************************/
+
+/* Broadcom specific device initialization before sending NCI reset */
+
+typedef struct {
+ uint32_t brcm_hw_id;
+ uint16_t xtal_freq;
+ uint8_t xtal_index;
+} tNFC_HAL_DEV_INIT_XTAL_CFG;
+
+#define NFC_HAL_DEV_INIT_MAX_XTAL_CFG 5
+
+/*****************************************************************************
+** Patch RAM Constants
+*****************************************************************************/
+
+/* patch format type */
+typedef uint8_t tNFC_HAL_PRM_FORMAT;
+
+/*****************************************************************************
+** Patch RAM Callback for event notificaton
+*****************************************************************************/
+
+typedef uint8_t tNFC_HAL_NCI_EVT; /* MT + Opcode */
+
+/*******************************************************************************
+**
+** Function HAL_NfcPrmSetSpdNciCmdPayloadSize
+**
+** Description Set Host-to-NFCC NCI message size for secure patch download
+**
+** This API must be called before calling
+** HAL_NfcPrmDownloadStart. If the API is not called, then PRM
+** will use the default message size.
+**
+** Typically, this API is only called for platforms that have
+** message-size limitations in the transport/driver.
+**
+** Valid message size range:
+** NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE to 255.
+**
+** Returns HAL_NFC_STATUS_OK if successful
+** HAL_NFC_STATUS_FAILED otherwise
+**
+**
+*******************************************************************************/
+tHAL_NFC_STATUS HAL_NfcPrmSetSpdNciCmdPayloadSize(uint8_t max_payload_size);
+
+#endif /* NFC_HAL_INT_API_H */
diff --git a/halimpl/bcm2079x/hal/hal/nfc_hal_brcm.c b/src/include/nfc_hal_nv_ci.h
similarity index 63%
rename from halimpl/bcm2079x/hal/hal/nfc_hal_brcm.c
rename to src/include/nfc_hal_nv_ci.h
index 076596f..a9ec13d 100644
--- a/halimpl/bcm2079x/hal/hal/nfc_hal_brcm.c
+++ b/src/include/nfc_hal_nv_ci.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 2010-2014 Broadcom Corporation
+ * Copyright (C) 2003-2014 Broadcom Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,11 +18,22 @@
/******************************************************************************
*
- * This file contains function of the NFC unit to receive/process NFC VS
- * commands.
+ * This is the interface file for non valtile memory call-in functions.
*
******************************************************************************/
-#include <string.h>
-#include "gki.h"
-#include "nfc_hal_int.h"
-#include "userial.h"
+#ifndef NFC_HAL_NV_CI_H
+#define NFC_HAL_NV_CI_H
+
+#include "nfc_hal_target.h"
+
+#if (NFC_HAL_HCI_INCLUDED == TRUE)
+
+#include "nfc_hal_nv_co.h"
+
+/*****************************************************************************
+** Function Declarations
+*****************************************************************************/
+
+#endif /* NFC_HAL_HCI_INCLUDED */
+
+#endif /* NFC_HAL_NV_CI_H */
diff --git a/src/include/nfc_hal_nv_co.h b/src/include/nfc_hal_nv_co.h
new file mode 100644
index 0000000..7fffb65
--- /dev/null
+++ b/src/include/nfc_hal_nv_co.h
@@ -0,0 +1,57 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2003-2014 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.
+ *
+ ******************************************************************************/
+
+/******************************************************************************
+ *
+ * This is the interface file for storing nv data
+ *
+ ******************************************************************************/
+#ifndef NFC_HAL_NV_CO_H
+#define NFC_HAL_NV_CO_H
+
+#include "nfc_hal_target.h"
+
+#if (NFC_HAL_HCI_INCLUDED == TRUE)
+
+#include <time.h>
+
+/*****************************************************************************
+** Constants and Data Types
+*****************************************************************************/
+
+/**************************
+** Common Definitions
+***************************/
+
+typedef uint8_t tNFC_HAL_NV_CO_STATUS;
+
+#define DH_NV_BLOCK 0x01
+#define HC_F3_NV_BLOCK 0x02
+#define HC_F4_NV_BLOCK 0x03
+#define HC_F2_NV_BLOCK 0x04
+#define HC_F5_NV_BLOCK 0x05
+
+/*****************************************************************************
+** Function Declarations
+*****************************************************************************/
+/**************************
+** Common Functions
+***************************/
+
+#endif /* NFC_HAL_HCI_INCLUDED */
+#endif /* NFC_HAL_NV_CO_H */
diff --git a/src/hal/int/nfc_hal_post_reset.h b/src/include/nfc_hal_post_reset.h
similarity index 87%
rename from src/hal/int/nfc_hal_post_reset.h
rename to src/include/nfc_hal_post_reset.h
index 7ce3953..cc703a1 100644
--- a/src/hal/int/nfc_hal_post_reset.h
+++ b/src/include/nfc_hal_post_reset.h
@@ -28,7 +28,6 @@
** Application control block definitions
******************************************************************************/
#define NFA_APP_PATCHFILE_MAX_PATH 255
-#define NFA_APP_MAX_NUM_REINIT 5
typedef struct {
uint8_t prm_file[NFA_APP_PATCHFILE_MAX_PATH + 1]; /* Filename of patchram */
@@ -61,13 +60,4 @@
} tNFC_POST_RESET_CB;
extern tNFC_POST_RESET_CB nfc_post_reset_cb;
-/*
-** Post NCI reset handler
-**
-** This function is called to start device pre-initialization after
-** NCI CORE-RESET. When pre-initialization is completed,
-** HAL_NfcPreInitDone() must be called to proceed with stack start up.
-*/
-void nfc_hal_post_reset_init(uint32_t brcm_hw_id, uint8_t nvm_type);
-
#endif /* NFC_HAL_POST_RESET_H */
diff --git a/src/include/nfc_hal_target.h b/src/include/nfc_hal_target.h
new file mode 100644
index 0000000..38b2fb3
--- /dev/null
+++ b/src/include/nfc_hal_target.h
@@ -0,0 +1,163 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2012-2014 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.
+ *
+ ******************************************************************************/
+
+#ifndef NFC_HAL_TARGET_H
+#define NFC_HAL_TARGET_H
+
+#include "data_types.h"
+#include "gki.h"
+
+/****************************************************************************
+** NCI related configuration
+****************************************************************************/
+
+/* Initial Max Control Packet Payload Size (until receiving payload size in
+ * INIT_CORE_RSP) */
+#ifndef NFC_HAL_NCI_INIT_CTRL_PAYLOAD_SIZE
+#define NFC_HAL_NCI_INIT_CTRL_PAYLOAD_SIZE 0xFF
+#endif
+
+/* Number of bytes to reserve in front of NCI messages (e.g. for transport
+ * header) */
+#ifndef NFC_HAL_NCI_MSG_OFFSET_SIZE
+#define NFC_HAL_NCI_MSG_OFFSET_SIZE 1
+#endif
+
+/* NFC-WAKE */
+#ifndef NFC_HAL_LP_NFC_WAKE_GPIO
+#define NFC_HAL_LP_NFC_WAKE_GPIO UPIO_GENERAL3
+#endif
+
+/* NFCC snooze mode idle timeout before deassert NFC_WAKE in ms */
+#ifndef NFC_HAL_LP_IDLE_TIMEOUT
+#define NFC_HAL_LP_IDLE_TIMEOUT 100
+#endif
+
+/* NFC snooze mode */
+#ifndef NFC_HAL_LP_SNOOZE_MODE
+#define NFC_HAL_LP_SNOOZE_MODE NFC_HAL_LP_SNOOZE_MODE_UART
+#endif
+
+/* Idle Threshold Host in 100ms unit */
+#ifndef NFC_HAL_LP_IDLE_THRESHOLD_HOST
+#define NFC_HAL_LP_IDLE_THRESHOLD_HOST 0
+#endif
+
+/* Idle Threshold HC in 100ms unit */
+#ifndef NFC_HAL_LP_IDLE_THRESHOLD_HC
+#define NFC_HAL_LP_IDLE_THRESHOLD_HC 0
+#endif
+
+/* Default NFCC power-up baud rate */
+#ifndef NFC_HAL_DEFAULT_BAUD
+#define NFC_HAL_DEFAULT_BAUD USERIAL_BAUD_115200
+#endif
+
+/* time (in ms) between power off and on NFCC */
+#ifndef NFC_HAL_POWER_CYCLE_DELAY
+#define NFC_HAL_POWER_CYCLE_DELAY 100
+#endif
+
+/* time (in ms) between power off and on NFCC */
+#ifndef NFC_HAL_NFCC_ENABLE_TIMEOUT
+#define NFC_HAL_NFCC_ENABLE_TIMEOUT 1000
+#endif
+
+#ifndef NFC_HAL_PRM_DEBUG
+#define NFC_HAL_PRM_DEBUG TRUE
+#endif
+
+/* max patch data length (Can be overridden by platform for ACL HCI command
+ * size) */
+#ifndef NFC_HAL_PRM_HCD_CMD_MAXLEN
+#define NFC_HAL_PRM_HCD_CMD_MAXLEN 250
+#endif
+
+/* Require PreI2C patch by default */
+#ifndef NFC_HAL_PRE_I2C_PATCH_INCLUDED
+#define NFC_HAL_PRE_I2C_PATCH_INCLUDED TRUE
+#endif
+
+/* over-riden for platforms that have transport packet limitations */
+#ifndef NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE
+#define NFC_HAL_PRM_MIN_NCI_CMD_PAYLOAD_SIZE (32)
+#endif
+
+/* amount of time to wait for authenticating/committing patch to NVM */
+#ifndef NFC_HAL_PRM_COMMIT_DELAY
+#define NFC_HAL_PRM_COMMIT_DELAY (30000)
+#endif
+
+/* amount of time to wait after downloading preI2C patch before downloading
+ * LPM/FPM patch */
+#ifndef NFC_HAL_PRM_POST_I2C_FIX_DELAY
+#define NFC_HAL_PRM_POST_I2C_FIX_DELAY (200)
+#endif
+
+/* NFCC will respond to more than one technology during listen discovery */
+#ifndef NFC_HAL_DM_MULTI_TECH_RESP
+#define NFC_HAL_DM_MULTI_TECH_RESP TRUE
+#endif
+
+/* Data rate for 15693 command/response, it must be same as
+ * RW_I93_FLAG_DATA_RATE in nfc_target.h */
+#define NFC_HAL_I93_FLAG_DATA_RATE_HIGH 0x02
+
+#ifndef NFC_HAL_I93_FLAG_DATA_RATE
+#define NFC_HAL_I93_FLAG_DATA_RATE NFC_HAL_I93_FLAG_DATA_RATE_HIGH
+#endif
+
+/* NFC HAL HCI */
+#ifndef NFC_HAL_HCI_INCLUDED
+#define NFC_HAL_HCI_INCLUDED TRUE
+#endif
+
+/* Quick Timer */
+#ifndef QUICK_TIMER_TICKS_PER_SEC
+#define QUICK_TIMER_TICKS_PER_SEC 100 /* 10ms timer */
+#endif
+
+#ifndef NFC_HAL_SHARED_TRANSPORT_ENABLED
+#define NFC_HAL_SHARED_TRANSPORT_ENABLED FALSE
+#endif
+
+/* Enable verbose tracing by default */
+#ifndef NFC_HAL_TRACE_VERBOSE
+#define NFC_HAL_TRACE_VERBOSE TRUE
+#endif
+
+#ifndef NFC_HAL_INITIAL_TRACE_LEVEL
+#define NFC_HAL_INITIAL_TRACE_LEVEL 5
+#endif
+
+/* Map NFC serial port to USERIAL_PORT_6 by default */
+#ifndef USERIAL_NFC_PORT
+#define USERIAL_NFC_PORT (USERIAL_PORT_6)
+#endif
+
+/* Restore NFCC baud rate to default on shutdown if baud rate was updated */
+#ifndef NFC_HAL_RESTORE_BAUD_ON_SHUTDOWN
+#define NFC_HAL_RESTORE_BAUD_ON_SHUTDOWN TRUE
+#endif
+
+/* Enable protocol tracing by default */
+#ifndef NFC_HAL_TRACE_PROTOCOL
+#define NFC_HAL_TRACE_PROTOCOL TRUE
+#endif
+
+#endif /* GKI_TARGET_H */
diff --git a/src/include/nfc_target.h b/src/include/nfc_target.h
index fd56462..3de5a84 100644
--- a/src/include/nfc_target.h
+++ b/src/include/nfc_target.h
@@ -29,9 +29,6 @@
#include "gki_target.h"
#include "bt_types.h" /* This must be defined AFTER buildcfg.h */
-#ifndef LMP_TEST
-#include "bt_trace.h"
-#endif
#ifndef USERIAL_DEBUG
#define USERIAL_DEBUG FALSE
@@ -158,13 +155,11 @@
******************************************************************************/
#define NCI_VERSION_UNKNOWN 0x00
#define NCI_VERSION_1_0 0x10
-#define NCI_VERSION_1_1 0x11
#define NCI_VERSION_2_0 0x20
#ifndef NCI_VERSION
#define NCI_VERSION NCI_VERSION_2_0
#endif
#define NCI_CORE_RESET_RSP_LEN(X) (((X) == NCI_VERSION_2_0) ? (0x01) : (0x03))
-#define NCI_VERSION_0_F 0x0F
/* TRUE I2C patch is needed */
#ifndef NFC_I2C_PATCH_INCLUDED
@@ -652,10 +647,10 @@
** as the NFC stack.
*****************************************************************************/
#ifndef HAL_WRITE
-#define HAL_WRITE(p) \
- { \
- nfc_cb.p_hal->write(p->len, (uint8_t*)(p + 1) + p->offset); \
- GKI_freebuf(p); \
+#define HAL_WRITE(p) \
+ { \
+ nfc_cb.p_hal->write((p)->len, (uint8_t*)((p) + 1) + (p)->offset); \
+ GKI_freebuf(p); \
}
#ifdef NFC_HAL_SHARED_GKI
diff --git a/src/include/nfc_types.h b/src/include/nfc_types.h
new file mode 100644
index 0000000..a889902
--- /dev/null
+++ b/src/include/nfc_types.h
@@ -0,0 +1,160 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2012-2014 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.
+ *
+ ******************************************************************************/
+
+#ifndef NFC_TYPES_H
+#define NFC_TYPES_H
+
+/****************************************************************************
+** NFC_HDR header definition for NFC messages
+*****************************************************************************/
+typedef struct {
+ uint16_t event;
+ uint16_t len;
+ uint16_t offset;
+ uint16_t layer_specific;
+} NFC_HDR;
+#define NFC_HDR_SIZE (sizeof(NFC_HDR))
+
+/* Mask for NFC_HDR event field */
+#define NFC_EVT_MASK 0xFF00
+
+/****************************************************************************
+** NFC_HAL_TASK definitions
+*****************************************************************************/
+
+/* NCI message for hci persistency data */
+#define NFC_HAL_EVT_HCI 0x0400
+
+/* NCI message for sending to host stack */
+#define NFC_EVT_TO_NFC_NCI 0x4000
+
+/*****************************************************************************
+** Macros to get and put bytes to and from a stream (Little Endian format).
+*****************************************************************************/
+
+#define UINT32_TO_STREAM(p, u32) \
+ { \
+ *(p)++ = (uint8_t)(u32); \
+ *(p)++ = (uint8_t)((u32) >> 8); \
+ *(p)++ = (uint8_t)((u32) >> 16); \
+ *(p)++ = (uint8_t)((u32) >> 24); \
+ }
+#define UINT16_TO_STREAM(p, u16) \
+ { \
+ *(p)++ = (uint8_t)(u16); \
+ *(p)++ = (uint8_t)((u16) >> 8); \
+ }
+#define UINT8_TO_STREAM(p, u8) \
+ { *(p)++ = (uint8_t)(u8); }
+#define INT8_TO_STREAM(p, u8) \
+ { *(p)++ = (int8_t)(u8); }
+#define ARRAY8_TO_STREAM(p, a) \
+ { \
+ int ijk; \
+ for (ijk = 0; ijk < 8; ijk++) *(p)++ = (uint8_t)(a)[7 - ijk]; \
+ }
+#define ARRAY_TO_STREAM(p, a, len) \
+ { \
+ int ijk; \
+ for (ijk = 0; ijk < (len); ijk++) *(p)++ = (uint8_t)(a)[ijk]; \
+ }
+#define STREAM_TO_UINT8(u8, p) \
+ { \
+ (u8) = (uint8_t)(*(p)); \
+ (p) += 1; \
+ }
+#define STREAM_TO_UINT16(u16, p) \
+ { \
+ (u16) = ((uint16_t)(*(p)) + (((uint16_t)(*((p) + 1))) << 8)); \
+ (p) += 2; \
+ }
+#define STREAM_TO_UINT32(u32, p) \
+ { \
+ (u32) = (((uint32_t)(*(p))) + ((((uint32_t)(*((p) + 1)))) << 8) + \
+ ((((uint32_t)(*((p) + 2)))) << 16) + \
+ ((((uint32_t)(*((p) + 3)))) << 24)); \
+ (p) += 4; \
+ }
+#define STREAM_TO_ARRAY8(a, p) \
+ { \
+ int ijk; \
+ uint8_t* _pa = (uint8_t*)(a) + 7; \
+ for (ijk = 0; ijk < 8; ijk++) *_pa-- = *(p)++; \
+ }
+#define STREAM_TO_ARRAY(a, p, len) \
+ { \
+ int ijk; \
+ for (ijk = 0; ijk < (len); ijk++) ((uint8_t*)(a))[ijk] = *(p)++; \
+ }
+
+/*****************************************************************************
+** Macros to get and put bytes to and from a stream (Big Endian format)
+*****************************************************************************/
+
+#define UINT32_TO_BE_STREAM(p, u32) \
+ { \
+ *(p)++ = (uint8_t)((u32) >> 24); \
+ *(p)++ = (uint8_t)((u32) >> 16); \
+ *(p)++ = (uint8_t)((u32) >> 8); \
+ *(p)++ = (uint8_t)(u32); \
+ }
+#define UINT24_TO_BE_STREAM(p, u24) \
+ { \
+ *(p)++ = (uint8_t)((u24) >> 16); \
+ *(p)++ = (uint8_t)((u24) >> 8); \
+ *(p)++ = (uint8_t)(u24); \
+ }
+#define UINT16_TO_BE_STREAM(p, u16) \
+ { \
+ *(p)++ = (uint8_t)((u16) >> 8); \
+ *(p)++ = (uint8_t)(u16); \
+ }
+#define UINT8_TO_BE_STREAM(p, u8) \
+ { *(p)++ = (uint8_t)(u8); }
+#define ARRAY_TO_BE_STREAM(p, a, len) \
+ { \
+ int ijk; \
+ for (ijk = 0; ijk < (len); ijk++) *(p)++ = (uint8_t)(a)[ijk]; \
+ }
+
+#define BE_STREAM_TO_UINT8(u8, p) \
+ { \
+ (u8) = (uint8_t)(*(p)); \
+ (p) += 1; \
+ }
+#define BE_STREAM_TO_UINT16(u16, p) \
+ { \
+ (u16) = (uint16_t)(((uint16_t)(*(p)) << 8) + (uint16_t)(*((p) + 1))); \
+ (p) += 2; \
+ }
+#define BE_STREAM_TO_UINT32(u32, p) \
+ { \
+ (u32) = ((uint32_t)(*((p) + 3)) + ((uint32_t)(*((p) + 2)) << 8) + \
+ ((uint32_t)(*((p) + 1)) << 16) + ((uint32_t)(*(p)) << 24)); \
+ (p) += 4; \
+ }
+
+/*****************************************************************************
+** Macros to get and put bytes to and from a field (Big Endian format).
+** These are the same as to stream, except the pointer is not incremented.
+*****************************************************************************/
+
+#define UINT8_TO_BE_FIELD(p, u8) \
+ { *(uint8_t*)(p) = (uint8_t)(u8); }
+
+#endif /* NFC_TYPES_H */
diff --git a/src/include/trace_api.h b/src/include/trace_api.h
index 9c38a62..47eb0aa 100644
--- a/src/include/trace_api.h
+++ b/src/include/trace_api.h
@@ -28,10 +28,6 @@
#include "bt_types.h"
#include "nfc_hal_api.h"
-#ifdef __cplusplus
-extern "C" {
-#endif
-
/* Trace API Function External Declarations */
extern void DispT3TagMessage(NFC_HDR* p_msg, bool is_rx);
extern void DispRWT4Tags(NFC_HDR* p_buf, bool is_rx);
@@ -40,10 +36,6 @@
uint8_t command_to_respond);
extern void DispLLCP(NFC_HDR* p_buf, bool is_rx);
-extern void DispHcp(uint8_t* p, uint16_t len, bool is_recv, bool is_first_seg);
-
-#ifdef __cplusplus
-}
-#endif
+extern void DispHcp(uint8_t* p, uint16_t len, bool is_recv);
#endif /* TRACE_API_H */
diff --git a/src/nfa/ce/nfa_ce_act.c b/src/nfa/ce/nfa_ce_act.cc
similarity index 89%
rename from src/nfa/ce/nfa_ce_act.c
rename to src/nfa/ce/nfa_ce_act.cc
index 6e1166b..ad39aed 100644
--- a/src/nfa/ce/nfa_ce_act.c
+++ b/src/nfa/ce/nfa_ce_act.cc
@@ -22,16 +22,23 @@
*
******************************************************************************/
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "ce_api.h"
#include "ndef_utils.h"
#include "nfa_ce_int.h"
-#include "nfa_dm_int.h"
#include "nfa_mem_co.h"
-#include "nfa_sys_int.h"
+
#if (NFC_NFCEE_INCLUDED == TRUE)
#include "nfa_ee_int.h"
#endif
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
/*****************************************************************************
* Protocol-specific event handlers
*****************************************************************************/
@@ -49,8 +56,19 @@
tNFA_CE_CB* p_cb = &nfa_ce_cb;
tNFA_CONN_EVT_DATA conn_evt;
- NFA_TRACE_DEBUG1("nfa_ce_handle_t3t_evt: event 0x%x", event);
-
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ce_handle_t3t_evt: event 0x%x", event);
+ /* For the felica on host for nfcFcallback */
+ for (uint8_t idx = 0; idx < NFA_CE_LISTEN_INFO_IDX_INVALID; idx++) {
+ if ((p_cb->listen_info[idx].flags & NFA_CE_LISTEN_INFO_IN_USE) &&
+ (p_cb->listen_info[idx].flags & NFA_CE_LISTEN_INFO_FELICA) &&
+ (p_cb->listen_info[idx].flags & NFA_CE_LISTEN_INFO_T3T_ACTIVATE_PND)) {
+ p_cb->idx_cur_active = idx;
+ p_cb->p_active_conn_cback =
+ p_cb->listen_info[p_cb->idx_cur_active].p_conn_cback;
+ break;
+ }
+ }
switch (event) {
case CE_T3T_NDEF_UPDATE_START_EVT:
/* Notify app using callback associated with the active ndef */
@@ -58,7 +76,7 @@
conn_evt.status = NFA_STATUS_OK;
(*p_cb->p_active_conn_cback)(NFA_CE_NDEF_WRITE_START_EVT, &conn_evt);
} else {
- NFA_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"nfa_ce_handle_t3t_evt: got CE_T3T_UPDATE_START_EVT, but no active "
"NDEF");
}
@@ -72,7 +90,7 @@
conn_evt.ndef_write_cplt.p_data = p_ce_data->update_info.p_data;
(*p_cb->p_active_conn_cback)(NFA_CE_NDEF_WRITE_CPLT_EVT, &conn_evt);
} else {
- NFA_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"nfa_ce_handle_t3t_evt: got CE_T3T_UPDATE_CPLT_EVT, but no active "
"NDEF");
}
@@ -86,6 +104,21 @@
conn_evt.data.len = p_ce_data->raw_frame.p_data->len;
(*p_cb->p_active_conn_cback)(NFA_DATA_EVT, &conn_evt);
} else {
+ /* If we have not notified the app of activation, do so now */
+ if (p_cb->listen_info[p_cb->idx_cur_active].flags &
+ NFA_CE_LISTEN_INFO_T3T_ACTIVATE_PND) {
+ p_cb->listen_info[p_cb->idx_cur_active].flags &=
+ ~NFA_CE_LISTEN_INFO_T3T_ACTIVATE_PND;
+
+ conn_evt.ce_activated.handle =
+ NFA_HANDLE_GROUP_CE | ((tNFA_HANDLE)p_cb->idx_cur_active);
+ memcpy(&(conn_evt.ce_activated.activate_ntf),
+ &p_cb->activation_params, sizeof(tNFC_ACTIVATE_DEVT));
+ conn_evt.ce_activated.status = NFA_STATUS_OK;
+
+ (*p_cb->p_active_conn_cback)(NFA_CE_ACTIVATED_EVT, &conn_evt);
+ }
+ /* Notify app of t3t raw data */
conn_evt.ce_data.status = p_ce_data->raw_frame.status;
conn_evt.ce_data.handle =
(NFA_HANDLE_GROUP_CE | ((tNFA_HANDLE)p_cb->idx_cur_active));
@@ -98,7 +131,8 @@
break;
default:
- NFA_TRACE_DEBUG1("nfa_ce_handle_t3t_evt unhandled event=0x%02x", event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_ce_handle_t3t_evt unhandled event=0x%02x", event);
break;
}
}
@@ -116,7 +150,8 @@
tNFA_CE_CB* p_cb = &nfa_ce_cb;
tNFA_CONN_EVT_DATA conn_evt;
- NFA_TRACE_DEBUG1("nfa_ce_handle_t4t_evt: event 0x%x", event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ce_handle_t4t_evt: event 0x%x", event);
/* AID for NDEF selected. we had notified the app of activation. */
p_cb->idx_cur_active = NFA_CE_LISTEN_INFO_IDX_NDEF;
@@ -154,7 +189,8 @@
default:
/* CE_T4T_RAW_FRAME_EVT is not used in NFA CE */
- NFA_TRACE_DEBUG1("nfa_ce_handle_t4t_evt unhandled event=0x%02x", event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_ce_handle_t4t_evt unhandled event=0x%02x", event);
break;
}
}
@@ -174,7 +210,8 @@
uint8_t listen_info_idx;
tNFA_CONN_EVT_DATA conn_evt;
- NFA_TRACE_DEBUG1("nfa_ce_handle_t4t_aid_evt: event 0x%x", event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ce_handle_t4t_aid_evt: event 0x%x", event);
/* Get listen_info for this aid callback */
for (listen_info_idx = 0; listen_info_idx < NFA_CE_LISTEN_INFO_IDX_INVALID;
@@ -219,10 +256,10 @@
conn_evt.ce_data.len = p_ce_data->raw_frame.p_data->len;
(*p_cb->p_active_conn_cback)(NFA_CE_DATA_EVT, &conn_evt);
} else {
- NFA_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"nfa_ce_handle_t4t_aid_evt: unable to find listen_info for aid hdl "
"%i",
- p_ce_data->raw_frame.aid_handle)
+ p_ce_data->raw_frame.aid_handle);
}
GKI_freebuf(p_ce_data->raw_frame.p_data);
@@ -244,11 +281,12 @@
*******************************************************************************/
void nfa_ce_discovery_cback(tNFA_DM_RF_DISC_EVT event, tNFC_DISCOVER* p_data) {
tNFA_CE_MSG ce_msg;
- NFA_TRACE_DEBUG1("nfa_ce_discovery_cback(): event:0x%02X", event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event:0x%02X", event);
switch (event) {
case NFA_DM_RF_DISC_START_EVT:
- NFA_TRACE_DEBUG1("nfa_ce_handle_disc_start (status=0x%x)", p_data->start);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_ce_handle_disc_start (status=0x%x)", p_data->start);
break;
case NFA_DM_RF_DISC_ACTIVATED_EVT:
@@ -268,7 +306,7 @@
break;
default:
- NFA_TRACE_ERROR0("Unexpected event");
+ LOG(ERROR) << StringPrintf("Unexpected event");
break;
}
}
@@ -494,8 +532,9 @@
p_cb->listen_info[listen_info_idx].tech_proto_mask = listen_mask;
}
} else {
- NFA_TRACE_ERROR1("UICC[0x%x] is not activated",
- p_cb->listen_info[listen_info_idx].ee_handle);
+ LOG(ERROR) << StringPrintf(
+ "UICC[0x%x] is not activated",
+ p_cb->listen_info[listen_info_idx].ee_handle);
}
}
#endif
@@ -554,7 +593,8 @@
tNFA_CE_CB* p_cb = &nfa_ce_cb;
tNFA_CONN_EVT_DATA conn_evt;
- NFA_TRACE_DEBUG1("NFA_CE: removing listen_info entry %i", listen_info_idx);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_CE: removing listen_info entry %i", listen_info_idx);
/* Notify app that listening has stopped if requested (for API deregister) */
/* For LISTEN_START failures, app has already notified of NFA_LISTEN_START_EVT
@@ -671,7 +711,7 @@
if (nfa_ce_cb.p_scratch_buf != NULL) {
nfa_ce_cb.scratch_buf_size = nfa_ce_cb.ndef_max_size;
} else {
- NFA_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"Unable to allocate scratch buffer for writable NDEF message (%i "
"bytes)",
nfa_ce_cb.ndef_max_size);
@@ -705,7 +745,7 @@
return (NFA_STATUS_OK);
}
- NFA_TRACE_DEBUG0("Setting NDEF contents");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Setting NDEF contents");
readonly = (p_cb->listen_info[NFA_CE_LISTEN_INFO_IDX_NDEF].flags &
NFC_CE_LISTEN_INFO_READONLY_NDEF)
@@ -739,7 +779,7 @@
CE_T3tSetLocalNDEFMsg(true, 0, 0, NULL, NULL);
CE_T4tSetLocalNDEFMsg(true, 0, 0, NULL, NULL);
- NFA_TRACE_ERROR1("Unable to set contents (error %02x)", status);
+ LOG(ERROR) << StringPrintf("Unable to set contents (error %02x)", status);
}
return (status);
@@ -770,8 +810,13 @@
uint8_t i;
bool t4t_activate_pending = false;
- NFA_TRACE_DEBUG1("nfa_ce_activate_ntf () protocol=%d",
- p_ce_msg->activate_ntf.p_activation_params->protocol);
+ bool t3t_activate_pending = false;
+ bool t3t_offhost_entry_found = false;
+ uint8_t t3t_activate_idx = 0;
+ uint8_t t3t_offhost_idx = 0;
+
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "protocol=%d", p_ce_msg->activate_ntf.p_activation_params->protocol);
/* Tag is in listen active state */
p_cb->flags |= NFA_CE_FLAGS_LISTEN_ACTIVE_SLEEP;
@@ -801,8 +846,10 @@
p_cb->activation_params.rf_tech_param.param.lf.nfcid2,
NCI_RF_F_UID_LEN) == 0)
/* && (t3t_system_code == p_ce_msg->activation.p_activate_info->rf_tech_param.param.lf.system_code) */) {
- /* Found listen_info corresponding to this activation */
- break;
+ p_cb->listen_info[listen_info_idx].flags |=
+ NFA_CE_LISTEN_INFO_T3T_ACTIVATE_PND;
+ t3t_activate_pending = true;
+ t3t_activate_idx = listen_info_idx;
}
}
@@ -811,12 +858,24 @@
NFA_CE_LISTEN_INFO_UICC) &&
(p_cb->listen_info[listen_info_idx].tech_mask &
NFA_TECHNOLOGY_MASK_F)) {
- break;
+ t3t_offhost_entry_found = true;
+ t3t_offhost_idx = listen_info_idx;
}
}
}
p_ce_cback = nfa_ce_handle_t3t_evt;
+ /* If listening for PROTO_T3T on DH and eSE/UICC, then notify CE module
+ * now and wait for reader/writer to SELECT a target */
+ if (t3t_activate_pending && t3t_offhost_entry_found) {
+ CE_SetActivatedTagType(&p_cb->activation_params, t3t_system_code,
+ p_ce_cback);
+ return true;
+ } else if (t3t_activate_pending) {
+ listen_info_idx = t3t_activate_idx;
+ } else if (t3t_offhost_entry_found) {
+ listen_info_idx = t3t_offhost_idx;
+ }
} else if (p_cb->activation_params.protocol == NFA_PROTOCOL_ISO_DEP) {
p_ce_cback = nfa_ce_handle_t4t_evt;
@@ -881,7 +940,7 @@
((listen_info_idx == NFA_CE_LISTEN_INFO_IDX_NDEF) &&
!(p_cb->listen_info[NFA_CE_LISTEN_INFO_IDX_NDEF].flags &
NFA_CE_LISTEN_INFO_IN_USE))) {
- NFA_TRACE_DEBUG1(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"No listen_info found for this activation. listen_info_idx=%d",
listen_info_idx);
return true;
@@ -889,6 +948,8 @@
p_cb->listen_info[listen_info_idx].flags &=
~NFA_CE_LISTEN_INFO_T4T_ACTIVATE_PND;
+ p_cb->listen_info[listen_info_idx].flags &=
+ ~NFA_CE_LISTEN_INFO_T3T_ACTIVATE_PND;
/* Get CONN_CBACK for this activation */
p_cb->p_active_conn_cback = p_cb->listen_info[listen_info_idx].p_conn_cback;
@@ -943,7 +1004,7 @@
tNFA_CONN_EVT_DATA conn_evt;
uint8_t i;
- NFA_TRACE_DEBUG1("nfa_ce_deactivate_ntf () deact_type=%d", deact_type);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("deact_type=%d", deact_type);
/* Check if deactivating to SLEEP mode */
if ((deact_type == NFC_DEACTIVATE_TYPE_SLEEP) ||
@@ -998,14 +1059,18 @@
}
} else if ((p_cb->activation_params.protocol == NFA_PROTOCOL_T3T) &&
(p_cb->listen_info[i].protocol_mask & NFA_PROTOCOL_MASK_T3T)) {
- if (i == NFA_CE_LISTEN_INFO_IDX_NDEF) {
- conn_evt.deactivated.type = deact_type;
- (*p_cb->p_active_conn_cback)(NFA_DEACTIVATED_EVT, &conn_evt);
- } else {
- conn_evt.ce_deactivated.handle =
- NFA_HANDLE_GROUP_CE | ((tNFA_HANDLE)i);
- conn_evt.ce_deactivated.type = deact_type;
- (*p_cb->p_active_conn_cback)(NFA_CE_DEACTIVATED_EVT, &conn_evt);
+ /* Don't send NFA_DEACTIVATED_EVT if NFA_ACTIVATED_EVT wasn't sent */
+ if (!(p_cb->listen_info[i].flags &
+ NFA_CE_LISTEN_INFO_T3T_ACTIVATE_PND)) {
+ if (i == NFA_CE_LISTEN_INFO_IDX_NDEF) {
+ conn_evt.deactivated.type = deact_type;
+ (*p_cb->p_active_conn_cback)(NFA_DEACTIVATED_EVT, &conn_evt);
+ } else {
+ conn_evt.ce_deactivated.handle =
+ NFA_HANDLE_GROUP_CE | ((tNFA_HANDLE)i);
+ conn_evt.ce_deactivated.type = deact_type;
+ (*p_cb->p_active_conn_cback)(NFA_CE_DEACTIVATED_EVT, &conn_evt);
+ }
}
}
}
@@ -1042,7 +1107,7 @@
tNFA_CE_CB* p_cb = &nfa_ce_cb;
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG0("Disabling local NDEF tag");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Disabling local NDEF tag");
/* If local NDEF tag is in use, then disable it */
if (p_cb->listen_info[NFA_CE_LISTEN_INFO_IDX_NDEF].flags &
@@ -1092,9 +1157,9 @@
return true;
}
- NFA_TRACE_DEBUG5(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"Configuring local NDEF tag: protocol_mask=%01x cur_size=%i, "
- "max_size=%i, readonly=%i",
+ "max_size=%i, readonly=%i uid_len=%i",
p_ce_msg->local_tag.protocol_mask, p_ce_msg->local_tag.ndef_cur_size,
p_ce_msg->local_tag.ndef_max_size, p_ce_msg->local_tag.read_only,
p_ce_msg->local_tag.uid_len);
@@ -1145,7 +1210,8 @@
(NFA_PROTOCOL_MASK_T3T | NFA_PROTOCOL_MASK_ISO_DEP)) {
/* Ok to set contents now */
if (nfa_ce_set_content() != NFA_STATUS_OK) {
- NFA_TRACE_ERROR0("nfa_ce_api_cfg_local_tag: could not set contents");
+ LOG(ERROR) << StringPrintf(
+ "nfa_ce_api_cfg_local_tag: could not set contents");
nfa_dm_conn_cback_event_notify(NFA_CE_LOCAL_TAG_CONFIGURED_EVT,
&conn_evt);
return true;
@@ -1175,8 +1241,9 @@
uint8_t i;
uint8_t listen_info_idx = NFA_CE_LISTEN_INFO_IDX_INVALID;
- NFA_TRACE_DEBUG1("Registering UICC/Felica/Type-4 tag listener. Type=%i",
- p_ce_msg->reg_listen.listen_type);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Registering UICC/Felica/Type-4 tag listener. Type=%i",
+ p_ce_msg->reg_listen.listen_type);
/* Look for available entry in listen_info table */
/* - If registering UICC listen, make sure there isn't another entry for the
@@ -1187,8 +1254,8 @@
(p_cb->listen_info[i].flags & NFA_CE_LISTEN_INFO_IN_USE) &&
(p_cb->listen_info[i].flags & NFA_CE_LISTEN_INFO_UICC) &&
(p_cb->listen_info[i].ee_handle == p_ce_msg->reg_listen.ee_handle)) {
- NFA_TRACE_ERROR1("UICC (0x%x) listening already specified",
- p_ce_msg->reg_listen.ee_handle);
+ LOG(ERROR) << StringPrintf("UICC (0x%x) listening already specified",
+ p_ce_msg->reg_listen.ee_handle);
conn_evt.status = NFA_STATUS_FAILED;
nfa_dm_conn_cback_event_notify(NFA_CE_UICC_LISTEN_CONFIGURED_EVT,
&conn_evt);
@@ -1203,8 +1270,8 @@
/* Add new entry to listen_info table */
if (listen_info_idx == NFA_CE_LISTEN_INFO_IDX_INVALID) {
- NFA_TRACE_ERROR1("Maximum listen callbacks exceeded (%i)",
- NFA_CE_LISTEN_INFO_MAX);
+ LOG(ERROR) << StringPrintf("Maximum listen callbacks exceeded (%i)",
+ NFA_CE_LISTEN_INFO_MAX);
if (p_ce_msg->reg_listen.listen_type == NFA_CE_REG_TYPE_UICC) {
conn_evt.status = NFA_STATUS_FAILED;
@@ -1218,7 +1285,8 @@
}
return true;
} else {
- NFA_TRACE_DEBUG1("NFA_CE: adding listen_info entry %i", listen_info_idx);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_CE: adding listen_info entry %i", listen_info_idx);
/* Store common parameters */
/* Mark entry as 'in-use', and NFA_CE_LISTEN_INFO_START_NTF_PND */
@@ -1243,7 +1311,7 @@
nfa_ce_handle_t4t_aid_evt);
if (p_cb->listen_info[listen_info_idx].t4t_aid_handle ==
CE_T4T_AID_HANDLE_INVALID) {
- NFA_TRACE_ERROR0("Unable to register AID");
+ LOG(ERROR) << StringPrintf("Unable to register AID");
p_cb->listen_info[listen_info_idx].flags = 0;
/* Notify application */
@@ -1294,7 +1362,7 @@
/* Start listening */
conn_evt.status = nfa_ce_start_listening();
if (conn_evt.status != NFA_STATUS_OK) {
- NFA_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"nfa_ce_api_reg_listen: unable to register new listen params with DM");
p_cb->listen_info[listen_info_idx].flags = 0;
}
@@ -1305,8 +1373,9 @@
NFA_CE_UICC_LISTEN_CONFIGURED_EVT, &conn_evt);
} else {
conn_evt.ce_registered.handle = NFA_HANDLE_GROUP_CE | listen_info_idx;
- NFA_TRACE_DEBUG1("nfa_ce_api_reg_listen: registered handle 0x%04X",
- conn_evt.ce_registered.handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ce_api_reg_listen: registered handle 0x%04X",
+ conn_evt.ce_registered.handle);
(*p_cb->listen_info[listen_info_idx].p_conn_cback)(NFA_CE_REGISTERED_EVT,
&conn_evt);
}
@@ -1365,8 +1434,7 @@
}
if (listen_info_idx == NFA_CE_LISTEN_INFO_MAX) {
- NFA_TRACE_ERROR0(
- "nfa_ce_api_dereg_listen (): cannot find listen_info for UICC");
+ LOG(ERROR) << StringPrintf("cannot find listen_info for UICC");
conn_evt.status = NFA_STATUS_INVALID_PARAM;
nfa_dm_conn_cback_event_notify(NFA_CE_UICC_LISTEN_CONFIGURED_EVT,
&conn_evt);
@@ -1403,8 +1471,8 @@
nfa_ce_remove_listen_info_entry(listen_info_idx, true);
}
} else {
- NFA_TRACE_ERROR0(
- "nfa_ce_api_dereg_listen (): cannot find listen_info for "
+ LOG(ERROR) << StringPrintf(
+ "cannot find listen_info for "
"Felica/T4tAID");
conn_evt.status = NFA_STATUS_INVALID_PARAM;
nfa_dm_conn_cback_event_notify(NFA_CE_DEREGISTERED_EVT, &conn_evt);
diff --git a/src/nfa/ce/nfa_ce_api.c b/src/nfa/ce/nfa_ce_api.cc
similarity index 92%
rename from src/nfa/ce/nfa_ce_api.c
rename to src/nfa/ce/nfa_ce_api.cc
index 836f0c3..ed8d8ba 100644
--- a/src/nfa/ce/nfa_ce_api.c
+++ b/src/nfa/ce/nfa_ce_api.cc
@@ -22,10 +22,16 @@
*
******************************************************************************/
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_api.h"
#include "nfa_ce_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*******************************************************************************
**
@@ -47,7 +53,7 @@
/* Validate handle */
if ((listen_info != NFA_CE_LISTEN_INFO_UICC) &&
((handle & NFA_HANDLE_GROUP_MASK) != NFA_HANDLE_GROUP_CE)) {
- NFA_TRACE_ERROR0("nfa_ce_api_reregister_listen: Invalid handle");
+ LOG(ERROR) << StringPrintf("nfa_ce_api_reregister_listen: Invalid handle");
return (NFA_STATUS_BAD_HANDLE);
}
@@ -61,7 +67,7 @@
return (NFA_STATUS_OK);
} else {
- NFA_TRACE_ERROR0("nfa_ce_api_reregister_listen: Out of buffers");
+ LOG(ERROR) << StringPrintf("nfa_ce_api_reregister_listen: Out of buffers");
return (NFA_STATUS_FAILED);
}
}
@@ -119,25 +125,26 @@
{
tNFA_CE_MSG* p_msg;
- NFA_TRACE_API0("NFA_CeConfigureLocalTag ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (protocol_mask) {
/* If any protocols are specified, then NDEF buffer pointer must be non-NULL
*/
if (p_ndef_data == NULL) {
- NFA_TRACE_ERROR0("NFA_CeConfigureLocalTag: NULL ndef data pointer");
+ LOG(ERROR) << StringPrintf(
+ "NFA_CeConfigureLocalTag: NULL ndef data pointer");
return (NFA_STATUS_INVALID_PARAM);
}
if ((protocol_mask & NFA_PROTOCOL_MASK_T1T) ||
(protocol_mask & NFA_PROTOCOL_MASK_T2T)) {
- NFA_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"NFA_CeConfigureLocalTag: Cannot emulate Type 1 / Type 2 tag");
return (NFA_STATUS_INVALID_PARAM);
}
if (uid_len) {
- NFA_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"NFA_CeConfigureLocalTag: Cannot Set UID for Protocol_mask: 0x%x",
protocol_mask);
return (NFA_STATUS_INVALID_PARAM);
@@ -195,8 +202,8 @@
#if (NFC_NFCEE_INCLUDED == TRUE)
tNFA_CE_MSG* p_msg;
- NFA_TRACE_API1("NFA_CeConfigureUiccListenTech () ee_handle = 0x%x",
- ee_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("ee_handle = 0x%x", ee_handle);
/* If tech_mask is zero, then app is disabling listening for specified uicc */
if (tech_mask == 0) {
@@ -218,8 +225,8 @@
return (NFA_STATUS_OK);
}
#else
- NFA_TRACE_ERROR0(
- "NFA_CeConfigureUiccListenTech () NFCEE related functions are not "
+ LOG(ERROR) << StringPrintf(
+ "NFCEE related functions are not "
"enabled!");
#endif
return (NFA_STATUS_FAILED);
@@ -249,7 +256,7 @@
tNFA_CONN_CBACK* p_conn_cback) {
tNFA_CE_MSG* p_msg;
- NFA_TRACE_API0("NFA_CeRegisterFelicaSystemCodeOnDH ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Validate parameters */
if (p_conn_cback == NULL) return (NFA_STATUS_INVALID_PARAM);
@@ -294,8 +301,7 @@
**
*******************************************************************************/
tNFA_STATUS NFA_CeDeregisterFelicaSystemCodeOnDH(tNFA_HANDLE handle) {
- NFA_TRACE_API1("NFA_CeDeregisterFelicaSystemCodeOnDH (): handle:0x%X",
- handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle:0x%X", handle);
return (nfa_ce_api_deregister_listen(handle, NFA_CE_LISTEN_INFO_FELICA));
}
@@ -325,7 +331,7 @@
tNFA_CONN_CBACK* p_conn_cback) {
tNFA_CE_MSG* p_msg;
- NFA_TRACE_API0("NFA_CeRegisterAidOnDH ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Validate parameters */
if (p_conn_cback == NULL) return (NFA_STATUS_INVALID_PARAM);
@@ -368,7 +374,7 @@
**
*******************************************************************************/
tNFA_STATUS NFA_CeDeregisterAidOnDH(tNFA_HANDLE handle) {
- NFA_TRACE_API1("NFA_CeDeregisterAidOnDH (): handle:0x%X", handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle:0x%X", handle);
return (nfa_ce_api_deregister_listen(handle, NFA_CE_LISTEN_INFO_T4T_AID));
}
@@ -403,9 +409,10 @@
tNFA_TECHNOLOGY_MASK use_mask =
(NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_B);
- NFA_TRACE_API1("NFA_CeSetIsoDepListenTech (): 0x%x", tech_mask);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("0x%x", tech_mask);
if (((tech_mask & use_mask) == 0) || ((tech_mask & ~use_mask) != 0)) {
- NFA_TRACE_ERROR0("NFA_CeSetIsoDepListenTech: Invalid technology mask");
+ LOG(ERROR) << StringPrintf(
+ "NFA_CeSetIsoDepListenTech: Invalid technology mask");
return (NFA_STATUS_INVALID_PARAM);
}
diff --git a/src/nfa/ce/nfa_ce_main.c b/src/nfa/ce/nfa_ce_main.cc
similarity index 89%
rename from src/nfa/ce/nfa_ce_main.c
rename to src/nfa/ce/nfa_ce_main.cc
index 922d82e..d082969 100644
--- a/src/nfa/ce/nfa_ce_main.c
+++ b/src/nfa/ce/nfa_ce_main.cc
@@ -21,12 +21,17 @@
* This is the main implementation file for the NFA_CE
*
******************************************************************************/
-#include <string.h>
+#include <string>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_ce_api.h"
#include "nfa_ce_int.h"
-#include "nfa_dm_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/* NFA_CE control block */
tNFA_CE_CB nfa_ce_cb;
@@ -56,9 +61,7 @@
/*****************************************************************************
** Local function prototypes
*****************************************************************************/
-#if (BT_TRACE_VERBOSE == TRUE)
-static char* nfa_ce_evt_2_str(uint16_t event);
-#endif
+static std::string nfa_ce_evt_2_str(uint16_t event);
/*******************************************************************************
**
@@ -70,7 +73,7 @@
**
*******************************************************************************/
void nfa_ce_init(void) {
- NFA_TRACE_DEBUG0("nfa_ce_init ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* initialize control block */
memset(&nfa_ce_cb, 0, sizeof(tNFA_CE_CB));
@@ -133,8 +136,8 @@
tNFA_CE_CB* p_cb = &nfa_ce_cb;
uint8_t listen_info_idx;
- NFA_TRACE_DEBUG1("nfa_ce_proc_nfcc_power_mode (): nfcc_power_mode=%d",
- nfcc_power_mode);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfcc_power_mode=%d", nfcc_power_mode);
/* if NFCC power mode is change to full power */
if (nfcc_power_mode == NFA_DM_PWR_MODE_FULL) {
@@ -170,14 +173,9 @@
uint16_t act_idx;
bool freebuf = true;
-#if (BT_TRACE_VERBOSE == TRUE)
- NFA_TRACE_EVENT3("nfa_ce_handle_event event: %s (0x%02x), flags: %08x",
- nfa_ce_evt_2_str(p_msg->event), p_msg->event,
- nfa_ce_cb.flags);
-#else
- NFA_TRACE_EVENT2("nfa_ce_handle_event event: 0x%x, flags: %08x", p_msg->event,
- nfa_ce_cb.flags);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_ce_handle_event event: %s (0x%02x), flags: %08x",
+ nfa_ce_evt_2_str(p_msg->event).c_str(), p_msg->event, nfa_ce_cb.flags);
/* Get NFA_RW sub-event */
act_idx = (p_msg->event & 0x00FF);
@@ -193,7 +191,6 @@
return freebuf;
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function nfa_ce_evt_2_str
@@ -201,28 +198,21 @@
** Description convert nfc evt to string
**
*******************************************************************************/
-static char* nfa_ce_evt_2_str(uint16_t event) {
+static std::string nfa_ce_evt_2_str(uint16_t event) {
switch (event) {
case NFA_CE_API_CFG_LOCAL_TAG_EVT:
return "NFA_CE_API_CFG_LOCAL_TAG_EVT";
-
case NFA_CE_API_REG_LISTEN_EVT:
return "NFA_CE_API_REG_LISTEN_EVT";
-
case NFA_CE_API_DEREG_LISTEN_EVT:
return "NFA_CE_API_DEREG_LISTEN_EVT";
-
case NFA_CE_API_CFG_ISODEP_TECH_EVT:
return "NFA_CE_API_CFG_ISODEP_TECH_EVT";
-
case NFA_CE_ACTIVATE_NTF_EVT:
return "NFA_CE_ACTIVATE_NTF_EVT";
-
case NFA_CE_DEACTIVATE_NTF_EVT:
return "NFA_CE_DEACTIVATE_NTF_EVT";
-
default:
return "Unknown";
}
}
-#endif /* BT_TRACE_VERBOSE */
diff --git a/src/nfa/dm/nfa_dm_act.c b/src/nfa/dm/nfa_dm_act.cc
similarity index 91%
rename from src/nfa/dm/nfa_dm_act.c
rename to src/nfa/dm/nfa_dm_act.cc
index e3964c8..59d55a6 100644
--- a/src/nfa/dm/nfa_dm_act.c
+++ b/src/nfa/dm/nfa_dm_act.cc
@@ -23,26 +23,30 @@
*
******************************************************************************/
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nci_hmsgs.h"
#include "nfa_api.h"
#include "nfa_ce_int.h"
-#include "nfa_dm_int.h"
#include "nfa_p2p_int.h"
#include "nfa_rw_api.h"
#include "nfa_rw_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
-#include "nfc_api.h"
#if (NFC_NFCEE_INCLUDED == TRUE)
#include "nfa_ee_int.h"
-#include "nfa_hci_int.h"
+
#endif
#if (NFA_SNEP_INCLUDED == TRUE)
#include "nfa_snep_int.h"
#endif
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
/* This is the timeout value to guarantee disable is performed within reasonable
* amount of time */
#ifndef NFA_DM_DISABLE_TIMEOUT_VAL
@@ -89,9 +93,8 @@
static void nfa_dm_nfcc_power_mode_proc_complete_cback(void) {
tNFA_DM_PWR_MODE_CHANGE power_mode_change;
- NFA_TRACE_DEBUG1(
- "nfa_dm_nfcc_power_mode_proc_complete_cback () nfcc_pwr_mode = 0x%x",
- nfa_dm_cb.nfcc_pwr_mode);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfcc_pwr_mode = 0x%x", nfa_dm_cb.nfcc_pwr_mode);
/* if NFCC power state is change to full power */
if (nfa_dm_cb.nfcc_pwr_mode != NFA_DM_PWR_MODE_OFF_SLEEP) {
@@ -105,8 +108,9 @@
power_mode_change.status = NFA_STATUS_OK;
power_mode_change.power_mode = nfa_dm_cb.nfcc_pwr_mode;
- (*nfa_dm_cb.p_dm_cback)(NFA_DM_PWR_MODE_CHANGE_EVT,
- (tNFA_DM_CBACK_DATA*)&power_mode_change);
+ tNFA_DM_CBACK_DATA nfa_dm_cback_data;
+ nfa_dm_cback_data.power_mode = power_mode_change;
+ (*nfa_dm_cb.p_dm_cback)(NFA_DM_PWR_MODE_CHANGE_EVT, &nfa_dm_cback_data);
}
/*******************************************************************************
**
@@ -204,15 +208,15 @@
**
*******************************************************************************/
void nfa_dm_proc_nfcc_power_mode(uint8_t nfcc_power_mode) {
- NFA_TRACE_DEBUG1("nfa_dm_proc_nfcc_power_mode (): nfcc_power_mode=%d",
- nfcc_power_mode);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfcc_power_mode=%d", nfcc_power_mode);
/* if NFCC power mode is change to full power */
if (nfcc_power_mode == NFA_DM_PWR_MODE_FULL) {
memset(&nfa_dm_cb.params, 0x00, sizeof(tNFA_DM_PARAMS));
- NFA_TRACE_DEBUG2("setcfg_pending_mask=0x%x, setcfg_pending_num=%d",
- nfa_dm_cb.setcfg_pending_mask,
- nfa_dm_cb.setcfg_pending_num);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "setcfg_pending_mask=0x%x, setcfg_pending_num=%d",
+ nfa_dm_cb.setcfg_pending_mask, nfa_dm_cb.setcfg_pending_num);
nfa_dm_cb.setcfg_pending_mask = 0;
nfa_dm_cb.setcfg_pending_num = 0;
@@ -257,17 +261,12 @@
static void nfa_dm_nfc_response_cback(tNFC_RESPONSE_EVT event,
tNFC_RESPONSE* p_data) {
tNFA_DM_CBACK_DATA dm_cback_data;
- tNFA_GET_CONFIG* p_nfa_get_confg;
tNFA_CONN_EVT_DATA conn_evt;
uint8_t dm_cback_evt;
uint8_t max_ee = 0;
-#if (BT_TRACE_VERBOSE == TRUE)
- NFA_TRACE_DEBUG2("nfa_dm_nfc_response_cback () %s(0x%x)",
- nfa_dm_nfc_revt_2_str(event), event);
-#else
- NFA_TRACE_DEBUG1("nfa_dm_nfc_response_cback () event=0x%x", event);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s(0x%x)", nfa_dm_nfc_revt_2_str(event).c_str(), event);
switch (event) {
case NFC_ENABLE_REVT: /* 0 Enable event */
@@ -315,28 +314,19 @@
} else {
/* This should not occur (means we got a SET_CONFIG_NTF that's
* unaccounted for */
- NFA_TRACE_ERROR0("NFA received unexpected NFC_SET_CONFIG_REVT");
+ LOG(ERROR) << StringPrintf(
+ "NFA received unexpected NFC_SET_CONFIG_REVT");
}
break;
case NFC_GET_CONFIG_REVT: /* 3 Get Config Response */
if (p_data->get_config.status == NFC_STATUS_OK) {
- p_nfa_get_confg = (tNFA_GET_CONFIG*)GKI_getbuf(
- (uint16_t)(sizeof(tNFA_GET_CONFIG) + p_data->get_config.tlv_size));
- if (p_nfa_get_confg != NULL) {
- p_nfa_get_confg->status = NFA_STATUS_OK;
- p_nfa_get_confg->tlv_size = p_data->get_config.tlv_size;
- memcpy(p_nfa_get_confg->param_tlvs, p_data->get_config.p_param_tlvs,
- p_data->get_config.tlv_size);
- (*nfa_dm_cb.p_dm_cback)(NFA_DM_GET_CONFIG_EVT,
- (tNFA_DM_CBACK_DATA*)p_nfa_get_confg);
-
- GKI_freebuf(p_nfa_get_confg);
- return;
- } else {
- NFA_TRACE_DEBUG0(
- "nfa_dm_nfc_response_cback unable to allocate buffer");
- }
+ tNFA_GET_CONFIG* p_nfa_get_confg = &dm_cback_data.get_config;
+ p_nfa_get_confg->status = NFA_STATUS_OK;
+ p_nfa_get_confg->tlv_size = p_data->get_config.tlv_size;
+ p_nfa_get_confg->param_tlvs = p_data->get_config.p_param_tlvs;
+ (*nfa_dm_cb.p_dm_cback)(NFA_DM_GET_CONFIG_EVT, &dm_cback_data);
+ return;
}
/* Return result of getconfig to the app */
@@ -349,6 +339,7 @@
case NFC_NFCEE_INFO_REVT: /* NFCEE Discover Notification */
case NFC_EE_ACTION_REVT: /* EE Action notification */
case NFC_NFCEE_MODE_SET_REVT: /* NFCEE Mode Set response */
+ case NFC_NFCEE_STATUS_REVT: /* NFCEE Status notification*/
case NFC_SET_ROUTING_REVT: /* Configure Routing response */
nfa_ee_proc_evt(event, p_data);
break;
@@ -401,7 +392,8 @@
case NFC_NFCC_TIMEOUT_REVT:
case NFC_NFCC_TRANSPORT_ERR_REVT:
- NFA_TRACE_DEBUG1("flags:0x%08x", nfa_dm_cb.flags);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("flags:0x%08x", nfa_dm_cb.flags);
dm_cback_evt = (event == NFC_NFCC_TIMEOUT_REVT)
? NFA_DM_NFCC_TIMEOUT_EVT
: NFA_DM_NFCC_TRANSPORT_ERR_EVT;
@@ -438,7 +430,7 @@
*******************************************************************************/
bool nfa_dm_enable(tNFA_DM_MSG* p_data) {
tNFA_DM_CBACK_DATA dm_cback_data;
- NFA_TRACE_DEBUG0("nfa_dm_enable ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Check if NFA is already enabled */
if (!(nfa_dm_cb.flags & NFA_DM_FLAGS_DM_IS_ACTIVE)) {
@@ -455,7 +447,7 @@
/* Enable NFC stack */
NFC_Enable(nfa_dm_nfc_response_cback);
} else {
- NFA_TRACE_ERROR0("nfa_dm_enable: ERROR ALREADY ENABLED.");
+ LOG(ERROR) << StringPrintf("nfa_dm_enable: ERROR ALREADY ENABLED.");
dm_cback_data.status = NFA_STATUS_ALREADY_STARTED;
(*(p_data->enable.p_dm_cback))(NFA_DM_ENABLE_EVT, &dm_cback_data);
}
@@ -473,9 +465,8 @@
**
*******************************************************************************/
bool nfa_dm_disable(tNFA_DM_MSG* p_data) {
- tNFC_DEACT_TYPE deactivate_type = NFA_DEACTIVATE_TYPE_IDLE;
-
- NFA_TRACE_DEBUG1("nfa_dm_disable (): graceful:%d", p_data->disable.graceful);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("graceful:%d", p_data->disable.graceful);
if (p_data->disable.graceful) {
/* if RF discovery is enabled */
@@ -489,8 +480,10 @@
}
} else {
nfa_dm_cb.disc_cb.disc_flags |= NFA_DM_DISC_FLAGS_DISABLING;
- nfa_dm_disc_sm_execute(NFA_DM_RF_DEACTIVATE_CMD,
- (tNFA_DM_RF_DISC_DATA*)&deactivate_type);
+ tNFA_DM_RF_DISC_DATA nfa_dm_rf_disc_data;
+ nfa_dm_rf_disc_data.deactivate_type = NFA_DEACTIVATE_TYPE_IDLE;
+
+ nfa_dm_disc_sm_execute(NFA_DM_RF_DEACTIVATE_CMD, &nfa_dm_rf_disc_data);
if ((nfa_dm_cb.disc_cb.disc_flags &
(NFA_DM_DISC_FLAGS_W4_RSP | NFA_DM_DISC_FLAGS_W4_NTF)) == 0) {
/* not waiting to deactivate, clear the flag now */
@@ -522,11 +515,11 @@
**
*******************************************************************************/
void nfa_dm_disable_complete(void) {
- NFA_TRACE_DEBUG0("nfa_dm_disable_complete ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if ((nfa_dm_cb.flags & NFA_DM_FLAGS_DM_DISABLING_NFC) == 0) {
- NFA_TRACE_DEBUG0(
- "nfa_dm_disable_complete (): proceeding with nfc core shutdown.");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("proceeding with nfc core shutdown.");
nfa_dm_cb.flags |= NFA_DM_FLAGS_DM_DISABLING_NFC;
@@ -602,12 +595,12 @@
tNFC_STATUS status;
tNFA_DM_CBACK_DATA dm_cback_data;
- NFA_TRACE_DEBUG0(" nfa_dm_set_power_sub_state ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfa_dm_cb.power_state = p_data->set_power_state.screen_state;
if (nfa_dm_cb.disc_cb.disc_state == NFA_DM_RFST_LISTEN_ACTIVE) {
- NFA_TRACE_DEBUG0(
- "nfa_dm_set_power_sub_state () : NFA_DM_RFST_LISTEN_ACTIVE");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_DM_RFST_LISTEN_ACTIVE");
/* NFCC will give semantic error for power sub state command in Rf listen
* active state */
status = NFC_STATUS_SEMANTIC_ERROR;
@@ -655,7 +648,7 @@
void nfa_dm_rel_excl_rf_control_and_notify(void) {
tNFA_CONN_EVT_DATA conn_evt;
- NFA_TRACE_DEBUG0("nfa_dm_rel_excl_rf_control_and_notify ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Exclusive RF control stopped. Notify app */
nfa_dm_cb.flags &= ~NFA_DM_FLAGS_EXCL_RF_ACTIVE;
@@ -683,7 +676,7 @@
bool nfa_dm_act_request_excl_rf_ctrl(tNFA_DM_MSG* p_data) {
tNFA_CONN_EVT_DATA conn_evt;
- NFA_TRACE_DEBUG0("nfa_dm_act_request_excl_rf_ctrl ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (!nfa_dm_cb.p_excl_conn_cback) {
if (nfa_dm_cb.disc_cb.disc_state != NFA_DM_RFST_IDLE) {
@@ -704,7 +697,7 @@
&p_data->req_excl_rf_ctrl.listen_cfg,
nfa_dm_excl_disc_cback);
} else {
- NFA_TRACE_ERROR0("Exclusive rf control already requested");
+ LOG(ERROR) << StringPrintf("Exclusive rf control already requested");
conn_evt.status = NFA_STATUS_FAILED;
(*p_data->req_excl_rf_ctrl.p_conn_cback)(
@@ -723,8 +716,9 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-bool nfa_dm_act_release_excl_rf_ctrl(tNFA_DM_MSG* p_data) {
- NFA_TRACE_DEBUG0("nfa_dm_act_release_excl_rf_ctrl ()");
+bool nfa_dm_act_release_excl_rf_ctrl(__attribute__((unused))
+ tNFA_DM_MSG* p_data) {
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* nfa_dm_rel_excl_rf_control_and_notify() is called when discovery state goes
* IDLE */
@@ -757,7 +751,7 @@
tNFA_CONN_EVT_DATA conn_evt;
tNFA_DEACTIVATE_TYPE deact_type;
- NFA_TRACE_DEBUG0("nfa_dm_act_deactivate ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Always allow deactivate to IDLE */
/* Do not allow deactivate to SLEEP for T1T,NFCDEP, ISO15693 */
@@ -806,7 +800,7 @@
}
}
- NFA_TRACE_ERROR0("nfa_dm_act_deactivate (): invalid protocol, mode or state");
+ LOG(ERROR) << StringPrintf("invalid protocol, mode or state");
/* Notify error to application */
conn_evt.status = NFA_STATUS_FAILED;
@@ -825,7 +819,7 @@
**
*******************************************************************************/
bool nfa_dm_act_power_off_sleep(tNFA_DM_MSG* p_data) {
- NFA_TRACE_DEBUG0("nfa_dm_act_power_off_sleep ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
NFC_SetPowerOffSleep((bool)(p_data->hdr.layer_specific));
@@ -844,7 +838,7 @@
bool nfa_dm_act_reg_vsc(tNFA_DM_MSG* p_data) {
if (NFC_RegVSCback(p_data->reg_vsc.is_register, p_data->reg_vsc.p_cback) !=
NFC_STATUS_OK) {
- NFA_TRACE_ERROR0("NFC_RegVSCback failed");
+ LOG(ERROR) << StringPrintf("NFC_RegVSCback failed");
}
return true;
}
@@ -910,7 +904,7 @@
tNFA_TECHNOLOGY_MASK poll_tech_mask;
tNFA_DM_DISC_TECH_PROTO_MASK poll_disc_mask = 0;
- NFA_TRACE_DEBUG0("nfa_dm_start_polling ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
poll_tech_mask = nfa_dm_cb.poll_mask;
@@ -978,7 +972,7 @@
bool nfa_dm_act_enable_polling(tNFA_DM_MSG* p_data) {
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG0("nfa_dm_act_enable_polling ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if ((!(nfa_dm_cb.flags & NFA_DM_FLAGS_POLLING_ENABLED)) &&
(!(nfa_dm_cb.flags & NFA_DM_FLAGS_EXCL_RF_ACTIVE))) {
@@ -992,7 +986,7 @@
return true;
}
} else {
- NFA_TRACE_ERROR0("nfa_dm_act_enable_polling (): already started");
+ LOG(ERROR) << StringPrintf("already started");
}
/* send NFA_POLL_ENABLED_EVT with NFA_STATUS_FAILED */
@@ -1012,7 +1006,7 @@
**
*******************************************************************************/
static bool nfa_dm_deactivate_polling(void) {
- NFA_TRACE_DEBUG0("nfa_dm_deactivate_polling ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if ((nfa_dm_cb.disc_cb.disc_state == NFA_DM_RFST_W4_ALL_DISCOVERIES) ||
(nfa_dm_cb.disc_cb.disc_state == NFA_DM_RFST_W4_HOST_SELECT)) {
@@ -1040,10 +1034,10 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-bool nfa_dm_act_disable_polling(tNFA_DM_MSG* p_data) {
+bool nfa_dm_act_disable_polling(__attribute__((unused)) tNFA_DM_MSG* p_data) {
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG0("nfa_dm_act_disable_polling ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfa_dm_cb.poll_disc_handle != NFA_HANDLE_INVALID) {
nfa_dm_cb.flags &= ~NFA_DM_FLAGS_POLLING_ENABLED;
@@ -1074,10 +1068,10 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-bool nfa_dm_act_enable_listening(tNFA_DM_MSG* p_data) {
+bool nfa_dm_act_enable_listening(__attribute__((unused)) tNFA_DM_MSG* p_data) {
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG0("nfa_dm_act_enable_listening ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfa_dm_cb.flags &= ~NFA_DM_FLAGS_LISTEN_DISABLED;
evt_data.status = NFA_STATUS_OK;
@@ -1095,10 +1089,10 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-bool nfa_dm_act_disable_listening(tNFA_DM_MSG* p_data) {
+bool nfa_dm_act_disable_listening(__attribute__((unused)) tNFA_DM_MSG* p_data) {
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG0("nfa_dm_act_disable_listening ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfa_dm_cb.flags |= NFA_DM_FLAGS_LISTEN_DISABLED;
evt_data.status = NFA_STATUS_OK;
@@ -1116,10 +1110,10 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-bool nfa_dm_act_pause_p2p(tNFA_DM_MSG* p_data) {
+bool nfa_dm_act_pause_p2p(__attribute__((unused)) tNFA_DM_MSG* p_data) {
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG0("nfa_dm_act_pause_p2p ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfa_dm_cb.flags |= NFA_DM_FLAGS_P2P_PAUSED;
evt_data.status = NFA_STATUS_OK;
@@ -1137,10 +1131,10 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-bool nfa_dm_act_resume_p2p(tNFA_DM_MSG* p_data) {
+bool nfa_dm_act_resume_p2p(__attribute__((unused)) tNFA_DM_MSG* p_data) {
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG0("nfa_dm_act_resume_p2p ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfa_dm_cb.flags &= ~NFA_DM_FLAGS_P2P_PAUSED;
evt_data.status = NFA_STATUS_OK;
@@ -1161,7 +1155,7 @@
bool nfa_dm_act_send_raw_frame(tNFA_DM_MSG* p_data) {
tNFC_STATUS status = NFC_STATUS_FAILED;
- NFA_TRACE_DEBUG0("nfa_dm_act_send_raw_frame ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* If NFC link is activated */
if ((nfa_dm_cb.disc_cb.disc_state == NFA_DM_RFST_POLL_ACTIVE) ||
@@ -1209,8 +1203,8 @@
**
*******************************************************************************/
bool nfa_dm_set_p2p_listen_tech(tNFA_DM_MSG* p_data) {
- NFA_TRACE_DEBUG1("nfa_dm_set_p2p_listen_tech () tech_mask = %d",
- p_data->set_p2p_listen_tech.tech_mask);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("tech_mask = %d", p_data->set_p2p_listen_tech.tech_mask);
nfa_p2p_update_listen_tech(p_data->set_p2p_listen_tech.tech_mask);
nfa_dm_conn_cback_event_notify(NFA_SET_P2P_LISTEN_TECH_EVT, NULL);
@@ -1227,10 +1221,11 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-bool nfa_dm_act_start_rf_discovery(tNFA_DM_MSG* p_data) {
+bool nfa_dm_act_start_rf_discovery(__attribute__((unused))
+ tNFA_DM_MSG* p_data) {
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG0("nfa_dm_act_start_rf_discovery ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfa_dm_cb.disc_cb.disc_flags & NFA_DM_DISC_FLAGS_ENABLED) {
evt_data.status = NFA_STATUS_OK;
@@ -1256,10 +1251,10 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-bool nfa_dm_act_stop_rf_discovery(tNFA_DM_MSG* p_data) {
+bool nfa_dm_act_stop_rf_discovery(__attribute__((unused)) tNFA_DM_MSG* p_data) {
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG0("nfa_dm_act_stop_rf_discovery ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (!(nfa_dm_cb.disc_cb.disc_flags & NFA_DM_DISC_FLAGS_ENABLED) ||
(nfa_dm_cb.disc_cb.disc_state == NFA_DM_RFST_IDLE)) {
@@ -1322,7 +1317,7 @@
**
*******************************************************************************/
bool nfa_dm_act_select(tNFA_DM_MSG* p_data) {
- NFA_TRACE_DEBUG0("nfa_dm_act_select ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfa_dm_rf_discover_select(p_data->select.rf_disc_id, p_data->select.protocol,
p_data->select.rf_interface);
@@ -1341,7 +1336,7 @@
bool nfa_dm_act_update_rf_params(tNFA_DM_MSG* p_data) {
tNFA_CONN_EVT_DATA conn_evt;
- NFA_TRACE_DEBUG0("nfa_dm_act_update_rf_params ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (NFC_UpdateRFCommParams(&p_data->update_rf_params.params) !=
NFC_STATUS_OK) {
@@ -1361,11 +1356,10 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-bool nfa_dm_act_disable_timeout(tNFA_DM_MSG* p_data) {
- tNFA_DM_API_DISABLE disable;
-
- disable.graceful = false;
- nfa_dm_disable((tNFA_DM_MSG*)&disable);
+bool nfa_dm_act_disable_timeout(__attribute__((unused)) tNFA_DM_MSG* p_data) {
+ tNFA_DM_MSG nfa_dm_msg;
+ nfa_dm_msg.disable.graceful = false;
+ nfa_dm_disable(&nfa_dm_msg);
return true;
}
@@ -1379,7 +1373,7 @@
**
*******************************************************************************/
void nfa_dm_act_conn_cback_notify(uint8_t event, tNFA_CONN_EVT_DATA* p_data) {
- NFA_TRACE_DEBUG1("nfa_dm_act_conn_cback_notify (): event:0x%X", event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event:0x%X", event);
/* Notify event using appropriate CONN_CBACK */
nfa_dm_conn_cback_event_notify(event, p_data);
@@ -1413,12 +1407,12 @@
** Returns None
**
*******************************************************************************/
-static void nfa_dm_act_data_cback(uint8_t conn_id, tNFC_CONN_EVT event,
- tNFC_CONN* p_data) {
+static void nfa_dm_act_data_cback(__attribute__((unused)) uint8_t conn_id,
+ tNFC_CONN_EVT event, tNFC_CONN* p_data) {
NFC_HDR* p_msg;
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG1("nfa_dm_act_data_cback (): event = 0x%X", event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event = 0x%X", event);
if (event == NFC_DATA_CEVT) {
p_msg = (NFC_HDR*)p_data->data.p_data;
@@ -1432,8 +1426,8 @@
GKI_freebuf(p_msg);
} else {
- NFA_TRACE_ERROR0(
- "nfa_dm_act_data_cback (): received NFC_DATA_CEVT with NULL data "
+ LOG(ERROR) << StringPrintf(
+ "received NFC_DATA_CEVT with NULL data "
"pointer");
}
} else if (event == NFC_DEACTIVATE_CEVT) {
@@ -1454,7 +1448,7 @@
tNFC_DISCOVER* p_data) {
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG1("nfa_dm_excl_disc_cback (): event:0x%02X", event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event:0x%02X", event);
switch (event) {
case NFA_DM_RF_DISC_START_EVT:
@@ -1539,7 +1533,7 @@
break;
default:
- NFA_TRACE_ERROR0("Unexpected event");
+ LOG(ERROR) << StringPrintf("Unexpected event");
break;
}
}
@@ -1557,7 +1551,7 @@
tNFC_DISCOVER* p_data) {
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG1("nfa_dm_poll_disc_cback (): event:0x%02X", event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event:0x%02X", event);
switch (event) {
case NFA_DM_RF_DISC_START_EVT:
@@ -1597,7 +1591,7 @@
nfa_dm_cb.p_activate_ntf = NULL;
}
} else {
- NFA_TRACE_DEBUG0("P2P is paused");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("P2P is paused");
nfa_dm_notify_activation_status(NFA_STATUS_OK, NULL);
}
}
@@ -1709,7 +1703,7 @@
tNFC_RF_TECH_PARAMS* p_tech_params;
uint8_t *p_nfcid = NULL, nfcid_len;
- NFA_TRACE_DEBUG1("nfa_dm_notify_activation_status (): status:0x%X", status);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("status:0x%X", status);
if (!nfa_dm_cb.p_activate_ntf) {
/* this is for NFA P2P listen */
@@ -1815,7 +1809,6 @@
nfa_dm_cb.p_activate_ntf = NULL;
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function nfa_dm_nfc_revt_2_str
@@ -1823,62 +1816,45 @@
** Description convert nfc revt to string
**
*******************************************************************************/
-char* nfa_dm_nfc_revt_2_str(tNFC_RESPONSE_EVT event) {
+std::string nfa_dm_nfc_revt_2_str(tNFC_RESPONSE_EVT event) {
switch (event) {
case NFC_ENABLE_REVT:
return "NFC_ENABLE_REVT";
-
case NFC_DISABLE_REVT:
return "NFC_DISABLE_REVT";
-
case NFC_SET_CONFIG_REVT:
return "NFC_SET_CONFIG_REVT";
-
case NFC_GET_CONFIG_REVT:
return "NFC_GET_CONFIG_REVT";
-
case NFC_NFCEE_DISCOVER_REVT:
return "NFC_NFCEE_DISCOVER_REVT";
-
case NFC_NFCEE_INFO_REVT:
return "NFC_NFCEE_INFO_REVT";
-
case NFC_NFCEE_MODE_SET_REVT:
return "NFC_NFCEE_MODE_SET_REVT";
-
case NFC_RF_FIELD_REVT:
return "NFC_RF_FIELD_REVT";
-
case NFC_EE_ACTION_REVT:
return "NFC_EE_ACTION_REVT";
-
case NFC_EE_DISCOVER_REQ_REVT:
return "NFC_EE_DISCOVER_REQ_REVT";
-
case NFC_SET_ROUTING_REVT:
return "NFC_SET_ROUTING_REVT";
-
case NFC_GET_ROUTING_REVT:
return "NFC_GET_ROUTING_REVT";
-
case NFC_GEN_ERROR_REVT:
return "NFC_GEN_ERROR_REVT";
-
case NFC_NFCC_RESTART_REVT:
return "NFC_NFCC_RESTART_REVT";
-
case NFC_NFCC_TIMEOUT_REVT:
return "NFC_NFCC_TIMEOUT_REVT";
-
case NFC_NFCC_TRANSPORT_ERR_REVT:
return "NFC_NFCC_TRANSPORT_ERR_REVT";
-
case NFC_NFCC_POWER_OFF_REVT:
return "NFC_NFCC_POWER_OFF_REVT";
-
+ case NFC_NFCEE_STATUS_REVT:
+ return "NFC_NFCEE_STATUS_REVT";
default:
return "unknown revt";
- break;
}
}
-#endif /* BT_VERBOSE */
diff --git a/src/nfa/dm/nfa_dm_api.c b/src/nfa/dm/nfa_dm_api.cc
similarity index 92%
rename from src/nfa/dm/nfa_dm_api.c
rename to src/nfa/dm/nfa_dm_api.cc
index 6d62375..197174a 100644
--- a/src/nfa/dm/nfa_dm_api.c
+++ b/src/nfa/dm/nfa_dm_api.cc
@@ -21,15 +21,19 @@
* NFA interface for device management
*
******************************************************************************/
-#include <log/log.h>
#include <string.h>
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+#include <log/log.h>
+
#include "ndef_utils.h"
#include "nfa_api.h"
#include "nfa_ce_int.h"
-#include "nfa_dm_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*****************************************************************************
** Constants
@@ -53,7 +57,7 @@
**
*******************************************************************************/
void NFA_Init(tHAL_NFC_ENTRY* p_hal_entry_tbl) {
- NFA_TRACE_API0("NFA_Init ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfa_sys_init();
nfa_dm_init();
nfa_p2p_init();
@@ -95,11 +99,11 @@
tNFA_CONN_CBACK* p_conn_cback) {
tNFA_DM_API_ENABLE* p_msg;
- NFA_TRACE_API0("NFA_Enable ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Validate parameters */
if ((!p_dm_cback) || (!p_conn_cback)) {
- NFA_TRACE_ERROR0("NFA_Enable (): error null callback");
+ LOG(ERROR) << StringPrintf("error null callback");
return (NFA_STATUS_FAILED);
}
@@ -140,7 +144,8 @@
tNFA_STATUS NFA_Disable(bool graceful) {
tNFA_DM_API_DISABLE* p_msg;
- NFA_TRACE_API1("NFA_Disable (graceful=%i)", graceful);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_Disable (graceful=%i)", graceful);
p_msg = (tNFA_DM_API_DISABLE*)GKI_getbuf(sizeof(tNFA_DM_API_DISABLE));
if (p_msg != NULL) {
@@ -154,6 +159,19 @@
return (NFA_STATUS_FAILED);
}
+
+/*******************************************************************************
+**
+** Function NFA_GetNCIVersion
+**
+** Description Returns the NCI version of the NFCC to upper layer
+**
+**
+** Returns NCI version NCI2.0 / NCI1.0
+**
+*******************************************************************************/
+uint8_t NFA_GetNCIVersion() { return NFC_GetNCIVersion(); }
+
/*******************************************************************************
**
** Function NFA_SetPowerSubStateForScreenState
@@ -166,7 +184,8 @@
**
*******************************************************************************/
tNFA_STATUS NFA_SetPowerSubStateForScreenState(uint8_t screenState) {
- NFA_TRACE_API2("%s: state:0x%X", __func__, screenState);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: state:0x%X", __func__, screenState);
uint8_t nci_scren_state = 0xFF;
uint16_t buf_size = sizeof(tNFA_DM_API_SET_POWER_SUB_STATE);
@@ -190,7 +209,8 @@
break;
default:
- NFA_TRACE_API1("%s, unknown screen state", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s, unknown screen state", __func__);
break;
}
@@ -222,7 +242,7 @@
tNFA_STATUS NFA_SetConfig(tNFA_PMID param_id, uint8_t length, uint8_t* p_data) {
tNFA_DM_API_SET_CONFIG* p_msg;
- NFA_TRACE_API1("NFA_SetConfig (): param_id:0x%X", param_id);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("param_id:0x%X", param_id);
p_msg = (tNFA_DM_API_SET_CONFIG*)GKI_getbuf(
(uint16_t)(sizeof(tNFA_DM_API_SET_CONFIG) + length));
@@ -259,7 +279,7 @@
tNFA_STATUS NFA_GetConfig(uint8_t num_ids, tNFA_PMID* p_param_ids) {
tNFA_DM_API_GET_CONFIG* p_msg;
- NFA_TRACE_API1("NFA_GetConfig (): num_ids: %i", num_ids);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("num_ids: %i", num_ids);
p_msg = (tNFA_DM_API_GET_CONFIG*)GKI_getbuf(
(uint16_t)(sizeof(tNFA_DM_API_GET_CONFIG) + num_ids));
@@ -321,10 +341,10 @@
tNFA_NDEF_CBACK* p_ndef_cback) {
tNFA_DM_API_REQ_EXCL_RF_CTRL* p_msg;
- NFA_TRACE_API1("NFA_RequestExclusiveRfControl () poll_mask=0x%x", poll_mask);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("poll_mask=0x%x", poll_mask);
if (!p_conn_cback) {
- NFA_TRACE_ERROR0("NFA_RequestExclusiveRfControl (): error null callback");
+ LOG(ERROR) << StringPrintf("error null callback");
return (NFA_STATUS_FAILED);
}
@@ -363,11 +383,11 @@
tNFA_STATUS NFA_ReleaseExclusiveRfControl(void) {
NFC_HDR* p_msg;
- NFA_TRACE_API0("NFA_ReleaseExclusiveRfControl ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (!nfa_dm_cb.p_excl_conn_cback) {
- NFA_TRACE_ERROR0(
- "NFA_ReleaseExclusiveRfControl (): Exclusive rf control is not in "
+ LOG(ERROR) << StringPrintf(
+ "Exclusive rf control is not in "
"progress");
return (NFA_STATUS_FAILED);
}
@@ -420,7 +440,7 @@
tNFA_STATUS NFA_EnablePolling(tNFA_TECHNOLOGY_MASK poll_mask) {
tNFA_DM_API_ENABLE_POLL* p_msg;
- NFA_TRACE_API1("NFA_EnablePolling () 0x%X", poll_mask);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("0x%X", poll_mask);
p_msg = (tNFA_DM_API_ENABLE_POLL*)GKI_getbuf(sizeof(tNFA_DM_API_ENABLE_POLL));
if (p_msg != NULL) {
@@ -454,7 +474,7 @@
tNFA_STATUS NFA_DisablePolling(void) {
NFC_HDR* p_msg;
- NFA_TRACE_API0("NFA_DisablePolling ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (NFC_HDR*)GKI_getbuf(sizeof(NFC_HDR));
if (p_msg != NULL) {
@@ -494,7 +514,7 @@
tNFA_STATUS NFA_EnableListening(void) {
NFC_HDR* p_msg;
- NFA_TRACE_API0("NFA_EnableListening ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (NFC_HDR*)GKI_getbuf(sizeof(NFC_HDR));
if (p_msg != NULL) {
@@ -528,7 +548,7 @@
tNFA_STATUS NFA_DisableListening(void) {
NFC_HDR* p_msg;
- NFA_TRACE_API0("NFA_DisableListening ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (NFC_HDR*)GKI_getbuf(sizeof(NFC_HDR));
if (p_msg != NULL) {
@@ -565,7 +585,7 @@
tNFA_STATUS NFA_PauseP2p(void) {
NFC_HDR* p_msg;
- NFA_TRACE_API0("NFA_PauseP2p ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (NFC_HDR*)GKI_getbuf(sizeof(NFC_HDR));
if (p_msg != NULL) {
@@ -598,7 +618,7 @@
tNFA_STATUS NFA_ResumeP2p(void) {
NFC_HDR* p_msg;
- NFA_TRACE_API0("NFA_ResumeP2p ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (NFC_HDR*)GKI_getbuf(sizeof(NFC_HDR));
if (p_msg != NULL) {
@@ -635,7 +655,7 @@
tNFA_STATUS NFA_SetP2pListenTech(tNFA_TECHNOLOGY_MASK tech_mask) {
tNFA_DM_API_SET_P2P_LISTEN_TECH* p_msg;
- NFA_TRACE_API1("NFA_P2pSetListenTech (): tech_mask:0x%X", tech_mask);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("tech_mask:0x%X", tech_mask);
p_msg = (tNFA_DM_API_SET_P2P_LISTEN_TECH*)GKI_getbuf(
sizeof(tNFA_DM_API_SET_P2P_LISTEN_TECH));
@@ -668,7 +688,7 @@
tNFA_STATUS NFA_StartRfDiscovery(void) {
NFC_HDR* p_msg;
- NFA_TRACE_API0("NFA_StartRfDiscovery ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (NFC_HDR*)GKI_getbuf(sizeof(NFC_HDR));
if (p_msg != NULL) {
@@ -698,7 +718,7 @@
tNFA_STATUS NFA_StopRfDiscovery(void) {
NFC_HDR* p_msg;
- NFA_TRACE_API0("NFA_StopRfDiscovery ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (NFC_HDR*)GKI_getbuf(sizeof(NFC_HDR));
if (p_msg != NULL) {
@@ -737,7 +757,7 @@
tNFA_STATUS NFA_SetRfDiscoveryDuration(uint16_t discovery_period_ms) {
tNFA_DM_API_SET_RF_DISC_DUR* p_msg;
- NFA_TRACE_API0("NFA_SetRfDiscoveryDuration ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Post the API message */
p_msg = (tNFA_DM_API_SET_RF_DISC_DUR*)GKI_getbuf(sizeof(NFC_HDR));
@@ -777,15 +797,15 @@
tNFA_INTF_TYPE rf_interface) {
tNFA_DM_API_SELECT* p_msg;
- NFA_TRACE_API3(
- "NFA_Select (): rf_disc_id:0x%X, protocol:0x%X, rf_interface:0x%X",
- rf_disc_id, protocol, rf_interface);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("rf_disc_id:0x%X, protocol:0x%X, rf_interface:0x%X",
+ rf_disc_id, protocol, rf_interface);
if (((rf_interface == NFA_INTERFACE_ISO_DEP) &&
(protocol != NFA_PROTOCOL_ISO_DEP)) ||
((rf_interface == NFA_INTERFACE_NFC_DEP) &&
(protocol != NFA_PROTOCOL_NFC_DEP))) {
- NFA_TRACE_ERROR0("NFA_Select (): RF interface is not matched protocol");
+ LOG(ERROR) << StringPrintf("RF interface is not matched protocol");
return (NFA_STATUS_INVALID_PARAM);
}
@@ -822,7 +842,7 @@
tNFA_STATUS NFA_UpdateRFCommParams(tNFA_RF_COMM_PARAMS* p_params) {
tNFA_DM_API_UPDATE_RF_PARAMS* p_msg;
- NFA_TRACE_API0("NFA_UpdateRFCommParams ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (tNFA_DM_API_UPDATE_RF_PARAMS*)GKI_getbuf(
(uint16_t)(sizeof(tNFA_DM_API_UPDATE_RF_PARAMS)));
@@ -872,7 +892,7 @@
extern tNFA_STATUS NFA_Deactivate(bool sleep_mode) {
tNFA_DM_API_DEACTIVATE* p_msg;
- NFA_TRACE_API1("NFA_Deactivate (): sleep_mode:%i", sleep_mode);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("sleep_mode:%i", sleep_mode);
p_msg = (tNFA_DM_API_DEACTIVATE*)GKI_getbuf(
(uint16_t)(sizeof(tNFA_DM_API_DEACTIVATE)));
@@ -913,7 +933,7 @@
uint16_t size;
uint8_t* p;
- NFA_TRACE_API1("NFA_SendRawFrame () data_len:%d", data_len);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("data_len:%d", data_len);
/* Validate parameters */
if ((data_len == 0) || (p_raw_data == NULL))
@@ -977,14 +997,14 @@
tNFA_NDEF_CBACK* p_ndef_cback) {
tNFA_DM_API_REG_NDEF_HDLR* p_msg;
- NFA_TRACE_API2(
- "NFA_RegisterNDefTypeHandler (): handle whole ndef message: %i, "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "handle whole ndef message: %i, "
"tnf=0x%02x",
handle_whole_message, tnf);
/* Check for NULL callback */
if (!p_ndef_cback) {
- NFA_TRACE_ERROR0("NFA_RegisterNDefTypeHandler (): error - null callback");
+ LOG(ERROR) << StringPrintf("error - null callback");
return (NFA_STATUS_INVALID_PARAM);
}
@@ -1037,14 +1057,14 @@
tNFA_NDEF_CBACK* p_ndef_cback) {
tNFA_DM_API_REG_NDEF_HDLR* p_msg;
- NFA_TRACE_API2(
- "NFA_RegisterNDefUriHandler (): handle whole ndef message: %i, "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "handle whole ndef message: %i, "
"uri_id=0x%02x",
handle_whole_message, uri_id);
/* Check for NULL callback */
if (!p_ndef_cback) {
- NFA_TRACE_ERROR0("NFA_RegisterNDefUriHandler (): error - null callback");
+ LOG(ERROR) << StringPrintf("error - null callback");
return (NFA_STATUS_INVALID_PARAM);
}
@@ -1091,8 +1111,8 @@
extern tNFA_STATUS NFA_DeregisterNDefTypeHandler(tNFA_HANDLE ndef_type_handle) {
tNFA_DM_API_DEREG_NDEF_HDLR* p_msg;
- NFA_TRACE_API1("NFA_DeregisterNDefHandler (): handle 0x%08x",
- ndef_type_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("handle 0x%08x", ndef_type_handle);
p_msg = (tNFA_DM_API_DEREG_NDEF_HDLR*)GKI_getbuf(
(uint16_t)(sizeof(tNFA_DM_API_DEREG_NDEF_HDLR)));
@@ -1126,11 +1146,10 @@
tNFA_STATUS NFA_PowerOffSleepMode(bool start_stop) {
NFC_HDR* p_msg;
- NFA_TRACE_API1("NFA_PowerOffSleepState () start_stop=%d", start_stop);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("start_stop=%d", start_stop);
if (nfa_dm_cb.flags & NFA_DM_FLAGS_SETTING_PWR_MODE) {
- NFA_TRACE_ERROR0(
- "NFA_PowerOffSleepState (): NFA DM is busy to update power mode");
+ LOG(ERROR) << StringPrintf("NFA DM is busy to update power mode");
return (NFA_STATUS_FAILED);
} else {
nfa_dm_cb.flags |= NFA_DM_FLAGS_SETTING_PWR_MODE;
@@ -1164,10 +1183,11 @@
tNFC_STATUS NFA_RegVSCback(bool is_register, tNFA_VSC_CBACK* p_cback) {
tNFA_DM_API_REG_VSC* p_msg;
- NFA_TRACE_API1("NFA_RegVSCback() is_register=%d", is_register);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("is_register=%d", is_register);
if (p_cback == NULL) {
- NFA_TRACE_ERROR0("NFA_RegVSCback() requires a valid callback function");
+ LOG(ERROR) << StringPrintf("requires a valid callback function");
return (NFA_STATUS_FAILED);
}
@@ -1207,7 +1227,7 @@
tNFA_DM_API_SEND_VSC* p_msg;
uint16_t size = sizeof(tNFA_DM_API_SEND_VSC) + cmd_params_len;
- NFA_TRACE_API1("NFA_SendVsCommand() oid=0x%x", oid);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("oid=0x%x", oid);
p_msg = (tNFA_DM_API_SEND_VSC*)GKI_getbuf(size);
if (p_msg != NULL) {
@@ -1277,21 +1297,6 @@
/*******************************************************************************
**
-** Function NFA_SetTraceLevel
-**
-** Description This function sets the trace level for NFA. If called with
-** a value of 0xFF, it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-uint8_t NFA_SetTraceLevel(uint8_t new_level) {
- if (new_level != 0xFF) nfa_sys_set_trace_level(new_level);
-
- return (nfa_sys_cb.trace_level);
-}
-/*******************************************************************************
-**
** Function: NFA_EnableDtamode
**
** Description: Enable DTA Mode
@@ -1300,7 +1305,8 @@
**
*******************************************************************************/
void NFA_EnableDtamode(tNFA_eDtaModes eDtaMode) {
- NFA_TRACE_API2("%s: 0x%x ", __func__, eDtaMode);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: 0x%x ", __func__, eDtaMode);
appl_dta_mode_flag = 0x01;
nfa_dm_cb.eDtaMode = eDtaMode;
}
diff --git a/src/nfa/dm/nfa_dm_cfg.c b/src/nfa/dm/nfa_dm_cfg.cc
similarity index 84%
rename from src/nfa/dm/nfa_dm_cfg.c
rename to src/nfa/dm/nfa_dm_cfg.cc
index 9e51a6a..ceef2ff 100644
--- a/src/nfa/dm/nfa_dm_cfg.c
+++ b/src/nfa/dm/nfa_dm_cfg.cc
@@ -42,12 +42,6 @@
uint8_t* p_nfa_dm_ce_cfg = (uint8_t*)nfa_dm_ce_cfg;
-/* the SetConfig for optional general NFC stack functions */
-const uint8_t nfa_dm_gen_cfg[] = {
- 3, /* total length */
- /* Instruct NFCC to report RF field generated by remote device (or not) */
- NFC_PMID_RF_FIELD_INFO, 1, 0x01};
-
uint8_t* p_nfa_dm_gen_cfg = NULL;
/* the RF Discovery Frequency for each technology */
@@ -68,18 +62,11 @@
uint8_t nfa_ee_max_ee_cfg = NFA_EE_MAX_EE_SUPPORTED;
-const tNCI_DISCOVER_MAPS nfa_dm_interface_mapping[NFA_DM_NUM_INTERFACE_MAP] = {
- /* Protocols that use Frame Interface do not need to be included in the
- interface mapping */
- {NCI_PROTOCOL_ISO_DEP, NCI_INTERFACE_MODE_POLL_N_LISTEN,
- NCI_INTERFACE_ISO_DEP},
- {NCI_PROTOCOL_NFC_DEP, NCI_INTERFACE_MODE_POLL_N_LISTEN,
- NCI_INTERFACE_NFC_DEP}};
/* set to NULL to use the default mapping set by stack */
tNCI_DISCOVER_MAPS* p_nfa_dm_interface_mapping = NULL;
uint8_t nfa_dm_num_dm_interface_mapping = 0;
-const tNFA_DM_CFG nfa_dm_cfg = {
+tNFA_DM_CFG nfa_dm_cfg = {
/* Automatic NDEF detection (when not in exclusive RF mode) */
NFA_DM_AUTO_DETECT_NDEF,
/* Automatic NDEF read (when not in exclusive RF mode) */
@@ -95,7 +82,7 @@
const uint8_t nfa_hci_whitelist[] = {0x02, 0x03, 0x04};
-const tNFA_HCI_CFG nfa_hci_cfg = {
+tNFA_HCI_CFG nfa_hci_cfg = {
/* Max HCI Network IDLE time to wait for EE DISC REQ Ntf(s) */
NFA_HCI_NETWK_INIT_IDLE_TIMEOUT,
/* Maximum HCP Response time to any HCP Command */
@@ -108,7 +95,7 @@
tNFA_HCI_CFG* p_nfa_hci_cfg = (tNFA_HCI_CFG*)&nfa_hci_cfg;
bool nfa_poll_bail_out_mode = false;
-const tNFA_PROPRIETARY_CFG nfa_proprietary_cfg = {
+tNFA_PROPRIETARY_CFG nfa_proprietary_cfg = {
0x80, /* NCI_PROTOCOL_18092_ACTIVE */
0x81, /* NCI_PROTOCOL_B_PRIME */
0x82, /* NCI_PROTOCOL_DUAL */
diff --git a/src/nfa/dm/nfa_dm_discover.c b/src/nfa/dm/nfa_dm_discover.cc
similarity index 88%
rename from src/nfa/dm/nfa_dm_discover.c
rename to src/nfa/dm/nfa_dm_discover.cc
index e28af09..62332cb 100644
--- a/src/nfa/dm/nfa_dm_discover.c
+++ b/src/nfa/dm/nfa_dm_discover.cc
@@ -21,13 +21,16 @@
* function.
*
******************************************************************************/
-#include <string.h>
+#include <string>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nci_hmsgs.h"
#include "nfa_api.h"
#include "nfa_dm_int.h"
#include "nfa_p2p_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
+
#if (NFC_NFCEE_INCLUDED == TRUE)
#include "nfa_ee_api.h"
#include "nfa_ee_int.h"
@@ -35,10 +38,14 @@
#include "nfa_rw_int.h"
#include "nfc_int.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
/*
** static functions
*/
-
static uint8_t nfa_dm_get_rf_discover_config(
tNFA_DM_DISC_TECH_PROTO_MASK dm_disc_mask,
tNFC_DISCOVER_PARAMS disc_params[], uint8_t max_params);
@@ -57,10 +64,8 @@
static void nfa_dm_disc_kovio_timeout_cback(TIMER_LIST_ENT* p_tle);
static void nfa_dm_disc_report_kovio_presence_check(tNFC_STATUS status);
-#if (BT_TRACE_VERBOSE == TRUE)
-static char* nfa_dm_disc_state_2_str(uint8_t state);
-static char* nfa_dm_disc_event_2_str(uint8_t event);
-#endif
+static std::string nfa_dm_disc_state_2_str(uint8_t state);
+static std::string nfa_dm_disc_event_2_str(uint8_t event);
typedef struct nfa_dm_p2p_prio_logic {
bool isodep_detected; /* flag to check if ISO-DEP is detected */
@@ -89,9 +94,8 @@
uint8_t num_params = 0;
if (nfa_dm_cb.flags & NFA_DM_FLAGS_LISTEN_DISABLED) {
- NFA_TRACE_DEBUG1(
- "nfa_dm_get_rf_discover_config () listen disabled, rm listen from 0x%x",
- dm_disc_mask);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("listen disabled, rm listen from 0x%x", dm_disc_mask);
dm_disc_mask &= NFA_DM_DISC_MASK_POLL;
}
if (nfa_dm_is_p2p_paused()) {
@@ -274,9 +278,8 @@
uint8_t platform = 0;
uint8_t sens_info = 0;
- NFA_TRACE_DEBUG1(
- "nfa_dm_set_rf_listen_mode_config () tech_proto_mask = 0x%08X",
- tech_proto_mask);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("tech_proto_mask = 0x%08X", tech_proto_mask);
/*
** T1T listen LA_PROT 0x80, LA_SENS_RES byte1:0x00 byte2:0x0C
@@ -390,7 +393,7 @@
static void nfa_dm_set_total_duration(void) {
uint8_t params[10], *p;
- NFA_TRACE_DEBUG0("nfa_dm_set_total_duration ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p = params;
@@ -419,7 +422,7 @@
tNFA_LISTEN_CFG* p_cfg = &nfa_dm_cb.disc_cb.excl_listen_config;
uint8_t params[250], *p, xx;
- NFA_TRACE_DEBUG0("nfa_dm_set_rf_listen_mode_raw_config ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/*
** Discovery Configuration Parameters for Listen A
@@ -599,8 +602,8 @@
*p_disc_mask = disc_mask;
- NFA_TRACE_DEBUG1("nfa_dm_set_rf_listen_mode_raw_config () disc_mask = 0x%x",
- disc_mask);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("disc_mask = 0x%x", disc_mask);
}
/*******************************************************************************
@@ -694,8 +697,8 @@
}
}
- NFA_TRACE_DEBUG3(
- "nfa_dm_disc_get_disc_mask (): tech_n_mode:0x%X, protocol:0x%X, "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "tech_n_mode:0x%X, protocol:0x%X, "
"disc_mask:0x%X",
tech_n_mode, protocol, disc_mask);
return (disc_mask);
@@ -714,7 +717,7 @@
tNFC_DISCOVER* p_data) {
tNFA_DM_RF_DISC_SM_EVENT dm_disc_event = NFA_DM_DISC_SM_MAX_EVENT;
- NFA_TRACE_DEBUG1("nfa_dm_disc_discovery_cback (): event:0x%X", event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event:0x%X", event);
switch (event) {
case NFC_START_DEVT:
@@ -741,11 +744,13 @@
dm_disc_event = NFA_DM_RF_DEACTIVATE_RSP;
break;
default:
- NFA_TRACE_ERROR0("Unexpected event");
+ LOG(ERROR) << StringPrintf("Unexpected event");
return;
}
- nfa_dm_disc_sm_execute(dm_disc_event, (tNFA_DM_RF_DISC_DATA*)p_data);
+ tNFA_DM_RF_DISC_DATA nfa_dm_rf_disc_data;
+ nfa_dm_rf_disc_data.nfc_discover = *p_data;
+ nfa_dm_disc_sm_execute(dm_disc_event, &nfa_dm_rf_disc_data);
}
/*******************************************************************************
@@ -813,8 +818,8 @@
static tNFC_STATUS nfa_dm_disc_force_to_idle(void) {
tNFC_STATUS status = NFC_STATUS_SEMANTIC_ERROR;
- NFA_TRACE_DEBUG1("nfa_dm_disc_force_to_idle() disc_flags = 0x%x",
- nfa_dm_cb.disc_cb.disc_flags);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("disc_flags = 0x%x", nfa_dm_cb.disc_cb.disc_flags);
/* do not execute more than one */
if (nfa_dm_cb.disc_cb.disc_flags & NFA_DM_DISC_FLAGS_W4_NTF) {
@@ -836,8 +841,9 @@
** Returns void
**
*******************************************************************************/
-static void nfa_dm_disc_deact_ntf_timeout_cback(TIMER_LIST_ENT* p_tle) {
- NFA_TRACE_ERROR0("nfa_dm_disc_deact_ntf_timeout_cback()");
+static void nfa_dm_disc_deact_ntf_timeout_cback(__attribute__((unused))
+ TIMER_LIST_ENT* p_tle) {
+ LOG(ERROR) << __func__;
nfa_dm_disc_force_to_idle();
}
@@ -901,7 +907,7 @@
uint8_t config_params[10], *p;
uint8_t num_params, xx;
- NFA_TRACE_DEBUG0("nfa_dm_start_rf_discover ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Make sure that RF discovery was enabled, or some app has exclusive control
*/
if ((!(nfa_dm_cb.disc_cb.disc_flags & NFA_DM_DISC_FLAGS_ENABLED)) &&
@@ -1029,7 +1035,7 @@
nfa_dm_cb.disc_cb.entry[xx].selected_disc_mask =
poll_mask | listen_mask;
- NFA_TRACE_DEBUG2(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_dm_cb.disc_cb.entry[%d].selected_disc_mask = 0x%x", xx,
nfa_dm_cb.disc_cb.entry[xx].selected_disc_mask);
@@ -1041,31 +1047,34 @@
if (dm_disc_mask & NFA_DM_DISC_MASK_NFC_DEP) {
nfa_p2p_set_config(dm_disc_mask);
}
- if (dm_disc_mask &
- (NFA_DM_DISC_MASK_PF_NFC_DEP | NFA_DM_DISC_MASK_PF_T3T)) {
- /* According to the NFC Forum Activity spec, controllers must:
- * 1) Poll with RC=0 and SC=FFFF to find NFC-DEP targets
- * 2) Poll with RC=1 and SC=FFFF to find T3T targets
- * Many controllers don't do this yet, and seem to be activating
- * NFC-DEP by default.
- *
- * We can at least fix the scenario where we're not interested
- * in NFC-DEP, by setting RC=1 in that case. Otherwise, keep
- * the default of RC=0. */
- p = config_params;
- UINT8_TO_STREAM(p, NFC_PMID_PF_RC);
- UINT8_TO_STREAM(p, NCI_PARAM_LEN_PF_RC);
- if ((dm_disc_mask & NFA_DM_DISC_MASK_PF_NFC_DEP) &&
- !nfa_dm_is_p2p_paused()) {
- UINT8_TO_STREAM(p, 0x00); // RC=0
- } else {
- UINT8_TO_STREAM(p, 0x01); // RC=1
+ if (NFC_GetNCIVersion() == NCI_VERSION_1_0) {
+ if (dm_disc_mask &
+ (NFA_DM_DISC_MASK_PF_NFC_DEP | NFA_DM_DISC_MASK_PF_T3T)) {
+ /* According to the NFC Forum Activity spec, controllers must:
+ * 1) Poll with RC=0 and SC=FFFF to find NFC-DEP targets
+ * 2) Poll with RC=1 and SC=FFFF to find T3T targets
+ * Many controllers don't do this yet, and seem to be activating
+ * NFC-DEP by default.
+ *
+ * We can at least fix the scenario where we're not interested
+ * in NFC-DEP, by setting RC=1 in that case. Otherwise, keep
+ * the default of RC=0. */
+ p = config_params;
+ UINT8_TO_STREAM(p, NFC_PMID_PF_RC);
+ UINT8_TO_STREAM(p, NCI_PARAM_LEN_PF_RC);
+ if ((dm_disc_mask & NFA_DM_DISC_MASK_PF_NFC_DEP) &&
+ !nfa_dm_is_p2p_paused()) {
+ UINT8_TO_STREAM(p, 0x00); // RC=0
+ } else {
+ UINT8_TO_STREAM(p, 0x01); // RC=1
+ }
+ nfa_dm_check_set_config(p - config_params, config_params, false);
}
- nfa_dm_check_set_config(p - config_params, config_params, false);
}
}
- NFA_TRACE_DEBUG1("dm_disc_mask = 0x%x", dm_disc_mask);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("dm_disc_mask = 0x%x", dm_disc_mask);
/* Get Discovery Technology parameters */
num_params = nfa_dm_get_rf_discover_config(dm_disc_mask, disc_params,
@@ -1151,7 +1160,8 @@
p_data->activate.rf_tech_param.param.pk.uid_len) ||
(memcmp(p_data->activate.rf_tech_param.param.pk.uid,
nfa_dm_cb.activated_nfcid, nfa_dm_cb.activated_nfcid_len))) {
- NFA_TRACE_DEBUG0("new Kovio tag is detected");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("new Kovio tag is detected");
/* notify presence check failure for previous tag, if presence check is
* pending */
@@ -1205,9 +1215,8 @@
tNFA_DM_DISC_TECH_PROTO_MASK activated_disc_mask;
- NFA_TRACE_DEBUG2(
- "nfa_dm_disc_notify_activation (): tech_n_mode:0x%X, proto:0x%X",
- tech_n_mode, protocol);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("tech_n_mode:0x%X, proto:0x%X", tech_n_mode, protocol);
if (nfa_dm_cb.disc_cb.excl_disc_entry.in_use) {
nfa_dm_cb.disc_cb.activated_tech_mode = tech_n_mode;
@@ -1244,9 +1253,10 @@
nfa_dm_cb.disc_cb.activated_protocol = NFC_PROTOCOL_UNKNOWN;
nfa_dm_cb.disc_cb.activated_handle = xx;
- NFA_TRACE_DEBUG2("activated_rf_interface:0x%x, activated_handle: 0x%x",
- nfa_dm_cb.disc_cb.activated_rf_interface,
- nfa_dm_cb.disc_cb.activated_handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "activated_rf_interface:0x%x, activated_handle: 0x%x",
+ nfa_dm_cb.disc_cb.activated_rf_interface,
+ nfa_dm_cb.disc_cb.activated_handle);
if (nfa_dm_cb.disc_cb.entry[xx].p_disc_cback)
(*(nfa_dm_cb.disc_cb.entry[xx].p_disc_cback))(
@@ -1321,7 +1331,8 @@
tech_n_mode == NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE ||
tech_n_mode == NFC_DISCOVERY_TYPE_LISTEN_A)) {
if (appl_dta_mode_flag == 1 && tech_n_mode == NFC_DISCOVERY_TYPE_LISTEN_A) {
- NFA_TRACE_DEBUG0("DTA Mode Enabled : NFC-A Passive Listen Mode");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("DTA Mode Enabled : NFC-A Passive Listen Mode");
}
}
@@ -1332,9 +1343,10 @@
nfa_dm_cb.disc_cb.activated_protocol = protocol;
nfa_dm_cb.disc_cb.activated_handle = xx;
- NFA_TRACE_DEBUG2("activated_protocol:0x%x, activated_handle: 0x%x",
- nfa_dm_cb.disc_cb.activated_protocol,
- nfa_dm_cb.disc_cb.activated_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("activated_protocol:0x%x, activated_handle: 0x%x",
+ nfa_dm_cb.disc_cb.activated_protocol,
+ nfa_dm_cb.disc_cb.activated_handle);
if (protocol == NFC_PROTOCOL_KOVIO) {
/* check whether it's new or repeated activation */
@@ -1372,11 +1384,11 @@
tNFA_CONN_EVT_DATA evt_data;
tNFC_DISCOVER disc_data;
- NFA_TRACE_DEBUG1("nfa_dm_disc_notify_deactivation (): activated_handle=%d",
- nfa_dm_cb.disc_cb.activated_handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "activated_handle=%d", nfa_dm_cb.disc_cb.activated_handle);
if (nfa_dm_cb.disc_cb.disc_flags & NFA_DM_DISC_FLAGS_CHECKING) {
- NFA_TRACE_DEBUG0("nfa_dm_disc_notify_deactivation (): for sleep wakeup");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("for sleep wakeup");
return;
}
@@ -1552,9 +1564,10 @@
/* Perform pending deactivate command and on response notfiy deactivation
*/
nfa_dm_cb.disc_cb.deact_notify_pending = true;
- nfa_dm_disc_sm_execute(
- NFA_DM_RF_DEACTIVATE_CMD,
- (tNFA_DM_RF_DISC_DATA*)&nfa_dm_cb.disc_cb.pending_deact_type);
+ tNFA_DM_RF_DISC_DATA nfa_dm_rf_disc_data;
+ nfa_dm_rf_disc_data.deactivate_type =
+ nfa_dm_cb.disc_cb.pending_deact_type;
+ nfa_dm_disc_sm_execute(NFA_DM_RF_DEACTIVATE_CMD, &nfa_dm_rf_disc_data);
}
}
}
@@ -1568,10 +1581,9 @@
** Returns void
**
*******************************************************************************/
-static void nfa_dm_disc_kovio_timeout_cback(TIMER_LIST_ENT* p_tle) {
- tNFC_DEACTIVATE_DEVT deact;
-
- NFA_TRACE_DEBUG0("nfa_dm_disc_kovio_timeout_cback()");
+static void nfa_dm_disc_kovio_timeout_cback(__attribute__((unused))
+ TIMER_LIST_ENT* p_tle) {
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* notify presence check failure, if presence check is pending */
nfa_dm_disc_report_kovio_presence_check(NFC_STATUS_FAILED);
@@ -1583,11 +1595,13 @@
NFA_DM_DISC_TIMEOUT_KOVIO_PRESENCE_CHECK);
} else {
/* notify upper layer deactivated event */
+ tNFC_DEACTIVATE_DEVT deact;
deact.status = NFC_STATUS_OK;
deact.type = NFC_DEACTIVATE_TYPE_DISCOVERY;
deact.is_ntf = true;
- nfa_dm_disc_notify_deactivation(NFA_DM_RF_DEACTIVATE_NTF,
- (tNFC_DISCOVER*)&deact);
+ tNFC_DISCOVER nfc_discover;
+ nfc_discover.deactivate = deact;
+ nfa_dm_disc_notify_deactivation(NFA_DM_RF_DEACTIVATE_NTF, &nfc_discover);
}
}
@@ -1603,7 +1617,7 @@
tNFC_STATUS nfa_dm_disc_start_kovio_presence_check(void) {
tNFC_STATUS status = NFC_STATUS_FAILED;
- NFA_TRACE_DEBUG0("nfa_dm_disc_start_kovio_presence_check ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if ((nfa_dm_cb.disc_cb.activated_protocol == NFC_PROTOCOL_KOVIO) &&
(nfa_dm_cb.disc_cb.kovio_tle.in_use)) {
@@ -1642,7 +1656,7 @@
**
*******************************************************************************/
static void nfa_dm_disc_report_kovio_presence_check(tNFC_STATUS status) {
- NFA_TRACE_DEBUG0("nfa_dm_disc_report_kovio_presence_check ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfa_dm_cb.disc_cb.disc_flags & NFA_DM_DISC_FLAGS_CHECKING) {
nfa_dm_cb.disc_cb.disc_flags &= ~NFA_DM_DISC_FLAGS_CHECKING;
@@ -1652,9 +1666,10 @@
if (nfa_dm_cb.disc_cb.deact_pending) {
nfa_dm_cb.disc_cb.deact_pending = false;
- nfa_dm_disc_sm_execute(
- NFA_DM_RF_DEACTIVATE_CMD,
- (tNFA_DM_RF_DISC_DATA*)&nfa_dm_cb.disc_cb.pending_deact_type);
+ tNFA_DM_RF_DISC_DATA nfa_dm_rf_disc_data;
+ nfa_dm_rf_disc_data.deactivate_type =
+ nfa_dm_cb.disc_cb.pending_deact_type;
+ nfa_dm_disc_sm_execute(NFA_DM_RF_DEACTIVATE_CMD, &nfa_dm_rf_disc_data);
}
}
}
@@ -1668,9 +1683,9 @@
** Returns void
**
*******************************************************************************/
-static void nfa_dm_disc_data_cback(uint8_t conn_id, tNFC_CONN_EVT event,
- tNFC_CONN* p_data) {
- NFA_TRACE_DEBUG0("nfa_dm_disc_data_cback ()");
+static void nfa_dm_disc_data_cback(__attribute__((unused)) uint8_t conn_id,
+ tNFC_CONN_EVT event, tNFC_CONN* p_data) {
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* if selection failed */
if (event == NFC_ERROR_CEVT) {
@@ -1693,18 +1708,12 @@
tNFA_CONN_EVT_DATA evt_data;
tNFA_DM_RF_DISC_STATE old_state = nfa_dm_cb.disc_cb.disc_state;
-#if (BT_TRACE_VERBOSE == TRUE)
- NFA_TRACE_DEBUG5(
- "nfa_dm_disc_new_state (): old_state: %s (%d), new_state: %s (%d) "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "old_state: %s (%d), new_state: %s (%d) "
"disc_flags: 0x%x",
- nfa_dm_disc_state_2_str(nfa_dm_cb.disc_cb.disc_state),
- nfa_dm_cb.disc_cb.disc_state, nfa_dm_disc_state_2_str(new_state),
+ nfa_dm_disc_state_2_str(nfa_dm_cb.disc_cb.disc_state).c_str(),
+ nfa_dm_cb.disc_cb.disc_state, nfa_dm_disc_state_2_str(new_state).c_str(),
new_state, nfa_dm_cb.disc_cb.disc_flags);
-#else
- NFA_TRACE_DEBUG3(
- "nfa_dm_disc_new_state(): old_state: %d, new_state: %d disc_flags: 0x%x",
- nfa_dm_cb.disc_cb.disc_state, new_state, nfa_dm_cb.disc_cb.disc_flags);
-#endif
nfa_dm_cb.disc_cb.disc_state = new_state;
@@ -1776,7 +1785,7 @@
if (nfa_dm_cb.disc_cb.excl_disc_entry.p_disc_cback)
(*(nfa_dm_cb.disc_cb.excl_disc_entry.p_disc_cback))(
- NFA_DM_RF_DISC_START_EVT, (tNFC_DISCOVER*)p_data);
+ NFA_DM_RF_DISC_START_EVT, &p_data->nfc_discover);
}
} else {
/* notify event to each module which is waiting for start */
@@ -1792,7 +1801,7 @@
if (nfa_dm_cb.disc_cb.entry[xx].p_disc_cback)
(*(nfa_dm_cb.disc_cb.entry[xx].p_disc_cback))(
- NFA_DM_RF_DISC_START_EVT, (tNFC_DISCOVER*)p_data);
+ NFA_DM_RF_DISC_START_EVT, &p_data->nfc_discover);
}
}
}
@@ -1865,7 +1874,7 @@
break;
default:
- NFA_TRACE_ERROR0("nfa_dm_disc_sm_idle (): Unexpected discovery event");
+ LOG(ERROR) << StringPrintf("Unexpected discovery event");
break;
}
}
@@ -1909,7 +1918,8 @@
break;
case NFA_DM_RF_INTF_ACTIVATED_NTF:
if (nfa_dm_cb.disc_cb.disc_flags & NFA_DM_DISC_FLAGS_W4_RSP) {
- NFA_TRACE_DEBUG0("RF Activated while waiting for deactivation RSP");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RF Activated while waiting for deactivation RSP");
/* it's race condition. DH has to wait for deactivation NTF */
nfa_dm_cb.disc_cb.disc_flags |= NFA_DM_DISC_FLAGS_W4_NTF;
} else {
@@ -1926,8 +1936,9 @@
if (nfa_dm_disc_notify_activation(&(p_data->nfc_discover)) ==
NFA_STATUS_FAILED) {
- NFA_TRACE_DEBUG0(
- "Not matched, restart discovery after receiving deactivate ntf");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Not matched, restart discovery after receiving "
+ "deactivate ntf");
/* after receiving deactivate event, restart discovery */
nfa_dm_cb.disc_cb.disc_flags |=
@@ -1958,8 +1969,7 @@
case NFA_DM_CORE_INTF_ERROR_NTF:
break;
default:
- NFA_TRACE_ERROR0(
- "nfa_dm_disc_sm_discovery (): Unexpected discovery event");
+ LOG(ERROR) << StringPrintf("Unexpected discovery event");
break;
}
}
@@ -2015,7 +2025,7 @@
if (nfa_dm_disc_notify_activation(&(p_data->nfc_discover)) ==
NFA_STATUS_FAILED) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"Not matched, restart discovery after receiving deactivate ntf");
/* after receiving deactivate event, restart discovery */
@@ -2023,8 +2033,7 @@
}
break;
default:
- NFA_TRACE_ERROR0(
- "nfa_dm_disc_sm_w4_all_discoveries (): Unexpected discovery event");
+ LOG(ERROR) << StringPrintf("Unexpected discovery event");
break;
}
}
@@ -2085,7 +2094,7 @@
* if deactivation is pending then deactivate */
nfa_dm_disc_end_sleep_wakeup(NFC_STATUS_OK);
} else if (status == NFA_STATUS_FAILED) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"Not matched, restart discovery after receiving deactivate ntf");
/* after receiving deactivate event, restart discovery */
@@ -2124,8 +2133,7 @@
}
break;
default:
- NFA_TRACE_ERROR0(
- "nfa_dm_disc_sm_w4_host_select (): Unexpected discovery event");
+ LOG(ERROR) << StringPrintf("Unexpected discovery event");
break;
}
@@ -2153,7 +2161,6 @@
(nfa_dm_cb.disc_cb.disc_flags & NFA_DM_DISC_FLAGS_CHECKING);
bool sleep_wakeup_event = false;
bool sleep_wakeup_event_processed = false;
- tNFC_DEACTIVATE_DEVT deact;
switch (event) {
case NFA_DM_RF_DEACTIVATE_CMD:
@@ -2191,11 +2198,14 @@
if (!(nfa_dm_cb.disc_cb.disc_flags & NFA_DM_DISC_FLAGS_W4_NTF)) {
/* it's race condition. received deactivate NTF before receiving RSP */
+ tNFC_DEACTIVATE_DEVT deact;
deact.status = NFC_STATUS_OK;
deact.type = NFC_DEACTIVATE_TYPE_IDLE;
deact.is_ntf = true;
+ tNFC_DISCOVER nfc_discover;
+ nfc_discover.deactivate = deact;
nfa_dm_disc_notify_deactivation(NFA_DM_RF_DEACTIVATE_NTF,
- (tNFC_DISCOVER*)&deact);
+ &nfc_discover);
/* NFCC is in IDLE state */
nfa_dm_disc_new_state(NFA_DM_RFST_IDLE);
@@ -2210,7 +2220,8 @@
if (nfa_dm_cb.disc_cb.disc_flags & NFA_DM_DISC_FLAGS_W4_RSP) {
/* it's race condition. received deactivate NTF before receiving RSP */
/* notify deactivation after receiving deactivate RSP */
- NFA_TRACE_DEBUG0("Rx deactivate NTF while waiting for deactivate RSP");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Rx deactivate NTF while waiting for deactivate RSP");
break;
}
if (p_data->nfc_discover.deactivate.reason !=
@@ -2218,55 +2229,54 @@
sleep_wakeup_event = true;
nfa_dm_disc_notify_deactivation(NFA_DM_RF_DEACTIVATE_NTF,
&(p_data->nfc_discover));
+ }
+ if ((p_data->nfc_discover.deactivate.type == NFC_DEACTIVATE_TYPE_SLEEP) ||
+ (p_data->nfc_discover.deactivate.type ==
+ NFC_DEACTIVATE_TYPE_SLEEP_AF)) {
+ if (p_data->nfc_discover.deactivate.reason !=
+ NFC_DEACTIVATE_REASON_DH_REQ_FAILED) {
+ /* count for number of times deactivate cmd sent */
+ nfa_dm_cb.deactivate_cmd_retry_count = 0;
}
- if ((p_data->nfc_discover.deactivate.type ==
- NFC_DEACTIVATE_TYPE_SLEEP) ||
- (p_data->nfc_discover.deactivate.type ==
- NFC_DEACTIVATE_TYPE_SLEEP_AF)) {
- if (p_data->nfc_discover.deactivate.reason !=
- NFC_DEACTIVATE_REASON_DH_REQ_FAILED) {
- /* count for number of times deactivate cmd sent */
- nfa_dm_cb.deactivate_cmd_retry_count = 0;
- }
- nfa_dm_disc_new_state(NFA_DM_RFST_W4_HOST_SELECT);
- if (old_sleep_wakeup_flag) {
- sleep_wakeup_event_processed = true;
- /* process pending deactivate request */
- if (nfa_dm_cb.disc_cb.deact_pending) {
- /* notify RW module that sleep wakeup is finished */
- /* if deactivation is pending then deactivate */
- nfa_dm_disc_end_sleep_wakeup(NFC_STATUS_OK);
+ nfa_dm_disc_new_state(NFA_DM_RFST_W4_HOST_SELECT);
+ if (old_sleep_wakeup_flag) {
+ sleep_wakeup_event_processed = true;
+ /* process pending deactivate request */
+ if (nfa_dm_cb.disc_cb.deact_pending) {
+ /* notify RW module that sleep wakeup is finished */
+ /* if deactivation is pending then deactivate */
+ nfa_dm_disc_end_sleep_wakeup(NFC_STATUS_OK);
- /* Notify NFA RW sub-systems because NFA_DM_RF_DEACTIVATE_RSP will
- * not call this function */
- nfa_rw_proc_disc_evt(NFA_DM_RF_DISC_DEACTIVATED_EVT, NULL, true);
- } else {
- /* Successfully went to sleep mode for sleep wakeup */
- /* Now wake up the tag to complete the operation */
- NFC_DiscoverySelect(nfa_dm_cb.disc_cb.activated_rf_disc_id,
- nfa_dm_cb.disc_cb.activated_protocol,
- nfa_dm_cb.disc_cb.activated_rf_interface);
- }
+ /* Notify NFA RW sub-systems because NFA_DM_RF_DEACTIVATE_RSP will
+ * not call this function */
+ nfa_rw_proc_disc_evt(NFA_DM_RF_DISC_DEACTIVATED_EVT, NULL, true);
+ } else {
+ /* Successfully went to sleep mode for sleep wakeup */
+ /* Now wake up the tag to complete the operation */
+ NFC_DiscoverySelect(nfa_dm_cb.disc_cb.activated_rf_disc_id,
+ nfa_dm_cb.disc_cb.activated_protocol,
+ nfa_dm_cb.disc_cb.activated_rf_interface);
}
- if (p_data->nfc_discover.deactivate.reason ==
- NFC_DEACTIVATE_REASON_DH_REQ_FAILED) {
- /* in case deactivation is not sucessfull, NFCC shall send
- RF_DEACTIVATE_NTF with DH Req failed due to error.
- MW shall send deactivation cmd again for 3 three times. if
- deactivation is not successfull 3 times also,
- then MW shall send deacivate cmd with deactivate type is
- discovery */
- if (nfa_dm_cb.deactivate_cmd_retry_count == 3) {
- if ((!old_sleep_wakeup_flag) ||
- (!nfa_dm_cb.disc_cb.deact_pending)) {
- nfa_dm_send_deactivate_cmd(NFA_DEACTIVATE_TYPE_DISCOVERY);
- }
- nfa_dm_cb.deactivate_cmd_retry_count = 0;
- } else {
- nfa_dm_cb.deactivate_cmd_retry_count++;
- nfa_dm_send_deactivate_cmd(p_data->nfc_discover.deactivate.type);
+ }
+ if (p_data->nfc_discover.deactivate.reason ==
+ NFC_DEACTIVATE_REASON_DH_REQ_FAILED) {
+ /* in case deactivation is not sucessfull, NFCC shall send
+ RF_DEACTIVATE_NTF with DH Req failed due to error.
+ MW shall send deactivation cmd again for 3 three times. if
+ deactivation is not successfull 3 times also,
+ then MW shall send deacivate cmd with deactivate type is
+ discovery */
+ if (nfa_dm_cb.deactivate_cmd_retry_count == 3) {
+ if ((!old_sleep_wakeup_flag) ||
+ (!nfa_dm_cb.disc_cb.deact_pending)) {
+ nfa_dm_send_deactivate_cmd(NFA_DEACTIVATE_TYPE_DISCOVERY);
}
+ nfa_dm_cb.deactivate_cmd_retry_count = 0;
+ } else {
+ nfa_dm_cb.deactivate_cmd_retry_count++;
+ nfa_dm_send_deactivate_cmd(p_data->nfc_discover.deactivate.type);
}
+ }
} else if (p_data->nfc_discover.deactivate.type ==
NFC_DEACTIVATE_TYPE_IDLE) {
nfa_dm_disc_new_state(NFA_DM_RFST_IDLE);
@@ -2289,8 +2299,7 @@
break;
default:
- NFA_TRACE_ERROR0(
- "nfa_dm_disc_sm_poll_active (): Unexpected discovery event");
+ LOG(ERROR) << StringPrintf("Unexpected discovery event");
break;
}
@@ -2328,8 +2337,10 @@
deact.status = NFC_STATUS_OK;
deact.type = NFC_DEACTIVATE_TYPE_IDLE;
deact.is_ntf = true;
+ tNFC_DISCOVER nfc_discover;
+ nfc_discover.deactivate = deact;
nfa_dm_disc_notify_deactivation(NFA_DM_RF_DEACTIVATE_NTF,
- (tNFC_DISCOVER*)&deact);
+ &nfc_discover);
/* NFCC is in IDLE state */
nfa_dm_disc_new_state(NFA_DM_RFST_IDLE);
@@ -2344,7 +2355,8 @@
if (nfa_dm_cb.disc_cb.disc_flags & NFA_DM_DISC_FLAGS_W4_RSP) {
/* it's race condition. received deactivate NTF before receiving RSP */
/* notify deactivation after receiving deactivate RSP */
- NFA_TRACE_DEBUG0("Rx deactivate NTF while waiting for deactivate RSP");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Rx deactivate NTF while waiting for deactivate RSP");
} else {
nfa_dm_disc_notify_deactivation(NFA_DM_RF_DEACTIVATE_NTF,
&(p_data->nfc_discover));
@@ -2372,8 +2384,7 @@
case NFA_DM_CORE_INTF_ERROR_NTF:
break;
default:
- NFA_TRACE_ERROR0(
- "nfa_dm_disc_sm_listen_active (): Unexpected discovery event");
+ LOG(ERROR) << StringPrintf("Unexpected discovery event");
break;
}
}
@@ -2431,7 +2442,7 @@
NFA_DEACTIVATE_TYPE_DISCOVERY) {
nfa_dm_disc_new_state(NFA_DM_RFST_DISCOVERY);
} else {
- NFA_TRACE_ERROR0("Unexpected deactivation type");
+ LOG(ERROR) << StringPrintf("Unexpected deactivation type");
nfa_dm_disc_new_state(NFA_DM_RFST_IDLE);
nfa_dm_start_rf_discover();
}
@@ -2440,7 +2451,7 @@
nfa_dm_disc_new_state(NFA_DM_RFST_LISTEN_ACTIVE);
if (nfa_dm_disc_notify_activation(&(p_data->nfc_discover)) ==
NFA_STATUS_FAILED) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"Not matched, restart discovery after receiving deactivate ntf");
/* after receiving deactivate event, restart discovery */
@@ -2448,8 +2459,7 @@
}
break;
default:
- NFA_TRACE_ERROR0(
- "nfa_dm_disc_sm_listen_sleep (): Unexpected discovery event");
+ LOG(ERROR) << StringPrintf("Unexpected discovery event");
break;
}
}
@@ -2471,13 +2481,13 @@
nfa_dm_disc_notify_activation(&(p_data->nfc_discover));
if (nfa_dm_disc_notify_activation(&(p_data->nfc_discover)) ==
NFA_STATUS_FAILED) {
- NFA_TRACE_DEBUG0("Not matched, unexpected activation");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Not matched, unexpected activation");
}
break;
default:
- NFA_TRACE_ERROR0(
- "nfa_dm_disc_sm_lp_listen (): Unexpected discovery event");
+ LOG(ERROR) << StringPrintf("Unexpected discovery event");
break;
}
}
@@ -2500,8 +2510,7 @@
&(p_data->nfc_discover));
break;
default:
- NFA_TRACE_ERROR0(
- "nfa_dm_disc_sm_lp_active (): Unexpected discovery event");
+ LOG(ERROR) << StringPrintf("Unexpected discovery event");
break;
}
}
@@ -2517,18 +2526,12 @@
*******************************************************************************/
void nfa_dm_disc_sm_execute(tNFA_DM_RF_DISC_SM_EVENT event,
tNFA_DM_RF_DISC_DATA* p_data) {
-#if (BT_TRACE_VERBOSE == TRUE)
- NFA_TRACE_DEBUG5(
- "nfa_dm_disc_sm_execute (): state: %s (%d), event: %s(%d) disc_flags: "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "state: %s (%d), event: %s(%d) disc_flags: "
"0x%x",
- nfa_dm_disc_state_2_str(nfa_dm_cb.disc_cb.disc_state),
- nfa_dm_cb.disc_cb.disc_state, nfa_dm_disc_event_2_str(event), event,
- nfa_dm_cb.disc_cb.disc_flags);
-#else
- NFA_TRACE_DEBUG3(
- "nfa_dm_disc_sm_execute(): state: %d, event:%d disc_flags: 0x%x",
- nfa_dm_cb.disc_cb.disc_state, event, nfa_dm_cb.disc_cb.disc_flags);
-#endif
+ nfa_dm_disc_state_2_str(nfa_dm_cb.disc_cb.disc_state).c_str(),
+ nfa_dm_cb.disc_cb.disc_state, nfa_dm_disc_event_2_str(event).c_str(),
+ event, nfa_dm_cb.disc_cb.disc_flags);
switch (nfa_dm_cb.disc_cb.disc_state) {
/* RF Discovery State - Idle */
@@ -2576,15 +2579,10 @@
nfa_dm_disc_sm_lp_active(event, p_data);
break;
}
-#if (BT_TRACE_VERBOSE == TRUE)
- NFA_TRACE_DEBUG3(
- "nfa_dm_disc_sm_execute (): new state: %s (%d), disc_flags: 0x%x",
- nfa_dm_disc_state_2_str(nfa_dm_cb.disc_cb.disc_state),
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "new state: %s (%d), disc_flags: 0x%x",
+ nfa_dm_disc_state_2_str(nfa_dm_cb.disc_cb.disc_state).c_str(),
nfa_dm_cb.disc_cb.disc_state, nfa_dm_cb.disc_cb.disc_flags);
-#else
- NFA_TRACE_DEBUG2("nfa_dm_disc_sm_execute(): new state: %d, disc_flags: 0x%x",
- nfa_dm_cb.disc_cb.disc_state, nfa_dm_cb.disc_cb.disc_flags);
-#endif
}
/*******************************************************************************
@@ -2601,7 +2599,7 @@
tNFA_DISCOVER_CBACK* p_disc_cback) {
uint8_t xx;
- NFA_TRACE_DEBUG1("nfa_dm_add_rf_discover () disc_mask=0x%x", disc_mask);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("disc_mask=0x%x", disc_mask);
for (xx = 0; xx < NFA_DM_DISC_NUM_ENTRIES; xx++) {
if (!nfa_dm_cb.disc_cb.entry[xx].in_use) {
@@ -2631,7 +2629,7 @@
tNFA_DISCOVER_CBACK* p_disc_cback) {
tNFA_DM_DISC_TECH_PROTO_MASK poll_disc_mask = 0;
- NFA_TRACE_DEBUG0("nfa_dm_start_excl_discovery ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (poll_tech_mask & NFA_TECHNOLOGY_MASK_A) {
poll_disc_mask |= NFA_DM_DISC_MASK_PA_T1T;
@@ -2692,7 +2690,7 @@
**
*******************************************************************************/
void nfa_dm_stop_excl_discovery(void) {
- NFA_TRACE_DEBUG0("nfa_dm_stop_excl_discovery ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfa_dm_cb.disc_cb.excl_disc_entry.in_use = false;
nfa_dm_cb.disc_cb.excl_disc_entry.p_disc_cback = NULL;
@@ -2708,12 +2706,12 @@
**
*******************************************************************************/
void nfa_dm_delete_rf_discover(tNFA_HANDLE handle) {
- NFA_TRACE_DEBUG1("nfa_dm_delete_rf_discover () handle=0x%x", handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle=0x%x", handle);
if (handle < NFA_DM_DISC_NUM_ENTRIES) {
nfa_dm_cb.disc_cb.entry[handle].in_use = false;
} else {
- NFA_TRACE_ERROR0("Invalid discovery handle");
+ LOG(ERROR) << StringPrintf("Invalid discovery handle");
}
}
@@ -2731,9 +2729,9 @@
tNFA_DM_DISC_SELECT_PARAMS select_params;
tNFA_CONN_EVT_DATA conn_evt;
- NFA_TRACE_DEBUG3(
- "nfa_dm_disc_select () rf_disc_id:0x%X, protocol:0x%X, rf_interface:0x%X",
- rf_disc_id, protocol, rf_interface);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("rf_disc_id:0x%X, protocol:0x%X, rf_interface:0x%X",
+ rf_disc_id, protocol, rf_interface);
if (nfa_dm_cb.disc_cb.disc_state == NFA_DM_RFST_W4_HOST_SELECT) {
/* state is OK: notify the status when the response is received from NFCC */
@@ -2742,8 +2740,9 @@
select_params.rf_interface = rf_interface;
nfa_dm_cb.disc_cb.disc_flags |= NFA_DM_DISC_FLAGS_NOTIFY;
- nfa_dm_disc_sm_execute(NFA_DM_RF_DISCOVER_SELECT_CMD,
- (tNFA_DM_RF_DISC_DATA*)&select_params);
+ tNFA_DM_RF_DISC_DATA nfa_dm_rf_disc_data;
+ nfa_dm_rf_disc_data.select = select_params;
+ nfa_dm_disc_sm_execute(NFA_DM_RF_DISCOVER_SELECT_CMD, &nfa_dm_rf_disc_data);
} else {
/* Wrong state: notify failed status right away */
conn_evt.status = NFA_STATUS_FAILED;
@@ -2761,8 +2760,8 @@
**
*******************************************************************************/
tNFA_STATUS nfa_dm_rf_deactivate(tNFA_DEACTIVATE_TYPE deactivate_type) {
- NFA_TRACE_DEBUG1("nfa_dm_rf_deactivate () deactivate_type:0x%X",
- deactivate_type);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("deactivate_type:0x%X", deactivate_type);
if (deactivate_type == NFA_DEACTIVATE_TYPE_SLEEP) {
if (nfa_dm_cb.disc_cb.activated_protocol == NFA_PROTOCOL_NFC_DEP)
@@ -2781,7 +2780,8 @@
return NFA_STATUS_OK;
} else {
/* it could be race condition. */
- NFA_TRACE_DEBUG0("nfa_dm_rf_deactivate (): already in discovery state");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("already in discovery state");
return NFA_STATUS_FAILED;
}
} else if (deactivate_type == NFA_DEACTIVATE_TYPE_IDLE) {
@@ -2789,20 +2789,21 @@
nfa_sys_stop_timer(&nfa_dm_cb.disc_cb.kovio_tle);
nfa_dm_disc_kovio_timeout_cback(&nfa_dm_cb.disc_cb.kovio_tle);
}
- nfa_dm_disc_sm_execute(NFA_DM_RF_DEACTIVATE_CMD,
- (tNFA_DM_RF_DISC_DATA*)&deactivate_type);
+ tNFA_DM_RF_DISC_DATA nfa_dm_rf_disc_data;
+ nfa_dm_rf_disc_data.deactivate_type = deactivate_type;
+ nfa_dm_disc_sm_execute(NFA_DM_RF_DEACTIVATE_CMD, &nfa_dm_rf_disc_data);
return NFA_STATUS_OK;
} else {
return NFA_STATUS_FAILED;
}
} else {
- nfa_dm_disc_sm_execute(NFA_DM_RF_DEACTIVATE_CMD,
- (tNFA_DM_RF_DISC_DATA*)&deactivate_type);
+ tNFA_DM_RF_DISC_DATA nfa_dm_rf_disc_data;
+ nfa_dm_rf_disc_data.deactivate_type = deactivate_type;
+ nfa_dm_disc_sm_execute(NFA_DM_RF_DEACTIVATE_CMD, &nfa_dm_rf_disc_data);
return NFA_STATUS_OK;
}
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function nfa_dm_disc_state_2_str
@@ -2810,7 +2811,7 @@
** Description convert nfc discovery state to string
**
*******************************************************************************/
-static char* nfa_dm_disc_state_2_str(uint8_t state) {
+static std::string nfa_dm_disc_state_2_str(uint8_t state) {
switch (state) {
case NFA_DM_RFST_IDLE:
return "IDLE";
@@ -2849,44 +2850,34 @@
** Description convert nfc discovery RSP/NTF to string
**
*******************************************************************************/
-static char* nfa_dm_disc_event_2_str(uint8_t event) {
+static std::string nfa_dm_disc_event_2_str(uint8_t event) {
switch (event) {
case NFA_DM_RF_DISCOVER_CMD:
return "DISCOVER_CMD";
-
case NFA_DM_RF_DISCOVER_RSP:
return "DISCOVER_RSP";
-
case NFA_DM_RF_DISCOVER_NTF:
return "DISCOVER_NTF";
-
case NFA_DM_RF_DISCOVER_SELECT_CMD:
return "SELECT_CMD";
-
case NFA_DM_RF_DISCOVER_SELECT_RSP:
return "SELECT_RSP";
-
case NFA_DM_RF_INTF_ACTIVATED_NTF:
return "ACTIVATED_NTF";
-
case NFA_DM_RF_DEACTIVATE_CMD:
return "DEACTIVATE_CMD";
-
case NFA_DM_RF_DEACTIVATE_RSP:
return "DEACTIVATE_RSP";
-
case NFA_DM_RF_DEACTIVATE_NTF:
return "DEACTIVATE_NTF";
-
case NFA_DM_LP_LISTEN_CMD:
return "NFA_DM_LP_LISTEN_CMD";
-
case NFA_DM_CORE_INTF_ERROR_NTF:
return "INTF_ERROR_NTF";
+ default:
+ return "Unknown";
}
- return "Unknown";
}
-#endif /* BT_TRACE_VERBOSE */
/*******************************************************************************
**
@@ -2900,13 +2891,14 @@
*******************************************************************************/
bool nfa_dm_p2p_prio_logic(uint8_t event, uint8_t* p, uint8_t event_type) {
if (!nfa_poll_bail_out_mode) {
- NFA_TRACE_DEBUG0("p2p priority is running under bail out mode ONLY.");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("p2p priority is running under bail out mode ONLY.");
return true;
}
if ((nfa_dm_cb.flags & NFA_DM_FLAGS_P2P_PAUSED) &&
(nfa_dm_cb.flags & NFA_DM_FLAGS_LISTEN_DISABLED)) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"returning from nfa_dm_p2p_prio_logic Disable p2p_prio_logic");
return true;
}
@@ -2917,7 +2909,7 @@
if (event == NCI_MSG_RF_DISCOVER &&
p2p_prio_logic_data.timer_expired == true &&
event_type == NFA_DM_P2P_PRIO_RSP) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_dm_p2p_prio_logic starting a timer for next rf intf activated "
"ntf");
nfc_start_quick_timer(&p2p_prio_logic_data.timer_list,
@@ -2930,7 +2922,7 @@
if (event == NCI_MSG_RF_INTF_ACTIVATED &&
p2p_prio_logic_data.timer_expired == true) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_dm_p2p_prio_logic stopping a timer for next rf intf activated "
"ntf");
nfc_stop_quick_timer(&p2p_prio_logic_data.timer_list);
@@ -2942,7 +2934,7 @@
uint8_t protocol = 0xFF;
uint8_t tech_mode = 0xFF;
- NFA_TRACE_DEBUG0("P2P_Prio_Logic");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("P2P_Prio_Logic");
if (event == NCI_MSG_RF_INTF_ACTIVATED) {
rf_disc_id = *p++;
@@ -2950,10 +2942,11 @@
protocol = *p++;
tech_mode = *p++;
}
- NFA_TRACE_DEBUG1("nfa_dm_p2p_prio_logic event_type = 0x%x", event_type);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_dm_p2p_prio_logic event_type = 0x%x", event_type);
if (event == NCI_MSG_RF_INTF_ACTIVATED && tech_mode >= 0x80) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_dm_p2p_prio_logic listen mode activated reset all the "
"nfa_dm_p2p_prio_logic variables ");
nfa_dm_p2p_prio_logic_cleanup();
@@ -2965,7 +2958,8 @@
nfa_dm_p2p_prio_logic_cleanup();
p2p_prio_logic_data.isodep_detected = true;
p2p_prio_logic_data.first_tech_mode = tech_mode;
- NFA_TRACE_DEBUG0("ISO-DEP Detected First Time Resume the Polling Loop");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "ISO-DEP Detected First Time Resume the Polling Loop");
nci_snd_deactivate_cmd(NFA_DEACTIVATE_TYPE_DISCOVERY);
return false;
}
@@ -2976,7 +2970,7 @@
p2p_prio_logic_data.first_tech_mode != tech_mode) {
p2p_prio_logic_data.isodep_detected = true;
p2p_prio_logic_data.timer_expired = false;
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"ISO-DEP Detected Second Time Other Techmode Resume the Polling "
"Loop");
nfc_stop_quick_timer(&p2p_prio_logic_data.timer_list);
@@ -2988,7 +2982,7 @@
protocol == NCI_PROTOCOL_ISO_DEP &&
p2p_prio_logic_data.isodep_detected == true &&
p2p_prio_logic_data.timer_expired == true) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"ISO-DEP Detected TimerExpired, Final Notifying the Event");
nfc_stop_quick_timer(&p2p_prio_logic_data.timer_list);
nfa_dm_p2p_prio_logic_cleanup();
@@ -2998,20 +2992,20 @@
protocol == NCI_PROTOCOL_ISO_DEP &&
p2p_prio_logic_data.isodep_detected == true &&
p2p_prio_logic_data.first_tech_mode == tech_mode) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"ISO-DEP Detected Same Techmode, Final Notifying the Event");
nfc_stop_quick_timer(&p2p_prio_logic_data.timer_list);
- NFA_TRACE_DEBUG0("P2P_Stop_Timer");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("P2P_Stop_Timer");
nfa_dm_p2p_prio_logic_cleanup();
}
else if (event == NCI_MSG_RF_INTF_ACTIVATED &&
protocol != NCI_PROTOCOL_ISO_DEP &&
p2p_prio_logic_data.isodep_detected == true) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"ISO-DEP Not Detected Giving Priority for other Technology");
nfc_stop_quick_timer(&p2p_prio_logic_data.timer_list);
- NFA_TRACE_DEBUG0("P2P_Stop_Timer");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("P2P_Stop_Timer");
nfa_dm_p2p_prio_logic_cleanup();
}
@@ -3019,7 +3013,8 @@
p2p_prio_logic_data.isodep_detected == true &&
p2p_prio_logic_data.timer_expired == false &&
event_type == NFA_DM_P2P_PRIO_RSP) {
- NFA_TRACE_DEBUG0("NFA_DM_RF_DEACTIVATE_RSP");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_DM_RF_DEACTIVATE_RSP");
return false;
}
@@ -3027,19 +3022,20 @@
p2p_prio_logic_data.isodep_detected == true &&
p2p_prio_logic_data.timer_expired == false &&
event_type == NFA_DM_P2P_PRIO_NTF) {
- NFA_TRACE_DEBUG0("NFA_DM_RF_DEACTIVATE_NTF");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_DM_RF_DEACTIVATE_NTF");
nfc_start_quick_timer(&p2p_prio_logic_data.timer_list,
NFC_TTYPE_P2P_PRIO_RESPONSE,
((uint32_t)160 * QUICK_TIMER_TICKS_PER_SEC) / 1000);
- NFA_TRACE_DEBUG0("P2P_Start_Timer");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("P2P_Start_Timer");
return false;
}
}
- NFA_TRACE_DEBUG0("returning TRUE");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("returning TRUE");
return true;
}
@@ -3053,12 +3049,14 @@
**
*******************************************************************************/
void nfa_dm_p2p_timer_event() {
- NFA_TRACE_DEBUG0("P2P_Timer_timeout NFC-DEP Not Discovered!!");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("P2P_Timer_timeout NFC-DEP Not Discovered!!");
p2p_prio_logic_data.timer_expired = true;
if (p2p_prio_logic_data.isodep_detected == true) {
- NFA_TRACE_DEBUG0("Deactivate and Restart RF discovery");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Deactivate and Restart RF discovery");
nci_snd_deactivate_cmd(NFC_DEACTIVATE_TYPE_IDLE);
}
}
@@ -3089,7 +3087,8 @@
NFC_HDR* p_msg;
uint8_t* p;
- NFA_TRACE_DEBUG0("nfa_dm_send_tag_deselect_cmd");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_dm_send_tag_deselect_cmd");
p_msg = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (p_msg) {
diff --git a/src/nfa/dm/nfa_dm_main.c b/src/nfa/dm/nfa_dm_main.cc
similarity index 94%
rename from src/nfa/dm/nfa_dm_main.c
rename to src/nfa/dm/nfa_dm_main.cc
index dbc51ba..f73d9c0 100644
--- a/src/nfa/dm/nfa_dm_main.c
+++ b/src/nfa/dm/nfa_dm_main.cc
@@ -21,12 +21,17 @@
* This is the main implementation file for the NFA device manager.
*
******************************************************************************/
+#include <string>
-#include <string.h>
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_api.h"
#include "nfa_dm_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*****************************************************************************
** Constants and types
@@ -35,9 +40,7 @@
nfa_dm_sys_disable,
nfa_dm_proc_nfcc_power_mode};
-tNFA_DM_CB nfa_dm_cb = {
- 0,
-};
+tNFA_DM_CB nfa_dm_cb = {};
#define NFA_DM_NUM_ACTIONS (NFA_DM_MAX_EVT & 0x00ff)
@@ -80,9 +83,7 @@
/*****************************************************************************
** Local function prototypes
*****************************************************************************/
-#if (BT_TRACE_VERBOSE == TRUE)
-static char* nfa_dm_evt_2_str(uint16_t event);
-#endif
+static std::string nfa_dm_evt_2_str(uint16_t event);
/*******************************************************************************
**
** Function nfa_dm_init
@@ -93,7 +94,7 @@
**
*******************************************************************************/
void nfa_dm_init(void) {
- NFA_TRACE_DEBUG0("nfa_dm_init ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
memset(&nfa_dm_cb, 0, sizeof(tNFA_DM_CB));
nfa_dm_cb.poll_disc_handle = NFA_HANDLE_INVALID;
nfa_dm_cb.disc_cb.disc_duration = NFA_DM_DISC_DURATION_POLL;
@@ -117,12 +118,8 @@
bool freebuf = true;
uint16_t event = p_msg->event & 0x00ff;
-#if (BT_TRACE_VERBOSE == TRUE)
- NFA_TRACE_EVENT2("nfa_dm_evt_hdlr event: %s (0x%02x)",
- nfa_dm_evt_2_str(event), event);
-#else
- NFA_TRACE_EVENT1("nfa_dm_evt_hdlr event: 0x%x", event);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "event: %s (0x%02x)", nfa_dm_evt_2_str(event).c_str(), event);
/* execute action functions */
if (event < NFA_DM_NUM_ACTIONS) {
@@ -153,9 +150,9 @@
nfa_dm_disable_complete();
} else {
/* probably waiting to be disabled */
- NFA_TRACE_WARNING2("DM disc_state state = %d disc_flags:0x%x",
- nfa_dm_cb.disc_cb.disc_state,
- nfa_dm_cb.disc_cb.disc_flags);
+ LOG(WARNING) << StringPrintf("DM disc_state state = %d disc_flags:0x%x",
+ nfa_dm_cb.disc_cb.disc_state,
+ nfa_dm_cb.disc_cb.disc_flags);
}
} else {
@@ -192,7 +189,8 @@
**
*******************************************************************************/
bool nfa_dm_is_active(void) {
- NFA_TRACE_DEBUG1("nfa_dm_is_active () flags:0x%x", nfa_dm_cb.flags);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("flags:0x%x", nfa_dm_cb.flags);
if ((nfa_dm_cb.flags & NFA_DM_FLAGS_DM_IS_ACTIVE) &&
((nfa_dm_cb.flags &
(NFA_DM_FLAGS_ENABLE_EVT_PEND | NFA_DM_FLAGS_NFCC_IS_RESTORING |
@@ -219,12 +217,12 @@
tNFC_STATUS nfc_status;
uint32_t cur_bit;
- NFA_TRACE_DEBUG0("nfa_dm_check_set_config ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* We only allow 32 pending SET_CONFIGs */
if (nfa_dm_cb.setcfg_pending_num >= NFA_DM_SETCONFIG_PENDING_MAX) {
- NFA_TRACE_ERROR0(
- "nfa_dm_check_set_config () error: pending number of SET_CONFIG "
+ LOG(ERROR) << StringPrintf(
+ "error: pending number of SET_CONFIG "
"exceeded");
return NFA_STATUS_FAILED;
}
@@ -446,7 +444,6 @@
}
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function nfa_dm_nfc_revt_2_str
@@ -454,84 +451,59 @@
** Description convert nfc revt to string
**
*******************************************************************************/
-static char* nfa_dm_evt_2_str(uint16_t event) {
+static std::string nfa_dm_evt_2_str(uint16_t event) {
switch (NFA_SYS_EVT_START(NFA_ID_DM) | event) {
case NFA_DM_API_ENABLE_EVT:
return "NFA_DM_API_ENABLE_EVT";
-
case NFA_DM_API_DISABLE_EVT:
return "NFA_DM_API_DISABLE_EVT";
-
case NFA_DM_API_SET_CONFIG_EVT:
return "NFA_DM_API_SET_CONFIG_EVT";
-
case NFA_DM_API_GET_CONFIG_EVT:
return "NFA_DM_API_GET_CONFIG_EVT";
-
case NFA_DM_API_REQUEST_EXCL_RF_CTRL_EVT:
return "NFA_DM_API_REQUEST_EXCL_RF_CTRL_EVT";
-
case NFA_DM_API_RELEASE_EXCL_RF_CTRL_EVT:
return "NFA_DM_API_RELEASE_EXCL_RF_CTRL_EVT";
-
case NFA_DM_API_ENABLE_POLLING_EVT:
return "NFA_DM_API_ENABLE_POLLING_EVT";
-
case NFA_DM_API_DISABLE_POLLING_EVT:
return "NFA_DM_API_DISABLE_POLLING_EVT";
-
case NFA_DM_API_ENABLE_LISTENING_EVT:
return "NFA_DM_API_ENABLE_LISTENING_EVT";
-
case NFA_DM_API_DISABLE_LISTENING_EVT:
return "NFA_DM_API_DISABLE_LISTENING_EVT";
-
case NFA_DM_API_PAUSE_P2P_EVT:
return "NFA_DM_API_PAUSE_P2P_EVT";
-
case NFA_DM_API_RESUME_P2P_EVT:
return "NFA_DM_API_RESUME_P2P_EVT";
-
case NFA_DM_API_RAW_FRAME_EVT:
return "NFA_DM_API_RAW_FRAME_EVT";
-
case NFA_DM_API_SET_P2P_LISTEN_TECH_EVT:
return "NFA_DM_API_SET_P2P_LISTEN_TECH_EVT";
-
case NFA_DM_API_START_RF_DISCOVERY_EVT:
return "NFA_DM_API_START_RF_DISCOVERY_EVT";
-
case NFA_DM_API_STOP_RF_DISCOVERY_EVT:
return "NFA_DM_API_STOP_RF_DISCOVERY_EVT";
-
case NFA_DM_API_SET_RF_DISC_DURATION_EVT:
return "NFA_DM_API_SET_RF_DISC_DURATION_EVT";
-
case NFA_DM_API_SELECT_EVT:
return "NFA_DM_API_SELECT_EVT";
-
case NFA_DM_API_UPDATE_RF_PARAMS_EVT:
return "NFA_DM_API_UPDATE_RF_PARAMS_EVT";
-
case NFA_DM_API_DEACTIVATE_EVT:
return "NFA_DM_API_DEACTIVATE_EVT";
-
case NFA_DM_API_POWER_OFF_SLEEP_EVT:
return "NFA_DM_API_POWER_OFF_SLEEP_EVT";
-
case NFA_DM_API_REG_NDEF_HDLR_EVT:
return "NFA_DM_API_REG_NDEF_HDLR_EVT";
-
case NFA_DM_API_DEREG_NDEF_HDLR_EVT:
return "NFA_DM_API_DEREG_NDEF_HDLR_EVT";
-
case NFA_DM_TIMEOUT_DISABLE_EVT:
return "NFA_DM_TIMEOUT_DISABLE_EVT";
-
case NFA_DM_API_SET_POWER_SUB_STATE_EVT:
return "NFA_DM_API_SET_POWER_SUB_STATE_EVT";
}
return "Unknown or Vendor Specific";
}
-#endif /* BT_TRACE_VERBOSE */
diff --git a/src/nfa/dm/nfa_dm_ndef.c b/src/nfa/dm/nfa_dm_ndef.cc
similarity index 89%
rename from src/nfa/dm/nfa_dm_ndef.c
rename to src/nfa/dm/nfa_dm_ndef.cc
index bbccebf..0e07d95 100644
--- a/src/nfa/dm/nfa_dm_ndef.c
+++ b/src/nfa/dm/nfa_dm_ndef.cc
@@ -22,12 +22,17 @@
*
******************************************************************************/
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "ndef_utils.h"
#include "nfa_api.h"
#include "nfa_dm_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
-#include "nfc_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*******************************************************************************
* URI Well-known-type prefixes
@@ -136,13 +141,14 @@
if (p_reg_info->tnf == NFA_TNF_DEFAULT) {
/* check if default handler is already registered */
if (p_cb->p_ndef_handler[NFA_NDEF_DEFAULT_HANDLER_IDX]) {
- NFA_TRACE_WARNING0("Default NDEF handler being changed.");
+ LOG(WARNING) << StringPrintf("Default NDEF handler being changed.");
/* Free old registration info */
nfa_dm_ndef_dereg_hdlr_by_handle(
(tNFA_HANDLE)NFA_NDEF_DEFAULT_HANDLER_IDX);
}
- NFA_TRACE_DEBUG0("Default NDEF handler successfully registered.");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Default NDEF handler successfully registered.");
hdlr_idx = NFA_NDEF_DEFAULT_HANDLER_IDX;
}
/* Get available entry in ndef_handler table, and check if requested type is
@@ -171,21 +177,24 @@
ndef_register.ndef_type_handle = p_reg_info->ndef_type_handle;
ndef_register.status = NFA_STATUS_OK;
- NFA_TRACE_DEBUG1("NDEF handler successfully registered. Handle=0x%08x",
- p_reg_info->ndef_type_handle);
- (*(p_reg_info->p_ndef_cback))(NFA_NDEF_REGISTER_EVT,
- (tNFA_NDEF_EVT_DATA*)&ndef_register);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NDEF handler successfully registered. Handle=0x%08x",
+ p_reg_info->ndef_type_handle);
+ tNFA_NDEF_EVT_DATA nfa_ndef_evt_data;
+ nfa_ndef_evt_data.ndef_reg = ndef_register;
+ (*(p_reg_info->p_ndef_cback))(NFA_NDEF_REGISTER_EVT, &nfa_ndef_evt_data);
/* indicate that we will free message buffer when type_handler is
* deregistered */
return false;
} else {
/* Error */
- NFA_TRACE_ERROR0("NDEF handler failed to register.");
+ LOG(ERROR) << StringPrintf("NDEF handler failed to register.");
ndef_register.ndef_type_handle = NFA_HANDLE_INVALID;
ndef_register.status = NFA_STATUS_FAILED;
- (*(p_reg_info->p_ndef_cback))(NFA_NDEF_REGISTER_EVT,
- (tNFA_NDEF_EVT_DATA*)&ndef_register);
+ tNFA_NDEF_EVT_DATA nfa_ndef_evt_data;
+ nfa_ndef_evt_data.ndef_reg = ndef_register;
+ (*(p_reg_info->p_ndef_cback))(NFA_NDEF_REGISTER_EVT, &nfa_ndef_evt_data);
return true;
}
@@ -209,8 +218,8 @@
NFA_HANDLE_GROUP_NDEF_HANDLER) ||
((p_dereginfo->ndef_type_handle & NFA_HANDLE_MASK) >=
NFA_NDEF_MAX_HANDLERS)) {
- NFA_TRACE_ERROR1("Invalid handle for NDEF type handler: 0x%08x",
- p_dereginfo->ndef_type_handle);
+ LOG(ERROR) << StringPrintf("Invalid handle for NDEF type handler: 0x%08x",
+ p_dereginfo->ndef_type_handle);
} else {
nfa_dm_ndef_dereg_hdlr_by_handle(p_dereginfo->ndef_type_handle);
}
@@ -363,8 +372,8 @@
uint8_t rec_count = 0;
bool record_handled, entire_message_handled;
- NFA_TRACE_DEBUG3("nfa_dm_ndef_handle_message status=%i, msgbuf=%08x, len=%i",
- status, p_msg_buf, len);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_dm_ndef_handle_message status=%i, len=%i", status, len);
if (status != NFA_STATUS_OK) {
/* If problem reading NDEF message, then exit (no action required) */
@@ -380,8 +389,9 @@
ndef_data.ndef_type_handle = 0;
ndef_data.p_data = p_msg_buf;
ndef_data.len = len;
- (*p_cb->p_excl_ndef_cback)(NFA_NDEF_DATA_EVT,
- (tNFA_NDEF_EVT_DATA*)&ndef_data);
+ tNFA_NDEF_EVT_DATA nfa_ndef_evt_data;
+ nfa_ndef_evt_data.ndef_data = ndef_data;
+ (*p_cb->p_excl_ndef_cback)(NFA_NDEF_DATA_EVT, &nfa_ndef_evt_data);
return;
}
@@ -389,13 +399,14 @@
if (len == 0) {
p_handler = p_cb->p_ndef_handler[NFA_NDEF_DEFAULT_HANDLER_IDX];
if (p_handler != NULL) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"Notifying default handler of zero-length NDEF message...");
ndef_data.ndef_type_handle = p_handler->ndef_type_handle;
ndef_data.p_data = NULL; /* Start of record */
ndef_data.len = 0;
- (*p_handler->p_ndef_cback)(NFA_NDEF_DATA_EVT,
- (tNFA_NDEF_EVT_DATA*)&ndef_data);
+ tNFA_NDEF_EVT_DATA nfa_ndef_evt_data;
+ nfa_ndef_evt_data.ndef_data = ndef_data;
+ (*p_handler->p_ndef_cback)(NFA_NDEF_DATA_EVT, &nfa_ndef_evt_data);
}
return;
}
@@ -403,8 +414,8 @@
/* Validate the NDEF message */
ndef_status = NDEF_MsgValidate(p_msg_buf, len, true);
if (ndef_status != NDEF_OK) {
- NFA_TRACE_ERROR1("Received invalid NDEF message. NDEF status=0x%x",
- ndef_status);
+ LOG(ERROR) << StringPrintf(
+ "Received invalid NDEF message. NDEF status=0x%x", ndef_status);
return;
}
@@ -439,7 +450,8 @@
/* Not a registered NDEF type. Use default handler */
p_handler = p_cb->p_ndef_handler[NFA_NDEF_DEFAULT_HANDLER_IDX];
if (p_handler != NULL) {
- NFA_TRACE_DEBUG0("No handler found. Using default handler...");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("No handler found. Using default handler...");
}
}
@@ -454,8 +466,8 @@
}
/* Get pointer to record payload */
- NFA_TRACE_DEBUG1("Calling ndef type handler (%x)",
- p_handler->ndef_type_handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Calling ndef type handler (%x)", p_handler->ndef_type_handle);
ndef_data.ndef_type_handle = p_handler->ndef_type_handle;
ndef_data.p_data = p_rec; /* Start of record */
@@ -506,8 +518,9 @@
}
/* Notify NDEF type handler */
- (*p_handler->p_ndef_cback)(NFA_NDEF_DATA_EVT,
- (tNFA_NDEF_EVT_DATA*)&ndef_data);
+ tNFA_NDEF_EVT_DATA nfa_ndef_evt_data;
+ nfa_ndef_evt_data.ndef_data = ndef_data;
+ (*p_handler->p_ndef_cback)(NFA_NDEF_DATA_EVT, &nfa_ndef_evt_data);
/* Indicate that at lease one handler has received this record */
record_handled = true;
@@ -521,7 +534,7 @@
* if no default handler was register) */
if ((!record_handled) && (!entire_message_handled)) {
/* Unregistered NDEF record type; no default handler */
- NFA_TRACE_WARNING1("Unhandled NDEF record (#%i)", rec_count);
+ LOG(WARNING) << StringPrintf("Unhandled NDEF record (#%i)", rec_count);
}
rec_count++;
diff --git a/src/nfa/ee/nfa_ee_act.c b/src/nfa/ee/nfa_ee_act.cc
similarity index 70%
rename from src/nfa/ee/nfa_ee_act.c
rename to src/nfa/ee/nfa_ee_act.cc
index 3ae939d..ab1eefc 100644
--- a/src/nfa/ee/nfa_ee_act.c
+++ b/src/nfa/ee/nfa_ee_act.cc
@@ -22,12 +22,18 @@
*
******************************************************************************/
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_api.h"
#include "nfa_dm_int.h"
#include "nfa_ee_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
-#include "nfc_api.h"
+#include "nfa_hci_int.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/* the de-bounce timer:
* The NFA-EE API functions are called to set the routing and VS configuration.
@@ -76,6 +82,18 @@
*pp += len;
}
+static void add_route_sys_code_tlv(uint8_t** p_buff, uint8_t* p_sys_code_cfg,
+ uint8_t sys_code_rt_loc,
+ uint8_t sys_code_pwr_cfg) {
+ *(*p_buff)++ = NFC_ROUTE_TAG_SYSCODE | nfa_ee_cb.route_block_control;
+ *(*p_buff)++ = NFA_EE_SYSTEM_CODE_LEN + 2;
+ *(*p_buff)++ = sys_code_rt_loc;
+ *(*p_buff)++ = sys_code_pwr_cfg;
+ /* copy the system code */
+ memcpy(*p_buff, p_sys_code_cfg, NFA_EE_SYSTEM_CODE_LEN);
+ *p_buff += NFA_EE_SYSTEM_CODE_LEN;
+}
+
const uint8_t nfa_ee_proto_mask_list[NFA_EE_NUM_PROTO] = {
NFA_PROTOCOL_MASK_T1T, NFA_PROTOCOL_MASK_T2T, NFA_PROTOCOL_MASK_T3T,
NFA_PROTOCOL_MASK_ISO_DEP, NFA_PROTOCOL_MASK_NFC_DEP};
@@ -97,7 +115,7 @@
** Returns void
**
*******************************************************************************/
-static void nfa_ee_trace_aid(char* p_str, uint8_t id, uint8_t aid_len,
+static void nfa_ee_trace_aid(std::string p_str, uint8_t id, uint8_t aid_len,
uint8_t* p) {
int len = aid_len;
int xx, yy = 0;
@@ -105,14 +123,16 @@
buff[0] = 0;
if (aid_len > NFA_MAX_AID_LEN) {
- NFA_TRACE_ERROR2("aid_len: %d exceeds max(%d)", aid_len, NFA_MAX_AID_LEN);
+ LOG(ERROR) << StringPrintf("aid_len: %d exceeds max(%d)", aid_len,
+ NFA_MAX_AID_LEN);
len = NFA_MAX_AID_LEN;
}
for (xx = 0; xx < len; xx++) {
yy += sprintf(&buff[yy], "%02x ", *p);
p++;
}
- NFA_TRACE_DEBUG4("%s id:0x%x len=%d aid:%s", p_str, id, aid_len, buff);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "%s id:0x%x len=%d aid:%s", p_str.c_str(), id, aid_len, buff);
}
/*******************************************************************************
@@ -139,8 +159,17 @@
power_cfg |= NCI_ROUTE_PWR_STATE_SWITCH_OFF;
if (p_cb->tech_battery_off & nfa_ee_tech_mask_list[xx])
power_cfg |= NCI_ROUTE_PWR_STATE_BATT_OFF;
+ if ((power_cfg & NCI_ROUTE_PWR_STATE_ON) &&
+ (NFC_GetNCIVersion() == NCI_VERSION_2_0)) {
+ if (p_cb->tech_screen_lock & nfa_ee_tech_mask_list[xx])
+ power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_ON_LOCK();
+ if (p_cb->tech_screen_off & nfa_ee_tech_mask_list[xx])
+ power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_OFF_UNLOCK();
+ if (p_cb->tech_screen_off_lock & nfa_ee_tech_mask_list[xx])
+ power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_OFF_LOCK();
+ }
if (power_cfg) {
- /* 5 = 1 (tag) + 1 (len) + 1(nfcee_id) + 1(power cfg) + 1 (techonogy) */
+ /* 5 = 1 (tag) + 1 (len) + 1(nfcee_id) + 1(power cfg) + 1 (technology) */
p_cb->size_mask += 5;
}
}
@@ -154,13 +183,23 @@
power_cfg |= NCI_ROUTE_PWR_STATE_SWITCH_OFF;
if (p_cb->proto_battery_off & nfa_ee_proto_mask_list[xx])
power_cfg |= NCI_ROUTE_PWR_STATE_BATT_OFF;
+ if ((power_cfg & NCI_ROUTE_PWR_STATE_ON) &&
+ (NFC_GetNCIVersion() == NCI_VERSION_2_0)) {
+ if (p_cb->proto_screen_lock & nfa_ee_proto_mask_list[xx])
+ power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_ON_LOCK();
+ if (p_cb->proto_screen_off & nfa_ee_proto_mask_list[xx])
+ power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_OFF_UNLOCK();
+ if (p_cb->proto_screen_off_lock & nfa_ee_proto_mask_list[xx])
+ power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_OFF_LOCK();
+ }
if (power_cfg) {
/* 5 = 1 (tag) + 1 (len) + 1(nfcee_id) + 1(power cfg) + 1 (protocol) */
p_cb->size_mask += 5;
}
}
- NFA_TRACE_DEBUG2("nfa_ee_update_route_size nfcee_id:0x%x size_mask:%d",
- p_cb->nfcee_id, p_cb->size_mask);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ee_update_route_size nfcee_id:0x%x size_mask:%d",
+ p_cb->nfcee_id, p_cb->size_mask);
}
/*******************************************************************************
@@ -194,8 +233,35 @@
start_offset += p_cb->aid_len[xx];
}
}
- NFA_TRACE_DEBUG2("nfa_ee_update_route_aid_size nfcee_id:0x%x size_aid:%d",
- p_cb->nfcee_id, p_cb->size_aid);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ee_update_route_aid_size nfcee_id:0x%x size_aid:%d",
+ p_cb->nfcee_id, p_cb->size_aid);
+}
+
+/*******************************************************************************
+**
+** Function nfa_ee_update_route_sys_code_size
+**
+** Description Update the size required for system code routing
+** of the given NFCEE ID.
+**
+** Returns void
+**
+*******************************************************************************/
+static void nfa_ee_update_route_sys_code_size(tNFA_EE_ECB* p_cb) {
+ p_cb->size_sys_code = 0;
+ if (p_cb->sys_code_cfg_entries) {
+ for (uint8_t xx = 0; xx < p_cb->sys_code_cfg_entries; xx++) {
+ if (p_cb->sys_code_rt_loc_vs_info[xx] & NFA_EE_AE_ROUTE) {
+ /* 4 = 1 (tag) + 1 (len) + 1(nfcee_id) + 1(power cfg) */
+ p_cb->size_sys_code += 4;
+ p_cb->size_sys_code += NFA_EE_SYSTEM_CODE_LEN;
+ }
+ }
+ }
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_ee_update_route_sys_code_size nfcee_id:0x%x size_sys_code:%d",
+ p_cb->nfcee_id, p_cb->size_sys_code);
}
/*******************************************************************************
@@ -215,14 +281,17 @@
p_cb = &nfa_ee_cb.ecb[NFA_EE_CB_4_DH];
lmrt_size += p_cb->size_mask;
lmrt_size += p_cb->size_aid;
+ lmrt_size += p_cb->size_sys_code;
p_cb = &nfa_ee_cb.ecb[nfa_ee_cb.cur_ee - 1];
for (xx = 0; xx < nfa_ee_cb.cur_ee; xx++, p_cb--) {
if (p_cb->ee_status == NFC_NFCEE_STATUS_ACTIVE) {
lmrt_size += p_cb->size_mask;
lmrt_size += p_cb->size_aid;
+ lmrt_size += p_cb->size_sys_code;
}
}
- NFA_TRACE_DEBUG1("nfa_ee_total_lmrt_size size:%d", lmrt_size);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ee_total_lmrt_size size:%d", lmrt_size);
return lmrt_size;
}
@@ -240,6 +309,15 @@
power_cfg |= NCI_ROUTE_PWR_STATE_SWITCH_OFF;
if (p_cb->tech_battery_off & nfa_ee_tech_mask_list[xx])
power_cfg |= NCI_ROUTE_PWR_STATE_BATT_OFF;
+ if ((power_cfg & NCI_ROUTE_PWR_STATE_ON) &&
+ (NFC_GetNCIVersion() == NCI_VERSION_2_0)) {
+ if (p_cb->tech_screen_lock & nfa_ee_tech_mask_list[xx])
+ power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_ON_LOCK();
+ if (p_cb->tech_screen_off & nfa_ee_tech_mask_list[xx])
+ power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_OFF_UNLOCK();
+ if (p_cb->tech_screen_off_lock & nfa_ee_tech_mask_list[xx])
+ power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_OFF_LOCK();
+ }
if (power_cfg) {
add_route_tech_proto_tlv(&pp, NFC_ROUTE_TAG_TECH, p_cb->nfcee_id,
power_cfg, nfa_ee_tech_list[xx]);
@@ -277,8 +355,15 @@
/* Enable screen on lock power state for ISO-DEP protocol to
enable HCE screen lock */
- if (NFC_GetNCIVersion() == NCI_VERSION_2_0)
- power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_ON_LOCK;
+ if ((power_cfg & NCI_ROUTE_PWR_STATE_ON) &&
+ (NFC_GetNCIVersion() == NCI_VERSION_2_0)) {
+ if (p_cb->proto_screen_lock & nfa_ee_proto_mask_list[xx])
+ power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_ON_LOCK();
+ if (p_cb->proto_screen_off & nfa_ee_proto_mask_list[xx])
+ power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_OFF_UNLOCK();
+ if (p_cb->proto_screen_off_lock & nfa_ee_proto_mask_list[xx])
+ power_cfg |= NCI_ROUTE_PWR_STATE_SCREEN_OFF_LOCK();
+ }
} else {
proto_tag = NFC_ROUTE_TAG_PROTO;
}
@@ -297,7 +382,8 @@
NCI_ROUTE_PWR_STATE_ON, NFC_PROTOCOL_NFC_DEP);
num_tlv++;
- NFA_TRACE_DEBUG1("%s - NFC DEP added for DH!!!", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s - NFC DEP added for DH!!!", __func__);
}
/* update the num_tlv and current offset */
uint8_t entry_size = (uint8_t)(pp - p);
@@ -323,16 +409,18 @@
num_tlv++;
uint8_t* pa = &p_cb->aid_cfg[start_offset];
- NFA_TRACE_DEBUG2("%s - p_cb->aid_info%x", __func__,
- p_cb->aid_info[xx]);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "%s - p_cb->aid_info%x", __func__, p_cb->aid_info[xx]);
if (p_cb->aid_info[xx] & NCI_ROUTE_QUAL_LONG_SELECT) {
- NFA_TRACE_DEBUG2("%s - %x", __func__,
- p_cb->aid_info[xx] & NCI_ROUTE_QUAL_LONG_SELECT);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s - %x", __func__,
+ p_cb->aid_info[xx] & NCI_ROUTE_QUAL_LONG_SELECT);
route_qual |= NCI_ROUTE_QUAL_LONG_SELECT;
}
if (p_cb->aid_info[xx] & NCI_ROUTE_QUAL_SHORT_SELECT) {
- NFA_TRACE_DEBUG2("%s - %x", __func__,
- p_cb->aid_info[xx] & NCI_ROUTE_QUAL_SHORT_SELECT);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s - %x", __func__,
+ p_cb->aid_info[xx] & NCI_ROUTE_QUAL_SHORT_SELECT);
route_qual |= NCI_ROUTE_QUAL_SHORT_SELECT;
}
@@ -360,7 +448,61 @@
}
}
} else {
- NFA_TRACE_DEBUG1("%s - No AID entries available", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s - No AID entries available", __func__);
+ }
+}
+
+static void nfa_ee_add_sys_code_route_to_ecb(tNFA_EE_ECB* p_cb, uint8_t* pp,
+ uint8_t* p, uint8_t* p_buff,
+ int* p_cur_offset,
+ int* p_max_len) {
+ uint8_t num_tlv = *p_buff;
+
+ /* add the SC routing */
+ if (p_cb->sys_code_cfg_entries) {
+ int start_offset = 0;
+ for (int xx = 0; xx < p_cb->sys_code_cfg_entries; xx++) {
+ /* remember the beginning of this SC routing entry, just in case we
+ * need to put it in next command */
+ uint8_t* p_start = pp;
+ /* add one SC entry */
+ if (p_cb->sys_code_rt_loc_vs_info[xx] & NFA_EE_AE_ROUTE) {
+ uint8_t* p_sys_code_cfg = &p_cb->sys_code_cfg[start_offset];
+ if (nfa_ee_is_active(p_cb->sys_code_rt_loc[xx] | NFA_HANDLE_GROUP_EE)) {
+ add_route_sys_code_tlv(&pp, p_sys_code_cfg, p_cb->sys_code_rt_loc[xx],
+ p_cb->sys_code_pwr_cfg[xx]);
+ p_cb->ecb_flags |= NFA_EE_ECB_FLAGS_ROUTING;
+ num_tlv++;
+ } else {
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s - ignoring route loc%x", __func__,
+ p_cb->sys_code_rt_loc[xx]);
+ }
+ }
+ start_offset += NFA_EE_SYSTEM_CODE_LEN;
+ uint8_t new_size = (uint8_t)(pp - p_start);
+ nfa_ee_check_set_routing(new_size, p_max_len, p_buff, p_cur_offset);
+ if (*p_buff == 0 && (num_tlv > 0x00)) {
+ /* just sent routing command, update local */
+ *p_buff = 1;
+ num_tlv = *p_buff;
+ *p_cur_offset = new_size;
+ pp = p_buff + 1;
+ p = pp;
+ memcpy(p, p_start, new_size);
+ pp += new_size;
+ } else {
+ /* add the new entry */
+ *p_buff = num_tlv;
+ *p_cur_offset += new_size;
+ }
+ }
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_ee_route_add_one_ecb_by_route_order --num_tlv:- %d", num_tlv);
+ } else {
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s - No SC entries available", __func__);
}
}
@@ -375,11 +517,10 @@
*******************************************************************************/
static void nfa_ee_conn_cback(uint8_t conn_id, tNFC_CONN_EVT event,
tNFC_CONN* p_data) {
- NFC_HDR* p_msg;
tNFA_EE_NCI_CONN cbk;
- NFA_TRACE_DEBUG2("nfa_ee_conn_cback: conn_id: %d, event=0x%02x", conn_id,
- event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_ee_conn_cback: conn_id: %d, event=0x%02x", conn_id, event);
cbk.hdr.event = NFA_EE_NCI_CONN_EVT;
if (event == NFC_DATA_CEVT) {
@@ -389,9 +530,10 @@
cbk.conn_id = conn_id;
cbk.event = event;
cbk.p_data = p_data;
- p_msg = (NFC_HDR*)&cbk;
+ tNFA_EE_MSG nfa_ee_msg;
+ nfa_ee_msg.conn = cbk;
- nfa_ee_evt_hdlr(p_msg);
+ nfa_ee_evt_hdlr(&nfa_ee_msg.hdr);
}
/*******************************************************************************
@@ -416,6 +558,45 @@
/*******************************************************************************
**
+** Function nfa_ee_find_total_sys_code_len
+**
+** Description Find the total len in sys_code_cfg from start_entry to the
+** last in the given ecb.
+**
+** Returns void
+**
+*******************************************************************************/
+int nfa_ee_find_total_sys_code_len(tNFA_EE_ECB* p_cb, int start_entry) {
+ int len = 0;
+ if (p_cb->sys_code_cfg_entries > start_entry) {
+ for (int xx = start_entry; xx < p_cb->sys_code_cfg_entries; xx++) {
+ len += NFA_EE_SYSTEM_CODE_LEN;
+ }
+ }
+ return len;
+}
+
+/*******************************************************************************
+**
+** Function nfa_all_ee_find_total_sys_code_len
+**
+** Description Find the total len in sys_code_cfg from start_entry to the
+** last for all EE and DH.
+**
+** Returns total length
+**
+*******************************************************************************/
+int nfa_all_ee_find_total_sys_code_len() {
+ int total_len = 0;
+ for (int32_t xx = 0; xx < NFA_EE_NUM_ECBS; xx++) {
+ tNFA_EE_ECB* p_cb = &nfa_ee_cb.ecb[xx];
+ total_len += nfa_ee_find_total_sys_code_len(p_cb, 0);
+ }
+ return total_len;
+}
+
+/*******************************************************************************
+**
** Function nfa_ee_find_aid_offset
**
** Description Given the AID, find the associated tNFA_EE_ECB and the
@@ -431,7 +612,7 @@
p_ecb = &nfa_ee_cb.ecb[NFA_EE_CB_4_DH];
aid_len_offset = 1; /* skip the tag */
- for (yy = 0; yy < nfa_ee_cb.cur_ee; yy++, p_ecb++) {
+ for (yy = 0; yy <= nfa_ee_cb.cur_ee; yy++) {
if (p_ecb->aid_entries) {
offset = 0;
for (xx = 0; xx < p_ecb->aid_entries; xx++) {
@@ -458,6 +639,49 @@
}
/*******************************************************************************
+ **
+ ** Function nfa_ee_find_sys_code_offset
+ **
+ ** Description Given the System Code, find the associated tNFA_EE_ECB and
+ *the
+ ** offset in sys_code_cfg[]. *p_entry is the index.
+ **
+ ** Returns void
+ **
+ *******************************************************************************/
+tNFA_EE_ECB* nfa_ee_find_sys_code_offset(uint16_t sys_code, int* p_offset,
+ int* p_entry) {
+ tNFA_EE_ECB* p_ret = NULL;
+
+ for (uint8_t xx = 0; xx < NFA_EE_NUM_ECBS; xx++) {
+ tNFA_EE_ECB* p_ecb = &nfa_ee_cb.ecb[xx];
+ uint8_t mask = nfa_ee_ecb_to_mask(p_ecb);
+ if ((nfa_ee_cb.ee_cfged & mask) == 0 || p_ecb->sys_code_cfg_entries == 0) {
+ continue; /*try next ecb*/
+ }
+ if (p_ecb->sys_code_cfg_entries) {
+ uint8_t offset = 0;
+ for (uint8_t yy = 0; yy < p_ecb->sys_code_cfg_entries; yy++) {
+ if ((memcmp(&p_ecb->sys_code_cfg[offset], &sys_code,
+ NFA_EE_SYSTEM_CODE_LEN) == 0)) {
+ p_ret = p_ecb;
+ if (p_offset) *p_offset = offset;
+ if (p_entry) *p_entry = yy;
+ break;
+ }
+ offset += NFA_EE_SYSTEM_CODE_LEN;
+ }
+
+ if (p_ret) {
+ /* found the entry already */
+ return p_ret;
+ }
+ }
+ }
+ return p_ret;
+}
+
+/*******************************************************************************
**
** Function nfa_ee_report_event
**
@@ -510,11 +734,11 @@
tNFA_EE_CBACK* p_cback = p_data->ee_discover.p_cback;
tNFA_EE_CBACK_DATA evt_data = {0};
- NFA_TRACE_DEBUG1("nfa_ee_api_discover() in_use:%d",
- nfa_ee_cb.discv_timer.in_use);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("in_use:%d", nfa_ee_cb.discv_timer.in_use);
if (nfa_ee_cb.discv_timer.in_use) {
nfa_sys_stop_timer(&nfa_ee_cb.discv_timer);
- NFC_NfceeDiscover(false);
+ if (NFA_GetNCIVersion() != NCI_VERSION_2_0) NFC_NfceeDiscover(false);
}
if (nfa_ee_cb.p_ee_disc_cback == NULL &&
NFC_NfceeDiscover(true) == NFC_STATUS_OK) {
@@ -582,7 +806,7 @@
int index = p_data->deregister.index;
tNFA_EE_CBACK_DATA evt_data = {0};
- NFA_TRACE_DEBUG0("nfa_ee_api_deregister");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("nfa_ee_api_deregister");
p_cback = nfa_ee_cb.p_ee_cback[index];
nfa_ee_cb.p_ee_cback[index] = NULL;
if (p_cback) (*p_cback)(NFA_EE_DEREGISTER_EVT, &evt_data);
@@ -599,10 +823,19 @@
*******************************************************************************/
void nfa_ee_api_mode_set(tNFA_EE_MSG* p_data) {
tNFA_EE_ECB* p_cb = p_data->cfg_hdr.p_cb;
-
- NFA_TRACE_DEBUG2("nfa_ee_api_mode_set() handle:0x%02x mode:%d",
- p_cb->nfcee_id, p_data->mode_set.mode);
- NFC_NfceeModeSet(p_cb->nfcee_id, p_data->mode_set.mode);
+ tNFA_EE_MODE_SET mode_set;
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "handle:0x%02x mode:%d", p_cb->nfcee_id, p_data->mode_set.mode);
+ mode_set.status = NFC_NfceeModeSet(p_cb->nfcee_id, p_data->mode_set.mode);
+ if (mode_set.status != NFC_STATUS_OK) {
+ /* the api is rejected at NFC layer, report the failure status right away */
+ mode_set.ee_handle = (tNFA_HANDLE)p_cb->nfcee_id | NFA_HANDLE_GROUP_EE;
+ mode_set.ee_status = p_data->mode_set.mode;
+ tNFA_EE_CBACK_DATA nfa_ee_cback_data;
+ nfa_ee_cback_data.mode_set = mode_set;
+ nfa_ee_report_event(NULL, NFA_EE_MODE_SET_EVT, &nfa_ee_cback_data);
+ return;
+ }
/* set the NFA_EE_STATUS_PENDING bit to indicate the status is not exactly
* active */
if (p_data->mode_set.mode == NFC_MODE_ACTIVATE)
@@ -635,31 +868,46 @@
tNFA_TECHNOLOGY_MASK old_tech_switch_on = p_cb->tech_switch_on;
tNFA_TECHNOLOGY_MASK old_tech_switch_off = p_cb->tech_switch_off;
tNFA_TECHNOLOGY_MASK old_tech_battery_off = p_cb->tech_battery_off;
+ tNFA_TECHNOLOGY_MASK old_tech_screen_lock = p_cb->tech_screen_lock;
+ tNFA_TECHNOLOGY_MASK old_tech_screen_off = p_cb->tech_screen_off;
+ tNFA_TECHNOLOGY_MASK old_tech_screen_off_lock = p_cb->tech_screen_off_lock;
uint8_t old_size_mask = p_cb->size_mask;
if ((p_cb->tech_switch_on == p_data->set_tech.technologies_switch_on) &&
(p_cb->tech_switch_off == p_data->set_tech.technologies_switch_off) &&
- (p_cb->tech_battery_off == p_data->set_tech.technologies_battery_off)) {
+ (p_cb->tech_battery_off == p_data->set_tech.technologies_battery_off) &&
+ (p_cb->tech_screen_lock == p_data->set_tech.technologies_screen_lock) &&
+ (p_cb->tech_screen_off == p_data->set_tech.technologies_screen_off) &&
+ (p_cb->tech_screen_off_lock ==
+ p_data->set_tech.technologies_screen_off_lock)) {
/* nothing to change */
evt_data.status = NFA_STATUS_OK;
nfa_ee_report_event(p_cb->p_ee_cback, NFA_EE_SET_TECH_CFG_EVT, &evt_data);
return;
}
- p_cb->tech_switch_on = p_data->set_tech.technologies_switch_on;
- p_cb->tech_switch_off = p_data->set_tech.technologies_switch_off;
- p_cb->tech_battery_off = p_data->set_tech.technologies_battery_off;
+ p_cb->tech_switch_on |= p_data->set_tech.technologies_switch_on;
+ p_cb->tech_switch_off |= p_data->set_tech.technologies_switch_off;
+ p_cb->tech_battery_off |= p_data->set_tech.technologies_battery_off;
+ p_cb->tech_screen_lock |= p_data->set_tech.technologies_screen_lock;
+ p_cb->tech_screen_off |= p_data->set_tech.technologies_screen_off;
+ p_cb->tech_screen_off_lock |= p_data->set_tech.technologies_screen_off_lock;
nfa_ee_update_route_size(p_cb);
if (nfa_ee_total_lmrt_size() > NFC_GetLmrtSize()) {
- NFA_TRACE_ERROR0("nfa_ee_api_set_tech_cfg Exceed LMRT size");
+ LOG(ERROR) << StringPrintf("nfa_ee_api_set_tech_cfg Exceed LMRT size");
evt_data.status = NFA_STATUS_BUFFER_FULL;
p_cb->tech_switch_on = old_tech_switch_on;
p_cb->tech_switch_off = old_tech_switch_off;
p_cb->tech_battery_off = old_tech_battery_off;
+ p_cb->tech_screen_lock = old_tech_screen_lock;
+ p_cb->tech_screen_off = old_tech_screen_off;
+ p_cb->tech_screen_off_lock = old_tech_screen_off_lock;
p_cb->size_mask = old_size_mask;
} else {
p_cb->ecb_flags |= NFA_EE_ECB_FLAGS_TECH;
- if (p_cb->tech_switch_on | p_cb->tech_switch_off | p_cb->tech_battery_off) {
+ if (p_cb->tech_switch_on | p_cb->tech_switch_off | p_cb->tech_battery_off |
+ p_cb->tech_screen_lock | p_cb->tech_screen_off |
+ p_cb->tech_screen_off_lock) {
/* if any technology in any power mode is configured, mark this entry as
* configured */
nfa_ee_cb.ee_cfged |= nfa_ee_ecb_to_mask(p_cb);
@@ -686,32 +934,46 @@
tNFA_PROTOCOL_MASK old_proto_switch_on = p_cb->proto_switch_on;
tNFA_PROTOCOL_MASK old_proto_switch_off = p_cb->proto_switch_off;
tNFA_PROTOCOL_MASK old_proto_battery_off = p_cb->proto_battery_off;
+ tNFA_PROTOCOL_MASK old_proto_screen_lock = p_cb->proto_screen_lock;
+ tNFA_PROTOCOL_MASK old_proto_screen_off = p_cb->proto_screen_off;
+ tNFA_PROTOCOL_MASK old_proto_screen_off_lock = p_cb->proto_screen_off_lock;
uint8_t old_size_mask = p_cb->size_mask;
if ((p_cb->proto_switch_on == p_data->set_proto.protocols_switch_on) &&
(p_cb->proto_switch_off == p_data->set_proto.protocols_switch_off) &&
- (p_cb->proto_battery_off == p_data->set_proto.protocols_battery_off)) {
+ (p_cb->proto_battery_off == p_data->set_proto.protocols_battery_off) &&
+ (p_cb->proto_screen_lock == p_data->set_proto.protocols_screen_lock) &&
+ (p_cb->proto_screen_off == p_data->set_proto.protocols_screen_off) &&
+ (p_cb->proto_screen_off_lock ==
+ p_data->set_proto.protocols_screen_off_lock)) {
/* nothing to change */
evt_data.status = NFA_STATUS_OK;
nfa_ee_report_event(p_cb->p_ee_cback, NFA_EE_SET_PROTO_CFG_EVT, &evt_data);
return;
}
- p_cb->proto_switch_on = p_data->set_proto.protocols_switch_on;
- p_cb->proto_switch_off = p_data->set_proto.protocols_switch_off;
- p_cb->proto_battery_off = p_data->set_proto.protocols_battery_off;
+ p_cb->proto_switch_on |= p_data->set_proto.protocols_switch_on;
+ p_cb->proto_switch_off |= p_data->set_proto.protocols_switch_off;
+ p_cb->proto_battery_off |= p_data->set_proto.protocols_battery_off;
+ p_cb->proto_screen_lock |= p_data->set_proto.protocols_screen_lock;
+ p_cb->proto_screen_off |= p_data->set_proto.protocols_screen_off;
+ p_cb->proto_screen_off_lock |= p_data->set_proto.protocols_screen_off_lock;
nfa_ee_update_route_size(p_cb);
if (nfa_ee_total_lmrt_size() > NFC_GetLmrtSize()) {
- NFA_TRACE_ERROR0("nfa_ee_api_set_proto_cfg Exceed LMRT size");
+ LOG(ERROR) << StringPrintf("nfa_ee_api_set_proto_cfg Exceed LMRT size");
evt_data.status = NFA_STATUS_BUFFER_FULL;
p_cb->proto_switch_on = old_proto_switch_on;
p_cb->proto_switch_off = old_proto_switch_off;
p_cb->proto_battery_off = old_proto_battery_off;
+ p_cb->proto_screen_lock = old_proto_screen_lock;
+ p_cb->proto_screen_off = old_proto_screen_off;
+ p_cb->proto_screen_off_lock = old_proto_screen_off_lock;
p_cb->size_mask = old_size_mask;
} else {
p_cb->ecb_flags |= NFA_EE_ECB_FLAGS_PROTO;
if (p_cb->proto_switch_on | p_cb->proto_switch_off |
- p_cb->proto_battery_off) {
+ p_cb->proto_battery_off | p_cb->proto_screen_lock |
+ p_cb->proto_screen_off | p_cb->proto_screen_off_lock) {
/* if any protocol in any power mode is configured, mark this entry as
* configured */
nfa_ee_cb.ee_cfged |= nfa_ee_ecb_to_mask(p_cb);
@@ -747,21 +1009,21 @@
p_chk_cb =
nfa_ee_find_aid_offset(p_add->aid_len, p_add->p_aid, &offset, &entry);
if (p_chk_cb) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_ee_api_add_aid The AID entry is already in the database");
if (p_chk_cb == p_cb) {
p_cb->aid_rt_info[entry] |= NFA_EE_AE_ROUTE;
p_cb->aid_info[entry] = p_add->aidInfo;
new_size = nfa_ee_total_lmrt_size();
if (new_size > NFC_GetLmrtSize()) {
- NFA_TRACE_ERROR1("Exceed LMRT size:%d (add ROUTE)", new_size);
+ LOG(ERROR) << StringPrintf("Exceed LMRT size:%d (add ROUTE)", new_size);
evt_data.status = NFA_STATUS_BUFFER_FULL;
p_cb->aid_rt_info[entry] &= ~NFA_EE_AE_ROUTE;
} else {
p_cb->aid_pwr_cfg[entry] = p_add->power_state;
}
} else {
- NFA_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"The AID entry is already in the database for different NFCEE "
"ID:0x%02x",
p_chk_cb->nfcee_id);
@@ -775,7 +1037,7 @@
len_needed = p_add->aid_len + 2; /* tag/len */
if ((len_needed + len) > NFA_EE_MAX_AID_CFG_LEN) {
- NFA_TRACE_ERROR3(
+ LOG(ERROR) << StringPrintf(
"Exceed capacity: (len_needed:%d + len:%d) > "
"NFA_EE_MAX_AID_CFG_LEN:%d",
len_needed, len, NFA_EE_MAX_AID_CFG_LEN);
@@ -784,7 +1046,7 @@
/* 4 = 1 (tag) + 1 (len) + 1(nfcee_id) + 1(power cfg) */
new_size = nfa_ee_total_lmrt_size() + 4 + p_add->aid_len;
if (new_size > NFC_GetLmrtSize()) {
- NFA_TRACE_ERROR1("Exceed LMRT size:%d", new_size);
+ LOG(ERROR) << StringPrintf("Exceed LMRT size:%d", new_size);
evt_data.status = NFA_STATUS_BUFFER_FULL;
} else {
/* add AID */
@@ -801,8 +1063,8 @@
p_cb->aid_len[p_cb->aid_entries++] = (uint8_t)(p - p_start);
}
} else {
- NFA_TRACE_ERROR1("Exceed NFA_EE_MAX_AID_ENTRIES:%d",
- NFA_EE_MAX_AID_ENTRIES);
+ LOG(ERROR) << StringPrintf("Exceed NFA_EE_MAX_AID_ENTRIES:%d",
+ NFA_EE_MAX_AID_ENTRIES);
evt_data.status = NFA_STATUS_BUFFER_FULL;
}
}
@@ -814,8 +1076,8 @@
nfa_ee_update_route_aid_size(p_cb);
nfa_ee_start_timer();
}
- NFA_TRACE_DEBUG2("status:%d ee_cfged:0x%02x ", evt_data.status,
- nfa_ee_cb.ee_cfged);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "status:%d ee_cfged:0x%02x ", evt_data.status, nfa_ee_cb.ee_cfged);
/* report the status of this operation */
nfa_ee_report_event(p_cb->p_ee_cback, NFA_EE_ADD_AID_EVT, &evt_data);
}
@@ -843,8 +1105,8 @@
p_cb = nfa_ee_find_aid_offset(p_data->rm_aid.aid_len, p_data->rm_aid.p_aid,
&offset, &entry);
if (p_cb && p_cb->aid_entries) {
- NFA_TRACE_DEBUG2("aid_rt_info[%d]: 0x%02x", entry,
- p_cb->aid_rt_info[entry]);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "aid_rt_info[%d]: 0x%02x", entry, p_cb->aid_rt_info[entry]);
/* mark routing and VS changed */
if (p_cb->aid_rt_info[entry] & NFA_EE_AE_ROUTE)
p_cb->ecb_flags |= NFA_EE_ECB_FLAGS_AID;
@@ -859,8 +1121,8 @@
rest_len = nfa_ee_find_total_aid_len(p_cb, entry + 1);
len = p_cb->aid_len[entry];
- NFA_TRACE_DEBUG2("nfa_ee_api_remove_aid len:%d, rest_len:%d", len,
- rest_len);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_ee_api_remove_aid len:%d, rest_len:%d", len, rest_len);
GKI_shiftup(&p_cb->aid_cfg[offset], &p_cb->aid_cfg[offset + len],
rest_len);
rest_len = p_cb->aid_entries - entry;
@@ -878,7 +1140,7 @@
/* report NFA_EE_REMOVE_AID_EVT to the callback associated the NFCEE */
p_cback = p_cb->p_ee_cback;
} else {
- NFA_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"nfa_ee_api_remove_aid The AID entry is not in the database");
evt_data.status = NFA_STATUS_INVALID_PARAM;
}
@@ -886,6 +1148,180 @@
}
/*******************************************************************************
+ **
+ ** Function nfa_ee_api_add_sys_code
+ **
+ ** Description Adds System Code routing configuration from user. When the
+ ** timer expires, the configuration collected in control block
+ ** is sent to NFCC
+ **
+ ** Returns void
+ **
+ *******************************************************************************/
+void nfa_ee_api_add_sys_code(tNFA_EE_MSG* p_data) {
+ tNFA_EE_CBACK_DATA evt_data = {0};
+ tNFA_EE_API_ADD_SYSCODE* p_add = &p_data->add_syscode;
+ tNFA_EE_ECB* p_cb = p_data->cfg_hdr.p_cb;
+
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "%s id:0x%x SC:0x%X ", __func__, p_add->nfcee_id, p_add->syscode);
+
+ int offset = 0, entry = 0;
+ tNFA_EE_ECB* p_chk_cb =
+ nfa_ee_find_sys_code_offset(p_add->syscode, &offset, &entry);
+
+ if (p_chk_cb) {
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "%s: The SC entry already registered "
+ "for this NFCEE id:0x%02x",
+ __func__, p_add->nfcee_id);
+
+ if (p_chk_cb == p_cb) {
+ p_cb->sys_code_rt_loc_vs_info[entry] |= NFA_EE_AE_ROUTE;
+ uint16_t new_size = nfa_ee_total_lmrt_size();
+ if (new_size > NFC_GetLmrtSize()) {
+ LOG(ERROR) << StringPrintf("Exceeded LMRT size:%d (add SYSCODE)",
+ new_size);
+ evt_data.status = NFA_STATUS_BUFFER_FULL;
+ p_cb->sys_code_rt_loc_vs_info[entry] &= ~NFA_EE_AE_ROUTE;
+ } else {
+ p_cb->sys_code_pwr_cfg[entry] = p_add->power_state;
+ }
+ } else {
+ LOG(ERROR) << StringPrintf(
+ "%s: SystemCode entry already registered for different "
+ "NFCEE id:0x%02x",
+ __func__, p_chk_cb->nfcee_id);
+ evt_data.status = NFA_STATUS_REJECTED;
+ }
+ } else {
+ /* Find the total length so far in sys_code_cfg */
+ int total_sc_len = nfa_all_ee_find_total_sys_code_len();
+ /* make sure the control block has enough room to hold this entry */
+ if ((NFA_EE_SYSTEM_CODE_LEN + total_sc_len) >
+ NFA_EE_MAX_SYSTEM_CODE_CFG_LEN) {
+ LOG(ERROR) << StringPrintf(
+ "Exceeded capacity: (NFA_EE_SYSTEM_CODE_LEN:%d + total_sc_len:%d) > "
+ "NFA_EE_MAX_SYSTEM_CODE_CFG_LEN:%d",
+ NFA_EE_SYSTEM_CODE_LEN, total_sc_len, NFA_EE_MAX_SYSTEM_CODE_CFG_LEN);
+ evt_data.status = NFA_STATUS_BUFFER_FULL;
+ } else if (p_cb->sys_code_cfg_entries < NFA_EE_MAX_SYSTEM_CODE_ENTRIES) {
+ /* 6 = 1 (tag) + 1 (len) + 1(nfcee_id) + 1(power cfg) + 2(system code)*/
+ uint16_t new_size =
+ nfa_ee_total_lmrt_size() + NFA_EE_SYSTEM_CODE_TLV_SIZE;
+ if (new_size > NFC_GetLmrtSize()) {
+ LOG(ERROR) << StringPrintf("Exceeded LMRT size:%d", new_size);
+ evt_data.status = NFA_STATUS_BUFFER_FULL;
+ } else {
+ /* add SC entry*/
+ uint32_t p_cb_sc_len = nfa_ee_find_total_sys_code_len(p_cb, 0);
+ p_cb->sys_code_pwr_cfg[p_cb->sys_code_cfg_entries] = p_add->power_state;
+ p_cb->sys_code_rt_loc[p_cb->sys_code_cfg_entries] = p_add->nfcee_id;
+ p_cb->sys_code_rt_loc_vs_info[p_cb->sys_code_cfg_entries] =
+ NFA_EE_AE_ROUTE;
+
+ uint8_t* p = p_cb->sys_code_cfg + p_cb_sc_len;
+ memcpy(p, &p_add->syscode, NFA_EE_SYSTEM_CODE_LEN);
+ p += NFA_EE_SYSTEM_CODE_LEN;
+
+ p_cb->sys_code_cfg_entries++;
+ }
+ } else {
+ LOG(ERROR) << StringPrintf("Exceeded NFA_EE_MAX_SYSTEM_CODE_ENTRIES:%d",
+ NFA_EE_MAX_SYSTEM_CODE_ENTRIES);
+ evt_data.status = NFA_STATUS_BUFFER_FULL;
+ }
+ }
+
+ if (evt_data.status == NFA_STATUS_OK) {
+ /* mark SC changed */
+ p_cb->ecb_flags |= NFA_EE_ECB_FLAGS_SYSCODE;
+ nfa_ee_cb.ee_cfged |= nfa_ee_ecb_to_mask(p_cb);
+ nfa_ee_update_route_sys_code_size(p_cb);
+ nfa_ee_start_timer();
+ }
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: status:%d ee_cfged:0x%02x ", __func__,
+ evt_data.status, nfa_ee_cb.ee_cfged);
+
+ /* report the status of this operation */
+ nfa_ee_report_event(p_cb->p_ee_cback, NFA_EE_ADD_SYSCODE_EVT, &evt_data);
+}
+
+/*******************************************************************************
+**
+** Function nfa_ee_api_remove_sys_code
+**
+** Description process remove an System Code routing configuration from
+** user start a 1 second timer. When the timer expires,
+** the configuration collected in control block is sent to NFCC
+**
+** Returns void
+**
+*******************************************************************************/
+void nfa_ee_api_remove_sys_code(tNFA_EE_MSG* p_data) {
+ tNFA_EE_CBACK_DATA evt_data = {0};
+ tNFA_EE_API_REMOVE_SYSCODE* p_remove = &p_data->rm_syscode;
+
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s SC:0x%x", __func__, p_remove->syscode);
+
+ int offset = 0, entry = 0;
+ tNFA_EE_ECB* p_cb =
+ nfa_ee_find_sys_code_offset(p_data->rm_syscode.syscode, &offset, &entry);
+
+ if (p_cb && p_cb->sys_code_cfg_entries) {
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("sys_code_rt_loc_vs_info[%d]: 0x%02x", entry,
+ p_cb->sys_code_rt_loc_vs_info[entry]);
+ /* mark routing and VS changed */
+ if (p_cb->sys_code_rt_loc_vs_info[entry] & NFA_EE_AE_ROUTE)
+ p_cb->ecb_flags |= NFA_EE_ECB_FLAGS_SYSCODE;
+
+ if (p_cb->sys_code_rt_loc_vs_info[entry] & NFA_EE_AE_VS)
+ p_cb->ecb_flags |= NFA_EE_ECB_FLAGS_VS;
+
+ /* remove the system code */
+ if ((entry + 1) < p_cb->sys_code_cfg_entries) {
+ /* not the last entry, move the SC entries in control block */
+ /* Find the total len from the next entry to the last one */
+ int total_len = nfa_ee_find_total_sys_code_len(p_cb, entry + 1);
+
+ int rm_len = NFA_EE_SYSTEM_CODE_LEN;
+
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ee_api_remove_sys_code: rm_len:%d, total_len:%d",
+ rm_len, total_len);
+
+ GKI_shiftup(&p_cb->sys_code_cfg[offset],
+ &p_cb->sys_code_cfg[offset + rm_len], total_len);
+
+ total_len = p_cb->sys_code_cfg_entries - entry;
+
+ GKI_shiftup(&p_cb->sys_code_pwr_cfg[entry],
+ &p_cb->sys_code_pwr_cfg[entry + 1], total_len);
+
+ GKI_shiftup(&p_cb->sys_code_rt_loc_vs_info[entry],
+ &p_cb->sys_code_rt_loc_vs_info[entry + 1], total_len);
+
+ GKI_shiftup(&p_cb->sys_code_rt_loc[entry],
+ &p_cb->sys_code_rt_loc[entry + 1], total_len);
+ }
+ /* else the last entry, just reduce the aid_entries by 1 */
+ p_cb->sys_code_cfg_entries--;
+ nfa_ee_cb.ee_cfged |= nfa_ee_ecb_to_mask(p_cb);
+ nfa_ee_update_route_sys_code_size(p_cb);
+ nfa_ee_start_timer();
+ } else {
+ LOG(ERROR) << StringPrintf(
+ "nfa_ee_api_remove_sys_code: The SC entry is not in the database");
+ evt_data.status = NFA_STATUS_INVALID_PARAM;
+ }
+ /* report the status of this operation */
+ nfa_ee_report_event(p_cb->p_ee_cback, NFA_EE_REMOVE_SYSCODE_EVT, &evt_data);
+}
+
+/*******************************************************************************
**
** Function nfa_ee_api_lmrt_size
**
@@ -894,13 +1330,14 @@
** Returns void
**
*******************************************************************************/
-void nfa_ee_api_lmrt_size(tNFA_EE_MSG* p_data) {
+void nfa_ee_api_lmrt_size(__attribute__((unused)) tNFA_EE_MSG* p_data) {
tNFA_EE_CBACK_DATA evt_data = {0};
uint16_t total_size = NFC_GetLmrtSize();
evt_data.size = total_size - nfa_ee_total_lmrt_size();
- NFA_TRACE_DEBUG2("nfa_ee_api_lmrt_size total size:%d remaining size:%d",
- total_size, evt_data.size);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ee_api_lmrt_size total size:%d remaining size:%d",
+ total_size, evt_data.size);
nfa_ee_report_event(NULL, NFA_EE_REMAINING_SIZE_EVT, &evt_data);
}
@@ -918,7 +1355,7 @@
tNFA_EE_CBACK_DATA evt_data;
if (nfa_ee_cb.ee_wait_evt & NFA_EE_WAIT_UPDATE_ALL) {
- NFA_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"nfa_ee_api_update_now still waiting for update complete "
"ee_wait_evt:0x%x wait_rsp:%d",
nfa_ee_cb.ee_wait_evt, nfa_ee_cb.wait_rsp);
@@ -996,12 +1433,16 @@
memcpy(p, p_data->send_data.p_data, p_pkt->len);
NFC_SendData(p_cb->conn_id, p_pkt);
} else {
+ tNFA_EE_CBACK_DATA nfa_ee_cback_data;
+ nfa_ee_cback_data.status = status;
nfa_ee_report_event(p_cb->p_ee_cback, NFA_EE_NO_MEM_ERR_EVT,
- (tNFA_EE_CBACK_DATA*)&status);
+ &nfa_ee_cback_data);
}
} else {
+ tNFA_EE_CBACK_DATA nfa_ee_cback_data;
+ nfa_ee_cback_data.status = status;
nfa_ee_report_event(p_cb->p_ee_cback, NFA_EE_NO_CB_ERR_EVT,
- (tNFA_EE_CBACK_DATA*)&status);
+ &nfa_ee_cback_data);
}
}
@@ -1039,8 +1480,8 @@
tNFA_EE_CBACK* p_cback;
tNFA_EE_CBACK_DATA evt_data = {0};
- NFA_TRACE_DEBUG3(
- "nfa_ee_report_disc_done() em_state:%d num_ee_expecting:%d "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "em_state:%d num_ee_expecting:%d "
"notify_enable_done:%d",
nfa_ee_cb.em_state, nfa_ee_cb.num_ee_expecting, notify_enable_done);
if (nfa_ee_cb.num_ee_expecting == 0) {
@@ -1066,6 +1507,9 @@
NFA_EeGetInfo(&evt_data.ee_discover.num_ee, evt_data.ee_discover.ee_info);
nfa_ee_report_event(p_cback, NFA_EE_DISCOVER_EVT, &evt_data);
}
+ if ((nfa_hci_cb.hci_state == NFA_HCI_STATE_EE_RECOVERY) &&
+ nfa_ee_cb.p_enable_cback)
+ (*nfa_ee_cb.p_enable_cback)(NFA_EE_RECOVERY_REDISCOVERED);
}
}
@@ -1119,9 +1563,9 @@
}
}
- NFA_TRACE_DEBUG3(
- "nfa_ee_remove_pending() cur_ee:%d, num_removed:%d first_removed:%d",
- nfa_ee_cb.cur_ee, num_removed, first_removed);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("cur_ee:%d, num_removed:%d first_removed:%d",
+ nfa_ee_cb.cur_ee, num_removed, first_removed);
if (num_removed && (first_removed != (nfa_ee_cb.cur_ee - num_removed))) {
/* if the removes ECB entried are not at the end, move the entries up */
p_cb_end = &nfa_ee_cb.ecb[nfa_ee_cb.cur_ee - 1];
@@ -1158,8 +1602,9 @@
uint8_t num_nfcee = p_evt->num_nfcee;
bool notify_enable_done = false;
- NFA_TRACE_DEBUG3("nfa_ee_nci_disc_rsp() em_state:%d cur_ee:%d, num_nfcee:%d",
- nfa_ee_cb.em_state, nfa_ee_cb.cur_ee, num_nfcee);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("em_state:%d cur_ee:%d, num_nfcee:%d", nfa_ee_cb.em_state,
+ nfa_ee_cb.cur_ee, num_nfcee);
switch (nfa_ee_cb.em_state) {
case NFA_EE_EM_STATE_INIT:
nfa_ee_cb.cur_ee = 0;
@@ -1206,14 +1651,15 @@
if (p_evt->status == NFC_STATUS_OK) {
nfa_ee_cb.num_ee_expecting = p_evt->num_nfcee;
if (nfa_ee_cb.num_ee_expecting > NFA_EE_MAX_EE_SUPPORTED) {
- NFA_TRACE_ERROR2("NFA-EE num_ee_expecting:%d > max:%d",
- nfa_ee_cb.num_ee_expecting, NFA_EE_MAX_EE_SUPPORTED);
+ LOG(ERROR) << StringPrintf("NFA-EE num_ee_expecting:%d > max:%d",
+ nfa_ee_cb.num_ee_expecting,
+ NFA_EE_MAX_EE_SUPPORTED);
}
}
nfa_ee_report_disc_done(notify_enable_done);
- NFA_TRACE_DEBUG3(
- "nfa_ee_nci_disc_rsp() em_state:%d cur_ee:%d num_ee_expecting:%d",
- nfa_ee_cb.em_state, nfa_ee_cb.cur_ee, nfa_ee_cb.num_ee_expecting);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "em_state:%d cur_ee:%d num_ee_expecting:%d", nfa_ee_cb.em_state,
+ nfa_ee_cb.cur_ee, nfa_ee_cb.num_ee_expecting);
}
/*******************************************************************************
@@ -1234,8 +1680,8 @@
tNFA_EE_INFO* p_info;
tNFA_EE_EM_STATE new_em_state = NFA_EE_EM_STATE_MAX;
- NFA_TRACE_DEBUG4(
- "nfa_ee_nci_disc_ntf() em_state:%d ee_flags:0x%x cur_ee:%d "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "em_state:%d ee_flags:0x%x cur_ee:%d "
"num_ee_expecting:%d",
nfa_ee_cb.em_state, nfa_ee_cb.ee_flags, nfa_ee_cb.cur_ee,
nfa_ee_cb.num_ee_expecting);
@@ -1244,7 +1690,7 @@
if ((nfa_ee_cb.num_ee_expecting == 0) &&
(nfa_ee_cb.p_ee_disc_cback != NULL)) {
/* Discovery triggered by API function */
- NFC_NfceeDiscover(false);
+ if (NFA_GetNCIVersion() != NCI_VERSION_2_0) NFC_NfceeDiscover(false);
}
}
switch (nfa_ee_cb.em_state) {
@@ -1275,8 +1721,9 @@
nfa_ee_cb.cur_ee++;
notify_new_ee = true;
} else {
- NFA_TRACE_DEBUG3("cur_ee:%d ecb_flags=0x%02x ee_status=0x%x",
- nfa_ee_cb.cur_ee, p_cb->ecb_flags, p_cb->ee_status);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("cur_ee:%d ecb_flags=0x%02x ee_status=0x%x",
+ nfa_ee_cb.cur_ee, p_cb->ecb_flags, p_cb->ee_status);
}
break;
@@ -1300,7 +1747,8 @@
}
break;
}
- NFA_TRACE_DEBUG1("nfa_ee_nci_disc_ntf cur_ee:%d", nfa_ee_cb.cur_ee);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ee_nci_disc_ntf cur_ee:%d", nfa_ee_cb.cur_ee);
if (p_cb) {
p_cb->nfcee_id = p_ee->nfcee_id;
@@ -1309,7 +1757,8 @@
memcpy(p_cb->ee_interface, p_ee->ee_interface, p_ee->num_interface);
p_cb->num_tlvs = p_ee->num_tlvs;
memcpy(p_cb->ee_tlv, p_ee->ee_tlv, p_ee->num_tlvs * sizeof(tNFA_EE_TLV));
-
+ if (NFA_GetNCIVersion() == NCI_VERSION_2_0)
+ p_cb->ee_power_supply_status = p_ee->nfcee_power_ctrl;
if (nfa_ee_cb.em_state == NFA_EE_EM_STATE_RESTORING) {
/* NCI spec says: An NFCEE_DISCOVER_NTF that contains a Protocol type of
* "HCI Access"
@@ -1337,13 +1786,16 @@
memcpy(p_info->ee_interface, p_cb->ee_interface, p_cb->num_interface);
memcpy(p_info->ee_tlv, p_cb->ee_tlv,
p_cb->num_tlvs * sizeof(tNFA_EE_TLV));
+ if (NFA_GetNCIVersion() == NCI_VERSION_2_0)
+ p_info->ee_power_supply_status = p_cb->ee_power_supply_status;
nfa_ee_report_event(NULL, NFA_EE_NEW_EE_EVT, &evt_data);
}
} else
nfa_ee_report_disc_done(notify_enable_done);
if (p_cb->ecb_flags & NFA_EE_ECB_FLAGS_ORDER) {
- NFA_TRACE_DEBUG0("NFA_EE_ECB_FLAGS_ORDER");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_EE_ECB_FLAGS_ORDER");
p_cb->ecb_flags &= ~NFA_EE_ECB_FLAGS_ORDER;
nfa_ee_report_discover_req_evt();
}
@@ -1359,7 +1811,30 @@
if (nfa_ee_cb.discv_timer.in_use) {
nfa_sys_stop_timer(&nfa_ee_cb.discv_timer);
p_data->hdr.event = NFA_EE_DISCV_TIMEOUT_EVT;
- nfa_ee_evt_hdlr((NFC_HDR*)p_data);
+ nfa_ee_evt_hdlr(&p_data->hdr);
+ }
+ }
+}
+
+/*******************************************************************************
+**
+** Function nfa_ee_nci_nfcee_status_ntf
+**
+** Description Process the callback for NFCEE status notification
+**
+** Returns void
+**
+*******************************************************************************/
+void nfa_ee_nci_nfcee_status_ntf(tNFA_EE_MSG* p_data) {
+ if (p_data != NULL) {
+ tNFC_NFCEE_STATUS_REVT* p_ee_data = p_data->nfcee_status_ntf.p_data;
+ if ((NFA_GetNCIVersion() == NCI_VERSION_2_0) &&
+ (p_ee_data->nfcee_status == NFC_NFCEE_STATUS_UNRECOVERABLE_ERROR)) {
+ tNFA_EE_ECB* p_cb = nfa_ee_find_ecb(p_ee_data->nfcee_id);
+ if (p_cb && nfa_ee_cb.p_enable_cback) {
+ (*nfa_ee_cb.p_enable_cback)(NFA_EE_RECOVERY_INIT);
+ NFC_NfceeDiscover(true);
+ }
}
}
}
@@ -1392,7 +1867,7 @@
}
}
- NFA_TRACE_DEBUG2(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_ee_check_restore_complete nfa_ee_cb.ee_cfg_sts:0x%02x "
"proc_complete:%d",
nfa_ee_cb.ee_cfg_sts, proc_complete);
@@ -1440,7 +1915,7 @@
p_evt_data->num_ee++;
p_info++;
- NFA_TRACE_DEBUG6(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"[%d] ee_handle:0x%x, listen protocol A:%d, B:%d, F:%d, BP:%d",
p_evt_data->num_ee, p_cb->nfcee_id, p_cb->la_protocol,
p_cb->lb_protocol, p_cb->lf_protocol, p_cb->lbp_protocol);
@@ -1459,20 +1934,19 @@
**
*******************************************************************************/
static void nfa_ee_report_discover_req_evt(void) {
- tNFA_EE_DISCOVER_REQ evt_data;
-
if (nfa_ee_cb.p_enable_cback)
(*nfa_ee_cb.p_enable_cback)(NFA_EE_DISC_STS_REQ);
/* if this is restoring NFCC */
if (!nfa_dm_is_active()) {
- NFA_TRACE_DEBUG0("nfa_ee_report_discover_req_evt DM is not active");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ee_report_discover_req_evt DM is not active");
return;
}
- nfa_ee_build_discover_req_evt(&evt_data);
- nfa_ee_report_event(NULL, NFA_EE_DISCOVER_REQ_EVT,
- (tNFA_EE_CBACK_DATA*)&evt_data);
+ tNFA_EE_CBACK_DATA nfa_ee_cback_data;
+ nfa_ee_build_discover_req_evt(&nfa_ee_cback_data.discover_req);
+ nfa_ee_report_event(NULL, NFA_EE_DISCOVER_REQ_EVT, &nfa_ee_cback_data);
}
/*******************************************************************************
@@ -1489,19 +1963,22 @@
tNFA_EE_MODE_SET mode_set;
tNFC_NFCEE_MODE_SET_REVT* p_rsp = p_data->mode_set_rsp.p_data;
- NFA_TRACE_DEBUG2("nfa_ee_nci_mode_set_rsp() handle:0x%02x mode:%d",
- p_rsp->nfcee_id, p_rsp->mode);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "%s handle:0x%02x mode:%d", __func__, p_rsp->nfcee_id, p_rsp->mode);
p_cb = nfa_ee_find_ecb(p_rsp->nfcee_id);
if (p_cb == NULL) {
- NFA_TRACE_ERROR1(
- "nfa_ee_nci_mode_set_rsp() Can not find cb for handle:0x%02x",
- p_rsp->nfcee_id);
+ LOG(ERROR) << StringPrintf("%s Can not find cb for handle:0x%02x", __func__,
+ p_rsp->nfcee_id);
return;
}
- /* update routing table and vs on mode change */
- nfa_ee_start_timer();
-
+ /* Do not update routing table in EE_RECOVERY state */
+ if (nfa_hci_cb.hci_state != NFA_HCI_STATE_EE_RECOVERY) {
+ /* Start routing table update debounce timer */
+ nfa_ee_start_timer();
+ }
+ LOG(ERROR) << StringPrintf("%s p_rsp->status:0x%02x", __func__,
+ p_rsp->status);
if (p_rsp->status == NFA_STATUS_OK) {
if (p_rsp->mode == NFA_EE_MD_ACTIVATE) {
p_cb->ee_status = NFC_NFCEE_STATUS_ACTIVE;
@@ -1514,7 +1991,8 @@
* configuration */
nfa_ee_cb.ee_cfged &= ~nfa_ee_ecb_to_mask(p_cb);
nfa_ee_cb.ee_cfg_sts |= NFA_EE_STS_CHANGED_ROUTING;
- NFA_TRACE_DEBUG0("deactivating/still configured. Force update");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("deactivating/still configured. Force update");
}
p_cb->tech_switch_on = p_cb->tech_switch_off = p_cb->tech_battery_off = 0;
p_cb->proto_switch_on = p_cb->proto_switch_off = p_cb->proto_battery_off =
@@ -1522,10 +2000,12 @@
p_cb->aid_entries = 0;
p_cb->ee_status = NFC_NFCEE_STATUS_INACTIVE;
}
+ } else if (p_rsp->mode == NFA_EE_MD_ACTIVATE) {
+ p_cb->ee_status = NFC_NFCEE_STATUS_REMOVED;
}
- NFA_TRACE_DEBUG4("status:%d ecb_flags :0x%02x ee_cfged:0x%02x ee_status:%d",
- p_rsp->status, p_cb->ecb_flags, nfa_ee_cb.ee_cfged,
- p_cb->ee_status);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "status:%d ecb_flags :0x%02x ee_cfged:0x%02x ee_status:%d",
+ p_rsp->status, p_cb->ecb_flags, nfa_ee_cb.ee_cfged, p_cb->ee_status);
if (p_cb->ecb_flags & NFA_EE_ECB_FLAGS_RESTORE) {
if (p_cb->conn_st == NFA_EE_CONN_ST_CONN) {
/* NFA_HCI module handles restoring configurations for HCI access */
@@ -1542,8 +2022,10 @@
mode_set.ee_handle = (tNFA_HANDLE)p_rsp->nfcee_id | NFA_HANDLE_GROUP_EE;
mode_set.ee_status = p_cb->ee_status;
+ tNFA_EE_CBACK_DATA nfa_ee_cback_data;
+ nfa_ee_cback_data.mode_set = mode_set;
nfa_ee_report_event(p_cb->p_ee_cback, NFA_EE_MODE_SET_EVT,
- (tNFA_EE_CBACK_DATA*)&mode_set);
+ &nfa_ee_cback_data);
if ((p_cb->ee_status == NFC_NFCEE_STATUS_INACTIVE) ||
(p_cb->ee_status == NFC_NFCEE_STATUS_ACTIVE)) {
@@ -1551,6 +2033,8 @@
nfa_ee_report_discover_req_evt();
}
}
+ if (nfa_ee_cb.p_enable_cback)
+ (*nfa_ee_cb.p_enable_cback)(NFA_EE_MODE_SET_COMPLETE);
}
/*******************************************************************************
@@ -1565,8 +2049,9 @@
void nfa_ee_report_update_evt(void) {
tNFA_EE_CBACK_DATA evt_data;
- NFA_TRACE_DEBUG2("nfa_ee_report_update_evt ee_wait_evt:0x%x wait_rsp:%d",
- nfa_ee_cb.ee_wait_evt, nfa_ee_cb.wait_rsp);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ee_report_update_evt ee_wait_evt:0x%x wait_rsp:%d",
+ nfa_ee_cb.ee_wait_evt, nfa_ee_cb.wait_rsp);
if (nfa_ee_cb.wait_rsp == 0) {
nfa_ee_cb.ee_wait_evt &= ~NFA_EE_WAIT_UPDATE_RSP;
@@ -1591,8 +2076,9 @@
void nfa_ee_nci_wait_rsp(tNFA_EE_MSG* p_data) {
tNFA_EE_NCI_WAIT_RSP* p_rsp = &p_data->wait_rsp;
- NFA_TRACE_DEBUG2("nfa_ee_nci_wait_rsp() ee_wait_evt:0x%x wait_rsp:%d",
- nfa_ee_cb.ee_wait_evt, nfa_ee_cb.wait_rsp);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("ee_wait_evt:0x%x wait_rsp:%d", nfa_ee_cb.ee_wait_evt,
+ nfa_ee_cb.wait_rsp);
if (nfa_ee_cb.wait_rsp) {
if (p_rsp->opcode == NCI_MSG_RF_SET_ROUTING) nfa_ee_cb.wait_rsp--;
}
@@ -1698,7 +2184,9 @@
evt_data.trigger = p_cbk->act_data.trigger;
memcpy(&(evt_data.param), &(p_cbk->act_data.param),
sizeof(tNFA_EE_ACTION_PARAM));
- nfa_ee_report_event(NULL, NFA_EE_ACTION_EVT, (tNFA_EE_CBACK_DATA*)&evt_data);
+ tNFA_EE_CBACK_DATA nfa_ee_cback_data;
+ nfa_ee_cback_data.action = evt_data;
+ nfa_ee_report_event(NULL, NFA_EE_ACTION_EVT, &nfa_ee_cback_data);
}
/*******************************************************************************
@@ -1717,23 +2205,23 @@
uint8_t report_ntf = 0;
uint8_t xx;
- NFA_TRACE_DEBUG2("nfa_ee_nci_disc_req_ntf () num_info: %d cur_ee:%d",
- p_cbk->num_info, nfa_ee_cb.cur_ee);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "num_info: %d cur_ee:%d", p_cbk->num_info, nfa_ee_cb.cur_ee);
for (xx = 0; xx < p_cbk->num_info; xx++) {
ee_handle = NFA_HANDLE_GROUP_EE | p_cbk->info[xx].nfcee_id;
p_cb = nfa_ee_find_ecb(p_cbk->info[xx].nfcee_id);
if (!p_cb) {
- NFA_TRACE_DEBUG1("Cannot find cb for NFCEE: 0x%x",
- p_cbk->info[xx].nfcee_id);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Cannot find cb for NFCEE: 0x%x", p_cbk->info[xx].nfcee_id);
p_cb = nfa_ee_find_ecb(NFA_EE_INVALID);
if (p_cb) {
p_cb->nfcee_id = p_cbk->info[xx].nfcee_id;
p_cb->ecb_flags |= NFA_EE_ECB_FLAGS_ORDER;
} else {
- NFA_TRACE_ERROR1("Cannot allocate cb for NFCEE: 0x%x",
- p_cbk->info[xx].nfcee_id);
+ LOG(ERROR) << StringPrintf("Cannot allocate cb for NFCEE: 0x%x",
+ p_cbk->info[xx].nfcee_id);
continue;
}
} else {
@@ -1752,7 +2240,7 @@
NFC_DISCOVERY_TYPE_LISTEN_B_PRIME) {
p_cb->lbp_protocol = p_cbk->info[xx].protocol;
}
- NFA_TRACE_DEBUG6(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfcee_id=0x%x ee_status=0x%x ecb_flags=0x%x la_protocol=0x%x "
"la_protocol=0x%x la_protocol=0x%x",
p_cb->nfcee_id, p_cb->ee_status, p_cb->ecb_flags, p_cb->la_protocol,
@@ -1792,6 +2280,8 @@
if ((NFA_HANDLE_GROUP_MASK & nfcee_id) == NFA_HANDLE_GROUP_EE)
nfcee_id &= NFA_HANDLE_MASK;
+ if (nfcee_id == NFC_DH_ID) return true;
+
/* compose output */
for (xx = 0; xx < nfa_ee_cb.cur_ee; xx++, p_cb++) {
if ((tNFA_HANDLE)p_cb->nfcee_id == nfcee_id) {
@@ -1822,7 +2312,7 @@
NFA_TECHNOLOGY_MASK_A, NFA_TECHNOLOGY_MASK_B, NFA_TECHNOLOGY_MASK_F,
NFA_TECHNOLOGY_MASK_B_PRIME};
- NFA_TRACE_DEBUG1("nfa_ee_get_tech_route(): %d", power_state);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%d", power_state);
for (xx = 0; xx < NFA_EE_MAX_TECH_ROUTE; xx++) {
p_handles[xx] = NFC_DH_ID;
@@ -1846,8 +2336,9 @@
}
}
}
- NFA_TRACE_DEBUG4("0x%x, 0x%x, 0x%x, 0x%x", p_handles[0], p_handles[1],
- p_handles[2], p_handles[3]);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("0x%x, 0x%x, 0x%x, 0x%x", p_handles[0], p_handles[1],
+ p_handles[2], p_handles[3]);
}
/*******************************************************************************
@@ -1866,7 +2357,6 @@
uint8_t max_tlv = (uint8_t)((*p_max_len > NFA_EE_ROUT_MAX_TLV_SIZE)
? NFA_EE_ROUT_MAX_TLV_SIZE
: *p_max_len);
- tNFA_STATUS status = NFA_STATUS_OK;
if (new_size + *p_cur_offset > max_tlv) {
if (NFC_SetRouting(true, *p, *p_cur_offset, p + 1) == NFA_STATUS_OK) {
@@ -1886,184 +2376,6 @@
/*******************************************************************************
**
-** Function nfa_ee_route_add_one_ecb
-**
-** Description Add the routing entries for one NFCEE/DH
-**
-** Returns NFA_STATUS_OK, if ok to continue
-**
-*******************************************************************************/
-tNFA_STATUS nfa_ee_route_add_one_ecb(tNFA_EE_ECB* p_cb, int* p_max_len,
- bool more, uint8_t* ps,
- int* p_cur_offset) {
- uint8_t *p, *pa;
- uint16_t tlv_size;
- uint8_t num_tlv, len;
- int xx;
- int start_offset;
- uint8_t power_cfg = 0;
- uint8_t* pp = ps + *p_cur_offset;
- uint8_t entry_size;
- uint8_t max_tlv;
- uint8_t* p_start;
- uint8_t new_size;
- tNFA_STATUS status = NFA_STATUS_OK;
-
- nfa_ee_check_set_routing(p_cb->size_mask, p_max_len, ps, p_cur_offset);
- max_tlv = (uint8_t)((*p_max_len > NFA_EE_ROUT_MAX_TLV_SIZE)
- ? NFA_EE_ROUT_MAX_TLV_SIZE
- : *p_max_len);
- /* use the first byte of the buffer (ps) to keep the num_tlv */
- num_tlv = *ps;
- NFA_TRACE_DEBUG5(
- "nfa_ee_route_add_one_ecb max_len:%d, max_tlv:%d, cur_offset:%d, "
- "more:%d, num_tlv:%d",
- *p_max_len, max_tlv, *p_cur_offset, more, num_tlv);
- pp = ps + 1 + *p_cur_offset;
- p = pp;
- tlv_size = (uint8_t)*p_cur_offset;
- /* add the Technology based routing */
- for (xx = 0; xx < NFA_EE_NUM_TECH; xx++) {
- power_cfg = 0;
- if (p_cb->tech_switch_on & nfa_ee_tech_mask_list[xx])
- power_cfg |= NCI_ROUTE_PWR_STATE_ON;
- if (p_cb->tech_switch_off & nfa_ee_tech_mask_list[xx])
- power_cfg |= NCI_ROUTE_PWR_STATE_SWITCH_OFF;
- if (p_cb->tech_battery_off & nfa_ee_tech_mask_list[xx])
- power_cfg |= NCI_ROUTE_PWR_STATE_BATT_OFF;
- if (power_cfg) {
- *pp++ = NFC_ROUTE_TAG_TECH;
- *pp++ = 3;
- *pp++ = p_cb->nfcee_id;
- *pp++ = power_cfg;
- *pp++ = nfa_ee_tech_list[xx];
- num_tlv++;
- if (power_cfg != NCI_ROUTE_PWR_STATE_ON)
- nfa_ee_cb.ee_cfged |= NFA_EE_CFGED_OFF_ROUTING;
- }
- }
-
- /* add the Protocol based routing */
- for (xx = 0; xx < NFA_EE_NUM_PROTO; xx++) {
- power_cfg = 0;
- if (p_cb->proto_switch_on & nfa_ee_proto_mask_list[xx])
- power_cfg |= NCI_ROUTE_PWR_STATE_ON;
- if (p_cb->proto_switch_off & nfa_ee_proto_mask_list[xx])
- power_cfg |= NCI_ROUTE_PWR_STATE_SWITCH_OFF;
- if (p_cb->proto_battery_off & nfa_ee_proto_mask_list[xx])
- power_cfg |= NCI_ROUTE_PWR_STATE_BATT_OFF;
- if (power_cfg) {
- *pp++ = NFC_ROUTE_TAG_PROTO;
- *pp++ = 3;
- *pp++ = p_cb->nfcee_id;
- *pp++ = power_cfg;
- *pp++ = nfa_ee_proto_list[xx];
- num_tlv++;
- if (power_cfg != NCI_ROUTE_PWR_STATE_ON)
- nfa_ee_cb.ee_cfged |= NFA_EE_CFGED_OFF_ROUTING;
- }
- }
-
- /* add NFC-DEP routing to HOST */
- if (p_cb->nfcee_id == NFC_DH_ID) {
- *pp++ = NFC_ROUTE_TAG_PROTO;
- *pp++ = 3;
- *pp++ = NFC_DH_ID;
- *pp++ = NCI_ROUTE_PWR_STATE_ON;
- *pp++ = NFC_PROTOCOL_NFC_DEP;
- num_tlv++;
- }
-
- /* update the num_tlv and current offset */
- entry_size = (uint8_t)(pp - p);
- *p_cur_offset += entry_size;
- *ps = num_tlv;
- /* add the AID routing */
- if (p_cb->aid_entries) {
- start_offset = 0;
- for (xx = 0; xx < p_cb->aid_entries; xx++) {
- /* rememebr the beginning of this AID routing entry, just in case we need
- * to put it in next command */
- p_start = pp;
- /* add one AID entry */
- if (p_cb->aid_rt_info[xx] & NFA_EE_AE_ROUTE) {
- num_tlv++;
- pa = &p_cb->aid_cfg[start_offset];
- pa++; /* EMV tag */
- len = *pa++; /* aid_len */
- *pp++ = NFC_ROUTE_TAG_AID;
- *pp++ = len + 2;
- *pp++ = p_cb->nfcee_id;
- *pp++ = p_cb->aid_pwr_cfg[xx];
- /* copy the AID */
- memcpy(pp, pa, len);
- pp += len;
- }
- start_offset += p_cb->aid_len[xx];
- new_size = (uint8_t)(pp - p_start);
- nfa_ee_check_set_routing(new_size, p_max_len, ps, p_cur_offset);
- if (*ps == 0) {
- /* just sent routing command, update local */
- *ps = 1;
- num_tlv = *ps;
- *p_cur_offset = new_size;
- pp = ps + 1;
- p = pp;
- tlv_size = (uint8_t)*p_cur_offset;
- max_tlv = (uint8_t)((*p_max_len > NFA_EE_ROUT_MAX_TLV_SIZE)
- ? NFA_EE_ROUT_MAX_TLV_SIZE
- : *p_max_len);
- memcpy(p, p_start, new_size);
- pp += new_size;
- } else {
- /* add the new entry */
- *ps = num_tlv;
- *p_cur_offset += new_size;
- }
- }
- }
-
- tlv_size = nfa_ee_total_lmrt_size();
- if (tlv_size) {
- nfa_ee_cb.ee_cfged |= nfa_ee_ecb_to_mask(p_cb);
- }
- if (p_cb->ecb_flags & NFA_EE_ECB_FLAGS_ROUTING) {
- nfa_ee_cb.ee_cfg_sts |= NFA_EE_STS_CHANGED_ROUTING;
- }
- NFA_TRACE_DEBUG2("ee_cfg_sts:0x%02x lmrt_size:%d", nfa_ee_cb.ee_cfg_sts,
- tlv_size);
-
- if (more == false) {
- /* last entry. update routing table now */
- if (nfa_ee_cb.ee_cfg_sts & NFA_EE_STS_CHANGED_ROUTING) {
- if (tlv_size) {
- nfa_ee_cb.ee_cfg_sts |= NFA_EE_STS_PREV_ROUTING;
- } else {
- nfa_ee_cb.ee_cfg_sts &= ~NFA_EE_STS_PREV_ROUTING;
- }
- NFA_TRACE_DEBUG2(
- "nfa_ee_route_add_one_ecb: set routing num_tlv:%d tlv_size:%d",
- num_tlv, tlv_size);
- if (NFC_SetRouting(more, num_tlv, (uint8_t)(*p_cur_offset), ps + 1) ==
- NFA_STATUS_OK) {
- nfa_ee_cb.wait_rsp++;
- }
- } else if (nfa_ee_cb.ee_cfg_sts & NFA_EE_STS_PREV_ROUTING) {
- if (tlv_size == 0) {
- nfa_ee_cb.ee_cfg_sts &= ~NFA_EE_STS_PREV_ROUTING;
- /* indicated routing is configured to NFCC */
- nfa_ee_cb.ee_cfg_sts |= NFA_EE_STS_CHANGED_ROUTING;
- if (NFC_SetRouting(more, 0, 0, ps + 1) == NFA_STATUS_OK) {
- nfa_ee_cb.wait_rsp++;
- }
- }
- }
- }
-
- return status;
-}
-/*******************************************************************************
-**
** Function nfa_ee_route_add_one_ecb_order
**
** Description Add the routing entries for NFCEE/DH in order defined
@@ -2078,7 +2390,7 @@
/* use the first byte of the buffer (ps) to keep the num_tlv */
uint8_t num_tlv = *ps;
- NFA_TRACE_DEBUG6(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"%s - max_len:%d, cur_offset:%d, more:%d, num_tlv:%d,rout_type:- %d",
__func__, *p_max_len, *p_cur_offset, more, num_tlv, rout_type);
uint8_t* pp = ps + 1 + *p_cur_offset;
@@ -2096,8 +2408,13 @@
case NCI_ROUTE_ORDER_AID: {
nfa_ee_add_aid_route_to_ecb(p_cb, pp, p, ps, p_cur_offset, p_max_len);
} break;
+ case NCI_ROUTE_ORDER_SYS_CODE: {
+ nfa_ee_add_sys_code_route_to_ecb(p_cb, pp, p, ps, p_cur_offset,
+ p_max_len);
+ } break;
default: {
- NFA_TRACE_DEBUG2("%s - Route type - NA:- %d", __func__, rout_type);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s - Route type - NA:- %d", __func__, rout_type);
}
}
@@ -2111,8 +2428,8 @@
if (p_cb->ecb_flags & NFA_EE_ECB_FLAGS_ROUTING) {
nfa_ee_cb.ee_cfg_sts |= NFA_EE_STS_CHANGED_ROUTING;
}
- NFA_TRACE_DEBUG2("ee_cfg_sts:0x%02x lmrt_size:%d", nfa_ee_cb.ee_cfg_sts,
- tlv_size);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "ee_cfg_sts:0x%02x lmrt_size:%d", nfa_ee_cb.ee_cfg_sts, tlv_size);
if (more == false) {
/* last entry. update routing table now */
@@ -2122,8 +2439,9 @@
} else {
nfa_ee_cb.ee_cfg_sts &= ~NFA_EE_STS_PREV_ROUTING;
}
- NFA_TRACE_DEBUG3("%s : set routing num_tlv:%d tlv_size:%d", __func__,
- num_tlv, tlv_size);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s : set routing num_tlv:%d tlv_size:%d", __func__,
+ num_tlv, tlv_size);
if (NFC_SetRouting(more, num_tlv, (uint8_t)(*p_cur_offset), ps + 1) ==
NFA_STATUS_OK) {
nfa_ee_cb.wait_rsp++;
@@ -2177,8 +2495,9 @@
tNFA_EE_ECB* p_cb;
uint8_t mask;
- NFA_TRACE_DEBUG2("nfa_ee_need_recfg() ee_cfged: 0x%02x ee_cfg_sts: 0x%02x",
- nfa_ee_cb.ee_cfged, nfa_ee_cb.ee_cfg_sts);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("ee_cfged: 0x%02x ee_cfg_sts: 0x%02x", nfa_ee_cb.ee_cfged,
+ nfa_ee_cb.ee_cfg_sts);
/* if no routing/vs is configured, do not need to send the info to NFCC */
if (nfa_ee_cb.ee_cfged || nfa_ee_cb.ee_cfg_sts) {
if (nfa_ee_cb.ee_cfg_sts & NFA_EE_STS_CHANGED) {
@@ -2187,8 +2506,8 @@
p_cb = &nfa_ee_cb.ecb[NFA_EE_CB_4_DH];
mask = 1 << NFA_EE_CB_4_DH;
for (xx = 0; xx <= nfa_ee_cb.cur_ee; xx++) {
- NFA_TRACE_DEBUG3("%d: ecb_flags : 0x%02x, mask: 0x%02x", xx,
- p_cb->ecb_flags, mask);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "%d: ecb_flags : 0x%02x, mask: 0x%02x", xx, p_cb->ecb_flags, mask);
if ((p_cb->ecb_flags) && (nfa_ee_cb.ee_cfged & mask)) {
needed = true;
break;
@@ -2213,10 +2532,10 @@
** Returns void
**
*******************************************************************************/
-void nfa_ee_rout_timeout(tNFA_EE_MSG* p_data) {
+void nfa_ee_rout_timeout(__attribute__((unused)) tNFA_EE_MSG* p_data) {
uint8_t ee_cfged = nfa_ee_cb.ee_cfged;
- NFA_TRACE_DEBUG0("nfa_ee_rout_timeout()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfa_ee_need_recfg()) {
/* discovery is not started */
nfa_ee_update_rout();
@@ -2243,8 +2562,8 @@
** Returns void
**
*******************************************************************************/
-void nfa_ee_discv_timeout(tNFA_EE_MSG* p_data) {
- NFC_NfceeDiscover(false);
+void nfa_ee_discv_timeout(__attribute__((unused)) tNFA_EE_MSG* p_data) {
+ if (NFA_GetNCIVersion() != NCI_VERSION_2_0) NFC_NfceeDiscover(false);
if (nfa_ee_cb.p_enable_cback)
(*nfa_ee_cb.p_enable_cback)(NFA_EE_DISC_STS_OFF);
}
@@ -2259,7 +2578,7 @@
** Returns void
**
*******************************************************************************/
-void nfa_ee_lmrt_to_nfcc(tNFA_EE_MSG* p_data) {
+void nfa_ee_lmrt_to_nfcc(__attribute__((unused)) tNFA_EE_MSG* p_data) {
int xx;
tNFA_EE_ECB* p_cb;
uint8_t* p = NULL;
@@ -2274,9 +2593,10 @@
/* update routing table: DH and the activated NFCEEs */
p = (uint8_t*)GKI_getbuf(NFA_EE_ROUT_BUF_SIZE);
if (p == NULL) {
- NFA_TRACE_ERROR0("nfa_ee_lmrt_to_nfcc() no buffer to send routing info.");
- nfa_ee_report_event(NULL, NFA_EE_NO_MEM_ERR_EVT,
- (tNFA_EE_CBACK_DATA*)&status);
+ LOG(ERROR) << StringPrintf("no buffer to send routing info.");
+ tNFA_EE_CBACK_DATA nfa_ee_cback_data;
+ nfa_ee_cback_data.status = status;
+ nfa_ee_report_event(NULL, NFA_EE_NO_MEM_ERR_EVT, &nfa_ee_cback_data);
return;
}
@@ -2286,7 +2606,8 @@
if (p_cb->ee_status == NFC_NFCEE_STATUS_ACTIVE) {
if (last_active == NFA_EE_INVALID) {
last_active = p_cb->nfcee_id;
- NFA_TRACE_DEBUG1("last_active: 0x%x", last_active);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("last_active: 0x%x", last_active);
}
}
}
@@ -2304,16 +2625,19 @@
for (int rt = NCI_ROUTE_ORDER_AID; rt <= NCI_ROUTE_ORDER_TECHNOLOGY; rt++) {
/* add the routing entries for NFCEEs */
p_cb = &nfa_ee_cb.ecb[0];
+
for (xx = 0; (xx < nfa_ee_cb.cur_ee) && check; xx++, p_cb++) {
if (p_cb->ee_status == NFC_NFCEE_STATUS_ACTIVE) {
- NFA_TRACE_DEBUG1("%s --add the routing for NFCEEs!!", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s --add the routing for NFCEEs!!", __func__);
nfa_ee_route_add_one_ecb_by_route_order(p_cb, rt, &max_len, more, p,
&cur_offset);
}
}
if (rt == NCI_ROUTE_ORDER_TECHNOLOGY) more = false;
/* add the routing entries for DH */
- NFA_TRACE_DEBUG1("%s --add the routing for DH!!", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s --add the routing for DH!!", __func__);
nfa_ee_route_add_one_ecb_by_route_order(&nfa_ee_cb.ecb[NFA_EE_CB_4_DH], rt,
&max_len, more, p, &cur_offset);
}
@@ -2335,14 +2659,14 @@
int xx;
tNFA_EE_ECB* p_cb;
uint8_t mask;
- NFC_HDR msg;
+ tNFA_EE_MSG nfa_ee_msg;
- NFA_TRACE_DEBUG1("nfa_ee_update_rout ee_cfg_sts:0x%02x",
- nfa_ee_cb.ee_cfg_sts);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_ee_update_rout ee_cfg_sts:0x%02x", nfa_ee_cb.ee_cfg_sts);
/* use action function to send routing and VS configuration to NFCC */
- msg.event = NFA_EE_CFG_TO_NFCC_EVT;
- nfa_ee_evt_hdlr(&msg);
+ nfa_ee_msg.hdr.event = NFA_EE_CFG_TO_NFCC_EVT;
+ nfa_ee_evt_hdlr(&nfa_ee_msg.hdr);
/* all configuration is updated to NFCC, clear the status mask */
nfa_ee_cb.ee_cfg_sts &= NFA_EE_STS_PREV;
@@ -2353,11 +2677,13 @@
mask = (1 << xx);
if (p_cb->tech_switch_on | p_cb->tech_switch_off | p_cb->tech_battery_off |
p_cb->proto_switch_on | p_cb->proto_switch_off |
- p_cb->proto_battery_off | p_cb->aid_entries) {
+ p_cb->proto_battery_off | p_cb->aid_entries |
+ p_cb->sys_code_cfg_entries) {
/* this entry has routing configuration. mark it configured */
nfa_ee_cb.ee_cfged |= mask;
}
}
- NFA_TRACE_DEBUG2("nfa_ee_update_rout ee_cfg_sts:0x%02x ee_cfged:0x%02x",
- nfa_ee_cb.ee_cfg_sts, nfa_ee_cb.ee_cfged);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_ee_update_rout ee_cfg_sts:0x%02x ee_cfged:0x%02x",
+ nfa_ee_cb.ee_cfg_sts, nfa_ee_cb.ee_cfged);
}
diff --git a/src/nfa/ee/nfa_ee_api.c b/src/nfa/ee/nfa_ee_api.cc
similarity index 73%
rename from src/nfa/ee/nfa_ee_api.c
rename to src/nfa/ee/nfa_ee_api.cc
index a1290b7..af99a7d 100644
--- a/src/nfa/ee/nfa_ee_api.c
+++ b/src/nfa/ee/nfa_ee_api.cc
@@ -21,11 +21,17 @@
* NFA interface to NFCEE - API functions
*
******************************************************************************/
-#include "nfa_ee_api.h"
-#include <string.h>
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_dm_int.h"
+#include "nfa_ee_api.h"
#include "nfa_ee_int.h"
-#include "nfa_sys_int.h"
+#include "nfc_int.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*****************************************************************************
** APIs
@@ -49,13 +55,14 @@
tNFA_EE_API_DISCOVER* p_msg;
tNFA_STATUS status = NFA_STATUS_FAILED;
- NFA_TRACE_API0("NFA_EeDiscover()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfa_ee_cb.em_state != NFA_EE_EM_STATE_INIT_DONE) {
- NFA_TRACE_ERROR1("NFA_EeDiscover bad em state: %d", nfa_ee_cb.em_state);
+ LOG(ERROR) << StringPrintf("NFA_EeDiscover bad em state: %d",
+ nfa_ee_cb.em_state);
status = NFA_STATUS_FAILED;
} else if ((nfa_ee_cb.p_ee_disc_cback != NULL) || (p_cback == NULL)) {
- NFA_TRACE_ERROR0("NFA_EeDiscover() in progress or NULL callback function");
+ LOG(ERROR) << StringPrintf("in progress or NULL callback function");
status = NFA_STATUS_INVALID_PARAM;
} else {
p_msg = (tNFA_EE_API_DISCOVER*)GKI_getbuf(sizeof(tNFA_EE_API_DISCOVER));
@@ -91,24 +98,27 @@
uint8_t max_ret;
uint8_t num_ret = 0;
- NFA_TRACE_DEBUG2("NFA_EeGetInfo em_state:%d cur_ee:%d", nfa_ee_cb.em_state,
- nfa_ee_cb.cur_ee);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_EeGetInfo em_state:%d cur_ee:%d", nfa_ee_cb.em_state,
+ nfa_ee_cb.cur_ee);
/* validate parameters */
if (p_info == NULL || p_num_nfcee == NULL) {
- NFA_TRACE_ERROR0("NFA_EeGetInfo bad parameter");
+ LOG(ERROR) << StringPrintf("NFA_EeGetInfo bad parameter");
return (NFA_STATUS_INVALID_PARAM);
}
max_ret = *p_num_nfcee;
*p_num_nfcee = 0;
if (nfa_ee_cb.em_state == NFA_EE_EM_STATE_INIT) {
- NFA_TRACE_ERROR1("NFA_EeGetInfo bad em state: %d", nfa_ee_cb.em_state);
+ LOG(ERROR) << StringPrintf("NFA_EeGetInfo bad em state: %d",
+ nfa_ee_cb.em_state);
return (NFA_STATUS_FAILED);
}
/* compose output */
for (xx = 0; (xx < ret) && (num_ret < max_ret); xx++, p_cb++) {
- NFA_TRACE_DEBUG4("xx:%d max_ret:%d, num_ret:%d ee_status:0x%x", xx, max_ret,
- num_ret, p_cb->ee_status);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("xx:%d max_ret:%d, num_ret:%d ee_status:0x%x", xx,
+ max_ret, num_ret, p_cb->ee_status);
if ((p_cb->ee_status & NFA_EE_STATUS_INT_MASK) ||
(p_cb->ee_status == NFA_EE_STATUS_REMOVED)) {
continue;
@@ -119,10 +129,11 @@
p_info->num_tlvs = p_cb->num_tlvs;
memcpy(p_info->ee_interface, p_cb->ee_interface, p_cb->num_interface);
memcpy(p_info->ee_tlv, p_cb->ee_tlv, p_cb->num_tlvs * sizeof(tNFA_EE_TLV));
+ p_info->ee_power_supply_status = p_cb->ee_power_supply_status;
p_info++;
num_ret++;
}
- NFA_TRACE_DEBUG1("num_ret:%d", num_ret);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("num_ret:%d", num_ret);
*p_num_nfcee = num_ret;
return (NFA_STATUS_OK);
}
@@ -143,10 +154,10 @@
tNFA_EE_API_REGISTER* p_msg;
tNFA_STATUS status = NFA_STATUS_FAILED;
- NFA_TRACE_API0("NFA_EeRegister()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (p_cback == NULL) {
- NFA_TRACE_ERROR0("NFA_EeRegister(): with NULL callback function");
+ LOG(ERROR) << StringPrintf("with NULL callback function");
status = NFA_STATUS_INVALID_PARAM;
} else {
p_msg = (tNFA_EE_API_REGISTER*)GKI_getbuf(sizeof(tNFA_EE_API_REGISTER));
@@ -188,7 +199,8 @@
}
}
- NFA_TRACE_API2("NFA_EeDeregister() %d, status:%d", index, status);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%d, status:%d", index, status);
if ((status != NFA_STATUS_INVALID_PARAM) &&
(p_msg = (tNFA_EE_API_DEREGISTER*)GKI_getbuf(
sizeof(tNFA_EE_API_DEREGISTER))) != NULL) {
@@ -232,11 +244,11 @@
break;
}
}
- NFA_TRACE_API2("NFA_EeModeSet(): handle:<0x%x>, mode:0x%02X", ee_handle,
- mode);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("handle:<0x%x>, mode:0x%02X", ee_handle, mode);
if (p_found == NULL) {
- NFA_TRACE_ERROR1("NFA_EeModeSet() invalid NFCEE:0x%04x", ee_handle);
+ LOG(ERROR) << StringPrintf("invalid NFCEE:0x%04x", ee_handle);
status = NFA_STATUS_INVALID_PARAM;
} else {
p_msg = (tNFA_EE_API_MODE_SET*)GKI_getbuf(sizeof(tNFA_EE_API_MODE_SET));
@@ -279,21 +291,25 @@
tNFA_STATUS NFA_EeSetDefaultTechRouting(
tNFA_HANDLE ee_handle, tNFA_TECHNOLOGY_MASK technologies_switch_on,
tNFA_TECHNOLOGY_MASK technologies_switch_off,
- tNFA_TECHNOLOGY_MASK technologies_battery_off) {
+ tNFA_TECHNOLOGY_MASK technologies_battery_off,
+ tNFA_TECHNOLOGY_MASK technologies_screen_lock,
+ tNFA_TECHNOLOGY_MASK technologies_screen_off,
+ tNFA_TECHNOLOGY_MASK technologies_screen_off_lock) {
tNFA_EE_API_SET_TECH_CFG* p_msg;
tNFA_STATUS status = NFA_STATUS_FAILED;
uint8_t nfcee_id = (uint8_t)(ee_handle & 0xFF);
tNFA_EE_ECB* p_cb;
- NFA_TRACE_API4(
- "NFA_EeSetDefaultTechRouting(): "
- "handle:<0x%x>technology_mask:<0x%x>/<0x%x>/<0x%x>",
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ ""
+ "handle:<0x%x>technology_mask:<0x%x>/<0x%x>/<0x%x><0x%x><0x%x><0x%x>",
ee_handle, technologies_switch_on, technologies_switch_off,
- technologies_battery_off);
+ technologies_battery_off, technologies_screen_lock,
+ technologies_screen_off, technologies_screen_off_lock);
p_cb = nfa_ee_find_ecb(nfcee_id);
if (p_cb == NULL) {
- NFA_TRACE_ERROR0("Bad ee_handle");
+ LOG(ERROR) << StringPrintf("Bad ee_handle");
status = NFA_STATUS_INVALID_PARAM;
} else {
p_msg =
@@ -305,6 +321,9 @@
p_msg->technologies_switch_on = technologies_switch_on;
p_msg->technologies_switch_off = technologies_switch_off;
p_msg->technologies_battery_off = technologies_battery_off;
+ p_msg->technologies_screen_lock = technologies_screen_lock;
+ p_msg->technologies_screen_off = technologies_screen_off;
+ p_msg->technologies_screen_off_lock = technologies_screen_off_lock;
nfa_sys_sendmsg(p_msg);
@@ -339,21 +358,24 @@
tNFA_STATUS NFA_EeSetDefaultProtoRouting(
tNFA_HANDLE ee_handle, tNFA_PROTOCOL_MASK protocols_switch_on,
tNFA_PROTOCOL_MASK protocols_switch_off,
- tNFA_PROTOCOL_MASK protocols_battery_off) {
+ tNFA_PROTOCOL_MASK protocols_battery_off,
+ tNFA_PROTOCOL_MASK protocols_screen_lock,
+ tNFA_PROTOCOL_MASK protocols_screen_off,
+ tNFA_PROTOCOL_MASK protocols_screen_off_lock) {
tNFA_EE_API_SET_PROTO_CFG* p_msg;
tNFA_STATUS status = NFA_STATUS_FAILED;
uint8_t nfcee_id = (uint8_t)(ee_handle & 0xFF);
tNFA_EE_ECB* p_cb;
- NFA_TRACE_API4(
- "NFA_EeSetDefaultProtoRouting(): "
- "handle:<0x%x>protocol_mask:<0x%x>/<0x%x>/<0x%x>",
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "handle:<0x%x>protocol_mask:<0x%x>/<0x%x>/<0x%x><0x%x><0x%x><0x%x>",
ee_handle, protocols_switch_on, protocols_switch_off,
- protocols_battery_off);
+ protocols_battery_off, protocols_screen_lock, protocols_screen_off,
+ protocols_screen_off_lock);
p_cb = nfa_ee_find_ecb(nfcee_id);
if (p_cb == NULL) {
- NFA_TRACE_ERROR0("Bad ee_handle");
+ LOG(ERROR) << StringPrintf("Bad ee_handle");
status = NFA_STATUS_INVALID_PARAM;
} else {
p_msg = (tNFA_EE_API_SET_PROTO_CFG*)GKI_getbuf(
@@ -365,6 +387,9 @@
p_msg->protocols_switch_on = protocols_switch_on;
p_msg->protocols_switch_off = protocols_switch_off;
p_msg->protocols_battery_off = protocols_battery_off;
+ p_msg->protocols_screen_lock = protocols_screen_lock;
+ p_msg->protocols_screen_off = protocols_screen_off;
+ p_msg->protocols_screen_off_lock = protocols_screen_off_lock;
nfa_sys_sendmsg(p_msg);
@@ -404,18 +429,19 @@
uint8_t nfcee_id = (uint8_t)(ee_handle & 0xFF);
tNFA_EE_ECB* p_cb;
- NFA_TRACE_API1("NFA_EeAddAidRouting(): handle:<0x%x>", ee_handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle:<0x%x>", ee_handle);
p_cb = nfa_ee_find_ecb(nfcee_id);
/* validate parameters - make sure the AID is in valid length range */
if ((p_cb == NULL) || (aid_len == 0) || (p_aid == NULL) ||
(aid_len < NFA_MIN_AID_LEN) || (aid_len > NFA_MAX_AID_LEN)) {
- NFA_TRACE_ERROR1("Bad ee_handle or AID (len=%d)", aid_len);
+ LOG(ERROR) << StringPrintf("Bad ee_handle or AID (len=%d)", aid_len);
status = NFA_STATUS_INVALID_PARAM;
} else {
p_msg = (tNFA_EE_API_ADD_AID*)GKI_getbuf(size);
if (p_msg != NULL) {
- NFA_TRACE_DEBUG2("aid:<%02x%02x>", p_aid[0], p_aid[1]);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("aid:<%02x%02x>", p_aid[0], p_aid[1]);
p_msg->hdr.event = NFA_EE_API_ADD_AID_EVT;
p_msg->nfcee_id = nfcee_id;
p_msg->p_cb = p_cb;
@@ -460,9 +486,9 @@
tNFA_STATUS status = NFA_STATUS_FAILED;
uint16_t size = sizeof(tNFA_EE_API_REMOVE_AID) + aid_len;
- NFA_TRACE_API0("NFA_EeRemoveAidRouting()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if ((aid_len == 0) || (p_aid == NULL) || (aid_len > NFA_MAX_AID_LEN)) {
- NFA_TRACE_ERROR0("Bad AID");
+ LOG(ERROR) << StringPrintf("Bad AID");
status = NFA_STATUS_INVALID_PARAM;
} else {
p_msg = (tNFA_EE_API_REMOVE_AID*)GKI_getbuf(size);
@@ -483,6 +509,103 @@
/*******************************************************************************
**
+** Function NFA_EeAddSystemCodeRouting
+**
+** Description This function is called to add an system code entry in the
+** listen mode routing table in NFCC. The status of this
+** operation is reported as the NFA_EE_ADD_SYSCODE_EVT.
+**
+** Note: If RF discovery is started,
+** NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
+** happen before calling this function
+**
+** Note: NFA_EeUpdateNow() should be called after last NFA-EE
+** function to change the listen mode routing is called.
+**
+** Returns NFA_STATUS_OK if successfully initiated
+** NFA_STATUS_FAILED otherwise
+** NFA_STATUS_INVALID_PARAM If bad parameter
+**
+*******************************************************************************/
+tNFA_STATUS NFA_EeAddSystemCodeRouting(uint16_t systemcode,
+ tNFA_HANDLE ee_handle,
+ tNFA_EE_PWR_STATE power_state) {
+ tNFA_STATUS status = NFA_STATUS_FAILED;
+ uint8_t nfcee_id = (uint8_t)(ee_handle & 0xFF);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_EeAddSystemCodeRouting(): handle:<0x%x>", ee_handle);
+ tNFA_EE_ECB* p_cb = nfa_ee_find_ecb(nfcee_id);
+
+ if (p_cb == NULL || systemcode == 0) {
+ LOG(ERROR) << StringPrintf("Bad ee_handle or System Code");
+ status = NFA_STATUS_INVALID_PARAM;
+ } else if ((NFA_GetNCIVersion() != NCI_VERSION_2_0) &&
+ (nfc_cb.isScbrSupported == false)) {
+ LOG(ERROR) << StringPrintf("Invalid NCI Version/SCBR not supported");
+ status = NFA_STATUS_NOT_SUPPORTED;
+ } else {
+ tNFA_EE_API_ADD_SYSCODE* p_msg =
+ (tNFA_EE_API_ADD_SYSCODE*)GKI_getbuf(sizeof(tNFA_EE_API_ADD_SYSCODE));
+ if (p_msg != NULL) {
+ p_msg->hdr.event = NFA_EE_API_ADD_SYSCODE_EVT;
+ p_msg->power_state = power_state;
+ p_msg->nfcee_id = nfcee_id;
+ p_msg->p_cb = p_cb;
+ // adjust endianness of syscode
+ p_msg->syscode = (systemcode & 0x00FF) << 8 | (systemcode & 0xFF00) >> 8;
+ nfa_sys_sendmsg(p_msg);
+ status = NFA_STATUS_OK;
+ }
+ }
+ return status;
+}
+
+/*******************************************************************************
+**
+** Function NFA_EeRemoveSystemCodeRouting
+**
+** Description This function is called to remove the given System Code
+** based entry from the listen mode routing table. The status
+** of this operation is reported as the
+** NFA_EE_REMOVE_SYSCODE_EVT.
+**
+** Note: If RF discovery is started,
+** NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
+** happen before calling this function
+**
+** Note: NFA_EeUpdateNow() should be called after last NFA-EE
+** function to change the listen mode routing is called.
+**
+** Returns NFA_STATUS_OK if successfully initiated
+** NFA_STATUS_FAILED otherwise
+** NFA_STATUS_INVALID_PARAM If bad parameter
+**
+*******************************************************************************/
+tNFA_STATUS NFA_EeRemoveSystemCodeRouting(uint16_t systemcode) {
+ tNFA_STATUS status = NFA_STATUS_FAILED;
+
+ if (systemcode == 0) {
+ LOG(ERROR) << "Bad ee_handle or System Code";
+ status = NFA_STATUS_INVALID_PARAM;
+ } else if ((NFA_GetNCIVersion() != NCI_VERSION_2_0) &&
+ (nfc_cb.isScbrSupported == false)) {
+ LOG(ERROR) << "Invalid NCI Version/SCBR Not supported";
+ status = NFA_STATUS_NOT_SUPPORTED;
+ } else {
+ tNFA_EE_API_REMOVE_SYSCODE* p_msg = (tNFA_EE_API_REMOVE_SYSCODE*)GKI_getbuf(
+ sizeof(tNFA_EE_API_REMOVE_SYSCODE));
+ if (p_msg != NULL) {
+ p_msg->hdr.event = NFA_EE_API_REMOVE_SYSCODE_EVT;
+ p_msg->syscode = (systemcode & 0x00FF) << 8 | (systemcode & 0xFF00) >> 8;
+ nfa_sys_sendmsg(p_msg);
+ status = NFA_STATUS_OK;
+ }
+ }
+ return status;
+}
+
+/*******************************************************************************
+**
** Function NFA_EeGetLmrtRemainingSize
**
** Description This function is called to get remaining size of the
@@ -497,7 +620,7 @@
tNFA_EE_API_LMRT_SIZE* p_msg;
tNFA_STATUS status = NFA_STATUS_FAILED;
- NFA_TRACE_API0("NFA_EeGetLmrtRemainingSize()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (tNFA_EE_API_LMRT_SIZE*)GKI_getbuf(sizeof(tNFA_EE_API_LMRT_SIZE));
if (p_msg != NULL) {
p_msg->event = NFA_EE_API_LMRT_SIZE_EVT;
@@ -528,9 +651,9 @@
NFC_HDR* p_msg;
tNFA_STATUS status = NFA_STATUS_FAILED;
- NFA_TRACE_API0("NFA_EeUpdateNow()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfa_ee_cb.ee_wait_evt & NFA_EE_WAIT_UPDATE_ALL) {
- NFA_TRACE_ERROR0("update in progress");
+ LOG(ERROR) << StringPrintf("update in progress");
status = NFA_STATUS_SEMANTIC_ERROR;
} else {
p_msg = (NFC_HDR*)GKI_getbuf(NFC_HDR_SIZE);
@@ -567,12 +690,12 @@
uint8_t nfcee_id = (uint8_t)(ee_handle & 0xFF);
tNFA_EE_ECB* p_cb;
- NFA_TRACE_API2("NFA_EeConnect(): handle:<0x%x> ee_interface:0x%x", ee_handle,
- ee_interface);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "handle:<0x%x> ee_interface:0x%x", ee_handle, ee_interface);
p_cb = nfa_ee_find_ecb(nfcee_id);
if ((p_cb == NULL) || (p_cback == NULL)) {
- NFA_TRACE_ERROR0("Bad ee_handle or NULL callback function");
+ LOG(ERROR) << StringPrintf("Bad ee_handle or NULL callback function");
status = NFA_STATUS_INVALID_PARAM;
} else {
p_msg = (tNFA_EE_API_CONNECT*)GKI_getbuf(sizeof(tNFA_EE_API_CONNECT));
@@ -613,13 +736,13 @@
uint8_t nfcee_id = (uint8_t)(ee_handle & 0xFF);
tNFA_EE_ECB* p_cb;
- NFA_TRACE_API1("NFA_EeSendData(): handle:<0x%x>", ee_handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle:<0x%x>", ee_handle);
p_cb = nfa_ee_find_ecb(nfcee_id);
if ((p_cb == NULL) || (p_cb->conn_st != NFA_EE_CONN_ST_CONN) ||
(p_data == NULL)) {
- NFA_TRACE_ERROR0("Bad ee_handle or NULL data");
+ LOG(ERROR) << StringPrintf("Bad ee_handle or NULL data");
status = NFA_STATUS_INVALID_PARAM;
} else {
p_msg = (tNFA_EE_API_SEND_DATA*)GKI_getbuf(
@@ -660,11 +783,11 @@
uint8_t nfcee_id = (uint8_t)(ee_handle & 0xFF);
tNFA_EE_ECB* p_cb;
- NFA_TRACE_API1("NFA_EeDisconnect(): handle:<0x%x>", ee_handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle:<0x%x>", ee_handle);
p_cb = nfa_ee_find_ecb(nfcee_id);
if ((p_cb == NULL) || (p_cb->conn_st != NFA_EE_CONN_ST_CONN)) {
- NFA_TRACE_ERROR0("NFA_EeDisconnect() Bad ee_handle");
+ LOG(ERROR) << StringPrintf("Bad ee_handle");
status = NFA_STATUS_INVALID_PARAM;
} else {
p_msg = (tNFA_EE_API_DISCONNECT*)GKI_getbuf(sizeof(tNFA_EE_API_DISCONNECT));
diff --git a/src/nfa/ee/nfa_ee_main.c b/src/nfa/ee/nfa_ee_main.cc
similarity index 82%
rename from src/nfa/ee/nfa_ee_main.c
rename to src/nfa/ee/nfa_ee_main.cc
index b3e957d..259bcba 100644
--- a/src/nfa/ee/nfa_ee_main.c
+++ b/src/nfa/ee/nfa_ee_main.cc
@@ -21,15 +21,19 @@
* This is the main implementation file for the NFA EE.
*
******************************************************************************/
-#include <string.h>
-#include "config.h"
+#include <string>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_dm_int.h"
#include "nfa_ee_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
-#include "nfc_api.h"
+#include "nfc_config.h"
-extern void nfa_ee_vs_cback(tNFC_VS_EVT event, NFC_HDR* p_data);
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
/*****************************************************************************
** Global Variables
*****************************************************************************/
@@ -48,30 +52,33 @@
const tNFA_EE_SM_ACT nfa_ee_actions[] = {
/* NFA-EE action function/ internal events */
- nfa_ee_api_discover, /* NFA_EE_API_DISCOVER_EVT */
- nfa_ee_api_register, /* NFA_EE_API_REGISTER_EVT */
- nfa_ee_api_deregister, /* NFA_EE_API_DEREGISTER_EVT */
- nfa_ee_api_mode_set, /* NFA_EE_API_MODE_SET_EVT */
- nfa_ee_api_set_tech_cfg, /* NFA_EE_API_SET_TECH_CFG_EVT */
- nfa_ee_api_set_proto_cfg, /* NFA_EE_API_SET_PROTO_CFG_EVT */
- nfa_ee_api_add_aid, /* NFA_EE_API_ADD_AID_EVT */
- nfa_ee_api_remove_aid, /* NFA_EE_API_REMOVE_AID_EVT */
- nfa_ee_api_lmrt_size, /* NFA_EE_API_LMRT_SIZE_EVT */
- nfa_ee_api_update_now, /* NFA_EE_API_UPDATE_NOW_EVT */
- nfa_ee_api_connect, /* NFA_EE_API_CONNECT_EVT */
- nfa_ee_api_send_data, /* NFA_EE_API_SEND_DATA_EVT */
- nfa_ee_api_disconnect, /* NFA_EE_API_DISCONNECT_EVT */
- nfa_ee_nci_disc_rsp, /* NFA_EE_NCI_DISC_RSP_EVT */
- nfa_ee_nci_disc_ntf, /* NFA_EE_NCI_DISC_NTF_EVT */
- nfa_ee_nci_mode_set_rsp, /* NFA_EE_NCI_MODE_SET_RSP_EVT */
- nfa_ee_nci_conn, /* NFA_EE_NCI_CONN_EVT */
- nfa_ee_nci_conn, /* NFA_EE_NCI_DATA_EVT */
- nfa_ee_nci_action_ntf, /* NFA_EE_NCI_ACTION_NTF_EVT */
- nfa_ee_nci_disc_req_ntf, /* NFA_EE_NCI_DISC_REQ_NTF_EVT */
- nfa_ee_nci_wait_rsp, /* NFA_EE_NCI_WAIT_RSP_EVT */
- nfa_ee_rout_timeout, /* NFA_EE_ROUT_TIMEOUT_EVT */
- nfa_ee_discv_timeout, /* NFA_EE_DISCV_TIMEOUT_EVT */
- nfa_ee_lmrt_to_nfcc /* NFA_EE_CFG_TO_NFCC_EVT */
+ nfa_ee_api_discover, /* NFA_EE_API_DISCOVER_EVT */
+ nfa_ee_api_register, /* NFA_EE_API_REGISTER_EVT */
+ nfa_ee_api_deregister, /* NFA_EE_API_DEREGISTER_EVT */
+ nfa_ee_api_mode_set, /* NFA_EE_API_MODE_SET_EVT */
+ nfa_ee_api_set_tech_cfg, /* NFA_EE_API_SET_TECH_CFG_EVT */
+ nfa_ee_api_set_proto_cfg, /* NFA_EE_API_SET_PROTO_CFG_EVT */
+ nfa_ee_api_add_aid, /* NFA_EE_API_ADD_AID_EVT */
+ nfa_ee_api_remove_aid, /* NFA_EE_API_REMOVE_AID_EVT */
+ nfa_ee_api_add_sys_code, /* NFA_EE_API_ADD_SYSCODE_EVT */
+ nfa_ee_api_remove_sys_code, /* NFA_EE_API_REMOVE_SYSCODE_EVT*/
+ nfa_ee_api_lmrt_size, /* NFA_EE_API_LMRT_SIZE_EVT */
+ nfa_ee_api_update_now, /* NFA_EE_API_UPDATE_NOW_EVT */
+ nfa_ee_api_connect, /* NFA_EE_API_CONNECT_EVT */
+ nfa_ee_api_send_data, /* NFA_EE_API_SEND_DATA_EVT */
+ nfa_ee_api_disconnect, /* NFA_EE_API_DISCONNECT_EVT */
+ nfa_ee_nci_disc_rsp, /* NFA_EE_NCI_DISC_RSP_EVT */
+ nfa_ee_nci_disc_ntf, /* NFA_EE_NCI_DISC_NTF_EVT */
+ nfa_ee_nci_mode_set_rsp, /* NFA_EE_NCI_MODE_SET_RSP_EVT */
+ nfa_ee_nci_conn, /* NFA_EE_NCI_CONN_EVT */
+ nfa_ee_nci_conn, /* NFA_EE_NCI_DATA_EVT */
+ nfa_ee_nci_action_ntf, /* NFA_EE_NCI_ACTION_NTF_EVT */
+ nfa_ee_nci_disc_req_ntf, /* NFA_EE_NCI_DISC_REQ_NTF_EVT */
+ nfa_ee_nci_wait_rsp, /* NFA_EE_NCI_WAIT_RSP_EVT */
+ nfa_ee_rout_timeout, /* NFA_EE_ROUT_TIMEOUT_EVT */
+ nfa_ee_discv_timeout, /* NFA_EE_DISCV_TIMEOUT_EVT */
+ nfa_ee_lmrt_to_nfcc, /* NFA_EE_CFG_TO_NFCC_EVT */
+ nfa_ee_nci_nfcee_status_ntf /*NFA_EE_NCI_NFCEE_STATUS_NTF_EVT*/
};
/*******************************************************************************
@@ -87,7 +94,7 @@
void nfa_ee_init(void) {
int xx;
- NFA_TRACE_DEBUG0("nfa_ee_init ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* initialize control block */
memset(&nfa_ee_cb, 0, sizeof(tNFA_EE_CB));
@@ -113,17 +120,16 @@
**
*******************************************************************************/
void nfa_ee_sys_enable(void) {
- unsigned long retlen = 0;
-
- NFA_TRACE_DEBUG1("%s", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s", __func__);
nfa_ee_cb.route_block_control = 0x00;
- if (GetNumValue(NAME_NFA_AID_BLOCK_ROUTE, (void*)&retlen, sizeof(retlen))) {
+ if (NfcConfig::hasKey(NAME_NFA_AID_BLOCK_ROUTE)) {
+ unsigned retlen = NfcConfig::getUnsigned(NAME_NFA_AID_BLOCK_ROUTE);
if ((retlen == 0x01) && (NFC_GetNCIVersion() == NCI_VERSION_2_0)) {
nfa_ee_cb.route_block_control = NCI_ROUTE_QUAL_BLOCK_ROUTE;
- NFA_TRACE_DEBUG1("nfa_ee_cb.route_block_control=0x%x",
- nfa_ee_cb.route_block_control);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_ee_cb.route_block_control=0x%x", nfa_ee_cb.route_block_control);
}
}
@@ -153,8 +159,8 @@
tNFC_NFCEE_MODE_SET_REVT rsp;
tNFA_EE_NCI_MODE_SET ee_msg;
- NFA_TRACE_DEBUG4(
- "nfa_ee_restore_one_ecb () nfcee_id:0x%x, ecb_flags:0x%x ee_status:0x%x "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfcee_id:0x%x, ecb_flags:0x%x ee_status:0x%x "
"ee_old_status: 0x%x",
p_cb->nfcee_id, p_cb->ecb_flags, p_cb->ee_status, p_cb->ee_old_status);
if ((p_cb->nfcee_id != NFA_EE_INVALID) &&
@@ -193,7 +199,9 @@
rsp.nfcee_id = p_cb->nfcee_id;
rsp.status = NFA_STATUS_OK;
ee_msg.p_data = &rsp;
- nfa_ee_nci_mode_set_rsp((tNFA_EE_MSG*)&ee_msg);
+ tNFA_EE_MSG nfa_ee_msg;
+ nfa_ee_msg.mode_set_rsp = ee_msg;
+ nfa_ee_nci_mode_set_rsp(&nfa_ee_msg);
}
}
}
@@ -212,8 +220,8 @@
tNFA_EE_ECB* p_cb;
bool proc_complete = true;
- NFA_TRACE_DEBUG1("nfa_ee_proc_nfcc_power_mode (): nfcc_power_mode=%d",
- nfcc_power_mode);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfcc_power_mode=%d", nfcc_power_mode);
/* if NFCC power state is change to full power */
if (nfcc_power_mode == NFA_DM_PWR_MODE_FULL) {
if (nfa_ee_max_ee_cfg) {
@@ -273,7 +281,7 @@
tNFA_EE_ECB* p_cb;
tNFA_EE_MSG data;
- NFA_TRACE_DEBUG0("nfa_ee_proc_hci_info_cback ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* if NFCC power state is change to full power */
nfa_ee_cb.ee_flags &= ~NFA_EE_FLAG_WAIT_HCI;
@@ -295,7 +303,7 @@
if (nfa_ee_cb.discv_timer.in_use) {
nfa_sys_stop_timer(&nfa_ee_cb.discv_timer);
data.hdr.event = NFA_EE_DISCV_TIMEOUT_EVT;
- nfa_ee_evt_hdlr((NFC_HDR*)&data);
+ nfa_ee_evt_hdlr(&data.hdr);
}
}
}
@@ -314,7 +322,6 @@
void nfa_ee_proc_evt(tNFC_RESPONSE_EVT event, void* p_data) {
tNFA_EE_INT_EVT int_event = 0;
tNFA_EE_NCI_WAIT_RSP cbk;
- NFC_HDR* p_hdr;
switch (event) {
case NFC_NFCEE_DISCOVER_REVT: /* 4 NFCEE Discover response */
@@ -341,16 +348,21 @@
int_event = NFA_EE_NCI_WAIT_RSP_EVT;
cbk.opcode = NCI_MSG_RF_SET_ROUTING;
break;
+
+ case NFC_NFCEE_STATUS_REVT:
+ int_event = NFA_EE_NCI_NFCEE_STATUS_NTF_EVT;
+ break;
}
- NFA_TRACE_DEBUG2("nfa_ee_proc_evt: event=0x%02x int_event:0x%x", event,
- int_event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_ee_proc_evt: event=0x%02x int_event:0x%x", event, int_event);
if (int_event) {
- p_hdr = (NFC_HDR*)&cbk;
cbk.hdr.event = int_event;
cbk.p_data = p_data;
+ tNFA_EE_MSG nfa_ee_msg;
+ nfa_ee_msg.wait_rsp = cbk;
- nfa_ee_evt_hdlr(p_hdr);
+ nfa_ee_evt_hdlr(&nfa_ee_msg.hdr);
}
}
@@ -386,7 +398,7 @@
tNFA_EE_ECB* nfa_ee_find_ecb(uint8_t nfcee_id) {
uint32_t xx;
tNFA_EE_ECB *p_ret = NULL, *p_cb;
- NFA_TRACE_DEBUG0("nfa_ee_find_ecb ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfcee_id == NFC_DH_ID) {
p_ret = &nfa_ee_cb.ecb[NFA_EE_CB_4_DH];
@@ -415,7 +427,7 @@
tNFA_EE_ECB* nfa_ee_find_ecb_by_conn_id(uint8_t conn_id) {
uint32_t xx;
tNFA_EE_ECB *p_ret = NULL, *p_cb;
- NFA_TRACE_DEBUG0("nfa_ee_find_ecb_by_conn_id ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cb = nfa_ee_cb.ecb;
for (xx = 0; xx < nfa_ee_cb.cur_ee; xx++, p_cb++) {
@@ -443,7 +455,7 @@
tNFA_EE_ECB* p_cb;
tNFA_EE_MSG msg;
- NFA_TRACE_DEBUG0("nfa_ee_sys_disable ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfa_ee_cb.em_state = NFA_EE_EM_STATE_DISABLED;
/* report NFA_EE_DEREGISTER_EVT to all registered to EE */
@@ -517,7 +529,6 @@
nfa_ee_cb.p_enable_cback = p_cback;
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function nfa_ee_sm_st_2_str
@@ -525,23 +536,18 @@
** Description convert nfa-ee state to string
**
*******************************************************************************/
-static char* nfa_ee_sm_st_2_str(uint8_t state) {
+static std::string nfa_ee_sm_st_2_str(uint8_t state) {
switch (state) {
case NFA_EE_EM_STATE_INIT:
return "INIT";
-
case NFA_EE_EM_STATE_INIT_DONE:
return "INIT_DONE";
-
case NFA_EE_EM_STATE_RESTORING:
return "RESTORING";
-
case NFA_EE_EM_STATE_DISABLING:
return "DISABLING";
-
case NFA_EE_EM_STATE_DISABLED:
return "DISABLED";
-
default:
return "Unknown";
}
@@ -554,7 +560,7 @@
** Description convert nfa-ee evt to string
**
*******************************************************************************/
-static char* nfa_ee_sm_evt_2_str(uint16_t event) {
+static std::string nfa_ee_sm_evt_2_str(uint16_t event) {
switch (event) {
case NFA_EE_API_DISCOVER_EVT:
return "API_DISCOVER";
@@ -572,6 +578,10 @@
return "API_ADD_AID";
case NFA_EE_API_REMOVE_AID_EVT:
return "API_REMOVE_AID";
+ case NFA_EE_API_ADD_SYSCODE_EVT:
+ return "NFA_EE_API_ADD_SYSCODE_EVT";
+ case NFA_EE_API_REMOVE_SYSCODE_EVT:
+ return "NFA_EE_API_REMOVE_SYSCODE_EVT";
case NFA_EE_API_LMRT_SIZE_EVT:
return "API_LMRT_SIZE";
case NFA_EE_API_UPDATE_NOW_EVT:
@@ -608,7 +618,6 @@
return "Unknown";
}
}
-#endif /* BT_TRACE_VERBOSE */
/*******************************************************************************
**
@@ -621,19 +630,12 @@
**
*******************************************************************************/
bool nfa_ee_evt_hdlr(NFC_HDR* p_msg) {
- tNFA_EE_MSG* p_evt_data = (tNFA_EE_MSG*)p_msg;
- uint16_t event = p_msg->event & 0x00ff;
bool act = false;
-#if (BT_TRACE_VERBOSE == TRUE)
- NFA_TRACE_DEBUG4("nfa_ee_evt_hdlr (): Event %s(0x%02x), State: %s(%d)",
- nfa_ee_sm_evt_2_str(p_evt_data->hdr.event),
- p_evt_data->hdr.event,
- nfa_ee_sm_st_2_str(nfa_ee_cb.em_state), nfa_ee_cb.em_state);
-#else
- NFA_TRACE_DEBUG2("nfa_ee_evt_hdlr (): Event 0x%02x, State: %d",
- p_evt_data->hdr.event, nfa_ee_cb.em_state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Event %s(0x%02x), State: %s(%d)",
+ nfa_ee_sm_evt_2_str(p_msg->event).c_str(), p_msg->event,
+ nfa_ee_sm_st_2_str(nfa_ee_cb.em_state).c_str(), nfa_ee_cb.em_state);
switch (nfa_ee_cb.em_state) {
case NFA_EE_EM_STATE_INIT_DONE:
@@ -649,13 +651,16 @@
if (p_msg->event == NFA_EE_NCI_CONN_EVT) act = true;
break;
}
+
+ tNFA_EE_MSG* p_evt_data = (tNFA_EE_MSG*)p_msg;
if (act) {
+ uint16_t event = p_msg->event & 0x00ff;
if (event < NFA_EE_NUM_ACTIONS) {
(*nfa_ee_actions[event])(p_evt_data);
}
} else {
- /* if the data event is not handled by action function, free the data packet
- */
+ /* If the event is not handled, free the data packet. */
+ /* FIXME: Is it really always tNFA_EE_NCI_CONN? */
if (p_msg->event == NFA_EE_NCI_DATA_EVT)
GKI_freebuf(p_evt_data->conn.p_data);
}
diff --git a/src/nfa/hci/nfa_hci_act.c b/src/nfa/hci/nfa_hci_act.cc
similarity index 95%
rename from src/nfa/hci/nfa_hci_act.c
rename to src/nfa/hci/nfa_hci_act.cc
index d68cddf..1e50670 100644
--- a/src/nfa/hci/nfa_hci_act.c
+++ b/src/nfa/hci/nfa_hci_act.cc
@@ -22,16 +22,18 @@
*
******************************************************************************/
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_dm_int.h"
#include "nfa_hci_api.h"
#include "nfa_hci_defs.h"
#include "nfa_hci_int.h"
-#include "nfa_mem_co.h"
-#include "nfa_nv_co.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
-#include "nfc_api.h"
-#include "trace_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/* Static local functions */
static void nfa_hci_api_register(tNFA_HCI_EVENT_DATA* p_evt_data);
@@ -57,10 +59,8 @@
uint16_t data_len,
tNFA_HCI_DYN_PIPE* p_pipe);
static void nfa_hci_handle_generic_gate_cmd(uint8_t* p_data, uint8_t data_len,
- tNFA_HCI_DYN_GATE* p_gate,
tNFA_HCI_DYN_PIPE* p_pipe);
static void nfa_hci_handle_generic_gate_rsp(uint8_t* p_data, uint8_t data_len,
- tNFA_HCI_DYN_GATE* p_gate,
tNFA_HCI_DYN_PIPE* p_pipe);
static void nfa_hci_handle_generic_gate_evt(uint8_t* p_data, uint16_t data_len,
tNFA_HCI_DYN_GATE* p_gate,
@@ -208,8 +208,7 @@
break;
default:
- NFA_TRACE_ERROR1("nfa_hci_check_api_requests () Unknown event: 0x%04x",
- p_msg->event);
+ LOG(ERROR) << StringPrintf("Unknown event: 0x%04x", p_msg->event);
break;
}
@@ -239,8 +238,8 @@
if ((nfa_hci_cb.cfg.reg_app_names[xx][0] != 0) &&
!strncmp(p_app_name, &nfa_hci_cb.cfg.reg_app_names[xx][0],
strlen(p_app_name))) {
- NFA_TRACE_EVENT2("nfa_hci_api_register (%s) Reusing: %u", p_app_name,
- xx);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_hci_api_register (%s) Reusing: %u", p_app_name, xx);
break;
}
}
@@ -265,14 +264,15 @@
strncpy(&nfa_hci_cb.cfg.reg_app_names[xx][0], p_app_name,
NFA_MAX_HCI_APP_NAME_LEN);
nfa_hci_cb.nv_write_needed = true;
- NFA_TRACE_EVENT2("nfa_hci_api_register (%s) Allocated: %u", p_app_name,
- xx);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_hci_api_register (%s) Allocated: %u", p_app_name, xx);
break;
}
}
if (xx == NFA_HCI_MAX_APP_CB) {
- NFA_TRACE_ERROR1("nfa_hci_api_register (%s) NO ENTRIES", p_app_name);
+ LOG(ERROR) << StringPrintf("nfa_hci_api_register (%s) NO ENTRIES",
+ p_app_name);
evt_data.hci_register.status = NFA_STATUS_FAILED;
p_evt_data->app_info.p_cback(NFA_HCI_REGISTER_EVT, &evt_data);
@@ -317,15 +317,16 @@
!strncmp(p_evt_data->app_info.app_name,
&nfa_hci_cb.cfg.reg_app_names[xx][0],
strlen(p_evt_data->app_info.app_name))) {
- NFA_TRACE_EVENT2("nfa_hci_api_deregister (%s) inx: %u",
- p_evt_data->app_info.app_name, xx);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hci_api_deregister (%s) inx: %u",
+ p_evt_data->app_info.app_name, xx);
break;
}
}
if (xx == NFA_HCI_MAX_APP_CB) {
- NFA_TRACE_WARNING1("nfa_hci_api_deregister () Unknown app: %s",
- p_evt_data->app_info.app_name);
+ LOG(WARNING) << StringPrintf("Unknown app: %s",
+ p_evt_data->app_info.app_name);
return;
}
nfa_hci_cb.app_in_use = (tNFA_HANDLE)(xx | NFA_HANDLE_GROUP_HCI);
@@ -477,9 +478,8 @@
} else if (p_gate->gate_owner != app_handle) {
/* Some other app owns the gate */
p_gate = NULL;
- NFA_TRACE_ERROR1(
- "nfa_hci_api_alloc_gate (): The Gate (0X%02x) already taken!",
- p_evt_data->gate_info.gate);
+ LOG(ERROR) << StringPrintf("The Gate (0X%02x) already taken!",
+ p_evt_data->gate_info.gate);
}
}
@@ -601,7 +601,7 @@
if ((p_gate == NULL) ||
(p_gate->gate_owner != p_evt_data->create_pipe.hci_handle)) {
report_failed = true;
- NFA_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"nfa_hci_api_create_pipe Cannot create pipe! APP: 0x%02x does not own "
"the gate:0x%x",
p_evt_data->create_pipe.hci_handle,
@@ -611,7 +611,7 @@
p_evt_data->create_pipe.dest_host,
p_evt_data->create_pipe.dest_gate)) {
report_failed = true;
- NFA_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"nfa_hci_api_create_pipe : Cannot create multiple pipe between the "
"same two gates!");
}
@@ -708,8 +708,9 @@
}
if (p_pipe->pipe_state == NFA_HCI_PIPE_CLOSED) {
- NFA_TRACE_WARNING1("nfa_hci_api_get_reg_value pipe:%d not open",
- p_evt_data->get_registry.pipe);
+ LOG(WARNING) << StringPrintf(
+ "nfa_hci_api_get_reg_value pipe:%d not open",
+ p_evt_data->get_registry.pipe);
} else {
status = nfa_hciu_send_get_param_cmd(p_evt_data->get_registry.pipe,
p_evt_data->get_registry.reg_inx);
@@ -756,8 +757,9 @@
}
if (p_pipe->pipe_state == NFA_HCI_PIPE_CLOSED) {
- NFA_TRACE_WARNING1("nfa_hci_api_set_reg_value pipe:%d not open",
- p_evt_data->set_registry.pipe);
+ LOG(WARNING) << StringPrintf(
+ "nfa_hci_api_set_reg_value pipe:%d not open",
+ p_evt_data->set_registry.pipe);
} else {
status = nfa_hciu_send_set_param_cmd(
p_evt_data->set_registry.pipe, p_evt_data->set_registry.reg_inx,
@@ -878,18 +880,18 @@
p_evt_data->send_cmd.data);
if (status == NFA_STATUS_OK) return true;
} else {
- NFA_TRACE_WARNING1("nfa_hci_api_send_cmd pipe:%d not open",
- p_pipe->pipe_id);
+ LOG(WARNING) << StringPrintf("nfa_hci_api_send_cmd pipe:%d not open",
+ p_pipe->pipe_id);
}
} else {
- NFA_TRACE_WARNING1(
+ LOG(WARNING) << StringPrintf(
"nfa_hci_api_send_cmd pipe:%d Owned by different application or "
"Destination host is not active",
p_pipe->pipe_id);
}
} else {
- NFA_TRACE_WARNING1("nfa_hci_api_send_cmd pipe:%d not found",
- p_evt_data->send_cmd.pipe);
+ LOG(WARNING) << StringPrintf("nfa_hci_api_send_cmd pipe:%d not found",
+ p_evt_data->send_cmd.pipe);
}
evt_data.cmd_sent.status = status;
@@ -928,18 +930,18 @@
p_evt_data->send_rsp.data);
if (status == NFA_STATUS_OK) return;
} else {
- NFA_TRACE_WARNING1("nfa_hci_api_send_rsp pipe:%d not open",
- p_pipe->pipe_id);
+ LOG(WARNING) << StringPrintf("nfa_hci_api_send_rsp pipe:%d not open",
+ p_pipe->pipe_id);
}
} else {
- NFA_TRACE_WARNING1(
+ LOG(WARNING) << StringPrintf(
"nfa_hci_api_send_rsp pipe:%d Owned by different application or "
"Destination host is not active",
p_pipe->pipe_id);
}
} else {
- NFA_TRACE_WARNING1("nfa_hci_api_send_rsp pipe:%d not found",
- p_evt_data->send_rsp.pipe);
+ LOG(WARNING) << StringPrintf("nfa_hci_api_send_rsp pipe:%d not found",
+ p_evt_data->send_rsp.pipe);
}
evt_data.rsp_sent.status = status;
@@ -1011,18 +1013,18 @@
}
}
} else {
- NFA_TRACE_WARNING1("nfa_hci_api_send_event pipe:%d not open",
- p_pipe->pipe_id);
+ LOG(WARNING) << StringPrintf("nfa_hci_api_send_event pipe:%d not open",
+ p_pipe->pipe_id);
}
} else {
- NFA_TRACE_WARNING1(
+ LOG(WARNING) << StringPrintf(
"nfa_hci_api_send_event pipe:%d Owned by different application or "
"Destination host is not active",
p_pipe->pipe_id);
}
} else {
- NFA_TRACE_WARNING1("nfa_hci_api_send_event pipe:%d not found",
- p_evt_data->send_evt.pipe);
+ LOG(WARNING) << StringPrintf("nfa_hci_api_send_event pipe:%d not found",
+ p_evt_data->send_evt.pipe);
}
evt_data.evt_sent.status = status;
@@ -1318,19 +1320,11 @@
uint8_t host_id = 0;
uint32_t os_tick;
-#if (BT_TRACE_VERBOSE == TRUE)
- NFA_TRACE_DEBUG4(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_hci_handle_admin_gate_rsp - LastCmdSent: %s App: 0x%04x Gate: "
"0x%02x Pipe: 0x%02x",
- nfa_hciu_instr_2_str(nfa_hci_cb.cmd_sent), nfa_hci_cb.app_in_use,
+ nfa_hciu_instr_2_str(nfa_hci_cb.cmd_sent).c_str(), nfa_hci_cb.app_in_use,
nfa_hci_cb.local_gate_in_use, nfa_hci_cb.pipe_in_use);
-#else
- NFA_TRACE_DEBUG4(
- "nfa_hci_handle_admin_gate_rsp LastCmdSent: %u App: 0x%04x Gate: "
- "0x%02x Pipe: 0x%02x",
- nfa_hci_cb.cmd_sent, nfa_hci_cb.app_in_use, nfa_hci_cb.local_gate_in_use,
- nfa_hci_cb.pipe_in_use);
-#endif
/* If starting up, handle events here */
if ((nfa_hci_cb.hci_state == NFA_HCI_STATE_STARTUP) ||
@@ -1343,7 +1337,8 @@
}
if (nfa_hci_cb.inst != NFA_HCI_ANY_OK) {
- NFA_TRACE_ERROR0("nfa_hci_handle_admin_gate_rsp - Initialization failed");
+ LOG(ERROR) << StringPrintf(
+ "nfa_hci_handle_admin_gate_rsp - Initialization failed");
nfa_hci_startup_complete(NFA_STATUS_FAILED);
return;
}
@@ -1359,6 +1354,11 @@
if ((nfa_hci_cb.hci_state == NFA_HCI_STATE_STARTUP) ||
(nfa_hci_cb.hci_state == NFA_HCI_STATE_RESTORE))
nfa_hci_dh_startup_complete();
+ if (NFA_GetNCIVersion() == NCI_VERSION_2_0) {
+ nfa_hci_cb.hci_state = NFA_HCI_STATE_WAIT_NETWK_ENABLE;
+ NFA_EeGetInfo(&nfa_hci_cb.num_nfcee, nfa_hci_cb.ee_info);
+ nfa_hci_enable_one_nfcee();
+ }
}
break;
@@ -1514,7 +1514,7 @@
/* Sanity check */
if (source_gate != nfa_hci_cb.local_gate_in_use) {
- NFA_TRACE_WARNING2(
+ LOG(WARNING) << StringPrintf(
"nfa_hci_handle_admin_gate_rsp sent create pipe with gate: %u "
"got back: %u",
nfa_hci_cb.local_gate_in_use, source_gate);
@@ -1600,17 +1600,17 @@
** Returns none
**
*******************************************************************************/
-void nfa_hci_handle_admin_gate_evt(uint8_t* p_data) {
+void nfa_hci_handle_admin_gate_evt() {
tNFA_HCI_EVT_DATA evt_data;
tNFA_HCI_API_GET_HOST_LIST* p_msg;
if (nfa_hci_cb.inst != NFA_HCI_EVT_HOT_PLUG) {
- NFA_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"nfa_hci_handle_admin_gate_evt - Unknown event on ADMIN Pipe");
return;
}
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_hci_handle_admin_gate_evt - HOT PLUG EVT event on ADMIN Pipe");
nfa_hci_cb.num_hot_plug_evts++;
@@ -1675,7 +1675,8 @@
if (p_pipe == NULL) {
/* Invalid pipe ID */
- NFA_TRACE_ERROR1("nfa_hci_handle_dyn_pipe_pkt - Unknown pipe %d", pipe_id);
+ LOG(ERROR) << StringPrintf("nfa_hci_handle_dyn_pipe_pkt - Unknown pipe %d",
+ pipe_id);
if (nfa_hci_cb.type == NFA_HCI_COMMAND_TYPE)
nfa_hciu_send_msg(pipe_id, NFA_HCI_RESPONSE_TYPE, NFA_HCI_ANY_E_NOK, 0,
NULL);
@@ -1691,7 +1692,7 @@
} else {
p_gate = nfa_hciu_find_gate_by_gid(p_pipe->local_gate);
if (p_gate == NULL) {
- NFA_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"nfa_hci_handle_dyn_pipe_pkt - Pipe's gate %d is corrupt",
p_pipe->local_gate);
if (nfa_hci_cb.type == NFA_HCI_COMMAND_TYPE)
@@ -1703,13 +1704,11 @@
/* Check if data packet is a command, response or event */
switch (nfa_hci_cb.type) {
case NFA_HCI_COMMAND_TYPE:
- nfa_hci_handle_generic_gate_cmd(p_data, (uint8_t)data_len, p_gate,
- p_pipe);
+ nfa_hci_handle_generic_gate_cmd(p_data, (uint8_t)data_len, p_pipe);
break;
case NFA_HCI_RESPONSE_TYPE:
- nfa_hci_handle_generic_gate_rsp(p_data, (uint8_t)data_len, p_gate,
- p_pipe);
+ nfa_hci_handle_generic_gate_rsp(p_data, (uint8_t)data_len, p_pipe);
break;
case NFA_HCI_EVENT_TYPE:
@@ -1826,7 +1825,6 @@
**
*******************************************************************************/
static void nfa_hci_handle_generic_gate_cmd(uint8_t* p_data, uint8_t data_len,
- tNFA_HCI_DYN_GATE* p_gate,
tNFA_HCI_DYN_PIPE* p_pipe) {
tNFA_HCI_EVT_DATA evt_data;
tNFA_HANDLE app_handle = nfa_hciu_get_pipe_owner(p_pipe->pipe_id);
@@ -1896,7 +1894,6 @@
**
*******************************************************************************/
static void nfa_hci_handle_generic_gate_rsp(uint8_t* p_data, uint8_t data_len,
- tNFA_HCI_DYN_GATE* p_gate,
tNFA_HCI_DYN_PIPE* p_pipe) {
tNFA_HCI_EVT_DATA evt_data;
tNFA_STATUS status = NFA_STATUS_OK;
diff --git a/src/nfa/hci/nfa_hci_api.c b/src/nfa/hci/nfa_hci_api.cc
similarity index 75%
rename from src/nfa/hci/nfa_hci_api.c
rename to src/nfa/hci/nfa_hci_api.cc
index c40ed3e..ce66f89 100644
--- a/src/nfa/hci/nfa_hci_api.c
+++ b/src/nfa/hci/nfa_hci_api.cc
@@ -21,13 +21,16 @@
* NFA interface to HCI
*
******************************************************************************/
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_hci_api.h"
-#include <string.h>
#include "nfa_hci_defs.h"
#include "nfa_hci_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
-#include "nfc_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*******************************************************************************
**
@@ -52,18 +55,20 @@
uint8_t app_name_len;
if (p_app_name == NULL) {
- NFA_TRACE_API0("NFA_HciRegister (): Invalid Application name");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid Application name");
return (NFA_STATUS_FAILED);
}
if (p_cback == NULL) {
- NFA_TRACE_API0(
- "NFA_HciRegister (): Application should provide callback function to "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Application should provide callback function to "
"register!");
return (NFA_STATUS_FAILED);
}
- NFA_TRACE_API1("NFA_HciRegister (): Application Name: %s", p_app_name);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Application Name: %s", p_app_name);
app_name_len = (uint8_t)strlen(p_app_name);
@@ -107,12 +112,13 @@
tNFA_HCI_API_GET_APP_GATE_PIPE* p_msg;
if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciGetGateAndPipeList (): Invalid hci_handle:0x%04x",
- hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid hci_handle:0x%04x", hci_handle);
return (NFA_STATUS_FAILED);
}
- NFA_TRACE_API1("NFA_HciGetGateAndPipeList (): hci_handle:0x%04x", hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("hci_handle:0x%04x", hci_handle);
/* Register the application with HCI */
if ((nfa_hci_cb.hci_state != NFA_HCI_STATE_DISABLED) &&
@@ -150,11 +156,12 @@
uint8_t app_name_len;
if (p_app_name == NULL) {
- NFA_TRACE_API0("NFA_HciDeregister (): Invalid Application");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Invalid Application");
return (NFA_STATUS_FAILED);
}
- NFA_TRACE_API1("NFA_HciDeregister (): Application Name: %s", p_app_name);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Application Name: %s", p_app_name);
app_name_len = (uint8_t)strlen(p_app_name);
if (app_name_len > NFA_MAX_HCI_APP_NAME_LEN) return (NFA_STATUS_FAILED);
@@ -168,8 +175,7 @@
}
if (xx == NFA_HCI_MAX_APP_CB) {
- NFA_TRACE_ERROR1("NFA_HciDeregister (): Application Name: %s NOT FOUND",
- p_app_name);
+ LOG(ERROR) << StringPrintf("Application Name: %s NOT FOUND", p_app_name);
return (NFA_STATUS_FAILED);
}
@@ -210,20 +216,21 @@
tNFA_HCI_API_ALLOC_GATE* p_msg;
if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciAllocGate (): Invalid hci_handle:0x%04x",
- hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid hci_handle:0x%04x", hci_handle);
return (NFA_STATUS_FAILED);
}
if ((gate) && ((gate < NFA_HCI_FIRST_HOST_SPECIFIC_GENERIC_GATE) ||
(gate > NFA_HCI_LAST_PROP_GATE) ||
(gate == NFA_HCI_CONNECTIVITY_GATE))) {
- NFA_TRACE_API1("NFA_HciAllocGate (): Cannot allocate gate:0x%02x", gate);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Cannot allocate gate:0x%02x", gate);
return (NFA_STATUS_FAILED);
}
- NFA_TRACE_API2("NFA_HciAllocGate (): hci_handle:0x%04x, Gate:0x%02x",
- hci_handle, gate);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("hci_handle:0x%04x, Gate:0x%02x", hci_handle, gate);
/* Request HCI to allocate gate to the application */
if ((nfa_hci_cb.hci_state != NFA_HCI_STATE_DISABLED) &&
@@ -256,20 +263,20 @@
tNFA_HCI_API_DEALLOC_GATE* p_msg;
if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciDeallocGate (): Invalid hci_handle:0x%04x",
- hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid hci_handle:0x%04x", hci_handle);
return (NFA_STATUS_FAILED);
}
if ((gate < NFA_HCI_FIRST_HOST_SPECIFIC_GENERIC_GATE) ||
(gate > NFA_HCI_LAST_PROP_GATE) || (gate == NFA_HCI_CONNECTIVITY_GATE)) {
- NFA_TRACE_API1("NFA_HciDeallocGate (): Cannot deallocate the gate:0x%02x",
- gate);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Cannot deallocate the gate:0x%02x", gate);
return (NFA_STATUS_FAILED);
}
- NFA_TRACE_API2("NFA_HciDeallocGate (): hci_handle:0x%04x, gate:0x%02X",
- hci_handle, gate);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("hci_handle:0x%04x, gate:0x%02X", hci_handle, gate);
/* Request HCI to deallocate the gate that was previously allocated to the
* application */
@@ -303,12 +310,13 @@
tNFA_HCI_API_GET_HOST_LIST* p_msg;
if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciGetHostList (): Invalid hci_handle:0x%04x",
- hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid hci_handle:0x%04x", hci_handle);
return (NFA_STATUS_FAILED);
}
- NFA_TRACE_API1("NFA_HciGetHostList (): hci_handle:0x%04x", hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("hci_handle:0x%04x", hci_handle);
/* Request HCI to get list of host in the hci network */
if ((nfa_hci_cb.hci_state != NFA_HCI_STATE_DISABLED) &&
@@ -349,21 +357,21 @@
tNFA_HCI_API_CREATE_PIPE_EVT* p_msg;
uint8_t xx;
- NFA_TRACE_API4(
- "NFA_HciCreatePipe (): hci_handle:0x%04x, source gate:0x%02X, "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "hci_handle:0x%04x, source gate:0x%02X, "
"destination host:0x%02X , destination gate:0x%02X",
hci_handle, source_gate_id, dest_host, dest_gate);
if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciCreatePipe (): Invalid hci_handle:0x%04x",
- hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid hci_handle:0x%04x", hci_handle);
return (NFA_STATUS_FAILED);
}
if ((source_gate_id < NFA_HCI_FIRST_HOST_SPECIFIC_GENERIC_GATE) ||
(source_gate_id > NFA_HCI_LAST_PROP_GATE)) {
- NFA_TRACE_API1("NFA_HciCreatePipe (): Invalid local Gate:0x%02x",
- source_gate_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid local Gate:0x%02x", source_gate_id);
return (NFA_STATUS_FAILED);
}
@@ -371,8 +379,8 @@
(dest_gate != NFA_HCI_LOOP_BACK_GATE) &&
(dest_gate != NFA_HCI_IDENTITY_MANAGEMENT_GATE)) ||
(dest_gate > NFA_HCI_LAST_PROP_GATE)) {
- NFA_TRACE_API1("NFA_HciCreatePipe (): Invalid Destination Gate:0x%02x",
- dest_gate);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid Destination Gate:0x%02x", dest_gate);
return (NFA_STATUS_FAILED);
}
@@ -380,7 +388,8 @@
if (nfa_hci_cb.inactive_host[xx] == dest_host) break;
if (xx != NFA_HCI_MAX_HOST_IN_NETWORK) {
- NFA_TRACE_API1("NFA_HciCreatePipe (): Host not active:0x%02x", dest_host);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Host not active:0x%02x", dest_host);
return (NFA_STATUS_FAILED);
}
@@ -418,18 +427,20 @@
tNFA_HCI_API_OPEN_PIPE_EVT* p_msg;
if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciOpenPipe (): Invalid hci_handle:0x%04x", hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid hci_handle:0x%04x", hci_handle);
return (NFA_STATUS_FAILED);
}
if ((pipe < NFA_HCI_FIRST_DYNAMIC_PIPE) ||
(pipe > NFA_HCI_LAST_DYNAMIC_PIPE)) {
- NFA_TRACE_API1("NFA_HciOpenPipe (): Invalid Pipe:0x%02x", pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid Pipe:0x%02x", pipe);
return (NFA_STATUS_FAILED);
}
- NFA_TRACE_API2("NFA_HciOpenPipe (): hci_handle:0x%04x, pipe:0x%02X",
- hci_handle, pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("hci_handle:0x%04x, pipe:0x%02X", hci_handle, pipe);
/* Request HCI to open a pipe if it is in closed state */
if ((nfa_hci_cb.hci_state != NFA_HCI_STATE_DISABLED) &&
@@ -467,18 +478,19 @@
tNFA_HCI_API_GET_REGISTRY* p_msg;
if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciGetRegistry (): Invalid hci_handle:0x%04x",
- hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid hci_handle:0x%04x", hci_handle);
return (NFA_STATUS_FAILED);
}
if (pipe < NFA_HCI_FIRST_DYNAMIC_PIPE) {
- NFA_TRACE_API1("NFA_HciGetRegistry (): Invalid Pipe:0x%02x", pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid Pipe:0x%02x", pipe);
return (NFA_STATUS_FAILED);
}
- NFA_TRACE_API2("NFA_HciGetRegistry (): hci_handle:0x%04x Pipe: 0x%02x",
- hci_handle, pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("hci_handle:0x%04x Pipe: 0x%02x", hci_handle, pipe);
/* Request HCI to get list of gates supported by the specified host */
if ((nfa_hci_cb.hci_state != NFA_HCI_STATE_DISABLED) &&
@@ -498,66 +510,6 @@
/*******************************************************************************
**
-** Function NFA_HciSetRegistry
-**
-** Description This function requests a peer host to set the desired
-** registry field value for the gate that the pipe is on.
-**
-** When the peer host responds,the app is notified with
-** NFA_HCI_SET_REG_RSP_EVT or
-** if an error occurs in sending the command the app will be
-** notified by NFA_HCI_CMD_SENT_EVT
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_HciSetRegistry(tNFA_HANDLE hci_handle, uint8_t pipe,
- uint8_t reg_inx, uint8_t data_size,
- uint8_t* p_data) {
- tNFA_HCI_API_SET_REGISTRY* p_msg;
-
- if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciSetRegistry (): Invalid hci_handle:0x%04x",
- hci_handle);
- return (NFA_STATUS_FAILED);
- }
-
- if (pipe < NFA_HCI_FIRST_DYNAMIC_PIPE) {
- NFA_TRACE_API1("NFA_HciSetRegistry (): Invalid Pipe:0x%02x", pipe);
- return (NFA_STATUS_FAILED);
- }
-
- if ((data_size == 0) || (p_data == NULL) ||
- (data_size > NFA_MAX_HCI_CMD_LEN)) {
- NFA_TRACE_API1("NFA_HciSetRegistry (): Invalid data size:0x%02x",
- data_size);
- return (NFA_STATUS_FAILED);
- }
-
- NFA_TRACE_API2("NFA_HciSetRegistry (): hci_handle:0x%04x Pipe: 0x%02x",
- hci_handle, pipe);
-
- /* Request HCI to get list of gates supported by the specified host */
- if ((nfa_hci_cb.hci_state != NFA_HCI_STATE_DISABLED) &&
- ((p_msg = (tNFA_HCI_API_SET_REGISTRY*)GKI_getbuf(
- sizeof(tNFA_HCI_API_SET_REGISTRY))) != NULL)) {
- p_msg->hdr.event = NFA_HCI_API_SET_REGISTRY_EVT;
- p_msg->hci_handle = hci_handle;
- p_msg->pipe = pipe;
- p_msg->reg_inx = reg_inx;
- p_msg->size = data_size;
-
- memcpy(p_msg->data, p_data, data_size);
- nfa_sys_sendmsg(p_msg);
- return (NFA_STATUS_OK);
- }
-
- return (NFA_STATUS_FAILED);
-}
-
-/*******************************************************************************
-**
** Function NFA_HciSendCommand
**
** Description This function is called to send a command on a pipe created
@@ -577,24 +529,26 @@
tNFA_HCI_API_SEND_CMD_EVT* p_msg;
if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciSendCommand (): Invalid hci_handle:0x%04x",
- hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid hci_handle:0x%04x", hci_handle);
return (NFA_STATUS_FAILED);
}
if (pipe < NFA_HCI_FIRST_DYNAMIC_PIPE) {
- NFA_TRACE_API1("NFA_HciSendCommand (): Invalid Pipe:0x%02x", pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid Pipe:0x%02x", pipe);
return (NFA_STATUS_FAILED);
}
if ((cmd_size && (p_data == NULL)) || (cmd_size > NFA_MAX_HCI_CMD_LEN)) {
- NFA_TRACE_API1("NFA_HciSendCommand (): Invalid cmd size:0x%02x", cmd_size);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid cmd size:0x%02x", cmd_size);
return (NFA_STATUS_FAILED);
}
- NFA_TRACE_API3(
- "NFA_HciSendCommand (): hci_handle:0x%04x, pipe:0x%02x Code: 0x%02x",
- hci_handle, pipe, cmd_code);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("hci_handle:0x%04x, pipe:0x%02x Code: 0x%02x",
+ hci_handle, pipe, cmd_code);
/* Request HCI to post event data on a particular pipe */
if ((nfa_hci_cb.hci_state != NFA_HCI_STATE_DISABLED) &&
@@ -617,64 +571,6 @@
/*******************************************************************************
**
-** Function NFA_HciSendResponse
-**
-** Description This function is called to send a response on a pipe created
-** by the application.
-** The app will be notified by NFA_HCI_RSP_SENT_EVT if an error
-** occurs.
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_HciSendResponse(tNFA_HANDLE hci_handle, uint8_t pipe,
- uint8_t response, uint8_t data_size,
- uint8_t* p_data) {
- tNFA_HCI_API_SEND_RSP_EVT* p_msg;
-
- if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciSendResponse (): Invalid hci_handle:0x%04x",
- hci_handle);
- return (NFA_STATUS_FAILED);
- }
-
- if (pipe < NFA_HCI_FIRST_DYNAMIC_PIPE) {
- NFA_TRACE_API1("NFA_HciSendResponse (): Invalid Pipe:0x%02x", pipe);
- return (NFA_STATUS_FAILED);
- }
-
- if ((data_size && (p_data == NULL)) || (data_size > NFA_MAX_HCI_RSP_LEN)) {
- NFA_TRACE_API1("NFA_HciSendResponse (): Invalid data size:0x%02x",
- data_size);
- return (NFA_STATUS_FAILED);
- }
-
- NFA_TRACE_API3(
- "NFA_HciSendResponse (): hci_handle:0x%04x Pipe: 0x%02x Response: "
- "0x%02x",
- hci_handle, pipe, response);
-
- /* Request HCI to get list of gates supported by the specified host */
- if ((nfa_hci_cb.hci_state != NFA_HCI_STATE_DISABLED) &&
- ((p_msg = (tNFA_HCI_API_SEND_RSP_EVT*)GKI_getbuf(
- sizeof(tNFA_HCI_API_SEND_RSP_EVT))) != NULL)) {
- p_msg->hdr.event = NFA_HCI_API_SEND_RSP_EVT;
- p_msg->hci_handle = hci_handle;
- p_msg->response = response;
- p_msg->size = data_size;
-
- if (data_size) memcpy(p_msg->data, p_data, data_size);
-
- nfa_sys_sendmsg(p_msg);
- return (NFA_STATUS_OK);
- }
-
- return (NFA_STATUS_FAILED);
-}
-
-/*******************************************************************************
-**
** Function NFA_HciSendEvent
**
** Description This function is called to send any event on a pipe created
@@ -710,29 +606,31 @@
uint8_t* p_rsp_buf, uint16_t rsp_timeout) {
tNFA_HCI_API_SEND_EVENT_EVT* p_msg;
- NFA_TRACE_API3(
- "NFA_HciSendEvent(): hci_handle:0x%04x, pipe:0x%02x Code: 0x%02x",
- hci_handle, pipe, evt_code);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("hci_handle:0x%04x, pipe:0x%02x Code: 0x%02x",
+ hci_handle, pipe, evt_code);
if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciSendEvent (): Invalid hci_handle:0x%04x",
- hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid hci_handle:0x%04x", hci_handle);
return (NFA_STATUS_FAILED);
}
if (pipe < NFA_HCI_FIRST_DYNAMIC_PIPE) {
- NFA_TRACE_API1("NFA_HciSendEvent (): Invalid Pipe:0x%02x", pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid Pipe:0x%02x", pipe);
return (NFA_STATUS_FAILED);
}
if (evt_size && (p_data == NULL)) {
- NFA_TRACE_API1("NFA_HciSendEvent (): Invalid Event size:0x%02x", evt_size);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid Event size:0x%02x", evt_size);
return (NFA_STATUS_FAILED);
}
if (rsp_size && (p_rsp_buf == NULL)) {
- NFA_TRACE_API1(
- "NFA_HciSendEvent (): No Event buffer, but invalid event buffer size "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "No Event buffer, but invalid event buffer size "
":%u",
rsp_size);
return (NFA_STATUS_FAILED);
@@ -775,18 +673,19 @@
tNFA_STATUS NFA_HciClosePipe(tNFA_HANDLE hci_handle, uint8_t pipe) {
tNFA_HCI_API_CLOSE_PIPE_EVT* p_msg;
- NFA_TRACE_API2("NFA_HciClosePipe (): hci_handle:0x%04x, pipe:0x%02X",
- hci_handle, pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("hci_handle:0x%04x, pipe:0x%02X", hci_handle, pipe);
if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciClosePipe (): Invalid hci_handle:0x%04x",
- hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid hci_handle:0x%04x", hci_handle);
return (NFA_STATUS_FAILED);
}
if ((pipe < NFA_HCI_FIRST_DYNAMIC_PIPE) ||
(pipe > NFA_HCI_LAST_DYNAMIC_PIPE)) {
- NFA_TRACE_API1("NFA_HciClosePipe (): Invalid Pipe:0x%02x", pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid Pipe:0x%02x", pipe);
return (NFA_STATUS_FAILED);
}
@@ -825,19 +724,20 @@
tNFA_HCI_API_DELETE_PIPE_EVT* p_msg;
if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciDeletePipe (): Invalid hci_handle:0x%04x",
- hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid hci_handle:0x%04x", hci_handle);
return (NFA_STATUS_FAILED);
}
if ((pipe < NFA_HCI_FIRST_DYNAMIC_PIPE) ||
(pipe > NFA_HCI_LAST_DYNAMIC_PIPE)) {
- NFA_TRACE_API1("NFA_HciDeletePipe (): Invalid Pipe:0x%02x", pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid Pipe:0x%02x", pipe);
return (NFA_STATUS_FAILED);
}
- NFA_TRACE_API2("NFA_HciDeletePipe (): hci_handle:0x%04x, pipe:0x%02X",
- hci_handle, pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("hci_handle:0x%04x, pipe:0x%02X", hci_handle, pipe);
/* Request HCI to delete a pipe created by the application identified by hci
* handle */
@@ -874,8 +774,8 @@
uint8_t xx;
if ((NFA_HANDLE_GROUP_MASK & hci_handle) != NFA_HANDLE_GROUP_HCI) {
- NFA_TRACE_API1("NFA_HciAddStaticPipe (): Invalid hci_handle:0x%04x",
- hci_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid hci_handle:0x%04x", hci_handle);
return (NFA_STATUS_FAILED);
}
@@ -883,22 +783,25 @@
if (nfa_hci_cb.inactive_host[xx] == host) break;
if (xx != NFA_HCI_MAX_HOST_IN_NETWORK) {
- NFA_TRACE_API1("NFA_HciAddStaticPipe (): Host not active:0x%02x", host);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Host not active:0x%02x", host);
return (NFA_STATUS_FAILED);
}
if (gate <= NFA_HCI_LAST_HOST_SPECIFIC_GATE) {
- NFA_TRACE_API1("NFA_HciAddStaticPipe (): Invalid Gate:0x%02x", gate);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid Gate:0x%02x", gate);
return (NFA_STATUS_FAILED);
}
if (pipe <= NFA_HCI_LAST_DYNAMIC_PIPE) {
- NFA_TRACE_API1("NFA_HciAddStaticPipe (): Invalid Pipe:0x%02x", pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid Pipe:0x%02x", pipe);
return (NFA_STATUS_FAILED);
}
- NFA_TRACE_API2("NFA_HciAddStaticPipe (): hci_handle:0x%04x, pipe:0x%02X",
- hci_handle, pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("hci_handle:0x%04x, pipe:0x%02X", hci_handle, pipe);
/* Request HCI to delete a pipe created by the application identified by hci
* handle */
@@ -934,29 +837,34 @@
switch (action) {
case NFA_HCI_DEBUG_DISPLAY_CB:
- NFA_TRACE_API0("NFA_HciDebug Host List:");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_HciDebug Host List:");
for (xx = 0; xx < NFA_HCI_MAX_APP_CB; xx++) {
if (nfa_hci_cb.cfg.reg_app_names[xx][0] != 0) {
- NFA_TRACE_API2(" Host Inx: %u Name: %s", xx,
- &nfa_hci_cb.cfg.reg_app_names[xx][0]);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(" Host Inx: %u Name: %s", xx,
+ &nfa_hci_cb.cfg.reg_app_names[xx][0]);
}
}
- NFA_TRACE_API0("NFA_HciDebug Gate List:");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_HciDebug Gate List:");
for (xx = 0; xx < NFA_HCI_MAX_GATE_CB; xx++, pg++) {
if (pg->gate_id != 0) {
- NFA_TRACE_API4(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
" Gate Inx: %x ID: 0x%02x Owner: 0x%04x "
"PipeInxMask: 0x%08x",
xx, pg->gate_id, pg->gate_owner, pg->pipe_inx_mask);
}
}
- NFA_TRACE_API0("NFA_HciDebug Pipe List:");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_HciDebug Pipe List:");
for (xx = 0; xx < NFA_HCI_MAX_PIPE_CB; xx++, pp++) {
if (pp->pipe_id != 0) {
- NFA_TRACE_API6(
- " Pipe Inx: %x ID: 0x%02x State: %u LocalGate: "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ " Pipe Inx: %x ID: 0x%02x State: %u "
+ "LocalGate: "
"0x%02x Dest Gate: 0x%02x Host: 0x%02x",
xx, pp->pipe_id, pp->pipe_state, pp->local_gate, pp->dest_gate,
pp->dest_host);
@@ -980,13 +888,15 @@
break;
case NFA_HCI_DEBUG_ENABLE_LOOPBACK:
- NFA_TRACE_API0("NFA_HciDebug HCI_LOOPBACK_DEBUG = TRUE");
- HCI_LOOPBACK_DEBUG = true;
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_HciDebug HCI_LOOPBACK_DEBUG = TRUE");
+ HCI_LOOPBACK_DEBUG = NFA_HCI_DEBUG_ON;
break;
case NFA_HCI_DEBUG_DISABLE_LOOPBACK:
- NFA_TRACE_API0("NFA_HciDebug HCI_LOOPBACK_DEBUG = FALSE");
- HCI_LOOPBACK_DEBUG = false;
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA_HciDebug HCI_LOOPBACK_DEBUG = FALSE");
+ HCI_LOOPBACK_DEBUG = NFA_HCI_DEBUG_OFF;
break;
}
}
diff --git a/src/nfa/hci/nfa_hci_ci.c b/src/nfa/hci/nfa_hci_ci.cc
similarity index 95%
rename from src/nfa/hci/nfa_hci_ci.c
rename to src/nfa/hci/nfa_hci_ci.cc
index a68b6f0..2f29745 100644
--- a/src/nfa/hci/nfa_hci_ci.c
+++ b/src/nfa/hci/nfa_hci_ci.cc
@@ -25,7 +25,6 @@
#include "nfa_hci_api.h"
#include "nfa_hci_int.h"
#include "nfa_nv_co.h"
-#include "nfa_sys.h"
/*******************************************************************************
**
@@ -70,7 +69,8 @@
p_msg = (tNFA_HCI_EVENT_DATA*)GKI_getbuf(sizeof(tNFA_HCI_EVENT_DATA));
if (p_msg != NULL) {
p_msg->nv_write.hdr.event = NFA_HCI_RSP_NV_WRITE_EVT;
- p_msg->nv_write.status = 0;
+ p_msg->nv_write.status =
+ (status == NFA_NV_CO_OK) ? NFA_STATUS_OK : NFA_STATUS_FAILED;
nfa_sys_sendmsg(p_msg);
}
}
diff --git a/src/nfa/hci/nfa_hci_main.c b/src/nfa/hci/nfa_hci_main.cc
similarity index 82%
rename from src/nfa/hci/nfa_hci_main.c
rename to src/nfa/hci/nfa_hci_main.cc
index 28067e8..91aa89d 100644
--- a/src/nfa/hci/nfa_hci_main.c
+++ b/src/nfa/hci/nfa_hci_main.cc
@@ -22,19 +22,23 @@
*
******************************************************************************/
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_dm_int.h"
#include "nfa_ee_api.h"
#include "nfa_ee_int.h"
#include "nfa_hci_api.h"
#include "nfa_hci_defs.h"
#include "nfa_hci_int.h"
-#include "nfa_mem_co.h"
#include "nfa_nv_co.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
-#include "nfc_api.h"
#include "trace_api.h"
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
/*****************************************************************************
** Global Variables
*****************************************************************************/
@@ -58,7 +62,7 @@
static void nfa_hci_sys_enable(void);
static void nfa_hci_sys_disable(void);
-static void nfa_hci_rsp_timeout(tNFA_HCI_EVENT_DATA* p_evt_data);
+static void nfa_hci_rsp_timeout(void);
static void nfa_hci_conn_cback(uint8_t conn_id, tNFC_CONN_EVT event,
tNFC_CONN* p_data);
static void nfa_hci_set_receive_buf(uint8_t pipe);
@@ -82,10 +86,7 @@
**
*******************************************************************************/
void nfa_hci_ee_info_cback(tNFA_EE_DISC_STS status) {
- uint8_t num_nfcee = 3;
- tNFA_EE_INFO ee_info[3];
-
- NFA_TRACE_DEBUG1("nfa_hci_ee_info_cback (): %d", status);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%d", status);
switch (status) {
case NFA_EE_DISC_STS_ON:
@@ -104,9 +105,6 @@
case NFA_EE_DISC_STS_OFF:
if (nfa_hci_cb.ee_disable_disc) break;
nfa_hci_cb.ee_disable_disc = true;
- /* Discovery operation is complete, retrieve discovery result */
- NFA_EeGetInfo(&num_nfcee, ee_info);
- nfa_hci_cb.num_nfcee = num_nfcee;
if ((nfa_hci_cb.hci_state == NFA_HCI_STATE_WAIT_NETWK_ENABLE) ||
(nfa_hci_cb.hci_state == NFA_HCI_STATE_RESTORE_NETWK_ENABLE)) {
@@ -144,7 +142,8 @@
(nfa_hci_cb.hci_state == NFA_HCI_STATE_RESTORE_NETWK_ENABLE)) {
/* Received DISC REQ Ntf while waiting for other Host in the network
* to bootup after DH host bootup is complete */
- if (nfa_hci_cb.num_ee_dis_req_ntf == (nfa_hci_cb.num_nfcee - 1)) {
+ if ((nfa_hci_cb.num_ee_dis_req_ntf == (nfa_hci_cb.num_nfcee - 1)) &&
+ NFC_GetNCIVersion() != NCI_VERSION_2_0) {
/* Received expected number of EE DISC REQ Ntf(s) */
nfa_sys_stop_timer(&nfa_hci_cb.timer);
nfa_hci_cb.w4_hci_netwk_init = false;
@@ -161,6 +160,22 @@
}
}
break;
+ case NFA_EE_RECOVERY_REDISCOVERED:
+ case NFA_EE_MODE_SET_COMPLETE:
+ /*received mode set Ntf */
+ if ((nfa_hci_cb.hci_state == NFA_HCI_STATE_WAIT_NETWK_ENABLE) ||
+ (nfa_hci_cb.hci_state == NFA_HCI_STATE_RESTORE_NETWK_ENABLE) ||
+ (nfa_hci_cb.hci_state == NFA_HCI_STATE_EE_RECOVERY)) {
+ /* Discovery operation is complete, retrieve discovery result */
+ NFA_EeGetInfo(&nfa_hci_cb.num_nfcee, nfa_hci_cb.ee_info);
+ nfa_hci_enable_one_nfcee();
+ }
+ break;
+ case NFA_EE_RECOVERY_INIT:
+ /*NFCEE recovery in progress*/
+ nfa_ee_cb.isDiscoveryStopped = nfa_dm_act_stop_rf_discovery(NULL);
+ nfa_hci_cb.hci_state = NFA_HCI_STATE_EE_RECOVERY;
+ break;
}
}
@@ -174,13 +189,13 @@
**
*******************************************************************************/
void nfa_hci_init(void) {
- NFA_TRACE_DEBUG0("nfa_hci_init ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* initialize control block */
memset(&nfa_hci_cb, 0, sizeof(tNFA_HCI_CB));
nfa_hci_cb.hci_state = NFA_HCI_STATE_STARTUP;
-
+ nfa_hci_cb.num_nfcee = NFA_HCI_MAX_HOST_IN_NETWORK;
/* register message handler on NFA SYS */
nfa_sys_register(NFA_ID_HCI, &nfa_hci_sys_reg);
}
@@ -223,8 +238,9 @@
&nfa_hci_cb.cfg.reg_app_names[yy][0],
strlen(nfa_hci_cb.cfg.reg_app_names[xx])))) {
/* Two app cannot have the same name , NVRAM is corrupted */
- NFA_TRACE_EVENT2("nfa_hci_is_valid_cfg (%s) Reusing: %u",
- &nfa_hci_cb.cfg.reg_app_names[xx][0], xx);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hci_is_valid_cfg (%s) Reusing: %u",
+ &nfa_hci_cb.cfg.reg_app_names[xx][0], xx);
return false;
}
}
@@ -250,25 +266,33 @@
if ((nfa_hci_cb.cfg.dyn_gates[yy].gate_id != 0) &&
(nfa_hci_cb.cfg.dyn_gates[xx].gate_id ==
nfa_hci_cb.cfg.dyn_gates[yy].gate_id)) {
- NFA_TRACE_EVENT1("nfa_hci_is_valid_cfg Reusing: %u",
- nfa_hci_cb.cfg.dyn_gates[xx].gate_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hci_is_valid_cfg Reusing: %u",
+ nfa_hci_cb.cfg.dyn_gates[xx].gate_id);
return false;
}
}
if ((nfa_hci_cb.cfg.dyn_gates[xx].gate_owner & (~NFA_HANDLE_GROUP_HCI)) >=
NFA_HCI_MAX_APP_CB) {
- NFA_TRACE_EVENT1("nfa_hci_is_valid_cfg Invalid Gate owner: %u",
- nfa_hci_cb.cfg.dyn_gates[xx].gate_owner);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hci_is_valid_cfg Invalid Gate owner: %u",
+ nfa_hci_cb.cfg.dyn_gates[xx].gate_owner);
return false;
}
- if (nfa_hci_cb.cfg.dyn_gates[xx].gate_id != NFA_HCI_CONNECTIVITY_GATE) {
+ if (!((nfa_hci_cb.cfg.dyn_gates[xx].gate_id ==
+ NFA_HCI_CONNECTIVITY_GATE) ||
+ ((nfa_hci_cb.cfg.dyn_gates[xx].gate_id >=
+ NFA_HCI_PROP_GATE_FIRST) ||
+ (nfa_hci_cb.cfg.dyn_gates[xx].gate_id <=
+ NFA_HCI_PROP_GATE_LAST)))) {
/* The gate owner should be one of the registered application */
for (zz = 0; zz < app_count; zz++) {
if (nfa_hci_cb.cfg.dyn_gates[xx].gate_owner == reg_app[zz]) break;
}
if (zz == app_count) {
- NFA_TRACE_EVENT1("nfa_hci_is_valid_cfg Invalid Gate owner: %u",
- nfa_hci_cb.cfg.dyn_gates[xx].gate_owner);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hci_is_valid_cfg Invalid Gate owner: %u",
+ nfa_hci_cb.cfg.dyn_gates[xx].gate_owner);
return false;
}
}
@@ -333,8 +357,9 @@
if ((nfa_hci_cb.cfg.dyn_pipes[yy].pipe_id != 0) &&
(nfa_hci_cb.cfg.dyn_pipes[xx].pipe_id ==
nfa_hci_cb.cfg.dyn_pipes[yy].pipe_id)) {
- NFA_TRACE_EVENT1("nfa_hci_is_valid_cfg Reusing: %u",
- nfa_hci_cb.cfg.dyn_pipes[xx].pipe_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hci_is_valid_cfg Reusing: %u",
+ nfa_hci_cb.cfg.dyn_pipes[xx].pipe_id);
return false;
}
}
@@ -343,8 +368,9 @@
if (nfa_hci_cb.cfg.dyn_pipes[xx].local_gate == valid_gate[zz]) break;
}
if (zz == gate_count) {
- NFA_TRACE_EVENT1("nfa_hci_is_valid_cfg Invalid Gate: %u",
- nfa_hci_cb.cfg.dyn_pipes[xx].local_gate);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hci_is_valid_cfg Invalid Gate: %u",
+ nfa_hci_cb.cfg.dyn_pipes[xx].local_gate);
return false;
}
}
@@ -405,8 +431,8 @@
**
*******************************************************************************/
void nfa_hci_proc_nfcc_power_mode(uint8_t nfcc_power_mode) {
- NFA_TRACE_DEBUG1("nfa_hci_proc_nfcc_power_mode () nfcc_power_mode=%d",
- nfcc_power_mode);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfcc_power_mode=%d", nfcc_power_mode);
/* if NFCC power mode is change to full power */
if (nfcc_power_mode == NFA_DM_PWR_MODE_FULL) {
@@ -423,7 +449,7 @@
nfa_hci_cb.num_ee_dis_req_ntf = 0;
nfa_hci_cb.num_hot_plug_evts = 0;
} else {
- NFA_TRACE_ERROR0("nfa_hci_proc_nfcc_power_mode (): Cannot restore now");
+ LOG(ERROR) << StringPrintf("Cannot restore now");
nfa_sys_cback_notify_nfcc_power_mode_proc_complete(NFA_ID_HCI);
}
} else {
@@ -485,7 +511,7 @@
void nfa_hci_startup_complete(tNFA_STATUS status) {
tNFA_HCI_EVT_DATA evt_data;
- NFA_TRACE_EVENT1("nfa_hci_startup_complete (): Status: %u", status);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Status: %u", status);
nfa_sys_stop_timer(&nfa_hci_cb.timer);
@@ -509,6 +535,43 @@
/*******************************************************************************
**
+** Function nfa_hci_enable_one_nfcee
+**
+** Description Enable NFCEE Hosts which are discovered.
+**
+** Returns None
+**
+*******************************************************************************/
+void nfa_hci_enable_one_nfcee(void) {
+ uint8_t xx;
+ uint8_t nfceeid = 0;
+
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%d", nfa_hci_cb.num_nfcee);
+
+ for (xx = 0; xx < nfa_hci_cb.num_nfcee; xx++) {
+ nfceeid = nfa_hci_cb.ee_info[xx].ee_handle & ~NFA_HANDLE_GROUP_EE;
+ if (nfa_hci_cb.ee_info[xx].ee_status == NFA_EE_STATUS_INACTIVE) {
+ NFC_NfceeModeSet(nfceeid, NFC_MODE_ACTIVATE);
+ return;
+ }
+ }
+
+ if (xx == nfa_hci_cb.num_nfcee) {
+ if ((nfa_hci_cb.hci_state == NFA_HCI_STATE_WAIT_NETWK_ENABLE) ||
+ (nfa_hci_cb.hci_state == NFA_HCI_STATE_RESTORE_NETWK_ENABLE)) {
+ nfa_hciu_send_get_param_cmd(NFA_HCI_ADMIN_PIPE, NFA_HCI_HOST_LIST_INDEX);
+ } else if (nfa_hci_cb.hci_state == NFA_HCI_STATE_EE_RECOVERY) {
+ nfa_hci_cb.hci_state = NFA_HCI_STATE_IDLE;
+ if (nfa_ee_cb.isDiscoveryStopped == true) {
+ nfa_dm_act_start_rf_discovery(NULL);
+ nfa_ee_cb.isDiscoveryStopped = false;
+ }
+ }
+ }
+}
+
+/*******************************************************************************
+**
** Function nfa_hci_startup
**
** Description Perform HCI startup
@@ -518,13 +581,11 @@
*******************************************************************************/
void nfa_hci_startup(void) {
tNFA_STATUS status = NFA_STATUS_FAILED;
- tNFA_EE_INFO ee_info[2];
- uint8_t num_nfcee = 2;
uint8_t target_handle;
uint8_t count = 0;
bool found = false;
- if (HCI_LOOPBACK_DEBUG) {
+ if (HCI_LOOPBACK_DEBUG == NFA_HCI_DEBUG_ON) {
/* First step in initialization is to open the admin pipe */
nfa_hciu_send_open_pipe_cmd(NFA_HCI_ADMIN_PIPE);
return;
@@ -533,38 +594,42 @@
/* We can only start up if NV Ram is read and EE discovery is complete */
if (nfa_hci_cb.nv_read_cmplt && nfa_hci_cb.ee_disc_cmplt &&
(nfa_hci_cb.conn_id == 0)) {
- NFA_EeGetInfo(&num_nfcee, ee_info);
+ if (NFC_GetNCIVersion() == NCI_VERSION_2_0) {
+ NFC_SetStaticHciCback(nfa_hci_conn_cback);
+ } else {
+ NFA_EeGetInfo(&nfa_hci_cb.num_nfcee, nfa_hci_cb.ee_info);
- while ((count < num_nfcee) && (!found)) {
- target_handle = (uint8_t)ee_info[count].ee_handle;
+ while ((count < nfa_hci_cb.num_nfcee) && (!found)) {
+ target_handle = (uint8_t)nfa_hci_cb.ee_info[count].ee_handle;
- if (ee_info[count].ee_interface[0] == NFA_EE_INTERFACE_HCI_ACCESS) {
- found = true;
+ if (nfa_hci_cb.ee_info[count].ee_interface[0] ==
+ NFA_EE_INTERFACE_HCI_ACCESS) {
+ found = true;
- if (ee_info[count].ee_status == NFA_EE_STATUS_INACTIVE) {
- NFC_NfceeModeSet(target_handle, NFC_MODE_ACTIVATE);
+ if (nfa_hci_cb.ee_info[count].ee_status == NFA_EE_STATUS_INACTIVE) {
+ NFC_NfceeModeSet(target_handle, NFC_MODE_ACTIVATE);
+ }
+ if ((status = NFC_ConnCreate(NCI_DEST_TYPE_NFCEE, target_handle,
+ NFA_EE_INTERFACE_HCI_ACCESS,
+ nfa_hci_conn_cback)) == NFA_STATUS_OK)
+ nfa_sys_start_timer(&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT,
+ NFA_HCI_CON_CREATE_TIMEOUT_VAL);
+ else {
+ nfa_hci_cb.hci_state = NFA_HCI_STATE_DISABLED;
+ LOG(ERROR) << StringPrintf(
+ "nfa_hci_startup - Failed to Create Logical connection. HCI "
+ "Initialization/Restore failed");
+ nfa_hci_startup_complete(NFA_STATUS_FAILED);
+ }
}
- status =
- NFC_ConnCreate(NCI_DEST_TYPE_NFCEE, target_handle,
- NFA_EE_INTERFACE_HCI_ACCESS, nfa_hci_conn_cback);
- if (status == NFA_STATUS_OK)
- nfa_sys_start_timer(&nfa_hci_cb.timer, NFA_HCI_RSP_TIMEOUT_EVT,
- NFA_HCI_CON_CREATE_TIMEOUT_VAL);
- else {
- nfa_hci_cb.hci_state = NFA_HCI_STATE_DISABLED;
- NFA_TRACE_ERROR0(
- "nfa_hci_startup - Failed to Create Logical connection. HCI "
- "Initialization/Restore failed");
- nfa_hci_startup_complete(NFA_STATUS_FAILED);
- }
+ count++;
}
- count++;
- }
- if (!found) {
- NFA_TRACE_ERROR0(
- "nfa_hci_startup - HCI ACCESS Interface not discovered. HCI "
- "Initialization/Restore failed");
- nfa_hci_startup_complete(NFA_STATUS_FAILED);
+ if (!found) {
+ LOG(ERROR) << StringPrintf(
+ "nfa_hci_startup - HCI ACCESS Interface not discovered. HCI "
+ "Initialization/Restore failed");
+ nfa_hci_startup_complete(NFA_STATUS_FAILED);
+ }
}
}
}
@@ -579,7 +644,7 @@
**
*******************************************************************************/
static void nfa_hci_sys_enable(void) {
- NFA_TRACE_DEBUG0("nfa_hci_sys_enable ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfa_ee_reg_cback_enable_done(&nfa_hci_ee_info_cback);
nfa_nv_co_read((uint8_t*)&nfa_hci_cb.cfg, sizeof(nfa_hci_cb.cfg),
@@ -605,8 +670,10 @@
if (nfa_hci_cb.conn_id) {
if (nfa_sys_is_graceful_disable()) {
/* Tell all applications stack is down */
- nfa_hciu_send_to_all_apps(NFA_HCI_EXIT_EVT, &evt_data);
- NFC_ConnClose(nfa_hci_cb.conn_id);
+ if (NFC_GetNCIVersion() == NCI_VERSION_1_0) {
+ nfa_hciu_send_to_all_apps(NFA_HCI_EXIT_EVT, &evt_data);
+ NFC_ConnClose(nfa_hci_cb.conn_id);
+ }
return;
}
nfa_hci_cb.conn_id = 0;
@@ -633,10 +700,9 @@
uint8_t chaining_bit;
uint8_t pipe;
uint16_t pkt_len;
-#if (BT_TRACE_VERBOSE == TRUE)
char buff[100];
-#endif
-
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "%s State: %u Cmd: %u", __func__, nfa_hci_cb.hci_state, event);
if (event == NFC_CONN_CREATE_CEVT) {
nfa_hci_cb.conn_id = conn_id;
nfa_hci_cb.buff_size = p_data->conn_create.buff_size;
@@ -676,9 +742,7 @@
p = (uint8_t*)(p_pkt + 1) + p_pkt->offset;
pkt_len = p_pkt->len;
-#if (BT_TRACE_PROTOCOL == TRUE)
- DispHcp(p, pkt_len, true, (bool)!nfa_hci_cb.assembling);
-#endif
+ DispHcp(p, pkt_len, true);
chaining_bit = ((*p) >> 0x07) & 0x01;
pipe = (*p++) & 0x7F;
@@ -708,8 +772,8 @@
if (nfa_hci_cb.assembly_failed) {
/* If Reassembly failed because of insufficient buffer, just drop the new
* segmented packets */
- NFA_TRACE_ERROR1(
- "nfa_hci_conn_cback (): Insufficient buffer to Reassemble HCP "
+ LOG(ERROR) << StringPrintf(
+ "Insufficient buffer to Reassemble HCP "
"packet! Dropping :%u bytes",
pkt_len);
} else {
@@ -725,19 +789,12 @@
}
}
-#if (BT_TRACE_VERBOSE == TRUE)
- NFA_TRACE_EVENT5(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_hci_conn_cback Recvd data pipe:%d %s chain:%d assmbl:%d len:%d",
- (uint8_t)pipe, nfa_hciu_get_type_inst_names(pipe, nfa_hci_cb.type,
- nfa_hci_cb.inst, buff),
+ (uint8_t)pipe,
+ nfa_hciu_get_type_inst_names(pipe, nfa_hci_cb.type, nfa_hci_cb.inst,
+ buff),
(uint8_t)chaining_bit, (uint8_t)nfa_hci_cb.assembling, p_pkt->len);
-#else
- NFA_TRACE_EVENT6(
- "nfa_hci_conn_cback Recvd data pipe:%d Type: %u Inst: %u chain:%d "
- "reassm:%d len:%d",
- pipe, nfa_hci_cb.type, nfa_hci_cb.inst, chaining_bit,
- nfa_hci_cb.assembling, p_pkt->len);
-#endif
/* If still reassembling fragments, just return */
if (nfa_hci_cb.assembling) {
@@ -763,7 +820,7 @@
} else if (nfa_hci_cb.type == NFA_HCI_RESPONSE_TYPE) {
nfa_hci_handle_admin_gate_rsp(p, (uint8_t)pkt_len);
} else if (nfa_hci_cb.type == NFA_HCI_EVENT_TYPE) {
- nfa_hci_handle_admin_gate_evt(p);
+ nfa_hci_handle_admin_gate_evt();
}
break;
@@ -839,20 +896,21 @@
** Returns None
**
*******************************************************************************/
-void nfa_hci_rsp_timeout(tNFA_HCI_EVENT_DATA* p_evt_data) {
+void nfa_hci_rsp_timeout() {
tNFA_HCI_EVT evt = 0;
tNFA_HCI_EVT_DATA evt_data;
uint8_t delete_pipe;
- NFA_TRACE_EVENT2("nfa_hci_rsp_timeout () State: %u Cmd: %u",
- nfa_hci_cb.hci_state, nfa_hci_cb.cmd_sent);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "State: %u Cmd: %u", nfa_hci_cb.hci_state, nfa_hci_cb.cmd_sent);
evt_data.status = NFA_STATUS_FAILED;
switch (nfa_hci_cb.hci_state) {
case NFA_HCI_STATE_STARTUP:
case NFA_HCI_STATE_RESTORE:
- NFA_TRACE_ERROR0("nfa_hci_rsp_timeout - Initialization failed!");
+ LOG(ERROR) << StringPrintf(
+ "nfa_hci_rsp_timeout - Initialization failed!");
nfa_hci_startup_complete(NFA_STATUS_TIMEOUT);
break;
@@ -996,8 +1054,8 @@
break;
case NFA_HCI_STATE_DISABLED:
default:
- NFA_TRACE_DEBUG0(
- "nfa_hci_rsp_timeout () Timeout in DISABLED/ Invalid state");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Timeout in DISABLED/ Invalid state");
break;
}
if (evt != 0) nfa_hciu_send_to_app(evt, &evt_data, nfa_hci_cb.app_in_use);
@@ -1042,8 +1100,8 @@
nfa_hci_cb.msg_len = nfa_hci_cb.max_msg_len;
/* Set Reassembly failed */
nfa_hci_cb.assembly_failed = true;
- NFA_TRACE_ERROR1(
- "nfa_hci_assemble_msg (): Insufficient buffer to Reassemble HCP "
+ LOG(ERROR) << StringPrintf(
+ "Insufficient buffer to Reassemble HCP "
"packet! Dropping :%u bytes",
((nfa_hci_cb.msg_len + data_len) - nfa_hci_cb.max_msg_len));
} else {
@@ -1062,23 +1120,18 @@
**
*******************************************************************************/
static bool nfa_hci_evt_hdlr(NFC_HDR* p_msg) {
- tNFA_HCI_EVENT_DATA* p_evt_data = (tNFA_HCI_EVENT_DATA*)p_msg;
-
-#if (BT_TRACE_VERBOSE == TRUE)
- NFA_TRACE_EVENT4(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_hci_evt_hdlr state: %s (%d) event: %s (0x%04x)",
- nfa_hciu_get_state_name(nfa_hci_cb.hci_state), nfa_hci_cb.hci_state,
- nfa_hciu_get_event_name(p_evt_data->hdr.event), p_evt_data->hdr.event);
-#else
- NFA_TRACE_EVENT2("nfa_hci_evt_hdlr state: %d event: 0x%04x",
- nfa_hci_cb.hci_state, p_evt_data->hdr.event);
-#endif
+ nfa_hciu_get_state_name(nfa_hci_cb.hci_state).c_str(),
+ nfa_hci_cb.hci_state, nfa_hciu_get_event_name(p_msg->event).c_str(),
+ p_msg->event);
/* If this is an API request, queue it up */
if ((p_msg->event >= NFA_HCI_FIRST_API_EVENT) &&
(p_msg->event <= NFA_HCI_LAST_API_EVENT)) {
GKI_enqueue(&nfa_hci_cb.hci_api_q, p_msg);
} else {
+ tNFA_HCI_EVENT_DATA* p_evt_data = (tNFA_HCI_EVENT_DATA*)p_msg;
switch (p_msg->event) {
case NFA_HCI_RSP_NV_READ_EVT:
nfa_hci_handle_nv_read(p_evt_data->nv_read.block,
@@ -1090,15 +1143,15 @@
break;
case NFA_HCI_RSP_TIMEOUT_EVT:
- nfa_hci_rsp_timeout((tNFA_HCI_EVENT_DATA*)p_msg);
+ nfa_hci_rsp_timeout();
break;
case NFA_HCI_CHECK_QUEUE_EVT:
- if (HCI_LOOPBACK_DEBUG) {
+ if (HCI_LOOPBACK_DEBUG == NFA_HCI_DEBUG_ON) {
if (p_msg->len != 0) {
- tNFC_DATA_CEVT xx;
- xx.p_data = p_msg;
- nfa_hci_conn_cback(0, NFC_DATA_CEVT, (tNFC_CONN*)&xx);
+ tNFC_CONN nfc_conn;
+ nfc_conn.data.p_data = p_msg;
+ nfa_hci_conn_cback(0, NFC_DATA_CEVT, &nfc_conn);
return false;
}
}
diff --git a/src/nfa/hci/nfa_hci_utils.c b/src/nfa/hci/nfa_hci_utils.cc
similarity index 86%
rename from src/nfa/hci/nfa_hci_utils.c
rename to src/nfa/hci/nfa_hci_utils.cc
index 895f09e..d6d3720 100644
--- a/src/nfa/hci/nfa_hci_utils.c
+++ b/src/nfa/hci/nfa_hci_utils.cc
@@ -21,21 +21,24 @@
* This file contains the utility functions for the NFA HCI.
*
******************************************************************************/
-#include <string.h>
+#include <string>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_dm_int.h"
#include "nfa_hci_api.h"
#include "nfa_hci_defs.h"
#include "nfa_hci_int.h"
-#include "nfa_mem_co.h"
-#include "nfa_nv_co.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
-#include "nfc_api.h"
#include "trace_api.h"
-static void handle_debug_loopback(NFC_HDR* p_buf, uint8_t pipe, uint8_t type,
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
+static void handle_debug_loopback(NFC_HDR* p_buf, uint8_t type,
uint8_t instruction);
-bool HCI_LOOPBACK_DEBUG = false;
+uint8_t HCI_LOOPBACK_DEBUG = NFA_HCI_DEBUG_OFF;
/*******************************************************************************
**
@@ -250,7 +253,7 @@
if (nfa_hciu_find_gate_by_gid(gate_id) == NULL) break;
}
if (gate_id > NFA_HCI_LAST_PROP_GATE) {
- NFA_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"nfa_hci_alloc_gate - no free Gate ID: %u App Handle: 0x%04x",
gate_id, app_handle);
return (NULL);
@@ -266,8 +269,8 @@
pg->gate_owner = app_handle;
pg->pipe_inx_mask = 0;
- NFA_TRACE_DEBUG2("nfa_hciu_alloc_gate id:%d app_handle: 0x%04x", gate_id,
- app_handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_hciu_alloc_gate id:%d app_handle: 0x%04x", gate_id, app_handle);
nfa_hci_cb.nv_write_needed = true;
return (pg);
@@ -275,7 +278,7 @@
}
/* If here, no free gate control block */
- NFA_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"nfa_hci_alloc_gate - no CB Gate ID: %u App Handle: 0x%04x", gate_id,
app_handle);
return (NULL);
@@ -301,16 +304,11 @@
tNFA_STATUS status = NFA_STATUS_OK;
uint16_t max_seg_hcp_pkt_size = nfa_hci_cb.buff_size - NCI_DATA_HDR_SIZE;
-#if (BT_TRACE_VERBOSE == TRUE)
char buff[100];
- NFA_TRACE_DEBUG3(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_hciu_send_msg pipe_id:%d %s len:%d", pipe_id,
nfa_hciu_get_type_inst_names(pipe_id, type, instruction, buff), msg_len);
-#else
- NFA_TRACE_DEBUG4("nfa_hciu_send_msg pipe_id:%d Type: %u Inst: %u len: %d",
- pipe_id, type, instruction, msg_len);
-#endif
if (instruction == NFA_HCI_ANY_GET_PARAMETER)
nfa_hci_cb.param_in_use = *p_msg;
@@ -352,17 +350,14 @@
if (msg_len > 0) p_msg += data_len;
}
-#if (BT_TRACE_PROTOCOL == TRUE)
- DispHcp(((uint8_t*)(p_buf + 1) + p_buf->offset), p_buf->len, false,
- (bool)((p_buf->len - data_len) == 2));
-#endif
+ DispHcp(((uint8_t*)(p_buf + 1) + p_buf->offset), p_buf->len, false);
- if (HCI_LOOPBACK_DEBUG)
- handle_debug_loopback(p_buf, pipe_id, type, instruction);
+ if (HCI_LOOPBACK_DEBUG == NFA_HCI_DEBUG_ON)
+ handle_debug_loopback(p_buf, type, instruction);
else
status = NFC_SendData(nfa_hci_cb.conn_id, p_buf);
} else {
- NFA_TRACE_ERROR0("nfa_hciu_send_data_packet no buffers");
+ LOG(ERROR) << StringPrintf("nfa_hciu_send_data_packet no buffers");
status = NFA_STATUS_NO_BUFFERS;
break;
}
@@ -404,7 +399,7 @@
}
}
- NFA_TRACE_DEBUG1("nfa_hciu_get_allocated_gate_list () returns: %u", count);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("returns: %u", count);
return (count);
}
@@ -434,7 +429,8 @@
for (xx = 0, pp = nfa_hci_cb.cfg.dyn_pipes; xx < NFA_HCI_MAX_PIPE_CB;
xx++, pp++) {
if (pp->pipe_id == 0) {
- NFA_TRACE_DEBUG2("nfa_hciu_alloc_pipe:%d, index:%d", pipe_id, xx);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hciu_alloc_pipe:%d, index:%d", pipe_id, xx);
pp->pipe_id = pipe_id;
nfa_hci_cb.nv_write_needed = true;
@@ -442,7 +438,8 @@
}
}
- NFA_TRACE_DEBUG1("nfa_hciu_alloc_pipe:%d, NO free entries !!", pipe_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hciu_alloc_pipe:%d, NO free entries !!", pipe_id);
return (NULL);
}
@@ -459,9 +456,9 @@
tNFA_HCI_DYN_GATE* p_gate = nfa_hciu_find_gate_by_gid(gate_id);
if (p_gate != NULL) {
- NFA_TRACE_DEBUG3(
- "nfa_hciu_release_gate () ID: %d owner: 0x%04x pipe_inx_mask: 0x%04x",
- gate_id, p_gate->gate_owner, p_gate->pipe_inx_mask);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("ID: %d owner: 0x%04x pipe_inx_mask: 0x%04x", gate_id,
+ p_gate->gate_owner, p_gate->pipe_inx_mask);
p_gate->gate_id = 0;
p_gate->gate_owner = 0;
@@ -469,7 +466,7 @@
nfa_hci_cb.nv_write_needed = true;
} else {
- NFA_TRACE_WARNING1("nfa_hciu_release_gate () ID: %d NOT FOUND", gate_id);
+ LOG(WARNING) << StringPrintf("ID: %d NOT FOUND", gate_id);
}
}
@@ -506,7 +503,7 @@
pipe_index = (uint8_t)(p_pipe - nfa_hci_cb.cfg.dyn_pipes);
p_gate->pipe_inx_mask |= (uint32_t)(1 << pipe_index);
- NFA_TRACE_DEBUG4(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_hciu_add_pipe_to_gate Gate ID: 0x%02x Pipe ID: 0x%02x "
"pipe_index: %u App Handle: 0x%08x",
local_gate, pipe_id, pipe_index, p_gate->gate_owner);
@@ -514,7 +511,8 @@
}
}
- NFA_TRACE_DEBUG1("nfa_hciu_add_pipe_to_gate: 0x%02x NOT FOUND", local_gate);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_hciu_add_pipe_to_gate: 0x%02x NOT FOUND", local_gate);
return (NFA_HCI_ADM_E_NO_PIPES_AVAILABLE);
}
@@ -536,7 +534,7 @@
tNFA_HCI_DYN_PIPE* p_pipe;
uint8_t pipe_index;
- NFA_TRACE_EVENT4(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_hciu_add_pipe_to_static_gate (%u) Pipe: 0x%02x Dest Host: 0x%02x "
"Dest Gate: 0x%02x)",
local_gate, pipe_id, dest_host, dest_gate);
@@ -576,8 +574,8 @@
tNFA_HCI_DYN_PIPE* pp;
int xx;
- NFA_TRACE_DEBUG1("nfa_hciu_find_pipe_by_owner () app_handle:0x%x",
- app_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("app_handle:0x%x", app_handle);
/* Loop through all pipes looking for the owner */
for (xx = 0, pp = nfa_hci_cb.cfg.dyn_pipes; xx < NFA_HCI_MAX_PIPE_CB;
@@ -611,8 +609,8 @@
tNFA_HCI_DYN_PIPE* pp;
int xx;
- NFA_TRACE_DEBUG3(
- "nfa_hciu_check_pipe_between_gates () Local gate: 0x%02X, Host[0x%02X] "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Local gate: 0x%02X, Host[0x%02X] "
"gate: 0x%02X",
local_gate, dest_host, dest_gate);
@@ -645,8 +643,8 @@
tNFA_HCI_DYN_PIPE* pp;
int xx;
- NFA_TRACE_DEBUG1("nfa_hciu_find_pipe_by_owner () app_handle:0x%x",
- app_handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("app_handle:0x%x", app_handle);
/* Loop through all pipes looking for the owner */
for (xx = 0, pp = nfa_hci_cb.cfg.dyn_pipes; xx < NFA_HCI_MAX_PIPE_CB;
@@ -676,7 +674,7 @@
tNFA_HCI_DYN_PIPE* pp;
int xx;
- NFA_TRACE_DEBUG1("nfa_hciu_find_pipe_on_gate () Gate:0x%x", gate_id);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Gate:0x%x", gate_id);
/* Loop through all pipes looking for the owner */
for (xx = 0, pp = nfa_hci_cb.cfg.dyn_pipes; xx < NFA_HCI_MAX_PIPE_CB;
@@ -766,7 +764,7 @@
tNFA_HCI_DYN_PIPE* pp;
int xx;
- NFA_TRACE_DEBUG1("nfa_hciu_find_active_pipe_on_gate () Gate:0x%x", gate_id);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Gate:0x%x", gate_id);
/* Loop through all pipes looking for the owner */
for (xx = 0, pp = nfa_hci_cb.cfg.dyn_pipes; xx < NFA_HCI_MAX_PIPE_CB;
@@ -799,13 +797,15 @@
tNFA_HCI_DYN_PIPE* p_pipe;
uint8_t pipe_index;
- NFA_TRACE_EVENT1("nfa_hciu_release_pipe: %u", pipe_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hciu_release_pipe: %u", pipe_id);
p_pipe = nfa_hciu_find_pipe_by_pid(pipe_id);
if (p_pipe == NULL) return (NFA_HCI_ANY_E_NOK);
if (pipe_id > NFA_HCI_LAST_DYNAMIC_PIPE) {
- NFA_TRACE_DEBUG1("ignore pipe: %d", pipe_id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("ignore pipe: %d", pipe_id);
return (NFA_HCI_ANY_E_NOK);
}
@@ -847,7 +847,8 @@
int xx;
tNFA_HCI_EVT_DATA evt_data;
- NFA_TRACE_EVENT1("nfa_hciu_remove_all_pipes_from_host (0x%02x)", host);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hciu_remove_all_pipes_from_host (0x%02x)", host);
/* Remove all pipes from the specified host connected to all generic gates */
for (xx = 0, pp = nfa_hci_cb.cfg.dyn_pipes; xx < NFA_HCI_MAX_PIPE_CB;
@@ -887,7 +888,7 @@
data[1] = dest_host;
data[2] = dest_gate;
- NFA_TRACE_DEBUG3(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_hciu_send_create_pipe_cmd source_gate:%d, dest_host:%d, "
"dest_gate:%d",
source_gate, dest_host, dest_gate);
@@ -910,10 +911,11 @@
tNFA_STATUS nfa_hciu_send_delete_pipe_cmd(uint8_t pipe) {
tNFA_STATUS status;
- NFA_TRACE_DEBUG1("nfa_hciu_send_delete_pipe_cmd: %d", pipe);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hciu_send_delete_pipe_cmd: %d", pipe);
if (pipe > NFA_HCI_LAST_DYNAMIC_PIPE) {
- NFA_TRACE_DEBUG1("ignore pipe: %d", pipe);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("ignore pipe: %d", pipe);
return (NFA_HCI_ANY_E_NOK);
}
nfa_hci_cb.pipe_in_use = pipe;
@@ -940,7 +942,8 @@
tNFA_STATUS status;
uint16_t id_ref_data = 0x0102;
- NFA_TRACE_DEBUG0("nfa_hciu_send_clear_all_pipe_cmd");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_hciu_send_clear_all_pipe_cmd");
status =
nfa_hciu_send_msg(NFA_HCI_ADMIN_PIPE, NFA_HCI_COMMAND_TYPE,
@@ -1057,7 +1060,7 @@
}
if (app_handle != NFA_HANDLE_INVALID) {
- NFA_TRACE_WARNING2(
+ LOG(WARNING) << StringPrintf(
"nfa_hciu_send_to_app no callback, event: 0x%04x app_handle: 0x%04x",
event, app_handle);
}
@@ -1103,7 +1106,6 @@
}
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function nfa_hciu_get_response_name
@@ -1115,34 +1117,34 @@
** Returns pointer to the name
**
*******************************************************************************/
-char* nfa_hciu_get_response_name(uint8_t rsp_code) {
+static std::string nfa_hciu_get_response_name(uint8_t rsp_code) {
switch (rsp_code) {
case NFA_HCI_ANY_OK:
- return ("ANY_OK");
+ return "ANY_OK";
case NFA_HCI_ANY_E_NOT_CONNECTED:
- return ("ANY_E_NOT_CONNECTED");
+ return "ANY_E_NOT_CONNECTED";
case NFA_HCI_ANY_E_CMD_PAR_UNKNOWN:
- return ("ANY_E_CMD_PAR_UNKNOWN");
+ return "ANY_E_CMD_PAR_UNKNOWN";
case NFA_HCI_ANY_E_NOK:
- return ("ANY_E_NOK");
+ return "ANY_E_NOK";
case NFA_HCI_ADM_E_NO_PIPES_AVAILABLE:
- return ("ADM_E_NO_PIPES_AVAILABLE");
+ return "ADM_E_NO_PIPES_AVAILABLE";
case NFA_HCI_ANY_E_REG_PAR_UNKNOWN:
- return ("ANY_E_REG_PAR_UNKNOWN");
+ return "ANY_E_REG_PAR_UNKNOWN";
case NFA_HCI_ANY_E_PIPE_NOT_OPENED:
- return ("ANY_E_PIPE_NOT_OPENED");
+ return "ANY_E_PIPE_NOT_OPENED";
case NFA_HCI_ANY_E_CMD_NOT_SUPPORTED:
- return ("ANY_E_CMD_NOT_SUPPORTED");
+ return "ANY_E_CMD_NOT_SUPPORTED";
case NFA_HCI_ANY_E_INHIBITED:
- return ("ANY_E_INHIBITED");
+ return "ANY_E_INHIBITED";
case NFA_HCI_ANY_E_TIMEOUT:
- return ("ANY_E_TIMEOUT");
+ return "ANY_E_TIMEOUT";
case NFA_HCI_ANY_E_REG_ACCESS_DENIED:
- return ("ANY_E_REG_ACCESS_DENIED");
+ return "ANY_E_REG_ACCESS_DENIED";
case NFA_HCI_ANY_E_PIPE_ACCESS_DENIED:
- return ("ANY_E_PIPE_ACCESS_DENIED");
+ return "ANY_E_PIPE_ACCESS_DENIED";
default:
- return ("UNKNOWN");
+ return "UNKNOWN";
}
}
@@ -1155,16 +1157,16 @@
** Returns pointer to the name
**
*******************************************************************************/
-char* nfa_hciu_type_2_str(uint8_t type) {
+static std::string nfa_hciu_type_2_str(uint8_t type) {
switch (type) {
case NFA_HCI_COMMAND_TYPE:
- return ("COMMAND");
+ return "COMMAND";
case NFA_HCI_EVENT_TYPE:
- return ("EVENT");
+ return "EVENT";
case NFA_HCI_RESPONSE_TYPE:
- return ("RESPONSE");
+ return "RESPONSE";
default:
- return ("UNKNOWN");
+ return "UNKNOWN";
}
}
@@ -1177,30 +1179,30 @@
** Returns pointer to the name
**
*******************************************************************************/
-char* nfa_hciu_instr_2_str(uint8_t instruction) {
+std::string nfa_hciu_instr_2_str(uint8_t instruction) {
switch (instruction) {
case NFA_HCI_ANY_SET_PARAMETER:
- return ("ANY_SET_PARAMETER");
+ return "ANY_SET_PARAMETER";
case NFA_HCI_ANY_GET_PARAMETER:
- return ("ANY_GET_PARAMETER");
+ return "ANY_GET_PARAMETER";
case NFA_HCI_ANY_OPEN_PIPE:
- return ("ANY_OPEN_PIPE");
+ return "ANY_OPEN_PIPE";
case NFA_HCI_ANY_CLOSE_PIPE:
- return ("ANY_CLOSE_PIPE");
+ return "ANY_CLOSE_PIPE";
case NFA_HCI_ADM_CREATE_PIPE:
- return ("ADM_CREATE_PIPE");
+ return "ADM_CREATE_PIPE";
case NFA_HCI_ADM_DELETE_PIPE:
- return ("ADM_DELETE_PIPE");
+ return "ADM_DELETE_PIPE";
case NFA_HCI_ADM_NOTIFY_PIPE_CREATED:
- return ("ADM_NOTIFY_PIPE_CREATED");
+ return "ADM_NOTIFY_PIPE_CREATED";
case NFA_HCI_ADM_NOTIFY_PIPE_DELETED:
- return ("ADM_NOTIFY_PIPE_DELETED");
+ return "ADM_NOTIFY_PIPE_DELETED";
case NFA_HCI_ADM_CLEAR_ALL_PIPE:
- return ("ADM_CLEAR_ALL_PIPE");
+ return "ADM_CLEAR_ALL_PIPE";
case NFA_HCI_ADM_NOTIFY_ALL_PIPE_CLEARED:
- return ("ADM_NOTIFY_ALL_PIPE_CLEARED");
+ return "ADM_NOTIFY_ALL_PIPE_CLEARED";
default:
- return ("UNKNOWN");
+ return "UNKNOWN";
}
}
@@ -1213,49 +1215,48 @@
** Returns pointer to the name
**
*******************************************************************************/
-char* nfa_hciu_get_event_name(uint16_t event) {
+std::string nfa_hciu_get_event_name(uint16_t event) {
switch (event) {
case NFA_HCI_API_REGISTER_APP_EVT:
- return ("API_REGISTER");
+ return "API_REGISTER";
case NFA_HCI_API_DEREGISTER_APP_EVT:
- return ("API_DEREGISTER");
+ return "API_DEREGISTER";
case NFA_HCI_API_GET_APP_GATE_PIPE_EVT:
- return ("API_GET_GATE_LIST");
+ return "API_GET_GATE_LIST";
case NFA_HCI_API_ALLOC_GATE_EVT:
- return ("API_ALLOC_GATE");
+ return "API_ALLOC_GATE";
case NFA_HCI_API_DEALLOC_GATE_EVT:
- return ("API_DEALLOC_GATE");
+ return "API_DEALLOC_GATE";
case NFA_HCI_API_GET_HOST_LIST_EVT:
- return ("API_GET_HOST_LIST");
+ return "API_GET_HOST_LIST";
case NFA_HCI_API_GET_REGISTRY_EVT:
- return ("API_GET_REG_VALUE");
+ return "API_GET_REG_VALUE";
case NFA_HCI_API_SET_REGISTRY_EVT:
- return ("API_SET_REG_VALUE");
+ return "API_SET_REG_VALUE";
case NFA_HCI_API_CREATE_PIPE_EVT:
- return ("API_CREATE_PIPE");
+ return "API_CREATE_PIPE";
case NFA_HCI_API_OPEN_PIPE_EVT:
- return ("API_OPEN_PIPE");
+ return "API_OPEN_PIPE";
case NFA_HCI_API_CLOSE_PIPE_EVT:
- return ("API_CLOSE_PIPE");
+ return "API_CLOSE_PIPE";
case NFA_HCI_API_DELETE_PIPE_EVT:
- return ("API_DELETE_PIPE");
+ return "API_DELETE_PIPE";
case NFA_HCI_API_SEND_CMD_EVT:
- return ("API_SEND_COMMAND_EVT");
+ return "API_SEND_COMMAND_EVT";
case NFA_HCI_API_SEND_RSP_EVT:
- return ("API_SEND_RESPONSE_EVT");
+ return "API_SEND_RESPONSE_EVT";
case NFA_HCI_API_SEND_EVENT_EVT:
- return ("API_SEND_EVENT_EVT");
+ return "API_SEND_EVENT_EVT";
case NFA_HCI_RSP_NV_READ_EVT:
- return ("NV_READ_EVT");
+ return "NV_READ_EVT";
case NFA_HCI_RSP_NV_WRITE_EVT:
- return ("NV_WRITE_EVT");
+ return "NV_WRITE_EVT";
case NFA_HCI_RSP_TIMEOUT_EVT:
- return ("RESPONSE_TIMEOUT_EVT");
+ return "RESPONSE_TIMEOUT_EVT";
case NFA_HCI_CHECK_QUEUE_EVT:
- return ("CHECK_QUEUE");
-
+ return "CHECK_QUEUE";
default:
- return ("UNKNOWN");
+ return "UNKNOWN";
}
}
@@ -1268,29 +1269,28 @@
** Returns pointer to the name
**
*******************************************************************************/
-char* nfa_hciu_get_state_name(uint8_t state) {
+std::string nfa_hciu_get_state_name(uint8_t state) {
switch (state) {
case NFA_HCI_STATE_DISABLED:
- return ("DISABLED");
+ return "DISABLED";
case NFA_HCI_STATE_STARTUP:
- return ("STARTUP");
+ return "STARTUP";
case NFA_HCI_STATE_WAIT_NETWK_ENABLE:
- return ("WAIT_NETWK_ENABLE");
+ return "WAIT_NETWK_ENABLE";
case NFA_HCI_STATE_IDLE:
- return ("IDLE");
+ return "IDLE";
case NFA_HCI_STATE_WAIT_RSP:
- return ("WAIT_RSP");
+ return "WAIT_RSP";
case NFA_HCI_STATE_REMOVE_GATE:
- return ("REMOVE_GATE");
+ return "REMOVE_GATE";
case NFA_HCI_STATE_APP_DEREGISTER:
- return ("APP_DEREGISTER");
+ return "APP_DEREGISTER";
case NFA_HCI_STATE_RESTORE:
- return ("RESTORE");
+ return "RESTORE";
case NFA_HCI_STATE_RESTORE_NETWK_ENABLE:
- return ("WAIT_NETWK_ENABLE_AFTER_RESTORE");
-
+ return "WAIT_NETWK_ENABLE_AFTER_RESTORE";
default:
- return ("UNKNOWN");
+ return "UNKNOWN";
}
}
@@ -1307,26 +1307,27 @@
char* p_buff) {
int xx;
- xx = sprintf(p_buff, "Type: %s [0x%02x] ", nfa_hciu_type_2_str(type), type);
+ xx = sprintf(p_buff, "Type: %s [0x%02x] ", nfa_hciu_type_2_str(type).c_str(),
+ type);
switch (type) {
case NFA_HCI_COMMAND_TYPE:
- sprintf(&p_buff[xx], "Inst: %s [0x%02x] ", nfa_hciu_instr_2_str(inst),
- inst);
+ sprintf(&p_buff[xx], "Inst: %s [0x%02x] ",
+ nfa_hciu_instr_2_str(inst).c_str(), inst);
break;
case NFA_HCI_EVENT_TYPE:
- sprintf(&p_buff[xx], "Evt: %s [0x%02x] ", nfa_hciu_evt_2_str(pipe, inst),
- inst);
+ sprintf(&p_buff[xx], "Evt: %s [0x%02x] ",
+ nfa_hciu_evt_2_str(pipe, inst).c_str(), inst);
break;
case NFA_HCI_RESPONSE_TYPE:
sprintf(&p_buff[xx], "Resp: %s [0x%02x] ",
- nfa_hciu_get_response_name(inst), inst);
+ nfa_hciu_get_response_name(inst).c_str(), inst);
break;
default:
sprintf(&p_buff[xx], "Inst: %u ", inst);
break;
}
- return (p_buff);
+ return p_buff;
}
/*******************************************************************************
@@ -1338,40 +1339,36 @@
** Returns pointer to the name
**
*******************************************************************************/
-char* nfa_hciu_evt_2_str(uint8_t pipe_id, uint8_t evt) {
- tNFA_HCI_DYN_PIPE* p_pipe;
-
- if ((pipe_id != NFA_HCI_ADMIN_PIPE) &&
- (pipe_id != NFA_HCI_LINK_MANAGEMENT_PIPE) &&
- ((p_pipe = nfa_hciu_find_pipe_by_pid(pipe_id)) != NULL)) {
- if (p_pipe->local_gate == NFA_HCI_CONNECTIVITY_GATE) {
- switch (evt) {
- case NFA_HCI_EVT_CONNECTIVITY:
- return ("EVT_CONNECTIVITY");
- case NFA_HCI_EVT_TRANSACTION:
- return ("EVT_TRANSACTION");
- case NFA_HCI_EVT_OPERATION_ENDED:
- return ("EVT_OPERATION_ENDED");
- default:
- return ("UNKNOWN");
- }
+std::string nfa_hciu_evt_2_str(uint8_t pipe_id, uint8_t evt) {
+ tNFA_HCI_DYN_PIPE* p_pipe = nfa_hciu_find_pipe_by_pid(pipe_id);
+ if (pipe_id != NFA_HCI_ADMIN_PIPE &&
+ pipe_id != NFA_HCI_LINK_MANAGEMENT_PIPE && p_pipe != NULL &&
+ p_pipe->local_gate == NFA_HCI_CONNECTIVITY_GATE) {
+ switch (evt) {
+ case NFA_HCI_EVT_CONNECTIVITY:
+ return "EVT_CONNECTIVITY";
+ case NFA_HCI_EVT_TRANSACTION:
+ return "EVT_TRANSACTION";
+ case NFA_HCI_EVT_OPERATION_ENDED:
+ return "EVT_OPERATION_ENDED";
+ default:
+ return "UNKNOWN";
}
}
switch (evt) {
case NFA_HCI_EVT_HCI_END_OF_OPERATION:
- return ("EVT_END_OF_OPERATION");
+ return "EVT_END_OF_OPERATION";
case NFA_HCI_EVT_POST_DATA:
- return ("EVT_POST_DATA");
+ return "EVT_POST_DATA";
case NFA_HCI_EVT_HOT_PLUG:
- return ("EVT_HOT_PLUG");
+ return "EVT_HOT_PLUG";
default:
- return ("UNKNOWN");
+ return "UNKNOWN";
}
}
-#endif
-static void handle_debug_loopback(NFC_HDR* p_buf, uint8_t pipe, uint8_t type,
+static void handle_debug_loopback(NFC_HDR* p_buf, uint8_t type,
uint8_t instruction) {
uint8_t* p = (uint8_t*)(p_buf + 1) + p_buf->offset;
static uint8_t next_pipe = 0x10;
diff --git a/src/nfa/include/nfa_api.h b/src/nfa/include/nfa_api.h
index 3467fdb..1b0f18c 100644
--- a/src/nfa/include/nfa_api.h
+++ b/src/nfa/include/nfa_api.h
@@ -41,64 +41,27 @@
#define NFA_MAX_AID_LEN NFC_MAX_AID_LEN
#define NFA_MIN_AID_LEN 5 /* per NCI specification */
-/* NFA API return status codes */
/* Command succeeded */
#define NFA_STATUS_OK NCI_STATUS_OK
/* Command is rejected. */
#define NFA_STATUS_REJECTED NCI_STATUS_REJECTED
-/* Message is corrupted */
-#define NFA_STATUS_MSG_CORRUPTED NCI_STATUS_MESSAGE_CORRUPTED
/* buffer full */
#define NFA_STATUS_BUFFER_FULL NCI_STATUS_BUFFER_FULL
/* failed */
#define NFA_STATUS_FAILED NCI_STATUS_FAILED
-/* not initialized */
-#define NFA_STATUS_NOT_INITIALIZED NCI_STATUS_NOT_INITIALIZED
-/* Syntax error */
-#define NFA_STATUS_SYNTAX_ERROR NCI_STATUS_SYNTAX_ERROR
+/* Optional feature of NCI Spec not supported */
+#define NFA_STATUS_NOT_SUPPORTED NCI_STATUS_NOT_SUPPORTED
/* Semantic error */
#define NFA_STATUS_SEMANTIC_ERROR NCI_STATUS_SEMANTIC_ERROR
/* Unknown NCI Group ID */
#define NFA_STATUS_UNKNOWN_GID NCI_STATUS_UNKNOWN_GID
-/* Unknown NCI Opcode */
-#define NFA_STATUS_UNKNOWN_OID NCI_STATUS_UNKNOWN_OID
/* Invalid Parameter */
#define NFA_STATUS_INVALID_PARAM NCI_STATUS_INVALID_PARAM
-/* Message size too big */
-#define NFA_STATUS_MSG_SIZE_TOO_BIG NCI_STATUS_MSG_SIZE_TOO_BIG
/* Already started */
#define NFA_STATUS_ALREADY_STARTED NCI_STATUS_ALREADY_STARTED
-/* Activation Failed */
-#define NFA_STATUS_ACTIVATION_FAILED NCI_STATUS_ACTIVATION_FAILED
-/* Tear Down Error */
-#define NFA_STATUS_TEAR_DOWN NCI_STATUS_TEAR_DOWN
-/* RF transmission error*/
-#define NFA_STATUS_RF_TRANSMISSION_ERR NCI_STATUS_RF_TRANSMISSION_ERR
-/* RF protocol error */
-#define NFA_STATUS_RF_PROTOCOL_ERR NCI_STATUS_RF_PROTOCOL_ERR
/* RF Timeout */
#define NFA_STATUS_TIMEOUT NCI_STATUS_TIMEOUT
-/* EE Intf activate err */
-#define NFA_STATUS_EE_INTF_ACTIVE_FAIL NCI_STATUS_EE_INTF_ACTIVE_FAIL
-/* EE transmission error*/
-#define NFA_STATUS_EE_TRANSMISSION_ERR NCI_STATUS_EE_TRANSMISSION_ERR
-/* EE protocol error */
-#define NFA_STATUS_EE_PROTOCOL_ERR NCI_STATUS_EE_PROTOCOL_ERR
-/* EE Timeout */
-#define NFA_STATUS_EE_TIMEOUT NCI_STATUS_EE_TIMEOUT
-/* Command started successfully */
-#define NFA_STATUS_CMD_STARTED NFC_STATUS_CMD_STARTED
-/* NFCC Timeout in responding to an NCI command */
-#define NFA_STATUS_HW_TIMEOUT NFC_STATUS_HW_TIMEOUT
-/* More NFA_CE_GET_ROUTING_REVT to follow */
-#define NFA_STATUS_CONTINUE NFC_STATUS_CONTINUE
-/* API is called to perform illegal function */
-#define NFA_STATUS_REFUSED NFC_STATUS_REFUSED
-/* Wrong format of R-APDU, CC file or NDEF file */
-#define NFA_STATUS_BAD_RESP NFC_STATUS_BAD_RESP
-/* 7816 Status Word is not command complete(0x9000) */
-#define NFA_STATUS_CMD_NOT_CMPLTD NFC_STATUS_CMD_NOT_CMPLTD
/* Out of GKI buffers */
#define NFA_STATUS_NO_BUFFERS NFC_STATUS_NO_BUFFERS
/* Protocol mismatch between API and activated one */
@@ -120,8 +83,6 @@
/* NFA Handle definitions */
/* The upper byte of NFA_HANDLE signifies the handle group */
-/* Connection handles */
-#define NFA_HANDLE_GROUP_CONNECTION 0x0100
/* NDEF Type Handler handles */
#define NFA_HANDLE_GROUP_NDEF_HANDLER 0x0200
/* DH Card Emulation handles */
@@ -130,12 +91,9 @@
#define NFA_HANDLE_GROUP_EE 0x0400
/* P2P handles */
#define NFA_HANDLE_GROUP_P2P 0x0500
-/* SNEP handles */
-#define NFA_HANDLE_GROUP_SNEP 0x0700
/* HCI handles */
#define NFA_HANDLE_GROUP_HCI 0x0800
/* Local NDEF message handle */
-#define NFA_HANDLE_GROUP_LOCAL_NDEF 0x0900
#define NFA_HANDLE_GROUP_MASK 0xFF00
#define NFA_HANDLE_MASK 0x00FF
@@ -157,7 +115,6 @@
/* NFC Technology F active mode */
#define NFA_TECHNOLOGY_MASK_F_ACTIVE 0x80
/* All supported technologies */
-#define NFA_TECHNOLOGY_MASK_ALL 0xFF
typedef uint8_t tNFA_TECHNOLOGY_MASK;
/* Definitions for NFC protocol for RW, CE and P2P APIs */
@@ -173,11 +130,7 @@
#define NFA_PROTOCOL_NFC_DEP NFC_PROTOCOL_NFC_DEP
/* NFC_PROTOCOL_T5T in NCI2.0 and NFC_PROTOCOL_ISO15693 proprietary in NCI1.0*/
#define NFA_PROTOCOL_T5T NFC_PROTOCOL_T5T
-#define NFA_PROTOCOL_B_PRIME NFC_PROTOCOL_B_PRIME
-#define NFA_PROTOCOL_KOVIO NFC_PROTOCOL_KOVIO
-#define NFA_PROTOCOL_MIFARE NFC_PROTOCOL_MIFARE
#define NFA_PROTOCOL_INVALID 0xFF
-#define NFA_MAX_NUM_PROTOCOLS 8
typedef uint8_t tNFA_NFC_PROTOCOL;
/* Definitions for tNFA_PROTOCOL_MASK */
@@ -210,15 +163,10 @@
#define NFA_T1T_HR_LEN T1T_HR_LEN
/* Max UID length of T1/T2 */
#define NFA_MAX_UID_LEN TAG_MAX_UID_LEN
-/* T1T UID length */
-#define NFA_T1T_UID_LEN T1T_UID_LEN
/* UID len for T1T cmds */
#define NFA_T1T_CMD_UID_LEN T1T_CMD_UID_LEN
/* T2T UID length */
-#define NFA_T2T_UID_LEN T2T_UID_LEN
-/* Tag is read only */
-#define NFA_RW_NDEF_FL_READ_ONLY RW_NDEF_FL_READ_ONLY
/* Tag formated for NDEF */
#define NFA_RW_NDEF_FL_FORMATED RW_NDEF_FL_FORMATED
/* NDEF supported by the tag */
@@ -227,12 +175,6 @@
#define NFA_RW_NDEF_FL_UNKNOWN RW_NDEF_FL_UNKNOWN
/* Tag supports format operation */
#define NFA_RW_NDEF_FL_FORMATABLE RW_NDEF_FL_FORMATABLE
-/* Tag can be soft locked */
-#define NFA_RW_NDEF_FL_SOFT_LOCKABLE RW_NDEF_FL_SOFT_LOCKABLE
-/* Tag can be hard locked */
-#define NFA_RW_NDEF_FL_HARD_LOCKABLE RW_NDEF_FL_HARD_LOCKABLE
-/* Tag is one time programmable */
-#define NFA_RW_NDEF_FL_OTP RW_NDEF_FL_OTP
typedef uint8_t tNFA_RW_NDEF_FLAG;
@@ -247,7 +189,7 @@
typedef struct {
tNFA_STATUS status; /* NFA_STATUS_OK if successful */
uint16_t tlv_size; /* The length of TLV */
- uint8_t param_tlvs[1]; /* TLV (Parameter ID-Len-Value byte stream) */
+ uint8_t* param_tlvs; /* TLV (Parameter ID-Len-Value byte stream) */
} tNFA_GET_CONFIG;
/* Structure to store screen state */
@@ -269,10 +211,6 @@
#define NFA_SCREEN_STATE_MASK 0x0F
/* CONN_DISCOVER_PARAM */
-#define NFA_LISTEN_DH_NFCEE_ENABLE_MASK NCI_LISTEN_DH_NFCEE_ENABLE_MASK
-#define NFA_LISTEN_DH_NFCEE_DISABLE_MASK NCI_LISTEN_DH_NFCEE_DISABLE_MASK
-#define NFA_POLLING_DH_DISABLE_MASK NCI_POLLING_DH_DISABLE_MASK
-#define NFA_POLLING_DH_ENABLE_MASK NCI_POLLING_DH_ENABLE_MASK
#define NFA_DM_PWR_MODE_FULL 0x04
#define NFA_DM_PWR_MODE_OFF_SLEEP 0x00
@@ -318,13 +256,8 @@
typedef enum {
NFA_DTA_DEFAULT_MODE = 0x00000001,
NFA_DTA_LLCP_MODE = 0x00000002,
- NFA_DTA_SNEP_MODE = 0x00000003,
NFA_DTA_HCEF_MODE = 0x00000004,
NFA_DTA_CR8 = 0x00000080,
- NFA_DTA_CR9 = 0x00000090,
- NFA_DTA_CR10 = 0x000000A0,
- NFA_DTA_CR11 = 0x000000B0,
- NFA_DTA_CR12 = 0x000000C0,
} tNFA_eDtaModes;
/* NFA Connection Callback Events */
@@ -566,21 +499,6 @@
/* Union of all connection callback structures */
typedef union {
tNFA_STATUS status; /* NFA_POLL_ENABLED_EVT */
- /* NFA_POLL_DISABLED_EVT */
- /* NFA_CE_UICC_LISTEN_CONFIGURED_EVT */
- /* NFA_EXCLUSIVE_RF_CONTROL_STARTED_EVT */
- /* NFA_EXCLUSIVE_RF_CONTROL_STOPPED_EVT */
- /* NFA_SELECT_RESULT_EVT */
- /* NFA_DEACTIVATE_FAIL_EVT */
- /* NFA_CE_NDEF_WRITE_START_EVT */
- /* NFA_SELECT_CPLT_EVT */
- /* NFA_READ_CPLT_EVT */
- /* NFA_WRITE_CPLT_EVT */
- /* NFA_PRESENCE_CHECK_EVT */
- /* NFA_FORMAT_CPLT_EVT */
- /* NFA_SET_TAG_RO_EVT */
- /* NFA_UPDATE_RF_PARAM_RESULT_EVT */
- /* NFA_RW_INTF_ERROR_EVT */
tNFA_DISC_RESULT disc_result; /* NFA_DISC_RESULT_EVT */
tNFA_ACTIVATED activated; /* NFA_ACTIVATED_EVT */
tNFA_DEACTIVATED deactivated; /* NFA_DEACTIVATED_EVT */
@@ -803,9 +721,6 @@
/*****************************************************************************
** External Function Declarations
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
/*******************************************************************************
**
@@ -1418,19 +1333,6 @@
tNFA_VSC_CBACK* p_cback);
/*******************************************************************************
-**
-** Function NFA_SetTraceLevel
-**
-** Description This function sets the trace level for NFA. If called with
-** a value of 0xFF, it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-extern uint8_t NFA_SetTraceLevel(uint8_t new_level);
-
-/*******************************************************************************
-**
** Function: NFA_EnableDTA_TypeMode
**
** Description: Initialize and get global DTA type mode from .conf
@@ -1441,6 +1343,17 @@
extern void NFA_EnableDtamode(tNFA_eDtaModes eDtaMode);
/*******************************************************************************
+** Function NFA_GetNCIVersion
+**
+** Description Called by higher layer to get the current nci
+** version of nfc.
+**
+** Returns NCI version NCI2.0 / NCI1.0
+**
+*******************************************************************************/
+extern uint8_t NFA_GetNCIVersion();
+
+/*******************************************************************************
** Function: NFA_SetPowerSubStateForScreenState
**
** Description: This function send the current screen state
@@ -1450,8 +1363,4 @@
*******************************************************************************/
extern tNFA_STATUS NFA_SetPowerSubStateForScreenState(uint8_t ScreenState);
-#ifdef __cplusplus
-}
-#endif
-
#endif /* NFA_API_H */
diff --git a/src/nfa/include/nfa_ce_api.h b/src/nfa/include/nfa_ce_api.h
index 8acff20..55412b3 100644
--- a/src/nfa/include/nfa_ce_api.h
+++ b/src/nfa/include/nfa_ce_api.h
@@ -34,9 +34,6 @@
/*****************************************************************************
** External Function Declarations
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
/*******************************************************************************
**
@@ -232,8 +229,4 @@
*******************************************************************************/
extern tNFA_STATUS NFA_CeSetIsoDepListenTech(tNFA_TECHNOLOGY_MASK tech_mask);
-#ifdef __cplusplus
-}
-#endif
-
#endif /* NFA_CE_API_H */
diff --git a/src/nfa/int/nfa_ce_int.h b/src/nfa/include/nfa_ce_int.h
similarity index 96%
rename from src/nfa/int/nfa_ce_int.h
rename to src/nfa/include/nfa_ce_int.h
index ef41242..d113cd3 100644
--- a/src/nfa/int/nfa_ce_int.h
+++ b/src/nfa/include/nfa_ce_int.h
@@ -34,9 +34,6 @@
** Constants and data types
*****************************************************************************/
-/* ce status callback */
-typedef void tNFA_CE_STATUS_CBACK(tNFA_STATUS status);
-
/* CE events */
enum {
/* device manager local device API events */
@@ -45,18 +42,12 @@
NFA_CE_API_DEREG_LISTEN_EVT,
NFA_CE_API_CFG_ISODEP_TECH_EVT,
NFA_CE_ACTIVATE_NTF_EVT,
- NFA_CE_DEACTIVATE_NTF_EVT,
+ NFA_CE_DEACTIVATE_NTF_EVT
- NFA_CE_MAX_EVT
};
/* Listen registration types */
-enum {
- NFA_CE_REG_TYPE_NDEF,
- NFA_CE_REG_TYPE_ISO_DEP,
- NFA_CE_REG_TYPE_FELICA,
- NFA_CE_REG_TYPE_UICC
-};
+enum { NFA_CE_REG_TYPE_ISO_DEP, NFA_CE_REG_TYPE_FELICA, NFA_CE_REG_TYPE_UICC };
typedef uint8_t tNFA_CE_REG_TYPE;
/* data type for NFA_CE_API_CFG_LOCAL_TAG_EVT */
@@ -137,6 +128,8 @@
#define NFA_CE_LISTEN_INFO_FELICA 0x00000200
/* This is a listen_info for UICC */
#define NFA_CE_LISTEN_INFO_UICC 0x00000400
+/* App has not been notified of ACTIVATE_EVT yet for this HCEF NFCID2 */
+#define NFA_CE_LISTEN_INFO_T3T_ACTIVATE_PND 0x00010000
/* Structure for listen look up table */
typedef struct {
diff --git a/src/nfa/int/nfa_dm_int.h b/src/nfa/include/nfa_dm_int.h
similarity index 98%
rename from src/nfa/int/nfa_dm_int.h
rename to src/nfa/include/nfa_dm_int.h
index a527927..a7f61d8 100644
--- a/src/nfa/int/nfa_dm_int.h
+++ b/src/nfa/include/nfa_dm_int.h
@@ -24,6 +24,7 @@
#ifndef NFA_DM_INT_H
#define NFA_DM_INT_H
+#include <string>
#include "nfa_api.h"
#include "nfa_sys.h"
#include "nfc_api.h"
@@ -140,7 +141,6 @@
NFC_HDR hdr;
uint16_t rf_disc_dur_ms;
} tNFA_DM_API_SET_RF_DISC_DUR;
-#define NFA_RF_DISC_DURATION_MAX 0xFFFF
/* data type for NFA_DM_API_REG_NDEF_HDLR_EVT */
#define NFA_NDEF_FLAGS_HANDLE_WHOLE_MESSAGE 0x01
@@ -367,8 +367,6 @@
NFA_DM_DISC_LRT_NFC_BP
};
-/* SLP_REQ (HLTA) command */
-#define SLP_REQ_CMD 0x5000
/* NFA_EE_MAX_TECH_ROUTE. only A, B, F, Bprime are supported by UICC now */
#define NFA_DM_MAX_TECH_ROUTE 4
@@ -414,8 +412,6 @@
/* Default handler entry in ndef_handler table */
#define NFA_NDEF_DEFAULT_HANDLER_IDX 0
-#define NFA_PARAM_ID_INVALID 0xFF
-
/* Maximum number of pending SetConfigs */
#define NFA_DM_SETCONFIG_PENDING_MAX 32
@@ -598,7 +594,6 @@
#define nfa_snep_init(is_dta_mode)
#endif
-void nfa_dta_init(void);
#if (NFC_NFCEE_INCLUDED == TRUE)
void nfa_ee_init(void);
void nfa_hci_init(void);
@@ -631,12 +626,12 @@
bool nfa_dm_act_power_off_sleep(tNFA_DM_MSG* p_data);
bool nfa_dm_ndef_reg_hdlr(tNFA_DM_MSG* p_data);
bool nfa_dm_ndef_dereg_hdlr(tNFA_DM_MSG* p_data);
-bool nfa_dm_tout(tNFA_DM_MSG* p_data);
+
bool nfa_dm_act_reg_vsc(tNFA_DM_MSG* p_data);
bool nfa_dm_act_send_vsc(tNFA_DM_MSG* p_data);
uint16_t nfa_dm_act_get_rf_disc_duration();
bool nfa_dm_act_disable_timeout(tNFA_DM_MSG* p_data);
-bool nfa_dm_act_nfc_cback_data(tNFA_DM_MSG* p_data);
+
bool nfa_dm_set_power_sub_state(tNFA_DM_MSG* p_data);
void nfa_dm_proc_nfcc_power_mode(uint8_t nfcc_power_mode);
@@ -680,8 +675,6 @@
memset(ha, NFC_DH_ID, NFA_DM_MAX_TECH_ROUTE);
#endif
-#if (BT_TRACE_VERBOSE == TRUE)
-char* nfa_dm_nfc_revt_2_str(tNFC_RESPONSE_EVT event);
-#endif
+std::string nfa_dm_nfc_revt_2_str(tNFC_RESPONSE_EVT event);
#endif /* NFA_DM_INT_H */
diff --git a/src/nfa/int/nfa_dta_int.h b/src/nfa/include/nfa_dta_int.h
similarity index 62%
rename from src/nfa/int/nfa_dta_int.h
rename to src/nfa/include/nfa_dta_int.h
index c050292..c844c07 100644
--- a/src/nfa/int/nfa_dta_int.h
+++ b/src/nfa/include/nfa_dta_int.h
@@ -36,29 +36,9 @@
/*****************************************************************************
** DTA definitions
*****************************************************************************/
-#define NFA_DTA_PATTERN_NUMBER_INVALID 0xFFFF
-
-#define NFA_DTA_PATTERN_NUMBER_LLCP_CONNECT_BY_SAP 0x1200
-#define NFA_DTA_PATTERN_NUMBER_LLCP_CONNECT_BY_SN 0x1240
-#define NFA_DTA_PATTERN_NUMBER_LLCP_CONNECT_BY_SNL 0x1280
-
-#define NFA_DTA_PATTERN_NUMBER_SNEP_SERVER_ONLY 0x1300
-#define NFA_DTA_PATTERN_NUMBER_SNEP_DEFAULT_PUT_SHORT_NDEF 0x1301
-#define NFA_DTA_PATTERN_NUMBER_SNEP_DEFAULT_PUT_LONG_NDEF 0x1302
-#define NFA_DTA_PATTERN_NUMBER_SNEP_EXTENDED_GET 0x1303
#define NFA_DTA_DISCOVER_PARAMS_MAX 6
-/* Header length for long NDEF text message */
-#define NDEF_WKT_TEXT_HDR_LEN 7
-/* Size of NDEF message for T3T write-tests ([DTA] $5.5.6) */
-#define NFA_DTA_T3T_WRITE_NDEF_SIZE 192
-/* System code to use for T3T Listen mode tests */
-#define NFA_DTA_T3T_LISTEN_SYSTEMCODE 0xBABE
-
-/* Maximum protocol preference rank */
-#define NFA_PROTOCOL_RANK_INVALID 0xFF
-
#define NFA_DTA_SCRATCH_BUF_SIZE T3T_MSG_BLOCKSIZE
#ifndef NFA_DTA_DEFAULT_CO_OUT_DSAP
@@ -87,12 +67,7 @@
enum {
/* device manager local device API events */
NFA_DTA_API_ENABLE_EVT = NFA_SYS_EVT_START(NFA_ID_DTA),
- NFA_DTA_API_DISABLE_EVT,
- NFA_DTA_API_CONFIG_EVT,
NFA_DTA_API_START_EVT,
- NFA_DTA_API_STOP_EVT,
- NFA_DTA_ACTIVATE_EVT,
- NFA_DTA_DEACTIVATE_EVT,
NFA_DTA_DATA_CBACK_EVT,
NFA_DTA_MAX_EVT
@@ -136,16 +111,8 @@
tNFC_CONN data;
} tNFA_DTA_NFCDEP_DATA;
-enum { NFA_DTA_LLCP_CONNECT_CO_ECHO_OUT, NFA_DTA_LLCP_DISCONNECT_CO_ECHO_OUT };
typedef uint8_t tNFA_DTA_LLCP_EVT;
-enum {
- NFA_DTA_RW_DATA,
- NFA_DTA_CE_DATA,
- NFA_DTA_NFCDEP_DATA,
- NFA_DTA_LLCP_DATA
-};
-
typedef uint8_t tNFA_DTA_DATA_TYPE;
typedef struct {
@@ -168,39 +135,16 @@
tNFA_DTA_DATA_CBACK data_cback;
} tNFA_DTA_MSG;
-/* DTA states */
-enum {
- NFA_DTA_ST_IDLE,
- NFA_DTA_ST_DISCOVER, /* Polling/Listening */
- NFA_DTA_ST_ACTIVATED /* Activated, listen mode */
-};
typedef uint8_t tNFA_DTA_STATE;
-/* DTA Substates (while in ACTIVATED state) - substate enumerations are found in
- * protocol-specific files (nfa_dta_XXX.c) */
-#define NFA_DTA_SST_IDLE 0
typedef uint8_t tNFA_DTA_SUBSTATE;
-/* DTA discovery states */
-enum {
- NFA_DTA_DISC_STATE_IDLE,
- NFA_DTA_DISC_STATE_DISCOVERY,
- NFA_DTA_DISC_STATE_POLL_ACTIVE,
- NFA_DTA_DISC_STATE_W4_ALL_DISCOVERIES,
- NFA_DTA_DISC_STATE_W4_HOST_SELECT,
- NFA_DTA_DISC_STATE_LISTEN_ACTIVE,
- NFA_DTA_DISC_STATE_LISTEN_SLEEP,
- NFA_DTA_DISC_STATE_MAX
-};
-
/*****************************************************************************
* DTA control block definitions
*****************************************************************************/
/* NDEF buffer definitions */
enum {
- NFA_DTA_BUF_READ, /* Buffer for RW Read requests */
- NFA_DTA_BUF_WRITE, /* Buffer for RW Write requests */
NFA_DTA_BUF_MAX
};
@@ -211,27 +155,9 @@
uint32_t offset; /* current read/write offset */
} tNFA_DTA_BUF_CB;
-/* T4T listen mode test application */
-enum {
- NFA_DTA_T4T_CE_APP_NONE, /* Not selected */
- NFA_DTA_T4T_CE_APP_LOOPBACK, /* loopback test applicaiton */
- NFA_DTA_T4T_CE_APP_PROP /* propretary test application */
-};
-
/* DTA test step command */
typedef tNFC_STATUS (*tNFA_DTA_CMD_FCN)(void*);
-/* dta control block flags */
-#define NFA_DTA_FL_ENABLED 0x00000001 /* DTA is enabled */
-/* Automatically start discovery when NFC is enabled */
-#define NFA_DTA_FL_AUTOSTART 0x00000002
-/* DTA is stopping (NFA_DtaStop called) */
-#define NFA_DTA_FL_STOPPING 0x00000004
-/* DTA is being disabled (NFA_DtaDisable called) */
-#define NFA_DTA_FL_DISABLING 0x00000008
-/* T4T/NFCDEP is deactivating to IDLE (need to DESELECT first) */
-#define NFA_DTA_FL_T4T_DESELECT_DEACT 0x00000010
-
/* DTA control block */
typedef struct {
uint32_t dta_flags; /* dta_flags must be first item in structure (statically
@@ -293,11 +219,6 @@
uint16_t llcp_co_out_remote_miu; /* MIU of LT-CO-OUT-DEST */
uint8_t llcp_co_out_remote_rw; /* RW of LT-CO-OUT-DEST */
-/* establishing outbound on connection-oriented */
-#define NFA_DTA_LLCP_FLAGS_CO_OUT_CONNECTING 0x01
-/* established outbound on connection-oriented */
-#define NFA_DTA_LLCP_FLAGS_CO_OUT_CONNECTED 0x02
-
uint8_t llcp_flags; /* internal flags for LLCP echo test */
uint8_t llcp_sdp_tid_cl; /* SDP transaction ID for outbound connectionless */
uint8_t
@@ -345,75 +266,6 @@
/*****************************************************************************
* DTA internal funciton protoytpes
*****************************************************************************/
-/* Internal function prototypes */
-void nfa_dta_deactivate(uint8_t deactivate_type);
-void nfa_dta_shutdown(void);
-void nfa_dta_discover_start(void);
-
-/* nfa_sys handler for DTA */
-bool nfa_dta_evt_hdlr(NFC_HDR* p_msg);
-void nfa_dta_sys_disable(void);
-
-/* State machine action functions */
-bool nfa_dta_enable(tNFA_DTA_MSG* p_data);
-bool nfa_dta_disable(tNFA_DTA_MSG* p_data);
-bool nfa_dta_config(tNFA_DTA_MSG* p_data);
-bool nfa_dta_start(tNFA_DTA_MSG* p_data);
-bool nfa_dta_handle_deact(tNFA_DTA_MSG* p_data);
-bool nfa_dta_stop(tNFA_DTA_MSG* p_data);
-bool nfa_dta_run_test(tNFA_DTA_MSG* p_data);
-bool nfa_dta_proc_data(tNFA_DTA_MSG* p_msg_data);
-
-/* Utility functions */
-void nfa_dta_test_set_state(tNFA_DTA_STATE state);
-void nfa_dta_test_set_substate(tNFA_DTA_SUBSTATE substate);
-void nfa_dta_free_ndef_buf(uint8_t ndef_idx);
-uint8_t* nfa_dta_realloc_buf(uint8_t ndef_idx, uint32_t size);
-void nfa_dta_t3t_nfcid_rand(uint8_t nfcid2[NCI_RF_F_UID_LEN]);
-
-/* Test function entry points (in nfa_dta_XXX.c) */
-void nfa_dta_nfcdep_poll_test_start(void);
-void nfa_dta_nfcdep_proc_data(tNFC_CONN_EVT event, tNFC_CONN* p_data);
-void nfa_dta_t1t_poll_test_start(void);
-void nfa_dta_t2t_poll_test_start(void);
-void nfa_dta_t3t_poll_test_start(void);
-void nfa_dta_t4t_poll_test_start(void);
-
-void nfa_dta_nfcdep_listen_test_start(void);
-void nfa_dta_t3t_listen_test_start(void);
-void nfa_dta_t4t_listen_test_start(void);
-
-void nfa_dta_t1t_rw_cback(uint8_t event, tRW_DATA* p_data);
-void nfa_dta_t2t_rw_cback(uint8_t event, tRW_DATA* p_data);
-void nfa_dta_t3t_rw_cback(uint8_t event, tRW_DATA* p_data);
-void nfa_dta_t4t_rw_cback(uint8_t event, tRW_DATA* p_data);
-
-void nfa_dta_t3t_ce_cback(uint8_t event, tCE_DATA* p_data);
-void nfa_dta_t4t_ce_cback(uint8_t event, tCE_DATA* p_data);
-
-void nfa_dta_ce_cback(uint8_t event, tCE_DATA* p_ce_data);
-
-void nfa_dta_t4t_register_apps(void);
-void nfa_dta_t4t_deregister_apps(void);
-
-void nfa_dta_llcp_init(void);
-void nfa_dta_llcp_set_gen_bytes(void);
-void nfa_dta_llcp_clear_gen_bytes(void);
-void nfa_dta_llcp_register_pattern_number_service(void);
-void nfa_dta_llcp_deregister_pattern_number_service(void);
-void nfa_dta_llcp_register_echo(void);
-void nfa_dta_llcp_deregister_echo(void);
-void nfa_dta_llcp_activate_link(void);
-void nfa_dta_llcp_connect_co_echo_out(void);
-void nfa_dta_llcp_disconnect_co_echo_out(void);
-
-void nfa_dta_snep_init(void);
-void nfa_dta_snep_register(void);
-void nfa_dta_snep_deregister(void);
-
-void nfa_dta_emvco_pcd_config_nfcc(bool enable);
-void nfa_dta_emvco_pcd_start(void);
-void nfa_dta_emvco_pcd_cback(uint8_t event, tRW_DATA* p_data);
extern uint8_t* p_nfa_dta_brcm_start_up_cfg;
extern uint8_t nfa_dta_brcm_start_up_cfg_len;
diff --git a/src/nfa/include/nfa_ee_api.h b/src/nfa/include/nfa_ee_api.h
index f4acbe0..78d0fe7 100644
--- a/src/nfa/include/nfa_ee_api.h
+++ b/src/nfa/include/nfa_ee_api.h
@@ -33,7 +33,6 @@
*****************************************************************************/
/* 16 per ISO 7816 specification */
#define NFA_MAX_AID_LEN NFC_MAX_AID_LEN
-#define NFA_EE_HANDLE_DH (NFA_HANDLE_GROUP_EE | NFC_DH_ID)
/* NFA EE callback events */
enum {
@@ -42,9 +41,13 @@
NFA_EE_DEREGISTER_EVT, /* The status for NFA_EeDeregister () */
NFA_EE_MODE_SET_EVT, /* The status for activating or deactivating an NFCEE */
NFA_EE_ADD_AID_EVT, /* The status for adding an AID to a routing table entry
- */
- NFA_EE_REMOVE_AID_EVT, /* The status for removing an AID from a routing table
- */
+ */
+ NFA_EE_REMOVE_AID_EVT, /* The status for removing an AID from a routing table
+ */
+ NFA_EE_ADD_SYSCODE_EVT, /* The status for adding an System Code to a routing
+ table entry */
+ NFA_EE_REMOVE_SYSCODE_EVT, /* The status for removing an System Code from
+ routing table */
NFA_EE_REMAINING_SIZE_EVT, /* The remaining size of the Listen Mode Routing
Table */
NFA_EE_SET_TECH_CFG_EVT, /* The status for setting the routing based on RF
@@ -58,33 +61,16 @@
NFA_EE_NEW_EE_EVT, /* A new NFCEE is discovered */
NFA_EE_ACTION_EVT, /* An action happened in NFCEE */
NFA_EE_DISCOVER_REQ_EVT, /* NFCEE Discover Request Notification */
- NFA_EE_ROUT_ERR_EVT, /* Error - exceed NFCC CE Routing size */
NFA_EE_NO_MEM_ERR_EVT, /* Error - out of GKI buffers */
NFA_EE_NO_CB_ERR_EVT /* Error - Can not find control block or wrong state */
};
typedef uint8_t tNFA_EE_EVT;
/* tNFA_NFCEE_INTERFACE values */
-/* APDU Interface */
-#define NFA_EE_INTERFACE_APDU NFC_NFCEE_INTERFACE_APDU
/* HCI Access Interface*/
#define NFA_EE_INTERFACE_HCI_ACCESS NFC_NFCEE_INTERFACE_HCI_ACCESS
-/* T3T Command Interface*/
-#define NFA_EE_INTERFACE_T3T NFC_NFCEE_INTERFACE_T3T
-/* Transparent Interface*/
-#define NFA_EE_INTERFACE_TRANSPARENT NFC_NFCEE_INTERFACE_TRANSPARENT
-/* Proprietary */
-#define NFA_EE_INTERFACE_PROPRIETARY NFC_NFCEE_INTERFACE_PROPRIETARY
typedef uint8_t tNFA_EE_INTERFACE;
-/* HW/Registration ID */
-#define NFA_EE_TAG_HW_ID NFC_NFCEE_TAG_HW_ID
-/* ATR Bytes */
-#define NFA_EE_TAG_ATR_BYTES NFC_NFCEE_TAG_ATR_BYTES
-/* T3T Supplement. Info */
-#define NFA_EE_TAG_T3T_INFO NFC_NFCEE_TAG_T3T_INFO
-/* Broadcom Proprietary */
-#define NFA_EE_TAG_HCI_HOST_ID NFC_NFCEE_TAG_HCI_HOST_ID
typedef uint8_t tNFA_EE_TAG;
/* for NFA_EeModeSet () */
@@ -98,9 +84,6 @@
#define NFA_EE_PWR_STATE_SWITCH_OFF 0x02
/* The device's battery is removed */
#define NFA_EE_PWR_STATE_BATT_OFF 0x04
-/* used to remove a particular technology or protocol based routing cfg of a
- * handle from the routing table. */
-#define NFA_EE_PWR_STATE_NONE 0
typedef uint8_t tNFA_EE_PWR_STATE;
/* NFCEE connected and inactive */
@@ -111,10 +94,6 @@
#define NFA_EE_STATUS_REMOVED NFC_NFCEE_STATUS_REMOVED
/* waiting for response from NFCC */
#define NFA_EE_STATUS_PENDING 0x10
-#define NFA_EE_STATUS_ACTIVATING \
- (NFA_EE_STATUS_PENDING + NFC_NFCEE_STATUS_ACTIVE)
-#define NFA_EE_STATUS_DEACTIVATING \
- (NFA_EE_STATUS_PENDING + NFC_NFCEE_STATUS_INACTIVE)
typedef uint8_t tNFA_EE_STATUS;
/* additional NFCEE Info */
@@ -132,6 +111,7 @@
ee_interface[NFC_MAX_EE_INTERFACE]; /* NFCEE supported interface */
uint8_t num_tlvs; /* number of TLVs */
tNFA_EE_TLV ee_tlv[NFC_MAX_EE_TLVS]; /* the TLV */
+ uint8_t ee_power_supply_status; /* The NFCEE Power supply */
} tNFA_EE_INFO;
typedef struct {
@@ -147,14 +127,6 @@
ee_interface; /* NFCEE interface associated with this connection */
} tNFA_EE_CONNECT;
-/* ISO 7816-4 SELECT command */
-#define NFA_EE_TRGR_SELECT NFC_EE_TRIG_SELECT
-/* RF Protocol changed */
-#define NFA_EE_TRGR_RF_PROTOCOL NFC_EE_TRIG_RF_PROTOCOL
-/* RF Technology changed */
-#define NFA_EE_TRGR_RF_TECHNOLOGY NFC_EE_TRIG_RF_TECHNOLOGY
-/* Application initiation */
-#define NFA_EE_TRGR_APP_INIT NFC_EE_TRIG_APP_INIT
typedef tNFC_EE_TRIGGER tNFA_EE_TRIGGER;
/* Union of NFCEE action parameter depending on the associated trigger */
@@ -215,6 +187,8 @@
tNFA_STATUS deregister;
tNFA_STATUS add_aid;
tNFA_STATUS remove_aid;
+ tNFA_STATUS add_sc;
+ tNFA_STATUS remove_sc;
tNFA_STATUS set_tech;
tNFA_STATUS set_proto;
uint16_t size;
@@ -231,9 +205,6 @@
/*****************************************************************************
** External Function Declarations
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
/*******************************************************************************
**
@@ -335,7 +306,10 @@
extern tNFA_STATUS NFA_EeSetDefaultTechRouting(
tNFA_HANDLE ee_handle, tNFA_TECHNOLOGY_MASK technologies_switch_on,
tNFA_TECHNOLOGY_MASK technologies_switch_off,
- tNFA_TECHNOLOGY_MASK technologies_battery_off);
+ tNFA_TECHNOLOGY_MASK technologies_battery_off,
+ tNFA_TECHNOLOGY_MASK technologies_screen_lock,
+ tNFA_TECHNOLOGY_MASK technologies_screen_off,
+ tNFA_TECHNOLOGY_MASK technologies_screen_off_lock);
/*******************************************************************************
**
@@ -361,7 +335,10 @@
extern tNFA_STATUS NFA_EeSetDefaultProtoRouting(
tNFA_HANDLE ee_handle, tNFA_PROTOCOL_MASK protocols_switch_on,
tNFA_PROTOCOL_MASK protocols_switch_off,
- tNFA_PROTOCOL_MASK protocols_battery_off);
+ tNFA_PROTOCOL_MASK protocols_battery_off,
+ tNFA_PROTOCOL_MASK technologies_screen_lock,
+ tNFA_PROTOCOL_MASK technologies_screen_off,
+ tNFA_PROTOCOL_MASK technologies_screen_off_lock);
/*******************************************************************************
**
@@ -412,6 +389,54 @@
extern tNFA_STATUS NFA_EeRemoveAidRouting(uint8_t aid_len, uint8_t* p_aid);
/*******************************************************************************
+ **
+ ** Function NFA_EeAddSystemCodeRouting
+ **
+ ** Description This function is called to add an system code entry in the
+ ** listen mode routing table in NFCC. The status of this
+ ** operation is reported as the NFA_EE_ADD_SYSCODE_EVT.
+ **
+ ** Note: If RF discovery is started,
+ ** NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
+ ** happen before calling this function
+ **
+ ** Note: NFA_EeUpdateNow() should be called after last NFA-EE
+ ** function to change the listen mode routing is called.
+ **
+ ** Returns NFA_STATUS_OK if successfully initiated
+ ** NFA_STATUS_FAILED otherwise
+ ** NFA_STATUS_INVALID_PARAM If bad parameter
+ **
+ *******************************************************************************/
+extern tNFA_STATUS NFA_EeAddSystemCodeRouting(uint16_t systemcode,
+ tNFA_HANDLE ee_handle,
+ tNFA_EE_PWR_STATE power_state);
+
+/*******************************************************************************
+**
+** Function NFA_EeRemoveSystemCodeRouting
+**
+** Description This function is called to remove the given System Code
+*based entry from
+** the listen mode routing table. The status of this operation
+*is reported
+** as the NFA_EE_REMOVE_SYSCODE_EVT.
+**
+** Note: If RF discovery is started,
+** NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
+** happen before calling this function
+**
+** Note: NFA_EeUpdateNow() should be called after last NFA-EE
+** function to change the listen mode routing is called.
+**
+** Returns NFA_STATUS_OK if successfully initiated
+** NFA_STATUS_FAILED otherwise
+** NFA_STATUS_INVALID_PARAM If bad parameter
+**
+*******************************************************************************/
+extern tNFA_STATUS NFA_EeRemoveSystemCodeRouting(uint16_t systemcode);
+
+/*******************************************************************************
**
** Function NFA_EeGetLmrtRemainingSize
**
@@ -492,8 +517,4 @@
*******************************************************************************/
extern tNFA_STATUS NFA_EeDisconnect(tNFA_HANDLE ee_handle);
-#ifdef __cplusplus
-}
-#endif
-
#endif /* NFA_EE_API_H */
diff --git a/src/nfa/int/nfa_ee_int.h b/src/nfa/include/nfa_ee_int.h
similarity index 81%
rename from src/nfa/int/nfa_ee_int.h
rename to src/nfa/include/nfa_ee_int.h
index 28b049d..5c933ab 100644
--- a/src/nfa/int/nfa_ee_int.h
+++ b/src/nfa/include/nfa_ee_int.h
@@ -30,7 +30,6 @@
/*****************************************************************************
** Constants and data types
*****************************************************************************/
-#define NFA_EE_DEBUG BT_TRACE_VERBOSE
/* the number of tNFA_EE_ECBs (for NFCEEs and DH) */
#define NFA_EE_NUM_ECBS (NFA_EE_MAX_EE_SUPPORTED + 1)
/* The index for DH in nfa_ee_cb.ee_cb[] */
@@ -54,6 +53,8 @@
NFA_EE_API_SET_PROTO_CFG_EVT,
NFA_EE_API_ADD_AID_EVT,
NFA_EE_API_REMOVE_AID_EVT,
+ NFA_EE_API_ADD_SYSCODE_EVT,
+ NFA_EE_API_REMOVE_SYSCODE_EVT,
NFA_EE_API_LMRT_SIZE_EVT,
NFA_EE_API_UPDATE_NOW_EVT,
NFA_EE_API_CONNECT_EVT,
@@ -72,6 +73,7 @@
NFA_EE_ROUT_TIMEOUT_EVT,
NFA_EE_DISCV_TIMEOUT_EVT,
NFA_EE_CFG_TO_NFCC_EVT,
+ NFA_EE_NCI_NFCEE_STATUS_NTF_EVT,
NFA_EE_MAX_EVT
};
@@ -98,13 +100,17 @@
NFA_EE_CONN_ST_NONE, /* not connected */
NFA_EE_CONN_ST_WAIT, /* connection is initiated; waiting for ack */
NFA_EE_CONN_ST_CONN, /* connected; can send/receive data */
- NFA_EE_CONN_ST_DISC, /* disconnecting; waiting for ack */
- NFA_EE_CONN_ST_MAX
+ NFA_EE_CONN_ST_DISC /* disconnecting; waiting for ack */
};
typedef uint8_t tNFA_EE_CONN_ST;
#define NFA_EE_MAX_AID_CFG_LEN (510)
-#define NFA_EE_7816_STATUS_LEN (2)
+
+#define NFA_EE_SYSTEM_CODE_LEN 02
+#define NFA_EE_SYSTEM_CODE_TLV_SIZE 06
+#define NFA_EE_MAX_SYSTEM_CODE_ENTRIES 10
+#define NFA_EE_MAX_SYSTEM_CODE_CFG_LEN \
+ (NFA_EE_MAX_SYSTEM_CODE_ENTRIES * NFA_EE_SYSTEM_CODE_TLV_SIZE)
/* NFA EE control block flags:
* use to indicate an API function has changed the configuration of the
@@ -116,6 +122,8 @@
#define NFA_EE_ECB_FLAGS_PROTO 0x04
/* AID routing changed */
#define NFA_EE_ECB_FLAGS_AID 0x08
+/* System Code routing changed */
+#define NFA_EE_ECB_FLAGS_SYSCODE 0xE0
/* VS changed */
#define NFA_EE_ECB_FLAGS_VS 0x10
/* Restore related */
@@ -142,12 +150,24 @@
tech_switch_off; /* default routing - technologies switch_off */
tNFA_TECHNOLOGY_MASK
tech_battery_off; /* default routing - technologies battery_off*/
+ tNFA_TECHNOLOGY_MASK
+ tech_screen_lock; /* default routing - technologies screen_lock*/
+ tNFA_TECHNOLOGY_MASK
+ tech_screen_off; /* default routing - technologies screen_off*/
+ tNFA_TECHNOLOGY_MASK
+ tech_screen_off_lock; /* default routing - technologies screen_off_lock*/
tNFA_PROTOCOL_MASK
proto_switch_on; /* default routing - protocols switch_on */
tNFA_PROTOCOL_MASK
proto_switch_off; /* default routing - protocols switch_off */
tNFA_PROTOCOL_MASK
proto_battery_off; /* default routing - protocols battery_off */
+ tNFA_PROTOCOL_MASK
+ proto_screen_lock; /* default routing - protocols screen_lock */
+ tNFA_PROTOCOL_MASK
+ proto_screen_off; /* default routing - protocols screen_off */
+ tNFA_PROTOCOL_MASK
+ proto_screen_off_lock; /* default routing - protocols screen_off_lock */
tNFA_EE_CONN_ST conn_st; /* connection status */
uint8_t conn_id; /* connection id */
tNFA_EE_CBACK* p_ee_cback; /* the callback function */
@@ -174,6 +194,7 @@
tNFA_EE_TLV ee_tlv[NFC_MAX_EE_TLVS]; /* the TLV */
uint8_t num_interface; /* number of Target interface */
uint8_t num_tlvs; /* number of TLVs */
+ uint8_t ee_power_supply_status; /* power supply of NFCEE*/
tNFA_EE_ECB_FLAGS ecb_flags; /* the flags of this control block */
tNFA_EE_INTERFACE use_interface; /* NFCEE interface used for the connection */
tNFA_NFC_PROTOCOL la_protocol; /* Listen A protocol */
@@ -183,6 +204,14 @@
uint8_t size_mask; /* the size for technology and protocol routing */
uint16_t size_aid; /* the size for aid routing */
uint8_t aid_info[NFA_EE_MAX_AID_ENTRIES]; /* Aid Info Prefix/Suffix/Exact */
+ /*System Code Based Routing Variables*/
+ uint8_t sys_code_cfg[NFA_EE_MAX_SYSTEM_CODE_ENTRIES * NFA_EE_SYSTEM_CODE_LEN];
+ uint8_t sys_code_pwr_cfg[NFA_EE_MAX_SYSTEM_CODE_ENTRIES];
+ uint8_t sys_code_rt_loc[NFA_EE_MAX_SYSTEM_CODE_ENTRIES];
+ uint8_t sys_code_rt_loc_vs_info[NFA_EE_MAX_SYSTEM_CODE_ENTRIES];
+ /* The number of SC entries in sys_code_cfg buffer*/
+ uint8_t sys_code_cfg_entries;
+ uint16_t size_sys_code; /* The size for system code routing */
} tNFA_EE_ECB;
/* data type for NFA_EE_API_DISCOVER_EVT */
@@ -219,6 +248,9 @@
tNFA_TECHNOLOGY_MASK technologies_switch_on;
tNFA_TECHNOLOGY_MASK technologies_switch_off;
tNFA_TECHNOLOGY_MASK technologies_battery_off;
+ tNFA_TECHNOLOGY_MASK technologies_screen_lock;
+ tNFA_TECHNOLOGY_MASK technologies_screen_off;
+ tNFA_TECHNOLOGY_MASK technologies_screen_off_lock;
} tNFA_EE_API_SET_TECH_CFG;
/* data type for NFA_EE_API_SET_PROTO_CFG_EVT */
@@ -229,6 +261,9 @@
tNFA_PROTOCOL_MASK protocols_switch_on;
tNFA_PROTOCOL_MASK protocols_switch_off;
tNFA_PROTOCOL_MASK protocols_battery_off;
+ tNFA_PROTOCOL_MASK protocols_screen_lock;
+ tNFA_PROTOCOL_MASK protocols_screen_off;
+ tNFA_PROTOCOL_MASK protocols_screen_off_lock;
} tNFA_EE_API_SET_PROTO_CFG;
/* data type for NFA_EE_API_ADD_AID_EVT */
@@ -249,6 +284,21 @@
uint8_t* p_aid;
} tNFA_EE_API_REMOVE_AID;
+/* data type for NFA_EE_API_ADD_SYSCODE_EVT */
+typedef struct {
+ NFC_HDR hdr;
+ tNFA_EE_ECB* p_cb;
+ uint8_t nfcee_id;
+ uint16_t syscode;
+ tNFA_EE_PWR_STATE power_state;
+} tNFA_EE_API_ADD_SYSCODE;
+
+/* data type for NFA_EE_API_REMOVE_SYSCODE_EVT */
+typedef struct {
+ NFC_HDR hdr;
+ uint16_t syscode;
+} tNFA_EE_API_REMOVE_SYSCODE;
+
/* data type for NFA_EE_API_LMRT_SIZE_EVT */
typedef NFC_HDR tNFA_EE_API_LMRT_SIZE;
@@ -277,11 +327,6 @@
uint8_t nfcee_id;
} tNFA_EE_API_DISCONNECT;
-typedef struct {
- NFC_HDR hdr;
- tNFC_STATUS status; /* The event status. */
-} tNFA_EE_MSG_STATUS;
-
/* common data type for internal events with nfa_ee_use_cfg_cb[] as TRUE */
typedef struct {
NFC_HDR hdr;
@@ -289,12 +334,6 @@
uint8_t nfcee_id;
} tNFA_EE_CFG_HDR;
-/* data type for tNFC_RESPONSE_EVT */
-typedef struct {
- NFC_HDR hdr;
- void* p_data;
-} tNFA_EE_NCI_RESPONSE;
-
/* data type for NFA_EE_NCI_DISC_RSP_EVT */
typedef struct {
NFC_HDR hdr;
@@ -340,6 +379,12 @@
tNFC_EE_DISCOVER_REQ_REVT* p_data;
} tNFA_EE_NCI_DISC_REQ;
+/* data type for NFA_EE_NCI_NFCEE_STATUS_EVT */
+typedef struct {
+ NFC_HDR hdr;
+ tNFC_NFCEE_STATUS_REVT* p_data;
+} tNFA_EE_NCI_NFCEE_STATUS_NTF;
+
/* union of all event data types */
typedef union {
NFC_HDR hdr;
@@ -352,6 +397,8 @@
tNFA_EE_API_SET_PROTO_CFG set_proto;
tNFA_EE_API_ADD_AID add_aid;
tNFA_EE_API_REMOVE_AID rm_aid;
+ tNFA_EE_API_ADD_SYSCODE add_syscode;
+ tNFA_EE_API_REMOVE_SYSCODE rm_syscode;
tNFA_EE_API_LMRT_SIZE lmrt_size;
tNFA_EE_API_CONNECT connect;
tNFA_EE_API_SEND_DATA send_data;
@@ -363,6 +410,7 @@
tNFA_EE_NCI_CONN conn;
tNFA_EE_NCI_ACTION act;
tNFA_EE_NCI_DISC_REQ disc_req;
+ tNFA_EE_NCI_NFCEE_STATUS_NTF nfcee_status_ntf;
} tNFA_EE_MSG;
/* type for State Machine (SM) action functions */
@@ -377,7 +425,6 @@
/* the following status are the definition used in ee_cfg_sts */
#define NFA_EE_STS_CHANGED_ROUTING 0x01
-#define NFA_EE_STS_CHANGED_VS 0x02
#define NFA_EE_STS_CHANGED 0x0f
#define NFA_EE_STS_PREV_ROUTING 0x10
#define NFA_EE_STS_PREV 0xf0
@@ -406,6 +453,12 @@
#define NFA_EE_DISC_STS_OFF 0x01
/* received NFCEE DISCOVER REQ NTF */
#define NFA_EE_DISC_STS_REQ 0x02
+/* received NFA_EE_MODE_SET_COMPLETE */
+#define NFA_EE_MODE_SET_COMPLETE 0x03
+/* initialize EE_RECOVERY */
+#define NFA_EE_RECOVERY_INIT 0x04
+/* update ee config during EE_RECOVERY */
+#define NFA_EE_RECOVERY_REDISCOVERED 0x05
typedef uint8_t tNFA_EE_DISC_STS;
typedef void(tNFA_EE_ENABLE_DONE_CBACK)(tNFA_EE_DISC_STS status);
@@ -418,21 +471,21 @@
tNFA_EE_CBACK* p_ee_cback[NFA_EE_MAX_CBACKS]; /* to report EE events */
tNFA_EE_CBACK* p_ee_disc_cback; /* to report EE discovery result */
tNFA_EE_ENABLE_DONE_CBACK*
- p_enable_cback; /* callback to notify on enable done*/
- tNFA_EE_EM_STATE em_state; /* NFA-EE state initialized or not */
- uint8_t wait_rsp; /* num of NCI rsp expected (update) */
- uint8_t num_ee_expecting; /* number of ee_info still expecting*/
- uint8_t cur_ee; /* the number of ee_info in cb */
- uint8_t ee_cfged; /* the bit mask of configured ECBs */
- uint8_t ee_cfg_sts; /* configuration status */
- tNFA_EE_WAIT ee_wait_evt; /* Pending event(s) to be reported */
- tNFA_EE_FLAGS ee_flags; /* flags */
+ p_enable_cback; /* callback to notify on enable done*/
+ tNFA_EE_EM_STATE em_state; /* NFA-EE state initialized or not */
+ uint8_t wait_rsp; /* num of NCI rsp expected (update) */
+ uint8_t num_ee_expecting; /* number of ee_info still expecting*/
+ uint8_t cur_ee; /* the number of ee_info in cb */
+ uint8_t ee_cfged; /* the bit mask of configured ECBs */
+ uint8_t ee_cfg_sts; /* configuration status */
+ tNFA_EE_WAIT ee_wait_evt; /* Pending event(s) to be reported */
+ tNFA_EE_FLAGS ee_flags; /* flags */
uint8_t route_block_control; /* controls route block feature */
+ bool isDiscoveryStopped; /* discovery status */
} tNFA_EE_CB;
/* Order of Routing entries in Routing Table */
#define NCI_ROUTE_ORDER_AID 0x01 /* AID routing order */
-#define NCI_ROUTE_ORDER_PATTERN 0x02 /* Pattern routing order*/
#define NCI_ROUTE_ORDER_SYS_CODE 0x03 /* System Code routing order*/
#define NCI_ROUTE_ORDER_PROTOCOL 0x04 /* Protocol routing order*/
#define NCI_ROUTE_ORDER_TECHNOLOGY 0x05 /* Technology routing order*/
@@ -473,6 +526,8 @@
void nfa_ee_api_set_proto_cfg(tNFA_EE_MSG* p_data);
void nfa_ee_api_add_aid(tNFA_EE_MSG* p_data);
void nfa_ee_api_remove_aid(tNFA_EE_MSG* p_data);
+void nfa_ee_api_add_sys_code(tNFA_EE_MSG* p_data);
+void nfa_ee_api_remove_sys_code(tNFA_EE_MSG* p_data);
void nfa_ee_api_lmrt_size(tNFA_EE_MSG* p_data);
void nfa_ee_api_update_now(tNFA_EE_MSG* p_data);
void nfa_ee_api_connect(tNFA_EE_MSG* p_data);
@@ -482,6 +537,7 @@
void nfa_ee_nci_disc_rsp(tNFA_EE_MSG* p_data);
void nfa_ee_nci_disc_ntf(tNFA_EE_MSG* p_data);
void nfa_ee_nci_mode_set_rsp(tNFA_EE_MSG* p_data);
+void nfa_ee_nci_nfcee_status_ntf(tNFA_EE_MSG* p_data);
void nfa_ee_nci_wait_rsp(tNFA_EE_MSG* p_data);
void nfa_ee_nci_conn(tNFA_EE_MSG* p_data);
void nfa_ee_nci_action_ntf(tNFA_EE_MSG* p_data);
@@ -494,7 +550,8 @@
tNFA_EE_CBACK_DATA* p_data);
tNFA_EE_ECB* nfa_ee_find_aid_offset(uint8_t aid_len, uint8_t* p_aid,
int* p_offset, int* p_entry);
-void nfa_ee_remove_labels(void);
+tNFA_EE_ECB* nfa_ee_find_sys_code_offset(uint16_t sys_code, int* p_offset,
+ int* p_entry);
int nfa_ee_find_total_aid_len(tNFA_EE_ECB* p_cb, int start_entry);
void nfa_ee_start_timer(void);
void nfa_ee_reg_cback_enable_done(tNFA_EE_ENABLE_DONE_CBACK* p_cback);
diff --git a/src/nfa/include/nfa_hci_api.h b/src/nfa/include/nfa_hci_api.h
index 2a40f15..cb4aa0d 100644
--- a/src/nfa/include/nfa_hci_api.h
+++ b/src/nfa/include/nfa_hci_api.h
@@ -94,7 +94,7 @@
/* Max HCI event length */
#define NFA_MAX_HCI_RSP_LEN 255
/* Max HCI event length */
-#define NFA_MAX_HCI_EVENT_LEN 260
+#define NFA_MAX_HCI_EVENT_LEN 300
/* Max HCI data length */
#define NFA_MAX_HCI_DATA_LEN 260
@@ -291,9 +291,6 @@
/*****************************************************************************
** External Function Declarations
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
/*******************************************************************************
**
@@ -468,26 +465,6 @@
/*******************************************************************************
**
-** Function NFA_HciSetRegistry
-**
-** Description This function requests a peer host to set the desired
-** registry field value for the gate that the pipe is on.
-**
-** When the peer host responds,the app is notified with
-** NFA_HCI_SET_REG_RSP_EVT or
-** if an error occurs in sending the command the app will be
-** notified by NFA_HCI_CMD_SENT_EVT
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_HciSetRegistry(tNFA_HANDLE hci_handle, uint8_t pipe,
- uint8_t reg_inx, uint8_t data_size,
- uint8_t* p_data);
-
-/*******************************************************************************
-**
** Function NFA_HciSendCommand
**
** Description This function is called to send a command on a pipe created
@@ -507,23 +484,6 @@
/*******************************************************************************
**
-** Function NFA_HciSendResponse
-**
-** Description This function is called to send a response on a pipe created
-** by the application.
-** The app will be notified by NFA_HCI_RSP_SENT_EVT if an error
-** occurs.
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_HciSendResponse(tNFA_HANDLE hci_handle, uint8_t pipe,
- uint8_t response, uint8_t data_size,
- uint8_t* p_data);
-
-/*******************************************************************************
-**
** Function NFA_HciSendEvent
**
** Description This function is called to send any event on a pipe created
@@ -612,8 +572,4 @@
*******************************************************************************/
extern void NFA_HciDebug(uint8_t action, uint8_t size, uint8_t* p_data);
-#ifdef __cplusplus
-}
-#endif
-
#endif /* NFA_P2P_API_H */
diff --git a/src/nfa/include/nfa_hci_defs.h b/src/nfa/include/nfa_hci_defs.h
index 67d5a33..2737531 100644
--- a/src/nfa/include/nfa_hci_defs.h
+++ b/src/nfa/include/nfa_hci_defs.h
@@ -31,13 +31,16 @@
#define NFA_HCI_IDENTITY_MANAGEMENT_GATE 0x05
#define NFA_HCI_FIRST_HOST_SPECIFIC_GENERIC_GATE 0x10
-#define NFA_HCI_LAST_HOST_SPECIFIC_GENERIC_GATE 0xEF
#define NFA_HCI_FIRST_PROP_GATE 0xF0
#define NFA_HCI_LAST_PROP_GATE 0xFF
/* Generic Gates */
#define NFA_HCI_CONNECTIVITY_GATE 0x41
+/* Proprietary Gates */
+#define NFA_HCI_PROP_GATE_FIRST 0xF0
+#define NFA_HCI_PROP_GATE_LAST 0xFF
+
/* Static pipes */
#define NFA_HCI_LINK_MANAGEMENT_PIPE 0x00
#define NFA_HCI_ADMIN_PIPE 0x01
@@ -48,8 +51,6 @@
/* host_table */
#define NFA_HCI_HOST_CONTROLLER 0x00
-#define NFA_HCI_DH_HOST 0x01
-#define NFA_HCI_UICC_HOST 0x02
/* Type of instruction */
#define NFA_HCI_COMMAND_TYPE 0x00
@@ -105,13 +106,9 @@
/* Host controller Admin gate registry identifiers */
#define NFA_HCI_SESSION_IDENTITY_INDEX 0x01
-#define NFA_HCI_MAX_PIPE_INDEX 0x02
#define NFA_HCI_WHITELIST_INDEX 0x03
#define NFA_HCI_HOST_LIST_INDEX 0x04
-/* Host controller and DH Link management gate registry identifier */
-#define NFA_HCI_REC_ERROR_INDEX 0x02
-
/* DH Identity management gate registry identifier */
#define NFA_HCI_VERSION_SW_INDEX 0x01
#define NFA_HCI_VERSION_HW_INDEX 0x03
diff --git a/src/nfa/int/nfa_hci_int.h b/src/nfa/include/nfa_hci_int.h
similarity index 94%
rename from src/nfa/int/nfa_hci_int.h
rename to src/nfa/include/nfa_hci_int.h
index ca84f4b..9158a4e 100644
--- a/src/nfa/int/nfa_hci_int.h
+++ b/src/nfa/include/nfa_hci_int.h
@@ -24,11 +24,15 @@
#ifndef NFA_HCI_INT_H
#define NFA_HCI_INT_H
+#include <string>
+#include "nfa_ee_api.h"
#include "nfa_hci_api.h"
#include "nfa_sys.h"
+extern uint8_t HCI_LOOPBACK_DEBUG;
-extern bool HCI_LOOPBACK_DEBUG;
-
+/* NFA HCI DEBUG states */
+#define NFA_HCI_DEBUG_ON 0x01
+#define NFA_HCI_DEBUG_OFF 0x00
/*****************************************************************************
** Constants and data types
*****************************************************************************/
@@ -38,8 +42,6 @@
#define NFA_HCI_LAST_HOST_SPECIFIC_GATE 0xEF
#define NFA_HCI_SESSION_ID_LEN 8 /* HCI Session ID length */
-/* Maximum pipes that can be created on a generic pipe */
-#define NFA_MAX_PIPES_IN_GENERIC_GATE 0x0F
/* HCI SW Version number */
#define NFA_HCI_VERSION_SW 0x090000
@@ -71,14 +73,14 @@
*/
#define NFA_HCI_STATE_RESTORE_NETWK_ENABLE 0x08
+#define NFA_HCI_STATE_EE_RECOVERY 0x09
+
typedef uint8_t tNFA_HCI_STATE;
/* NFA HCI PIPE states */
#define NFA_HCI_PIPE_CLOSED 0x00 /* Pipe is closed */
#define NFA_HCI_PIPE_OPENED 0x01 /* Pipe is opened */
-#define NFA_HCI_INVALID_INX 0xFF
-
typedef uint8_t tNFA_HCI_COMMAND;
typedef uint8_t tNFA_HCI_RESPONSE;
@@ -113,8 +115,6 @@
#define NFA_HCI_FIRST_API_EVENT NFA_HCI_API_REGISTER_APP_EVT
#define NFA_HCI_LAST_API_EVENT NFA_HCI_API_SEND_EVENT_EVT
-typedef uint16_t tNFA_HCI_INT_EVT;
-
/* Internal event structures.
**
** Note, every internal structure starts with a NFC_HDR and an app handle
@@ -355,15 +355,11 @@
uint8_t hci_version; /* HCI Version */
} tNFA_ID_MGMT_GATE_INFO;
-/* Internal flags */
-/* sub system is being disabled */
-#define NFA_HCI_FL_DISABLING 0x01
-#define NFA_HCI_FL_NV_CHANGED 0x02 /* NV Ram changed */
-
/* NFA HCI control block */
typedef struct {
- tNFA_HCI_STATE hci_state; /* state of the HCI */
- uint8_t num_nfcee; /* Number of NFCEE ID Discovered */
+ tNFA_HCI_STATE hci_state; /* state of the HCI */
+ uint8_t num_nfcee; /* Number of NFCEE ID Discovered */
+ tNFA_EE_INFO ee_info[NFA_HCI_MAX_HOST_IN_NETWORK]; /*NFCEE ID Info*/
uint8_t num_ee_dis_req_ntf; /* Number of ee discovery request ntf received */
uint8_t num_hot_plug_evts; /* Number of Hot plug events received after ee
discovery disable ntf */
@@ -442,6 +438,7 @@
extern void nfa_hci_startup_complete(tNFA_STATUS status);
extern void nfa_hci_startup(void);
extern void nfa_hci_restore_default_config(uint8_t* p_session_id);
+extern void nfa_hci_enable_one_nfcee(void);
/* Action functions in nfa_hci_act.c
*/
@@ -449,7 +446,7 @@
extern void nfa_hci_check_api_requests(void);
extern void nfa_hci_handle_admin_gate_cmd(uint8_t* p_data);
extern void nfa_hci_handle_admin_gate_rsp(uint8_t* p_data, uint8_t data_len);
-extern void nfa_hci_handle_admin_gate_evt(uint8_t* p_data);
+extern void nfa_hci_handle_admin_gate_evt();
extern void nfa_hci_handle_link_mgm_gate_cmd(uint8_t* p_data);
extern void nfa_hci_handle_dyn_pipe_pkt(uint8_t pipe, uint8_t* p_data,
uint16_t data_len);
@@ -481,8 +478,6 @@
extern tNFA_HANDLE nfa_hciu_get_pipe_owner(uint8_t pipe_id);
extern uint8_t nfa_hciu_count_open_pipes_on_gate(tNFA_HCI_DYN_GATE* p_gate);
extern uint8_t nfa_hciu_count_pipes_on_gate(tNFA_HCI_DYN_GATE* p_gate);
-extern tNFA_STATUS nfa_hciu_asmbl_dyn_pipe_pkt(uint8_t* p_data,
- uint8_t data_len);
extern tNFA_HCI_RESPONSE nfa_hciu_add_pipe_to_gate(uint8_t pipe,
uint8_t local_gate,
@@ -519,15 +514,11 @@
uint8_t instruction, uint16_t pkt_len,
uint8_t* p_pkt);
-#if (BT_TRACE_VERBOSE == TRUE)
-extern char* nfa_hciu_type_2_str(uint8_t type);
-extern char* nfa_hciu_instr_2_str(uint8_t type);
-extern char* nfa_hciu_get_event_name(uint16_t event);
-extern char* nfa_hciu_get_response_name(uint8_t rsp_code);
-extern char* nfa_hciu_get_state_name(uint8_t state);
+extern std::string nfa_hciu_instr_2_str(uint8_t type);
+extern std::string nfa_hciu_get_event_name(uint16_t event);
+extern std::string nfa_hciu_get_state_name(uint8_t state);
extern char* nfa_hciu_get_type_inst_names(uint8_t pipe, uint8_t type,
uint8_t inst, char* p_buff);
-extern char* nfa_hciu_evt_2_str(uint8_t pipe_id, uint8_t evt);
-#endif
+extern std::string nfa_hciu_evt_2_str(uint8_t pipe_id, uint8_t evt);
#endif /* NFA_HCI_INT_H */
diff --git a/src/nfa/include/nfa_mem_co.h b/src/nfa/include/nfa_mem_co.h
index decc5f3..e027c16 100644
--- a/src/nfa/include/nfa_mem_co.h
+++ b/src/nfa/include/nfa_mem_co.h
@@ -33,9 +33,6 @@
/*****************************************************************************
** External Function Declarations
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
/*******************************************************************************
**
@@ -62,8 +59,4 @@
*******************************************************************************/
extern void nfa_mem_co_free(void* p_buf);
-#ifdef __cplusplus
-}
-#endif
-
#endif /* NFA_MEM_CO_H */
diff --git a/src/nfa/include/nfa_nv_ci.h b/src/nfa/include/nfa_nv_ci.h
index eb519d6..adcf085 100644
--- a/src/nfa/include/nfa_nv_ci.h
+++ b/src/nfa/include/nfa_nv_ci.h
@@ -30,27 +30,9 @@
** Constants and data types
*****************************************************************************/
-/* Read Ready Event */
-typedef struct {
- NFC_HDR hdr;
- tNFA_NV_CO_STATUS status;
- int fd;
- uint16_t num_read;
-} tNFA_NV_CI_READ_EVT;
-
-/* Write Ready Event */
-typedef struct {
- NFC_HDR hdr;
- tNFA_NV_CO_STATUS status;
- int fd;
-} tNFA_NV_CI_WRITE_EVT;
-
/*****************************************************************************
** Function Declarations
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
/*******************************************************************************
**
@@ -95,8 +77,4 @@
extern void nfa_nv_ci_read(uint16_t num_bytes_read, tNFA_NV_CO_STATUS status,
uint8_t block);
-#ifdef __cplusplus
-}
-#endif
-
#endif /* BTA_FS_CI_H */
diff --git a/src/nfa/include/nfa_nv_co.h b/src/nfa/include/nfa_nv_co.h
index e183c3e..0f32e9c 100644
--- a/src/nfa/include/nfa_nv_co.h
+++ b/src/nfa/include/nfa_nv_co.h
@@ -41,22 +41,12 @@
* status */
#define NFA_NV_CO_OK 0x00
#define NFA_NV_CO_FAIL 0x01 /* Used to pass all other errors */
-#define NFA_NV_CO_EACCES 0x02
-#define NFA_NV_CO_ENOTEMPTY 0x03
-#define NFA_NV_CO_EOF 0x04
-#define NFA_NV_CO_EODIR 0x05
-#define NFA_NV_CO_ENOSPACE 0x06 /* Returned in nfa_nv_ci_open if no room */
-#define NFA_NV_CO_EIS_DIR 0x07
-#define NFA_NV_CO_RESUME 0x08 /* used in nfa_nv_ci_open, on resume */
-/* used in nfa_nv_ci_open, on resume (no file to resume) */
-#define NFA_NV_CO_NONE 0x09
typedef uint8_t tNFA_NV_CO_STATUS;
#define DH_NV_BLOCK 0x01
#define HC_F3_NV_BLOCK 0x02
#define HC_F4_NV_BLOCK 0x03
-#define HC_DH_NV_BLOCK 0x04
#define HC_F5_NV_BLOCK 0x05
/*****************************************************************************
diff --git a/src/nfa/include/nfa_p2p_api.h b/src/nfa/include/nfa_p2p_api.h
index ee1be53..bcfc234 100644
--- a/src/nfa/include/nfa_p2p_api.h
+++ b/src/nfa/include/nfa_p2p_api.h
@@ -41,12 +41,8 @@
0x02 /* no service bound in remote */
#define NFA_P2P_DISC_REASON_REMOTE_REJECT \
0x03 /* remote rejected connection */
-#define NFA_P2P_DISC_REASON_FRAME_ERROR \
- 0x04 /* sending or receiving FRMR PDU */
#define NFA_P2P_DISC_REASON_LLCP_DEACTIVATED \
0x05 /* LLCP link deactivated */
-#define NFA_P2P_DISC_REASON_NO_RESOURCE \
- 0x06 /* Out of resource in local device */
#define NFA_P2P_DISC_REASON_NO_INFORMATION \
0x80 /* Without information */
@@ -79,16 +75,6 @@
#define NFA_P2P_ANY_SAP LLCP_INVALID_SAP
#define NFA_P2P_INVALID_SAP LLCP_INVALID_SAP
-/* Recommanded MIU's for connection-oriented */
-#define NFA_P2P_MIU_1 \
- (NCI_NFC_DEP_MAX_DATA - LLCP_PDU_HEADER_SIZE - LLCP_SEQUENCE_SIZE)
-#define NFA_P2P_MIU_2 \
- (2 * NCI_NFC_DEP_MAX_DATA - LLCP_PDU_HEADER_SIZE - LLCP_SEQUENCE_SIZE)
-#define NFA_P2P_MIU_3 \
- (3 * NCI_NFC_DEP_MAX_DATA - LLCP_PDU_HEADER_SIZE - LLCP_SEQUENCE_SIZE)
-#define NFA_P2P_MIU_8 \
- (8 * NCI_NFC_DEP_MAX_DATA - LLCP_PDU_HEADER_SIZE - LLCP_SEQUENCE_SIZE)
-
#define NFA_P2P_LLINK_TYPE LLCP_LINK_TYPE_LOGICAL_DATA_LINK
#define NFA_P2P_DLINK_TYPE LLCP_LINK_TYPE_DATA_LINK_CONNECTION
typedef uint8_t tNFA_P2P_LINK_TYPE;
@@ -188,9 +174,6 @@
/*****************************************************************************
** External Function Declarations
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
/*******************************************************************************
**
@@ -559,20 +542,4 @@
uint16_t* p_data_link_timeout,
uint16_t* p_delay_first_pdu_timeout);
-/*******************************************************************************
-**
-** Function NFA_P2pSetTraceLevel
-**
-** Description This function sets the trace level for P2P. If called with
-** a value of 0xFF, it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-extern uint8_t NFA_P2pSetTraceLevel(uint8_t new_level);
-
-#ifdef __cplusplus
-}
-#endif
-
#endif /* NFA_P2P_API_H */
diff --git a/src/nfa/int/nfa_p2p_int.h b/src/nfa/include/nfa_p2p_int.h
similarity index 97%
rename from src/nfa/int/nfa_p2p_int.h
rename to src/nfa/include/nfa_p2p_int.h
index cdbe781..0221f36 100644
--- a/src/nfa/int/nfa_p2p_int.h
+++ b/src/nfa/include/nfa_p2p_int.h
@@ -31,15 +31,13 @@
/*****************************************************************************
** Constants and data types
*****************************************************************************/
-#define NFA_P2P_DEBUG BT_TRACE_VERBOSE
/* NFA P2P LLCP link state */
enum {
NFA_P2P_LLCP_STATE_IDLE,
NFA_P2P_LLCP_STATE_LISTENING,
- NFA_P2P_LLCP_STATE_ACTIVATED,
+ NFA_P2P_LLCP_STATE_ACTIVATED
- NFA_P2P_LLCP_STATE_MAX
};
typedef uint8_t tNFA_P2P_LLCP_STATE;
@@ -255,8 +253,6 @@
total_pending_ui_pdu; /* total number of tx UI PDU not processed by NFA */
uint8_t
total_pending_i_pdu; /* total number of tx I PDU not processed by NFA */
-
- uint8_t trace_level;
} tNFA_P2P_CB;
/*****************************************************************************
@@ -308,10 +304,6 @@
bool nfa_p2p_set_llcp_cfg(tNFA_P2P_MSG* p_msg);
bool nfa_p2p_restart_rf_discovery(tNFA_P2P_MSG* p_msg);
-#if (BT_TRACE_VERBOSE == TRUE)
-char* nfa_p2p_evt_code(uint16_t evt_code);
-#endif
-
#else
#define nfa_p2p_init ()
diff --git a/src/nfa/include/nfa_rw_api.h b/src/nfa/include/nfa_rw_api.h
index f4eaded..ee9bec7 100644
--- a/src/nfa/include/nfa_rw_api.h
+++ b/src/nfa/include/nfa_rw_api.h
@@ -31,12 +31,9 @@
** Constants and data types
*****************************************************************************/
enum {
- NFA_RW_PRES_CHK_DEFAULT, /* The default behavior */
- NFA_RW_PRES_CHK_I_BLOCK, /* Empty I Block */
- NFA_RW_PRES_CHK_RESET, /* Deactivate to Sleep; Re-activate */
- NFA_RW_PRES_CHK_RB_CH0, /* ReadBinary on Channel 0 */
- NFA_RW_PRES_CHK_RB_CH3, /* ReadBinary on Channel 3 */
- NFA_RW_PRES_CHK_ISO_DEP_NAK /* presence check command ISO-DEP
+ NFA_RW_PRES_CHK_DEFAULT, /* The default behavior */
+ NFA_RW_PRES_CHK_I_BLOCK, /* Empty I Block */
+ NFA_RW_PRES_CHK_ISO_DEP_NAK = 5 /* presence check command ISO-DEP
NAK as per NCI2.0 */
};
typedef uint8_t tNFA_RW_PRES_CHK_OPTION;
@@ -54,9 +51,6 @@
/*****************************************************************************
** External Function Declarations
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
/*******************************************************************************
**
@@ -748,8 +742,4 @@
extern tNFA_STATUS NFA_RwI93GetMultiBlockSecurityStatus(
uint8_t first_block_number, uint16_t number_blocks);
-#ifdef __cplusplus
-}
-#endif
-
#endif /* NFA_RW_API_H */
diff --git a/src/nfa/int/nfa_rw_int.h b/src/nfa/include/nfa_rw_int.h
similarity index 100%
rename from src/nfa/int/nfa_rw_int.h
rename to src/nfa/include/nfa_rw_int.h
diff --git a/src/nfa/include/nfa_snep_api.h b/src/nfa/include/nfa_snep_api.h
index e63f19a..c723824 100644
--- a/src/nfa/include/nfa_snep_api.h
+++ b/src/nfa/include/nfa_snep_api.h
@@ -30,36 +30,15 @@
/*****************************************************************************
** Constants and data types
*****************************************************************************/
-#define NFA_SNEP_VERSION 0x10 /* SNEP Version 1.0 */
-/* send remaining fragments */
-#define NFA_SNEP_REQ_CODE_CONTINUE 0x00
/* return an NDEF message */
#define NFA_SNEP_REQ_CODE_GET 0x01
/* accept an NDEF message */
#define NFA_SNEP_REQ_CODE_PUT 0x02
/* do not send remaining fragments */
-#define NFA_SNEP_REQ_CODE_REJECT 0x7F
#define tNFA_SNEP_REQ_CODE uint8_t
-/* continue send remaining fragments */
-#define NFA_SNEP_RESP_CODE_CONTINUE 0x80
-/* the operation succeeded */
-#define NFA_SNEP_RESP_CODE_SUCCESS 0x81
-/* resource not found */
-#define NFA_SNEP_RESP_CODE_NOT_FOUND 0xC0
-/* resource exceeds data size limit */
-#define NFA_SNEP_RESP_CODE_EXCESS_DATA 0xC1
-/* malformed request not understood */
-#define NFA_SNEP_RESP_CODE_BAD_REQ 0xC2
-/* unsupported functionality requested */
-#define NFA_SNEP_RESP_CODE_NOT_IMPLM 0xE0
-/* unsupported protocol version */
-#define NFA_SNEP_RESP_CODE_UNSUPP_VER 0xE1
-/* do not send remaining fragments */
-#define NFA_SNEP_RESP_CODE_REJECT 0xFF
-
#define tNFA_SNEP_RESP_CODE uint8_t
/* NFA SNEP callback events */
@@ -89,15 +68,8 @@
/* GET response sent to client */
#define NFA_SNEP_GET_RESP_CMPL_EVT 0x0B
-/* SNEP default server is started */
-#define NFA_SNEP_DEFAULT_SERVER_STARTED_EVT 0x0C
-/* SNEP default server is stopped */
-#define NFA_SNEP_DEFAULT_SERVER_STOPPED_EVT 0x0D
-
typedef uint8_t tNFA_SNEP_EVT;
-#define NFA_SNEP_ANY_SAP LLCP_INVALID_SAP
-
/* Data for NFA_SNEP_REG_EVT */
typedef struct {
tNFA_STATUS status;
@@ -199,291 +171,4 @@
/* NFA SNEP callback */
typedef void(tNFA_SNEP_CBACK)(tNFA_SNEP_EVT event, tNFA_SNEP_EVT_DATA* p_data);
-/*****************************************************************************
-** External Function Declarations
-*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*******************************************************************************
-**
-** Function NFA_SnepStartDefaultServer
-**
-** Description This function is called to listen to SAP, 0x04 as SNEP
-** default server ("urn:nfc:sn:snep") on LLCP.
-**
-** NFA_SNEP_DEFAULT_SERVER_STARTED_EVT without data will be
-** returned.
-**
-** Note: If RF discovery is started,
-** NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
-** happen before calling this function
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_SnepStartDefaultServer(tNFA_SNEP_CBACK* p_cback);
-
-/*******************************************************************************
-**
-** Function NFA_SnepStopDefaultServer
-**
-** Description This function is called to stop SNEP default server on LLCP.
-**
-** NFA_SNEP_DEFAULT_SERVER_STOPPED_EVT without data will be
-** returned.
-**
-** Note: If RF discovery is started,
-** NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
-** happen before calling this function
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_SnepStopDefaultServer(tNFA_SNEP_CBACK* p_cback);
-
-/*******************************************************************************
-**
-** Function NFA_SnepRegisterServer
-**
-** Description This function is called to listen to a SAP as SNEP server.
-**
-** If server_sap is set to NFA_SNEP_ANY_SAP, then NFA will
-** allocate a SAP between LLCP_LOWER_BOUND_SDP_SAP and
-** LLCP_UPPER_BOUND_SDP_SAP
-**
-** NFC Forum default SNEP server ("urn:nfc:sn:snep") may be
-** launched by NFA_SnepStartDefaultServer ().
-**
-** NFA_SNEP_REG_EVT will be returned with status, handle and
-** service name.
-**
-** Note: If RF discovery is started,
-** NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
-** happen before calling this function
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_INVALID_PARAM if p_service_name or p_cback is
-** NULL
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_SnepRegisterServer(uint8_t server_sap,
- char* p_service_name,
- tNFA_SNEP_CBACK* p_cback);
-
-/*******************************************************************************
-**
-** Function NFA_SnepRegisterClient
-**
-** Description This function is called to register SNEP client.
-** NFA_SNEP_REG_EVT will be returned with status, handle
-** and zero-length service name.
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_INVALID_PARAM if p_cback is NULL
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_SnepRegisterClient(tNFA_SNEP_CBACK* p_cback);
-
-/*******************************************************************************
-**
-** Function NFA_SnepDeregister
-**
-** Description This function is called to stop listening as SNEP server
-** or SNEP client. Application shall use reg_handle returned in
-** NFA_SNEP_REG_EVT.
-**
-** Note: If this function is called to de-register a SNEP server and
-** RF discovery is started,
-** NFA_StopRfDiscovery()/NFA_RF_DISCOVERY_STOPPED_EVT should
-** happen before calling this function
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_BAD_HANDLE if handle is not valid
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_SnepDeregister(tNFA_HANDLE reg_handle);
-
-/*******************************************************************************
-**
-** Function NFA_SnepConnect
-**
-** Description This function is called by client to create data link
-** connection to SNEP server on peer device.
-**
-** Client handle and service name of server to connect shall be
-** provided. A conn_handle will be returned in
-** NFA_SNEP_CONNECTED_EVT, if successfully connected. Otherwise
-** NFA_SNEP_DISC_EVT will be returned.
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_BAD_HANDLE if handle is not valid
-** NFA_STATUS_INVALID_PARAM if p_service_name or p_cback is
-** NULL
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_SnepConnect(tNFA_HANDLE client_handle,
- char* p_service_name);
-
-/*******************************************************************************
-**
-** Function NFA_SnepGet
-**
-** Description This function is called by client to send GET request.
-**
-** Application shall allocate a buffer and put NDEF message
-** with desired record type to get from server. NDEF message
-** from server will be returned in the same buffer with
-** NFA_SNEP_GET_RESP_EVT. The size of buffer will be used as
-** "Acceptable Length".
-**
-** NFA_SNEP_GET_RESP_EVT or NFA_SNEP_DISC_EVT will be returned
-** through registered p_cback. Application may free the buffer
-** after receiving these events.
-**
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_BAD_HANDLE if handle is not valid
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_SnepGet(tNFA_HANDLE conn_handle, uint32_t buff_length,
- uint32_t ndef_length, uint8_t* p_ndef_buff);
-
-/*******************************************************************************
-**
-** Function NFA_SnepPut
-**
-** Description This function is called by client to send PUT request.
-**
-** Application shall allocate a buffer and put desired NDEF
-** message to send to server.
-**
-** NFA_SNEP_PUT_RESP_EVT or NFA_SNEP_DISC_EVT will be returned
-** through p_cback. Application may free the buffer after
-** receiving these events.
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_BAD_HANDLE if handle is not valid
-** NFA_STATUS_INVALID_PARAM if p_service_name or p_cback is
-** NULL
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_SnepPut(tNFA_HANDLE conn_handle, uint32_t ndef_length,
- uint8_t* p_ndef_buff);
-
-/*******************************************************************************
-**
-** Function NFA_SnepGetResponse
-**
-** Description This function is called by server to send response of GET
-** request.
-**
-** When server application receives NFA_SNEP_ALLOC_BUFF_EVT,
-** it shall allocate a buffer for incoming NDEF message and
-** pass the pointer within callback context. This buffer will
-** be returned with NFA_SNEP_GET_REQ_EVT after receiving
-** complete NDEF message. If buffer is not allocated,
-** NFA_SNEP_RESP_CODE_NOT_FOUND (Note:There is no proper
-** response code for this case) or NFA_SNEP_RESP_CODE_REJECT
-** will be sent to client.
-**
-** Server application shall provide conn_handle which is
-** received in NFA_SNEP_GET_REQ_EVT.
-**
-** Server application shall allocate a buffer and put NDEF
-** message if response code is NFA_SNEP_RESP_CODE_SUCCESS.
-** Otherwise, ndef_length shall be set to zero.
-**
-** NFA_SNEP_GET_RESP_CMPL_EVT or NFA_SNEP_DISC_EVT will be
-** returned through registered callback function. Application
-** may free the buffer after receiving these events.
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_BAD_HANDLE if handle is not valid
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_SnepGetResponse(tNFA_HANDLE conn_handle,
- tNFA_SNEP_RESP_CODE resp_code,
- uint32_t ndef_length,
- uint8_t* p_ndef_buff);
-
-/*******************************************************************************
-**
-** Function NFA_SnepPutResponse
-**
-** Description This function is called by server to send response of PUT
-** request.
-**
-** When server application receives NFA_SNEP_ALLOC_BUFF_EVT,
-** it shall allocate a buffer for incoming NDEF message and
-** pass the pointer within callback context. This buffer will
-** be returned with NFA_SNEP_PUT_REQ_EVT after receiving
-** complete NDEF message. If buffer is not allocated,
-** NFA_SNEP_RESP_CODE_REJECT will be sent to client or NFA will
-** discard request and send NFA_SNEP_RESP_CODE_SUCCESS
-** (Note:There is no proper response code for this case).
-**
-** Server application shall provide conn_handle which is
-** received in NFA_SNEP_PUT_REQ_EVT.
-**
-** NFA_SNEP_DISC_EVT will be returned through registered
-** callback function when client disconnects data link
-** connection.
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_BAD_HANDLE if handle is not valid
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_SnepPutResponse(tNFA_HANDLE conn_handle,
- tNFA_SNEP_RESP_CODE resp_code);
-
-/*******************************************************************************
-**
-** Function NFA_SnepDisconnect
-**
-** Description This function is called to disconnect data link connection.
-** discard any pending data if flush is set to TRUE
-**
-** Client application shall provide conn_handle in
-** NFA_SNEP_GET_RESP_EVT or NFA_SNEP_PUT_RESP_EVT.
-**
-** Server application shall provide conn_handle in
-** NFA_SNEP_GET_REQ_EVT or NFA_SNEP_PUT_REQ_EVT.
-**
-** NFA_SNEP_DISC_EVT will be returned
-**
-** Returns NFA_STATUS_OK if successfully initiated
-** NFA_STATUS_BAD_HANDLE if handle is not valid
-** NFA_STATUS_FAILED otherwise
-**
-*******************************************************************************/
-extern tNFA_STATUS NFA_SnepDisconnect(tNFA_HANDLE conn_handle, bool flush);
-
-/*******************************************************************************
-**
-** Function NFA_SnepSetTraceLevel
-**
-** Description This function sets the trace level for SNEP. If called with
-** a value of 0xFF, it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-extern uint8_t NFA_SnepSetTraceLevel(uint8_t new_level);
-
-#ifdef __cplusplus
-}
-#endif
-
#endif /* NFA_P2P_API_H */
diff --git a/src/nfa/int/nfa_snep_int.h b/src/nfa/include/nfa_snep_int.h
similarity index 80%
rename from src/nfa/int/nfa_snep_int.h
rename to src/nfa/include/nfa_snep_int.h
index d4db0aa..83f6cb5 100644
--- a/src/nfa/int/nfa_snep_int.h
+++ b/src/nfa/include/nfa_snep_int.h
@@ -31,11 +31,7 @@
/*****************************************************************************
** Constants and data types
*****************************************************************************/
-#define NFA_SNEP_DEFAULT_SERVER_SAP 0x04 /* SNEP default server SAP */
-#define NFA_SNEP_HEADER_SIZE 6 /* SNEP header size */
/* SNEP Acceptable Length size */
-#define NFA_SNEP_ACCEPT_LEN_SIZE 4
-#define NFA_SNEP_CLIENT_TIMEOUT 1000 /* ms, waiting for response */
/* NFA SNEP events */
enum {
@@ -49,9 +45,8 @@
NFA_SNEP_API_PUT_REQ_EVT,
NFA_SNEP_API_GET_RESP_EVT,
NFA_SNEP_API_PUT_RESP_EVT,
- NFA_SNEP_API_DISCONNECT_EVT,
+ NFA_SNEP_API_DISCONNECT_EVT
- NFA_SNEP_LAST_EVT
};
/* data type for NFA_SNEP_API_START_DEFAULT_SERVER_EVT */
@@ -157,17 +152,10 @@
/* NFA SNEP service control block */
/* ignore flags while searching */
-#define NFA_SNEP_FLAG_ANY 0x00
-#define NFA_SNEP_FLAG_SERVER 0x01 /* server */
-#define NFA_SNEP_FLAG_CLIENT 0x02 /* client */
/* waiting for connection confirm */
-#define NFA_SNEP_FLAG_CONNECTING 0x04
/* data link connected */
-#define NFA_SNEP_FLAG_CONNECTED 0x08
/* Waiting for continue response */
-#define NFA_SNEP_FLAG_W4_RESP_CONTINUE 0x10
/* Waiting for continue request */
-#define NFA_SNEP_FLAG_W4_REQ_CONTINUE 0x20
typedef struct {
uint8_t local_sap; /* local SAP of service */
@@ -197,7 +185,6 @@
tNFA_SNEP_CONN conn[NFA_SNEP_MAX_CONN];
bool listen_enabled;
bool is_dta_mode;
- uint8_t trace_level;
} tNFA_SNEP_CB;
/*
@@ -236,38 +223,6 @@
** nfa_snep_main.c
*/
void nfa_snep_init(bool is_dta_mode);
-/*
-** nfa_snep_default.c
-*/
-void nfa_snep_default_init(void);
-bool nfa_snep_start_default_server(tNFA_SNEP_MSG* p_msg);
-bool nfa_snep_stop_default_server(tNFA_SNEP_MSG* p_msg);
-/*
-** nfa_snep_srv.c
-*/
-uint8_t nfa_snep_allocate_cb(void);
-void nfa_snep_deallocate_cb(uint8_t xx);
-void nfa_snep_send_msg(uint8_t opcode, uint8_t dlink);
-
-void nfa_snep_llcp_cback(tLLCP_SAP_CBACK_DATA* p_data);
-void nfa_snep_proc_llcp_data_ind(tLLCP_SAP_CBACK_DATA* p_data);
-void nfa_snep_proc_llcp_connect_ind(tLLCP_SAP_CBACK_DATA* p_data);
-void nfa_snep_proc_llcp_connect_resp(tLLCP_SAP_CBACK_DATA* p_data);
-void nfa_snep_proc_llcp_disconnect_ind(tLLCP_SAP_CBACK_DATA* p_data);
-void nfa_snep_proc_llcp_disconnect_resp(tLLCP_SAP_CBACK_DATA* p_data);
-void nfa_snep_proc_llcp_congest(tLLCP_SAP_CBACK_DATA* p_data);
-void nfa_snep_proc_llcp_link_status(tLLCP_SAP_CBACK_DATA* p_data);
-void nfa_snep_proc_llcp_tx_complete(tLLCP_SAP_CBACK_DATA* p_data);
-
-bool nfa_snep_reg_server(tNFA_SNEP_MSG* p_msg);
-bool nfa_snep_reg_client(tNFA_SNEP_MSG* p_msg);
-bool nfa_snep_dereg(tNFA_SNEP_MSG* p_msg);
-bool nfa_snep_connect(tNFA_SNEP_MSG* p_msg);
-bool nfa_snep_put_resp(tNFA_SNEP_MSG* p_msg);
-bool nfa_snep_get_resp(tNFA_SNEP_MSG* p_msg);
-bool nfa_snep_put_req(tNFA_SNEP_MSG* p_msg);
-bool nfa_snep_get_req(tNFA_SNEP_MSG* p_msg);
-bool nfa_snep_disconnect(tNFA_SNEP_MSG* p_msg);
#endif /* (NFA_SNEP_INCLUDED == TRUE) */
#endif /* NFA_SNEP_INT_H */
diff --git a/src/nfa/int/nfa_sys.h b/src/nfa/include/nfa_sys.h
similarity index 95%
rename from src/nfa/int/nfa_sys.h
rename to src/nfa/include/nfa_sys.h
index 62472ca..42d8464 100644
--- a/src/nfa/int/nfa_sys.h
+++ b/src/nfa/include/nfa_sys.h
@@ -61,7 +61,6 @@
/* function type for processing the change of NFCC power mode */
typedef void(tNFA_SYS_PROC_NFCC_PWR_MODE)(uint8_t nfcc_power_mode);
-typedef void(tNFA_SYS_CBACK)(void);
typedef void(tNFA_SYS_ENABLE_CBACK)(void);
typedef void(tNFA_SYS_PROC_NFCC_PWR_MODE_CMPL)(void);
@@ -78,7 +77,6 @@
uint16_t mbox_evt; /* GKI mailbox event */
uint8_t mbox; /* GKI mailbox id */
uint8_t timer; /* GKI timer id */
- uint8_t trace_level; /* initial trace level */
} tNFA_SYS_CFG;
/*****************************************************************************
@@ -96,15 +94,10 @@
** Function declarations
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
extern void nfa_sys_init(void);
extern void nfa_sys_event(NFC_HDR* p_msg);
extern void nfa_sys_timer_update(void);
extern void nfa_sys_disable_timers(void);
-extern void nfa_sys_set_trace_level(uint8_t level);
extern void nfa_sys_register(uint8_t id, const tNFA_SYS_REG* p_reg);
extern void nfa_sys_deregister(uint8_t id);
@@ -127,8 +120,4 @@
tNFA_SYS_PROC_NFCC_PWR_MODE_CMPL* p_cback);
extern void nfa_sys_cback_notify_nfcc_power_mode_proc_complete(uint8_t id);
-#ifdef __cplusplus
-}
-#endif
-
#endif /* NFA_SYS_H */
diff --git a/src/nfa/int/nfa_sys_int.h b/src/nfa/include/nfa_sys_int.h
similarity index 96%
rename from src/nfa/int/nfa_sys_int.h
rename to src/nfa/include/nfa_sys_int.h
index c93b3f4..e040b1b 100644
--- a/src/nfa/int/nfa_sys_int.h
+++ b/src/nfa/include/nfa_sys_int.h
@@ -53,7 +53,6 @@
bool graceful_disable; /* TRUE if NFA_Disable () is called with TRUE */
bool timers_disabled; /* TRUE if sys timers disabled */
- uint8_t trace_level; /* Trace level */
} tNFA_SYS_CB;
/*****************************************************************************
@@ -66,6 +65,4 @@
/* system manager configuration structure */
extern tNFA_SYS_CFG* p_nfa_sys_cfg;
-bool nfa_sys_sm_execute(NFC_HDR* p_msg);
-
#endif /* NFA_SYS_INT_H */
diff --git a/src/nfa/int/nfa_sys_ptim.h b/src/nfa/include/nfa_sys_ptim.h
similarity index 97%
rename from src/nfa/int/nfa_sys_ptim.h
rename to src/nfa/include/nfa_sys_ptim.h
index 0549f63..1582012 100644
--- a/src/nfa/int/nfa_sys_ptim.h
+++ b/src/nfa/include/nfa_sys_ptim.h
@@ -37,10 +37,6 @@
uint8_t timer_id; /* GKI timer id */
} tPTIM_CB;
-#ifdef __cplusplus
-extern "C" {
-#endif
-
/*****************************************************************************
** Function Declarations
*****************************************************************************/
@@ -92,8 +88,4 @@
*******************************************************************************/
extern void nfa_sys_ptim_stop_timer(tPTIM_CB* p_cb, TIMER_LIST_ENT* p_tle);
-#ifdef __cplusplus
-}
-#endif
-
#endif /* NFA_SYS_PTIM_H */
diff --git a/src/nfa/p2p/nfa_p2p_act.c b/src/nfa/p2p/nfa_p2p_act.cc
similarity index 92%
rename from src/nfa/p2p/nfa_p2p_act.c
rename to src/nfa/p2p/nfa_p2p_act.cc
index efac872..0d8c8e4 100644
--- a/src/nfa/p2p/nfa_p2p_act.c
+++ b/src/nfa/p2p/nfa_p2p_act.cc
@@ -21,16 +21,17 @@
* This is the implementation file for the NFA P2P.
*
******************************************************************************/
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
#include "llcp_api.h"
-#include "llcp_defs.h"
#include "nfa_dm_int.h"
#include "nfa_p2p_api.h"
#include "nfa_p2p_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
-#include "nfc_api.h"
-#include "string.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*****************************************************************************
** Global Variables
@@ -66,7 +67,7 @@
}
}
- P2P_TRACE_ERROR0("nfa_p2p_allocate_conn_cb (): No resource");
+ LOG(ERROR) << StringPrintf("No resource");
return LLCP_MAX_DATA_LINK;
}
@@ -85,7 +86,7 @@
if (xx < LLCP_MAX_DATA_LINK) {
nfa_p2p_cb.conn_cb[xx].flags = 0;
} else {
- P2P_TRACE_ERROR1("nfa_p2p_deallocate_conn_cb (): Invalid index (%d)", xx);
+ LOG(ERROR) << StringPrintf("Invalid index (%d)", xx);
}
}
@@ -124,8 +125,9 @@
**
*******************************************************************************/
static void nfa_p2p_llcp_cback(tLLCP_SAP_CBACK_DATA* p_data) {
- P2P_TRACE_DEBUG2("nfa_p2p_llcp_cback (): event:0x%02X, local_sap:0x%02X",
- p_data->hdr.event, p_data->hdr.local_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("event:0x%02X, local_sap:0x%02X", p_data->hdr.event,
+ p_data->hdr.local_sap);
switch (p_data->hdr.event) {
case LLCP_SAP_EVT_DATA_IND:
@@ -157,8 +159,7 @@
break;
default:
- P2P_TRACE_ERROR1("nfa_p2p_llcp_cback (): Unknown event:0x%02X",
- p_data->hdr.event);
+ LOG(ERROR) << StringPrintf("Unknown event:0x%02X", p_data->hdr.event);
return;
}
}
@@ -178,8 +179,8 @@
uint8_t xx;
tNFA_P2P_EVT_DATA evt_data;
- P2P_TRACE_DEBUG2("nfa_p2p_sdp_cback (): tid:0x%02X, remote_sap:0x%02X", tid,
- remote_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("tid:0x%02X, remote_sap:0x%02X", tid, remote_sap);
/* search for callback function to process */
for (xx = 0; xx < LLCP_MAX_SDP_TRANSAC; xx++) {
@@ -210,7 +211,7 @@
bool nfa_p2p_start_sdp(char* p_service_name, uint8_t local_sap) {
int xx;
- P2P_TRACE_DEBUG1("nfa_p2p_start_sdp (): SN:<%s>", p_service_name);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("SN:<%s>", p_service_name);
/* search for empty slot */
for (xx = 0; xx < LLCP_MAX_SDP_TRANSAC; xx++) {
@@ -243,7 +244,7 @@
uint8_t local_sap, xx;
tNFA_P2P_EVT_DATA evt_data;
- P2P_TRACE_DEBUG0("nfa_p2p_proc_llcp_data_ind ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
local_sap = p_data->data_ind.local_sap;
@@ -285,8 +286,8 @@
tNFA_P2P_EVT_DATA evt_data;
uint8_t xx;
- P2P_TRACE_DEBUG1("nfa_p2p_proc_llcp_connect_ind () server_sap:0x%x",
- p_data->connect_ind.server_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("server_sap:0x%x", p_data->connect_ind.server_sap);
server_sap = p_data->connect_ind.server_sap;
local_sap = p_data->connect_ind.local_sap;
@@ -312,7 +313,7 @@
nfa_p2p_cb.sap_cb[server_sap].p_cback(NFA_P2P_CONN_REQ_EVT, &evt_data);
}
} else {
- P2P_TRACE_ERROR0("nfa_p2p_proc_llcp_connect_ind (): Not registered");
+ LOG(ERROR) << StringPrintf("Not registered");
}
}
@@ -330,7 +331,7 @@
uint8_t local_sap, xx;
tNFA_P2P_EVT_DATA evt_data;
- P2P_TRACE_DEBUG0("nfa_p2p_proc_llcp_connect_resp ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
local_sap = p_data->connect_resp.local_sap;
@@ -371,7 +372,7 @@
uint8_t local_sap, xx;
tNFA_P2P_EVT_DATA evt_data;
- P2P_TRACE_DEBUG0("nfa_p2p_proc_llcp_disconnect_ind ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
local_sap = p_data->disconnect_ind.local_sap;
@@ -399,7 +400,7 @@
nfa_p2p_cb.sap_cb[local_sap].p_cback(NFA_P2P_DISC_EVT, &evt_data);
- P2P_TRACE_ERROR0("nfa_p2p_proc_llcp_disconnect_ind (): Link deactivated");
+ LOG(ERROR) << StringPrintf("Link deactivated");
}
}
}
@@ -418,7 +419,7 @@
uint8_t local_sap, xx;
tNFA_P2P_EVT_DATA evt_data;
- P2P_TRACE_DEBUG0("nfa_p2p_proc_llcp_disconnect_resp ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
local_sap = p_data->disconnect_resp.local_sap;
@@ -458,8 +459,7 @@
nfa_p2p_cb.sap_cb[local_sap].p_cback(NFA_P2P_DISC_EVT, &evt_data);
} else {
- P2P_TRACE_ERROR0(
- "nfa_p2p_proc_llcp_disconnect_resp (): No connection found");
+ LOG(ERROR) << StringPrintf("No connection found");
}
} else {
evt_data.disc.handle = (NFA_HANDLE_GROUP_P2P | local_sap);
@@ -489,12 +489,12 @@
evt_data.congest.is_congested = p_data->congest.is_congested;
if (p_data->congest.is_congested) {
- P2P_TRACE_DEBUG2("nfa_p2p_proc_llcp_congestion () START SAP=(0x%x,0x%x)",
- local_sap, remote_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("START SAP=(0x%x,0x%x)", local_sap, remote_sap);
} else {
- P2P_TRACE_DEBUG2("nfa_p2p_proc_llcp_congestion () END SAP=(0x%x,0x%x)",
- local_sap, remote_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("END SAP=(0x%x,0x%x)", local_sap, remote_sap);
}
if (nfa_p2p_cb.sap_cb[local_sap].p_cback) {
@@ -532,8 +532,7 @@
nfa_p2p_cb.sap_cb[local_sap].p_cback(NFA_P2P_CONGEST_EVT, &evt_data);
}
} else {
- P2P_TRACE_ERROR0(
- "nfa_p2p_proc_llcp_congestion (): No connection found");
+ LOG(ERROR) << StringPrintf("No connection found");
}
}
}
@@ -553,8 +552,8 @@
uint8_t local_sap, xx;
tNFA_P2P_EVT_DATA evt_data;
- P2P_TRACE_DEBUG1("nfa_p2p_proc_llcp_link_status () is_activated:%d",
- p_data->link_status.is_activated);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("is_activated:%d", p_data->link_status.is_activated);
local_sap = p_data->link_status.local_sap;
@@ -615,7 +614,7 @@
tNFA_P2P_EVT_DATA evt_data;
uint8_t server_sap;
- P2P_TRACE_DEBUG0("nfa_p2p_reg_server ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
server_sap = LLCP_RegisterServer(
p_msg->api_reg_server.server_sap, p_msg->api_reg_server.link_type,
@@ -679,7 +678,7 @@
tNFA_P2P_EVT_DATA evt_data;
uint8_t local_sap;
- P2P_TRACE_DEBUG0("nfa_p2p_reg_client ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
local_sap =
LLCP_RegisterClient(p_msg->api_reg_client.link_type, nfa_p2p_llcp_cback);
@@ -723,7 +722,7 @@
bool nfa_p2p_dereg(tNFA_P2P_MSG* p_msg) {
uint8_t local_sap, xx;
- P2P_TRACE_DEBUG0("nfa_p2p_dereg ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
local_sap = (uint8_t)(p_msg->api_dereg.handle & NFA_HANDLE_MASK);
@@ -778,7 +777,7 @@
uint8_t xx;
tLLCP_CONNECTION_PARAMS params;
- P2P_TRACE_DEBUG0("nfa_p2p_accept_connection ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
xx = (uint8_t)(p_msg->api_accept.conn_handle & NFA_HANDLE_MASK);
xx &= ~NFA_P2P_HANDLE_FLAG_CONN;
@@ -806,7 +805,7 @@
bool nfa_p2p_reject_connection(tNFA_P2P_MSG* p_msg) {
uint8_t xx;
- P2P_TRACE_DEBUG0("nfa_p2p_reject_connection ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
xx = (uint8_t)(p_msg->api_reject.conn_handle & NFA_HANDLE_MASK);
xx &= ~NFA_P2P_HANDLE_FLAG_CONN;
@@ -836,7 +835,7 @@
tLLCP_STATUS status;
tNFA_P2P_EVT_DATA evt_data;
- P2P_TRACE_DEBUG0("nfa_p2p_disconnect ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
xx = (uint8_t)(p_msg->api_disconnect.conn_handle & NFA_HANDLE_MASK);
@@ -868,7 +867,7 @@
}
}
} else {
- P2P_TRACE_ERROR0("Handle is not for Data link connection");
+ LOG(ERROR) << StringPrintf("Handle is not for Data link connection");
}
return true;
@@ -890,7 +889,7 @@
tLLCP_CONNECTION_PARAMS conn_params;
tLLCP_STATUS status;
- P2P_TRACE_DEBUG0("nfa_p2p_create_data_link_connection ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
local_sap = (uint8_t)(p_msg->api_connect.client_handle & NFA_HANDLE_MASK);
@@ -935,7 +934,7 @@
tLLCP_STATUS status;
tNFA_P2P_EVT_DATA evt_data;
- P2P_TRACE_DEBUG0("nfa_p2p_send_ui ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
local_sap = (uint8_t)(p_msg->api_send_ui.handle & NFA_HANDLE_MASK);
@@ -981,7 +980,7 @@
tLLCP_STATUS status;
uint8_t xx;
- P2P_TRACE_DEBUG0("nfa_p2p_send_data ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
xx = (uint8_t)(p_msg->api_send_data.conn_handle & NFA_HANDLE_MASK);
xx &= ~NFA_P2P_HANDLE_FLAG_CONN;
@@ -1028,7 +1027,7 @@
bool nfa_p2p_set_local_busy(tNFA_P2P_MSG* p_msg) {
uint8_t xx;
- P2P_TRACE_DEBUG0("nfa_p2p_set_local_busy ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
xx = (uint8_t)(p_msg->api_local_busy.conn_handle & NFA_HANDLE_MASK);
xx &= ~NFA_P2P_HANDLE_FLAG_CONN;
@@ -1054,7 +1053,7 @@
tNFA_P2P_EVT_DATA evt_data;
uint8_t local_sap;
- P2P_TRACE_DEBUG0("nfa_p2p_get_link_info ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
evt_data.link_info.handle = p_msg->api_link_info.handle;
evt_data.link_info.wks = LLCP_GetRemoteWKS();
@@ -1081,7 +1080,7 @@
tNFA_P2P_EVT_DATA evt_data;
uint8_t local_sap;
- P2P_TRACE_DEBUG0("nfa_p2p_get_remote_sap ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
local_sap = (uint8_t)(p_msg->api_remote_sap.handle & NFA_HANDLE_MASK);
@@ -1127,8 +1126,8 @@
** Returns TRUE to deallocate buffer
**
*******************************************************************************/
-bool nfa_p2p_restart_rf_discovery(tNFA_P2P_MSG* p_msg) {
- P2P_TRACE_DEBUG0("nfa_p2p_restart_rf_discovery ()");
+bool nfa_p2p_restart_rf_discovery(__attribute__((unused)) tNFA_P2P_MSG* p_msg) {
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfa_dm_rf_deactivate(NFA_DEACTIVATE_TYPE_IDLE);
diff --git a/src/nfa/p2p/nfa_p2p_api.c b/src/nfa/p2p/nfa_p2p_api.cc
similarity index 83%
rename from src/nfa/p2p/nfa_p2p_api.c
rename to src/nfa/p2p/nfa_p2p_api.cc
index c676701..2c0dc0b 100644
--- a/src/nfa/p2p/nfa_p2p_api.c
+++ b/src/nfa/p2p/nfa_p2p_api.cc
@@ -21,14 +21,15 @@
* NFA interface to LLCP
*
******************************************************************************/
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_p2p_api.h"
-#include <string.h>
-#include "llcp_api.h"
-#include "llcp_defs.h"
#include "nfa_p2p_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
-#include "nfc_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*****************************************************************************
** Constants
@@ -65,22 +66,19 @@
tNFA_P2P_CBACK* p_cback) {
tNFA_P2P_API_REG_SERVER* p_msg;
- P2P_TRACE_API3(
- "NFA_P2pRegisterServer (): server_sap:0x%02x, link_type:0x%x, SN:<%s>",
- server_sap, link_type, p_service_name);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("server_sap:0x%02x, link_type:0x%x, SN:<%s>", server_sap,
+ link_type, p_service_name);
if ((server_sap != NFA_P2P_ANY_SAP) &&
((server_sap <= LLCP_SAP_SDP) ||
(server_sap > LLCP_UPPER_BOUND_SDP_SAP))) {
- P2P_TRACE_ERROR2(
- "NFA_P2pRegisterServer (): server_sap must be between %d and %d",
- LLCP_SAP_SDP + 1, LLCP_UPPER_BOUND_SDP_SAP);
+ LOG(ERROR) << StringPrintf("server_sap must be between %d and %d",
+ LLCP_SAP_SDP + 1, LLCP_UPPER_BOUND_SDP_SAP);
return (NFA_STATUS_FAILED);
} else if (((link_type & NFA_P2P_LLINK_TYPE) == 0x00) &&
((link_type & NFA_P2P_DLINK_TYPE) == 0x00)) {
- P2P_TRACE_ERROR1(
- "NFA_P2pRegisterServer(): link type (0x%x) must be specified",
- link_type);
+ LOG(ERROR) << StringPrintf("link type (0x%x) must be specified", link_type);
return (NFA_STATUS_FAILED);
}
@@ -124,13 +122,11 @@
tNFA_P2P_CBACK* p_cback) {
tNFA_P2P_API_REG_CLIENT* p_msg;
- P2P_TRACE_API1("NFA_P2pRegisterClient (): link_type:0x%x", link_type);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("link_type:0x%x", link_type);
if (((link_type & NFA_P2P_LLINK_TYPE) == 0x00) &&
((link_type & NFA_P2P_DLINK_TYPE) == 0x00)) {
- P2P_TRACE_ERROR1(
- "NFA_P2pRegisterClient (): link type (0x%x) must be specified",
- link_type);
+ LOG(ERROR) << StringPrintf("link type (0x%x) must be specified", link_type);
return (NFA_STATUS_FAILED);
}
@@ -170,13 +166,12 @@
tNFA_P2P_API_DEREG* p_msg;
tNFA_HANDLE xx;
- P2P_TRACE_API1("NFA_P2pDeregister (): handle:0x%02X", handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle:0x%02X", handle);
xx = handle & NFA_HANDLE_MASK;
if ((xx >= NFA_P2P_NUM_SAP) || (nfa_p2p_cb.sap_cb[xx].p_cback == NULL)) {
- P2P_TRACE_ERROR0(
- "NFA_P2pDeregister (): Handle is invalid or not registered");
+ LOG(ERROR) << StringPrintf("Handle is invalid or not registered");
return (NFA_STATUS_BAD_HANDLE);
}
@@ -211,26 +206,26 @@
tNFA_P2P_API_ACCEPT_CONN* p_msg;
tNFA_HANDLE xx;
- P2P_TRACE_API3("NFA_P2pAcceptConn (): handle:0x%02X, MIU:%d, RW:%d", handle,
- miu, rw);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("handle:0x%02X, MIU:%d, RW:%d", handle, miu, rw);
xx = handle & NFA_HANDLE_MASK;
if (!(xx & NFA_P2P_HANDLE_FLAG_CONN)) {
- P2P_TRACE_ERROR0("NFA_P2pAcceptConn (): Connection Handle is not valid");
+ LOG(ERROR) << StringPrintf("Connection Handle is not valid");
return (NFA_STATUS_BAD_HANDLE);
} else {
xx &= ~NFA_P2P_HANDLE_FLAG_CONN;
}
if ((xx >= LLCP_MAX_DATA_LINK) || (nfa_p2p_cb.conn_cb[xx].flags == 0)) {
- P2P_TRACE_ERROR0("NFA_P2pAcceptConn (): Connection Handle is not valid");
+ LOG(ERROR) << StringPrintf("Connection Handle is not valid");
return (NFA_STATUS_BAD_HANDLE);
}
if ((miu < LLCP_DEFAULT_MIU) || (nfa_p2p_cb.local_link_miu < miu)) {
- P2P_TRACE_ERROR3("NFA_P2pAcceptConn (): MIU(%d) must be between %d and %d",
- miu, LLCP_DEFAULT_MIU, nfa_p2p_cb.local_link_miu);
+ LOG(ERROR) << StringPrintf("MIU(%d) must be between %d and %d", miu,
+ LLCP_DEFAULT_MIU, nfa_p2p_cb.local_link_miu);
} else if ((p_msg = (tNFA_P2P_API_ACCEPT_CONN*)GKI_getbuf(
sizeof(tNFA_P2P_API_ACCEPT_CONN))) != NULL) {
p_msg->hdr.event = NFA_P2P_API_ACCEPT_CONN_EVT;
@@ -264,19 +259,19 @@
tNFA_P2P_API_REJECT_CONN* p_msg;
tNFA_HANDLE xx;
- P2P_TRACE_API1("NFA_P2pRejectConn (): handle:0x%02X", handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle:0x%02X", handle);
xx = handle & NFA_HANDLE_MASK;
if (!(xx & NFA_P2P_HANDLE_FLAG_CONN)) {
- P2P_TRACE_ERROR0("NFA_P2pRejectConn (): Connection Handle is not valid");
+ LOG(ERROR) << StringPrintf("Connection Handle is not valid");
return (NFA_STATUS_BAD_HANDLE);
} else {
xx &= ~NFA_P2P_HANDLE_FLAG_CONN;
}
if ((xx >= LLCP_MAX_DATA_LINK) || (nfa_p2p_cb.conn_cb[xx].flags == 0)) {
- P2P_TRACE_ERROR0("NFA_P2pRejectConn (): Connection Handle is not valid");
+ LOG(ERROR) << StringPrintf("Connection Handle is not valid");
return (NFA_STATUS_BAD_HANDLE);
}
@@ -316,8 +311,8 @@
tNFA_P2P_API_DISCONNECT* p_msg;
tNFA_HANDLE xx;
- P2P_TRACE_API2("NFA_P2pDisconnect (): handle:0x%02X, flush=%d", handle,
- flush);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("handle:0x%02X, flush=%d", handle, flush);
xx = handle & NFA_HANDLE_MASK;
@@ -325,11 +320,11 @@
xx &= ~NFA_P2P_HANDLE_FLAG_CONN;
if ((xx >= LLCP_MAX_DATA_LINK) || (nfa_p2p_cb.conn_cb[xx].flags == 0)) {
- P2P_TRACE_ERROR0("NFA_P2pDisconnect (): Connection Handle is not valid");
+ LOG(ERROR) << StringPrintf("Connection Handle is not valid");
return (NFA_STATUS_BAD_HANDLE);
}
} else {
- P2P_TRACE_ERROR0("NFA_P2pDisconnect (): Handle is not valid");
+ LOG(ERROR) << StringPrintf("Handle is not valid");
return (NFA_STATUS_BAD_HANDLE);
}
@@ -368,22 +363,22 @@
tNFA_P2P_API_CONNECT* p_msg;
tNFA_HANDLE xx;
- P2P_TRACE_API4(
- "NFA_P2pConnectByName (): client_handle:0x%x, SN:<%s>, MIU:%d, RW:%d",
- client_handle, p_service_name, miu, rw);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("client_handle:0x%x, SN:<%s>, MIU:%d, RW:%d",
+ client_handle, p_service_name, miu, rw);
xx = client_handle & NFA_HANDLE_MASK;
if ((xx >= NFA_P2P_NUM_SAP) || (nfa_p2p_cb.sap_cb[xx].p_cback == NULL)) {
- P2P_TRACE_ERROR0("NFA_P2pConnectByName (): Client Handle is not valid");
+ LOG(ERROR) << StringPrintf("Client Handle is not valid");
return (NFA_STATUS_BAD_HANDLE);
}
if ((miu < LLCP_DEFAULT_MIU) ||
(nfa_p2p_cb.llcp_state != NFA_P2P_LLCP_STATE_ACTIVATED) ||
(nfa_p2p_cb.local_link_miu < miu)) {
- P2P_TRACE_ERROR3(
- "NFA_P2pConnectByName (): MIU(%d) must be between %d and %d or LLCP "
+ LOG(ERROR) << StringPrintf(
+ "MIU(%d) must be between %d and %d or LLCP "
"link is not activated",
miu, LLCP_DEFAULT_MIU, nfa_p2p_cb.local_link_miu);
} else if ((p_msg = (tNFA_P2P_API_CONNECT*)GKI_getbuf(
@@ -425,22 +420,22 @@
tNFA_P2P_API_CONNECT* p_msg;
tNFA_HANDLE xx;
- P2P_TRACE_API4(
- "NFA_P2pConnectBySap (): client_handle:0x%x, DSAP:0x%02X, MIU:%d, RW:%d",
- client_handle, dsap, miu, rw);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("client_handle:0x%x, DSAP:0x%02X, MIU:%d, RW:%d",
+ client_handle, dsap, miu, rw);
xx = client_handle & NFA_HANDLE_MASK;
if ((xx >= NFA_P2P_NUM_SAP) || (nfa_p2p_cb.sap_cb[xx].p_cback == NULL)) {
- P2P_TRACE_ERROR0("NFA_P2pConnectBySap (): Client Handle is not valid");
+ LOG(ERROR) << StringPrintf("Client Handle is not valid");
return (NFA_STATUS_BAD_HANDLE);
}
if ((miu < LLCP_DEFAULT_MIU) ||
(nfa_p2p_cb.llcp_state != NFA_P2P_LLCP_STATE_ACTIVATED) ||
(nfa_p2p_cb.local_link_miu < miu)) {
- P2P_TRACE_ERROR3(
- "NFA_P2pConnectBySap (): MIU(%d) must be between %d and %d, or LLCP "
+ LOG(ERROR) << StringPrintf(
+ "MIU(%d) must be between %d and %d, or LLCP "
"link is not activated",
miu, LLCP_DEFAULT_MIU, nfa_p2p_cb.local_link_miu);
} else if ((p_msg = (tNFA_P2P_API_CONNECT*)GKI_getbuf(
@@ -483,26 +478,25 @@
tNFA_STATUS ret_status = NFA_STATUS_FAILED;
tNFA_HANDLE xx;
- P2P_TRACE_API3("NFA_P2pSendUI (): handle:0x%X, DSAP:0x%02X, length:%d",
- handle, dsap, length);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "handle:0x%X, DSAP:0x%02X, length:%d", handle, dsap, length);
GKI_sched_lock();
xx = handle & NFA_HANDLE_MASK;
if ((xx >= NFA_P2P_NUM_SAP) || (nfa_p2p_cb.sap_cb[xx].p_cback == NULL)) {
- P2P_TRACE_ERROR1("NFA_P2pSendUI (): Handle (0x%X) is not valid", handle);
+ LOG(ERROR) << StringPrintf("Handle (0x%X) is not valid", handle);
ret_status = NFA_STATUS_BAD_HANDLE;
} else if (length > nfa_p2p_cb.remote_link_miu) {
- P2P_TRACE_ERROR3(
- "NFA_P2pSendUI (): handle:0x%X, length(%d) must be less than remote "
+ LOG(ERROR) << StringPrintf(
+ "handle:0x%X, length(%d) must be less than remote "
"link MIU(%d)",
handle, length, nfa_p2p_cb.remote_link_miu);
ret_status = NFA_STATUS_BAD_LENGTH;
} else if (nfa_p2p_cb.sap_cb[xx].flags & NFA_P2P_SAP_FLAG_LLINK_CONGESTED) {
- P2P_TRACE_WARNING1(
- "NFA_P2pSendUI (): handle:0x%X, logical data link is already congested",
- handle);
+ LOG(WARNING) << StringPrintf(
+ "handle:0x%X, logical data link is already congested", handle);
ret_status = NFA_STATUS_CONGESTED;
} else if (LLCP_IsLogicalLinkCongested(
(uint8_t)xx, nfa_p2p_cb.sap_cb[xx].num_pending_ui_pdu,
@@ -510,8 +504,8 @@
nfa_p2p_cb.total_pending_i_pdu)) {
nfa_p2p_cb.sap_cb[xx].flags |= NFA_P2P_SAP_FLAG_LLINK_CONGESTED;
- P2P_TRACE_WARNING1(
- "NFA_P2pSendUI(): handle:0x%X, logical data link is congested", handle);
+ LOG(WARNING) << StringPrintf("handle:0x%X, logical data link is congested",
+ handle);
ret_status = NFA_STATUS_CONGESTED;
} else if ((p_msg = (tNFA_P2P_API_SEND_UI*)GKI_getbuf(
sizeof(tNFA_P2P_API_SEND_UI))) != NULL) {
@@ -572,14 +566,14 @@
tNFA_STATUS ret_status;
tNFA_HANDLE xx;
- P2P_TRACE_API1("NFA_P2pReadUI (): handle:0x%X", handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle:0x%X", handle);
GKI_sched_lock();
xx = handle & NFA_HANDLE_MASK;
if ((xx >= NFA_P2P_NUM_SAP) || (nfa_p2p_cb.sap_cb[xx].p_cback == NULL)) {
- P2P_TRACE_ERROR1("NFA_P2pReadUI (): Handle (0x%X) is not valid", handle);
+ LOG(ERROR) << StringPrintf("Handle (0x%X) is not valid", handle);
ret_status = NFA_STATUS_BAD_HANDLE;
} else {
*p_more = LLCP_ReadLogicalLinkData((uint8_t)xx, max_data_len, p_remote_sap,
@@ -607,14 +601,14 @@
tNFA_STATUS ret_status;
tNFA_HANDLE xx;
- P2P_TRACE_API1("NFA_P2pReadUI (): handle:0x%X", handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle:0x%X", handle);
GKI_sched_lock();
xx = handle & NFA_HANDLE_MASK;
if ((xx >= NFA_P2P_NUM_SAP) || (nfa_p2p_cb.sap_cb[xx].p_cback == NULL)) {
- P2P_TRACE_ERROR1("NFA_P2pFlushUI (): Handle (0x%X) is not valid", handle);
+ LOG(ERROR) << StringPrintf("Handle (0x%X) is not valid", handle);
ret_status = NFA_STATUS_BAD_HANDLE;
*p_length = 0;
} else {
@@ -647,7 +641,8 @@
tNFA_STATUS ret_status = NFA_STATUS_FAILED;
tNFA_HANDLE xx;
- P2P_TRACE_API2("NFA_P2pSendData (): handle:0x%X, length:%d", handle, length);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("handle:0x%X, length:%d", handle, length);
GKI_sched_lock();
@@ -656,21 +651,19 @@
if ((!(handle & NFA_P2P_HANDLE_FLAG_CONN)) || (xx >= LLCP_MAX_DATA_LINK) ||
(nfa_p2p_cb.conn_cb[xx].flags == 0)) {
- P2P_TRACE_ERROR1("NFA_P2pSendData (): Handle(0x%X) is not valid", handle);
+ LOG(ERROR) << StringPrintf("Handle(0x%X) is not valid", handle);
ret_status = NFA_STATUS_BAD_HANDLE;
} else if (nfa_p2p_cb.conn_cb[xx].flags & NFA_P2P_CONN_FLAG_REMOTE_RW_ZERO) {
- P2P_TRACE_ERROR1(
- "NFA_P2pSendData (): handle:0x%X, Remote set RW to 0 (flow off)",
- handle);
+ LOG(ERROR) << StringPrintf("handle:0x%X, Remote set RW to 0 (flow off)",
+ handle);
ret_status = NFA_STATUS_FAILED;
} else if (nfa_p2p_cb.conn_cb[xx].remote_miu < length) {
- P2P_TRACE_ERROR2(
- "NFA_P2pSendData (): handle:0x%X, Data more than remote MIU(%d)",
- handle, nfa_p2p_cb.conn_cb[xx].remote_miu);
+ LOG(ERROR) << StringPrintf("handle:0x%X, Data more than remote MIU(%d)",
+ handle, nfa_p2p_cb.conn_cb[xx].remote_miu);
ret_status = NFA_STATUS_BAD_LENGTH;
} else if (nfa_p2p_cb.conn_cb[xx].flags & NFA_P2P_CONN_FLAG_CONGESTED) {
- P2P_TRACE_WARNING1(
- "NFA_P2pSendData (): handle:0x%X, data link connection is already "
+ LOG(WARNING) << StringPrintf(
+ "handle:0x%X, data link connection is already "
"congested",
handle);
ret_status = NFA_STATUS_CONGESTED;
@@ -681,9 +674,8 @@
nfa_p2p_cb.total_pending_i_pdu)) {
nfa_p2p_cb.conn_cb[xx].flags |= NFA_P2P_CONN_FLAG_CONGESTED;
- P2P_TRACE_WARNING1(
- "NFA_P2pSendData (): handle:0x%X, data link connection is congested",
- handle);
+ LOG(WARNING) << StringPrintf(
+ "handle:0x%X, data link connection is congested", handle);
ret_status = NFA_STATUS_CONGESTED;
} else if ((p_msg = (tNFA_P2P_API_SEND_DATA*)GKI_getbuf(
sizeof(tNFA_P2P_API_SEND_DATA))) != NULL) {
@@ -741,7 +733,7 @@
tNFA_STATUS ret_status;
tNFA_HANDLE xx;
- P2P_TRACE_API1("NFA_P2pReadData (): handle:0x%X", handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle:0x%X", handle);
GKI_sched_lock();
@@ -750,7 +742,7 @@
if ((!(handle & NFA_P2P_HANDLE_FLAG_CONN)) || (xx >= LLCP_MAX_DATA_LINK) ||
(nfa_p2p_cb.conn_cb[xx].flags == 0)) {
- P2P_TRACE_ERROR1("NFA_P2pReadData (): Handle(0x%X) is not valid", handle);
+ LOG(ERROR) << StringPrintf("Handle(0x%X) is not valid", handle);
ret_status = NFA_STATUS_BAD_HANDLE;
} else {
*p_more = LLCP_ReadDataLinkData(nfa_p2p_cb.conn_cb[xx].local_sap,
@@ -779,7 +771,7 @@
tNFA_STATUS ret_status;
tNFA_HANDLE xx;
- P2P_TRACE_API1("NFA_P2pFlushData (): handle:0x%X", handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle:0x%X", handle);
GKI_sched_lock();
@@ -788,7 +780,7 @@
if ((!(handle & NFA_P2P_HANDLE_FLAG_CONN)) || (xx >= LLCP_MAX_DATA_LINK) ||
(nfa_p2p_cb.conn_cb[xx].flags == 0)) {
- P2P_TRACE_ERROR1("NFA_P2pFlushData (): Handle(0x%X) is not valid", handle);
+ LOG(ERROR) << StringPrintf("Handle(0x%X) is not valid", handle);
ret_status = NFA_STATUS_BAD_HANDLE;
} else {
*p_length = LLCP_FlushDataLinkRxData(nfa_p2p_cb.conn_cb[xx].local_sap,
@@ -817,20 +809,20 @@
tNFA_P2P_API_SET_LOCAL_BUSY* p_msg;
tNFA_HANDLE xx;
- P2P_TRACE_API2("NFA_P2pSetLocalBusy (): conn_handle:0x%02X, is_busy:%d",
- conn_handle, is_busy);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("conn_handle:0x%02X, is_busy:%d", conn_handle, is_busy);
xx = conn_handle & NFA_HANDLE_MASK;
if (!(xx & NFA_P2P_HANDLE_FLAG_CONN)) {
- P2P_TRACE_ERROR0("NFA_P2pSetLocalBusy (): Connection Handle is not valid");
+ LOG(ERROR) << StringPrintf("Connection Handle is not valid");
return (NFA_STATUS_BAD_HANDLE);
} else {
xx &= ~NFA_P2P_HANDLE_FLAG_CONN;
}
if ((xx >= LLCP_MAX_DATA_LINK) || (nfa_p2p_cb.conn_cb[xx].flags == 0)) {
- P2P_TRACE_ERROR0("NFA_P2pSetLocalBusy (): Connection Handle is not valid");
+ LOG(ERROR) << StringPrintf("Connection Handle is not valid");
return (NFA_STATUS_BAD_HANDLE);
}
@@ -866,18 +858,17 @@
tNFA_P2P_API_GET_LINK_INFO* p_msg;
tNFA_HANDLE xx;
- P2P_TRACE_API1("NFA_P2pGetLinkInfo (): handle:0x%x", handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle:0x%x", handle);
if (nfa_p2p_cb.llcp_state != NFA_P2P_LLCP_STATE_ACTIVATED) {
- P2P_TRACE_ERROR0("NFA_P2pGetLinkInfo (): LLCP link is not activated");
+ LOG(ERROR) << StringPrintf("LLCP link is not activated");
return (NFA_STATUS_FAILED);
}
xx = handle & NFA_HANDLE_MASK;
if ((xx >= NFA_P2P_NUM_SAP) || (nfa_p2p_cb.sap_cb[xx].p_cback == NULL)) {
- P2P_TRACE_ERROR0(
- "NFA_P2pGetLinkInfo (): Handle is invalid or not registered");
+ LOG(ERROR) << StringPrintf("Handle is invalid or not registered");
return (NFA_STATUS_BAD_HANDLE);
}
@@ -912,19 +903,18 @@
tNFA_P2P_API_GET_REMOTE_SAP* p_msg;
tNFA_HANDLE xx;
- P2P_TRACE_API2("NFA_P2pGetRemoteSap(): handle:0x%x, SN:<%s>", handle,
- p_service_name);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("handle:0x%x, SN:<%s>", handle, p_service_name);
if (nfa_p2p_cb.llcp_state != NFA_P2P_LLCP_STATE_ACTIVATED) {
- P2P_TRACE_ERROR0("NFA_P2pGetRemoteSap(): LLCP link is not activated");
+ LOG(ERROR) << StringPrintf("LLCP link is not activated");
return (NFA_STATUS_FAILED);
}
xx = handle & NFA_HANDLE_MASK;
if ((xx >= NFA_P2P_NUM_SAP) || (nfa_p2p_cb.sap_cb[xx].p_cback == NULL)) {
- P2P_TRACE_ERROR0(
- "NFA_P2pGetRemoteSap (): Handle is invalid or not registered");
+ LOG(ERROR) << StringPrintf("Handle is invalid or not registered");
return (NFA_STATUS_BAD_HANDLE);
}
@@ -980,18 +970,19 @@
uint16_t delay_first_pdu_timeout) {
tNFA_P2P_API_SET_LLCP_CFG* p_msg;
- P2P_TRACE_API4(
- "NFA_P2pSetLLCPConfig ():link_miu:%d, opt:0x%02X, wt:%d, link_timeout:%d",
- link_miu, opt, wt, link_timeout);
- P2P_TRACE_API4(
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("link_miu:%d, opt:0x%02X, wt:%d, link_timeout:%d",
+ link_miu, opt, wt, link_timeout);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
" inact_timeout(init:%d, target:%d), "
"symm_delay:%d, data_link_timeout:%d",
inact_timeout_init, inact_timeout_target, symm_delay, data_link_timeout);
- P2P_TRACE_API1(" delay_first_pdu_timeout:%d",
- delay_first_pdu_timeout);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(" delay_first_pdu_timeout:%d",
+ delay_first_pdu_timeout);
if (nfa_p2p_cb.llcp_state == NFA_P2P_LLCP_STATE_ACTIVATED) {
- P2P_TRACE_ERROR0("NFA_P2pSetLLCPConfig (): LLCP link is activated");
+ LOG(ERROR) << StringPrintf("LLCP link is activated");
return (NFA_STATUS_FAILED);
}
@@ -1047,30 +1038,15 @@
p_inact_timeout_target, p_symm_delay, p_data_link_timeout,
p_delay_first_pdu_timeout);
- P2P_TRACE_API4(
- "NFA_P2pGetLLCPConfig () link_miu:%d, opt:0x%02X, wt:%d, link_timeout:%d",
- *p_link_miu, *p_opt, *p_wt, *p_link_timeout);
- P2P_TRACE_API4(
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("link_miu:%d, opt:0x%02X, wt:%d, link_timeout:%d",
+ *p_link_miu, *p_opt, *p_wt, *p_link_timeout);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
" inact_timeout(init:%d, target:%d), "
"symm_delay:%d, data_link_timeout:%d",
*p_inact_timeout_init, *p_inact_timeout_target, *p_symm_delay,
*p_data_link_timeout);
- P2P_TRACE_API1(" delay_first_pdu_timeout:%d",
- *p_delay_first_pdu_timeout);
-}
-
-/*******************************************************************************
-**
-** Function NFA_P2pSetTraceLevel
-**
-** Description This function sets the trace level for P2P. If called with
-** a value of 0xFF, it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-uint8_t NFA_P2pSetTraceLevel(uint8_t new_level) {
- if (new_level != 0xFF) nfa_p2p_cb.trace_level = new_level;
-
- return (nfa_p2p_cb.trace_level);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(" delay_first_pdu_timeout:%d",
+ *p_delay_first_pdu_timeout);
}
diff --git a/src/nfa/p2p/nfa_p2p_main.c b/src/nfa/p2p/nfa_p2p_main.cc
similarity index 90%
rename from src/nfa/p2p/nfa_p2p_main.c
rename to src/nfa/p2p/nfa_p2p_main.cc
index 2787634..eb965e7 100644
--- a/src/nfa/p2p/nfa_p2p_main.c
+++ b/src/nfa/p2p/nfa_p2p_main.cc
@@ -21,15 +21,18 @@
* This is the main implementation file for the NFA P2P.
*
******************************************************************************/
-#include <string.h>
+#include <string>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "llcp_api.h"
-#include "llcp_defs.h"
#include "nfa_dm_int.h"
-#include "nfa_p2p_api.h"
#include "nfa_p2p_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
-#include "nfc_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*****************************************************************************
** Global Variables
@@ -50,9 +53,8 @@
static void nfa_p2p_update_active_listen(void);
/* debug functions type */
-#if (BT_TRACE_VERBOSE == TRUE)
-static char* nfa_p2p_llcp_state_code(tNFA_P2P_LLCP_STATE state_code);
-#endif
+static std::string nfa_p2p_llcp_state_code(tNFA_P2P_LLCP_STATE state_code);
+static std::string nfa_p2p_evt_code(uint16_t evt_code);
/*****************************************************************************
** Constants
@@ -99,7 +101,7 @@
void nfa_p2p_discovery_cback(tNFA_DM_RF_DISC_EVT event, tNFC_DISCOVER* p_data) {
tNFA_CONN_EVT_DATA evt_data;
- P2P_TRACE_DEBUG1("nfa_p2p_discovery_cback (): event:0x%02X", event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event:0x%02X", event);
switch (event) {
case NFA_DM_RF_DISC_START_EVT:
@@ -150,7 +152,7 @@
break;
default:
- P2P_TRACE_ERROR0("Unexpected event");
+ LOG(ERROR) << StringPrintf("Unexpected event");
break;
}
}
@@ -164,8 +166,9 @@
** Returns void
**
*******************************************************************************/
-static void nfa_p2p_update_active_listen_timeout_cback(TIMER_LIST_ENT* p_tle) {
- NFA_TRACE_ERROR0("nfa_p2p_update_active_listen_timeout_cback()");
+static void nfa_p2p_update_active_listen_timeout_cback(__attribute__((unused))
+ TIMER_LIST_ENT* p_tle) {
+ LOG(ERROR) << __func__;
/* restore active listen mode */
nfa_p2p_update_active_listen();
@@ -185,9 +188,9 @@
tNFA_DM_DISC_TECH_PROTO_MASK p2p_listen_mask = 0;
NFC_HDR* p_msg;
- P2P_TRACE_DEBUG1(
- "nfa_p2p_update_active_listen (): listen_tech_mask_to_restore:0x%x",
- nfa_p2p_cb.listen_tech_mask_to_restore);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("listen_tech_mask_to_restore:0x%x",
+ nfa_p2p_cb.listen_tech_mask_to_restore);
/* if active listen mode was removed temporarily */
if (nfa_p2p_cb.listen_tech_mask_to_restore) {
@@ -243,7 +246,7 @@
((nfa_dm_cb.eDtaMode & 0x0F) == NFA_DTA_DEFAULT_MODE)) {
// Configure listen technologies and protocols and register callback to DTA
- P2P_TRACE_DEBUG1(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"%s: DTA mode:Registering nfa_dm_poll_disc_cback to avoid LLCP in P2P",
__func__);
nfa_p2p_cb.dm_disc_handle =
@@ -278,8 +281,8 @@
tNFA_LLCP_ACTIVATED llcp_activated;
tNFA_LLCP_DEACTIVATED llcp_deactivated;
- P2P_TRACE_DEBUG2("nfa_p2p_llcp_link_cback () event:0x%x, reason:0x%x", event,
- reason);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("event:0x%x, reason:0x%x", event, reason);
if (event == LLCP_LINK_ACTIVATION_COMPLETE_EVT) {
LLCP_GetLinkMIU(&nfa_p2p_cb.local_link_miu, &nfa_p2p_cb.remote_link_miu);
@@ -297,8 +300,9 @@
llcp_activated.remote_wks = LLCP_GetRemoteWKS();
llcp_activated.remote_version = LLCP_GetRemoteVersion();
- nfa_dm_act_conn_cback_notify(NFA_LLCP_ACTIVATED_EVT,
- (tNFA_CONN_EVT_DATA*)&llcp_activated);
+ tNFA_CONN_EVT_DATA nfa_conn_evt_data;
+ nfa_conn_evt_data.llcp_activated = llcp_activated;
+ nfa_dm_act_conn_cback_notify(NFA_LLCP_ACTIVATED_EVT, &nfa_conn_evt_data);
} else if (event == LLCP_LINK_ACTIVATION_FAILED_EVT) {
nfa_p2p_cb.llcp_state = NFA_P2P_LLCP_STATE_IDLE;
@@ -324,7 +328,8 @@
if ((nfa_p2p_cb.listen_tech_mask_to_restore == 0x00) &&
(nfa_p2p_cb.listen_tech_mask &
(NFA_TECHNOLOGY_MASK_A | NFA_TECHNOLOGY_MASK_F))) {
- P2P_TRACE_DEBUG0("Retry without active listen mode");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Retry without active listen mode");
/* retry without active listen mode */
nfa_p2p_update_active_listen();
@@ -343,8 +348,9 @@
}
llcp_deactivated.reason = reason;
- nfa_dm_act_conn_cback_notify(NFA_LLCP_DEACTIVATED_EVT,
- (tNFA_CONN_EVT_DATA*)&llcp_deactivated);
+ tNFA_CONN_EVT_DATA nfa_conn_evt_data;
+ nfa_conn_evt_data.llcp_deactivated = llcp_deactivated;
+ nfa_dm_act_conn_cback_notify(NFA_LLCP_DEACTIVATED_EVT, &nfa_conn_evt_data);
if (reason != LLCP_LINK_RF_LINK_LOSS_ERR) /* if NFC link is still up */
{
@@ -361,7 +367,8 @@
** target needs to trun off RF in case of receiving invalid
** frame from initiator
*/
- P2P_TRACE_DEBUG0("Got LLCP_LINK_TIMEOUT in active mode on target");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Got LLCP_LINK_TIMEOUT in active mode on target");
nfa_dm_rf_deactivate(NFA_DEACTIVATE_TYPE_DISCOVERY);
}
}
@@ -381,7 +388,7 @@
void nfa_p2p_activate_llcp(tNFC_DISCOVER* p_data) {
tLLCP_ACTIVATE_CONFIG config;
- P2P_TRACE_DEBUG0("nfa_p2p_activate_llcp ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if ((p_data->activate.rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_A) ||
(p_data->activate.rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_F)) {
@@ -449,7 +456,7 @@
**
*******************************************************************************/
void nfa_p2p_deactivate_llcp(void) {
- P2P_TRACE_DEBUG0("nfa_p2p_deactivate_llcp ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
LLCP_DeactivateLink();
}
@@ -467,12 +474,11 @@
void nfa_p2p_init(void) {
uint8_t xx;
- P2P_TRACE_DEBUG0("nfa_p2p_init ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* initialize control block */
memset(&nfa_p2p_cb, 0, sizeof(tNFA_P2P_CB));
nfa_p2p_cb.dm_disc_handle = NFA_HANDLE_INVALID;
- nfa_p2p_cb.trace_level = APPL_INITIAL_TRACE_LEVEL;
for (xx = 0; xx < LLCP_MAX_SDP_TRANSAC; xx++) {
nfa_p2p_cb.sdp_cb[xx].local_sap = LLCP_INVALID_SAP;
@@ -493,7 +499,7 @@
**
*******************************************************************************/
static void nfa_p2p_sys_disable(void) {
- P2P_TRACE_DEBUG0("nfa_p2p_sys_disable()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfa_sys_stop_timer(&nfa_p2p_cb.active_listen_restore_timer);
@@ -515,7 +521,7 @@
uint8_t wt, gen_bytes_len = LLCP_MAX_GEN_BYTES;
uint8_t params[LLCP_MAX_GEN_BYTES + 5], *p, length;
- P2P_TRACE_DEBUG0("nfa_p2p_set_config ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
LLCP_GetDiscoveryConfig(&wt, params + 2, &gen_bytes_len);
if (nfa_dm_is_p2p_paused()) {
@@ -578,8 +584,8 @@
void nfa_p2p_enable_listening(tNFA_SYS_ID sys_id, bool update_wks) {
tNFA_DM_DISC_TECH_PROTO_MASK p2p_listen_mask = 0;
- P2P_TRACE_DEBUG2("nfa_p2p_enable_listening () sys_id = %d, update_wks = %d",
- sys_id, update_wks);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("sys_id = %d, update_wks = %d", sys_id, update_wks);
if (sys_id == NFA_ID_P2P)
nfa_p2p_cb.is_p2p_listening = true;
@@ -622,7 +628,7 @@
((nfa_dm_cb.eDtaMode & 0x0F) == NFA_DTA_DEFAULT_MODE)) {
/* Configure listen technologies and protocols and register callback to
* NFA DM discovery */
- P2P_TRACE_DEBUG1(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"%s: DTA mode:Registering nfa_dm_poll_disc_cback to avoid LLCP in "
"P2P",
__func__);
@@ -651,8 +657,8 @@
**
*******************************************************************************/
void nfa_p2p_disable_listening(tNFA_SYS_ID sys_id, bool update_wks) {
- P2P_TRACE_DEBUG2("nfa_p2p_disable_listening () sys_id = %d, update_wks = %d",
- sys_id, update_wks);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("sys_id = %d, update_wks = %d", sys_id, update_wks);
if (sys_id == NFA_ID_P2P)
nfa_p2p_cb.is_p2p_listening = false;
@@ -686,8 +692,8 @@
**
*******************************************************************************/
void nfa_p2p_update_listen_tech(tNFA_TECHNOLOGY_MASK tech_mask) {
- P2P_TRACE_DEBUG1("nfa_p2p_update_listen_tech () tech_mask = 0x%x",
- tech_mask);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("tech_mask = 0x%x", tech_mask);
if (nfa_p2p_cb.listen_tech_mask_to_restore) {
nfa_p2p_cb.listen_tech_mask_to_restore = 0;
@@ -726,30 +732,24 @@
bool delete_msg = true;
uint16_t event;
- tNFA_P2P_MSG* p_msg = (tNFA_P2P_MSG*)p_hdr;
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("LLCP State [%s], Event [%s]",
+ nfa_p2p_llcp_state_code(nfa_p2p_cb.llcp_state).c_str(),
+ nfa_p2p_evt_code(p_hdr->event).c_str());
-#if (BT_TRACE_VERBOSE == TRUE)
- P2P_TRACE_DEBUG2("nfa_p2p_evt_hdlr (): LLCP State [%s], Event [%s]",
- nfa_p2p_llcp_state_code(nfa_p2p_cb.llcp_state),
- nfa_p2p_evt_code(p_msg->hdr.event));
-#else
- P2P_TRACE_DEBUG2("nfa_p2p_evt_hdlr (): State 0x%02x, Event 0x%02x",
- nfa_p2p_cb.llcp_state, p_msg->hdr.event);
-#endif
-
- event = p_msg->hdr.event & 0x00ff;
+ event = p_hdr->event & 0x00ff;
/* execute action functions */
if (event < NFA_P2P_NUM_ACTIONS) {
+ tNFA_P2P_MSG* p_msg = (tNFA_P2P_MSG*)p_hdr;
delete_msg = (*nfa_p2p_action[event])(p_msg);
} else {
- P2P_TRACE_ERROR0("Unhandled event");
+ LOG(ERROR) << StringPrintf("Unhandled event");
}
return delete_msg;
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function nfa_p2p_llcp_state_code
@@ -759,7 +759,7 @@
** Returns string of state
**
*******************************************************************************/
-static char* nfa_p2p_llcp_state_code(tNFA_P2P_LLCP_STATE state_code) {
+static std::string nfa_p2p_llcp_state_code(tNFA_P2P_LLCP_STATE state_code) {
switch (state_code) {
case NFA_P2P_LLCP_STATE_IDLE:
return "Link IDLE";
@@ -781,7 +781,7 @@
** Returns string of event
**
*******************************************************************************/
-char* nfa_p2p_evt_code(uint16_t evt_code) {
+static std::string nfa_p2p_evt_code(uint16_t evt_code) {
switch (evt_code) {
case NFA_P2P_API_REG_SERVER_EVT:
return "API_REG_SERVER";
@@ -815,4 +815,3 @@
return "Unknown event";
}
}
-#endif /* Debug Functions */
diff --git a/src/nfa/rw/nfa_rw_act.c b/src/nfa/rw/nfa_rw_act.cc
similarity index 93%
rename from src/nfa/rw/nfa_rw_act.c
rename to src/nfa/rw/nfa_rw_act.cc
index 393ce02..7f9dcfa 100644
--- a/src/nfa/rw/nfa_rw_act.c
+++ b/src/nfa/rw/nfa_rw_act.cc
@@ -23,12 +23,18 @@
******************************************************************************/
#include <log/log.h>
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "ndef_utils.h"
#include "nfa_dm_int.h"
#include "nfa_mem_co.h"
#include "nfa_rw_int.h"
-#include "nfa_sys_int.h"
-#include "rw_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
#define NFA_RW_OPTION_INVALID 0xFF
@@ -44,7 +50,7 @@
static void nfa_rw_error_cleanup(uint8_t event);
static void nfa_rw_presence_check(tNFA_RW_MSG* p_data);
static void nfa_rw_handle_t2t_evt(tRW_EVENT event, tRW_DATA* p_rw_data);
-static bool nfa_rw_detect_ndef(tNFA_RW_MSG* p_data);
+static bool nfa_rw_detect_ndef(void);
static void nfa_rw_cback(tRW_EVENT event, tRW_DATA* p_rw_data);
/*******************************************************************************
@@ -84,9 +90,10 @@
p_rw_data->data.p_data->len);
nfa_rw_cb.ndef_rd_offset += p_rw_data->data.p_data->len;
} else {
- NFA_TRACE_ERROR0("RW_SetActivatedTagType failed.");
+ LOG(ERROR) << StringPrintf("Exceed ndef_cur_size error");
android_errorWriteLog(0x534e4554, "123583388");
}
+
GKI_freebuf(p_rw_data->data.p_data);
p_rw_data->data.p_data = NULL;
}
@@ -107,14 +114,10 @@
(p_rw_data->data.p_data == NULL))
return;
-#if (BT_TRACE_VERBOSE == TRUE)
- NFA_TRACE_DEBUG2("nfa_rw_send_data_to_upper: Len [0x%X] Status [%s]",
- p_rw_data->data.p_data->len,
- NFC_GetStatusName(p_rw_data->data.status));
-#else
- NFA_TRACE_DEBUG2("nfa_rw_send_data_to_upper: Len [0x%X] Status [0x%X]",
- p_rw_data->data.p_data->len, p_rw_data->data.status);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_rw_send_data_to_upper: Len [0x%X] Status [%s]",
+ p_rw_data->data.p_data->len,
+ NFC_GetStatusName(p_rw_data->data.status).c_str());
/* Notify conn cback of NFA_DATA_EVT */
conn_evt_data.data.status = p_rw_data->data.status;
@@ -162,7 +165,8 @@
if (nfa_rw_cb.flags & NFA_RW_FL_NOT_EXCL_RF_MODE) {
if (presence_check_start_delay) {
- NFA_TRACE_DEBUG0("Starting presence check timer...");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Starting presence check timer...");
nfa_sys_start_timer(&nfa_rw_cb.tle, NFA_RW_PRESENCE_CHECK_TICK_EVT,
presence_check_start_delay);
} else {
@@ -183,7 +187,8 @@
*******************************************************************************/
void nfa_rw_stop_presence_check_timer(void) {
nfa_sys_stop_timer(&nfa_rw_cb.tle);
- NFA_TRACE_DEBUG0("Stopped presence check timer (if started)");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Stopped presence check timer (if started)");
}
/*******************************************************************************
@@ -195,10 +200,10 @@
** Returns Nothing
**
*******************************************************************************/
-static void nfa_rw_handle_ndef_detect(tRW_EVENT event, tRW_DATA* p_rw_data) {
+static void nfa_rw_handle_ndef_detect(tRW_DATA* p_rw_data) {
tNFA_CONN_EVT_DATA conn_evt_data;
- NFA_TRACE_DEBUG3(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"NDEF Detection completed: cur_size=%i, max_size=%i, flags=0x%x",
p_rw_data->ndef.cur_size, p_rw_data->ndef.max_size,
p_rw_data->ndef.flags);
@@ -306,7 +311,7 @@
** Returns Nothing
**
*******************************************************************************/
-static void nfa_rw_handle_tlv_detect(tRW_EVENT event, tRW_DATA* p_rw_data) {
+static void nfa_rw_handle_tlv_detect(tRW_DATA* p_rw_data) {
tNFA_CONN_EVT_DATA conn_evt_data;
/* Set TLV detection state */
@@ -326,8 +331,8 @@
/* Check if TLV detection succeeded */
if (p_rw_data->tlv.status == NFC_STATUS_OK) {
- NFA_TRACE_DEBUG1("TLV Detection succeeded: num_bytes=%i",
- p_rw_data->tlv.num_bytes);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "TLV Detection succeeded: num_bytes=%i", p_rw_data->tlv.num_bytes);
/* Store tlv properties */
conn_evt_data.tlv_detect.status = NFA_STATUS_OK;
@@ -385,12 +390,12 @@
(nfa_rw_cb.activated_tech_mode == NFC_DISCOVERY_TYPE_POLL_A) &&
(nfa_rw_cb.protocol == NFC_PROTOCOL_T2T) &&
(nfa_rw_cb.pa_sel_res == NFC_SEL_RES_NFC_FORUM_T2T)) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_rw_handle_sleep_wakeup_rsp; Attempt to wake up Type 2 tag from "
"HALT State is complete");
if (status == NFC_STATUS_OK) {
/* Type 2 Tag is wakeup from HALT state */
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_rw_handle_sleep_wakeup_rsp; Handle the NACK rsp received now");
/* Initialize control block */
activate_params.protocol = nfa_rw_cb.protocol;
@@ -401,7 +406,7 @@
if ((RW_SetActivatedTagType(&activate_params, nfa_rw_cback)) !=
NFC_STATUS_OK) {
/* Log error (stay in NFA_RW_ST_ACTIVATED state until deactivation) */
- NFA_TRACE_ERROR0("RW_SetActivatedTagType failed.");
+ LOG(ERROR) << StringPrintf("RW_SetActivatedTagType failed.");
if (nfa_rw_cb.halt_event == RW_T2T_READ_CPLT_EVT) {
if (nfa_rw_cb.rw_data.data.p_data)
GKI_freebuf(nfa_rw_cb.rw_data.data.p_data);
@@ -433,11 +438,12 @@
* mode) then deactivate the link if sleep wakeup failed */
if ((nfa_rw_cb.flags & NFA_RW_FL_NOT_EXCL_RF_MODE) &&
(status != NFC_STATUS_OK)) {
- NFA_TRACE_DEBUG0("Sleep wakeup failed. Deactivating...");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Sleep wakeup failed. Deactivating...");
nfa_dm_rf_deactivate(NFA_DEACTIVATE_TYPE_DISCOVERY);
}
} else {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfa_rw_handle_sleep_wakeup_rsp; Legacy presence check performed");
/* Legacy presence check performed */
nfa_rw_handle_presence_check_rsp(status);
@@ -477,15 +483,17 @@
* app of result */
if (nfa_rw_cb.p_pending_msg->op_req.op == NFA_RW_OP_PRESENCE_CHECK) {
/* Notify app of presence check status */
+ tNFA_CONN_EVT_DATA nfa_conn_evt_data;
+ nfa_conn_evt_data.status = status;
nfa_dm_act_conn_cback_notify(NFA_PRESENCE_CHECK_EVT,
- (tNFA_CONN_EVT_DATA*)&status);
+ &nfa_conn_evt_data);
GKI_freebuf(nfa_rw_cb.p_pending_msg);
nfa_rw_cb.p_pending_msg = NULL;
}
/* For all other APIs called during auto-presence check, perform the
command now (if tag is still present) */
else if (status == NFC_STATUS_OK) {
- NFA_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"Performing deferred operation after presence check...");
p_pending_msg = (NFC_HDR*)nfa_rw_cb.p_pending_msg;
nfa_rw_cb.p_pending_msg = NULL;
@@ -500,21 +508,24 @@
/* Auto-presence check failed. Deactivate */
if (status != NFC_STATUS_OK) {
- NFA_TRACE_DEBUG0("Auto presence check failed. Deactivating...");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Auto presence check failed. Deactivating...");
nfa_dm_rf_deactivate(NFA_DEACTIVATE_TYPE_DISCOVERY);
}
}
/* Handle presence check due to NFA_RwPresenceCheck API call */
else {
/* Notify app of presence check status */
- nfa_dm_act_conn_cback_notify(NFA_PRESENCE_CHECK_EVT,
- (tNFA_CONN_EVT_DATA*)&status);
+ tNFA_CONN_EVT_DATA nfa_conn_evt_data;
+ nfa_conn_evt_data.status = status;
+ nfa_dm_act_conn_cback_notify(NFA_PRESENCE_CHECK_EVT, &nfa_conn_evt_data);
/* If in normal mode (not-exclusive RF mode) then deactivate the link if
* presence check failed */
if ((nfa_rw_cb.flags & NFA_RW_FL_NOT_EXCL_RF_MODE) &&
- (status != NFC_STATUS_OK)) {
- NFA_TRACE_DEBUG0("Presence check failed. Deactivating...");
+ (nfa_conn_evt_data.status != NFC_STATUS_OK)) {
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Presence check failed. Deactivating...");
nfa_dm_rf_deactivate(NFA_DEACTIVATE_TYPE_DISCOVERY);
}
}
@@ -585,7 +596,7 @@
break;
case RW_T1T_TLV_DETECT_EVT:
- nfa_rw_handle_tlv_detect(event, p_rw_data);
+ nfa_rw_handle_tlv_detect(p_rw_data);
break;
case RW_T1T_NDEF_DETECT_EVT:
@@ -601,7 +612,7 @@
if (RW_T1tFormatNDef() == NFC_STATUS_OK) break;
}
- nfa_rw_handle_ndef_detect(event, p_rw_data);
+ nfa_rw_handle_ndef_detect(p_rw_data);
break;
@@ -712,8 +723,8 @@
conn_evt_data.status = p_rw_data->status;
if (p_rw_data->status == NFC_STATUS_REJECTED) {
- NFA_TRACE_DEBUG0(
- "nfa_rw_handle_t2t_evt(); Waking the tag first before handling the "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "; Waking the tag first before handling the "
"response!");
/* Received NACK. Let DM wakeup the tag first (by putting tag to sleep and
* then waking it up) */
@@ -753,18 +764,18 @@
(nfa_rw_cb.skip_dyn_locks == true)) {
/* NDEF Detection is complete */
nfa_rw_cb.skip_dyn_locks = false;
- nfa_rw_handle_ndef_detect(event, p_rw_data);
+ nfa_rw_handle_ndef_detect(p_rw_data);
} else {
/* Try to detect NDEF again, this time without reading dynamic lock
* bytes */
nfa_rw_cb.skip_dyn_locks = true;
- nfa_rw_detect_ndef(NULL);
+ nfa_rw_detect_ndef();
}
break;
case RW_T2T_TLV_DETECT_EVT: /* Lock control/Mem/Prop tlv detection complete
*/
- nfa_rw_handle_tlv_detect(event, p_rw_data);
+ nfa_rw_handle_tlv_detect(p_rw_data);
break;
case RW_T2T_NDEF_READ_EVT: /* NDEF read completed */
@@ -858,7 +869,7 @@
switch (event) {
case RW_T3T_NDEF_DETECT_EVT: /* NDEF detection complete */
- nfa_rw_handle_ndef_detect(event, p_rw_data);
+ nfa_rw_handle_ndef_detect(p_rw_data);
break;
case RW_T3T_UPDATE_CPLT_EVT: /* Write completed */
@@ -966,8 +977,8 @@
break;
default:
- NFA_TRACE_DEBUG1("nfa_rw_handle_t3t_evt(); Unhandled RW event 0x%X",
- event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("; Unhandled RW event 0x%X", event);
break;
}
}
@@ -986,7 +997,7 @@
switch (event) {
case RW_T4T_NDEF_DETECT_EVT: /* Result of NDEF detection procedure */
- nfa_rw_handle_ndef_detect(event, p_rw_data);
+ nfa_rw_handle_ndef_detect(p_rw_data);
break;
case RW_T4T_NDEF_FORMAT_CPLT_EVT:
@@ -1099,8 +1110,8 @@
break;
default:
- NFA_TRACE_DEBUG1("nfa_rw_handle_t4t_evt(); Unhandled RW event 0x%X",
- event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("; Unhandled RW event 0x%X", event);
break;
}
}
@@ -1120,7 +1131,7 @@
switch (event) {
case RW_I93_NDEF_DETECT_EVT: /* Result of NDEF detection procedure */
- nfa_rw_handle_ndef_detect(event, p_rw_data);
+ nfa_rw_handle_ndef_detect(p_rw_data);
break;
case RW_I93_NDEF_READ_EVT: /* Segment of data received from type 4 tag */
@@ -1373,8 +1384,8 @@
break;
default:
- NFA_TRACE_DEBUG1("nfa_rw_handle_i93_evt(); Unhandled RW event 0x%X",
- event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("; Unhandled RW event 0x%X", event);
break;
}
}
@@ -1389,7 +1400,8 @@
**
*******************************************************************************/
static void nfa_rw_cback(tRW_EVENT event, tRW_DATA* p_rw_data) {
- NFA_TRACE_DEBUG1("nfa_rw_cback: event=0x%02x", event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_rw_cback: event=0x%02x", event);
/* Call appropriate event handler for tag type */
if (event < RW_T1T_MAX_EVT) {
@@ -1408,7 +1420,7 @@
/* Handle ISO 15693 tag events */
nfa_rw_handle_i93_evt(event, p_rw_data);
} else {
- NFA_TRACE_ERROR1("nfa_rw_cback: unhandled event=0x%02x", event);
+ LOG(ERROR) << StringPrintf("nfa_rw_cback: unhandled event=0x%02x", event);
}
}
@@ -1463,7 +1475,8 @@
/* Handle zero length NDEF message */
if (nfa_rw_cb.ndef_cur_size == 0) {
- NFA_TRACE_DEBUG0("NDEF message is zero-length");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NDEF message is zero-length");
/* Send zero-lengh NDEF message to ndef callback */
nfa_dm_ndef_handle_message(NFA_STATUS_OK, NULL, 0);
@@ -1480,8 +1493,9 @@
nfa_rw_free_ndef_rx_buf();
nfa_rw_cb.p_ndef_buf = (uint8_t*)nfa_mem_co_alloc(nfa_rw_cb.ndef_cur_size);
if (nfa_rw_cb.p_ndef_buf == NULL) {
- NFA_TRACE_ERROR1("Unable to allocate a buffer for reading NDEF (size=%i)",
- nfa_rw_cb.ndef_cur_size);
+ LOG(ERROR) << StringPrintf(
+ "Unable to allocate a buffer for reading NDEF (size=%i)",
+ nfa_rw_cb.ndef_cur_size);
/* Command complete - perform cleanup, notify app */
nfa_rw_command_complete();
@@ -1524,9 +1538,9 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-static bool nfa_rw_detect_ndef(tNFA_RW_MSG* p_data) {
+static bool nfa_rw_detect_ndef() {
tNFA_CONN_EVT_DATA conn_evt_data;
- NFA_TRACE_DEBUG0("nfa_rw_detect_ndef");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
conn_evt_data.ndef_detect.status = nfa_rw_start_ndef_detection();
if (conn_evt_data.ndef_detect.status != NFC_STATUS_OK) {
@@ -1557,13 +1571,13 @@
if (nfa_rw_cb.flags & NFA_RW_FL_TAG_IS_READONLY) {
/* error: ndef tag is read-only */
status = NFC_STATUS_FAILED;
- NFA_TRACE_ERROR0("Unable to write NDEF. Tag is read-only")
+ LOG(ERROR) << StringPrintf("Unable to write NDEF. Tag is read-only");
} else if (nfa_rw_cb.ndef_max_size < nfa_rw_cb.ndef_wr_len) {
/* error: ndef tag size is too small */
status = NFC_STATUS_BUFFER_FULL;
- NFA_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"Unable to write NDEF. Tag maxsize=%i, request write size=%i",
- nfa_rw_cb.ndef_max_size, nfa_rw_cb.ndef_wr_len)
+ nfa_rw_cb.ndef_max_size, nfa_rw_cb.ndef_wr_len);
} else {
if (NFC_PROTOCOL_T1T == protocol) {
/* Type1Tag - NFC-A */
@@ -1601,11 +1615,11 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-static bool nfa_rw_read_ndef(tNFA_RW_MSG* p_data) {
+static bool nfa_rw_read_ndef() {
tNFA_STATUS status = NFA_STATUS_OK;
tNFA_CONN_EVT_DATA conn_evt_data;
- NFA_TRACE_DEBUG0("nfa_rw_read_ndef");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Check if ndef detection has been performed yet */
if (nfa_rw_cb.ndef_st == NFA_RW_NDEF_ST_UNKNOWN) {
@@ -1643,14 +1657,14 @@
tNDEF_STATUS ndef_status;
tNFA_STATUS write_status = NFA_STATUS_OK;
tNFA_CONN_EVT_DATA conn_evt_data;
- NFA_TRACE_DEBUG0("nfa_rw_write_ndef");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Validate NDEF message */
ndef_status = NDEF_MsgValidate(p_data->op_req.params.write_ndef.p_data,
p_data->op_req.params.write_ndef.len, false);
if (ndef_status != NDEF_OK) {
- NFA_TRACE_ERROR1("Invalid NDEF message. NDEF_MsgValidate returned %i",
- ndef_status);
+ LOG(ERROR) << StringPrintf(
+ "Invalid NDEF message. NDEF_MsgValidate returned %i", ndef_status);
/* Command complete - perform cleanup, notify app */
nfa_rw_command_complete();
@@ -1736,48 +1750,14 @@
option = RW_T4T_CHK_EMPTY_I_BLOCK;
break;
- case NFA_RW_PRES_CHK_RESET:
- /* option is initialized to NFA_RW_OPTION_INVALID, which will Deactivate
- * to Sleep; Re-activate */
- break;
-
- case NFA_RW_PRES_CHK_RB_CH0:
- option = RW_T4T_CHK_READ_BINARY_CH0;
- break;
-
- case NFA_RW_PRES_CHK_RB_CH3:
- option = RW_T4T_CHK_READ_BINARY_CH3;
- break;
-
case NFA_RW_PRES_CHK_ISO_DEP_NAK:
if (NFC_GetNCIVersion() == NCI_VERSION_2_0) {
option = RW_T4T_CHK_ISO_DEP_NAK_PRES_CHK;
}
break;
default:
- if (nfa_rw_cb.flags & NFA_RW_FL_NDEF_OK) {
- /* read binary on channel 0 */
- option = RW_T4T_CHK_READ_BINARY_CH0;
- } else {
- /* NDEF DETECT failed.*/
- if (nfa_dm_is_raw_frame_session()) {
- /* NFA_SendRawFrame() is called */
- if (p_nfa_dm_cfg->presence_check_option &
- NFA_DM_PCO_EMPTY_I_BLOCK) {
- /* empty I block */
- option = RW_T4T_CHK_EMPTY_I_BLOCK;
- } else {
- /* read binary on channel 3 */
- option = RW_T4T_CHK_READ_BINARY_CH3;
- }
- } else if (!(p_nfa_dm_cfg->presence_check_option &
- NFA_DM_PCO_ISO_SLEEP_WAKE) &&
- (nfa_rw_cb.intf_type == NFC_INTERFACE_ISO_DEP)) {
- /* the option indicates to use empty I block && ISODEP interface is
- * activated */
- option = RW_T4T_CHK_EMPTY_I_BLOCK;
- }
- }
+ /* empty I block */
+ option = RW_T4T_CHK_EMPTY_I_BLOCK;
}
if (option != NFA_RW_OPTION_INVALID) {
@@ -1825,11 +1805,12 @@
** Returns TRUE (caller frees message buffer)
**
*******************************************************************************/
-bool nfa_rw_presence_check_tick(tNFA_RW_MSG* p_data) {
+bool nfa_rw_presence_check_tick(__attribute__((unused)) tNFA_RW_MSG* p_data) {
/* Store the current operation */
nfa_rw_cb.cur_op = NFA_RW_OP_PRESENCE_CHECK;
nfa_rw_cb.flags |= NFA_RW_FL_AUTO_PRESENCE_CHECK_BUSY;
- NFA_TRACE_DEBUG0("Auto-presence check starting...");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Auto-presence check starting...");
/* Perform presence check */
nfa_rw_presence_check(NULL);
@@ -1846,7 +1827,8 @@
** Returns TRUE (caller frees message buffer)
**
*******************************************************************************/
-bool nfa_rw_presence_check_timeout(tNFA_RW_MSG* p_data) {
+bool nfa_rw_presence_check_timeout(__attribute__((unused))
+ tNFA_RW_MSG* p_data) {
nfa_rw_handle_presence_check_rsp(NFC_STATUS_FAILED);
return true;
}
@@ -1860,7 +1842,7 @@
** Returns Nothing
**
*******************************************************************************/
-static void nfa_rw_format_tag(tNFA_RW_MSG* p_data) {
+static void nfa_rw_format_tag() {
tNFC_PROTOCOL protocol = nfa_rw_cb.protocol;
tNFC_STATUS status = NFC_STATUS_FAILED;
@@ -1890,8 +1872,8 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-static bool nfa_rw_detect_tlv(tNFA_RW_MSG* p_data, uint8_t tlv) {
- NFA_TRACE_DEBUG0("nfa_rw_detect_tlv");
+static bool nfa_rw_detect_tlv(uint8_t tlv) {
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
switch (nfa_rw_cb.protocol) {
case NFC_PROTOCOL_T1T:
@@ -1926,7 +1908,7 @@
tNFC_PROTOCOL protocol = nfa_rw_cb.protocol;
tNFC_STATUS status = NFC_STATUS_FAILED;
- NFA_TRACE_DEBUG0("nfa_rw_config_tag_ro ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (NFC_PROTOCOL_T1T == protocol) {
/* Type1Tag - NFC-A */
@@ -1971,7 +1953,7 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-static bool nfa_rw_t1t_rid(tNFA_RW_MSG* p_data) {
+static bool nfa_rw_t1t_rid() {
if (RW_T1tRid() != NFC_STATUS_OK) nfa_rw_error_cleanup(NFA_READ_CPLT_EVT);
return true;
@@ -1986,7 +1968,7 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-static bool nfa_rw_t1t_rall(tNFA_RW_MSG* p_data) {
+static bool nfa_rw_t1t_rall() {
if (RW_T1tReadAll() != NFC_STATUS_OK) nfa_rw_error_cleanup(NFA_READ_CPLT_EVT);
return true;
@@ -2229,7 +2211,7 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-static bool nfa_rw_t3t_get_system_codes(tNFA_RW_MSG* p_data) {
+static bool nfa_rw_t3t_get_system_codes() {
tNFC_STATUS status;
tNFA_TAG_PARAMS tag_params;
@@ -2386,12 +2368,12 @@
** Returns nothing
**
*******************************************************************************/
-static void nfa_rw_raw_mode_data_cback(uint8_t conn_id, tNFC_CONN_EVT event,
- tNFC_CONN* p_data) {
+static void nfa_rw_raw_mode_data_cback(__attribute__((unused)) uint8_t conn_id,
+ tNFC_CONN_EVT event, tNFC_CONN* p_data) {
NFC_HDR* p_msg;
tNFA_CONN_EVT_DATA evt_data;
- NFA_TRACE_DEBUG1("nfa_rw_raw_mode_data_cback(): event = 0x%X", event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event = 0x%X", event);
if ((event == NFC_DATA_CEVT) &&
((p_data->data.status == NFC_STATUS_OK) ||
@@ -2407,9 +2389,8 @@
GKI_freebuf(p_msg);
} else {
- NFA_TRACE_ERROR0(
- "nfa_rw_raw_mode_data_cback (): received NFC_DATA_CEVT with NULL "
- "data pointer");
+ LOG(ERROR) << StringPrintf(
+ "received NFC_DATA_CEVT with NULL data pointer");
}
} else if (event == NFC_DEACTIVATE_CEVT) {
NFC_SetStaticRfCback(NULL);
@@ -2429,7 +2410,6 @@
tNFC_ACTIVATE_DEVT* p_activate_params =
p_data->activate_ntf.p_activate_params;
tNFA_TAG_PARAMS tag_params;
- tNFA_RW_OPERATION msg;
bool activate_notify = true;
uint8_t* p;
@@ -2442,12 +2422,12 @@
GKI_freebuf(nfa_dm_cb.p_activate_ntf);
nfa_dm_cb.p_activate_ntf = NULL;
}
- NFA_TRACE_DEBUG0(
- "nfa_rw_activate_ntf () - Type 2 tag wake up from HALT State");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("- Type 2 tag wake up from HALT State");
return true;
}
- NFA_TRACE_DEBUG0("nfa_rw_activate_ntf");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Initialize control block */
nfa_rw_cb.protocol = p_activate_params->protocol;
@@ -2515,7 +2495,7 @@
if ((RW_SetActivatedTagType(p_activate_params, nfa_rw_cback)) !=
NFC_STATUS_OK) {
/* Log error (stay in NFA_RW_ST_ACTIVATED state until deactivation) */
- NFA_TRACE_ERROR0("RW_SetActivatedTagType failed.");
+ LOG(ERROR) << StringPrintf("RW_SetActivatedTagType failed.");
return true;
}
@@ -2532,8 +2512,9 @@
memcpy(tag_params.t1t.hr,
p_activate_params->intf_param.intf_param.frame.param,
NFA_T1T_HR_LEN);
- msg.op = NFA_RW_OP_T1T_RID;
- nfa_rw_handle_op_req((tNFA_RW_MSG*)&msg);
+ tNFA_RW_MSG msg;
+ msg.op_req.op = NFA_RW_OP_T1T_RID;
+ nfa_rw_handle_op_req(&msg);
/* Delay notifying upper layer of NFA_ACTIVATED_EVT
until HR0/HR1 is received */
activate_notify = false;
@@ -2553,8 +2534,9 @@
activate_notify = false;
/* Issue command to get Felica system codes */
- msg.op = NFA_RW_OP_T3T_GET_SYSTEM_CODES;
- nfa_rw_handle_op_req((tNFA_RW_MSG*)&msg);
+ tNFA_RW_MSG msg;
+ msg.op_req.op = NFA_RW_OP_T3T_GET_SYSTEM_CODES;
+ nfa_rw_handle_op_req(&msg);
}
} else if (NFA_PROTOCOL_T5T == nfa_rw_cb.protocol) {
/* Delay notifying upper layer of NFA_ACTIVATED_EVT to retrieve additional
@@ -2642,7 +2624,7 @@
** Returns TRUE (message buffer to be freed by caller)
**
*******************************************************************************/
-bool nfa_rw_deactivate_ntf(tNFA_RW_MSG* p_data) {
+bool nfa_rw_deactivate_ntf(__attribute__((unused)) tNFA_RW_MSG* p_data) {
/* Clear the activated flag */
nfa_rw_cb.flags &= ~NFA_RW_FL_ACTIVATED;
@@ -2690,7 +2672,7 @@
/* Check if activated */
if (!(nfa_rw_cb.flags & NFA_RW_FL_ACTIVATED)) {
- NFA_TRACE_ERROR0("nfa_rw_handle_op_req: not activated");
+ LOG(ERROR) << StringPrintf("nfa_rw_handle_op_req: not activated");
return true;
}
/* Check if currently busy with another API call */
@@ -2701,7 +2683,7 @@
else if (nfa_rw_cb.flags & NFA_RW_FL_AUTO_PRESENCE_CHECK_BUSY) {
/* Cache the command (will be handled once auto-presence check is completed)
*/
- NFA_TRACE_DEBUG1(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"Deferring operation %i until after auto-presence check is completed",
p_data->op_req.op);
nfa_rw_cb.p_pending_msg = p_data;
@@ -2709,7 +2691,8 @@
return false;
}
- NFA_TRACE_DEBUG1("nfa_rw_handle_op_req: op=0x%02x", p_data->op_req.op);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_rw_handle_op_req: op=0x%02x", p_data->op_req.op);
nfa_rw_cb.flags |= NFA_RW_FL_API_BUSY;
@@ -2723,11 +2706,11 @@
switch (p_data->op_req.op) {
case NFA_RW_OP_DETECT_NDEF:
nfa_rw_cb.skip_dyn_locks = false;
- nfa_rw_detect_ndef(p_data);
+ nfa_rw_detect_ndef();
break;
case NFA_RW_OP_READ_NDEF:
- nfa_rw_read_ndef(p_data);
+ nfa_rw_read_ndef();
break;
case NFA_RW_OP_WRITE_NDEF:
@@ -2752,15 +2735,15 @@
break;
case NFA_RW_OP_FORMAT_TAG:
- nfa_rw_format_tag(p_data);
+ nfa_rw_format_tag();
break;
case NFA_RW_OP_DETECT_LOCK_TLV:
- nfa_rw_detect_tlv(p_data, TAG_LOCK_CTRL_TLV);
+ nfa_rw_detect_tlv(TAG_LOCK_CTRL_TLV);
break;
case NFA_RW_OP_DETECT_MEM_TLV:
- nfa_rw_detect_tlv(p_data, TAG_MEM_CTRL_TLV);
+ nfa_rw_detect_tlv(TAG_MEM_CTRL_TLV);
break;
case NFA_RW_OP_SET_TAG_RO:
@@ -2769,11 +2752,11 @@
break;
case NFA_RW_OP_T1T_RID:
- nfa_rw_t1t_rid(p_data);
+ nfa_rw_t1t_rid();
break;
case NFA_RW_OP_T1T_RALL:
- nfa_rw_t1t_rall(p_data);
+ nfa_rw_t1t_rall();
break;
case NFA_RW_OP_T1T_READ:
@@ -2819,7 +2802,7 @@
break;
case NFA_RW_OP_T3T_GET_SYSTEM_CODES:
- nfa_rw_t3t_get_system_codes(p_data);
+ nfa_rw_t3t_get_system_codes();
break;
/* ISO 15693 tag commands */
@@ -2842,8 +2825,8 @@
break;
default:
- NFA_TRACE_ERROR1("nfa_rw_handle_api: unhandled operation: %i",
- p_data->op_req.op);
+ LOG(ERROR) << StringPrintf("nfa_rw_handle_api: unhandled operation: %i",
+ p_data->op_req.op);
break;
}
@@ -2865,7 +2848,7 @@
tNFA_CONN_EVT_DATA conn_evt_data;
uint8_t event;
- NFA_TRACE_ERROR0("nfa_rw_op_req_while_busy: unable to handle API");
+ LOG(ERROR) << StringPrintf("nfa_rw_op_req_while_busy: unable to handle API");
/* Return appropriate event for requested API, with status=BUSY */
conn_evt_data.status = NFA_STATUS_BUSY;
diff --git a/src/nfa/rw/nfa_rw_api.c b/src/nfa/rw/nfa_rw_api.cc
similarity index 94%
rename from src/nfa/rw/nfa_rw_api.c
rename to src/nfa/rw/nfa_rw_api.cc
index c21414d..a55962a 100644
--- a/src/nfa/rw/nfa_rw_api.c
+++ b/src/nfa/rw/nfa_rw_api.cc
@@ -22,10 +22,16 @@
*
******************************************************************************/
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_api.h"
#include "nfa_rw_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*****************************************************************************
** Constants
@@ -61,7 +67,7 @@
tNFA_STATUS NFA_RwDetectNDef(void) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API0("NFA_RwDetectNDef");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (tNFA_RW_OPERATION*)GKI_getbuf((uint16_t)(sizeof(tNFA_RW_OPERATION)));
if (p_msg != NULL) {
@@ -106,7 +112,7 @@
tNFA_STATUS NFA_RwReadNDef(void) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API0("NFA_RwReadNDef");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (tNFA_RW_OPERATION*)GKI_getbuf((uint16_t)(sizeof(tNFA_RW_OPERATION)));
if (p_msg != NULL) {
@@ -145,7 +151,7 @@
tNFA_STATUS NFA_RwWriteNDef(uint8_t* p_data, uint32_t len) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API2("NFA_RwWriteNDef (): ndef p_data=%08x, len: %i", p_data, len);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("ndef len: %i", len);
/* Validate parameters */
if (p_data == NULL) return (NFA_STATUS_INVALID_PARAM);
@@ -183,7 +189,7 @@
tNFA_STATUS NFA_RwPresenceCheck(tNFA_RW_PRES_CHK_OPTION option) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API0("NFA_RwPresenceCheck");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (tNFA_RW_OPERATION*)GKI_getbuf((uint16_t)(sizeof(tNFA_RW_OPERATION)));
if (p_msg != NULL) {
@@ -216,7 +222,7 @@
tNFA_STATUS NFA_RwFormatTag(void) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API0("NFA_RwFormatTag");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (tNFA_RW_OPERATION*)GKI_getbuf((uint16_t)(sizeof(tNFA_RW_OPERATION)));
if (p_msg != NULL) {
@@ -255,8 +261,8 @@
if ((protocol != NFC_PROTOCOL_T1T) && (protocol != NFC_PROTOCOL_T2T) &&
(protocol != NFC_PROTOCOL_T5T) && (protocol != NFC_PROTOCOL_ISO_DEP) &&
(protocol != NFC_PROTOCOL_T3T)) {
- NFA_TRACE_API1(
- "NFA_RwSetTagReadOnly (): Cannot Configure as read only for Protocol: "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Cannot Configure as read only for Protocol: "
"%d",
protocol);
return (NFA_STATUS_REJECTED);
@@ -264,13 +270,14 @@
if ((!b_hard_lock && (protocol == NFC_PROTOCOL_T5T)) ||
(b_hard_lock && (protocol == NFC_PROTOCOL_ISO_DEP))) {
- NFA_TRACE_API2("NFA_RwSetTagReadOnly (): Cannot %s for Protocol: %d",
- b_hard_lock ? "Hard lock" : "Soft lock", protocol);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Cannot %s for Protocol: %d",
+ b_hard_lock ? "Hard lock" : "Soft lock", protocol);
return (NFA_STATUS_REJECTED);
}
- NFA_TRACE_API1("NFA_RwSetTagReadOnly (): %s",
- b_hard_lock ? "Hard lock" : "Soft lock");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s", b_hard_lock ? "Hard lock" : "Soft lock");
p_msg = (tNFA_RW_OPERATION*)GKI_getbuf((uint16_t)(sizeof(tNFA_RW_OPERATION)));
if (p_msg != NULL) {
@@ -328,7 +335,7 @@
tNFA_STATUS NFA_RwLocateTlv(uint8_t tlv_type) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API0("NFA_RwLocateTlv");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_msg = (tNFA_RW_OPERATION*)GKI_getbuf((uint16_t)(sizeof(tNFA_RW_OPERATION)));
if (p_msg != NULL) {
@@ -601,7 +608,8 @@
tNFA_STATUS NFA_RwT2tRead(uint8_t block_number) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API1("NFA_RwT2tRead (): Block to read: %d", block_number);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Block to read: %d", block_number);
p_msg = (tNFA_RW_OPERATION*)GKI_getbuf((uint16_t)(sizeof(tNFA_RW_OPERATION)));
if (p_msg != NULL) {
@@ -634,7 +642,8 @@
tNFA_STATUS NFA_RwT2tWrite(uint8_t block_number, uint8_t* p_data) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API1("NFA_RwT2tWrite (): Block to write: %d", block_number);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Block to write: %d", block_number);
p_msg = (tNFA_RW_OPERATION*)GKI_getbuf((uint16_t)(sizeof(tNFA_RW_OPERATION)));
if (p_msg != NULL) {
@@ -670,7 +679,8 @@
tNFA_STATUS NFA_RwT2tSectorSelect(uint8_t sector_number) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API1("NFA_RwT2tRead (): sector to select: %d", sector_number);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("sector to select: %d", sector_number);
p_msg = (tNFA_RW_OPERATION*)GKI_getbuf((uint16_t)(sizeof(tNFA_RW_OPERATION)));
if (p_msg != NULL) {
@@ -706,7 +716,8 @@
tNFA_RW_OPERATION* p_msg;
uint8_t* p_block_desc;
- NFA_TRACE_API1("NFA_RwT3tRead (): num_blocks to read: %i", num_blocks);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("num_blocks to read: %i", num_blocks);
/* Validate parameters */
if ((num_blocks == 0) || (t3t_blocks == NULL))
@@ -757,7 +768,8 @@
tNFA_RW_OPERATION* p_msg;
uint8_t *p_block_desc, *p_data_area;
- NFA_TRACE_API1("NFA_RwT3tWrite (): num_blocks to write: %i", num_blocks);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("num_blocks to write: %i", num_blocks);
/* Validate parameters */
if ((num_blocks == 0) || (t3t_blocks == NULL) | (p_data == NULL))
@@ -814,8 +826,8 @@
tNFA_STATUS NFA_RwI93Inventory(bool afi_present, uint8_t afi, uint8_t* p_uid) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API2("NFA_RwI93Inventory (): afi_present:%d, AFI: 0x%02X",
- afi_present, afi);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("afi_present:%d, AFI: 0x%02X", afi_present, afi);
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -864,7 +876,7 @@
tNFA_STATUS NFA_RwI93StayQuiet(void) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API0("NFA_RwI93StayQuiet ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -904,8 +916,8 @@
tNFA_STATUS NFA_RwI93ReadSingleBlock(uint8_t block_number) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API1("NFA_RwI93ReadSingleBlock (): block_number: 0x%02X",
- block_number);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("block_number: 0x%02X", block_number);
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -946,8 +958,8 @@
tNFA_STATUS NFA_RwI93WriteSingleBlock(uint8_t block_number, uint8_t* p_data) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API1("NFA_RwI93WriteSingleBlock (): block_number: 0x%02X",
- block_number);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("block_number: 0x%02X", block_number);
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -997,7 +1009,8 @@
tNFA_STATUS NFA_RwI93LockBlock(uint8_t block_number) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API1("NFA_RwI93LockBlock (): block_number: 0x%02X", block_number);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("block_number: 0x%02X", block_number);
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -1040,8 +1053,8 @@
uint16_t number_blocks) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API2("NFA_RwI93ReadMultipleBlocks(): %d, %d", first_block_number,
- number_blocks);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%d, %d", first_block_number, number_blocks);
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -1086,8 +1099,8 @@
tNFA_RW_OPERATION* p_msg;
uint16_t data_length;
- NFA_TRACE_API2("NFA_RwI93WriteMultipleBlocks (): %d, %d", first_block_number,
- number_blocks);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%d, %d", first_block_number, number_blocks);
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -1145,8 +1158,8 @@
tNFA_STATUS NFA_RwI93Select(uint8_t* p_uid) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API3("NFA_RwI93Select (): UID: [%02X%02X%02X...]", *(p_uid),
- *(p_uid + 1), *(p_uid + 2));
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "UID: [%02X%02X%02X...]", *(p_uid), *(p_uid + 1), *(p_uid + 2));
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -1189,7 +1202,7 @@
tNFA_STATUS NFA_RwI93ResetToReady(void) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API0("NFA_RwI93ResetToReady ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -1228,7 +1241,7 @@
tNFA_STATUS NFA_RwI93WriteAFI(uint8_t afi) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API1("NFA_RwI93WriteAFI (): AFI: 0x%02X", afi);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("AFI: 0x%02X", afi);
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -1269,7 +1282,7 @@
tNFA_STATUS NFA_RwI93LockAFI(void) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API0("NFA_RwI93LockAFI ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -1308,7 +1321,7 @@
tNFA_STATUS NFA_RwI93WriteDSFID(uint8_t dsfid) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API1("NFA_RwI93WriteDSFID (): DSFID: 0x%02X", dsfid);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("DSFID: 0x%02X", dsfid);
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -1349,7 +1362,7 @@
tNFA_STATUS NFA_RwI93LockDSFID(void) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API0("NFA_RwI93LockDSFID ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -1389,7 +1402,7 @@
tNFA_STATUS NFA_RwI93GetSysInfo(uint8_t* p_uid) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API0("NFA_RwI93GetSysInfo ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
@@ -1438,8 +1451,8 @@
uint16_t number_blocks) {
tNFA_RW_OPERATION* p_msg;
- NFA_TRACE_API2("NFA_RwI93GetMultiBlockSecurityStatus(): %d, %d",
- first_block_number, number_blocks);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%d, %d", first_block_number, number_blocks);
if (nfa_rw_cb.protocol != NFC_PROTOCOL_T5T) {
return (NFA_STATUS_WRONG_PROTOCOL);
diff --git a/src/nfa/rw/nfa_rw_main.c b/src/nfa/rw/nfa_rw_main.cc
similarity index 89%
rename from src/nfa/rw/nfa_rw_main.c
rename to src/nfa/rw/nfa_rw_main.cc
index e1b594b..a8f83b5 100644
--- a/src/nfa/rw/nfa_rw_main.c
+++ b/src/nfa/rw/nfa_rw_main.cc
@@ -22,11 +22,17 @@
*
******************************************************************************/
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_dm_int.h"
#include "nfa_rw_api.h"
#include "nfa_rw_int.h"
-#include "nfa_sys.h"
-#include "nfa_sys_int.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/* NFA_RW control block */
tNFA_RW_CB nfa_rw_cb;
@@ -49,9 +55,7 @@
/*****************************************************************************
** Local function prototypes
*****************************************************************************/
-#if (BT_TRACE_VERBOSE == TRUE)
-static char* nfa_rw_evt_2_str(uint16_t event);
-#endif
+static std::string nfa_rw_evt_2_str(uint16_t event);
/*******************************************************************************
**
@@ -63,7 +67,7 @@
**
*******************************************************************************/
void nfa_rw_init(void) {
- NFA_TRACE_DEBUG0("nfa_rw_init ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* initialize control block */
memset(&nfa_rw_cb, 0, sizeof(tNFA_RW_CB));
@@ -172,27 +176,21 @@
bool nfa_rw_handle_event(NFC_HDR* p_msg) {
uint16_t act_idx;
-#if (BT_TRACE_VERBOSE == TRUE)
- NFA_TRACE_EVENT3("nfa_rw_handle_event event: %s (0x%02x), flags: %08x",
- nfa_rw_evt_2_str(p_msg->event), p_msg->event,
- nfa_rw_cb.flags);
-#else
- NFA_TRACE_EVENT2("nfa_rw_handle_event event: 0x%x, flags: %08x", p_msg->event,
- nfa_rw_cb.flags);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_rw_handle_event event: %s (0x%02x), flags: %08x",
+ nfa_rw_evt_2_str(p_msg->event).c_str(), p_msg->event, nfa_rw_cb.flags);
/* Get NFA_RW sub-event */
act_idx = (p_msg->event & 0x00FF);
if (act_idx < (NFA_RW_MAX_EVT & 0xFF)) {
return (*nfa_rw_action_tbl[act_idx])((tNFA_RW_MSG*)p_msg);
} else {
- NFA_TRACE_ERROR1("nfa_rw_handle_event: unhandled event 0x%02X",
- p_msg->event);
+ LOG(ERROR) << StringPrintf("nfa_rw_handle_event: unhandled event 0x%02X",
+ p_msg->event);
return true;
}
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function nfa_rw_evt_2_str
@@ -200,25 +198,19 @@
** Description convert nfa_rw evt to string
**
*******************************************************************************/
-static char* nfa_rw_evt_2_str(uint16_t event) {
+static std::string nfa_rw_evt_2_str(uint16_t event) {
switch (event) {
case NFA_RW_OP_REQUEST_EVT:
return "NFA_RW_OP_REQUEST_EVT";
-
case NFA_RW_ACTIVATE_NTF_EVT:
return "NFA_RW_ACTIVATE_NTF_EVT";
-
case NFA_RW_DEACTIVATE_NTF_EVT:
return "NFA_RW_DEACTIVATE_NTF_EVT";
-
case NFA_RW_PRESENCE_CHECK_TICK_EVT:
return "NFA_RW_PRESENCE_CHECK_TICK_EVT";
-
case NFA_RW_PRESENCE_CHECK_TIMEOUT_EVT:
return "NFA_RW_PRESENCE_CHECK_TIMEOUT_EVT";
-
default:
return "Unknown";
}
}
-#endif /* BT_TRACE_VERBOSE */
diff --git a/src/nfa/sys/nfa_sys_cback.c b/src/nfa/sys/nfa_sys_cback.cc
similarity index 90%
rename from src/nfa/sys/nfa_sys_cback.c
rename to src/nfa/sys/nfa_sys_cback.cc
index 0ccd3d8..4ca898c 100644
--- a/src/nfa/sys/nfa_sys_cback.c
+++ b/src/nfa/sys/nfa_sys_cback.cc
@@ -21,9 +21,16 @@
* Registration/deregistration functions for inter-module callbacks
*
******************************************************************************/
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_sys.h"
#include "nfa_sys_int.h"
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
/*******************************************************************************
**
** Function nfa_sys_cback_reg_enable_complete
@@ -52,9 +59,8 @@
void nfa_sys_cback_notify_enable_complete(uint8_t id) {
nfa_sys_cb.enable_cplt_flags |= (0x0001 << id);
- NFA_TRACE_DEBUG2(
- "nfa_sys_cback_notify_enable_complete () enable_cplt_flags=0x%x, "
- "enable_cplt_mask=0x%x",
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "enable_cplt_flags=0x%x, enable_cplt_mask=0x%x",
nfa_sys_cb.enable_cplt_flags, nfa_sys_cb.enable_cplt_mask);
if ((nfa_sys_cb.enable_cplt_flags == nfa_sys_cb.enable_cplt_mask) &&
@@ -93,10 +99,8 @@
void nfa_sys_cback_notify_nfcc_power_mode_proc_complete(uint8_t id) {
nfa_sys_cb.proc_nfcc_pwr_mode_cplt_flags |= (0x0001 << id);
- NFA_TRACE_DEBUG2(
- "nfa_sys_cback_notify_nfcc_power_mode_proc_complete () flags=0x%x, "
- "mask=0x%x",
- nfa_sys_cb.proc_nfcc_pwr_mode_cplt_flags,
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "flags=0x%x, mask=0x%x", nfa_sys_cb.proc_nfcc_pwr_mode_cplt_flags,
nfa_sys_cb.proc_nfcc_pwr_mode_cplt_mask);
/* except SYS */
diff --git a/src/nfa/sys/nfa_sys_cfg.c b/src/nfa/sys/nfa_sys_cfg.cc
similarity index 93%
rename from src/nfa/sys/nfa_sys_cfg.c
rename to src/nfa/sys/nfa_sys_cfg.cc
index 0c6a199..ccf01f2 100644
--- a/src/nfa/sys/nfa_sys_cfg.c
+++ b/src/nfa/sys/nfa_sys_cfg.cc
@@ -25,13 +25,11 @@
#include "gki.h"
#include "nfa_sys.h"
-#include "nfc_target.h"
const tNFA_SYS_CFG nfa_sys_cfg = {
NFA_MBOX_EVT_MASK, /* GKI mailbox event */
NFA_MBOX_ID, /* GKI mailbox id */
NFA_TIMER_ID, /* GKI timer id */
- APPL_INITIAL_TRACE_LEVEL /* initial trace level */
};
tNFA_SYS_CFG* p_nfa_sys_cfg = (tNFA_SYS_CFG*)&nfa_sys_cfg;
diff --git a/src/nfa/sys/nfa_sys_main.c b/src/nfa/sys/nfa_sys_main.cc
similarity index 90%
rename from src/nfa/sys/nfa_sys_main.c
rename to src/nfa/sys/nfa_sys_main.cc
index fafbf15..147d1b0 100644
--- a/src/nfa/sys/nfa_sys_main.c
+++ b/src/nfa/sys/nfa_sys_main.cc
@@ -22,11 +22,17 @@
*
******************************************************************************/
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfa_api.h"
#include "nfa_dm_int.h"
-#include "nfa_sys.h"
#include "nfa_sys_int.h"
-#include "nfa_sys_ptim.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/* protocol timer update period, in milliseconds */
#ifndef NFA_SYS_TIMER_PERIOD
@@ -34,9 +40,8 @@
#endif
/* system manager control block definition */
-tNFA_SYS_CB nfa_sys_cb = {
- 0,
-}; /* nfa_sys control block. statically initialize 'flags' field to 0 */
+tNFA_SYS_CB nfa_sys_cb = {};
+/* nfa_sys control block. statically initialize 'flags' field to 0 */
/*******************************************************************************
**
@@ -53,7 +58,6 @@
nfa_sys_cb.flags |= NFA_SYS_FL_INITIALIZED;
nfa_sys_ptim_init(&nfa_sys_cb.ptim_cb, NFA_SYS_TIMER_PERIOD,
p_nfa_sys_cfg->timer);
- nfa_sys_cb.trace_level = p_nfa_sys_cfg->trace_level;
}
/*******************************************************************************
@@ -70,7 +74,8 @@
uint8_t id;
bool freebuf = true;
- NFA_TRACE_EVENT1("NFA got event 0x%04X", p_msg->event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFA got event 0x%04X", p_msg->event);
/* get subsystem id from event */
id = (uint8_t)(p_msg->event >> 8);
@@ -79,7 +84,7 @@
if ((id < NFA_ID_MAX) && (nfa_sys_cb.is_reg[id])) {
freebuf = (*nfa_sys_cb.reg[id]->evt_hdlr)(p_msg);
} else {
- NFA_TRACE_WARNING1("NFA got unregistered event id %d", id);
+ LOG(WARNING) << StringPrintf("NFA got unregistered event id %d", id);
}
if (freebuf) {
@@ -125,8 +130,8 @@
nfa_sys_cb.proc_nfcc_pwr_mode_cplt_mask |= (0x0001 << id);
}
- NFA_TRACE_DEBUG2("nfa_sys_register () id=%i, enable_cplt_mask=0x%x", id,
- nfa_sys_cb.enable_cplt_mask);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "id=%i, enable_cplt_mask=0x%x", id, nfa_sys_cb.enable_cplt_mask);
}
/*******************************************************************************
@@ -170,7 +175,8 @@
**
*******************************************************************************/
void nfa_sys_deregister(uint8_t id) {
- NFA_TRACE_DEBUG1("nfa_sys: deregistering subsystem %i", id);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_sys: deregistering subsystem %i", id);
nfa_sys_cb.is_reg[id] = false;
@@ -227,7 +233,8 @@
void nfa_sys_enable_subsystems(void) {
uint8_t id;
- NFA_TRACE_DEBUG0("nfa_sys: enabling subsystems");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_sys: enabling subsystems");
/* Enable all subsystems except SYS */
for (id = NFA_ID_DM; id < NFA_ID_MAX; id++) {
@@ -257,7 +264,8 @@
uint8_t id;
bool done = true;
- NFA_TRACE_DEBUG1("nfa_sys: disabling subsystems:%d", graceful);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_sys: disabling subsystems:%d", graceful);
nfa_sys_cb.graceful_disable = graceful;
/* Disable all subsystems above NFA_DM. (NFA_DM and NFA_SYS will be disabled
@@ -294,8 +302,8 @@
void nfa_sys_notify_nfcc_power_mode(uint8_t nfcc_power_mode) {
uint8_t id;
- NFA_TRACE_DEBUG1("nfa_sys: notify NFCC power mode(%d) to subsystems",
- nfcc_power_mode);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfa_sys: notify NFCC power mode(%d) to subsystems", nfcc_power_mode);
/* Notify NFCC power state to all subsystems except NFA_SYS */
for (id = NFA_ID_DM; id < NFA_ID_MAX; id++) {
@@ -360,14 +368,3 @@
**
*******************************************************************************/
void nfa_sys_disable_timers(void) { nfa_sys_cb.timers_disabled = true; }
-
-/*******************************************************************************
-**
-** Function nfa_sys_set_trace_level
-**
-** Description Set trace level for BTA
-**
-** Returns void
-**
-*******************************************************************************/
-void nfa_sys_set_trace_level(uint8_t level) { nfa_sys_cb.trace_level = level; }
diff --git a/src/nfa/sys/nfa_sys_ptim.c b/src/nfa/sys/nfa_sys_ptim.cc
similarity index 88%
rename from src/nfa/sys/nfa_sys_ptim.c
rename to src/nfa/sys/nfa_sys_ptim.cc
index 0e42042..3f0d48a 100644
--- a/src/nfa/sys/nfa_sys_ptim.c
+++ b/src/nfa/sys/nfa_sys_ptim.cc
@@ -21,12 +21,15 @@
* Protocol timer services (taken from bta ptim)
*
******************************************************************************/
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
#include "nfa_sys_ptim.h"
-#include "gki.h"
#include "nfa_sys.h"
-#include "nfa_sys_int.h"
-#include "nfc_target.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*******************************************************************************
**
@@ -86,7 +89,8 @@
(p_cb->timer_queue.p_first->ticks <= 0)) {
/* removed expired timer from list */
p_tle = p_cb->timer_queue.p_first;
- NFA_TRACE_DEBUG1("nfa_sys_ptim_timer_update expired: %08x", p_tle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_sys_ptim_timer_update expired: %p", p_tle);
GKI_remove_from_timer_list(&p_cb->timer_queue, p_tle);
/* call timer callback */
@@ -104,7 +108,7 @@
/* if timer list is empty stop periodic GKI timer */
if (p_cb->timer_queue.p_first == NULL) {
- NFA_TRACE_DEBUG0("ptim timer stop");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("ptim timer stop");
GKI_stop_timer(p_cb->timer_id);
}
}
@@ -121,11 +125,12 @@
*******************************************************************************/
void nfa_sys_ptim_start_timer(tPTIM_CB* p_cb, TIMER_LIST_ENT* p_tle,
uint16_t type, int32_t timeout) {
- NFA_TRACE_DEBUG1("nfa_sys_ptim_start_timer %08x", p_tle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_sys_ptim_start_timer %p", p_tle);
/* if timer list is currently empty, start periodic GKI timer */
if (p_cb->timer_queue.p_first == NULL) {
- NFA_TRACE_DEBUG0("ptim timer start");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("ptim timer start");
p_cb->last_gki_ticks = GKI_get_tick_count();
GKI_start_timer(p_cb->timer_id, GKI_MS_TO_TICKS(p_cb->period), true);
}
@@ -148,13 +153,14 @@
**
*******************************************************************************/
void nfa_sys_ptim_stop_timer(tPTIM_CB* p_cb, TIMER_LIST_ENT* p_tle) {
- NFA_TRACE_DEBUG1("nfa_sys_ptim_stop_timer %08x", p_tle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfa_sys_ptim_stop_timer %p", p_tle);
GKI_remove_from_timer_list(&p_cb->timer_queue, p_tle);
/* if timer list is empty stop periodic GKI timer */
if (p_cb->timer_queue.p_first == NULL) {
- NFA_TRACE_DEBUG0("ptim timer stop");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("ptim timer stop");
GKI_stop_timer(p_cb->timer_id);
}
}
diff --git a/src/nfc/include/ce_api.h b/src/nfc/include/ce_api.h
index 0432545..1ed0f91 100644
--- a/src/nfc/include/ce_api.h
+++ b/src/nfc/include/ce_api.h
@@ -38,28 +38,18 @@
CE_T3T_NDEF_UPDATE_START_EVT = CE_T3T_FIRST_EVT,
CE_T3T_NDEF_UPDATE_CPLT_EVT,
CE_T3T_UPDATE_EVT,
- CE_T3T_CHECK_EVT,
CE_T3T_RAW_FRAME_EVT,
- CE_T3T_MAX_EVT,
CE_T4T_NDEF_UPDATE_START_EVT = CE_T4T_FIRST_EVT,
CE_T4T_NDEF_UPDATE_CPLT_EVT,
CE_T4T_NDEF_UPDATE_ABORT_EVT,
- CE_T4T_RAW_FRAME_EVT,
- CE_T4T_MAX_EVT
+ CE_T4T_RAW_FRAME_EVT
};
-#define CE_RAW_FRAME_EVT 0xFF
-
typedef uint8_t tCE_EVENT;
typedef struct {
tNFC_STATUS status;
- NFC_HDR* p_data;
-} tCE_T2T_DATA;
-
-typedef struct {
- tNFC_STATUS status;
uint8_t* p_data;
bool b_updated;
uint32_t length;
@@ -194,33 +184,6 @@
/*******************************************************************************
**
-** Function CE_T4TTestSetCC
-**
-** Description Set fields in Capability Container File for testing
-**
-** Returns NFC_STATUS_OK if success
-**
-*******************************************************************************/
-extern tNFC_STATUS CE_T4TTestSetCC(uint16_t cc_len, uint8_t version,
- uint16_t max_le, uint16_t max_lc);
-
-/*******************************************************************************
-**
-** Function CE_T4TTestSetNDEFCtrlTLV
-**
-** Description Set fields in NDEF File Control TLV for testing
-**
-** Returns NFC_STATUS_OK if success
-**
-*******************************************************************************/
-extern tNFC_STATUS CE_T4TTestSetNDEFCtrlTLV(uint8_t type, uint8_t length,
- uint16_t file_id,
- uint16_t max_file_size,
- uint8_t read_access,
- uint8_t write_access);
-
-/*******************************************************************************
-**
** Function CE_SendRawFrame
**
** Description This function sends a raw frame to the peer device.
@@ -242,18 +205,4 @@
extern tNFC_STATUS CE_SetActivatedTagType(tNFC_ACTIVATE_DEVT* p_activate_params,
uint16_t t3t_system_code,
tCE_CBACK* p_cback);
-
-/*******************************************************************************
-**
-** Function CE_SetTraceLevel
-**
-** Description This function sets the trace level for Card Emulation mode.
-** If called with a value of 0xFF,
-** it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-extern uint8_t CE_SetTraceLevel(uint8_t new_level);
-
#endif /* CE_API_H */
diff --git a/src/nfc/int/ce_int.h b/src/nfc/include/ce_int.h
similarity index 96%
rename from src/nfc/int/ce_int.h
rename to src/nfc/include/ce_int.h
index 338d61f..1a48a36 100644
--- a/src/nfc/int/ce_int.h
+++ b/src/nfc/include/ce_int.h
@@ -36,9 +36,6 @@
#define CE_MAX_SUP_PROTO NCI_PROTOCOL_MIFARE
#endif
-/* 2^8=256. CB use uint8_t for BytesPerPage, so max is 7 */
-#define CE_MAX_BYTE_PER_PAGE 7
-
/* CE Type 3 Tag structures */
/* Type 3 Tag NDEF card-emulation */
@@ -133,8 +130,6 @@
uint16_t ndef_max; /* max size of p_ndef */
uint16_t ndef_cur; /* current size of p_ndef */
tNFC_RF_TECH tech;
- uint8_t trace_level;
-
} tCE_CB;
/*
@@ -155,9 +150,6 @@
/*****************************************************************************
** EXTERNAL FUNCTION DECLARATIONS
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
/* Global NFC data */
extern tCE_CB ce_cb;
@@ -173,8 +165,4 @@
extern tNFC_STATUS ce_select_t4t(void);
extern void ce_t4t_process_timeout(TIMER_LIST_ENT* p_tle);
-#ifdef __cplusplus
-}
-#endif
-
#endif /* CE_INT_H_ */
diff --git a/src/nfc/include/llcp_api.h b/src/nfc/include/llcp_api.h
index 50b0740..b71fca4 100644
--- a/src/nfc/include/llcp_api.h
+++ b/src/nfc/include/llcp_api.h
@@ -24,6 +24,7 @@
#ifndef LLCP_API_H
#define LLCP_API_H
+#include <string>
#include "llcp_defs.h"
#include "nfc_target.h"
@@ -86,8 +87,6 @@
#define LLCP_LINK_VERSION_FAILED 0x01
/* Failed to parse received general bytes */
#define LLCP_LINK_BAD_GEN_BYTES 0x02
-/* internal error */
-#define LLCP_LINK_INTERNAL_ERROR 0x03
/* Link has been deactivated by local */
#define LLCP_LINK_LOCAL_INITIATED 0x04
/* Link has been deactivated by remote */
@@ -98,9 +97,6 @@
#define LLCP_LINK_FRAME_ERROR 0x07
/* RF link loss without any rx LLC PDU */
#define LLCP_LINK_RF_LINK_LOSS_NO_RX_LLC 0x08
-#define LLCP_LINK_RF_TRANSMISSION_ERR NFC_STATUS_RF_TRANSMISSION_ERR
-#define LLCP_LINK_RF_PROTOCOL_ERR NFC_STATUS_RF_PROTOCOL_ERR
-#define LLCP_LINK_RF_TIMEOUT NFC_STATUS_TIMEOUT
#define LLCP_LINK_RF_LINK_LOSS_ERR NFC_STATUS_LINK_LOSS
typedef void(tLLCP_LINK_CBACK)(uint8_t event, uint8_t reason);
@@ -222,9 +218,6 @@
/*****************************************************************************
** External Function Declarations
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
/*******************************************************************************
**
@@ -356,7 +349,7 @@
**
*******************************************************************************/
extern uint8_t LLCP_RegisterServer(uint8_t reg_sap, uint8_t link_type,
- char* p_service_name,
+ std::string p_service_name,
tLLCP_APP_CBACK* p_sap_cback);
/*******************************************************************************
@@ -660,18 +653,6 @@
/*******************************************************************************
**
-** Function LLCP_SetTraceLevel
-**
-** Description This function sets the trace level for LLCP. If called with
-** a value of 0xFF, it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-
-extern uint8_t LLCP_SetTraceLevel(uint8_t new_level);
-/*******************************************************************************
-**
** Function LLCP_RegisterDtaCback
**
** Description Register callback function for LLCP DTA testing
@@ -695,8 +676,4 @@
extern void LLCP_SetTestParams(uint8_t version, uint16_t wks);
#endif
-#ifdef __cplusplus
-}
-#endif
-
#endif /* LLCP_API_H */
diff --git a/src/nfc/include/llcp_defs.h b/src/nfc/include/llcp_defs.h
index ba25710..f79c029 100644
--- a/src/nfc/include/llcp_defs.h
+++ b/src/nfc/include/llcp_defs.h
@@ -52,12 +52,9 @@
#define LLCP_PDU_DM_TYPE 7
#define LLCP_PDU_FRMR_TYPE 8
#define LLCP_PDU_SNL_TYPE 9
-#define LLCP_PDU_RESERVED_1010 10
-#define LLCP_PDU_RESERVED_1011 11
#define LLCP_PDU_I_TYPE 12
#define LLCP_PDU_RR_TYPE 13
#define LLCP_PDU_RNR_TYPE 14
-#define LLCP_PDU_RESERVED_1111 15
#define LLCP_PDU_SYMM_SIZE 2
#define LLCP_PDU_DISC_SIZE 2
@@ -81,16 +78,6 @@
#define LLCP_FRMR_R_ERROR_FLAG 0x02 /* Receive Sequence Error */
#define LLCP_FRMR_S_ERROR_FLAG 0x01 /* Send Sequence Error */
-#define LLCP_GET_FRMR_W_ERROR_FLAG(u8) (((uint8_t)(u8) >> 7) & 0x01)
-#define LLCP_GET_FRMR_I_ERROR_FLAG(u8) (((uint8_t)(u8) >> 6) & 0x01)
-#define LLCP_GET_FRMR_R_ERROR_FLAG(u8) (((uint8_t)(u8) >> 5) & 0x01)
-#define LLCP_GET_FRMR_S_ERROR_FLAG(u8) (((uint8_t)(u8) >> 4) & 0x01)
-#define LLCP_GET_FRMR_PTYPE(u8) ((uint8_t)(u8)&0x0F)
-#define LLCP_GET_FRMR_VS(u16) (((uint16_t)(u16) >> 12) & 0x000F)
-#define LLCP_GET_FRMR_VR(u16) (((uint16_t)(u16) >> 8) & 0x000F)
-#define LLCP_GET_FRMR_VSA(u16) (((uint16_t)(u16) >> 4) & 0x000F)
-#define LLCP_GET_FRMR_VRA(u16) (((uint16_t)(u16) >> 0) & 0x000F)
-
/*
** LLCP Parameter Descriptions
*/
@@ -122,21 +109,10 @@
/* Well-Known Service Bitmap */
#define LLCP_WKS_MASK_LM 0x0001 /* Link Management */
-#define LLCP_WKS_MASK_SDP 0x0002 /* Service Discovery "urn:nfc:sn:sdp" */
-#define LLCP_WKS_MASK_IP 0x0004 /* IP over LLCP Binding "urn:nfc:sn:ip" */
-/* OBEX over LLCP Binding "urn:nfc:sn:obex" */
-#define LLCP_WKS_MASK_OBEX 0x0008
-/* Simple NDEP Exchange Protocol "urn:nfc:sn:snep" */
-#define LLCP_WKS_MASK_SNEP 0x0010
/* Well-Known Service Access Points */
#define LLCP_SAP_LM 0x00 /* Link Management */
#define LLCP_SAP_SDP 0x01 /* Service Discovery "urn:nfc:sn:sdp" */
-#define LLCP_SAP_IP 0x02 /* IP over LLCP Binding "urn:nfc:sn:ip" */
-/* OBEX over LLCP Binding "urn:nfc:sn:obex" */
-#define LLCP_SAP_OBEX 0x03
-/* Simple NDEP Exchange Protocol "urn:nfc:sn:snep" */
-#define LLCP_SAP_SNEP 0x04
/* Link Timeout, LTO */
#define LLCP_LTO_TYPE 0x04
@@ -157,7 +133,6 @@
/* Option, OPT */
#define LLCP_OPT_TYPE 0x07
#define LLCP_OPT_LEN 0x01
-#define LLCP_GET_OPT_LSC(u8) ((uint8_t)(u8)&0x03)
/* Service Discovery Request, SDREQ */
#define LLCP_SDREQ_TYPE 0x08
@@ -182,7 +157,6 @@
#define LLCP_SEQ_MODULO 16
#define LLCP_NUM_SAPS 64
-#define LLCP_LOWER_BOUND_WK_SAP 0x00
#define LLCP_UPPER_BOUND_WK_SAP 0x0F
#define LLCP_LOWER_BOUND_SDP_SAP 0x10
#define LLCP_UPPER_BOUND_SDP_SAP 0x1F
@@ -192,10 +166,6 @@
/* Max Payload */
/* Maximum Payload size, Length Reduction LRi/LRt */
#define LLCP_NCI_MAX_PAYL_SIZE 254
-/* Data exchange protocol header, 3 bytes */
-#define LLCP_NFC_DEP_HEADER_SIZE 3
-#define LLCP_MAX_PAYLOAD_SIZE \
- (LLCP_NCI_MAX_PAYL_SIZE - LLCP_NFC_DEP_HEADER_SIZE)
#define LLCP_MAX_GEN_BYTES 48
diff --git a/src/nfc/int/llcp_int.h b/src/nfc/include/llcp_int.h
similarity index 97%
rename from src/nfc/int/llcp_int.h
rename to src/nfc/include/llcp_int.h
index fdf1c70..6051ca0 100644
--- a/src/nfc/int/llcp_int.h
+++ b/src/nfc/include/llcp_int.h
@@ -107,8 +107,8 @@
*/
typedef struct {
- uint8_t link_type; /* logical link and/or data link */
- uint8_t* p_service_name; /* GKI buffer containing service name */
+ uint8_t link_type; /* logical link and/or data link */
+ char* p_service_name; /* GKI buffer containing service name */
tLLCP_APP_CBACK* p_app_cback; /* application's callback pointer */
BUFFER_Q ui_xmit_q; /* UI PDU queue for transmitting */
@@ -126,8 +126,7 @@
LLCP_DLC_STATE_W4_LOCAL_RESP, /* waiting for connection confirm from upper
layer */
LLCP_DLC_STATE_CONNECTED, /* data link connection has been established */
- LLCP_DLC_STATE_W4_REMOTE_DM, /* waiting for disconnection confirm from peer */
- LLCP_DLC_STATE_MAX
+ LLCP_DLC_STATE_W4_REMOTE_DM /* waiting for disconnection confirm from peer */
};
typedef uint8_t tLLCP_DLC_STATE;
@@ -217,8 +216,6 @@
*/
typedef struct {
- uint8_t trace_level; /* LLCP trace level */
-
tLLCP_SDP_CB sdp_cb; /* SDP control block */
tLLCP_LCB lcb; /* LLCP link control block */
tLLCP_APP_CB wks_cb[LLCP_MAX_WKS]; /* Application's registration for
@@ -285,10 +282,6 @@
#endif
-#ifdef __cplusplus
-extern "C" {
-#endif
-
/*
** LLCP global data
*/
@@ -364,8 +357,4 @@
tLLCP_STATUS llcp_sdp_proc_snl(uint16_t sdu_length, uint8_t* p);
void llcp_sdp_check_send_snl(void);
void llcp_sdp_proc_deactivation(void);
-#ifdef __cplusplus
-}
-#endif
-
#endif
diff --git a/src/nfc/include/nci_hmsgs.h b/src/nfc/include/nci_hmsgs.h
index d013cde..2ea0c70 100644
--- a/src/nfc/include/nci_hmsgs.h
+++ b/src/nfc/include/nci_hmsgs.h
@@ -24,10 +24,6 @@
#ifndef NFC_NCI_HMSGS_H
#define NFC_NCI_HMSGS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
#include "nci_defs.h"
#include "nfc_types.h"
@@ -69,10 +65,7 @@
uint8_t nci_snd_set_routing_cmd(bool more, uint8_t num_tlv, uint8_t tlv_size,
uint8_t* p_param_tlvs);
uint8_t nci_snd_get_routing_cmd(void);
-#endif
-
-#ifdef __cplusplus
-}
+uint8_t nci_snd_nfcee_power_link_control(uint8_t nfcee_id, uint8_t pl_config);
#endif
#endif /* NFC_NCI_MSGS_H */
diff --git a/src/nfc/include/ndef_utils.h b/src/nfc/include/ndef_utils.h
index 960185e..a30d40f 100644
--- a/src/nfc/include/ndef_utils.h
+++ b/src/nfc/include/ndef_utils.h
@@ -68,19 +68,6 @@
};
typedef uint8_t tNDEF_STATUS;
-#define HR_REC_TYPE_LEN 2 /* Handover Request Record Type */
-#define HS_REC_TYPE_LEN 2 /* Handover Select Record Type */
-#define HC_REC_TYPE_LEN 2 /* Handover Carrier recrod Type */
-#define CR_REC_TYPE_LEN 2 /* Collision Resolution Record Type */
-#define AC_REC_TYPE_LEN 2 /* Alternative Carrier Record Type */
-#define ERR_REC_TYPE_LEN 3 /* Error Record Type */
-#define BT_OOB_REC_TYPE_LEN 32 /* Bluetooth OOB Data Type */
-#define WIFI_WSC_REC_TYPE_LEN 23 /* Wifi WSC Data Type */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
/* Functions to parse a received NDEF Message
*/
/*******************************************************************************
@@ -280,39 +267,6 @@
/*******************************************************************************
**
-** Function NDEF_MsgInsertRec
-**
-** Description This function inserts a record at a specific index into the
-** given NDEF message
-**
-** Returns OK, or error if the record did not fit
-** *p_cur_size is updated
-**
-*******************************************************************************/
-extern tNDEF_STATUS NDEF_MsgInsertRec(uint8_t* p_msg, uint32_t max_size,
- uint32_t* p_cur_size, int32_t index,
- uint8_t tnf, uint8_t* p_type,
- uint8_t type_len, uint8_t* p_id,
- uint8_t id_len, uint8_t* p_payload,
- uint32_t payload_len);
-
-/*******************************************************************************
-**
-** Function NDEF_MsgAppendRec
-**
-** Description This function adds NDEF records to the end of an NDEF
-** message.
-**
-** Returns OK, or error if the record did not fit
-** *p_cur_size is updated
-**
-*******************************************************************************/
-extern tNDEF_STATUS NDEF_MsgAppendRec(uint8_t* p_msg, uint32_t max_size,
- uint32_t* p_cur_size, uint8_t* p_new_rec,
- uint32_t new_rec_len);
-
-/*******************************************************************************
-**
** Function NDEF_MsgAppendPayload
**
** Description This function appends extra payload to a specific record in
@@ -403,9 +357,4 @@
extern tNDEF_STATUS NDEF_MsgCopyAndDechunk(uint8_t* p_src, uint32_t src_len,
uint8_t* p_dest,
uint32_t* p_out_len);
-
-#ifdef __cplusplus
-}
-#endif
-
#endif /* NDEF_UTILS_H */
diff --git a/src/nfc/include/nfc_api.h b/src/nfc/include/nfc_api.h
index 2a35942..c4a654e 100644
--- a/src/nfc/include/nfc_api.h
+++ b/src/nfc/include/nfc_api.h
@@ -113,51 +113,22 @@
* NFC Config Parameter IDs defined by NCI
**********************************************/
#define NFC_PMID_TOTAL_DURATION NCI_PARAM_ID_TOTAL_DURATION
-#define NFC_PMID_CON_DEVICES_LIMIT NCI_PARAM_ID_CON_DEVICES_LIMIT
-#define NFC_PMID_PA_BAILOUT NCI_PARAM_ID_PA_BAILOUT
-#define NFC_PMID_CON_DISCOVERY_PARAM NCI_PARAM_ID_CON_DISCOVERY_PARAM
-#define NFC_PMID_PB_AFI NCI_PARAM_ID_PB_AFI
-#define NFC_PMID_PB_BAILOUT NCI_PARAM_ID_PB_BAILOUT
-#define NFC_PMID_PB_ATTRIB_PARAM1 NCI_PARAM_ID_PB_ATTRIB_PARAM1
-#define NFC_PMID_PF_BIT_RATE NCI_PARAM_ID_PF_BIT_RATE
#define NFC_PMID_PF_RC NCI_PARAM_ID_PF_RC
-#define NFC_PMID_PB_H_INFO NCI_PARAM_ID_PB_H_INFO
-#define NFC_PMID_BITR_NFC_DEP NCI_PARAM_ID_BITR_NFC_DEP
#define NFC_PMID_ATR_REQ_GEN_BYTES NCI_PARAM_ID_ATR_REQ_GEN_BYTES
-#define NFC_PMID_ATR_REQ_CONFIG NCI_PARAM_ID_ATR_REQ_CONFIG
#define NFC_PMID_LA_HIST_BY NCI_PARAM_ID_LA_HIST_BY
#define NFC_PMID_LA_NFCID1 NCI_PARAM_ID_LA_NFCID1
-#define NFC_PMID_PI_BIT_RATE NCI_PARAM_ID_PI_BIT_RATE
#define NFC_PMID_LA_BIT_FRAME_SDD NCI_PARAM_ID_LA_BIT_FRAME_SDD
#define NFC_PMID_LA_PLATFORM_CONFIG NCI_PARAM_ID_LA_PLATFORM_CONFIG
#define NFC_PMID_LA_SEL_INFO NCI_PARAM_ID_LA_SEL_INFO
-#define NFC_PMID_LI_BIT_RATE NCI_PARAM_ID_LI_BIT_RATE
#define NFC_PMID_LB_SENSB_INFO NCI_PARAM_ID_LB_SENSB_INFO
-#define NFC_PMID_LB_PROTOCOL NCI_PARAM_ID_LB_PROTOCOL
#define NFC_PMID_LB_H_INFO NCI_PARAM_ID_LB_H_INFO_RSP
#define NFC_PMID_LB_NFCID0 NCI_PARAM_ID_LB_NFCID0
#define NFC_PMID_LB_APPDATA NCI_PARAM_ID_LB_APPDATA
#define NFC_PMID_LB_SFGI NCI_PARAM_ID_LB_SFGI
#define NFC_PMID_LB_ADC_FO NCI_PARAM_ID_LB_ADC_FO
#define NFC_PMID_LF_T3T_ID1 NCI_PARAM_ID_LF_T3T_ID1
-#define NFC_PMID_LF_T3T_ID2 NCI_PARAM_ID_LF_T3T_ID2
-#define NFC_PMID_LF_T3T_ID3 NCI_PARAM_ID_LF_T3T_ID3
-#define NFC_PMID_LF_T3T_ID4 NCI_PARAM_ID_LF_T3T_ID4
-#define NFC_PMID_LF_T3T_ID5 NCI_PARAM_ID_LF_T3T_ID5
-#define NFC_PMID_LF_T3T_ID6 NCI_PARAM_ID_LF_T3T_ID6
-#define NFC_PMID_LF_T3T_ID7 NCI_PARAM_ID_LF_T3T_ID7
-#define NFC_PMID_LF_T3T_ID8 NCI_PARAM_ID_LF_T3T_ID8
-#define NFC_PMID_LF_T3T_ID9 NCI_PARAM_ID_LF_T3T_ID9
-#define NFC_PMID_LF_T3T_ID10 NCI_PARAM_ID_LF_T3T_ID10
-#define NFC_PMID_LF_T3T_ID11 NCI_PARAM_ID_LF_T3T_ID11
-#define NFC_PMID_LF_T3T_ID12 NCI_PARAM_ID_LF_T3T_ID12
-#define NFC_PMID_LF_T3T_ID13 NCI_PARAM_ID_LF_T3T_ID13
-#define NFC_PMID_LF_T3T_ID14 NCI_PARAM_ID_LF_T3T_ID14
-#define NFC_PMID_LF_T3T_ID15 NCI_PARAM_ID_LF_T3T_ID15
-#define NFC_PMID_LF_T3T_ID16 NCI_PARAM_ID_LF_T3T_ID16
#define NFC_PMID_LF_PROTOCOL NCI_PARAM_ID_LF_PROTOCOL
#define NFC_PMID_LF_T3T_PMM NCI_PARAM_ID_LF_T3T_PMM
-#define NFC_PMID_LF_T3T_MAX NCI_PARAM_ID_LF_T3T_MAX
#define NFC_PMID_LF_T3T_FLAGS2 NCI_PARAM_ID_LF_T3T_FLAGS2
#define NFC_PMID_FWI NCI_PARAM_ID_FWI
#define NFC_PMID_LF_CON_BITR_F NCI_PARAM_ID_LF_CON_BITR_F
@@ -165,17 +136,14 @@
#define NFC_PMID_ATR_RES_GEN_BYTES NCI_PARAM_ID_ATR_RES_GEN_BYTES
#define NFC_PMID_ATR_RSP_CONFIG NCI_PARAM_ID_ATR_RSP_CONFIG
#define NFC_PMID_RF_FIELD_INFO NCI_PARAM_ID_RF_FIELD_INFO
-#define NFC_PMID_NFC_DEP_OP NCI_PARAM_ID_NFC_DEP_OP
-#define NFC_PARAM_ID_RF_EE_ACTION NCI_PARAM_ID_RF_EE_ACTION
-#define NFC_PARAM_ID_ISO_DEP_OP NCI_PARAM_ID_ISO_DEP_OP
/* Technology based routing */
#define NFC_ROUTE_TAG_TECH NCI_ROUTE_TAG_TECH
/* Protocol based routing */
#define NFC_ROUTE_TAG_PROTO NCI_ROUTE_TAG_PROTO
#define NFC_ROUTE_TAG_AID NCI_ROUTE_TAG_AID /* AID routing */
+#define NFC_ROUTE_TAG_SYSCODE NCI_ROUTE_TAG_SYSCODE /* System Code routing*/
/* tag, len, 2 byte value for technology/protocol based routing */
-#define NFC_ROUTE_TLV_ENTRY_SIZE 4
/* For routing */
#define NFC_DH_ID NCI_DH_ID /* for DH */
@@ -183,7 +151,6 @@
/* use a proprietary range */
#define NFC_TEST_ID NCI_TEST_ID
-typedef uint8_t tNFC_PMID;
#define NFC_TL_SIZE 2
#define NFC_SAVED_CMD_SIZE 2
@@ -223,7 +190,9 @@
NFC_NFCC_TRANSPORT_ERR_REVT, /* 16 NCI Tranport error */
NFC_NFCC_POWER_OFF_REVT, /* 17 NFCC turned off */
NFC_SET_POWER_SUB_STATE_REVT, /* 18 Set power sub state response */
- NFC_FIRST_VS_REVT /* First vendor-specific rsp event */
+ NFC_NFCEE_PL_CONTROL_REVT, /* NFCEE Power/Link Ctrl response*/
+ NFC_NFCEE_STATUS_REVT /* NFCEE Status Notification */
+ /* First vendor-specific rsp event */
};
typedef uint16_t tNFC_RESPONSE_EVT;
@@ -284,7 +253,6 @@
#define NFC_NFCEE_INTERFACE_T3T NCI_NFCEE_INTERFACE_T3T
#define NFC_NFCEE_INTERFACE_TRANSPARENT NCI_NFCEE_INTERFACE_TRANSPARENT
#define NFC_NFCEE_INTERFACE_PROPRIETARY NCI_NFCEE_INTERFACE_PROPRIETARY
-typedef uint8_t tNFC_NFCEE_INTERFACE;
#define NFC_NFCEE_TAG_HW_ID NCI_NFCEE_TAG_HW_ID
#define NFC_NFCEE_TAG_ATR_BYTES NCI_NFCEE_TAG_ATR_BYTES
@@ -298,12 +266,15 @@
uint8_t info[NFC_MAX_EE_INFO];
} tNFC_NFCEE_TLV;
+/* NFCEE unrecoverable error */
+#define NFC_NFCEE_STATUS_UNRECOVERABLE_ERROR NCI_NFCEE_STS_UNRECOVERABLE_ERROR
/* NFCEE connected and inactive */
#define NFC_NFCEE_STATUS_INACTIVE NCI_NFCEE_STS_CONN_INACTIVE
/* NFCEE connected and active */
#define NFC_NFCEE_STATUS_ACTIVE NCI_NFCEE_STS_CONN_ACTIVE
/* NFCEE removed */
#define NFC_NFCEE_STATUS_REMOVED NCI_NFCEE_STS_REMOVED
+
/* the data type associated with NFC_NFCEE_INFO_REVT */
typedef struct {
tNFC_STATUS status; /* The event status - place holder */
@@ -313,6 +284,7 @@
uint8_t ee_interface[NFC_MAX_EE_INTERFACE]; /* NFCEE interface */
uint8_t num_tlvs; /* number of TLVs */
tNFC_NFCEE_TLV ee_tlv[NFC_MAX_EE_TLVS]; /* The TLVs associated with NFCEE */
+ bool nfcee_power_ctrl; /* 1, if NFCC has control of NFCEE Power Supply */
} tNFC_NFCEE_INFO_REVT;
#define NFC_MODE_ACTIVATE NCI_NFCEE_MD_ACTIVATE
@@ -364,25 +336,29 @@
NFC_HDR* p_data; /* The received Data */
} tNFC_DATA_CEVT;
+/* the data type associated with NFC_NFCEE_PL_CONTROL_REVT */
+typedef struct {
+ tNFC_STATUS status; /* The event status */
+ uint8_t nfcee_id; /* NFCEE ID */
+ tNCI_NFCEE_PL_CONFIG pl_control; /* Power/Link Control command */
+} tNFC_NFCEE_PL_CONTROL_REVT;
+
+/* the data type associated with NFC_NFCEE_STATUS_REVT */
+typedef struct {
+ tNFC_STATUS status; /* The event status */
+ uint8_t nfcee_id; /* NFCEE ID */
+ tNCI_EE_NTF_STATUS nfcee_status; /* NFCEE status */
+} tNFC_NFCEE_STATUS_REVT;
/* RF Field Status */
-/* No field generated by remote device */
-#define NFC_RF_STS_NO_REMOTE NCI_RF_STS_NO_REMOTE
-/* field generated by remote device */
-#define NFC_RF_STS_REMOTE NCI_RF_STS_REMOTE
typedef uint8_t tNFC_RF_STS;
/* RF Field Technologies */
#define NFC_RF_TECHNOLOGY_A NCI_RF_TECHNOLOGY_A
#define NFC_RF_TECHNOLOGY_B NCI_RF_TECHNOLOGY_B
#define NFC_RF_TECHNOLOGY_F NCI_RF_TECHNOLOGY_F
-#define NFC_RF_TECHNOLOGY_V NCI_RF_TECHNOLOGY_V
typedef uint8_t tNFC_RF_TECH;
-#ifdef __cplusplus
-extern "C" uint8_t NFC_GetNCIVersion();
-#else
extern uint8_t NFC_GetNCIVersion();
-#endif
/* Supported Protocols */
#define NFC_PROTOCOL_UNKNOWN NCI_PROTOCOL_UNKNOWN /* Unknown */
@@ -395,7 +371,7 @@
/* Type5Tag - NFC-V/ISO15693*/
#define NFC_PROTOCOL_T5T NFC_PROTOCOL_T5T_(NFC_GetNCIVersion())
#define NFC_PROTOCOL_T5T_(x) \
- ((x == NCI_VERSION_2_0) ? NCI_PROTOCOL_T5T : NCI_PROTOCOL_15693)
+ (((x) == NCI_VERSION_2_0) ? NCI_PROTOCOL_T5T : NCI_PROTOCOL_15693)
/* Type 4A,4B - NFC-A or NFC-B */
#define NFC_PROTOCOL_ISO_DEP NCI_PROTOCOL_ISO_DEP
/* NFCDEP/LLCP - NFC-A or NFC-F */
@@ -429,16 +405,10 @@
/* Select Response codes */
#define NFC_SEL_RES_NFC_FORUM_T2T 0x00
-#define NFC_SEL_RES_MF_CLASSIC 0x08
/* Bit Rates */
-#define NFC_BIT_RATE_106 NCI_BIT_RATE_106 /* 106 kbit/s */
#define NFC_BIT_RATE_212 NCI_BIT_RATE_212 /* 212 kbit/s */
#define NFC_BIT_RATE_424 NCI_BIT_RATE_424 /* 424 kbit/s */
-#define NFC_BIT_RATE_848 NCI_BIT_RATE_848 /* 848 Kbit/s */
-#define NFC_BIT_RATE_1696 NCI_BIT_RATE_1696 /* 1696 Kbit/s*/
-#define NFC_BIT_RATE_3392 NCI_BIT_RATE_3392 /* 3392 Kbit/s*/
-#define NFC_BIT_RATE_6784 NCI_BIT_RATE_6784 /* 6784 Kbit/s*/
typedef uint8_t tNFC_BIT_RATE;
/**********************************************
@@ -447,11 +417,7 @@
#define NFC_INTERFACE_EE_DIRECT_RF NCI_INTERFACE_EE_DIRECT_RF
#define NFC_INTERFACE_FRAME NCI_INTERFACE_FRAME
#define NFC_INTERFACE_ISO_DEP NCI_INTERFACE_ISO_DEP
-#define NFC_INTERFACE_NDEF NCI_INTERFACE_NDEF
#define NFC_INTERFACE_NFC_DEP NCI_INTERFACE_NFC_DEP
-#define NFC_INTERFACE_LLCP_LOW NCI_INTERFACE_LLCP_LOW
-#define NFC_INTERFACE_LLCP_HIGH NCI_INTERFACE_LLCP_HIGH
-#define NFC_INTERFACE_VS_T2T_CE NCI_INTERFACE_VS_T2T_CE
#define NFC_INTERFACE_MIFARE NCI_INTERFACE_VS_MIFARE
typedef tNCI_INTF_TYPE tNFC_INTF_TYPE;
@@ -467,10 +433,6 @@
/**********************************************
* Deactivation Reasons
**********************************************/
-#define NFC_DEACTIVATE_REASON_DH_REQ NCI_DEACTIVATE_REASON_DH_REQ
-#define NFC_DEACTIVATE_REASON_ENDPOINT_REQ NCI_DEACTIVATE_REASON_ENDPOINT_REQ
-#define NFC_DEACTIVATE_REASON_RF_LINK_LOSS NCI_DEACTIVATE_REASON_RF_LINK_LOSS
-#define NFC_DEACTIVATE_REASON_NFCB_BAD_AFI NCI_DEACTIVATE_REASON_NFCB_BAD_AFI
#define NFC_DEACTIVATE_REASON_DH_REQ_FAILED NCI_DEACTIVATE_REASON_DH_REQ_FAILED
typedef uint8_t tNFC_DEACT_REASON;
@@ -519,7 +481,6 @@
} tNFC_EE_ACTION_REVT;
#define NFC_EE_DISC_OP_ADD 0
-#define NFC_EE_DISC_OP_REMOVE 1
typedef uint8_t tNFC_EE_DISC_OP;
typedef struct {
tNFC_EE_DISC_OP op; /* add or remove this entry */
@@ -550,6 +511,8 @@
tNFC_NFCEE_DISCOVER_REVT nfcee_discover;
tNFC_NFCEE_INFO_REVT nfcee_info;
tNFC_NFCEE_MODE_SET_REVT mode_set;
+ tNFC_NFCEE_PL_CONTROL_REVT pl_control;
+ tNFC_NFCEE_STATUS_REVT nfcee_status;
tNFC_RF_FIELD_REVT rf_field;
tNFC_STATUS cfg_routing;
tNFC_GET_ROUTING_REVT get_routing;
@@ -772,30 +735,6 @@
tNFC_DEACTIVATE_DEVT deactivate;
} tNFC_DISCOVER;
-/* Min TR0 indicates to tag the min delay before responding after the end of
- * command */
-#define NFC_RF_PARAM_MIN_TR0_DEFAULT 0x00
-#define NFC_RF_PARAM_MIN_TR0_48X 0x01 /* 48 x 16/fc */
-#define NFC_RF_PARAM_MIN_TR0_16X 0x02 /* 16 x 16/fc */
-
-/* Min TR1 indicates to tag the min delay between subcarrier modulation and data
- * transmission */
-#define NFC_RF_PARAM_MIN_TR1_DEFAULT 0x00
-#define NFC_RF_PARAM_MIN_TR1_64X 0x01 /* 64 x 16/fc */
-#define NFC_RF_PARAM_MIN_TR1_16X 0x02 /* 16 x 16/fc */
-
-/* Min TR2 indicates to RW the min delay between EoS of tag and SoS of RW */
-#define NFC_RF_PARAM_MIN_TR2_1792 0x00 /* 1792/fc (10etu + 32/fc) */
-#define NFC_RF_PARAM_MIN_TR2_3328 0x01 /* 3328/fc (10etu + 128/fc) */
-#define NFC_RF_PARAM_MIN_TR2_5376 0x02 /* 5376/fc (10etu + 256/fc) */
-#define NFC_RF_PARAM_MIN_TR2_9472 0x03 /* 9472/fc (10etu + 512/fc) */
-
-#define NFC_RF_PARAM_EOS_REQUIRED 0x00 /* EoS required */
-#define NFC_RF_PARAM_EOS_NOT_REQUIRED 0x01 /* EoS not required */
-
-#define NFC_RF_PARAM_SOS_REQUIRED 0x00 /* SoS required */
-#define NFC_RF_PARAM_SOS_NOT_REQUIRED 0x01 /* SoS not required */
-
typedef struct {
bool include_rf_tech_mode; /* TRUE if including RF Tech and Mode update */
tNFC_RF_TECH_N_MODE rf_tech_n_mode; /* RF tech and mode */
@@ -817,12 +756,6 @@
typedef void(tNFC_DISCOVER_CBACK)(tNFC_DISCOVER_EVT event,
tNFC_DISCOVER* p_data);
-/* the events reported on tNFC_TEST_CBACK */
-enum {
- NFC_LOOPBACK_TEVT = NFC_FIRST_TEVT, /* 0 Loopback test */
- NFC_RF_CONTROL_TEVT, /* 1 RF control Test response */
- NFC_RF_FIELD_DONE_TEVT /* 1 RF control Test notificatn*/
-};
typedef uint16_t tNFC_TEST_EVT;
/* the data type associated with NFC_LOOPBACK_TEVT */
@@ -863,18 +796,12 @@
#define NFC_ILLEGAL_CONN_ID 0xFF
/* the static connection ID for RF traffic */
#define NFC_RF_CONN_ID 0
-
-/*************************************
-** Status callback function
-**************************************/
-typedef void(tNFC_STATUS_CBACK)(tNFC_STATUS status);
+/* the static connection ID for HCI transport */
+#define NFC_HCI_CONN_ID 1
/*****************************************************************************
** EXTERNAL FUNCTION DECLARATIONS
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
/*******************************************************************************
**
@@ -1330,18 +1257,6 @@
/*******************************************************************************
**
-** Function NFC_SetTraceLevel
-**
-** Description This function sets the trace level for NFC. If called with
-** a value of 0xFF, it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-extern uint8_t NFC_SetTraceLevel(uint8_t new_level);
-
-/*******************************************************************************
-**
** Function NFC_ISODEPNakPresCheck
**
** Description This function is called to send the ISO DEP nak presence
@@ -1366,7 +1281,45 @@
extern tNFC_FW_VERSION nfc_ncif_getFWVersion();
#endif
-#if (BT_TRACE_VERBOSE == TRUE)
+/*******************************************************************************
+**
+** Function NFC_NfceePLConfig
+**
+** Description This function is called to set the Power and Link Control
+** to an NFCEE connected to the NFCC.
+** The response from NFCC is reported by tNFC_RESPONSE_CBACK
+** as NFC_NFCEE_PL_CONTROL_REVT.
+**
+** Parameters nfcee_id - the NFCEE to activate or de-activate.
+** pl_config -
+** NFCEE_PL_CONFIG_NFCC_DECIDES -NFCC decides (default)
+** NFCEE_PL_CONFIG_PWR_ALWAYS_ON -NFCEE power supply always on
+** NFCEE_PL_CONFIG_LNK_ON_WHEN_PWR_ON -
+** communication link is always active
+** when NFCEE is powered on
+** NFCEE_PL_CONFIG_PWR_LNK_ALWAYS_ON -
+** power supply and communication
+** link are always on
+** Returns tNFC_STATUS
+**
+*******************************************************************************/
+extern tNFC_STATUS NFC_NfceePLConfig(uint8_t nfcee_id,
+ tNCI_NFCEE_PL_CONFIG pl_config);
+
+/*******************************************************************************
+**
+** Function NFC_SetStaticHciCback
+**
+** Description This function to update the data callback function
+** to receive the data for the static Hci connection id.
+**
+** Parameters p_cback - the connection callback function
+**
+** Returns Nothing
+**
+*******************************************************************************/
+extern void NFC_SetStaticHciCback(tNFC_CONN_CBACK* p_cback);
+
/*******************************************************************************
**
** Function NFC_GetStatusName
@@ -1378,11 +1331,6 @@
** Returns pointer to the name
**
*******************************************************************************/
-extern char* NFC_GetStatusName(tNFC_STATUS status);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
+extern std::string NFC_GetStatusName(tNFC_STATUS status);
#endif /* NFC_API_H */
diff --git a/src/nfc/int/nfc_int.h b/src/nfc/include/nfc_int.h
similarity index 90%
rename from src/nfc/int/nfc_int.h
rename to src/nfc/include/nfc_int.h
index c3fb85c..71b8564 100644
--- a/src/nfc/int/nfc_int.h
+++ b/src/nfc/include/nfc_int.h
@@ -31,10 +31,6 @@
#include "nfc_api.h"
#include "nfc_target.h"
-#ifdef __cplusplus
-extern "C" {
-#endif
-
/****************************************************************************
** Internal NFC constants and definitions
****************************************************************************/
@@ -50,6 +46,7 @@
#define NFC_TTYPE_NCI_WAIT_RSP 0
#define NFC_TTYPE_WAIT_2_DEACTIVATE 1
#define NFC_WAIT_RSP_RAW_VS 0x02
+#define NFC_TTYPE_WAIT_MODE_SET_NTF 2
#define NFC_TTYPE_LLCP_LINK_MANAGER 100
#define NFC_TTYPE_LLCP_LINK_INACT 101
@@ -65,8 +62,8 @@
#define NFC_TTYPE_P2P_PRIO_RESPONSE 110
/* added for p2p prio logic clenaup */
#define NFC_TTYPE_P2P_PRIO_LOGIC_CLEANUP 111
-#define NFC_TTYPE_VS_BASE 200
-
+/* time out for mode set notification */
+#define NFC_MODE_SET_NTF_TIMEOUT 2
/* NFC Task event messages */
enum {
@@ -105,13 +102,13 @@
#define NFC_FL_DISCOVER_PENDING 0x0040
/* NFC_FL_CONTROL_REQUESTED on HAL request */
#define NFC_FL_HAL_REQUESTED 0x0080
+/* Waiting for NFCEE Mode Set NTF */
+#define NFC_FL_WAIT_MODE_SET_NTF 0x0100
#define NFC_PEND_CONN_ID 0xFE
-#define NFC_CONN_ID_INT_MASK 0xF0
#define NFC_CONN_ID_ID_MASK NCI_CID_MASK
/* set num_buff to this for no flow control */
#define NFC_CONN_NO_FC 0xFF
-#define NFC_NCI_CONN_NO_FC 0xFF
#if (NFC_RW_ONLY == FALSE)
/* only allow the entries that the NFCC can support */
@@ -125,15 +122,15 @@
typedef struct {
tNFC_CONN_CBACK* p_cback; /* the callback function to receive the data */
- BUFFER_Q tx_q; /* transmit queue */
- BUFFER_Q rx_q; /* receive queue */
- uint8_t id; /* NFCEE ID or RF Discovery ID or NFC_TEST_ID */
- uint8_t act_protocol; /* the active protocol on this logical connection */
+ BUFFER_Q tx_q; /* transmit queue */
+ BUFFER_Q rx_q; /* receive queue */
+ uint8_t id; /* NFCEE ID or RF Discovery ID or NFC_TEST_ID */
+ uint8_t act_protocol; /* the active protocol on this logical connection */
uint8_t act_interface; /* the active interface on this logical connection */
- uint8_t conn_id; /* the connection id assigned by NFCC for this conn */
- uint8_t buff_size; /* the max buffer size for this connection. . */
- uint8_t num_buff; /* num of buffers left to send on this connection */
- uint8_t init_credits; /* initial num of buffer credits */
+ uint8_t conn_id; /* the connection id assigned by NFCC for this conn */
+ uint8_t buff_size; /* the max buffer size for this connection. . */
+ uint8_t num_buff; /* num of buffers left to send on this connection */
+ uint8_t init_credits; /* initial num of buffer credits */
} tNFC_CONN_CB;
/* This data type is for NFC task to send a NCI VS command to NCIT task */
@@ -152,8 +149,6 @@
/* callback function pointer(8; use 8 to be safe + NFC_SAVED_CMD_SIZE(2) */
#define NFC_RECEIVE_MSGS_OFFSET (10)
-/* NFCC power state change pending callback */
-typedef void(tNFC_PWR_ST_CBACK)(void);
#define NFC_SAVED_HDR_SIZE (2)
/* data Reassembly error (in NFC_HDR.layer_specific) */
#define NFC_RAS_TOO_BIG 0x08
@@ -196,12 +191,11 @@
/* NFC_TASK timer management */
TIMER_LIST_Q timer_queue; /* 1-sec timer event queue */
TIMER_LIST_Q quick_timer_queue;
-
- TIMER_LIST_ENT deactivate_timer; /* Timer to wait for deactivation */
+ TIMER_LIST_ENT mode_set_ntf_timer; /* Timer to wait for deactivation */
+ TIMER_LIST_ENT deactivate_timer; /* Timer to wait for deactivation */
tNFC_STATE nfc_state;
bool reassembly; /* Reassemble fragmented data pkt */
- uint8_t trace_level;
uint8_t last_hdr[NFC_SAVED_HDR_SIZE]; /* part of last NCI command header */
uint8_t last_cmd[NFC_SAVED_CMD_SIZE]; /* part of last NCI command payload */
void* p_vsc_cback; /* the callback function for last VSC command */
@@ -220,6 +214,8 @@
uint8_t nci_version; /* NCI version used for NCI communication*/
+ bool isScbrSupported; /* indicating if system code based route is supported */
+
uint8_t hci_packet_size; /* maximum hci payload size*/
uint8_t hci_conn_credits; /* maximum conn credits for static HCI*/
@@ -229,6 +225,8 @@
uint8_t rawVsCbflag;
uint8_t deact_reason;
+ TIMER_LIST_ENT nci_mode_set_ntf_timer; /*Mode set notification timer*/
+
} tNFC_CB;
/*****************************************************************************
@@ -243,11 +241,9 @@
****************************************************************************/
#define NCI_CALCULATE_ACK(a, v) \
- { a &= ((1 << v) - 1); }
+ { (a) &= ((1 << (v)) - 1); }
#define MAX_NUM_VALID_BITS_FOR_ACK 0x07
-extern void nfc_init(void);
-
/* from nfc_utils.c */
extern tNFC_CONN_CB* nfc_alloc_conn_cb(tNFC_CONN_CBACK* p_cback);
extern tNFC_CONN_CB* nfc_find_conn_cb_by_conn_id(uint8_t conn_id);
@@ -257,10 +253,10 @@
extern void nfc_reset_all_conn_cbs(void);
extern void nfc_data_event(tNFC_CONN_CB* p_cb);
-void nfc_ncif_send(NFC_HDR* p_buf, bool is_cmd);
extern uint8_t nfc_ncif_send_data(tNFC_CONN_CB* p_cb, NFC_HDR* p_data);
extern void nfc_ncif_cmd_timeout(void);
extern void nfc_wait_2_deactivate_timeout(void);
+extern void nfc_mode_set_ntf_timeout(void);
extern bool nfc_ncif_process_event(NFC_HDR* p_msg);
extern void nfc_ncif_check_cmd_queue(NFC_HDR* p_buf);
@@ -302,7 +298,7 @@
#endif
/* From nfc_task.c */
-extern uint32_t nfc_task(uint32_t param);
+extern uint32_t nfc_task(uint32_t);
void nfc_task_shutdown_nfcc(void);
/* From nfc_main.c */
@@ -321,9 +317,4 @@
uint32_t timeout);
void nfc_stop_quick_timer(TIMER_LIST_ENT* p_tle);
void nfc_process_quick_timer_evt(void);
-
-#ifdef __cplusplus
-}
-#endif
-
#endif /* NFC_INT_H_ */
diff --git a/src/nfc/int/nfc_vs.h b/src/nfc/include/nfc_vs.h
similarity index 71%
rename from src/nfc/int/nfc_vs.h
rename to src/nfc/include/nfc_vs.h
index adc2f25..8cedbdd 100644
--- a/src/nfc/int/nfc_vs.h
+++ b/src/nfc/include/nfc_vs.h
@@ -25,17 +25,4 @@
#ifndef NFC_VS_H_
#define NFC_VS_H_
-// DTA API for MW Version need to change according to release
-#define NXP_EN_PN547C2 0
-#define NXP_EN_PN65T 0
-#define NXP_EN_PN548C2 0
-#define NXP_EN_PN66T 0
-#define NXP_EN_PN551 0
-#define NXP_EN_PN67T 0
-#define NXP_EN_PN553 1
-#define NXP_EN_PN80T 1
-#define NXP_ANDROID_VER (7U) /* NXP android version */
-#define NFC_NXP_MW_VERSION_MAJ (4U) /* MW Major Version */
-#define NFC_NXP_MW_VERSION_MIN (9U) /* MW Minor Version */
-
#endif /* NFC_VS_H_ */
diff --git a/src/nfc/include/rw_api.h b/src/nfc/include/rw_api.h
index c8bb55b..edf7e83 100644
--- a/src/nfc/include/rw_api.h
+++ b/src/nfc/include/rw_api.h
@@ -25,10 +25,11 @@
#ifndef RW_API_H
#define RW_API_H
+#include "nfc_api.h"
#include "tags_defs.h"
-#define RW_T1T_BLD_ADD(a, k, y) a = ((k & 0xF) << 3) | (y & 0x7);
-#define RW_T1T_BLD_ADDS(a, s) a = ((s & 0xF) << 4);
+#define RW_T1T_BLD_ADD(a, k, y) (a) = (((k) & 0xF) << 3) | ((y) & 0x7);
+#define RW_T1T_BLD_ADDS(a, s) (a) = (((s) & 0xF) << 4);
#define RW_T1T_FIRST_EVT 0x20
#define RW_T2T_FIRST_EVT 0x40
@@ -148,17 +149,8 @@
typedef uint8_t tRW_NDEF_FLAG;
/* options for RW_T4tPresenceCheck */
-#define RW_T4T_CHK_READ_BINARY_CH0 0
-#define RW_T4T_CHK_READ_BINARY_CH1 1
-#define RW_T4T_CHK_READ_BINARY_CH2 2
-#define RW_T4T_CHK_READ_BINARY_CH3 3
-#define RW_T4T_CHK_EMPTY_I_BLOCK 4
+#define RW_T4T_CHK_EMPTY_I_BLOCK 1
#define RW_T4T_CHK_ISO_DEP_NAK_PRES_CHK 5
-typedef struct {
- tNFC_STATUS status;
- uint8_t hr[T1T_HR_LEN];
- uint8_t uid[T1T_CMD_UID_LEN];
-} tRW_T1T_RID_EVT;
typedef struct {
tNFC_STATUS status;
@@ -1077,7 +1069,7 @@
** NFC_STATUS_FAILED if other error
**
*******************************************************************************/
-extern tNFC_STATUS RW_I93WriteMultipleBlocks(uint8_t first_block_number,
+extern tNFC_STATUS RW_I93WriteMultipleBlocks(uint16_t first_block_number,
uint16_t number_blocks,
uint8_t* p_data);
@@ -1339,18 +1331,4 @@
*******************************************************************************/
extern tNFC_STATUS RW_SetActivatedTagType(tNFC_ACTIVATE_DEVT* p_activate_params,
tRW_CBACK* p_cback);
-
-/*******************************************************************************
-**
-** Function RW_SetTraceLevel
-**
-** Description This function sets the trace level for Reader/Writer mode.
-** If called with a value of 0xFF,
-** it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-extern uint8_t RW_SetTraceLevel(uint8_t new_level);
-
#endif /* RW_API_H */
diff --git a/src/nfc/int/rw_int.h b/src/nfc/include/rw_int.h
similarity index 97%
rename from src/nfc/int/rw_int.h
rename to src/nfc/include/rw_int.h
index 38958b2..b6e1dc5 100644
--- a/src/nfc/int/rw_int.h
+++ b/src/nfc/include/rw_int.h
@@ -31,14 +31,6 @@
#include "tags_int.h"
/* Proprietary definitions for HR0 and HR1 */
-/* HI NIB Tag */
-#define RW_T1T_HR0_HI_NIB 0xF0
-/* Jewel 64 Tag */
-#define RW_T1T_IS_JEWEL64 0x20
-/* Jewel Tag */
-#define RW_T1T_IS_JEWEL 0x00
-/* TOPAZ Tag */
-#define RW_T1T_IS_TOPAZ 0x10
/* TOPAZ96 Tag */
#define RW_T1T_IS_TOPAZ96 0x11
/* TOPAZ512 Tag */
@@ -257,11 +249,6 @@
#define T2T_NDEF_DETECTED 0x01
#define T2T_NDEF_READ 0x02
-/* Max offset of an NDEF message in a T2 tag */
-#define T2T_MAX_NDEF_OFFSET 128
-#define T2T_MAX_RESERVED_BYTES_IN_TAG 0x64
-#define T2T_MAX_LOCK_BYTES_IN_TAG 0x64
-
/* Maximum supported Memory control TLVS in the tag */
#define RW_T2T_MAX_MEM_TLVS 0x05
/* Maximum supported Lock control TLVS in the tag */
@@ -632,6 +619,8 @@
#define RW_I93_FLAG_RESET_AFI 0x08
/* use 2 bytes for number of blocks */
#define RW_I93_FLAG_16BIT_NUM_BLOCK 0x10
+/* use extended commands */
+#define RW_I93_FLAG_EXT_COMMANDS 0x20
/* searching for type */
#define RW_I93_TLV_DETECT_STATE_TYPE 0x01
@@ -660,6 +649,8 @@
RW_I93_STM_M24LR04E_R, /* STM M24LR04E-R */
RW_I93_STM_M24LR16E_R, /* STM M24LR16E-R */
RW_I93_STM_M24LR64E_R, /* STM M24LR64E-R */
+ RW_I93_STM_ST25DV04K, /* STM ST25DV04K */
+ RW_I93_STM_ST25DVHIK, /* STM ST25DV 16K OR 64K */
RW_I93_UNKNOWN_PRODUCT /* Unknwon product version */
};
@@ -713,17 +704,12 @@
#if (RW_STATS_INCLUDED == TRUE)
tRW_STATS stats;
#endif /* RW_STATS_INCLUDED */
- uint8_t trace_level;
} tRW_CB;
/*****************************************************************************
** EXTERNAL FUNCTION DECLARATIONS
*****************************************************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
/* Global NFC data */
extern tRW_CB rw_cb;
@@ -760,7 +746,7 @@
extern tNFC_STATUS rw_t2t_sector_change(uint8_t sector);
extern tNFC_STATUS rw_t2t_read(uint16_t block);
extern tNFC_STATUS rw_t2t_write(uint16_t block, uint8_t* p_write_data);
-extern void rw_t2t_process_timeout(TIMER_LIST_ENT* p_tle);
+extern void rw_t2t_process_timeout();
extern tNFC_STATUS rw_t2t_select(void);
void rw_t2t_handle_op_complete(void);
@@ -788,8 +774,4 @@
void rw_main_log_stats(void);
#endif /* RW_STATS_INCLUDED */
-#ifdef __cplusplus
-}
-#endif
-
#endif /* RW_INT_H_ */
diff --git a/src/nfc/include/tags_defs.h b/src/nfc/include/tags_defs.h
index 6ac16ed..d7adc60 100644
--- a/src/nfc/include/tags_defs.h
+++ b/src/nfc/include/tags_defs.h
@@ -81,27 +81,17 @@
/* HRO value to indicate static Tag */
#define T1T_STATIC_HR0 0x11
/* 0x1y, as long as (y!=1) */
-#define T1T_DYNAMIC_HR0 0x12
/* HR0 value is 0x1y, indicates NDEF supported */
#define T1T_NDEF_SUPPORTED 0x10
-/* should be ignored */
-#define T1T_HR1 0x00
/* UID block */
#define T1T_UID_BLOCK 0x00
/* Reserved block */
#define T1T_RES_BLOCK 0x0D
/* Static lock block */
#define T1T_LOCK_BLOCK 0x0E
-/* Manufacturer ID offset */
-#define T1T_MID_OFFSET 0x06
-/* Reserved bytes offset */
-#define T1T_STATIC_RES_OFFSET 0x68
/* Static lock offset */
#define T1T_LOCK_0_OFFSET 0x70
-/* Static lock offset */
-#define T1T_LOCK_1_OFFSET 0x71
/* Block F - typically used for dynamic locks */
-#define T1T_DYNAMIC_LOCK_OFFSET 0x78
#define T1T_DYNAMIC_LOCK_BYTES 0x08
/* the len of reserved byte in T1T block 0 */
@@ -115,10 +105,6 @@
/* CC offset */
/* Offset for NDEF magic number in CC */
#define T1T_CC_NMN_OFFSET 0x00
-/* Offset for Version number in CC */
-#define T1T_CC_VNO_OFFSET 0x01
-/* Offset for Tag memory size in CC */
-#define T1T_CC_TMS_OFFSET 0x02
/* Offset for Read/Write access in CC */
#define T1T_CC_RWA_OFFSET 0x03
/* NDEF Magic Number byte number */
@@ -135,26 +121,11 @@
#define T1T_CC_LEGACY_VNO 0x10
/* Version Number */
#define T1T_CC_VNO 0x11
-/* TMS static memory - (8 * (n+1)). */
-#define T1T_CC_TMS_STATIC 0x0E
/* RWA - Read/write allowed */
#define T1T_CC_RWA_RW 0x00
/* RWA - Read only */
#define T1T_CC_RWA_RO 0x0F
-/* May be used for padding. SHALL ignore this */
-#define T1T_TAG_NULL 0
-/* Defines details of the lock bytes */
-#define T1T_TAG_LOCK_CTRL 1
-/* Identifies reserved memory areas */
-#define T1T_TAG_MEM_CTRL 2
-/* Contains the NDEF message */
-#define T1T_TAG_NDEF 3
-/* Tag proprietary information */
-#define T1T_TAG_PROPRIETARY 0xFD
-/* Last TLV block in the data area */
-#define T1T_TAG_TERMINATOR 0xFE
-
/* Tlv len for LOCK_CTRL/MEM TLV per spec */
#define T1T_DEFAULT_TLV_LEN 3
/* Tlv type identifier len */
@@ -177,7 +148,6 @@
/* Byte 0 in Length field to indicate LNDEF*/
#define T1T_LONG_NDEF_LEN_FIELD_BYTE0 0xFF
/* Min. len of NDEF to qualify as LNDEF */
-#define T1T_LONG_NDEF_MIN_LEN 0x00FF
/* Type 1 Tag Commands (7 bits) */
/* read id */
@@ -204,43 +174,27 @@
/* Number of static lock bytes in tag */
#define T1T_NUM_STATIC_LOCK_BYTES 2
/* Bytes locked by one static lock bit */
-#define T1T_BYTES_LOCKED_BY_STATIC_LOCK_BIT 4
/* Type 2 Tag related definitions */
-#define T2T_STATIC_MEM_STR 0
-#define T2T_DYNAMIC_MEM_STR 1
#define T2T_STATIC_SIZE 64
-#define T2T_STATIC_BLOCKS 16 /* block 0 to Block 15 */
#define T2T_BLOCK_SIZE 4
-#define T2T_HEADER_BLOCKS 4
#define T2T_HEADER_SIZE 16
#define T2T_SECTOR_SIZE 1024
#define T2T_BLOCKS_PER_SECTOR 0x100
#define T2T_UID_LEN 4 /* the len of UID used in T2T tag */
-#define T2T_BLOCK0_UID_LEN 3 /* the len of UID in Block 0 of T2T tag */
-#define T2T_BCC0_LEN 1 /* the len of BCC0 of T2T tag */
-#define T2T_BLOCK1_UID_LEN 4 /* the len of UID in Block 1 of T2T tag */
-#define T2T_BCC1_LEN 1 /* the len of BCC0 of T2T tag */
/* the len of Serial number used in T2T tag */
-#define T2T_SNO_LEN 4
#define T2T_INTERNAL_BYTES_LEN 2 /* the len of internal used in T2T tag */
-/* the len of static lock used in T2T tag */
-#define T2T_STATIC_LOCK_LEN 2
/* Static Lock Bytes */
#define T2T_STATIC_LOCK0 0x0A /* Static Lock 0 offset */
#define T2T_STATIC_LOCK1 0x0B /* Static Lock 1 offset */
-/* the len of CC used in T2T tag */
-#define T2T_CC_LEN 4
-
/* Capability Container definitions */
#define T2T_CC_BLOCK 0x03 /* Capability container block */
#define T2T_CC0_NMN_BYTE 0x0C /* NDEF Magic Number byte number */
#define T2T_CC1_VNO_BYTE 0x0D /* Version Number byte number*/
#define T2T_CC2_TMS_BYTE 0x0E /* Tag Memory Size byte number */
#define T2T_CC3_RWA_BYTE 0x0F /* Read Write Access byte number */
-#define T2T_DATA_MEM 0x10 /* Data Memory */
#define T2T_CC0_NMN 0xE1 /* NDEF Magic Number */
#define T2T_CC1_VNO 0x11 /* Version Number */
@@ -260,15 +214,8 @@
#define T2T_CMD_WRITE 0xA2 /* write 1 block (4 bytes) */
#define T2T_CMD_SEC_SEL 0xC2 /* Sector select */
#define T2T_RSP_ACK 0xA
-#define T2T_RSP_NACK5 0x5
-#define T2T_RSP_NACK1 0x1 /* Nack can be either 1 */
#define T2T_STATUS_OK_1_BIT 0x11
-#define T2T_STATUS_OK_2_BIT 0x12
-#define T2T_STATUS_OK_3_BIT 0x13
-#define T2T_STATUS_OK_4_BIT 0x14
-#define T2T_STATUS_OK_5_BIT 0x15
-#define T2T_STATUS_OK_6_BIT 0x16
#define T2T_STATUS_OK_7_BIT 0x17
#define T2T_FIRST_DATA_BLOCK 4
@@ -279,16 +226,10 @@
/* Type 2 TLV definitions */
/* May be used for padding. SHALL ignore this */
-#define T2T_TLV_TYPE_NULL 0
#define T2T_TLV_TYPE_LOCK_CTRL 1 /* Defines details of the lock bytes */
-#define T2T_TLV_TYPE_MEM_CTRL 2 /* Identifies reserved memory areas */
-#define T2T_TLV_TYPE_NDEF 3 /* Contains the NDEF message */
-#define T2T_TLV_TYPE_PROPRIETARY 0xFD /* Tag proprietary information */
-#define T2T_TLV_TYPE_TERMINATOR 0xFE /* Last TLV block in the data area */
/* Tag len for LOCK_CTRL TLV per spec */
#define T2T_TLEN_LOCK_CTRL_TLV 3
-#define T2T_TLEN_MEM_CTRL_TLV 3 /* Tag len for MEM_CTRL TLV per spec */
/* Maximum number of sectors supported */
#if (APPL_DTA_MODE == TRUE)
@@ -299,8 +240,6 @@
/* Tlv type identifier len */
#define T2T_TLV_TYPE_LEN 1
-/* Tlv len for LOCK_CTRL/MEM TLV per spec */
-#define T2T_DEFAULT_TLV_LEN 3
/* Length Field size of short NDEF Message */
#define T2T_SHORT_NDEF_LEN_FIELD_LEN 1
/* Length Field size of Long NDEF Message */
@@ -313,11 +252,7 @@
/* Lock */
/* Number of static lock bytes in tag */
#define T2T_NUM_STATIC_LOCK_BYTES 2
-/* Bytes locked by one static lock bit */
-#define T2T_BYTES_LOCKED_BY_STATIC_LOCK_BIT 4
-#define T2T_CC2_TMS_MUL 0x06
-#define T2T_CC2_TMS_MULC 0x12
/*
**
** Type 3 Tag Definitions
@@ -339,10 +274,7 @@
} tT3T_BLOCK_DESC;
/* Poll RC (request code) definitions */
-#define T3T_POLL_RC_NONE 0 /* No RD requested in SENSF_RES */
#define T3T_POLL_RC_SC 1 /* System code requested in SENSF_RES */
-/* Avanced protocol features requested in SENSF_RES */
-#define T3T_POLL_RC_COMM 2
typedef uint8_t tT3T_POLL_RC;
/* Definitions for constructing t3t command messages */
@@ -357,7 +289,6 @@
#define T3T_MSG_OPC_POLL_CMD 0x00
#define T3T_MSG_OPC_POLL_RSP 0x01
#define T3T_MSG_OPC_REQ_SERVICE_CMD 0x02
-#define T3T_MSG_OPC_REQ_SERVICE_RSP 0x03
#define T3T_MSG_OPC_REQ_RESPONSE_CMD 0x04
#define T3T_MSG_OPC_REQ_RESPONSE_RSP 0x05
#define T3T_MSG_OPC_REQ_SYSTEMCODE_CMD 0x0C
@@ -375,22 +306,12 @@
/* Size of NDEF attribute info block (minus checksum) */
#define T3T_MSG_NDEF_ATTR_INFO_SIZE 14
-/* offset of Manufacturer ID in UPDATE/CHECK messages */
-#define T3T_MSG_OFFSET_IDM 1
-/* offset of Number of Services parameter in UPDATE/CHECK messages */
-#define T3T_MSG_OFFSET_NUM_SERVICES 9
-/* offset of Service Code List parameter in UPDATE/CHECK messages */
-#define T3T_MSG_OFFSET_SERVICE_CODE_LIST 10
/* len flag for Block List Element */
#define T3T_MSG_MASK_TWO_BYTE_BLOCK_DESC_FORMAT 0x80
/* service code list mask */
#define T3T_MSG_SERVICE_LIST_MASK 0x0F
#define T3T_MSG_SERVICE_LIST_MAX 16
-/* Max Number of Services per UPDATE command */
-#define T3T_MSG_NUM_SERVICES_UPDATE_MAX 12
-/* Max Number of Services per CHECK command */
-#define T3T_MSG_NUM_SERVICES_CHECK_MAX 15
/* Max Number of Blocks per UPDATE command */
#define T3T_MSG_NUM_BLOCKS_UPDATE_MAX 13
/* Max Number of Blocks per CHECK command */
@@ -406,8 +327,6 @@
/* Common header definition for T3t responses */
/* Common header: rspcode + NFCID2 + StatusFlag1 + StatusFlag2 */
#define T3T_MSG_RSP_COMMON_HDR_LEN 11
-/* Common header + NumBlocks */
-#define T3T_MSG_RSP_CHECK_HDR_LEN (T3T_MSG_RSP_COMMON_HDR_LEN + 1)
/* Offset for Response code */
#define T3T_MSG_RSP_OFFSET_RSPCODE 0
/* Offset for Manufacturer ID */
@@ -418,22 +337,13 @@
#define T3T_MSG_RSP_OFFSET_NUMBLOCKS 11
/* Offset for Block Data (in CHECK response) */
#define T3T_MSG_RSP_OFFSET_CHECK_DATA 12
-/* Offset for PMm (in POLL response) */
-#define T3T_MSG_RSP_OFFSET_POLL_PMM 9
-/* Offset for RD (in POLL response) */
-#define T3T_MSG_RSP_OFFSET_POLL_RD 17
-/* Offset for Number of Systems */
-#define T3T_MSG_RSP_OFFSET_NUMSYS 9
#define T3T_MSG_RSP_STATUS_OK 0x00
#define T3T_MSG_RSP_STATUS_ERROR 0x01
#define T3T_MSG_RSP_STATUS2_ERROR_MEMORY 0x70
-#define T3T_MSG_RSP_STATUS2_ERROR_EXCESSIVE_WRITES 0x71
#define T3T_MSG_RSP_STATUS2_ERROR_PROCESSING 0xFF
-/* Maximum payload lenght for NFC-F messages (including SoD) */
-#define T3T_NFC_F_MAX_PAYLOAD_LEN 0xFE
/* Felica Lite defintions */
/* Block ID for MC (memory configuration) */
@@ -442,9 +352,6 @@
/* Memory Configuration Block offset: MC_SP (Memory Configuration for scratch
* pad) */
#define T3T_MSG_FELICALITE_MC_OFFSET_MC_SP 0x00
-/* Memory Configuration Block offset: MC_ALL (Memory Configuration for system
- * block) */
-#define T3T_MSG_FELICALITE_MC_OFFSET_MC_ALL 0x02
/* Memory Configuration Block offset: SYS_OP (System Option) */
#define T3T_MSG_FELICALITE_MC_OFFSET_SYS_OP 0x03
/* Memory Configuration Block offset: RF_PRM (Memory Configuration for RF
@@ -463,7 +370,6 @@
#define T4T_VERSION_1_0 0x10 /* version 1.0 */
#define T4T_MY_VERSION T4T_VERSION_2_0
#define T4T_GET_MAJOR_VERSION(x) ((x) >> 4)
-#define T4T_GET_MINOR_VERSION(x) ((x)&0x0F)
#define T4T_CMD_CLASS 0x00
#define T4T_CMD_INS_SELECT 0xA4
@@ -513,8 +419,6 @@
#define T4T_FC_WRITE_ACCESS_OFFSET_IN_TLV 0x07
#define T4T_NDEF_FILE_CONTROL_TYPE 0x04 /* NDEF File Control Type */
-/* Proprietary File Control Type */
-#define T4T_PROP_FILE_CONTROL_TYPE 0x05
/* size of T(1),L(1),V(6) for file control */
#define T4T_FILE_CONTROL_TLV_SIZE 0x08
@@ -548,104 +452,48 @@
**
*/
-/* Request flags 1 to 4 definition */
-#define I93_FLAG_SUB_CARRIER_MASK 0x01 /* Sub_carrier_flag */
/* A single sub-carrier frequency shall be used by VICC */
#define I93_FLAG_SUB_CARRIER_SINGLE 0x00
-/* Two sub-carriers shall be used by VICC */
-#define I93_FLAG_SUB_CARRIER_DOUBLE 0x01
-#define I93_FLAG_DATA_RATE_MASK 0x02 /* Data_rate_flag */
-/* Low data rate shall be used */
-#define I93_FLAG_DATA_RATE_LOW 0x00
/* High data rate shall be used */
#define I93_FLAG_DATA_RATE_HIGH 0x02
-#define I93_FLAG_INVENTORY_MASK 0x04 /* Inventory_flag */
-/* Flags 5 to 8 meaning is according to table 4 */
-#define I93_FLAG_INVENTORY_UNSET 0x00
/* Flags 5 to 8 meaning is according to table 5 */
#define I93_FLAG_INVENTORY_SET 0x04
-/* Protocol_Extension_flag */
-#define I93_FLAG_PROT_EXT_MASK 0x08
/* No protocol format extension */
#define I93_FLAG_PROT_EXT_NO 0x00
/* Protocol format is extended. Reserved for future use */
#define I93_FLAG_PROT_EXT_YES 0x08
-/* Request flags 5 to 6 definition when inventory flag is not set */
-#define I93_FLAG_SELECT_MASK 0x10 /* Select_flag */
-/* Request shall be executed by any VICC according to the setting of
- * Address_flag */
-#define I93_FLAG_SELECT_UNSET 0x00
-/* Request shall be executed only by VICC in selected state */
-#define I93_FLAG_SELECT_SET 0x10
-/* The Address_flag shall be set to 0 and the UID field shall bot be included in
- * the request */
-
-#define I93_FLAG_ADDRESS_MASK 0x20 /* Address_flag */
-/* Request is not addressed. UID field is not included. It shall be executed by
- * any VICC */
-#define I93_FLAG_ADDRESS_UNSET 0x00
/* Request is addressed. UID field is included. It shall be executed only by
* VICC */
#define I93_FLAG_ADDRESS_SET 0x20
/* whose UID matches the UID specified in the request */
-/* Request flags 5 to 6 definition when inventory flag is set */
-#define I93_FLAG_AFI_MASK 0x10 /* AFI_flag */
-/* AFI field is not present */
-#define I93_FLAG_AFI_NOT_PRESENT 0x00
/* AFI field is present */
#define I93_FLAG_AFI_PRESENT 0x10
-#define I93_FLAG_SLOT_MASK 0x20 /* Nb_slots_flag */
-#define I93_FLAG_SLOT_16 0x00 /* 16 slots */
#define I93_FLAG_SLOT_ONE 0x20 /* 1 slot */
-/* Request flags 6 to 8 definition when inventory flag is set or not set */
-
-#define I93_FLAG_OPTION_MASK 0x40 /* Option_flag */
-/* Meaning is defined by the command description. */
-#define I93_FLAG_OPTION_UNSET 0x00
/* It shall be set to 0 if not otherwise defined by command */
/* Meaning is defined by the command description. */
#define I93_FLAG_OPTION_SET 0x40
-/* Response flags */
-#define I93_FLAG_ERROR_MASK 0x01 /* Error_flag */
-/* No error */
-#define I93_FLAG_ERORR_NOT_DETECTED 0x00
/* Error detected, Error code is in the "Error" field */
#define I93_FLAG_ERROR_DETECTED 0x01
/* Response error code */
-/* The command is not supported, i.e. the request code is not recognized */
-#define I93_ERROR_CODE_NOT_SUPPORTED 0x01
-/* The command is not recognized, for example: a format error occured */
-#define I93_ERROR_CODE_NOT_RECOGNIZED 0x02
/* The command option is not supported */
#define I93_ERROR_CODE_OPTION_NOT_SUPPORTED 0x03
-/* Error with no information given or a specific error code is not supported */
-#define I93_ERROR_CODE_NO_INFO 0x0F
-/* The specific block is not available (doesn't exist) */
-#define I93_ERROR_CODE_BLOCK_NOT_AVAILABLE 0x10
-/* The specific block is already locked and thus cannot be locked again */
-#define I93_ERROR_CODE_BLOCK_ALREADY_LOCKED 0x11
-/* The specific block is locked and its content cannot be changed */
-#define I93_ERROR_CODE_BLOCK_LOCKED 0x12
/* The specific block is was not successfully programmed */
#define I93_ERROR_CODE_BLOCK_FAIL_TO_WRITE 0x13
/* The specific block is was not successfully locked */
-#define I93_ERROR_CODE_BLOCK_FAIL_TO_LOCK 0x14
/* UID length in bytes */
#define I93_UID_BYTE_LEN 8
/* Data Storage Format is not supported */
#define I93_DFS_UNSUPPORTED 0x00
-/* Block is not locked */
-#define I93_BLOCK_UNLOCKED 0x00
/* Block is locked */
#define I93_BLOCK_LOCKED 0x01
@@ -655,10 +503,15 @@
/* ISO 15693 Optional commands */
#define I93_CMD_READ_SINGLE_BLOCK 0x20 /* Read single block */
+#define I93_CMD_EXT_READ_SINGLE_BLOCK 0x30 /* Extended Read single block */
#define I93_CMD_WRITE_SINGLE_BLOCK 0x21 /* Write single block */
+#define I93_CMD_EXT_WRITE_SINGLE_BLOCK 0x31 /* Extended Write single block */
#define I93_CMD_LOCK_BLOCK 0x22 /* Lock block */
+#define I93_CMD_EXT_LOCK_BLOCK 0x32 /* Extended Lock block */
#define I93_CMD_READ_MULTI_BLOCK 0x23 /* Read multiple blocks */
+#define I93_CMD_EXT_READ_MULTI_BLOCK 0x33 /* Extended Read multiple blocks */
#define I93_CMD_WRITE_MULTI_BLOCK 0x24 /* Write multiple blocks */
+#define I93_CMD_EXT_WRITE_MULTI_BLOCK 0x34 /* Write multiple blocks */
#define I93_CMD_SELECT 0x25 /* Select */
#define I93_CMD_RESET_TO_READY 0x26 /* Reset to ready */
#define I93_CMD_WRITE_AFI 0x27 /* Wreite AFI */
@@ -667,8 +520,12 @@
#define I93_CMD_LOCK_DSFID 0x2A /* Lock DSFID */
/* Get system information */
#define I93_CMD_GET_SYS_INFO 0x2B
+/* Get extended system information */
+#define I93_CMD_EXT_GET_SYS_INFO 0x3B
/* Get multiple block security status */
#define I93_CMD_GET_MULTI_BLK_SEC 0x2C
+/* Get extended multiple block security status */
+#define I93_CMD_EXT_GET_MULTI_BLK_SEC 0x3C
/* Information flags definition */
/* DSFID is supported and DSFID field is present */
@@ -677,18 +534,19 @@
#define I93_INFO_FLAG_AFI 0x02
/* VICC memory size field is present */
#define I93_INFO_FLAG_MEM_SIZE 0x04
+/* 16bit num of blocks info length */
+#define I93_INFO_16BIT_NUM_BLOCK_LEN 0x02
/* IC reference field is present */
#define I93_INFO_FLAG_IC_REF 0x08
+/* Memory coded in 2 bytes address */
+#define I93_INFO_FLAG_MOI 0x10
/* Max block size in bytes */
#define I93_MAX_BLOCK_LENGH 32
-/* Max number of blocks */
-#define I93_MAX_NUM_BLOCK 256
/* ICODE Capability Container(CC) definition */
-#define I93_ICODE_CC_MAGIC_NUMER 0xE1 /* magic number in CC[0] */
-#define I93_ICODE_CC_MAJOR_VER_MASK 0xC0 /* major version in CC[1] */
-#define I93_ICODE_CC_MINOR_VER_MASK 0x30 /* minor version in CC[1] */
+#define I93_ICODE_CC_MAGIC_NUMER_E1 0xE1 /* magic number in CC[0] */
+#define I93_ICODE_CC_MAGIC_NUMER_E2 0xE2 /* magic number in CC[0] */
/* read access condition in CC[1] */
#define I93_ICODE_CC_READ_ACCESS_MASK 0x0C
/* read access granted without security */
@@ -776,6 +634,13 @@
/* IC Reference for M24LR64E-R: 01011110(b), blockSize: 4, numberBlocks: 0x800
*/
#define I93_IC_REF_STM_M24LR64E_R 0x5E
+/* IC Reference for ST25DV04K: 00100100(b), blockSize: 4, numberBlocks: 0x80
+ */
+#define I93_IC_REF_STM_ST25DV04K 0x24
+/* IC Reference for ST25DVHIK: 00100110(b), blockSize: 4, numberBlocks: 0x800
+ * or 0x200
+ */
+#define I93_IC_REF_STM_ST25DVHIK 0x26
#define I93_STM_BLOCKS_PER_SECTOR 32
#define I93_STM_MAX_BLOCKS_PER_READ 32
diff --git a/src/nfc/int/tags_int.h b/src/nfc/include/tags_int.h
similarity index 96%
rename from src/nfc/int/tags_int.h
rename to src/nfc/include/tags_int.h
index edaecdf..b7fc8d3 100644
--- a/src/nfc/int/tags_int.h
+++ b/src/nfc/include/tags_int.h
@@ -82,13 +82,8 @@
extern const tT2T_CMD_RSP_INFO* t2t_cmd_to_rsp_info(uint8_t opcode);
extern uint8_t t2t_info_to_evt(const tT2T_CMD_RSP_INFO* p_info);
-#if (BT_TRACE_PROTOCOL == TRUE)
extern const char* t1t_info_to_str(const tT1T_CMD_RSP_INFO* p_info);
extern const char* t2t_info_to_str(const tT2T_CMD_RSP_INFO* p_info);
-#else
-#define t1t_info_to_str(x) ""
-#define t2t_info_to_str(x) ""
-#endif
extern int tags_pow(int x, int y);
extern unsigned int tags_log2(register unsigned int x);
diff --git a/src/nfc/llcp/llcp_api.c b/src/nfc/llcp/llcp_api.cc
similarity index 82%
rename from src/nfc/llcp/llcp_api.c
rename to src/nfc/llcp/llcp_api.cc
index 9d87ec0..289af2a 100644
--- a/src/nfc/llcp/llcp_api.c
+++ b/src/nfc/llcp/llcp_api.cc
@@ -22,13 +22,16 @@
*
******************************************************************************/
-#include "llcp_api.h"
-#include <string.h>
-#include "bt_types.h"
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "gki.h"
-#include "llcp_defs.h"
+#include "llcp_api.h"
#include "llcp_int.h"
-#include "nfc_target.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
#if (LLCP_TEST_INCLUDED == TRUE) /* this is for LLCP testing */
@@ -47,8 +50,8 @@
**
*******************************************************************************/
void LLCP_SetTestParams(uint8_t version, uint16_t wks) {
- LLCP_TRACE_API2("LLCP_SetTestParams () version:0x%02X, wks:0x%04X", version,
- wks);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("version:0x%02X, wks:0x%04X", version, wks);
if (version != 0xFF) llcp_test_params.version = version;
@@ -67,7 +70,7 @@
**
*******************************************************************************/
void LLCP_RegisterDtaCback(tLLCP_DTA_CBACK* p_dta_cback) {
- LLCP_TRACE_API1("%s", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
llcp_cb.p_dta_cback = p_dta_cback;
}
@@ -95,25 +98,25 @@
uint16_t inact_timeout_target, uint16_t symm_delay,
uint16_t data_link_timeout,
uint16_t delay_first_pdu_timeout) {
- LLCP_TRACE_API4(
- "LLCP_SetConfig () link_miu:%d, opt:0x%02X, wt:%d, link_timeout:%d",
- link_miu, opt, wt, link_timeout);
- LLCP_TRACE_API4(
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("link_miu:%d, opt:0x%02X, wt:%d, link_timeout:%d",
+ link_miu, opt, wt, link_timeout);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
" inact_timeout (init:%d,target:%d), symm_delay:%d, "
"data_link_timeout:%d",
inact_timeout_init, inact_timeout_target, symm_delay, data_link_timeout);
- LLCP_TRACE_API1(" delay_first_pdu_timeout:%d",
- delay_first_pdu_timeout);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ " delay_first_pdu_timeout:%d", delay_first_pdu_timeout);
if (link_miu < LLCP_DEFAULT_MIU) {
- LLCP_TRACE_ERROR1(
- "LLCP_SetConfig (): link_miu shall not be smaller than "
+ LOG(ERROR) << StringPrintf(
+ "link_miu shall not be smaller than "
"LLCP_DEFAULT_MIU (%d)",
LLCP_DEFAULT_MIU);
link_miu = LLCP_DEFAULT_MIU;
} else if (link_miu > LLCP_MAX_MIU) {
- LLCP_TRACE_ERROR1(
- "LLCP_SetConfig (): link_miu shall not be bigger than LLCP_MAX_MIU "
+ LOG(ERROR) << StringPrintf(
+ "link_miu shall not be bigger than LLCP_MAX_MIU "
"(%d)",
LLCP_MAX_MIU);
link_miu = LLCP_MAX_MIU;
@@ -121,9 +124,8 @@
/* if Link MIU is bigger than GKI buffer */
if (link_miu > LLCP_MIU) {
- LLCP_TRACE_ERROR1(
- "LLCP_SetConfig (): link_miu shall not be bigger than LLCP_MIU (%d)",
- LLCP_MIU);
+ LOG(ERROR) << StringPrintf(
+ "link_miu shall not be bigger than LLCP_MIU (%zu)", LLCP_MIU);
llcp_cb.lcb.local_link_miu = LLCP_MIU;
} else
llcp_cb.lcb.local_link_miu = link_miu;
@@ -132,14 +134,14 @@
llcp_cb.lcb.local_wt = wt;
if (link_timeout < LLCP_LTO_UNIT) {
- LLCP_TRACE_ERROR1(
- "LLCP_SetConfig (): link_timeout shall not be smaller than "
+ LOG(ERROR) << StringPrintf(
+ "link_timeout shall not be smaller than "
"LLCP_LTO_UNIT (%d ms)",
LLCP_LTO_UNIT);
llcp_cb.lcb.local_lto = LLCP_DEFAULT_LTO_IN_MS;
} else if (link_timeout > LLCP_MAX_LTO_IN_MS) {
- LLCP_TRACE_ERROR1(
- "LLCP_SetConfig (): link_timeout shall not be bigger than "
+ LOG(ERROR) << StringPrintf(
+ "link_timeout shall not be bigger than "
"LLCP_MAX_LTO_IN_MS (%d ms)",
LLCP_MAX_LTO_IN_MS);
llcp_cb.lcb.local_lto = LLCP_MAX_LTO_IN_MS;
@@ -186,16 +188,15 @@
*p_data_link_timeout = llcp_cb.lcb.data_link_timeout;
*p_delay_first_pdu_timeout = llcp_cb.lcb.delay_first_pdu_timeout;
- LLCP_TRACE_API4(
- "LLCP_GetConfig () link_miu:%d, opt:0x%02X, wt:%d, link_timeout:%d",
- *p_link_miu, *p_opt, *p_wt, *p_link_timeout);
- LLCP_TRACE_API4(
- " inact_timeout (init:%d, target:%d), symm_delay:%d, "
- "data_link_timeout:%d",
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("link_miu:%d, opt:0x%02X, wt:%d, link_timeout:%d",
+ *p_link_miu, *p_opt, *p_wt, *p_link_timeout);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "inact_timeout (init:%d, target:%d), symm_delay:%d, data_link_timeout:%d",
*p_inact_timeout_init, *p_inact_timeout_target, *p_symm_delay,
*p_data_link_timeout);
- LLCP_TRACE_API1(" delay_first_pdu_timeout:%d",
- *p_delay_first_pdu_timeout);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("delay_first_pdu_timeout:%d", *p_delay_first_pdu_timeout);
}
/*******************************************************************************
@@ -227,11 +228,11 @@
uint8_t* p_gen_bytes_len) {
uint8_t* p = p_gen_bytes;
- LLCP_TRACE_API0("LLCP_GetDiscoveryConfig ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (*p_gen_bytes_len < LLCP_MIN_GEN_BYTES) {
- LLCP_TRACE_ERROR1(
- "LLCP_GetDiscoveryConfig (): GenBytes length shall not be smaller than "
+ LOG(ERROR) << StringPrintf(
+ "GenBytes length shall not be smaller than "
"LLCP_MIN_GEN_BYTES (%d)",
LLCP_MIN_GEN_BYTES);
*p_gen_bytes_len = 0;
@@ -302,8 +303,8 @@
*******************************************************************************/
tLLCP_STATUS LLCP_ActivateLink(tLLCP_ACTIVATE_CONFIG config,
tLLCP_LINK_CBACK* p_link_cback) {
- LLCP_TRACE_API1("LLCP_ActivateLink () link_state = %d",
- llcp_cb.lcb.link_state);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("link_state = %d", llcp_cb.lcb.link_state);
if ((llcp_cb.lcb.link_state == LLCP_LINK_STATE_DEACTIVATED) &&
(p_link_cback)) {
@@ -327,8 +328,8 @@
**
*******************************************************************************/
tLLCP_STATUS LLCP_DeactivateLink(void) {
- LLCP_TRACE_API1("LLCP_DeactivateLink () link_state = %d",
- llcp_cb.lcb.link_state);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("link_state = %d", llcp_cb.lcb.link_state);
if (llcp_cb.lcb.link_state != LLCP_LINK_STATE_DEACTIVATED) {
llcp_link_deactivate(LLCP_LINK_LOCAL_INITIATED);
@@ -357,7 +358,7 @@
**
*******************************************************************************/
uint8_t LLCP_RegisterServer(uint8_t reg_sap, uint8_t link_type,
- char* p_service_name,
+ std::string p_service_name,
tLLCP_APP_CBACK* p_app_cback) {
uint8_t sap;
uint16_t length;
@@ -365,18 +366,16 @@
0,
};
- LLCP_TRACE_API3(
- "LLCP_RegisterServer (): SAP:0x%x, link_type:0x%x, ServiceName:<%s>",
- reg_sap, link_type, ((p_service_name == NULL) ? "" : p_service_name));
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "SAP:0x%x, link_type:0x%x, ServiceName:<%s>", reg_sap, link_type,
+ ((p_service_name.empty()) ? "" : p_service_name.c_str()));
if (!p_app_cback) {
- LLCP_TRACE_ERROR0("LLCP_RegisterServer (): Callback must be provided");
+ LOG(ERROR) << StringPrintf("Callback must be provided");
return LLCP_INVALID_SAP;
} else if (((link_type & LLCP_LINK_TYPE_LOGICAL_DATA_LINK) == 0x00) &&
((link_type & LLCP_LINK_TYPE_DATA_LINK_CONNECTION) == 0x00)) {
- LLCP_TRACE_ERROR1(
- "LLCP_RegisterServer (): link type (0x%x) must be specified",
- link_type);
+ LOG(ERROR) << StringPrintf("link type (0x%x) must be specified", link_type);
return LLCP_INVALID_SAP;
}
@@ -391,63 +390,55 @@
}
if (reg_sap == LLCP_INVALID_SAP) {
- LLCP_TRACE_ERROR0("LLCP_RegisterServer (): out of resource");
+ LOG(ERROR) << StringPrintf("out of resource");
return LLCP_INVALID_SAP;
}
} else if (reg_sap == LLCP_SAP_LM) {
- LLCP_TRACE_ERROR1("LLCP_RegisterServer (): SAP (0x%x) is for link manager",
- reg_sap);
+ LOG(ERROR) << StringPrintf("SAP (0x%x) is for link manager", reg_sap);
return LLCP_INVALID_SAP;
} else if (reg_sap <= LLCP_UPPER_BOUND_WK_SAP) {
if (reg_sap >= LLCP_MAX_WKS) {
- LLCP_TRACE_ERROR1(
- "LLCP_RegisterServer (): out of resource for SAP (0x%x)", reg_sap);
+ LOG(ERROR) << StringPrintf("out of resource for SAP (0x%x)", reg_sap);
return LLCP_INVALID_SAP;
} else if (llcp_cb.wks_cb[reg_sap].p_app_cback) {
- LLCP_TRACE_ERROR1(
- "LLCP_RegisterServer (): SAP (0x%x) is already registered", reg_sap);
+ LOG(ERROR) << StringPrintf("SAP (0x%x) is already registered", reg_sap);
return LLCP_INVALID_SAP;
} else {
p_app_cb = &llcp_cb.wks_cb[reg_sap];
}
} else if (reg_sap <= LLCP_UPPER_BOUND_SDP_SAP) {
if (reg_sap - LLCP_LOWER_BOUND_SDP_SAP >= LLCP_MAX_SERVER) {
- LLCP_TRACE_ERROR1(
- "LLCP_RegisterServer (): out of resource for SAP (0x%x)", reg_sap);
+ LOG(ERROR) << StringPrintf("out of resource for SAP (0x%x)", reg_sap);
return LLCP_INVALID_SAP;
} else if (llcp_cb.server_cb[reg_sap - LLCP_LOWER_BOUND_SDP_SAP]
.p_app_cback) {
- LLCP_TRACE_ERROR1(
- "LLCP_RegisterServer (): SAP (0x%x) is already registered", reg_sap);
+ LOG(ERROR) << StringPrintf("SAP (0x%x) is already registered", reg_sap);
return LLCP_INVALID_SAP;
} else {
p_app_cb = &llcp_cb.server_cb[reg_sap - LLCP_LOWER_BOUND_SDP_SAP];
}
} else if (reg_sap >= LLCP_LOWER_BOUND_LOCAL_SAP) {
- LLCP_TRACE_ERROR2(
- "LLCP_RegisterServer (): SAP (0x%x) must be less than 0x%x", reg_sap,
- LLCP_LOWER_BOUND_LOCAL_SAP);
+ LOG(ERROR) << StringPrintf("SAP (0x%x) must be less than 0x%x", reg_sap,
+ LLCP_LOWER_BOUND_LOCAL_SAP);
return LLCP_INVALID_SAP;
}
memset(p_app_cb, 0x00, sizeof(tLLCP_APP_CB));
- if (p_service_name) {
- length = (uint8_t)strlen(p_service_name);
+ if (!p_service_name.empty()) {
+ length = p_service_name.length();
if (length > LLCP_MAX_SN_LEN) {
- LLCP_TRACE_ERROR1(
- "LLCP_RegisterServer (): Service Name (%d bytes) is too long",
- length);
+ LOG(ERROR) << StringPrintf("Service Name (%d bytes) is too long", length);
return LLCP_INVALID_SAP;
}
- p_app_cb->p_service_name = (uint8_t*)GKI_getbuf((uint16_t)(length + 1));
+ p_app_cb->p_service_name = (char*)GKI_getbuf((uint16_t)(length + 1));
if (p_app_cb->p_service_name == NULL) {
- LLCP_TRACE_ERROR0("LLCP_RegisterServer (): Out of resource");
+ LOG(ERROR) << StringPrintf("Out of resource");
return LLCP_INVALID_SAP;
}
- strncpy((char*)p_app_cb->p_service_name, (char*)p_service_name, length + 1);
+ strncpy(p_app_cb->p_service_name, p_service_name.c_str(), length + 1);
p_app_cb->p_service_name[length] = 0;
} else
p_app_cb->p_service_name = NULL;
@@ -459,7 +450,8 @@
llcp_cb.lcb.wks |= (1 << reg_sap);
}
- LLCP_TRACE_DEBUG1("LLCP_RegisterServer (): Registered SAP = 0x%02X", reg_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Registered SAP = 0x%02X", reg_sap);
if (link_type & LLCP_LINK_TYPE_LOGICAL_DATA_LINK) {
llcp_cb.num_logical_data_link++;
@@ -487,16 +479,15 @@
uint8_t sap;
tLLCP_APP_CB* p_app_cb;
- LLCP_TRACE_API1("LLCP_RegisterClient (): link_type = 0x%x", link_type);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("link_type = 0x%x", link_type);
if (!p_app_cback) {
- LLCP_TRACE_ERROR0("LLCP_RegisterClient (): Callback must be provided");
+ LOG(ERROR) << StringPrintf("Callback must be provided");
return LLCP_INVALID_SAP;
} else if (((link_type & LLCP_LINK_TYPE_LOGICAL_DATA_LINK) == 0x00) &&
((link_type & LLCP_LINK_TYPE_DATA_LINK_CONNECTION) == 0x00)) {
- LLCP_TRACE_ERROR1(
- "LLCP_RegisterClient (): link type (0x%x) must be specified",
- link_type);
+ LOG(ERROR) << StringPrintf("link type (0x%x) must be specified", link_type);
return LLCP_INVALID_SAP;
}
@@ -511,7 +502,7 @@
}
if (reg_sap == LLCP_INVALID_SAP) {
- LLCP_TRACE_ERROR0("LLCP_RegisterClient (): out of resource");
+ LOG(ERROR) << StringPrintf("out of resource");
return LLCP_INVALID_SAP;
}
@@ -519,7 +510,8 @@
p_app_cb->p_service_name = NULL;
p_app_cb->link_type = link_type;
- LLCP_TRACE_DEBUG1("LLCP_RegisterClient (): Registered SAP = 0x%02X", reg_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Registered SAP = 0x%02X", reg_sap);
if (link_type & LLCP_LINK_TYPE_LOGICAL_DATA_LINK) {
llcp_cb.num_logical_data_link++;
@@ -543,13 +535,12 @@
uint8_t idx;
tLLCP_APP_CB* p_app_cb;
- LLCP_TRACE_API1("LLCP_Deregister () SAP:0x%x", local_sap);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("SAP:0x%x", local_sap);
p_app_cb = llcp_util_get_app_cb(local_sap);
if ((!p_app_cb) || (p_app_cb->p_app_cback == NULL)) {
- LLCP_TRACE_ERROR1("LLCP_Deregister (): SAP (0x%x) is not registered",
- local_sap);
+ LOG(ERROR) << StringPrintf("SAP (0x%x) is not registered", local_sap);
return LLCP_STATUS_FAIL;
}
@@ -606,9 +597,9 @@
uint8_t total_pending_i_pdu) {
tLLCP_APP_CB* p_app_cb;
- LLCP_TRACE_API4(
- "LLCP_IsLogicalLinkCongested () Local SAP:0x%x, pending = (%d, %d, %d)",
- local_sap, num_pending_ui_pdu, total_pending_ui_pdu, total_pending_i_pdu);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Local SAP:0x%x, pending = (%d, %d, %d)", local_sap, num_pending_ui_pdu,
+ total_pending_ui_pdu, total_pending_i_pdu);
p_app_cb = llcp_util_get_app_cb(local_sap);
@@ -648,34 +639,34 @@
tLLCP_STATUS status = LLCP_STATUS_FAIL;
tLLCP_APP_CB* p_app_cb;
- LLCP_TRACE_API2("LLCP_SendUI () SSAP=0x%x, DSAP=0x%x", ssap, dsap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("SSAP=0x%x, DSAP=0x%x", ssap, dsap);
p_app_cb = llcp_util_get_app_cb(ssap);
if ((p_app_cb == NULL) || (p_app_cb->p_app_cback == NULL)) {
- LLCP_TRACE_ERROR1("LLCP_SendUI (): SSAP (0x%x) is not registered", ssap);
+ LOG(ERROR) << StringPrintf("SSAP (0x%x) is not registered", ssap);
} else if ((p_app_cb->link_type & LLCP_LINK_TYPE_LOGICAL_DATA_LINK) == 0) {
- LLCP_TRACE_ERROR1(
- "LLCP_SendUI (): Logical link on SSAP (0x%x) is not enabled", ssap);
+ LOG(ERROR) << StringPrintf("Logical link on SSAP (0x%x) is not enabled",
+ ssap);
} else if (llcp_cb.lcb.link_state != LLCP_LINK_STATE_ACTIVATED) {
- LLCP_TRACE_ERROR0("LLCP_SendUI (): LLCP link is not activated");
+ LOG(ERROR) << StringPrintf("LLCP link is not activated");
} else if ((llcp_cb.lcb.peer_opt == LLCP_LSC_UNKNOWN) ||
(llcp_cb.lcb.peer_opt & LLCP_LSC_1)) {
if (p_buf->len <= llcp_cb.lcb.peer_miu) {
if (p_buf->offset >= LLCP_MIN_OFFSET) {
status = llcp_util_send_ui(ssap, dsap, p_app_cb, p_buf);
} else {
- LLCP_TRACE_ERROR2("LLCP_SendUI (): offset (%d) must be %d at least",
- p_buf->offset, LLCP_MIN_OFFSET);
+ LOG(ERROR) << StringPrintf("offset (%d) must be %d at least",
+ p_buf->offset, LLCP_MIN_OFFSET);
}
} else {
- LLCP_TRACE_ERROR0(
- "LLCP_SendUI (): Data length shall not be bigger than peer's link "
+ LOG(ERROR) << StringPrintf(
+ "Data length shall not be bigger than peer's link "
"MIU");
}
} else {
- LLCP_TRACE_ERROR0(
- "LLCP_SendUI (): Peer doesn't support connectionless link");
+ LOG(ERROR) << StringPrintf("Peer doesn't support connectionless link");
}
if (status == LLCP_STATUS_FAIL) {
@@ -708,7 +699,7 @@
uint8_t* p_ui_pdu;
uint16_t pdu_hdr, ui_pdu_length;
- LLCP_TRACE_API1("LLCP_ReadLogicalLinkData () Local SAP:0x%x", local_sap);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Local SAP:0x%x", local_sap);
*p_data_len = 0;
@@ -771,8 +762,7 @@
return false;
}
} else {
- LLCP_TRACE_ERROR1("LLCP_ReadLogicalLinkData (): Unregistered SAP:0x%x",
- local_sap);
+ LOG(ERROR) << StringPrintf("Unregistered SAP:0x%x", local_sap);
return false;
}
@@ -795,7 +785,7 @@
uint8_t* p_ui_pdu;
uint16_t ui_pdu_length;
- LLCP_TRACE_API1("LLCP_FlushLogicalLinkRxData () Local SAP:0x%x", local_sap);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Local SAP:0x%x", local_sap);
p_app_cb = llcp_util_get_app_cb(local_sap);
@@ -828,8 +818,7 @@
/* number of received UI PDU is decreased so check rx congestion status */
llcp_util_check_rx_congested_status();
} else {
- LLCP_TRACE_ERROR1("LLCP_FlushLogicalLinkRxData (): Unregistered SAP:0x%x",
- local_sap);
+ LOG(ERROR) << StringPrintf("Unregistered SAP:0x%x", local_sap);
}
return (flushed_length);
@@ -854,12 +843,12 @@
tLLCP_APP_CB* p_app_cb;
tLLCP_CONNECTION_PARAMS params;
- LLCP_TRACE_API2("LLCP_ConnectReq () reg_sap=0x%x, DSAP=0x%x", reg_sap, dsap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("reg_sap=0x%x, DSAP=0x%x", reg_sap, dsap);
if ((llcp_cb.lcb.peer_opt != LLCP_LSC_UNKNOWN) &&
((llcp_cb.lcb.peer_opt & LLCP_LSC_2) == 0)) {
- LLCP_TRACE_ERROR0(
- "LLCP_ConnectReq (): Peer doesn't support connection-oriented link");
+ LOG(ERROR) << StringPrintf("Peer doesn't support connection-oriented link");
return LLCP_STATUS_FAIL;
}
@@ -874,29 +863,27 @@
/* if application is registered */
if ((p_app_cb == NULL) || (p_app_cb->p_app_cback == NULL)) {
- LLCP_TRACE_ERROR1("LLCP_ConnectReq (): SSAP (0x%x) is not registered",
- reg_sap);
+ LOG(ERROR) << StringPrintf("SSAP (0x%x) is not registered", reg_sap);
return LLCP_STATUS_FAIL;
}
if (dsap == LLCP_SAP_LM) {
- LLCP_TRACE_ERROR1(
- "LLCP_ConnectReq (): DSAP (0x%x) must not be link manager SAP", dsap);
+ LOG(ERROR) << StringPrintf("DSAP (0x%x) must not be link manager SAP",
+ dsap);
return LLCP_STATUS_FAIL;
}
if (dsap == LLCP_SAP_SDP) {
if (strlen(p_params->sn) > LLCP_MAX_SN_LEN) {
- LLCP_TRACE_ERROR1(
- "LLCP_ConnectReq (): Service Name (%d bytes) is too long",
- strlen(p_params->sn));
+ LOG(ERROR) << StringPrintf("Service Name (%zu bytes) is too long",
+ strlen(p_params->sn));
return LLCP_STATUS_FAIL;
}
}
if ((p_params) && (p_params->miu > llcp_cb.lcb.local_link_miu)) {
- LLCP_TRACE_ERROR0(
- "LLCP_ConnectReq (): Data link MIU shall not be bigger than local link "
+ LOG(ERROR) << StringPrintf(
+ "Data link MIU shall not be bigger than local link "
"MIU");
return LLCP_STATUS_FAIL;
}
@@ -909,8 +896,8 @@
** link connection if there is multiple pending connection request on
** the same local SAP.
*/
- LLCP_TRACE_ERROR0(
- "LLCP_ConnectReq (): There is pending connect request on this reg_sap");
+ LOG(ERROR) << StringPrintf(
+ "There is pending connect request on this reg_sap");
return LLCP_STATUS_FAIL;
}
@@ -920,7 +907,7 @@
status =
llcp_dlsm_execute(p_dlcb, LLCP_DLC_EVENT_API_CONNECT_REQ, p_params);
if (status != LLCP_STATUS_SUCCESS) {
- LLCP_TRACE_ERROR0("LLCP_ConnectReq (): Error in state machine");
+ LOG(ERROR) << StringPrintf("Error in state machine");
llcp_util_deallocate_data_link(p_dlcb);
return LLCP_STATUS_FAIL;
}
@@ -948,8 +935,8 @@
tLLCP_DLCB* p_dlcb;
tLLCP_CONNECTION_PARAMS params;
- LLCP_TRACE_API2("LLCP_ConnectCfm () Local SAP:0x%x, Remote SAP:0x%x)",
- local_sap, remote_sap);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Local SAP:0x%x, Remote SAP:0x%x)", local_sap, remote_sap);
if (!p_params) {
params.miu = LLCP_DEFAULT_MIU;
@@ -958,8 +945,8 @@
p_params = ¶ms;
}
if (p_params->miu > llcp_cb.lcb.local_link_miu) {
- LLCP_TRACE_ERROR0(
- "LLCP_ConnectCfm (): Data link MIU shall not be bigger than local link "
+ LOG(ERROR) << StringPrintf(
+ "Data link MIU shall not be bigger than local link "
"MIU");
return LLCP_STATUS_FAIL;
}
@@ -970,7 +957,7 @@
status =
llcp_dlsm_execute(p_dlcb, LLCP_DLC_EVENT_API_CONNECT_CFM, p_params);
} else {
- LLCP_TRACE_ERROR0("LLCP_ConnectCfm (): No data link");
+ LOG(ERROR) << StringPrintf("No data link");
status = LLCP_STATUS_FAIL;
}
@@ -998,9 +985,9 @@
tLLCP_STATUS status;
tLLCP_DLCB* p_dlcb;
- LLCP_TRACE_API3(
- "LLCP_ConnectReject () Local SAP:0x%x, Remote SAP:0x%x, reason:0x%x",
- local_sap, remote_sap, reason);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Local SAP:0x%x, Remote SAP:0x%x, reason:0x%x", local_sap,
+ remote_sap, reason);
p_dlcb = llcp_dlc_find_dlcb_by_sap(local_sap, remote_sap);
@@ -1009,7 +996,7 @@
llcp_dlsm_execute(p_dlcb, LLCP_DLC_EVENT_API_CONNECT_REJECT, &reason);
llcp_util_deallocate_data_link(p_dlcb);
} else {
- LLCP_TRACE_ERROR0("LLCP_ConnectReject (): No data link");
+ LOG(ERROR) << StringPrintf("No data link");
status = LLCP_STATUS_FAIL;
}
@@ -1032,8 +1019,8 @@
uint8_t total_pending_i_pdu) {
tLLCP_DLCB* p_dlcb;
- LLCP_TRACE_API5(
- "LLCP_IsDataLinkCongested () Local SAP:0x%x, Remote SAP:0x%x, pending = "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Local SAP:0x%x, Remote SAP:0x%x, pending = "
"(%d, %d, %d)",
local_sap, remote_sap, num_pending_i_pdu, total_pending_ui_pdu,
total_pending_i_pdu);
@@ -1073,8 +1060,8 @@
tLLCP_STATUS status = LLCP_STATUS_FAIL;
tLLCP_DLCB* p_dlcb;
- LLCP_TRACE_API2("LLCP_SendData () Local SAP:0x%x, Remote SAP:0x%x", local_sap,
- remote_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Local SAP:0x%x, Remote SAP:0x%x", local_sap, remote_sap);
p_dlcb = llcp_dlc_find_dlcb_by_sap(local_sap, remote_sap);
@@ -1083,17 +1070,17 @@
if (p_buf->offset >= LLCP_MIN_OFFSET) {
status = llcp_dlsm_execute(p_dlcb, LLCP_DLC_EVENT_API_DATA_REQ, p_buf);
} else {
- LLCP_TRACE_ERROR2("LLCP_SendData (): offset (%d) must be %d at least",
- p_buf->offset, LLCP_MIN_OFFSET);
+ LOG(ERROR) << StringPrintf("offset (%d) must be %d at least",
+ p_buf->offset, LLCP_MIN_OFFSET);
}
} else {
- LLCP_TRACE_ERROR2(
- "LLCP_SendData (): Information (%d bytes) cannot be more than peer "
+ LOG(ERROR) << StringPrintf(
+ "Information (%d bytes) cannot be more than peer "
"MIU (%d bytes)",
p_buf->len, p_dlcb->remote_miu);
}
} else {
- LLCP_TRACE_ERROR0("LLCP_SendData (): No data link");
+ LOG(ERROR) << StringPrintf("No data link");
}
if (status == LLCP_STATUS_FAIL) {
@@ -1126,8 +1113,8 @@
uint8_t* p_i_pdu;
uint16_t i_pdu_length;
- LLCP_TRACE_API2("LLCP_ReadDataLinkData () Local SAP:0x%x, Remote SAP:0x%x",
- local_sap, remote_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Local SAP:0x%x, Remote SAP:0x%x", local_sap, remote_sap);
p_dlcb = llcp_dlc_find_dlcb_by_sap(local_sap, remote_sap);
@@ -1194,7 +1181,7 @@
return false;
}
} else {
- LLCP_TRACE_ERROR0("LLCP_ReadDataLinkData (): No data link connection");
+ LOG(ERROR) << StringPrintf("No data link connection");
return false;
}
@@ -1217,8 +1204,8 @@
uint8_t* p_i_pdu;
uint16_t i_pdu_length;
- LLCP_TRACE_API2("LLCP_FlushDataLinkRxData () Local SAP:0x%x, Remote SAP:0x%x",
- local_sap, remote_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Local SAP:0x%x, Remote SAP:0x%x", local_sap, remote_sap);
p_dlcb = llcp_dlc_find_dlcb_by_sap(local_sap, remote_sap);
@@ -1258,7 +1245,7 @@
/* number of received I PDU is decreased so check rx congestion status */
llcp_util_check_rx_congested_status();
} else {
- LLCP_TRACE_ERROR0("LLCP_FlushDataLinkRxData (): No data link connection");
+ LOG(ERROR) << StringPrintf("No data link connection");
}
return (flushed_length);
@@ -1279,9 +1266,9 @@
tLLCP_STATUS status;
tLLCP_DLCB* p_dlcb;
- LLCP_TRACE_API3(
- "LLCP_DisconnectReq () Local SAP:0x%x, Remote SAP:0x%x, flush=%d",
- local_sap, remote_sap, flush);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Local SAP:0x%x, Remote SAP:0x%x, flush=%d", local_sap,
+ remote_sap, flush);
p_dlcb = llcp_dlc_find_dlcb_by_sap(local_sap, remote_sap);
@@ -1289,7 +1276,7 @@
status =
llcp_dlsm_execute(p_dlcb, LLCP_DLC_EVENT_API_DISCONNECT_REQ, &flush);
} else {
- LLCP_TRACE_ERROR0("LLCP_DisconnectReq (): No data link");
+ LOG(ERROR) << StringPrintf("No data link");
status = LLCP_STATUS_FAIL;
}
@@ -1312,8 +1299,8 @@
tLLCP_STATUS status;
tLLCP_DLCB* p_dlcb;
- LLCP_TRACE_API2("LLCP_SetTxCompleteNtf () Local SAP:0x%x, Remote SAP:0x%x",
- local_sap, remote_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Local SAP:0x%x, Remote SAP:0x%x", local_sap, remote_sap);
p_dlcb = llcp_dlc_find_dlcb_by_sap(local_sap, remote_sap);
@@ -1322,7 +1309,7 @@
p_dlcb->flags |= LLCP_DATA_LINK_FLAG_NOTIFY_TX_DONE;
status = LLCP_STATUS_SUCCESS;
} else {
- LLCP_TRACE_ERROR0("LLCP_SetTxCompleteNtf (): No data link");
+ LOG(ERROR) << StringPrintf("No data link");
status = LLCP_STATUS_FAIL;
}
@@ -1344,8 +1331,8 @@
tLLCP_STATUS status;
tLLCP_DLCB* p_dlcb;
- LLCP_TRACE_API2("LLCP_SetLocalBusyStatus () Local SAP:0x%x, is_busy=%d",
- local_sap, is_busy);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Local SAP:0x%x, is_busy=%d", local_sap, is_busy);
p_dlcb = llcp_dlc_find_dlcb_by_sap(local_sap, remote_sap);
@@ -1364,7 +1351,7 @@
}
status = LLCP_STATUS_SUCCESS;
} else {
- LLCP_TRACE_ERROR0("LLCP_SetLocalBusyStatus (): No data link");
+ LOG(ERROR) << StringPrintf("No data link");
status = LLCP_STATUS_FAIL;
}
@@ -1382,10 +1369,10 @@
**
*******************************************************************************/
uint16_t LLCP_GetRemoteWKS(void) {
- LLCP_TRACE_API1("LLCP_GetRemoteWKS () WKS:0x%04x",
- (llcp_cb.lcb.link_state == LLCP_LINK_STATE_ACTIVATED)
- ? llcp_cb.lcb.peer_wks
- : 0);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "WKS:0x%04x", (llcp_cb.lcb.link_state == LLCP_LINK_STATE_ACTIVATED)
+ ? llcp_cb.lcb.peer_wks
+ : 0);
if (llcp_cb.lcb.link_state == LLCP_LINK_STATE_ACTIVATED)
return (llcp_cb.lcb.peer_wks);
@@ -1404,8 +1391,8 @@
**
*******************************************************************************/
uint8_t LLCP_GetRemoteLSC(void) {
- LLCP_TRACE_API1("LLCP_GetRemoteLSC () LSC:0x%x",
- (llcp_cb.lcb.link_state == LLCP_LINK_STATE_ACTIVATED)
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "LSC:0x%x", (llcp_cb.lcb.link_state == LLCP_LINK_STATE_ACTIVATED)
? llcp_cb.lcb.peer_opt & (LLCP_LSC_1 | LLCP_LSC_2)
: 0);
@@ -1426,10 +1413,10 @@
**
*******************************************************************************/
uint8_t LLCP_GetRemoteVersion(void) {
- LLCP_TRACE_API1("LLCP_GetRemoteVersion () Version: 0x%x",
- (llcp_cb.lcb.link_state == LLCP_LINK_STATE_ACTIVATED)
- ? llcp_cb.lcb.peer_version
- : 0);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Version: 0x%x", (llcp_cb.lcb.link_state == LLCP_LINK_STATE_ACTIVATED)
+ ? llcp_cb.lcb.peer_version
+ : 0);
if (llcp_cb.lcb.link_state == LLCP_LINK_STATE_ACTIVATED)
return (llcp_cb.lcb.peer_version);
@@ -1448,7 +1435,7 @@
**
*******************************************************************************/
void LLCP_GetLinkMIU(uint16_t* p_local_link_miu, uint16_t* p_remote_link_miu) {
- LLCP_TRACE_API0("LLCP_GetLinkMIU ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (llcp_cb.lcb.link_state == LLCP_LINK_STATE_ACTIVATED) {
*p_local_link_miu = llcp_cb.lcb.local_link_miu;
@@ -1458,9 +1445,9 @@
*p_remote_link_miu = 0;
}
- LLCP_TRACE_DEBUG2(
- "LLCP_GetLinkMIU (): local_link_miu = %d, remote_link_miu = %d",
- *p_local_link_miu, *p_remote_link_miu);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("local_link_miu = %d, remote_link_miu = %d",
+ *p_local_link_miu, *p_remote_link_miu);
}
/*******************************************************************************
@@ -1479,22 +1466,22 @@
tLLCP_STATUS status;
uint8_t i;
- LLCP_TRACE_API1("LLCP_DiscoverService () Service Name:%s", p_name);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Service Name:%s", p_name);
if (llcp_cb.lcb.link_state != LLCP_LINK_STATE_ACTIVATED) {
- LLCP_TRACE_ERROR0("LLCP_DiscoverService (): Link is not activated");
+ LOG(ERROR) << StringPrintf("Link is not activated");
return LLCP_STATUS_FAIL;
}
if (!p_cback) {
- LLCP_TRACE_ERROR0("LLCP_DiscoverService (): Callback must be provided.");
+ LOG(ERROR) << StringPrintf("Callback must be provided.");
return LLCP_STATUS_FAIL;
}
/* if peer version is less than V1.1 then SNL is not supported */
if ((llcp_cb.lcb.agreed_major_version == 0x01) &&
(llcp_cb.lcb.agreed_minor_version < 0x01)) {
- LLCP_TRACE_ERROR0("LLCP_DiscoverService (): Peer doesn't support SNL");
+ LOG(ERROR) << StringPrintf("Peer doesn't support SNL");
return LLCP_STATUS_FAIL;
}
@@ -1515,7 +1502,7 @@
}
}
- LLCP_TRACE_ERROR0("LLCP_DiscoverService (): Out of resource");
+ LOG(ERROR) << StringPrintf("Out of resource");
return LLCP_STATUS_FAIL;
}
diff --git a/src/nfc/llcp/llcp_dlc.c b/src/nfc/llcp/llcp_dlc.cc
similarity index 84%
rename from src/nfc/llcp/llcp_dlc.c
rename to src/nfc/llcp/llcp_dlc.cc
index c17c419..22fd548 100644
--- a/src/nfc/llcp/llcp_dlc.c
+++ b/src/nfc/llcp/llcp_dlc.cc
@@ -22,14 +22,18 @@
*
******************************************************************************/
+#include <string>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
#include <log/log.h>
-#include <string.h>
#include "bt_types.h"
#include "gki.h"
#include "llcp_defs.h"
#include "llcp_int.h"
#include "nfc_int.h"
-#include "nfc_target.h"
+
+using android::base::StringPrintf;
static tLLCP_STATUS llcp_dlsm_idle(tLLCP_DLCB* p_dlcb, tLLCP_DLC_EVENT event,
void* p_data);
@@ -42,13 +46,12 @@
static tLLCP_STATUS llcp_dlsm_connected(tLLCP_DLCB* p_dlcb,
tLLCP_DLC_EVENT event, void* p_data);
static tLLCP_STATUS llcp_dlsm_w4_remote_dm(tLLCP_DLCB* p_dlcb,
- tLLCP_DLC_EVENT event, void* p_data);
-extern unsigned char appl_dta_mode_flag;
+ tLLCP_DLC_EVENT event);
+static std::string llcp_dlsm_get_state_name(tLLCP_DLC_STATE state);
+static std::string llcp_dlsm_get_event_name(tLLCP_DLC_EVENT event);
-#if (BT_TRACE_VERBOSE == TRUE)
-static char* llcp_dlsm_get_state_name(tLLCP_DLC_STATE state);
-static char* llcp_dlsm_get_event_name(tLLCP_DLC_EVENT event);
-#endif
+extern bool nfc_debug_enabled;
+extern unsigned char appl_dta_mode_flag;
/*******************************************************************************
**
@@ -64,14 +67,10 @@
void* p_data) {
tLLCP_STATUS status;
-#if (BT_TRACE_VERBOSE == TRUE)
- LLCP_TRACE_EVENT3("DLC (0x%02X) - state: %s, evt: %s", p_dlcb->local_sap,
- llcp_dlsm_get_state_name(p_dlcb->state),
- llcp_dlsm_get_event_name(event));
-#else
- LLCP_TRACE_EVENT3("DLC (0x%02X) - state: %d, evt: %d", p_dlcb->local_sap,
- p_dlcb->state, event);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("DLC (0x%02X) - state: %s, evt: %s", p_dlcb->local_sap,
+ llcp_dlsm_get_state_name(p_dlcb->state).c_str(),
+ llcp_dlsm_get_event_name(event).c_str());
switch (p_dlcb->state) {
case LLCP_DLC_STATE_IDLE:
@@ -91,7 +90,7 @@
break;
case LLCP_DLC_STATE_W4_REMOTE_DM:
- status = llcp_dlsm_w4_remote_dm(p_dlcb, event, p_data);
+ status = llcp_dlsm_w4_remote_dm(p_dlcb, event);
break;
default:
@@ -145,8 +144,8 @@
p_params = (tLLCP_CONNECTION_PARAMS*)p_data;
if (p_params->miu > llcp_cb.lcb.peer_miu) {
- LLCP_TRACE_WARNING0(
- "llcp_dlsm_idle (): Peer sent data link MIU bigger than peer's "
+ LOG(WARNING) << StringPrintf(
+ "Peer sent data link MIU bigger than peer's "
"link MIU");
p_params->miu = llcp_cb.lcb.peer_miu;
}
@@ -162,8 +161,8 @@
p_dlcb->remote_miu = p_params->miu;
p_dlcb->remote_rw = p_params->rw;
- LLCP_TRACE_DEBUG2("llcp_dlsm_idle (): Remote MIU:%d, RW:%d",
- p_dlcb->remote_miu, p_dlcb->remote_rw);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Remote MIU:%d, RW:%d", p_dlcb->remote_miu, p_dlcb->remote_rw);
/* wait for response from upper layer */
p_dlcb->state = LLCP_DLC_STATE_W4_LOCAL_RESP;
@@ -178,7 +177,7 @@
break;
default:
- LLCP_TRACE_ERROR0("llcp_dlsm_idle (): Unexpected event");
+ LOG(ERROR) << StringPrintf("Unexpected event");
status = LLCP_STATUS_FAIL;
break;
}
@@ -213,8 +212,8 @@
/* data link MIU must be up to link MIU */
if (p_params->miu > llcp_cb.lcb.peer_miu) {
- LLCP_TRACE_WARNING0(
- "llcp_dlsm_w4_remote_resp (): Peer sent data link MIU bigger than "
+ LOG(WARNING) << StringPrintf(
+ "Peer sent data link MIU bigger than "
"peer's link MIU");
p_params->miu = llcp_cb.lcb.peer_miu;
}
@@ -222,8 +221,8 @@
p_dlcb->remote_miu = p_params->miu;
p_dlcb->remote_rw = p_params->rw;
- LLCP_TRACE_DEBUG2("llcp_dlsm_w4_remote_resp (): Remote MIU:%d, RW:%d",
- p_dlcb->remote_miu, p_dlcb->remote_rw);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Remote MIU:%d, RW:%d", p_dlcb->remote_miu, p_dlcb->remote_rw);
p_dlcb->state = LLCP_DLC_STATE_CONNECTED;
llcp_util_adjust_dl_rx_congestion();
@@ -272,7 +271,7 @@
break;
default:
- LLCP_TRACE_ERROR0("llcp_dlsm_w4_remote_resp (): Unexpected event");
+ LOG(ERROR) << StringPrintf("Unexpected event");
status = LLCP_STATUS_FAIL;
break;
}
@@ -360,7 +359,7 @@
break;
default:
- LLCP_TRACE_ERROR0("llcp_dlsm_w4_local_resp (): Unexpected event");
+ LOG(ERROR) << StringPrintf("Unexpected event");
status = LLCP_STATUS_FAIL;
break;
}
@@ -445,8 +444,8 @@
(p_dlcb->i_xmit_q.count >=
p_dlcb->remote_rw)) /*if enough data to send next round */
{
- LLCP_TRACE_DEBUG3(
- "llcp_dlsm_connected (): Data link (SSAP:DSAP=0x%X:0x%X) "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Data link (SSAP:DSAP=0x%X:0x%X) "
"congested: xmit_q.count=%d",
p_dlcb->local_sap, p_dlcb->remote_sap, p_dlcb->i_xmit_q.count);
@@ -456,8 +455,7 @@
status = LLCP_STATUS_CONGESTED;
}
} else {
- LLCP_TRACE_ERROR0(
- "llcp_dlsm_connected (): Remote RW is zero: discard data");
+ LOG(ERROR) << StringPrintf("Remote RW is zero: discard data");
/* buffer will be freed when returned to API function */
status = LLCP_STATUS_FAIL;
}
@@ -489,7 +487,7 @@
break;
default:
- LLCP_TRACE_ERROR0("llcp_dlsm_connected (): Unexpected event");
+ LOG(ERROR) << StringPrintf("Unexpected event");
status = LLCP_STATUS_FAIL;
break;
}
@@ -508,8 +506,7 @@
**
*******************************************************************************/
static tLLCP_STATUS llcp_dlsm_w4_remote_dm(tLLCP_DLCB* p_dlcb,
- tLLCP_DLC_EVENT event,
- void* p_data) {
+ tLLCP_DLC_EVENT event) {
tLLCP_STATUS status = LLCP_STATUS_SUCCESS;
tLLCP_SAP_CBACK_DATA data;
@@ -551,7 +548,7 @@
break;
default:
- LLCP_TRACE_ERROR0("llcp_dlsm_w4_remote_dm (): Unexpected event");
+ LOG(ERROR) << StringPrintf("Unexpected event");
status = LLCP_STATUS_FAIL;
break;
}
@@ -599,8 +596,8 @@
*******************************************************************************/
void llcp_dlc_flush_q(tLLCP_DLCB* p_dlcb) {
if (p_dlcb) {
- LLCP_TRACE_DEBUG1("llcp_dlc_flush_q (): local SAP:0x%02X",
- p_dlcb->local_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("local SAP:0x%02X", p_dlcb->local_sap);
/* Release any held buffers */
while (p_dlcb->i_xmit_q.p_first) {
@@ -611,7 +608,7 @@
/* discard any received I PDU on data link including in AGF */
LLCP_FlushDataLinkRxData(p_dlcb->local_sap, p_dlcb->remote_sap);
} else {
- LLCP_TRACE_ERROR0("llcp_dlc_flush_q (): p_dlcb is NULL");
+ LOG(ERROR) << StringPrintf("p_dlcb is NULL");
}
}
@@ -632,21 +629,20 @@
tLLCP_CONNECTION_PARAMS params;
- LLCP_TRACE_DEBUG0("llcp_dlc_proc_connect_pdu ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_app_cb = llcp_util_get_app_cb(dsap);
if ((p_app_cb == NULL) || (p_app_cb->p_app_cback == NULL) ||
((p_app_cb->link_type & LLCP_LINK_TYPE_DATA_LINK_CONNECTION) == 0)) {
- LLCP_TRACE_ERROR1("llcp_dlc_proc_connect_pdu (): Unregistered SAP:0x%x",
- dsap);
+ LOG(ERROR) << StringPrintf("Unregistered SAP:0x%x", dsap);
llcp_util_send_dm(ssap, dsap, LLCP_SAP_DM_REASON_NO_SERVICE);
return;
}
/* parse CONNECT PDU and get connection parameters */
if (llcp_util_parse_connect(p_data, length, ¶ms) != LLCP_STATUS_SUCCESS) {
- LLCP_TRACE_ERROR0("llcp_dlc_proc_connect_pdu (): Bad format CONNECT");
+ LOG(ERROR) << StringPrintf("Bad format CONNECT");
/* fix to pass TC_CTO_TAR_BI_02_x (x=5) test case
* As per the LLCP test specification v1.2.00 by receiving erroneous SNL PDU
* i'e with improper length and service name "urn:nfc:sn:dta-co-echo-in",
@@ -654,7 +650,8 @@
if (appl_dta_mode_flag == 1 &&
p_data[1] == strlen((const char*)&p_data[2])) {
- LLCP_TRACE_DEBUG1("%s: Strings are not equal", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: Strings are not equal", __func__);
llcp_util_send_dm(ssap, dsap, LLCP_SAP_DM_REASON_NO_SERVICE);
} else {
llcp_util_send_dm(ssap, dsap, LLCP_SAP_DM_REASON_NO_SERVICE);
@@ -680,15 +677,13 @@
}
if (dsap == LLCP_SAP_SDP) {
- LLCP_TRACE_ERROR0(
- "llcp_dlc_proc_connect_pdu (): SDP doesn't accept connection");
+ LOG(ERROR) << StringPrintf("SDP doesn't accept connection");
llcp_util_send_dm(ssap, LLCP_SAP_SDP,
LLCP_SAP_DM_REASON_PERM_REJECT_THIS);
return;
} else if (dsap == 0) {
- LLCP_TRACE_ERROR1("llcp_dlc_proc_connect_pdu (): Unregistered Service:%s",
- params.sn);
+ LOG(ERROR) << StringPrintf("Unregistered Service:%s", params.sn);
llcp_util_send_dm(ssap, LLCP_SAP_SDP, LLCP_SAP_DM_REASON_NO_SERVICE);
return;
@@ -698,8 +693,8 @@
if ((p_app_cb == NULL) || (p_app_cb->p_app_cback == NULL) ||
((p_app_cb->link_type & LLCP_LINK_TYPE_DATA_LINK_CONNECTION) == 0)) {
- LLCP_TRACE_ERROR1(
- "llcp_dlc_proc_connect_pdu (): SAP(0x%x) doesn't support "
+ LOG(ERROR) << StringPrintf(
+ "SAP(0x%x) doesn't support "
"connection-oriented",
dsap);
llcp_util_send_dm(ssap, dsap, LLCP_SAP_DM_REASON_NO_SERVICE);
@@ -711,8 +706,7 @@
/* check if any data link */
p_dlcb = llcp_dlc_find_dlcb_by_sap(dsap, ssap);
if (p_dlcb) {
- LLCP_TRACE_ERROR0(
- "llcp_dlc_proc_connect_pdu (): Data link is aleady established");
+ LOG(ERROR) << StringPrintf("Data link is aleady established");
llcp_util_send_dm(ssap, dsap, LLCP_SAP_DM_REASON_TEMP_REJECT_THIS);
} else {
/* allocate data link connection control block and notify upper layer
@@ -723,12 +717,11 @@
status =
llcp_dlsm_execute(p_dlcb, LLCP_DLC_EVENT_PEER_CONNECT_IND, ¶ms);
if (status != LLCP_STATUS_SUCCESS) {
- LLCP_TRACE_ERROR0(
- "llcp_dlc_proc_connect_pdu (): Error in state machine");
+ LOG(ERROR) << StringPrintf("Error in state machine");
llcp_util_deallocate_data_link(p_dlcb);
}
} else {
- LLCP_TRACE_ERROR0("llcp_dlc_proc_connect_pdu (): Out of resource");
+ LOG(ERROR) << StringPrintf("Out of resource");
llcp_util_send_dm(ssap, dsap, LLCP_SAP_DM_REASON_TEMP_REJECT_ANY);
}
}
@@ -743,17 +736,17 @@
** Returns void
**
*******************************************************************************/
-static void llcp_dlc_proc_disc_pdu(uint8_t dsap, uint8_t ssap, uint16_t length,
- uint8_t* p_data) {
+static void llcp_dlc_proc_disc_pdu(uint8_t dsap, uint8_t ssap,
+ uint16_t length) {
tLLCP_DLCB* p_dlcb;
- LLCP_TRACE_DEBUG0("llcp_dlc_proc_disc_pdu ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_dlcb = llcp_dlc_find_dlcb_by_sap(dsap, ssap);
if (p_dlcb) {
if (length > 0) {
- LLCP_TRACE_ERROR1(
- "llcp_dlc_proc_disc_pdu (): Received extra data (%d bytes) in DISC "
+ LOG(ERROR) << StringPrintf(
+ "Received extra data (%d bytes) in DISC "
"PDU",
length);
@@ -765,9 +758,7 @@
llcp_dlsm_execute(p_dlcb, LLCP_DLC_EVENT_PEER_DISCONNECT_IND, NULL);
}
} else {
- LLCP_TRACE_ERROR2(
- "llcp_dlc_proc_disc_pdu (): No data link for SAP (0x%x,0x%x)", dsap,
- ssap);
+ LOG(ERROR) << StringPrintf("No data link for SAP (0x%x,0x%x)", dsap, ssap);
}
}
@@ -786,7 +777,7 @@
tLLCP_CONNECTION_PARAMS params;
tLLCP_STATUS status;
- LLCP_TRACE_DEBUG0("llcp_dlc_proc_cc_pdu ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* find a DLCB waiting for CC on this local SAP */
p_dlcb = llcp_dlc_find_dlcb_by_sap(dsap, LLCP_INVALID_SAP);
@@ -800,7 +791,7 @@
status =
llcp_dlsm_execute(p_dlcb, LLCP_DLC_EVENT_PEER_CONNECT_CFM, ¶ms);
if (status != LLCP_STATUS_SUCCESS) {
- LLCP_TRACE_ERROR0("llcp_dlc_proc_cc_pdu (): Error in state machine");
+ LOG(ERROR) << StringPrintf("Error in state machine");
llcp_util_deallocate_data_link(p_dlcb);
}
} else {
@@ -810,9 +801,7 @@
llcp_dlsm_execute(p_dlcb, LLCP_DLC_EVENT_FRAME_ERROR, NULL);
}
} else {
- LLCP_TRACE_ERROR2(
- "llcp_dlc_proc_cc_pdu (): No data link for SAP (0x%x,0x%x)", dsap,
- ssap);
+ LOG(ERROR) << StringPrintf("No data link for SAP (0x%x,0x%x)", dsap, ssap);
}
}
@@ -829,10 +818,10 @@
uint8_t* p_data) {
tLLCP_DLCB* p_dlcb;
- LLCP_TRACE_DEBUG0("llcp_dlc_proc_dm_pdu ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (length != LLCP_PDU_DM_SIZE - LLCP_PDU_HEADER_SIZE) {
- LLCP_TRACE_ERROR0("llcp_dlc_proc_dm_pdu (): Received invalid DM PDU");
+ LOG(ERROR) << StringPrintf("Received invalid DM PDU");
} else {
if (*p_data == LLCP_SAP_DM_REASON_RESP_DISC) {
/* local device initiated disconnecting */
@@ -847,9 +836,8 @@
llcp_dlsm_execute(p_dlcb, LLCP_DLC_EVENT_PEER_DISCONNECT_RESP,
p_data); /* passing reason */
} else {
- LLCP_TRACE_ERROR2(
- "llcp_dlc_proc_dm_pdu (): No data link for SAP (0x%x,0x%x)", dsap,
- ssap);
+ LOG(ERROR) << StringPrintf("No data link for SAP (0x%x,0x%x)", dsap,
+ ssap);
}
}
}
@@ -871,7 +859,7 @@
bool appended;
NFC_HDR* p_last_buf;
- LLCP_TRACE_DEBUG0("llcp_dlc_proc_i_pdu ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_dlcb = llcp_dlc_find_dlcb_by_sap(dsap, ssap);
@@ -885,7 +873,7 @@
if (i_pdu_length < LLCP_PDU_HEADER_SIZE + LLCP_SEQUENCE_SIZE) {
android_errorWriteLog(0x534e4554, "116722267");
- LLCP_TRACE_ERROR1("Insufficient I PDU length %d", i_pdu_length);
+ LOG(ERROR) << StringPrintf("Insufficient I PDU length %d", i_pdu_length);
if (p_msg) {
GKI_freebuf(p_msg);
}
@@ -895,8 +883,8 @@
info_len = i_pdu_length - LLCP_PDU_HEADER_SIZE - LLCP_SEQUENCE_SIZE;
if (info_len > p_dlcb->local_miu) {
- LLCP_TRACE_ERROR2(
- "llcp_dlc_proc_i_pdu (): exceeding local MIU (%d bytes): got %d "
+ LOG(ERROR) << StringPrintf(
+ "exceeding local MIU (%d bytes): got %d "
"bytes SDU",
p_dlcb->local_miu, info_len);
@@ -909,26 +897,24 @@
send_seq = LLCP_GET_NS(*p);
rcv_seq = LLCP_GET_NR(*p);
-#if (BT_TRACE_VERBOSE == TRUE)
- LLCP_TRACE_DEBUG6(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"LLCP RX I PDU - N(S,R):(%d,%d) V(S,SA,R,RA):(%d,%d,%d,%d)", send_seq,
rcv_seq, p_dlcb->next_tx_seq, p_dlcb->rcvd_ack_seq, p_dlcb->next_rx_seq,
p_dlcb->sent_ack_seq);
-#endif
/* if send sequence number, N(S) is not expected one, V(R) */
if (p_dlcb->next_rx_seq != send_seq) {
- LLCP_TRACE_ERROR2("llcp_dlc_proc_i_pdu (): Bad N(S) got:%d, expected:%d",
- send_seq, p_dlcb->next_rx_seq);
+ LOG(ERROR) << StringPrintf("Bad N(S) got:%d, expected:%d", send_seq,
+ p_dlcb->next_rx_seq);
error_flags |= LLCP_FRMR_S_ERROR_FLAG;
} else {
/* if peer device sends more than our receiving window size */
if ((uint8_t)(send_seq - p_dlcb->sent_ack_seq) % LLCP_SEQ_MODULO >=
p_dlcb->local_rw) {
- LLCP_TRACE_ERROR3(
- "llcp_dlc_proc_i_pdu (): Bad N(S):%d >= V(RA):%d + RW(L):%d",
- send_seq, p_dlcb->sent_ack_seq, p_dlcb->local_rw);
+ LOG(ERROR) << StringPrintf("Bad N(S):%d >= V(RA):%d + RW(L):%d",
+ send_seq, p_dlcb->sent_ack_seq,
+ p_dlcb->local_rw);
error_flags |= LLCP_FRMR_S_ERROR_FLAG;
}
@@ -940,9 +926,9 @@
(uint8_t)(p_dlcb->next_tx_seq - p_dlcb->rcvd_ack_seq) %
LLCP_SEQ_MODULO) {
error_flags |= LLCP_FRMR_R_ERROR_FLAG;
- LLCP_TRACE_ERROR3(
- "llcp_dlc_proc_i_pdu (): Bad N(R):%d valid range [V(SA):%d, V(S):%d]",
- rcv_seq, p_dlcb->rcvd_ack_seq, p_dlcb->next_tx_seq);
+ LOG(ERROR) << StringPrintf("Bad N(R):%d valid range [V(SA):%d, V(S):%d]",
+ rcv_seq, p_dlcb->rcvd_ack_seq,
+ p_dlcb->next_tx_seq);
}
/* if any error is found */
@@ -1018,7 +1004,7 @@
p_msg->len = LLCP_PDU_AGF_LEN_SIZE + info_len;
p_msg->layer_specific = 0;
} else {
- LLCP_TRACE_ERROR0("llcp_dlc_proc_i_pdu (): out of buffer");
+ LOG(ERROR) << StringPrintf("out of buffer");
}
}
@@ -1042,8 +1028,8 @@
if ((!p_dlcb->is_rx_congested) &&
(p_dlcb->num_rx_i_pdu >= p_dlcb->rx_congest_threshold)) {
- LLCP_TRACE_DEBUG2(
- "llcp_dlc_proc_i_pdu (): congested num_rx_i_pdu=%d, "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "congested num_rx_i_pdu=%d, "
"rx_congest_threshold=%d",
p_dlcb->num_rx_i_pdu, p_dlcb->rx_congest_threshold);
@@ -1053,8 +1039,7 @@
}
}
} else {
- LLCP_TRACE_ERROR2(
- "llcp_dlc_proc_i_pdu (): No data link for SAP (0x%x,0x%x)", dsap, ssap);
+ LOG(ERROR) << StringPrintf("No data link for SAP (0x%x,0x%x)", dsap, ssap);
llcp_util_send_dm(ssap, dsap, LLCP_SAP_DM_REASON_NO_ACTIVE_CONNECTION);
}
@@ -1080,7 +1065,7 @@
tLLCP_SAP_CBACK_DATA cback_data;
bool old_remote_busy;
- LLCP_TRACE_DEBUG0("llcp_dlc_proc_rr_rnr_pdu ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_dlcb = llcp_dlc_find_dlcb_by_sap(dsap, ssap);
if (p_dlcb != NULL) {
@@ -1102,8 +1087,8 @@
(uint8_t)(p_dlcb->next_tx_seq - p_dlcb->rcvd_ack_seq) %
LLCP_SEQ_MODULO) {
error_flags |= LLCP_FRMR_R_ERROR_FLAG;
- LLCP_TRACE_ERROR3(
- "llcp_dlc_proc_rr_rnr_pdu (): Bad N(R):%d valid range [V(SA):%d, "
+ LOG(ERROR) << StringPrintf(
+ "Bad N(R):%d valid range [V(SA):%d, "
"V(S):%d]",
rcv_seq, p_dlcb->rcvd_ack_seq, p_dlcb->next_tx_seq);
}
@@ -1114,18 +1099,17 @@
} else {
p_dlcb->rcvd_ack_seq = rcv_seq;
-#if (BT_TRACE_VERBOSE == TRUE)
- LLCP_TRACE_DEBUG5("LLCP RX - N(S,R):(NA,%d) V(S,SA,R,RA):(%d,%d,%d,%d)",
- rcv_seq, p_dlcb->next_tx_seq, p_dlcb->rcvd_ack_seq,
- p_dlcb->next_rx_seq, p_dlcb->sent_ack_seq);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("LLCP RX - N(S,R):(NA,%d) V(S,SA,R,RA):(%d,%d,%d,%d)",
+ rcv_seq, p_dlcb->next_tx_seq, p_dlcb->rcvd_ack_seq,
+ p_dlcb->next_rx_seq, p_dlcb->sent_ack_seq);
old_remote_busy = p_dlcb->remote_busy;
if (ptype == LLCP_PDU_RNR_TYPE) {
p_dlcb->remote_busy = true;
/* if upper layer hasn't get congestion started notification */
if ((!old_remote_busy) && (!p_dlcb->is_tx_congested)) {
- LLCP_TRACE_WARNING3(
- "llcp_dlc_proc_rr_rnr_pdu (): Data link (SSAP:DSAP=0x%X:0x%X) "
+ LOG(WARNING) << StringPrintf(
+ "Data link (SSAP:DSAP=0x%X:0x%X) "
"congestion start: i_xmit_q.count=%d",
p_dlcb->local_sap, p_dlcb->remote_sap, p_dlcb->i_xmit_q.count);
@@ -1142,8 +1126,8 @@
/* if upper layer hasn't get congestion ended notification and data link
* is not congested */
if ((old_remote_busy) && (!p_dlcb->is_tx_congested)) {
- LLCP_TRACE_WARNING3(
- "llcp_dlc_proc_rr_rnr_pdu (): Data link (SSAP:DSAP=0x%X:0x%X) "
+ LOG(WARNING) << StringPrintf(
+ "Data link (SSAP:DSAP=0x%X:0x%X) "
"congestion end: i_xmit_q.count=%d",
p_dlcb->local_sap, p_dlcb->remote_sap, p_dlcb->i_xmit_q.count);
@@ -1169,9 +1153,7 @@
}
}
} else {
- LLCP_TRACE_ERROR2(
- "llcp_dlc_proc_rr_rnr_pdu (): No data link for SAP (0x%x,0x%x)", dsap,
- ssap);
+ LOG(ERROR) << StringPrintf("No data link for SAP (0x%x,0x%x)", dsap, ssap);
}
}
@@ -1188,13 +1170,11 @@
uint16_t length, uint8_t* p_data) {
tLLCP_DLCB* p_dlcb;
- LLCP_TRACE_DEBUG3("llcp_dlc_proc_rx_pdu (): DSAP:0x%x, PTYPE:0x%x, SSAP:0x%x",
- dsap, ptype, ssap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("DSAP:0x%x, PTYPE:0x%x, SSAP:0x%x", dsap, ptype, ssap);
if (dsap == LLCP_SAP_LM) {
- LLCP_TRACE_ERROR2(
- "llcp_dlc_proc_rx_pdu (): Invalid SAP:0x%x for PTYPE:0x%x", dsap,
- ptype);
+ LOG(ERROR) << StringPrintf("Invalid SAP:0x%x for PTYPE:0x%x", dsap, ptype);
return;
}
@@ -1204,7 +1184,7 @@
break;
case LLCP_PDU_DISC_TYPE:
- llcp_dlc_proc_disc_pdu(dsap, ssap, length, p_data);
+ llcp_dlc_proc_disc_pdu(dsap, ssap, length);
break;
case LLCP_PDU_CC_TYPE:
@@ -1228,8 +1208,7 @@
break;
default:
- LLCP_TRACE_ERROR1("llcp_dlc_proc_rx_pdu (): Unexpected PDU type (0x%x)",
- ptype);
+ LOG(ERROR) << StringPrintf("Unexpected PDU type (0x%x)", ptype);
p_dlcb = llcp_dlc_find_dlcb_by_sap(dsap, ssap);
if (p_dlcb) {
@@ -1253,7 +1232,7 @@
uint8_t idx;
bool flush = true;
- LLCP_TRACE_DEBUG0("llcp_dlc_check_to_send_rr_rnr ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/*
** DLC doesn't send RR PDU for each received I PDU because multiple I PDUs
@@ -1297,9 +1276,9 @@
p_dlcb->remote_rw) {
return true;
} else {
- LLCP_TRACE_DEBUG3(
- "llcp_dlc_is_rw_open ():Flow Off, V(S):%d, V(SA):%d, RW(R):%d",
- p_dlcb->next_tx_seq, p_dlcb->rcvd_ack_seq, p_dlcb->remote_rw);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Flow Off, V(S):%d, V(SA):%d, RW(R):%d", p_dlcb->next_tx_seq,
+ p_dlcb->rcvd_ack_seq, p_dlcb->remote_rw);
return false;
}
}
@@ -1318,9 +1297,7 @@
bool flush = true;
tLLCP_SAP_CBACK_DATA data;
-#if (BT_TRACE_VERBOSE == TRUE)
uint8_t send_seq = p_dlcb->next_tx_seq;
-#endif
/* if there is data to send and remote device can receive it */
if ((p_dlcb->i_xmit_q.count) && (!p_dlcb->remote_busy) &&
@@ -1335,16 +1312,13 @@
p_dlcb->next_tx_seq = (p_dlcb->next_tx_seq + 1) % LLCP_SEQ_MODULO;
-#if (BT_TRACE_VERBOSE == TRUE)
- LLCP_TRACE_DEBUG6("LLCP TX - N(S,R):(%d,%d) V(S,SA,R,RA):(%d,%d,%d,%d)",
- send_seq, p_dlcb->next_rx_seq, p_dlcb->next_tx_seq,
- p_dlcb->rcvd_ack_seq, p_dlcb->next_rx_seq,
- p_dlcb->sent_ack_seq);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "LLCP TX - N(S,R):(%d,%d) V(S,SA,R,RA):(%d,%d,%d,%d)", send_seq,
+ p_dlcb->next_rx_seq, p_dlcb->next_tx_seq, p_dlcb->rcvd_ack_seq,
+ p_dlcb->next_rx_seq, p_dlcb->sent_ack_seq);
} else {
- LLCP_TRACE_ERROR2(
- "LLCP - llcp_dlc_get_next_pdu (): offset (%d) must be %d at least",
- p_msg->offset, LLCP_MIN_OFFSET);
+ LOG(ERROR) << StringPrintf("offset (%d) must be %d at least",
+ p_msg->offset, LLCP_MIN_OFFSET);
GKI_freebuf(p_msg);
p_msg = NULL;
}
@@ -1397,7 +1371,6 @@
return 0;
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function llcp_dlsm_get_state_name
@@ -1407,20 +1380,20 @@
** Returns pointer to the name
**
*******************************************************************************/
-static char* llcp_dlsm_get_state_name(tLLCP_DLC_STATE state) {
+static std::string llcp_dlsm_get_state_name(tLLCP_DLC_STATE state) {
switch (state) {
case LLCP_DLC_STATE_IDLE:
- return ("IDLE");
+ return "IDLE";
case LLCP_DLC_STATE_W4_REMOTE_RESP:
- return ("W4_REMOTE_RESP");
+ return "W4_REMOTE_RESP";
case LLCP_DLC_STATE_W4_LOCAL_RESP:
- return ("W4_LOCAL_RESP");
+ return "W4_LOCAL_RESP";
case LLCP_DLC_STATE_CONNECTED:
- return ("CONNECTED");
+ return "CONNECTED";
case LLCP_DLC_STATE_W4_REMOTE_DM:
- return ("W4_REMOTE_DM");
+ return "W4_REMOTE_DM";
default:
- return ("???? UNKNOWN STATE");
+ return "???? UNKNOWN STATE";
}
}
@@ -1433,41 +1406,35 @@
** Returns pointer to the name
**
*******************************************************************************/
-static char* llcp_dlsm_get_event_name(tLLCP_DLC_EVENT event) {
+static std::string llcp_dlsm_get_event_name(tLLCP_DLC_EVENT event) {
switch (event) {
case LLCP_DLC_EVENT_API_CONNECT_REQ:
- return ("API_CONNECT_REQ");
+ return "API_CONNECT_REQ";
case LLCP_DLC_EVENT_API_CONNECT_CFM:
- return ("API_CONNECT_CFM");
+ return "API_CONNECT_CFM";
case LLCP_DLC_EVENT_API_CONNECT_REJECT:
- return ("API_CONNECT_REJECT");
+ return "API_CONNECT_REJECT";
case LLCP_DLC_EVENT_PEER_CONNECT_IND:
- return ("PEER_CONNECT_IND");
+ return "PEER_CONNECT_IND";
case LLCP_DLC_EVENT_PEER_CONNECT_CFM:
- return ("PEER_CONNECT_CFM");
-
+ return "PEER_CONNECT_CFM";
case LLCP_DLC_EVENT_API_DATA_REQ:
- return ("API_DATA_REQ");
+ return "API_DATA_REQ";
case LLCP_DLC_EVENT_PEER_DATA_IND:
- return ("PEER_DATA_IND");
-
+ return "PEER_DATA_IND";
case LLCP_DLC_EVENT_API_DISCONNECT_REQ:
- return ("API_DISCONNECT_REQ");
+ return "API_DISCONNECT_REQ";
case LLCP_DLC_EVENT_PEER_DISCONNECT_IND:
- return ("PEER_DISCONNECT_IND");
+ return "PEER_DISCONNECT_IND";
case LLCP_DLC_EVENT_PEER_DISCONNECT_RESP:
- return ("PEER_DISCONNECT_RESP");
-
+ return "PEER_DISCONNECT_RESP";
case LLCP_DLC_EVENT_FRAME_ERROR:
- return ("FRAME_ERROR");
+ return "FRAME_ERROR";
case LLCP_DLC_EVENT_LINK_ERROR:
- return ("LINK_ERROR");
-
+ return "LINK_ERROR";
case LLCP_DLC_EVENT_TIMEOUT:
- return ("TIMEOUT");
-
+ return "TIMEOUT";
default:
- return ("???? UNKNOWN EVENT");
+ return "???? UNKNOWN EVENT";
}
}
-#endif /* (BT_TRACE_VERBOSE == TRUE) */
diff --git a/src/nfc/llcp/llcp_link.c b/src/nfc/llcp/llcp_link.cc
similarity index 92%
rename from src/nfc/llcp/llcp_link.c
rename to src/nfc/llcp/llcp_link.cc
index 78d3b51..f144d45 100644
--- a/src/nfc/llcp/llcp_link.c
+++ b/src/nfc/llcp/llcp_link.cc
@@ -22,17 +22,21 @@
*
******************************************************************************/
-#include <log/log.h>
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+#include <log/log.h>
#include "bt_types.h"
#include "gki.h"
#include "llcp_defs.h"
#include "llcp_int.h"
#include "nfa_dm_int.h"
#include "nfc_int.h"
-#include "nfc_target.h"
#include "trace_api.h"
+using android::base::StringPrintf;
+
const uint16_t llcp_link_rwt
[15] = /* RWT = (302us)*2**WT; 302us = 256*16/fc; fc = 13.56MHz */
{
@@ -78,12 +82,11 @@
extern tLLCP_TEST_PARAMS llcp_test_params;
#endif
+extern bool nfc_debug_enabled;
extern unsigned char appl_dta_mode_flag;
/* debug functions type */
-#if (BT_TRACE_VERBOSE == TRUE)
-static char* llcp_pdu_type(uint8_t ptype);
-#endif
+static std::string llcp_pdu_type(uint8_t ptype);
/*******************************************************************************
**
@@ -97,8 +100,8 @@
static void llcp_link_start_inactivity_timer(void) {
if ((llcp_cb.lcb.inact_timer.in_use == false) &&
(llcp_cb.lcb.inact_timeout > 0)) {
- LLCP_TRACE_DEBUG1("Start inactivity_timer: %d ms",
- llcp_cb.lcb.inact_timeout);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Start inactivity_timer: %d ms", llcp_cb.lcb.inact_timeout);
nfc_start_quick_timer(&llcp_cb.lcb.inact_timer, NFC_TTYPE_LLCP_LINK_INACT,
((uint32_t)llcp_cb.lcb.inact_timeout) *
@@ -117,7 +120,7 @@
*******************************************************************************/
static void llcp_link_stop_inactivity_timer(void) {
if (llcp_cb.lcb.inact_timer.in_use) {
- LLCP_TRACE_DEBUG0("Stop inactivity_timer");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Stop inactivity_timer");
nfc_stop_quick_timer(&llcp_cb.lcb.inact_timer);
}
@@ -170,23 +173,23 @@
**
*******************************************************************************/
tLLCP_STATUS llcp_link_activate(tLLCP_ACTIVATE_CONFIG* p_config) {
- LLCP_TRACE_DEBUG0("llcp_link_activate ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* At this point, MAC link activation procedure has been successfully
* completed */
/* The Length Reduction values LRi and LRt MUST be 11b. (254bytes) */
if (p_config->max_payload_size != LLCP_NCI_MAX_PAYL_SIZE) {
- LLCP_TRACE_WARNING2(
- "llcp_link_activate (): max payload size (%d) must be %d bytes",
- p_config->max_payload_size, LLCP_NCI_MAX_PAYL_SIZE);
+ LOG(WARNING) << StringPrintf("max payload size (%d) must be %d bytes",
+ p_config->max_payload_size,
+ LLCP_NCI_MAX_PAYL_SIZE);
}
/* Processing the parametes that have been received with the MAC link
* activation */
if (llcp_link_parse_gen_bytes(p_config->gen_bytes_len,
p_config->p_gen_bytes) == false) {
- LLCP_TRACE_ERROR0("llcp_link_activate (): Failed to parse general bytes");
+ LOG(ERROR) << StringPrintf("Failed to parse general bytes");
/* For LLCP DTA test, In case of bad magic bytes normal p2p communication is
* expected,but in case of wrong magic bytes in ATR_REQ, LLC layer will be
* disconnected but P2P connection is expected to be in connected state
@@ -225,8 +228,8 @@
*/
if ((p_config->is_initiator) &&
(llcp_link_rwt[p_config->waiting_time] > llcp_cb.lcb.peer_lto)) {
- LLCP_TRACE_WARNING3(
- "llcp_link_activate (): WT (%d, %dms) must be less than or equal to "
+ LOG(WARNING) << StringPrintf(
+ "WT (%d, %dms) must be less than or equal to "
"LTO (%dms)",
p_config->waiting_time, llcp_link_rwt[p_config->waiting_time],
llcp_cb.lcb.peer_lto);
@@ -240,7 +243,7 @@
}
/* LLCP version number agreement */
if (llcp_link_version_agreement() == false) {
- LLCP_TRACE_ERROR0("llcp_link_activate (): Failed to agree version");
+ LOG(ERROR) << StringPrintf("Failed to agree version");
(*llcp_cb.lcb.p_link_cback)(LLCP_LINK_ACTIVATION_FAILED_EVT,
LLCP_LINK_VERSION_FAILED);
@@ -270,7 +273,7 @@
** symmetry procedure.
*/
if (llcp_cb.lcb.is_initiator) {
- LLCP_TRACE_DEBUG0("llcp_link_activate (): Connected as Initiator");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Connected as Initiator");
llcp_cb.lcb.inact_timeout = llcp_cb.lcb.inact_timeout_init;
llcp_cb.lcb.symm_state = LLCP_LINK_SYMM_LOCAL_XMIT_NEXT;
@@ -285,7 +288,7 @@
llcp_link_send_SYMM();
}
} else {
- LLCP_TRACE_DEBUG0("llcp_link_activate (): Connected as Target");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Connected as Target");
llcp_cb.lcb.inact_timeout = llcp_cb.lcb.inact_timeout_target;
llcp_cb.lcb.symm_state = LLCP_LINK_SYMM_REMOTE_XMIT_NEXT;
@@ -353,8 +356,8 @@
if ((llcp_cb.lcb.symm_delay > 0) &&
(llcp_cb.lcb.symm_state == LLCP_LINK_SYMM_LOCAL_XMIT_NEXT)) {
/* upper layer doesn't have anything to send */
- LLCP_TRACE_DEBUG0(
- "llcp_link_process_link_timeout (): LEVT_TIMEOUT in state of "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "LEVT_TIMEOUT in state of "
"LLCP_LINK_SYMM_LOCAL_XMIT_NEXT");
llcp_link_send_SYMM();
@@ -366,8 +369,8 @@
llcp_link_start_inactivity_timer();
}
} else {
- LLCP_TRACE_ERROR0(
- "llcp_link_process_link_timeout (): LEVT_TIMEOUT in state of "
+ LOG(ERROR) << StringPrintf(
+ "LEVT_TIMEOUT in state of "
"LLCP_LINK_SYMM_REMOTE_XMIT_NEXT");
llcp_link_deactivate(LLCP_LINK_TIMEOUT);
}
@@ -392,7 +395,7 @@
tLLCP_DLCB* p_dlcb;
tLLCP_APP_CB* p_app_cb;
- LLCP_TRACE_DEBUG1("llcp_link_deactivate () reason = 0x%x", reason);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("reason = 0x%x", reason);
/* Release any held buffers in signaling PDU queue */
while (llcp_cb.lcb.sig_xmit_q.p_first)
@@ -449,8 +452,8 @@
llcp_util_send_disc(LLCP_SAP_LM, LLCP_SAP_LM);
/* Wait until DISC is sent to peer */
- LLCP_TRACE_DEBUG0(
- "llcp_link_deactivate (): Wait until DISC is sent to peer");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Wait until DISC is sent to peer");
llcp_cb.lcb.link_state = LLCP_LINK_STATE_DEACTIVATING;
@@ -528,8 +531,8 @@
peer_minor_version = LLCP_GET_MINOR_VERSION(llcp_cb.lcb.peer_version);
if (peer_major_version < LLCP_MIN_MAJOR_VERSION) {
- LLCP_TRACE_ERROR1(
- "llcp_link_version_agreement(): unsupported peer version number. Peer "
+ LOG(ERROR) << StringPrintf(
+ "unsupported peer version number. Peer "
"Major Version:%d",
peer_major_version);
return false;
@@ -551,7 +554,7 @@
llcp_cb.lcb.agreed_minor_version = LLCP_VERSION_MINOR;
}
- LLCP_TRACE_DEBUG6(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"local version:%d.%d, remote version:%d.%d, agreed version:%d.%d",
LLCP_VERSION_MAJOR, LLCP_VERSION_MINOR, peer_major_version,
peer_minor_version, llcp_cb.lcb.agreed_major_version,
@@ -615,7 +618,7 @@
/* overall buffer usage is high */
llcp_cb.overall_tx_congested = true;
- LLCP_TRACE_WARNING2(
+ LOG(WARNING) << StringPrintf(
"overall tx congestion start: total_tx_ui_pdu=%d, total_tx_i_pdu=%d",
llcp_cb.total_tx_ui_pdu, llcp_cb.total_tx_i_pdu);
@@ -635,7 +638,7 @@
if (!p_app_cb->is_ui_tx_congested) {
p_app_cb->is_ui_tx_congested = true;
- LLCP_TRACE_WARNING2(
+ LOG(WARNING) << StringPrintf(
"Logical link (SAP=0x%X) congestion start: count=%d", sap,
p_app_cb->ui_xmit_q.count);
@@ -654,7 +657,7 @@
(llcp_cb.dlcb[idx].is_tx_congested == false)) {
llcp_cb.dlcb[idx].is_tx_congested = true;
- LLCP_TRACE_WARNING3(
+ LOG(WARNING) << StringPrintf(
"Data link (SSAP:DSAP=0x%X:0x%X) congestion start: count=%d",
llcp_cb.dlcb[idx].local_sap, llcp_cb.dlcb[idx].remote_sap,
llcp_cb.dlcb[idx].i_xmit_q.count);
@@ -690,7 +693,7 @@
/* overall congestion is cleared */
llcp_cb.overall_tx_congested = false;
- LLCP_TRACE_WARNING2(
+ LOG(WARNING) << StringPrintf(
"overall tx congestion end: total_tx_ui_pdu=%d, total_tx_i_pdu=%d",
llcp_cb.total_tx_ui_pdu, llcp_cb.total_tx_i_pdu);
} else {
@@ -726,8 +729,9 @@
/* if it was congested but now tx queue count is below threshold */
p_app_cb->is_ui_tx_congested = false;
- LLCP_TRACE_DEBUG2("Logical link (SAP=0x%X) congestion end: count=%d",
- sap, p_app_cb->ui_xmit_q.count);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Logical link (SAP=0x%X) congestion end: count=%d", sap,
+ p_app_cb->ui_xmit_q.count);
data.congest.local_sap = sap;
p_app_cb->p_app_cback(&data);
@@ -771,7 +775,7 @@
llcp_cb.dlcb[idx].is_tx_congested = false;
if (llcp_cb.dlcb[idx].remote_busy == false) {
- LLCP_TRACE_DEBUG3(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"Data link (SSAP:DSAP=0x%X:0x%X) congestion end: count=%d",
llcp_cb.dlcb[idx].local_sap, llcp_cb.dlcb[idx].remote_sap,
llcp_cb.dlcb[idx].i_xmit_q.count);
@@ -876,8 +880,8 @@
if (llcp_cb.lcb.symm_state == LLCP_LINK_SYMM_LOCAL_XMIT_NEXT ||
(appl_dta_mode_flag &&
llcp_cb.lcb.link_state == LLCP_LINK_STATE_DEACTIVATING)) {
- LLCP_TRACE_DEBUG0(
- "llcp_link_check_send_data () in state of "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "in state of "
"LLCP_LINK_SYMM_LOCAL_XMIT_NEXT");
p_pdu = llcp_link_build_next_pdu(NULL);
@@ -974,9 +978,8 @@
/* if application is registered and expecting UI PDU on logical data link */
if ((p_app_cb) && (p_app_cb->p_app_cback) &&
(p_app_cb->link_type & LLCP_LINK_TYPE_LOGICAL_DATA_LINK)) {
- LLCP_TRACE_DEBUG2(
- "llcp_link_proc_ui_pdu () Local SAP:0x%x, Remote SAP:0x%x", local_sap,
- remote_sap);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Local SAP:0x%x, Remote SAP:0x%x", local_sap, remote_sap);
/* if this is not from AGF PDU */
if (p_msg) {
@@ -1039,7 +1042,7 @@
p_msg->len = LLCP_PDU_AGF_LEN_SIZE + ui_pdu_length;
p_msg->layer_specific = 0;
} else {
- LLCP_TRACE_ERROR0("llcp_link_proc_ui_pdu (): out of buffer");
+ LOG(ERROR) << StringPrintf("out of buffer");
}
}
@@ -1051,8 +1054,8 @@
}
if (p_app_cb->ui_rx_q.count > llcp_cb.ll_rx_congest_start) {
- LLCP_TRACE_WARNING2(
- "llcp_link_proc_ui_pdu (): SAP:0x%x, rx link is congested (%d), "
+ LOG(WARNING) << StringPrintf(
+ "SAP:0x%x, rx link is congested (%d), "
"discard oldest UI PDU",
local_sap, p_app_cb->ui_rx_q.count);
@@ -1068,8 +1071,7 @@
(*p_app_cb->p_app_cback)(&data);
}
} else {
- LLCP_TRACE_ERROR1("llcp_link_proc_ui_pdu (): Unregistered SAP:0x%x",
- local_sap);
+ LOG(ERROR) << StringPrintf("Unregistered SAP:0x%x", local_sap);
if (p_msg) {
GKI_freebuf(p_msg);
@@ -1106,8 +1108,7 @@
if (agf_length > LLCP_PDU_AGF_LEN_SIZE) {
BE_STREAM_TO_UINT16(pdu_length, p);
if (pdu_length < LLCP_PDU_HEADER_SIZE) {
- LLCP_TRACE_ERROR0(
- "llcp_link_proc_agf_pdu (): Received invalid encapsulated PDU");
+ LOG(ERROR) << StringPrintf("Received invalid encapsulated PDU");
break;
}
agf_length -= LLCP_PDU_AGF_LEN_SIZE;
@@ -1126,7 +1127,7 @@
if (agf_length != 0 || pdu_num < 2) {
android_errorWriteLog(0x534e4554, "116791157");
- LLCP_TRACE_ERROR0("llcp_link_proc_agf_pdu (): Received invalid AGF PDU");
+ LOG(ERROR) << StringPrintf("Received invalid AGF PDU");
GKI_freebuf(p_agf);
return;
}
@@ -1151,12 +1152,10 @@
ptype = (uint8_t)(LLCP_GET_PTYPE(pdu_hdr));
ssap = LLCP_GET_SSAP(pdu_hdr);
-#if (BT_TRACE_VERBOSE == TRUE)
- LLCP_TRACE_DEBUG4(
- "llcp_link_proc_agf_pdu (): Rx DSAP:0x%x, PTYPE:%s (0x%x), SSAP:0x%x "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Rx DSAP:0x%x, PTYPE:%s (0x%x), SSAP:0x%x "
"in AGF",
- dsap, llcp_pdu_type(ptype), ptype, ssap);
-#endif
+ dsap, llcp_pdu_type(ptype).c_str(), ptype, ssap);
if ((ptype == LLCP_PDU_DISC_TYPE) && (dsap == LLCP_SAP_LM) &&
(ssap == LLCP_SAP_LM)) {
@@ -1164,14 +1163,11 @@
llcp_link_deactivate(LLCP_LINK_REMOTE_INITIATED);
return;
} else if (ptype == LLCP_PDU_AGF_TYPE) {
- LLCP_TRACE_ERROR0(
- "llcp_link_proc_agf_pdu (): AGF PDU shall not be in AGF");
+ LOG(ERROR) << StringPrintf("AGF PDU shall not be in AGF");
} else if (ptype == LLCP_PDU_SYMM_TYPE) {
- LLCP_TRACE_ERROR0(
- "llcp_link_proc_agf_pdu (): SYMM PDU exchange shall not be in AGF");
+ LOG(ERROR) << StringPrintf("SYMM PDU exchange shall not be in AGF");
} else if (ptype == LLCP_PDU_PAX_TYPE) {
- LLCP_TRACE_ERROR0(
- "llcp_link_proc_agf_pdu (): PAX PDU exchange shall not be used");
+ LOG(ERROR) << StringPrintf("PAX PDU exchange shall not be used");
} else if (ptype == LLCP_PDU_SNL_TYPE) {
llcp_sdp_proc_snl((uint16_t)(pdu_length - LLCP_PDU_HEADER_SIZE), p_info);
} else if ((ptype == LLCP_PDU_UI_TYPE) &&
@@ -1209,8 +1205,7 @@
switch (ptype) {
case LLCP_PDU_PAX_TYPE:
- LLCP_TRACE_ERROR0(
- "llcp_link_proc_rx_pdu (); PAX PDU exchange shall not be used");
+ LOG(ERROR) << StringPrintf("; PAX PDU exchange shall not be used");
break;
case LLCP_PDU_DISC_TYPE:
@@ -1289,7 +1284,8 @@
llcp_link_process_link_timeout();
} else {
if (p_msg->len < LLCP_PDU_HEADER_SIZE) {
- LLCP_TRACE_ERROR1("Received too small PDU: got %d bytes", p_msg->len);
+ LOG(ERROR) << StringPrintf("Received too small PDU: got %d bytes",
+ p_msg->len);
frame_error = true;
} else {
p = (uint8_t*)(p_msg + 1) + p_msg->offset;
@@ -1306,7 +1302,8 @@
info_length =
p_msg->len - LLCP_PDU_HEADER_SIZE - LLCP_SEQUENCE_SIZE;
} else {
- LLCP_TRACE_ERROR0("Received I/RR/RNR PDU without sequence");
+ LOG(ERROR) << StringPrintf(
+ "Received I/RR/RNR PDU without sequence");
frame_error = true;
}
} else {
@@ -1315,22 +1312,21 @@
/* check if length of information is bigger than link MIU */
if ((!frame_error) && (info_length > llcp_cb.lcb.local_link_miu)) {
- LLCP_TRACE_ERROR2("Received exceeding MIU (%d): got %d bytes SDU",
- llcp_cb.lcb.local_link_miu, info_length);
+ LOG(ERROR) << StringPrintf(
+ "Received exceeding MIU (%d): got %d bytes SDU",
+ llcp_cb.lcb.local_link_miu, info_length);
frame_error = true;
} else {
-#if (BT_TRACE_VERBOSE == TRUE)
- LLCP_TRACE_DEBUG4(
- "llcp_link_proc_rx_data (): DSAP:0x%x, PTYPE:%s (0x%x), "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "DSAP:0x%x, PTYPE:%s (0x%x), "
"SSAP:0x%x",
- dsap, llcp_pdu_type(ptype), ptype, ssap);
-#endif
+ dsap, llcp_pdu_type(ptype).c_str(), ptype, ssap);
if (ptype == LLCP_PDU_SYMM_TYPE) {
if (info_length > 0) {
- LLCP_TRACE_ERROR1("Received extra data (%d bytes) in SYMM PDU",
- info_length);
+ LOG(ERROR) << StringPrintf(
+ "Received extra data (%d bytes) in SYMM PDU", info_length);
frame_error = true;
}
} else {
@@ -1349,7 +1345,7 @@
llcp_link_check_send_data();
}
} else {
- LLCP_TRACE_ERROR0("Received PDU in state of SYMM_MUST_XMIT_NEXT");
+ LOG(ERROR) << StringPrintf("Received PDU in state of SYMM_MUST_XMIT_NEXT");
}
if (free_buffer) GKI_freebuf(p_msg);
@@ -1485,7 +1481,7 @@
uint8_t *p, ptype;
uint16_t next_pdu_length, pdu_hdr;
- LLCP_TRACE_DEBUG0("llcp_link_build_next_pdu ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* add any pending SNL PDU into sig_xmit_q for transmitting */
llcp_sdp_check_send_snl();
@@ -1536,7 +1532,7 @@
GKI_freebuf(p_msg);
p_msg = p_agf;
} else {
- LLCP_TRACE_ERROR0("llcp_link_build_next_pdu (): Out of buffer");
+ LOG(ERROR) << StringPrintf("Out of buffer");
return p_msg;
}
} else {
@@ -1583,9 +1579,7 @@
**
*******************************************************************************/
static void llcp_link_send_to_lower(NFC_HDR* p_pdu) {
-#if (BT_TRACE_PROTOCOL == TRUE)
DispLLCP(p_pdu, false);
-#endif
llcp_cb.lcb.symm_state = LLCP_LINK_SYMM_REMOTE_XMIT_NEXT;
@@ -1601,12 +1595,10 @@
** Returns void
**
*******************************************************************************/
-void llcp_link_connection_cback(uint8_t conn_id, tNFC_CONN_EVT event,
- tNFC_CONN* p_data) {
+void llcp_link_connection_cback(__attribute__((unused)) uint8_t conn_id,
+ tNFC_CONN_EVT event, tNFC_CONN* p_data) {
if (event == NFC_DATA_CEVT) {
-#if (BT_TRACE_PROTOCOL == TRUE)
DispLLCP((NFC_HDR*)p_data->data.p_data, true);
-#endif
if (llcp_cb.lcb.link_state == LLCP_LINK_STATE_DEACTIVATED) {
/* respoding SYMM while LLCP is deactivated but RF link is not deactivated
* yet */
@@ -1656,7 +1648,6 @@
*/
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function llcp_pdu_type
@@ -1666,7 +1657,7 @@
** Returns string of PDU type
**
*******************************************************************************/
-static char* llcp_pdu_type(uint8_t ptype) {
+static std::string llcp_pdu_type(uint8_t ptype) {
switch (ptype) {
case LLCP_PDU_SYMM_TYPE:
return "SYMM";
@@ -1694,10 +1685,7 @@
return "RR";
case LLCP_PDU_RNR_TYPE:
return "RNR";
-
default:
return "RESERVED";
}
}
-
-#endif
diff --git a/src/nfc/llcp/llcp_main.c b/src/nfc/llcp/llcp_main.cc
similarity index 83%
rename from src/nfc/llcp/llcp_main.c
rename to src/nfc/llcp/llcp_main.cc
index 577777c..1185e01 100644
--- a/src/nfc/llcp/llcp_main.c
+++ b/src/nfc/llcp/llcp_main.cc
@@ -23,13 +23,19 @@
******************************************************************************/
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "bt_types.h"
#include "gki.h"
#include "llcp_api.h"
-#include "llcp_defs.h"
#include "llcp_int.h"
#include "nfc_int.h"
-#include "nfc_target.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
tLLCP_CB llcp_cb;
@@ -48,9 +54,7 @@
memset(&llcp_cb, 0, sizeof(tLLCP_CB));
- llcp_cb.trace_level = LLCP_INITIAL_TRACE_LEVEL;
-
- LLCP_TRACE_DEBUG0("LLCP - llcp_init ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
llcp_cb.lcb.local_link_miu =
(LLCP_MIU <= LLCP_MAX_MIU ? LLCP_MIU : LLCP_MAX_MIU);
@@ -82,7 +86,7 @@
llcp_cb.max_num_ll_rx_buff =
(uint8_t)((llcp_cb.num_rx_buff * LLCP_LL_RX_BUFF_LIMIT) / 100);
- LLCP_TRACE_DEBUG4(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"num_rx_buff = %d, rx_congest_start = %d, rx_congest_end = %d, "
"max_num_ll_rx_buff = %d",
llcp_cb.num_rx_buff, llcp_cb.overall_rx_congest_start,
@@ -95,8 +99,9 @@
llcp_cb.max_num_ll_tx_buff =
(uint8_t)((llcp_cb.max_num_tx_buff * LLCP_LL_TX_BUFF_LIMIT) / 100);
- LLCP_TRACE_DEBUG2("max_num_tx_buff = %d, max_num_ll_tx_buff = %d",
- llcp_cb.max_num_tx_buff, llcp_cb.max_num_ll_tx_buff);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("max_num_tx_buff = %d, max_num_ll_tx_buff = %d",
+ llcp_cb.max_num_tx_buff, llcp_cb.max_num_ll_tx_buff);
llcp_cb.ll_tx_uncongest_ntf_start_sap = LLCP_SAP_SDP + 1;
@@ -117,7 +122,7 @@
uint8_t sap;
tLLCP_APP_CB* p_app_cb;
- LLCP_TRACE_DEBUG0("LLCP - llcp_cleanup ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
for (sap = LLCP_SAP_SDP; sap < LLCP_NUM_SAPS; sap++) {
p_app_cb = llcp_util_get_app_cb(sap);
@@ -143,7 +148,8 @@
void llcp_process_timeout(TIMER_LIST_ENT* p_tle) {
uint8_t reason;
- LLCP_TRACE_DEBUG1("llcp_process_timeout: event=%d", p_tle->event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("llcp_process_timeout: event=%d", p_tle->event);
switch (p_tle->event) {
case NFC_TTYPE_LLCP_LINK_MANAGER:
@@ -170,19 +176,3 @@
break;
}
}
-
-/*******************************************************************************
-**
-** Function LLCP_SetTraceLevel
-**
-** Description This function sets the trace level for LLCP. If called with
-** a value of 0xFF, it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-uint8_t LLCP_SetTraceLevel(uint8_t new_level) {
- if (new_level != 0xFF) llcp_cb.trace_level = new_level;
-
- return (llcp_cb.trace_level);
-}
diff --git a/src/nfc/llcp/llcp_sdp.c b/src/nfc/llcp/llcp_sdp.cc
similarity index 89%
rename from src/nfc/llcp/llcp_sdp.c
rename to src/nfc/llcp/llcp_sdp.cc
index 2c40263..affa4ff 100644
--- a/src/nfc/llcp/llcp_sdp.c
+++ b/src/nfc/llcp/llcp_sdp.cc
@@ -23,13 +23,19 @@
******************************************************************************/
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "bt_types.h"
#include "gki.h"
#include "llcp_api.h"
-#include "llcp_defs.h"
#include "llcp_int.h"
#include "nfa_dm_int.h"
-#include "nfc_target.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*******************************************************************************
**
@@ -41,7 +47,7 @@
** Returns void
**
*******************************************************************************/
-void llcp_sdp_proc_data(tLLCP_SAP_CBACK_DATA* p_data) {
+void llcp_sdp_proc_data(__attribute__((unused)) tLLCP_SAP_CBACK_DATA* p_data) {
/*
** Do nothing
** llcp_sdp_proc_SNL () is called by link layer
@@ -63,7 +69,7 @@
uint8_t* p;
if (llcp_cb.sdp_cb.p_snl) {
- LLCP_TRACE_DEBUG0("SDP: llcp_sdp_check_send_snl ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
llcp_cb.sdp_cb.p_snl->len += LLCP_PDU_HEADER_SIZE;
llcp_cb.sdp_cb.p_snl->offset -= LLCP_PDU_HEADER_SIZE;
@@ -124,8 +130,8 @@
uint16_t name_len;
uint16_t available_bytes;
- LLCP_TRACE_DEBUG2("llcp_sdp_send_sdreq (): tid=0x%x, ServiceName=%s", tid,
- p_name);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("tid=0x%x, ServiceName=%s", tid, p_name);
/* if there is no pending SNL */
if (!llcp_cb.sdp_cb.p_snl) {
@@ -219,7 +225,8 @@
tLLCP_STATUS status;
uint16_t available_bytes;
- LLCP_TRACE_DEBUG2("llcp_sdp_send_sdres (): tid=0x%x, SAP=0x%x", tid, sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("tid=0x%x, SAP=0x%x", tid, sap);
/* if there is no pending SNL */
if (!llcp_cb.sdp_cb.p_snl) {
@@ -318,7 +325,8 @@
static void llcp_sdp_return_sap(uint8_t tid, uint8_t sap) {
uint8_t i;
- LLCP_TRACE_DEBUG2("llcp_sdp_return_sap (): tid=0x%x, SAP=0x%x", tid, sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("tid=0x%x, SAP=0x%x", tid, sap);
for (i = 0; i < LLCP_MAX_SDP_TRANSAC; i++) {
if ((llcp_cb.sdp_cb.transac[i].p_cback) &&
@@ -344,7 +352,7 @@
void llcp_sdp_proc_deactivation(void) {
uint8_t i;
- LLCP_TRACE_DEBUG0("llcp_sdp_proc_deactivation ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
for (i = 0; i < LLCP_MAX_SDP_TRANSAC; i++) {
if (llcp_cb.sdp_cb.transac[i].p_cback) {
@@ -377,13 +385,13 @@
tLLCP_STATUS llcp_sdp_proc_snl(uint16_t sdu_length, uint8_t* p) {
uint8_t type, length, tid, sap, *p_value;
- LLCP_TRACE_DEBUG0("llcp_sdp_proc_snl ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if ((llcp_cb.lcb.agreed_major_version < LLCP_MIN_SNL_MAJOR_VERSION) ||
((llcp_cb.lcb.agreed_major_version == LLCP_MIN_SNL_MAJOR_VERSION) &&
(llcp_cb.lcb.agreed_minor_version < LLCP_MIN_SNL_MINOR_VERSION))) {
- LLCP_TRACE_DEBUG0(
- "llcp_sdp_proc_snl(): version number less than 1.1, SNL not "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "version number less than 1.1, SNL not "
"supported.");
return LLCP_STATUS_FAIL;
}
@@ -406,10 +414,11 @@
* SNL PDU i'e with improper service name "urn:nfc:sn:dta-co-echo-in",
* the IUT should not send any PDU except SYMM PDU */
if (appl_dta_mode_flag == 1 && sap == 0x00) {
- LLCP_TRACE_DEBUG2("%s: In dta mode sap == 0x00 p_value = %s",
- __func__, p_value);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "%s: In dta mode sap == 0x00 p_value = %s", __func__, p_value);
if ((length - 1) == strlen((const char*)p_value)) {
- LLCP_TRACE_DEBUG1("%s: Strings are not equal", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: Strings are not equal", __func__);
llcp_sdp_send_sdres(tid, sap);
}
} else {
@@ -419,14 +428,14 @@
/*For P2P in LLCP mode TC_CTO_TAR_BI_03_x(x=3) fix*/
if (appl_dta_mode_flag == 1 &&
((nfa_dm_cb.eDtaMode & 0x0F) == NFA_DTA_LLCP_MODE)) {
- LLCP_TRACE_ERROR1("%s: Calling llcp_sdp_send_sdres", __func__);
+ LOG(ERROR) << StringPrintf("%s: Calling llcp_sdp_send_sdres",
+ __func__);
tid = 0x01;
sap = 0x00;
llcp_sdp_send_sdres(tid, sap);
}
- LLCP_TRACE_ERROR1(
- "llcp_sdp_proc_snl (): bad length (%d) in LLCP_SDREQ_TYPE",
- length);
+ LOG(ERROR) << StringPrintf("bad length (%d) in LLCP_SDREQ_TYPE",
+ length);
}
break;
@@ -439,15 +448,13 @@
BE_STREAM_TO_UINT8(sap, p_value);
llcp_sdp_return_sap(tid, sap);
} else {
- LLCP_TRACE_ERROR1(
- "llcp_sdp_proc_snl (): bad length (%d) in LLCP_SDRES_TYPE",
- length);
+ LOG(ERROR) << StringPrintf("bad length (%d) in LLCP_SDRES_TYPE",
+ length);
}
break;
default:
- LLCP_TRACE_WARNING1(
- "llcp_sdp_proc_snl (): Unknown type (0x%x) is ignored", type);
+ LOG(WARNING) << StringPrintf("Unknown type (0x%x) is ignored", type);
break;
}
@@ -461,7 +468,7 @@
}
if (sdu_length) {
- LLCP_TRACE_ERROR0("llcp_sdp_proc_snl (): Bad format of SNL");
+ LOG(ERROR) << StringPrintf("Bad format of SNL");
return LLCP_STATUS_FAIL;
} else {
return LLCP_STATUS_SUCCESS;
diff --git a/src/nfc/llcp/llcp_util.c b/src/nfc/llcp/llcp_util.cc
similarity index 86%
rename from src/nfc/llcp/llcp_util.c
rename to src/nfc/llcp/llcp_util.cc
index 3b984e3..7c5d851 100644
--- a/src/nfc/llcp/llcp_util.c
+++ b/src/nfc/llcp/llcp_util.cc
@@ -22,16 +22,21 @@
*
******************************************************************************/
-#include <log/log.h>
#include <string.h>
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+#include <log/log.h>
+
#include "bt_types.h"
#include "gki.h"
#include "llcp_defs.h"
#include "llcp_int.h"
#include "nfc_int.h"
-#include "nfc_target.h"
-#include "trace_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*******************************************************************************
**
@@ -50,7 +55,7 @@
BE_STREAM_TO_UINT8(param_len, p);
if (length < param_len + 2) {
android_errorWriteLog(0x534e4554, "114238578");
- LLCP_TRACE_ERROR0("llcp_util_parse_link_params (): Bad TLV's");
+ LOG(ERROR) << StringPrintf("Bad TLV's");
return false;
}
length -= param_len + 2;
@@ -59,60 +64,63 @@
case LLCP_VERSION_TYPE:
if (param_len != LLCP_VERSION_LEN) {
android_errorWriteLog(0x534e4554, "114238578");
- LLCP_TRACE_ERROR0("llcp_util_parse_link_params (): Bad TLV's");
+ LOG(ERROR) << StringPrintf("Bad TLV's");
return false;
}
BE_STREAM_TO_UINT8(llcp_cb.lcb.peer_version, p);
- LLCP_TRACE_DEBUG1("Peer Version - 0x%02X", llcp_cb.lcb.peer_version);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Peer Version - 0x%02X", llcp_cb.lcb.peer_version);
break;
case LLCP_MIUX_TYPE:
if (param_len != LLCP_MIUX_LEN) {
android_errorWriteLog(0x534e4554, "114238578");
- LLCP_TRACE_ERROR0("llcp_util_parse_link_params (): Bad TLV's");
+ LOG(ERROR) << StringPrintf("Bad TLV's");
return false;
}
BE_STREAM_TO_UINT16(llcp_cb.lcb.peer_miu, p);
llcp_cb.lcb.peer_miu &= LLCP_MIUX_MASK;
llcp_cb.lcb.peer_miu += LLCP_DEFAULT_MIU;
- LLCP_TRACE_DEBUG1("Peer MIU - %d bytes", llcp_cb.lcb.peer_miu);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Peer MIU - %d bytes", llcp_cb.lcb.peer_miu);
break;
case LLCP_WKS_TYPE:
if (param_len != LLCP_WKS_LEN) {
android_errorWriteLog(0x534e4554, "114238578");
- LLCP_TRACE_ERROR0("llcp_util_parse_link_params (): Bad TLV's");
+ LOG(ERROR) << StringPrintf("Bad TLV's");
return false;
}
BE_STREAM_TO_UINT16(llcp_cb.lcb.peer_wks, p);
- LLCP_TRACE_DEBUG1("Peer WKS - 0x%04X", llcp_cb.lcb.peer_wks);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Peer WKS - 0x%04X", llcp_cb.lcb.peer_wks);
break;
case LLCP_LTO_TYPE:
if (param_len != LLCP_LTO_LEN) {
android_errorWriteLog(0x534e4554, "114238578");
- LLCP_TRACE_ERROR0("llcp_util_parse_link_params (): Bad TLV's");
+ LOG(ERROR) << StringPrintf("Bad TLV's");
return false;
}
BE_STREAM_TO_UINT8(llcp_cb.lcb.peer_lto, p);
llcp_cb.lcb.peer_lto *= LLCP_LTO_UNIT; /* 10ms unit */
- LLCP_TRACE_DEBUG1("Peer LTO - %d ms", llcp_cb.lcb.peer_lto);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Peer LTO - %d ms", llcp_cb.lcb.peer_lto);
break;
case LLCP_OPT_TYPE:
if (param_len != LLCP_OPT_LEN) {
android_errorWriteLog(0x534e4554, "114238578");
- LLCP_TRACE_ERROR0("llcp_util_parse_link_params (): Bad TLV's");
+ LOG(ERROR) << StringPrintf("Bad TLV's");
return false;
}
BE_STREAM_TO_UINT8(llcp_cb.lcb.peer_opt, p);
- LLCP_TRACE_DEBUG1("Peer OPT - 0x%02X", llcp_cb.lcb.peer_opt);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Peer OPT - 0x%02X", llcp_cb.lcb.peer_opt);
break;
default:
- LLCP_TRACE_ERROR1(
- "llcp_util_parse_link_params (): Unexpected type 0x%x", param_type);
- BE_STREAM_TO_UINT8(param_len, p);
+ LOG(ERROR) << StringPrintf("Unexpected type 0x%x", param_type);
p += param_len;
break;
}
@@ -155,7 +163,7 @@
llcp_cb.ll_tx_congest_end = 0;
}
- LLCP_TRACE_DEBUG4(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"num_logical_data_link=%d, ll_tx_congest_start=%d, ll_tx_congest_end=%d, "
"ll_rx_congest_start=%d",
llcp_cb.num_logical_data_link, llcp_cb.ll_tx_congest_start,
@@ -193,9 +201,9 @@
llcp_cb.dlcb[idx].rx_congest_threshold = LLCP_DL_MIN_RX_CONGEST;
}
- LLCP_TRACE_DEBUG3("DLC[%d], local_rw=%d, rx_congest_threshold=%d", idx,
- llcp_cb.dlcb[idx].local_rw,
- llcp_cb.dlcb[idx].rx_congest_threshold);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "DLC[%d], local_rw=%d, rx_congest_threshold=%d", idx,
+ llcp_cb.dlcb[idx].local_rw, llcp_cb.dlcb[idx].rx_congest_threshold);
}
}
}
@@ -217,8 +225,8 @@
/* check if rx congestion clear */
if (llcp_cb.total_rx_ui_pdu + llcp_cb.total_rx_i_pdu <=
llcp_cb.overall_rx_congest_end) {
- LLCP_TRACE_DEBUG3(
- "llcp_util_check_rx_congested_status (): rx link is uncongested, "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "rx link is uncongested, "
"%d+%d <= %d",
llcp_cb.total_rx_ui_pdu, llcp_cb.total_rx_i_pdu,
llcp_cb.overall_rx_congest_end);
@@ -237,8 +245,8 @@
/* check if rx link is congested */
if (llcp_cb.total_rx_ui_pdu + llcp_cb.total_rx_i_pdu >=
llcp_cb.overall_rx_congest_start) {
- LLCP_TRACE_WARNING3(
- "llcp_util_check_rx_congested_status (): rx link is congested, %d+%d "
+ LOG(WARNING) << StringPrintf(
+ "rx link is congested, %d+%d "
">= %d",
llcp_cb.total_rx_ui_pdu, llcp_cb.total_rx_i_pdu,
llcp_cb.overall_rx_congest_start);
@@ -290,8 +298,9 @@
/* or notify uncongestion later */
p_app_cb->is_ui_tx_congested = true;
- LLCP_TRACE_WARNING2("Logical link (SAP=0x%X) congested: ui_xmit_q.count=%d",
- ssap, p_app_cb->ui_xmit_q.count);
+ LOG(WARNING) << StringPrintf(
+ "Logical link (SAP=0x%X) congested: ui_xmit_q.count=%d", ssap,
+ p_app_cb->ui_xmit_q.count);
status = LLCP_STATUS_CONGESTED;
}
@@ -339,9 +348,8 @@
tLLCP_DLCB* p_dlcb = NULL;
int idx;
- LLCP_TRACE_DEBUG2(
- "llcp_util_allocate_data_link (): reg_sap = 0x%x, remote_sap = 0x%x",
- reg_sap, remote_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("reg_sap = 0x%x, remote_sap = 0x%x", reg_sap, remote_sap);
for (idx = 0; idx < LLCP_MAX_DATA_LINK; idx++) {
if (llcp_cb.dlcb[idx].state == LLCP_DLC_STATE_IDLE) {
@@ -353,7 +361,7 @@
}
if (!p_dlcb) {
- LLCP_TRACE_ERROR0("llcp_util_allocate_data_link (): Out of DLCB");
+ LOG(ERROR) << StringPrintf("Out of DLCB");
} else {
p_dlcb->p_app_cb = llcp_util_get_app_cb(reg_sap);
p_dlcb->local_sap = reg_sap;
@@ -363,8 +371,8 @@
/* this is for inactivity timer and congestion control. */
llcp_cb.num_data_link_connection++;
- LLCP_TRACE_DEBUG3(
- "llcp_util_allocate_data_link (): local_sap = 0x%x, remote_sap = 0x%x, "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "local_sap = 0x%x, remote_sap = 0x%x, "
"num_data_link_connection = %d",
p_dlcb->local_sap, p_dlcb->remote_sap,
llcp_cb.num_data_link_connection);
@@ -383,8 +391,8 @@
******************************************************************************/
void llcp_util_deallocate_data_link(tLLCP_DLCB* p_dlcb) {
if (p_dlcb) {
- LLCP_TRACE_DEBUG1("llcp_util_deallocate_data_link (): local_sap = 0x%x",
- p_dlcb->local_sap);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("local_sap = 0x%x", p_dlcb->local_sap);
if (p_dlcb->state != LLCP_DLC_STATE_IDLE) {
nfc_stop_quick_timer(&p_dlcb->timer);
@@ -396,9 +404,8 @@
llcp_cb.num_data_link_connection--;
}
- LLCP_TRACE_DEBUG1(
- "llcp_util_deallocate_data_link (): num_data_link_connection = %d",
- llcp_cb.num_data_link_connection);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "num_data_link_connection = %d", llcp_cb.num_data_link_connection);
}
}
}
@@ -492,7 +499,7 @@
/* check remaining lengh */
if (length < param_len + 2) {
android_errorWriteLog(0x534e4554, "111660010");
- LLCP_TRACE_ERROR0("llcp_util_parse_connect (): Bad TLV's");
+ LOG(ERROR) << StringPrintf("Bad TLV's");
return LLCP_STATUS_FAIL;
}
length -= param_len + 2;
@@ -501,28 +508,28 @@
case LLCP_MIUX_TYPE:
if (param_len != LLCP_MIUX_LEN) {
android_errorWriteLog(0x534e4554, "111660010");
- LLCP_TRACE_ERROR0("llcp_util_parse_connect (): Bad TLV's");
+ LOG(ERROR) << StringPrintf("Bad TLV's");
return LLCP_STATUS_FAIL;
}
BE_STREAM_TO_UINT16(p_params->miu, p);
p_params->miu &= LLCP_MIUX_MASK;
p_params->miu += LLCP_DEFAULT_MIU;
- LLCP_TRACE_DEBUG1("llcp_util_parse_connect (): LLCP_MIUX_TYPE:%d",
- p_params->miu);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("LLCP_MIUX_TYPE:%d", p_params->miu);
break;
case LLCP_RW_TYPE:
if (param_len != LLCP_RW_LEN) {
android_errorWriteLog(0x534e4554, "111660010");
- LLCP_TRACE_ERROR0("llcp_util_parse_connect (): Bad TLV's");
+ LOG(ERROR) << StringPrintf("Bad TLV's");
return LLCP_STATUS_FAIL;
}
BE_STREAM_TO_UINT8(p_params->rw, p);
p_params->rw &= 0x0F;
- LLCP_TRACE_DEBUG1("llcp_util_parse_connect (): LLCP_RW_TYPE:%d",
- p_params->rw);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("LLCP_RW_TYPE:%d", p_params->rw);
break;
case LLCP_SN_TYPE:
@@ -538,14 +545,12 @@
}
p += param_len;
- LLCP_TRACE_DEBUG1("llcp_util_parse_connect (): LLCP_SN_TYPE:<%s>",
- p_params->sn);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("LLCP_SN_TYPE:<%s>", p_params->sn);
break;
default:
- LLCP_TRACE_ERROR1("llcp_util_parse_connect (): Unexpected type 0x%x",
- param_type);
- BE_STREAM_TO_UINT8(param_len, p);
+ LOG(ERROR) << StringPrintf("Unexpected type 0x%x", param_type);
p += param_len;
break;
}
@@ -630,7 +635,7 @@
BE_STREAM_TO_UINT8(param_len, p);
if (length < param_len + 2) {
android_errorWriteLog(0x534e4554, "114237888");
- LLCP_TRACE_ERROR0("llcp_util_parse_cc (): Bad TLV's");
+ LOG(ERROR) << StringPrintf("Bad TLV's");
return LLCP_STATUS_FAIL;
}
length -= param_len + 2;
@@ -639,32 +644,32 @@
case LLCP_MIUX_TYPE:
if (param_len != LLCP_MIUX_LEN) {
android_errorWriteLog(0x534e4554, "114237888");
- LLCP_TRACE_ERROR0("llcp_util_parse_cc (): Bad TLV's");
+ LOG(ERROR) << StringPrintf("Bad TLV's");
return LLCP_STATUS_FAIL;
}
BE_STREAM_TO_UINT16((*p_miu), p);
(*p_miu) &= LLCP_MIUX_MASK;
(*p_miu) += LLCP_DEFAULT_MIU;
- LLCP_TRACE_DEBUG1("llcp_util_parse_cc (): LLCP_MIUX_TYPE:%d", *p_miu);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("LLCP_MIUX_TYPE:%d", *p_miu);
break;
case LLCP_RW_TYPE:
if (param_len != LLCP_RW_LEN) {
android_errorWriteLog(0x534e4554, "114237888");
- LLCP_TRACE_ERROR0("llcp_util_parse_cc (): Bad TLV's");
+ LOG(ERROR) << StringPrintf("Bad TLV's");
return LLCP_STATUS_FAIL;
}
BE_STREAM_TO_UINT8((*p_rw), p);
(*p_rw) &= 0x0F;
- LLCP_TRACE_DEBUG1("llcp_util_parse_cc (): LLCP_RW_TYPE:%d", *p_rw);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("LLCP_RW_TYPE:%d", *p_rw);
break;
default:
- LLCP_TRACE_ERROR1("llcp_util_parse_cc (): Unexpected type 0x%x",
- param_type);
- BE_STREAM_TO_UINT8(param_len, p);
+ LOG(ERROR) << StringPrintf("Unexpected type 0x%x", param_type);
p += param_len;
break;
}
@@ -769,7 +774,7 @@
return LLCP_STATUS_SUCCESS;
} else {
- LLCP_TRACE_ERROR0("llcp_util_send_frmr (): Out of resource");
+ LOG(ERROR) << StringPrintf("Out of resource");
return LLCP_STATUS_FAIL;
}
}
@@ -808,8 +813,8 @@
if ((p_dlcb->local_busy) || (p_dlcb->is_rx_congested) ||
(llcp_cb.overall_rx_congested)) {
- LLCP_TRACE_DEBUG3(
- "llcp_util_send_rr_rnr (): "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ ""
"local_busy=%d,is_rx_congested=%d,overall_rx_congested=%d",
p_dlcb->local_busy, p_dlcb->is_rx_congested,
llcp_cb.overall_rx_congested);
@@ -842,16 +847,14 @@
UINT8_TO_BE_STREAM(p, rcv_seq);
-#if (BT_TRACE_VERBOSE == TRUE)
- LLCP_TRACE_DEBUG5("LLCP TX - N(S,R):(NA,%d) V(S,SA,R,RA):(%d,%d,%d,%d)",
- p_dlcb->next_rx_seq, p_dlcb->next_tx_seq,
- p_dlcb->rcvd_ack_seq, p_dlcb->next_rx_seq,
- p_dlcb->sent_ack_seq);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "LLCP TX - N(S,R):(NA,%d) V(S,SA,R,RA):(%d,%d,%d,%d)",
+ p_dlcb->next_rx_seq, p_dlcb->next_tx_seq, p_dlcb->rcvd_ack_seq,
+ p_dlcb->next_rx_seq, p_dlcb->sent_ack_seq);
GKI_enqueue(&llcp_cb.lcb.sig_xmit_q, p_msg);
llcp_link_check_send_data();
} else {
- LLCP_TRACE_ERROR0("llcp_util_send_rr_rnr (): Out of resource");
+ LOG(ERROR) << StringPrintf("Out of resource");
}
}
diff --git a/src/nfc/nci/nci_hmsgs.c b/src/nfc/nci/nci_hmsgs.cc
similarity index 93%
rename from src/nfc/nci/nci_hmsgs.c
rename to src/nfc/nci/nci_hmsgs.cc
index aa4aa94..245b06a 100644
--- a/src/nfc/nci/nci_hmsgs.c
+++ b/src/nfc/nci/nci_hmsgs.cc
@@ -260,20 +260,22 @@
NFC_HDR* p;
uint8_t* pp;
- p = NCI_GET_CMD_BUF(NCI_PARAM_SIZE_DISCOVER_NFCEE);
+ p = NCI_GET_CMD_BUF(NCI_PARAM_SIZE_DISCOVER_NFCEE(NFC_GetNCIVersion()));
if (p == NULL) return (NCI_STATUS_FAILED);
p->event = BT_EVT_TO_NFC_NCI;
- p->len = NCI_MSG_HDR_SIZE + NCI_PARAM_SIZE_DISCOVER_NFCEE;
+ p->len =
+ NCI_MSG_HDR_SIZE + NCI_PARAM_SIZE_DISCOVER_NFCEE(NFC_GetNCIVersion());
p->offset = NCI_MSG_OFFSET_SIZE;
p->layer_specific = 0;
pp = (uint8_t*)(p + 1) + p->offset;
NCI_MSG_BLD_HDR0(pp, NCI_MT_CMD, NCI_GID_EE_MANAGE);
NCI_MSG_BLD_HDR1(pp, NCI_MSG_NFCEE_DISCOVER);
- UINT8_TO_STREAM(pp, NCI_PARAM_SIZE_DISCOVER_NFCEE);
- UINT8_TO_STREAM(pp, discover_action);
-
+ UINT8_TO_STREAM(pp, NCI_PARAM_SIZE_DISCOVER_NFCEE(NFC_GetNCIVersion()));
+ if (NFC_GetNCIVersion() != NCI_VERSION_2_0) {
+ UINT8_TO_STREAM(pp, discover_action);
+ }
nfc_ncif_send_cmd(p);
return (NCI_STATUS_OK);
}
@@ -579,6 +581,37 @@
return (NCI_STATUS_OK);
}
+/*******************************************************************************
+**
+** Function nci_snd_nfcee_power_link_control
+**
+** Description compose and send NFCEE Management NFCEE Power and Link
+** Control command to command queue
+**
+** Returns status
+**
+*******************************************************************************/
+uint8_t nci_snd_nfcee_power_link_control(uint8_t nfcee_id, uint8_t pl_config) {
+ uint8_t* pp;
+ NFC_HDR* p = NCI_GET_CMD_BUF(NCI_CORE_PARAM_SIZE_NFCEE_PL_CTRL);
+ if (p == NULL) return NCI_STATUS_FAILED;
+
+ p->event = NFC_EVT_TO_NFC_NCI;
+ p->len = NCI_MSG_HDR_SIZE + NCI_CORE_PARAM_SIZE_NFCEE_PL_CTRL;
+ p->offset = NCI_MSG_OFFSET_SIZE;
+ p->layer_specific = 0;
+ pp = (uint8_t*)(p + 1) + p->offset;
+
+ NCI_MSG_BLD_HDR0(pp, NCI_MT_CMD, NCI_GID_EE_MANAGE);
+ NCI_MSG_BLD_HDR1(pp, NCI_MSG_NFCEE_POWER_LINK_CTRL);
+ UINT8_TO_STREAM(pp, NCI_CORE_PARAM_SIZE_NFCEE_PL_CTRL);
+ UINT8_TO_STREAM(pp, nfcee_id);
+ UINT8_TO_STREAM(pp, pl_config);
+
+ nfc_ncif_send_cmd(p);
+ return NCI_STATUS_OK;
+}
+
#if (NFC_NFCEE_INCLUDED == TRUE)
#if (NFC_RW_ONLY == FALSE)
/*******************************************************************************
diff --git a/src/nfc/nci/nci_hrcv.c b/src/nfc/nci/nci_hrcv.cc
similarity index 77%
rename from src/nfc/nci/nci_hrcv.c
rename to src/nfc/nci/nci_hrcv.cc
index 07757de..e42d04c 100644
--- a/src/nfc/nci/nci_hrcv.c
+++ b/src/nfc/nci/nci_hrcv.cc
@@ -23,15 +23,23 @@
*
******************************************************************************/
#include <string.h>
-#include "bt_types.h"
-#include "gki.h"
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfc_target.h"
+#include "bt_types.h"
+#include "gki.h"
#include "nci_defs.h"
#include "nci_hmsgs.h"
#include "nfc_api.h"
#include "nfc_int.h"
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
/*******************************************************************************
**
** Function nci_proc_core_rsp
@@ -51,7 +59,8 @@
p = (uint8_t*)(p_msg + 1) + p_msg->offset;
pp = p + 1;
NCI_MSG_PRS_HDR1(pp, op_code);
- NFC_TRACE_DEBUG1("nci_proc_core_rsp opcode:0x%x", op_code);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nci_proc_core_rsp opcode:0x%x", op_code);
len = *pp++;
/* process the message based on the opcode and message type */
@@ -84,7 +93,7 @@
nfc_ncif_event_status(NFC_SET_POWER_SUB_STATE_REVT, *pp);
break;
default:
- NFC_TRACE_ERROR1("unknown opcode:0x%x", op_code);
+ LOG(ERROR) << StringPrintf("unknown opcode:0x%x", op_code);
break;
}
@@ -109,7 +118,8 @@
p = (uint8_t*)(p_msg + 1) + p_msg->offset;
pp = p + 1;
NCI_MSG_PRS_HDR1(pp, op_code);
- NFC_TRACE_DEBUG1("nci_proc_core_ntf opcode:0x%x", op_code);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nci_proc_core_ntf opcode:0x%x", op_code);
len = *pp++;
/* process the message based on the opcode and message type */
@@ -135,7 +145,7 @@
break;
default:
- NFC_TRACE_ERROR1("unknown opcode:0x%x", op_code);
+ LOG(ERROR) << StringPrintf("unknown opcode:0x%x", op_code);
break;
}
}
@@ -206,7 +216,7 @@
nfc_ncif_proc_isodep_nak_presence_check_status(*pp, false);
break;
default:
- NFC_TRACE_ERROR1("unknown opcode:0x%x", op_code);
+ LOG(ERROR) << StringPrintf("unknown opcode:0x%x", op_code);
break;
}
}
@@ -280,7 +290,7 @@
nfc_ncif_proc_isodep_nak_presence_check_status(*pp, true);
break;
default:
- NFC_TRACE_ERROR1("unknown opcode:0x%x", op_code);
+ LOG(ERROR) << StringPrintf("unknown opcode:0x%x", op_code);
break;
}
}
@@ -301,10 +311,7 @@
uint8_t* p;
uint8_t *pp, len, op_code;
tNFC_RESPONSE_CBACK* p_cback = nfc_cb.p_resp_cback;
- tNFC_NFCEE_DISCOVER_REVT nfcee_discover;
- tNFC_NFCEE_INFO_REVT nfcee_info;
- tNFC_NFCEE_MODE_SET_REVT mode_set;
- tNFC_RESPONSE* p_evt = (tNFC_RESPONSE*)&nfcee_info;
+ tNFC_RESPONSE nfc_response;
tNFC_RESPONSE_EVT event = NFC_NFCEE_INFO_REVT;
uint8_t* p_old = nfc_cb.last_cmd;
@@ -312,36 +319,47 @@
p = (uint8_t*)(p_msg + 1) + p_msg->offset;
pp = p + 1;
NCI_MSG_PRS_HDR1(pp, op_code);
- NFC_TRACE_DEBUG1("nci_proc_ee_management_rsp opcode:0x%x", op_code);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nci_proc_ee_management_rsp opcode:0x%x", op_code);
len = *pp++;
switch (op_code) {
case NCI_MSG_NFCEE_DISCOVER:
- p_evt = (tNFC_RESPONSE*)&nfcee_discover;
- nfcee_discover.status = *pp++;
- nfcee_discover.num_nfcee = *pp++;
+ nfc_response.nfcee_discover.status = *pp++;
+ nfc_response.nfcee_discover.num_nfcee = *pp++;
- if (nfcee_discover.status != NFC_STATUS_OK) nfcee_discover.num_nfcee = 0;
+ if (nfc_response.nfcee_discover.status != NFC_STATUS_OK)
+ nfc_response.nfcee_discover.num_nfcee = 0;
event = NFC_NFCEE_DISCOVER_REVT;
break;
case NCI_MSG_NFCEE_MODE_SET:
- p_evt = (tNFC_RESPONSE*)&mode_set;
- mode_set.status = *pp;
- mode_set.nfcee_id = 0;
- event = NFC_NFCEE_MODE_SET_REVT;
- mode_set.nfcee_id = *p_old++;
- mode_set.mode = *p_old++;
+ nfc_response.mode_set.status = *pp;
+ nfc_response.mode_set.nfcee_id = *p_old++;
+ nfc_response.mode_set.mode = *p_old++;
+ if (nfc_cb.nci_version != NCI_VERSION_2_0 || *pp != NCI_STATUS_OK) {
+ nfc_cb.flags &= ~NFC_FL_WAIT_MODE_SET_NTF;
+ event = NFC_NFCEE_MODE_SET_REVT;
+ } else {
+ /* else response reports OK status on notification */
+ return;
+ }
break;
+ case NCI_MSG_NFCEE_POWER_LINK_CTRL:
+ nfc_response.pl_control.status = *pp;
+ nfc_response.pl_control.nfcee_id = *p_old++;
+ nfc_response.pl_control.pl_control = *p_old++;
+ event = NFC_NFCEE_PL_CONTROL_REVT;
+ break;
default:
p_cback = NULL;
- NFC_TRACE_ERROR1("unknown opcode:0x%x", op_code);
+ LOG(ERROR) << StringPrintf("unknown opcode:0x%x", op_code);
break;
}
- if (p_cback) (*p_cback)(event, p_evt);
+ if (p_cback) (*p_cback)(event, &nfc_response);
}
/*******************************************************************************
@@ -357,63 +375,75 @@
uint8_t* p;
uint8_t *pp, len, op_code;
tNFC_RESPONSE_CBACK* p_cback = nfc_cb.p_resp_cback;
- tNFC_NFCEE_INFO_REVT nfcee_info;
- tNFC_RESPONSE* p_evt = (tNFC_RESPONSE*)&nfcee_info;
+ tNFC_RESPONSE nfc_response;
tNFC_RESPONSE_EVT event = NFC_NFCEE_INFO_REVT;
+ uint8_t* p_old = nfc_cb.last_cmd;
uint8_t xx;
uint8_t yy;
- uint8_t ee_status;
tNFC_NFCEE_TLV* p_tlv;
-
/* find the start of the NCI message and parse the NCI header */
p = (uint8_t*)(p_msg + 1) + p_msg->offset;
pp = p + 1;
NCI_MSG_PRS_HDR1(pp, op_code);
- NFC_TRACE_DEBUG1("nci_proc_ee_management_ntf opcode:0x%x", op_code);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nci_proc_ee_management_ntf opcode:0x%x", op_code);
len = *pp++;
if (op_code == NCI_MSG_NFCEE_DISCOVER) {
- nfcee_info.nfcee_id = *pp++;
- ee_status = *pp++;
+ nfc_response.nfcee_info.nfcee_id = *pp++;
- nfcee_info.ee_status = ee_status;
+ nfc_response.nfcee_info.ee_status = *pp++;
yy = *pp;
- nfcee_info.num_interface = *pp++;
+ nfc_response.nfcee_info.num_interface = *pp++;
p = pp;
- if (nfcee_info.num_interface > NFC_MAX_EE_INTERFACE)
- nfcee_info.num_interface = NFC_MAX_EE_INTERFACE;
+ if (nfc_response.nfcee_info.num_interface > NFC_MAX_EE_INTERFACE)
+ nfc_response.nfcee_info.num_interface = NFC_MAX_EE_INTERFACE;
- for (xx = 0; xx < nfcee_info.num_interface; xx++) {
- nfcee_info.ee_interface[xx] = *pp++;
+ for (xx = 0; xx < nfc_response.nfcee_info.num_interface; xx++) {
+ nfc_response.nfcee_info.ee_interface[xx] = *pp++;
}
pp = p + yy;
- nfcee_info.num_tlvs = *pp++;
- NFC_TRACE_DEBUG4("nfcee_id: 0x%x num_interface:0x%x/0x%x, num_tlvs:0x%x",
- nfcee_info.nfcee_id, nfcee_info.num_interface, yy,
- nfcee_info.num_tlvs);
+ nfc_response.nfcee_info.num_tlvs = *pp++;
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfcee_id: 0x%x num_interface:0x%x/0x%x, num_tlvs:0x%x",
+ nfc_response.nfcee_info.nfcee_id, nfc_response.nfcee_info.num_interface,
+ yy, nfc_response.nfcee_info.num_tlvs);
- if (nfcee_info.num_tlvs > NFC_MAX_EE_TLVS)
- nfcee_info.num_tlvs = NFC_MAX_EE_TLVS;
+ if (nfc_response.nfcee_info.num_tlvs > NFC_MAX_EE_TLVS)
+ nfc_response.nfcee_info.num_tlvs = NFC_MAX_EE_TLVS;
- p_tlv = &nfcee_info.ee_tlv[0];
+ p_tlv = &nfc_response.nfcee_info.ee_tlv[0];
- for (xx = 0; xx < nfcee_info.num_tlvs; xx++, p_tlv++) {
+ for (xx = 0; xx < nfc_response.nfcee_info.num_tlvs; xx++, p_tlv++) {
p_tlv->tag = *pp++;
p_tlv->len = yy = *pp++;
- NFC_TRACE_DEBUG2("tag:0x%x, len:0x%x", p_tlv->tag, p_tlv->len);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("tag:0x%x, len:0x%x", p_tlv->tag, p_tlv->len);
if (p_tlv->len > NFC_MAX_EE_INFO) p_tlv->len = NFC_MAX_EE_INFO;
p = pp;
STREAM_TO_ARRAY(p_tlv->info, pp, p_tlv->len);
pp = p += yy;
}
+ } else if (op_code == NCI_MSG_NFCEE_MODE_SET) {
+ nfc_response.mode_set.status = *pp;
+ nfc_response.mode_set.nfcee_id = *p_old++;
+ nfc_response.mode_set.mode = *p_old++;
+ event = NFC_NFCEE_MODE_SET_REVT;
+ nfc_cb.flags &= ~NFC_FL_WAIT_MODE_SET_NTF;
+ nfc_stop_timer(&nfc_cb.nci_mode_set_ntf_timer);
+ } else if (op_code == NCI_MSG_NFCEE_STATUS) {
+ event = NFC_NFCEE_STATUS_REVT;
+ nfc_response.nfcee_status.status = NCI_STATUS_OK;
+ nfc_response.nfcee_status.nfcee_id = *pp++;
+ nfc_response.nfcee_status.nfcee_status = *pp;
} else {
p_cback = NULL;
- NFC_TRACE_ERROR1("unknown opcode:0x%x", op_code);
+ LOG(ERROR) << StringPrintf("unknown opcode:0x%x", op_code);
}
- if (p_cback) (*p_cback)(event, p_evt);
+ if (p_cback) (*p_cback)(event, &nfc_response);
}
#endif
diff --git a/src/nfc/ndef/ndef_utils.c b/src/nfc/ndef/ndef_utils.cc
similarity index 89%
rename from src/nfc/ndef/ndef_utils.c
rename to src/nfc/ndef/ndef_utils.cc
index 01663f0..993efd8 100644
--- a/src/nfc/ndef/ndef_utils.c
+++ b/src/nfc/ndef/ndef_utils.cc
@@ -39,9 +39,9 @@
**
*******************************************************************************/
static void shiftdown(uint8_t* p_mem, uint32_t len, uint32_t shift_amount) {
- register uint8_t* ps = p_mem + len - 1;
- register uint8_t* pd = ps + shift_amount;
- register uint32_t xx;
+ uint8_t* ps = p_mem + len - 1;
+ uint8_t* pd = ps + shift_amount;
+ uint32_t xx;
for (xx = 0; xx < len; xx++) *pd-- = *ps--;
}
@@ -54,9 +54,9 @@
**
*******************************************************************************/
static void shiftup(uint8_t* p_dest, uint8_t* p_src, uint32_t len) {
- register uint8_t* ps = p_src;
- register uint8_t* pd = p_dest;
- register uint32_t xx;
+ uint8_t* ps = p_src;
+ uint8_t* pd = p_dest;
+ uint32_t xx;
for (xx = 0; xx < len; xx++) *pd++ = *ps++;
}
@@ -883,143 +883,6 @@
/*******************************************************************************
**
-** Function NDEF_MsgInsertRec
-**
-** Description This function inserts a record at a specific index into the
-** given NDEF message
-**
-** Returns OK, or error if the record did not fit
-** *p_cur_size is updated
-**
-*******************************************************************************/
-extern tNDEF_STATUS NDEF_MsgInsertRec(uint8_t* p_msg, uint32_t max_size,
- uint32_t* p_cur_size, int32_t index,
- uint8_t tnf, uint8_t* p_type,
- uint8_t type_len, uint8_t* p_id,
- uint8_t id_len, uint8_t* p_payload,
- uint32_t payload_len) {
- uint8_t* p_rec;
- uint32_t recSize;
- int32_t plen = (payload_len < 256) ? 1 : 4;
- int32_t ilen = (id_len == 0) ? 0 : 1;
-
- /* First, make sure the record will fit. we need at least 2 bytes for header
- * and type length */
- recSize = payload_len + 2 + type_len + plen + ilen + id_len;
-
- if ((*p_cur_size + recSize) > max_size) return (NDEF_MSG_INSUFFICIENT_MEM);
-
- /* See where the new record goes. If at the end, call the 'AddRec' function */
- if ((index >= NDEF_MsgGetNumRecs(p_msg)) ||
- ((p_rec = NDEF_MsgGetRecByIndex(p_msg, index)) == NULL)) {
- return NDEF_MsgAddRec(p_msg, max_size, p_cur_size, tnf, p_type, type_len,
- p_id, id_len, p_payload, payload_len);
- }
-
- /* If we are inserting at the beginning, remove the MB bit from the current
- * first */
- if (index == 0) *p_msg &= ~NDEF_MB_MASK;
-
- /* Make space for the new record */
- shiftdown(p_rec, (uint32_t)(*p_cur_size - (p_rec - p_msg)), recSize);
-
- /* If adding at the beginning, set begin bit */
- if (index == 0)
- *p_rec = tnf | NDEF_MB_MASK;
- else
- *p_rec = tnf;
-
- if (plen == 1) *p_rec |= NDEF_SR_MASK;
-
- if (ilen != 0) *p_rec |= NDEF_IL_MASK;
-
- p_rec++;
-
- /* The next byte is the type field length */
- *p_rec++ = type_len;
-
- /* Payload length - can be 1 or 4 bytes */
- if (plen == 1)
- *p_rec++ = (uint8_t)payload_len;
- else
- UINT32_TO_BE_STREAM(p_rec, payload_len);
-
- /* ID field Length (optional) */
- if (ilen != 0) *p_rec++ = id_len;
-
- /* Next comes the type */
- if (type_len) {
- if (p_type) memcpy(p_rec, p_type, type_len);
-
- p_rec += type_len;
- }
-
- /* Next comes the ID */
- if (ilen != 0) {
- if (p_id) memcpy(p_rec, p_id, id_len);
-
- p_rec += id_len;
- }
-
- /* And lastly the payload. If NULL, the app just wants to reserve memory */
- if (p_payload) memcpy(p_rec, p_payload, payload_len);
-
- *p_cur_size += recSize;
-
- return (NDEF_OK);
-}
-
-/*******************************************************************************
-**
-** Function NDEF_MsgAppendRec
-**
-** Description This function adds NDEF records to the end of an NDEF
-** message.
-**
-** Returns OK, or error if the record did not fit
-** *p_cur_size is updated
-**
-*******************************************************************************/
-extern tNDEF_STATUS NDEF_MsgAppendRec(uint8_t* p_msg, uint32_t max_size,
- uint32_t* p_cur_size, uint8_t* p_new_rec,
- uint32_t new_rec_len) {
- uint8_t* p_rec;
- tNDEF_STATUS status;
-
- /* First, validate new records */
- status = NDEF_MsgValidate(p_new_rec, new_rec_len, false);
- if (status != NDEF_OK) return (status);
-
- /* First, make sure the record will fit */
- if ((*p_cur_size + new_rec_len) > max_size)
- return (NDEF_MSG_INSUFFICIENT_MEM);
-
- /* Find where to copy new record */
- if (*p_cur_size == 0)
- p_rec = p_msg;
- else {
- /* Find the previous last and clear his 'Message End' bit */
- uint8_t* pLast = NDEF_MsgGetLastRecInMsg(p_msg);
-
- if (!pLast) return (NDEF_MSG_NO_MSG_END);
-
- *pLast &= ~NDEF_ME_MASK;
- p_rec = p_msg + *p_cur_size;
-
- /* clear 'Message Begin' bit of new record */
- *p_new_rec &= ~NDEF_MB_MASK;
- }
-
- /* append new records */
- memcpy(p_rec, p_new_rec, new_rec_len);
-
- *p_cur_size += new_rec_len;
-
- return (NDEF_OK);
-}
-
-/*******************************************************************************
-**
** Function NDEF_MsgAppendPayload
**
** Description This function appends extra payload to a specific record in
diff --git a/src/nfc/nfc/nfc_ee.c b/src/nfc/nfc/nfc_ee.cc
similarity index 63%
rename from src/nfc/nfc/nfc_ee.c
rename to src/nfc/nfc/nfc_ee.cc
index c2c4115..728cd55 100644
--- a/src/nfc/nfc/nfc_ee.c
+++ b/src/nfc/nfc/nfc_ee.cc
@@ -22,14 +22,19 @@
*
******************************************************************************/
#include <string.h>
-#include "bt_types.h"
-#include "gki.h"
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfc_target.h"
+#include "gki.h"
#include "nci_hmsgs.h"
#include "nfc_api.h"
#include "nfc_int.h"
+using android::base::StringPrintf;
+
/*******************************************************************************
**
** Function NFC_NfceeDiscover
@@ -67,12 +72,29 @@
**
*******************************************************************************/
tNFC_STATUS NFC_NfceeModeSet(uint8_t nfcee_id, tNFC_NFCEE_MODE mode) {
- if (mode >= NCI_NUM_NFCEE_MODE) {
- NFC_TRACE_ERROR1("NFC_NfceeModeSet bad mode:%d", mode);
+ tNFC_STATUS status = NCI_STATUS_OK;
+ if (mode >= NCI_NUM_NFCEE_MODE || nfcee_id == NCI_DH_ID) {
+ LOG(ERROR) << StringPrintf("%s invalid parameter:%d", __func__, mode);
return NFC_STATUS_FAILED;
}
-
- return nci_snd_nfcee_mode_set(nfcee_id, mode);
+ if (nfc_cb.nci_version != NCI_VERSION_2_0)
+ status = nci_snd_nfcee_mode_set(nfcee_id, mode);
+ else {
+ if (nfc_cb.flags & NFC_FL_WAIT_MODE_SET_NTF)
+ status = NFC_STATUS_REFUSED;
+ else {
+ status = nci_snd_nfcee_mode_set(nfcee_id, mode);
+ if (status == NCI_STATUS_OK) {
+ /* Mode set command is successfully queued or sent.
+ * do not allow another Mode Set command until NTF is received */
+ nfc_cb.flags |= NFC_FL_WAIT_MODE_SET_NTF;
+ nfc_start_timer(&nfc_cb.nci_mode_set_ntf_timer,
+ (uint16_t)(NFC_TTYPE_WAIT_MODE_SET_NTF),
+ NFC_MODE_SET_NTF_TIMEOUT);
+ }
+ }
+ }
+ return status;
}
/*******************************************************************************
@@ -105,3 +127,30 @@
**
*******************************************************************************/
tNFC_STATUS NFC_GetRouting(void) { return nci_snd_get_routing_cmd(); }
+
+/*******************************************************************************
+**
+** Function NFC_NfceePLConfig
+**
+** Description This function is called to set the Power and Link Control to
+** an NFCEE connected to the NFCC.
+** The response from NFCC is reported by tNFC_RESPONSE_CBACK
+** as NFC_NFCEE_PL_CONTROL_REVT.
+**
+** Parameters nfcee_id - the NFCEE to activate or de-activate.
+** pl_config -
+** NFCEE_PL_CONFIG_NFCC_DECIDES NFCC decides (default)
+** NFCEE_PL_CONFIG_PWR_ALWAYS_ON NFCEE power supply is
+** always on
+** NFCEE_PL_CONFIG_LNK_ON_WHEN_PWR_ON communication link is
+** always active when NFCEE is powered on
+** NFCEE_PL_CONFIG_PWR_LNK_ALWAYS_ON power supply and
+** communication link are always on
+**
+** Returns tNFC_STATUS
+**
+*******************************************************************************/
+tNFC_STATUS NFC_NfceePLConfig(uint8_t nfcee_id,
+ tNCI_NFCEE_PL_CONFIG pl_config) {
+ return nci_snd_nfcee_power_link_control(nfcee_id, pl_config);
+}
diff --git a/src/nfc/nfc/nfc_main.c b/src/nfc/nfc/nfc_main.cc
similarity index 88%
rename from src/nfc/nfc/nfc_main.c
rename to src/nfc/nfc/nfc_main.cc
index 9eb147d..77c0485 100644
--- a/src/nfc/nfc/nfc_main.c
+++ b/src/nfc/nfc/nfc_main.cc
@@ -24,20 +24,22 @@
*
******************************************************************************/
#include <string.h>
-#include "bt_types.h"
-#include "gki.h"
+
+#include <android-base/stringprintf.h>
+#include <android/hardware/nfc/1.1/types.h>
+#include <base/logging.h>
+
#include "nfc_target.h"
+#include "bt_types.h"
#include "ce_int.h"
+#include "gki.h"
#include "nci_hmsgs.h"
-#include "nfc_api.h"
-#include "nfc_hal_api.h"
#include "nfc_int.h"
#include "rw_int.h"
#if (NFC_RW_ONLY == FALSE)
-#include "ce_api.h"
-#include "ce_int.h"
+
#include "llcp_int.h"
/* NFC mandates support for at least one logical connection;
@@ -52,6 +54,13 @@
#define NFC_SET_MAX_CONN_DEFAULT()
#endif /* NFC_RW_ONLY */
+
+using android::base::StringPrintf;
+using android::hardware::nfc::V1_1::NfcEvent;
+
+extern bool nfc_debug_enabled;
+extern void delete_stack_non_volatile_store(bool forceDelete);
+
/****************************************************************************
** Declarations
****************************************************************************/
@@ -76,7 +85,6 @@
#endif
};
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function nfc_state_name
@@ -88,28 +96,28 @@
** Returns pointer to the name
**
*******************************************************************************/
-static char* nfc_state_name(uint8_t state) {
+static std::string nfc_state_name(uint8_t state) {
switch (state) {
case NFC_STATE_NONE:
- return ("NONE");
+ return "NONE";
case NFC_STATE_W4_HAL_OPEN:
- return ("W4_HAL_OPEN");
+ return "W4_HAL_OPEN";
case NFC_STATE_CORE_INIT:
- return ("CORE_INIT");
+ return "CORE_INIT";
case NFC_STATE_W4_POST_INIT_CPLT:
- return ("W4_POST_INIT_CPLT");
+ return "W4_POST_INIT_CPLT";
case NFC_STATE_IDLE:
- return ("IDLE");
+ return "IDLE";
case NFC_STATE_OPEN:
- return ("OPEN");
+ return "OPEN";
case NFC_STATE_CLOSING:
- return ("CLOSING");
+ return "CLOSING";
case NFC_STATE_W4_HAL_CLOSE:
- return ("W4_HAL_CLOSE");
+ return "W4_HAL_CLOSE";
case NFC_STATE_NFCC_POWER_OFF_SLEEP:
- return ("NFCC_POWER_OFF_SLEEP");
+ return "NFCC_POWER_OFF_SLEEP";
default:
- return ("???? UNKNOWN STATE");
+ return "???? UNKNOWN STATE";
}
}
@@ -124,34 +132,28 @@
** Returns pointer to the name
**
*******************************************************************************/
-static char* nfc_hal_event_name(uint8_t event) {
+static std::string nfc_hal_event_name(uint8_t event) {
switch (event) {
case HAL_NFC_OPEN_CPLT_EVT:
- return ("HAL_NFC_OPEN_CPLT_EVT");
-
+ return "HAL_NFC_OPEN_CPLT_EVT";
case HAL_NFC_CLOSE_CPLT_EVT:
- return ("HAL_NFC_CLOSE_CPLT_EVT");
-
+ return "HAL_NFC_CLOSE_CPLT_EVT";
case HAL_NFC_POST_INIT_CPLT_EVT:
- return ("HAL_NFC_POST_INIT_CPLT_EVT");
-
+ return "HAL_NFC_POST_INIT_CPLT_EVT";
case HAL_NFC_PRE_DISCOVER_CPLT_EVT:
- return ("HAL_NFC_PRE_DISCOVER_CPLT_EVT");
-
+ return "HAL_NFC_PRE_DISCOVER_CPLT_EVT";
case HAL_NFC_REQUEST_CONTROL_EVT:
- return ("HAL_NFC_REQUEST_CONTROL_EVT");
-
+ return "HAL_NFC_REQUEST_CONTROL_EVT";
case HAL_NFC_RELEASE_CONTROL_EVT:
- return ("HAL_NFC_RELEASE_CONTROL_EVT");
-
+ return "HAL_NFC_RELEASE_CONTROL_EVT";
case HAL_NFC_ERROR_EVT:
- return ("HAL_NFC_ERROR_EVT");
-
+ return "HAL_NFC_ERROR_EVT";
+ case (uint32_t)NfcEvent::HCI_NETWORK_RESET:
+ return "HCI_NETWORK_RESET";
default:
- return ("???? UNKNOWN EVENT");
+ return "???? UNKNOWN EVENT";
}
}
-#endif /* BT_TRACE_VERBOSE == TRUE */
/*******************************************************************************
**
@@ -236,8 +238,21 @@
p_cb->init_credits = p_cb->num_buff = 0;
nfc_set_conn_id(p_cb, NFC_RF_CONN_ID);
if (nfc_cb.nci_version == NCI_VERSION_2_0) {
- evt_data.enable.hci_packet_size = *p++;
- evt_data.enable.hci_conn_credits = *p++;
+ if (evt_data.enable.nci_features & NCI_FEAT_HCI_NETWORK) {
+ p_cb = &nfc_cb.conn_cb[NFC_HCI_CONN_ID];
+ nfc_set_conn_id(p_cb, NFC_HCI_CONN_ID);
+ p_cb->id = NFC_HCI_CONN_ID;
+ STREAM_TO_UINT8(p_cb->buff_size, p);
+ STREAM_TO_UINT8(p_cb->num_buff, p);
+ p_cb->init_credits = p_cb->num_buff;
+ evt_data.enable.hci_packet_size = p_cb->buff_size;
+ evt_data.enable.hci_conn_credits = p_cb->init_credits;
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "hci num_buf=%d buf_size=%d", p_cb->num_buff, p_cb->buff_size);
+ } else {
+ /*HCI n/w not enabled skip data buff size and data credit HCI conn */
+ p += 2;
+ }
STREAM_TO_UINT16(evt_data.enable.max_nfc_v_size, p);
STREAM_TO_UINT8(num_interfaces, p);
#if (NFC_RW_ONLY == FALSE)
@@ -308,13 +323,10 @@
**
*******************************************************************************/
void nfc_set_state(tNFC_STATE nfc_state) {
-#if (BT_TRACE_VERBOSE == TRUE)
- NFC_TRACE_DEBUG4("nfc_set_state %d (%s)->%d (%s)", nfc_cb.nfc_state,
- nfc_state_name(nfc_cb.nfc_state), nfc_state,
- nfc_state_name(nfc_state));
-#else
- NFC_TRACE_DEBUG2("nfc_set_state %d->%d", nfc_cb.nfc_state, nfc_state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfc_set_state %d (%s)->%d (%s)", nfc_cb.nfc_state,
+ nfc_state_name(nfc_cb.nfc_state).c_str(), nfc_state,
+ nfc_state_name(nfc_state).c_str());
nfc_cb.nfc_state = nfc_state;
}
@@ -364,7 +376,8 @@
void nfc_main_handle_hal_evt(tNFC_HAL_EVT_MSG* p_msg) {
uint8_t* ps;
- NFC_TRACE_DEBUG1("nfc_main_handle_hal_evt(): HAL event=0x%x", p_msg->hal_evt);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("HAL event=0x%x", p_msg->hal_evt);
switch (p_msg->hal_evt) {
case HAL_NFC_OPEN_CPLT_EVT: /* only for failure case */
@@ -474,14 +487,17 @@
}
break;
+ case (uint32_t)NfcEvent::HCI_NETWORK_RESET:
+ delete_stack_non_volatile_store(true);
+ break;
+
default:
break;
}
break;
default:
- NFC_TRACE_ERROR1("nfc_main_handle_hal_evt (): unhandled event (0x%x).",
- p_msg->hal_evt);
+ LOG(ERROR) << StringPrintf("unhandled event (0x%x).", p_msg->hal_evt);
break;
}
}
@@ -498,7 +514,7 @@
void nfc_main_flush_cmd_queue(void) {
NFC_HDR* p_msg;
- NFC_TRACE_DEBUG0("nfc_main_flush_cmd_queue ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* initialize command window */
nfc_cb.nci_cmd_window = NCI_MAX_CMD_WINDOW;
@@ -535,7 +551,7 @@
p_msg->status = status;
GKI_send_msg(NFC_TASK, NFC_MBOX_ID, p_msg);
} else {
- NFC_TRACE_ERROR0("nfc_main_post_hal_evt (): No buffer");
+ LOG(ERROR) << StringPrintf("No buffer");
}
}
@@ -549,12 +565,9 @@
**
*******************************************************************************/
static void nfc_main_hal_cback(uint8_t event, tHAL_NFC_STATUS status) {
-#if (BT_TRACE_VERBOSE == TRUE)
- NFC_TRACE_DEBUG3("nfc_main_hal_cback event: %s(0x%x), status=%d",
- nfc_hal_event_name(event), event, status);
-#else
- NFC_TRACE_DEBUG2("nfc_main_hal_cback event: 0x%x, status=%d", event, status);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfc_main_hal_cback event: %s(0x%x), status=%d",
+ nfc_hal_event_name(event).c_str(), event, status);
switch (event) {
case HAL_NFC_OPEN_CPLT_EVT:
@@ -578,11 +591,13 @@
case HAL_NFC_REQUEST_CONTROL_EVT:
case HAL_NFC_RELEASE_CONTROL_EVT:
case HAL_NFC_ERROR_EVT:
+ case (uint32_t)NfcEvent::HCI_NETWORK_RESET:
nfc_main_post_hal_evt(event, status);
break;
default:
- NFC_TRACE_DEBUG1("nfc_main_hal_cback unhandled event %x", event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfc_main_hal_cback unhandled event %x", event);
break;
}
}
@@ -617,7 +632,7 @@
GKI_send_msg(NFC_TASK, NFC_MBOX_ID, p_msg);
} else {
- NFC_TRACE_ERROR0("nfc_main_hal_data_cback (): No buffer");
+ LOG(ERROR) << StringPrintf("No buffer");
}
}
}
@@ -646,7 +661,7 @@
**
*******************************************************************************/
tNFC_STATUS NFC_Enable(tNFC_RESPONSE_CBACK* p_cback) {
- NFC_TRACE_API0("NFC_Enable ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Validate callback */
if (!p_cback) {
@@ -677,7 +692,8 @@
**
*******************************************************************************/
void NFC_Disable(void) {
- NFC_TRACE_API1("NFC_Disable (): nfc_state = %d", nfc_cb.nfc_state);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfc_state = %d", nfc_cb.nfc_state);
if ((nfc_cb.nfc_state == NFC_STATE_NONE) ||
(nfc_cb.nfc_state == NFC_STATE_NFCC_POWER_OFF_SLEEP)) {
@@ -720,7 +736,6 @@
nfc_cb.nci_wait_rsp_tout = NFC_CMD_CMPL_TIMEOUT;
nfc_cb.p_disc_maps = nfc_interface_mapping;
nfc_cb.num_disc_maps = NFC_NUM_INTERFACE_MAP;
- nfc_cb.trace_level = NFC_INITIAL_TRACE_LEVEL;
nfc_cb.nci_ctrl_size = NCI_CTRL_INIT_SIZE;
nfc_cb.reassembly = true;
nfc_cb.nci_version = NCI_VERSION_UNKNOWN;
@@ -809,8 +824,8 @@
nfc_cb.p_discv_cback = p_cback;
num_intf = 0;
- NFC_TRACE_DEBUG1("nci_interfaces supported by NFCC: 0x%x",
- nfc_cb.nci_interfaces);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nci_interfaces supported by NFCC: 0x%x", nfc_cb.nci_interfaces);
for (xx = 0; xx < NFC_NFCC_MAX_NUM_VS_INTERFACE + NCI_INTERFACE_MAX; xx++) {
memset(&max_maps[xx], 0x00, sizeof(tNFC_DISCOVER_MAPS));
@@ -823,20 +838,22 @@
if (nfc_cb.vs_interface[yy] == p_maps[xx].intf_type)
is_supported = true;
}
- NFC_TRACE_DEBUG3("[%d]: vs intf_type:0x%x is_supported:%d", xx,
- p_maps[xx].intf_type, is_supported);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("[%d]: vs intf_type:0x%x is_supported:%d", xx,
+ p_maps[xx].intf_type, is_supported);
} else {
intf_mask = (1 << (p_maps[xx].intf_type));
if (intf_mask & nfc_cb.nci_interfaces) {
is_supported = true;
}
- NFC_TRACE_DEBUG4("[%d]: intf_type:%d intf_mask: 0x%x is_supported:%d", xx,
- p_maps[xx].intf_type, intf_mask, is_supported);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("[%d]: intf_type:%d intf_mask: 0x%x is_supported:%d",
+ xx, p_maps[xx].intf_type, intf_mask, is_supported);
}
if (is_supported)
memcpy(&max_maps[num_intf++], &p_maps[xx], sizeof(tNFC_DISCOVER_MAPS));
else {
- NFC_TRACE_WARNING1(
+ LOG(WARNING) << StringPrintf(
"NFC_DiscoveryMap interface=0x%x is not supported by NFCC",
p_maps[xx].intf_type);
}
@@ -868,9 +885,9 @@
int params_size;
tNFC_STATUS status = NFC_STATUS_NO_BUFFERS;
- NFC_TRACE_API0("NFC_DiscoveryStart");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfc_cb.p_disc_pending) {
- NFC_TRACE_ERROR0("There's pending NFC_DiscoveryStart");
+ LOG(ERROR) << StringPrintf("There's pending NFC_DiscoveryStart");
status = NFC_STATUS_BUSY;
} else {
nfc_cb.p_discv_cback = p_cback;
@@ -888,7 +905,8 @@
}
}
- NFC_TRACE_API1("NFC_DiscoveryStart status: 0x%x", status);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFC_DiscoveryStart status: 0x%x", status);
return status;
}
@@ -1106,13 +1124,9 @@
tNFC_CONN_CB* p_cb = &nfc_cb.conn_cb[NFC_RF_CONN_ID];
tNFC_STATUS status = NFC_STATUS_OK;
-#if (BT_TRACE_VERBOSE == TRUE)
- NFC_TRACE_API3("NFC_Deactivate %d (%s) deactivate_type:%d", nfc_cb.nfc_state,
- nfc_state_name(nfc_cb.nfc_state), deactivate_type);
-#else
- NFC_TRACE_API2("NFC_Deactivate %d deactivate_type:%d", nfc_cb.nfc_state,
- deactivate_type);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "NFC_Deactivate %d (%s) deactivate_type:%d", nfc_cb.nfc_state,
+ nfc_state_name(nfc_cb.nfc_state).c_str(), deactivate_type);
if (nfc_cb.flags & NFC_FL_DISCOVER_PENDING) {
/* the HAL pre-discover is still active - clear the pending flag */
@@ -1128,8 +1142,9 @@
if (nfc_cb.nfc_state == NFC_STATE_OPEN) {
nfc_set_state(NFC_STATE_CLOSING);
- NFC_TRACE_DEBUG3("act_protocol %d credits:%d/%d", p_cb->act_protocol,
- p_cb->init_credits, p_cb->num_buff);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("act_protocol %d credits:%d/%d", p_cb->act_protocol,
+ p_cb->init_credits, p_cb->num_buff);
if ((p_cb->act_protocol == NCI_PROTOCOL_NFC_DEP) &&
(p_cb->init_credits != p_cb->num_buff)) {
nfc_cb.flags |= NFC_FL_DEACTIVATING;
@@ -1229,7 +1244,7 @@
**
*******************************************************************************/
tNFC_STATUS NFC_SetPowerOffSleep(bool enable) {
- NFC_TRACE_API1("NFC_SetPowerOffSleep () enable = %d", enable);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("enable = %d", enable);
if ((enable == false) &&
(nfc_cb.nfc_state == NFC_STATE_NFCC_POWER_OFF_SLEEP)) {
@@ -1248,8 +1263,7 @@
return NFC_STATUS_OK;
}
- NFC_TRACE_ERROR1("NFC_SetPowerOffSleep () invalid state = %d",
- nfc_cb.nfc_state);
+ LOG(ERROR) << StringPrintf("invalid state = %d", nfc_cb.nfc_state);
return NFC_STATUS_FAILED;
}
@@ -1263,7 +1277,7 @@
**
*******************************************************************************/
tNFC_STATUS NFC_PowerCycleNFCC(void) {
- NFC_TRACE_API0("NFC_PowerCycleNFCC ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (nfc_cb.nfc_state == NFC_STATE_IDLE) {
/* power cycle NFCC */
@@ -1273,31 +1287,12 @@
return NFC_STATUS_OK;
}
- NFC_TRACE_ERROR1("NFC_PowerCycleNFCC () invalid state = %d",
- nfc_cb.nfc_state);
+ LOG(ERROR) << StringPrintf("invalid state = %d", nfc_cb.nfc_state);
return NFC_STATUS_FAILED;
}
/*******************************************************************************
**
-** Function NFC_SetTraceLevel
-**
-** Description This function sets the trace level for NFC. If called with
-** a value of 0xFF, it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-uint8_t NFC_SetTraceLevel(uint8_t new_level) {
- NFC_TRACE_API1("NFC_SetTraceLevel () new_level = %d", new_level);
-
- if (new_level != 0xFF) nfc_cb.trace_level = new_level;
-
- return (nfc_cb.trace_level);
-}
-
-/*******************************************************************************
-**
** Function NFC_GetNCIVersion
**
** Description Called by higher layer to get the current nci
@@ -1326,7 +1321,37 @@
return nci_snd_iso_dep_nak_presence_check_cmd();
}
-#if (BT_TRACE_VERBOSE == TRUE)
+/*******************************************************************************
+**
+** Function NFC_SetStaticHciCback
+**
+** Description This function is called to update the data callback function
+** to receive the data for the static Hci connection id.
+**
+** Parameters p_cback - the connection callback function
+**
+** Returns Nothing
+**
+*******************************************************************************/
+void NFC_SetStaticHciCback(tNFC_CONN_CBACK* p_cback) {
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s dest: %d", __func__, NCI_DEST_TYPE_NFCEE);
+ tNFC_CONN_CB* p_cb = &nfc_cb.conn_cb[NFC_HCI_CONN_ID];
+ tNFC_CONN evt_data;
+
+ p_cb->p_cback = p_cback;
+ if (p_cback && p_cb->buff_size && p_cb->num_buff) {
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s dest: %d", __func__, NCI_DEST_TYPE_NFCEE);
+ evt_data.conn_create.status = NFC_STATUS_OK;
+ evt_data.conn_create.dest_type = NCI_DEST_TYPE_NFCEE;
+ evt_data.conn_create.id = p_cb->id;
+ evt_data.conn_create.buff_size = p_cb->buff_size;
+ evt_data.conn_create.num_buffs = p_cb->num_buff;
+ (*p_cback)(NFC_HCI_CONN_ID, NFC_CONN_CREATE_CEVT, &evt_data);
+ }
+}
+
/*******************************************************************************
**
** Function NFC_GetStatusName
@@ -1338,7 +1363,7 @@
** Returns pointer to the name
**
*******************************************************************************/
-char* NFC_GetStatusName(tNFC_STATUS status) {
+std::string NFC_GetStatusName(tNFC_STATUS status) {
switch (status) {
case NFC_STATUS_OK:
return "OK";
@@ -1414,4 +1439,3 @@
return "UNKNOWN";
}
}
-#endif
diff --git a/src/nfc/nfc/nfc_ncif.cc b/src/nfc/nfc/nfc_ncif.cc
index 8e0048a..6d6607d 100644
--- a/src/nfc/nfc/nfc_ncif.cc
+++ b/src/nfc/nfc/nfc_ncif.cc
@@ -23,10 +23,10 @@
* (callback). On the transmit side, it manages the command transmission.
*
******************************************************************************/
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
#include <log/log.h>
#include <metricslogger/metrics_logger.h>
-#include <stdlib.h>
-#include <string.h>
#include "nfc_target.h"
@@ -34,10 +34,12 @@
#include "nci_defs.h"
#include "nci_hmsgs.h"
#include "nfc_api.h"
-#include "nfc_hal_api.h"
#include "nfc_int.h"
#include "rw_api.h"
#include "rw_int.h"
+
+using android::base::StringPrintf;
+
#if (NFC_RW_ONLY == FALSE)
static const uint8_t nfc_mpl_code_to_size[] = {64, 128, 192, 254};
@@ -50,6 +52,8 @@
#define NFC_LB_ATTRIB_REQ_FIXED_BYTES 8
extern unsigned char appl_dta_mode_flag;
+extern bool nfc_debug_enabled;
+
/*******************************************************************************
**
** Function nfc_ncif_update_window
@@ -63,7 +67,7 @@
/* Sanity check - see if we were expecting a update_window */
if (nfc_cb.nci_cmd_window == NCI_MAX_CMD_WINDOW) {
if (nfc_cb.nfc_state != NFC_STATE_W4_HAL_CLOSE) {
- NFC_TRACE_ERROR0("nfc_ncif_update_window: Unexpected call");
+ LOG(ERROR) << StringPrintf("nfc_ncif_update_window: Unexpected call");
}
return;
}
@@ -88,7 +92,7 @@
**
*******************************************************************************/
void nfc_ncif_cmd_timeout(void) {
- NFC_TRACE_ERROR0("nfc_ncif_cmd_timeout");
+ LOG(ERROR) << StringPrintf("nfc_ncif_cmd_timeout");
/* report an error */
nfc_ncif_event_status(NFC_GEN_ERROR_REVT, NFC_STATUS_HW_TIMEOUT);
@@ -113,7 +117,7 @@
**
*******************************************************************************/
void nfc_wait_2_deactivate_timeout(void) {
- NFC_TRACE_ERROR0("nfc_wait_2_deactivate_timeout");
+ LOG(ERROR) << StringPrintf("nfc_wait_2_deactivate_timeout");
nfc_cb.flags &= ~NFC_FL_DEACTIVATING;
nci_snd_deactivate_cmd((uint8_t)nfc_cb.deactivate_timer.param);
}
@@ -139,8 +143,9 @@
uint8_t hdr0 = p_cb->conn_id;
bool fragmented = false;
- NFC_TRACE_DEBUG3("nfc_ncif_send_data :%d, num_buff:%d qc:%d", p_cb->conn_id,
- p_cb->num_buff, p_cb->tx_q.count);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfc_ncif_send_data :%d, num_buff:%d qc:%d",
+ p_cb->conn_id, p_cb->num_buff, p_cb->tx_q.count);
if (p_cb->id == NFC_RF_CONN_ID) {
if (nfc_cb.nfc_state != NFC_STATE_OPEN) {
if (nfc_cb.nfc_state == NFC_STATE_CLOSING) {
@@ -149,7 +154,7 @@
if (p_cb->init_credits == p_cb->num_buff) {
/* all the credits are back */
nfc_cb.flags &= ~NFC_FL_DEACTIVATING;
- NFC_TRACE_DEBUG2(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"deactivating NFC-DEP init_credits:%d, num_buff:%d",
p_cb->init_credits, p_cb->num_buff);
nfc_stop_timer(&nfc_cb.deactivate_timer);
@@ -369,13 +374,14 @@
nfcsnoop_capture(p_msg, true);
switch (mt) {
case NCI_MT_DATA:
- NFC_TRACE_DEBUG0("NFC received data");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("NFC received data");
nfc_ncif_proc_data(p_msg);
free = false;
break;
case NCI_MT_RSP:
- NFC_TRACE_DEBUG1("NFC received rsp gid:%d", gid);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFC received rsp gid:%d", gid);
oid = ((*pp) & NCI_OID_MASK);
p_old = nfc_cb.last_hdr;
NCI_MSG_PRS_HDR0(p_old, old_mt, pbf, old_gid);
@@ -383,7 +389,7 @@
/* make sure this is the RSP we are waiting for before updating the
* command window */
if ((old_gid != gid) || (old_oid != oid)) {
- NFC_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"nfc_ncif_process_event unexpected rsp: gid:0x%x, oid:0x%x", gid,
oid);
return true;
@@ -407,7 +413,7 @@
nci_proc_prop_rsp(p_msg);
break;
default:
- NFC_TRACE_ERROR1("NFC: Unknown gid:%d", gid);
+ LOG(ERROR) << StringPrintf("NFC: Unknown gid:%d", gid);
break;
}
@@ -415,7 +421,8 @@
break;
case NCI_MT_NTF:
- NFC_TRACE_DEBUG1("NFC received ntf gid:%d", gid);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFC received ntf gid:%d", gid);
switch (gid) {
case NCI_GID_CORE: /* 0000b NCI Core group */
nci_proc_core_ntf(p_msg);
@@ -434,13 +441,14 @@
nci_proc_prop_ntf(p_msg);
break;
default:
- NFC_TRACE_ERROR1("NFC: Unknown gid:%d", gid);
+ LOG(ERROR) << StringPrintf("NFC: Unknown gid:%d", gid);
break;
}
break;
default:
- NFC_TRACE_DEBUG2("NFC received unknown mt:0x%x, gid:%d", mt, gid);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFC received unknown mt:0x%x, gid:%d", mt, gid);
}
return (free);
@@ -477,7 +485,7 @@
if (nfc_cb.p_resp_cback) {
evt_data.set_config.num_param_id = 0;
if (len == 0) {
- NFC_TRACE_ERROR0("Insufficient RSP length");
+ LOG(ERROR) << StringPrintf("Insufficient RSP length");
evt_data.set_config.status = NFC_STATUS_SYNTAX_ERROR;
(*nfc_cb.p_resp_cback)(NFC_SET_CONFIG_REVT, &evt_data);
return;
@@ -487,15 +495,15 @@
evt_data.set_config.num_param_id = *p++;
if (evt_data.set_config.num_param_id > NFC_MAX_NUM_IDS) {
android_errorWriteLog(0x534e4554, "114047681");
- NFC_TRACE_ERROR1("OOB write num_param_id %d",
- evt_data.set_config.num_param_id);
+ LOG(ERROR) << StringPrintf("OOB write num_param_id %d",
+ evt_data.set_config.num_param_id);
evt_data.set_config.num_param_id = 0;
} else if (evt_data.set_config.num_param_id <= len - 2) {
STREAM_TO_ARRAY(evt_data.set_config.param_ids, p,
evt_data.set_config.num_param_id);
} else {
- NFC_TRACE_ERROR2("Insufficient RSP length %d,num_param_id %d", len,
- evt_data.set_config.num_param_id);
+ LOG(ERROR) << StringPrintf("Insufficient RSP length %d,num_param_id %d",
+ len, evt_data.set_config.num_param_id);
evt_data.set_config.num_param_id = 0;
}
}
@@ -533,10 +541,11 @@
**
*******************************************************************************/
void nfc_ncif_error_status(uint8_t conn_id, uint8_t status) {
- tNFC_CONN_CB* p_cb;
- p_cb = nfc_find_conn_cb_by_conn_id(conn_id);
+ tNFC_CONN_CB* p_cb = nfc_find_conn_cb_by_conn_id(conn_id);
if (p_cb && p_cb->p_cback) {
- (*p_cb->p_cback)(conn_id, NFC_ERROR_CEVT, (tNFC_CONN*)&status);
+ tNFC_CONN nfc_conn;
+ nfc_conn.status = status;
+ (*p_cb->p_cback)(conn_id, NFC_ERROR_CEVT, &nfc_conn);
}
if (status == NFC_STATUS_TIMEOUT)
android::metricslogger::LogCounter("nfc_rf_timeout_error", 1);
@@ -585,7 +594,7 @@
** Returns void
**
*******************************************************************************/
-void nfc_ncif_proc_credits(uint8_t* p, uint16_t plen) {
+void nfc_ncif_proc_credits(uint8_t* p, __attribute__((unused)) uint16_t plen) {
uint8_t num, xx;
tNFC_CONN_CB* p_cb;
@@ -600,8 +609,8 @@
/* if this happens in activated state, it's very likely that our NFCC
* has issues */
/* However, credit may be returned after deactivation */
- NFC_TRACE_ERROR2("num_buff:0x%x, init_credits:0x%x", p_cb->num_buff,
- p_cb->init_credits);
+ LOG(ERROR) << StringPrintf("num_buff:0x%x, init_credits:0x%x",
+ p_cb->num_buff, p_cb->init_credits);
}
p_cb->num_buff = p_cb->init_credits;
}
@@ -720,8 +729,8 @@
} else if (NCI_DISCOVERY_TYPE_POLL_KOVIO == p_param->mode) {
p_param->param.pk.uid_len = len;
if (p_param->param.pk.uid_len > NFC_KOVIO_MAX_LEN) {
- NFC_TRACE_ERROR2("Kovio UID len:0x%x exceeds max(0x%x)",
- p_param->param.pk.uid_len, NFC_KOVIO_MAX_LEN);
+ LOG(ERROR) << StringPrintf("Kovio UID len:0x%x exceeds max(0x%x)",
+ p_param->param.pk.uid_len, NFC_KOVIO_MAX_LEN);
p_param->param.pk.uid_len = NFC_KOVIO_MAX_LEN;
}
STREAM_TO_ARRAY(p_param->param.pk.uid, p, p_param->param.pk.uid_len);
@@ -782,7 +791,8 @@
** Returns void
**
*******************************************************************************/
-void nfc_ncif_proc_discover_ntf(uint8_t* p, uint16_t plen) {
+void nfc_ncif_proc_discover_ntf(uint8_t* p,
+ __attribute__((unused)) uint16_t plen) {
tNFC_DISCOVER evt_data;
if (nfc_cb.p_discv_cback) {
@@ -863,8 +873,8 @@
evt_data.activate.rx_bitrate = *p++;
mode = evt_data.activate.rf_tech_param.mode;
len_act = *p++;
- NFC_TRACE_DEBUG3("nfc_ncif_proc_activate:%d %d, mode:0x%02x", len, len_act,
- mode);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfc_ncif_proc_activate:%d %d, mode:0x%02x", len, len_act, mode);
/* just in case the interface reports activation parameters not defined in the
* NCI spec */
p_intf->intf_param.frame.param_len = len_act;
@@ -1052,17 +1062,15 @@
*******************************************************************************/
void nfc_ncif_proc_deactivate(uint8_t status, uint8_t deact_type, bool is_ntf) {
tNFC_DISCOVER evt_data;
- tNFC_DEACTIVATE_DEVT* p_deact;
tNFC_CONN_CB* p_cb = &nfc_cb.conn_cb[NFC_RF_CONN_ID];
void* p_data;
nfc_set_state(NFC_STATE_IDLE);
- p_deact = &evt_data.deactivate;
- p_deact->status = status;
- p_deact->type = deact_type;
- p_deact->is_ntf = is_ntf;
+ evt_data.deactivate.status = status;
+ evt_data.deactivate.type = deact_type;
+ evt_data.deactivate.is_ntf = is_ntf;
if (NFC_GetNCIVersion() == NCI_VERSION_2_0) {
- p_deact->reason = nfc_cb.deact_reason;
+ evt_data.deactivate.reason = nfc_cb.deact_reason;
}
while ((p_data = GKI_dequeue(&p_cb->rx_q)) != NULL) {
@@ -1073,8 +1081,11 @@
GKI_freebuf(p_data);
}
- if (p_cb->p_cback)
- (*p_cb->p_cback)(NFC_RF_CONN_ID, NFC_DEACTIVATE_CEVT, (tNFC_CONN*)p_deact);
+ if (p_cb->p_cback) {
+ tNFC_CONN nfc_conn;
+ nfc_conn.deactivate = evt_data.deactivate;
+ (*p_cb->p_cback)(NFC_RF_CONN_ID, NFC_DEACTIVATE_CEVT, &nfc_conn);
+ }
if (nfc_cb.p_discv_cback) {
(*nfc_cb.p_discv_cback)(NFC_DEACTIVATE_DEVT, &evt_data);
@@ -1145,7 +1156,9 @@
}
break;
}
- (*p_cback)(NFC_EE_ACTION_REVT, (tNFC_RESPONSE*)&evt_data);
+ tNFC_RESPONSE nfc_response;
+ nfc_response.ee_action = evt_data;
+ (*p_cback)(NFC_EE_ACTION_REVT, &nfc_response);
}
}
@@ -1164,7 +1177,8 @@
tNFC_EE_DISCOVER_INFO* p_info;
uint8_t u8;
- NFC_TRACE_DEBUG2("nfc_ncif_proc_ee_discover_req %d len:%d", *p, plen);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfc_ncif_proc_ee_discover_req %d len:%d", *p, plen);
if (p_cback) {
u8 = *p;
ee_disc_req.status = NFC_STATUS_OK;
@@ -1175,7 +1189,8 @@
p_info->op = *p++; /* T */
if (*p != NFC_EE_DISCOVER_INFO_LEN) /* L */
{
- NFC_TRACE_DEBUG1("bad entry len:%d", *p);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("bad entry len:%d", *p);
return;
}
p++;
@@ -1187,7 +1202,9 @@
plen -= NFC_EE_DISCOVER_ENTRY_LEN;
p_info++;
}
- (*p_cback)(NFC_EE_DISCOVER_REQ_REVT, (tNFC_RESPONSE*)&ee_disc_req);
+ tNFC_RESPONSE nfc_response;
+ nfc_response.ee_discover_req = ee_disc_req;
+ (*p_cback)(NFC_EE_DISCOVER_REQ_REVT, &nfc_response);
}
}
@@ -1200,7 +1217,8 @@
** Returns void
**
*******************************************************************************/
-void nfc_ncif_proc_get_routing(uint8_t* p, uint8_t len) {
+void nfc_ncif_proc_get_routing(uint8_t* p,
+ __attribute__((unused)) uint8_t len) {
tNFC_GET_ROUTING_REVT evt_data;
uint8_t more, num_entries, xx, yy, *pn, tl;
tNFC_STATUS status = NFC_STATUS_CONTINUE;
@@ -1221,13 +1239,15 @@
evt_data.tlv_size += tl;
if (evt_data.tlv_size > NFC_MAX_EE_TLV_SIZE) {
android_errorWriteLog(0x534e4554, "117554809");
- NFC_TRACE_ERROR1("%s Invalid data format", __func__);
+ LOG(ERROR) << __func__ << "Invalid data format";
return;
}
STREAM_TO_ARRAY(pn, p, tl);
pn += tl;
}
- (*nfc_cb.p_resp_cback)(NFC_GET_ROUTING_REVT, (tNFC_RESPONSE*)&evt_data);
+ tNFC_RESPONSE nfc_response;
+ nfc_response.get_routing = evt_data;
+ (*nfc_cb.p_resp_cback)(NFC_GET_ROUTING_REVT, &nfc_response);
}
}
}
@@ -1243,7 +1263,8 @@
** Returns void
**
*******************************************************************************/
-void nfc_ncif_proc_conn_create_rsp(uint8_t* p, uint16_t plen,
+void nfc_ncif_proc_conn_create_rsp(uint8_t* p,
+ __attribute__((unused)) uint16_t plen,
uint8_t dest_type) {
tNFC_CONN_CB* p_cb;
tNFC_STATUS status;
@@ -1313,22 +1334,25 @@
uint8_t status = *p++;
uint8_t wait_for_ntf = FALSE;
if (is_ntf) {
- NFC_TRACE_ERROR1("reset notification!!:0x%x ", status);
+ LOG(ERROR) << StringPrintf("reset notification!!:0x%x ", status);
/* clean up, if the state is OPEN
* FW does not report reset ntf right now */
if (status == NCI2_0_RESET_TRIGGER_TYPE_CORE_RESET_CMD_RECEIVED ||
status == NCI2_0_RESET_TRIGGER_TYPE_POWERED_ON) {
- NFC_TRACE_DEBUG2("CORE_RESET_NTF Received status nfc_state : 0x%x : 0x%x",
- status, nfc_cb.nfc_state);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "CORE_RESET_NTF Received status nfc_state : 0x%x : 0x%x", status,
+ nfc_cb.nfc_state);
nfc_stop_timer(&nfc_cb.nci_wait_rsp_timer);
p++;
STREAM_TO_UINT8(nfc_cb.nci_version, p);
- NFC_TRACE_DEBUG1(" CORE_RESET_NTF nci_version%x", nfc_cb.nci_version);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(" CORE_RESET_NTF nci_version%x", nfc_cb.nci_version);
status = NCI_STATUS_OK;
} else {
/* CORE_RESET_NTF received error case , trigger recovery*/
- NFC_TRACE_DEBUG2("CORE_RESET_NTF Received status nfc_state : 0x%x : 0x%x",
- status, nfc_cb.nfc_state);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "CORE_RESET_NTF Received status nfc_state : 0x%x : 0x%x", status,
+ nfc_cb.nfc_state);
nfc_ncif_cmd_timeout();
status = NCI_STATUS_FAILED;
}
@@ -1338,7 +1362,8 @@
nfc_reset_all_conn_cbs();
}
} else {
- NFC_TRACE_DEBUG1("CORE_RESET_RSP len :0x%x ", *p_len);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("CORE_RESET_RSP len :0x%x ", *p_len);
if ((*p_len) == NCI_CORE_RESET_RSP_LEN(NCI_VERSION_2_0)) {
wait_for_ntf = TRUE;
} else if ((*p_len) == NCI_CORE_RESET_RSP_LEN(NCI_VERSION_1_0)) {
@@ -1364,7 +1389,7 @@
nci_snd_core_init(NCI_VERSION_2_0);
}
} else {
- NFC_TRACE_ERROR0("Failed to reset NFCC");
+ LOG(ERROR) << StringPrintf("Failed to reset NFCC");
nfc_enabled(status, NULL);
}
}
@@ -1391,12 +1416,16 @@
nci_snd_core_reset(NCI_RESET_TYPE_RESET_CFG);
} else {
p_cb->id = NFC_RF_CONN_ID;
+ // check scbr bit as per NCI 2.0 spec
+ nfc_cb.isScbrSupported = p[5] & NCI_SCBR_MASK;
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("scbr support: 0x%x", nfc_cb.isScbrSupported);
p_cb->act_protocol = NCI_PROTOCOL_UNKNOWN;
nfc_set_state(NFC_STATE_W4_POST_INIT_CPLT);
nfc_cb.p_nci_init_rsp = p_msg;
- nfc_cb.p_hal->core_initialized(p_msg->len - p_msg->offset, p);
+ nfc_cb.p_hal->core_initialized(p_msg->len, p);
}
} else {
if (nfc_cb.nci_version == NCI_VERSION_UNKNOWN) {
@@ -1512,7 +1541,8 @@
if ((data_cevt.status != NFC_STATUS_OK) &&
((data_cevt.status >= T2T_STATUS_OK_1_BIT) &&
(data_cevt.status <= T2T_STATUS_OK_7_BIT))) {
- NFC_TRACE_DEBUG1("%s: T2T tag data xchange", __func__);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: T2T tag data xchange", __func__);
data_cevt.status = NFC_STATUS_OK;
}
}
@@ -1524,7 +1554,9 @@
data_cevt.status = *(p + p_evt->offset + p_evt->len);
}
}
- (*p_cb->p_cback)(p_cb->conn_id, NFC_DATA_CEVT, (tNFC_CONN*)&data_cevt);
+ tNFC_CONN nfc_conn;
+ nfc_conn.data = data_cevt;
+ (*p_cb->p_cback)(p_cb->conn_id, NFC_DATA_CEVT, &nfc_conn);
p_evt = NULL;
}
}
@@ -1552,14 +1584,19 @@
uint16_t len;
pp = (uint8_t*)(p_msg + 1) + p_msg->offset;
- NFC_TRACE_DEBUG3("nfc_ncif_proc_data 0x%02x%02x%02x", pp[0], pp[1], pp[2]);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfc_ncif_proc_data 0x%02x%02x%02x", pp[0], pp[1], pp[2]);
NCI_DATA_PRS_HDR(pp, pbf, cid, len);
p_cb = nfc_find_conn_cb_by_conn_id(cid);
if (p_cb && (p_msg->len >= NCI_DATA_HDR_SIZE)) {
- NFC_TRACE_DEBUG1("nfc_ncif_proc_data len:%d", len);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfc_ncif_proc_data len:%d", len);
p_msg->layer_specific = 0;
- if (pbf) p_msg->layer_specific = NFC_RAS_FRAGMENTED;
+ if (pbf) {
+ NFC_SetReassemblyFlag(true);
+ p_msg->layer_specific = NFC_RAS_FRAGMENTED;
+ }
p_last = (NFC_HDR*)GKI_getlast(&p_cb->rx_q);
if (p_last && (p_last->layer_specific & NFC_RAS_FRAGMENTED)) {
/* last data buffer is not last fragment, append this new packet to the
@@ -1602,7 +1639,8 @@
p_last->len += len;
/* do not need to update pbf and len in NCI header.
* They are stripped off at NFC_DATA_CEVT and len may exceed 255 */
- NFC_TRACE_DEBUG1("nfc_ncif_proc_data len:%d", p_last->len);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfc_ncif_proc_data len:%d", p_last->len);
p_last->layer_specific = p_msg->layer_specific;
GKI_freebuf(p_msg);
#ifdef DISP_NCI
@@ -1647,7 +1685,8 @@
*******************************************************************************/
bool nfc_ncif_proc_proprietary_rsp(uint8_t mt, uint8_t gid, uint8_t oid) {
bool stat = FALSE;
- NFC_TRACE_DEBUG4("%s: mt=%u, gid=%u, oid=%u", __func__, mt, gid, oid);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: mt=%u, gid=%u, oid=%u", __func__, mt, gid, oid);
switch (mt) {
case NCI_MT_DATA:
@@ -1679,6 +1718,27 @@
stat = TRUE;
break;
}
- NFC_TRACE_DEBUG2("%s: exit status=%u", __func__, stat);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("%s: exit status=%u", __func__, stat);
return stat;
}
+
+/*******************************************************************************
+** Function nfc_mode_set_ntf_timeout
+**
+** Description This function is invoked on mode set ntf timeout
+**
+** Returns void
+**
+*******************************************************************************/
+void nfc_mode_set_ntf_timeout() {
+ LOG(ERROR) << StringPrintf("%s", __func__);
+ tNFC_RESPONSE nfc_response;
+ nfc_response.mode_set.status = NCI_STATUS_FAILED;
+ nfc_response.mode_set.nfcee_id = *nfc_cb.last_cmd;
+ nfc_response.mode_set.mode = NCI_NFCEE_MD_DEACTIVATE;
+
+ tNFC_RESPONSE_CBACK* p_cback = nfc_cb.p_resp_cback;
+ tNFC_RESPONSE_EVT event = NFC_NFCEE_MODE_SET_REVT;
+ if (p_cback) (*p_cback)(event, &nfc_response);
+}
diff --git a/src/nfc/nfc/nfc_task.c b/src/nfc/nfc/nfc_task.cc
similarity index 91%
rename from src/nfc/nfc/nfc_task.c
rename to src/nfc/nfc/nfc_task.cc
index 3cd9c7a..bf0a7a7 100644
--- a/src/nfc/nfc/nfc_task.c
+++ b/src/nfc/nfc/nfc_task.cc
@@ -22,14 +22,16 @@
*
******************************************************************************/
#include <string.h>
-#include "bt_types.h"
-#include "gki.h"
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfc_target.h"
+#include "bt_types.h"
#include "ce_int.h"
+#include "gki.h"
#include "nci_hmsgs.h"
-#include "nfc_api.h"
-#include "nfc_hal_api.h"
#include "nfc_int.h"
#include "rw_int.h"
#if (NFC_RW_ONLY == FALSE)
@@ -39,7 +41,10 @@
#endif
#include "nfa_dm_int.h"
-#include "nfa_sys.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/*******************************************************************************
**
@@ -118,11 +123,14 @@
case NFC_TTYPE_WAIT_2_DEACTIVATE:
nfc_wait_2_deactivate_timeout();
break;
-
+ case NFC_TTYPE_WAIT_MODE_SET_NTF:
+ nfc_mode_set_ntf_timeout();
+ break;
default:
- NFC_TRACE_DEBUG2("nfc_process_timer_evt: timer:0x%x event (0x%04x)",
- p_tle, p_tle->event);
- NFC_TRACE_DEBUG1(
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfc_process_timer_evt: timer:0x%p event (0x%04x)",
+ p_tle, p_tle->event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfc_process_timer_evt: unhandled timer event (0x%04x)",
p_tle->event);
}
@@ -245,7 +253,7 @@
rw_t1t_process_timeout(p_tle);
break;
case NFC_TTYPE_RW_T2T_RESPONSE:
- rw_t2t_process_timeout(p_tle);
+ rw_t2t_process_timeout();
break;
case NFC_TTYPE_RW_T3T_RESPONSE:
rw_t3t_process_timeout(p_tle);
@@ -268,7 +276,7 @@
break;
#endif
default:
- NFC_TRACE_DEBUG1(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"nfc_process_quick_timer_evt: unhandled timer event (0x%04x)",
p_tle->event);
break;
@@ -329,16 +337,15 @@
** Returns nothing
**
*******************************************************************************/
-uint32_t nfc_task(uint32_t param) {
+uint32_t nfc_task(__attribute__((unused)) uint32_t arg) {
uint16_t event;
NFC_HDR* p_msg;
bool free_buf;
/* Initialize the nfc control block */
memset(&nfc_cb, 0, sizeof(tNFC_CB));
- nfc_cb.trace_level = NFC_INITIAL_TRACE_LEVEL;
- NFC_TRACE_DEBUG0("NFC_TASK started.");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("NFC_TASK started.");
/* main loop */
while (true) {
@@ -348,7 +355,8 @@
}
/* Handle NFC_TASK_EVT_TRANSPORT_READY from NFC HAL */
if (event & NFC_TASK_EVT_TRANSPORT_READY) {
- NFC_TRACE_DEBUG0("NFC_TASK got NFC_TASK_EVT_TRANSPORT_READY.");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NFC_TASK got NFC_TASK_EVT_TRANSPORT_READY.");
/* Reset the NFC controller. */
nfc_set_state(NFC_STATE_CORE_INIT);
@@ -383,8 +391,8 @@
break;
default:
- NFC_TRACE_DEBUG1("nfc_task: unhandle mbox message, event=%04x",
- p_msg->event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "nfc_task: unhandle mbox message, event=%04x", p_msg->event);
break;
}
@@ -415,7 +423,7 @@
}
}
- NFC_TRACE_DEBUG0("nfc_task terminated");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("nfc_task terminated");
GKI_exit_task(GKI_get_taskid());
return 0;
diff --git a/src/nfc/nfc/nfc_test.c b/src/nfc/nfc/nfc_test.cc
similarity index 100%
rename from src/nfc/nfc/nfc_test.c
rename to src/nfc/nfc/nfc_test.cc
diff --git a/src/nfc/nfc/nfc_utils.c b/src/nfc/nfc/nfc_utils.cc
similarity index 93%
rename from src/nfc/nfc/nfc_utils.c
rename to src/nfc/nfc/nfc_utils.cc
index 290af0f..93fa7c6 100644
--- a/src/nfc/nfc/nfc_utils.c
+++ b/src/nfc/nfc/nfc_utils.cc
@@ -23,12 +23,17 @@
* (callback). On the transmit side, it manages the command transmission.
*
******************************************************************************/
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "bt_types.h"
#include "nfc_api.h"
-#include "nfc_target.h"
-
#include "nfc_int.h"
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
/*******************************************************************************
**
** Function nfc_alloc_conn_cb
@@ -74,7 +79,8 @@
p_cb->conn_id = conn_id;
handle = (uint8_t)(p_cb - nfc_cb.conn_cb + 1);
nfc_cb.conn_id[conn_id] = handle;
- NFC_TRACE_DEBUG2("nfc_set_conn_id conn_id:%d, handle:%d", conn_id, handle);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("nfc_set_conn_id conn_id:%d, handle:%d", conn_id, handle);
}
/*******************************************************************************
@@ -178,9 +184,12 @@
deact.is_ntf = TRUE;
for (xx = 0; xx < NCI_MAX_CONN_CBS; xx++, p_conn_cb++) {
if (p_conn_cb->conn_id != NFC_ILLEGAL_CONN_ID) {
- if (p_conn_cb->p_cback)
+ if (p_conn_cb->p_cback) {
+ tNFC_CONN nfc_conn;
+ nfc_conn.deactivate = deact;
(*p_conn_cb->p_cback)(p_conn_cb->conn_id, NFC_DEACTIVATE_CEVT,
- (tNFC_CONN*)&deact);
+ &nfc_conn);
+ }
nfc_free_conn_cb(p_conn_cb);
}
}
diff --git a/src/nfc/nfc/nfc_vs.c b/src/nfc/nfc/nfc_vs.cc
similarity index 93%
rename from src/nfc/nfc/nfc_vs.c
rename to src/nfc/nfc/nfc_vs.cc
index 5e2548a..c23daf7 100644
--- a/src/nfc/nfc/nfc_vs.c
+++ b/src/nfc/nfc/nfc_vs.cc
@@ -24,11 +24,17 @@
*
******************************************************************************/
#include <string.h>
-#include "gki.h"
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfc_target.h"
+#include "gki.h"
#include "nfc_int.h"
+using android::base::StringPrintf;
+
/****************************************************************************
** Declarations
****************************************************************************/
@@ -87,7 +93,8 @@
tNFC_STATUS NFC_SendRawVsCommand(NFC_HDR* p_data, tNFC_VS_CBACK* p_cback) {
/* Validate parameters */
if (p_data == NULL || (p_data->len > NCI_MAX_VSC_SIZE)) {
- NFC_TRACE_ERROR1("buffer offset must be >= %d", NCI_VSC_MSG_HDR_SIZE);
+ LOG(ERROR) << StringPrintf("buffer offset must be >= %d",
+ NCI_VSC_MSG_HDR_SIZE);
if (p_data) GKI_freebuf(p_data);
return NFC_STATUS_INVALID_PARAM;
}
@@ -132,7 +139,8 @@
/* Validate parameters */
if ((p_data == NULL) || (p_data->offset < NCI_VSC_MSG_HDR_SIZE) ||
(p_data->len > NCI_MAX_VSC_SIZE)) {
- NFC_TRACE_ERROR1("buffer offset must be >= %d", NCI_VSC_MSG_HDR_SIZE);
+ LOG(ERROR) << StringPrintf("buffer offset must be >= %d",
+ NCI_VSC_MSG_HDR_SIZE);
if (p_data) GKI_freebuf(p_data);
return NFC_STATUS_INVALID_PARAM;
}
diff --git a/src/nfc/tags/ce_main.c b/src/nfc/tags/ce_main.cc
similarity index 80%
rename from src/nfc/tags/ce_main.c
rename to src/nfc/tags/ce_main.cc
index cf207cb..46e6955 100644
--- a/src/nfc/tags/ce_main.c
+++ b/src/nfc/tags/ce_main.cc
@@ -24,14 +24,19 @@
*
******************************************************************************/
#include <string.h>
-#include "bt_types.h"
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfc_target.h"
+#include "bt_types.h"
#include "ce_api.h"
#include "ce_int.h"
-#include "gki.h"
-#include "nci_hmsgs.h"
-#include "nfc_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
tCE_CB ce_cb;
@@ -39,7 +44,6 @@
*******************************************************************************/
void ce_init(void) {
memset(&ce_cb, 0, sizeof(tCE_CB));
- ce_cb.trace_level = NFC_INITIAL_TRACE_LEVEL;
/* Initialize tag-specific fields of ce control block */
ce_t3t_init();
@@ -67,7 +71,8 @@
p = (uint8_t*)(p_data + 1) + p_data->offset;
memcpy(p, p_raw_data, data_len);
p_data->len = data_len;
- CE_TRACE_EVENT1("CE SENT raw frame (0x%x)", data_len);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("CE SENT raw frame (0x%x)", data_len);
status = NFC_SendData(NFC_RF_CONN_ID, p_data);
}
}
@@ -89,7 +94,8 @@
tNFC_STATUS status = NFC_STATUS_FAILED;
tNFC_PROTOCOL protocol = p_activate_params->protocol;
- CE_TRACE_API1("CE_SetActivatedTagType protocol:%d", protocol);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("CE_SetActivatedTagType protocol:%d", protocol);
switch (protocol) {
case NFC_PROTOCOL_T1T:
@@ -110,7 +116,7 @@
break;
default:
- CE_TRACE_ERROR0("CE_SetActivatedTagType Invalid protocol");
+ LOG(ERROR) << StringPrintf("CE_SetActivatedTagType Invalid protocol");
return NFC_STATUS_FAILED;
}
@@ -120,20 +126,3 @@
}
return status;
}
-
-/*******************************************************************************
-**
-** Function CE_SetTraceLevel
-**
-** Description This function sets the trace level for Card Emulation mode.
-** If called with a value of 0xFF,
-** it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-uint8_t CE_SetTraceLevel(uint8_t new_level) {
- if (new_level != 0xFF) ce_cb.trace_level = new_level;
-
- return (ce_cb.trace_level);
-}
diff --git a/src/nfc/tags/ce_t3t.c b/src/nfc/tags/ce_t3t.cc
similarity index 88%
rename from src/nfc/tags/ce_t3t.c
rename to src/nfc/tags/ce_t3t.cc
index cd1ae00..461b9ed 100644
--- a/src/nfc/tags/ce_t3t.c
+++ b/src/nfc/tags/ce_t3t.cc
@@ -23,16 +23,20 @@
*
******************************************************************************/
#include <string.h>
-#include "bt_types.h"
-#include "nfc_target.h"
-#include "trace_api.h"
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
+#include "nfc_target.h"
+
+#include "bt_types.h"
#include "ce_api.h"
#include "ce_int.h"
-#include "gki.h"
-#include "nfc_api.h"
-#include "nfc_int.h"
-#include "tags_int.h"
+#include "trace_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
enum {
CE_T3T_COMMAND_INVALID,
@@ -90,12 +94,8 @@
UINT8_TO_STREAM(p, (p_msg->len + 1));
p_msg->len += 1; /* Increment len to include SoD */
-#if (BT_TRACE_PROTOCOL == TRUE)
- DispT3TagMessage(p_msg, false);
-#endif
-
if (NFC_SendData(NFC_RF_CONN_ID, p_msg) != NFC_STATUS_OK) {
- CE_TRACE_ERROR0("ce_t3t_send_to_lower (): NFC_SendData () failed");
+ LOG(ERROR) << StringPrintf("failed");
}
}
@@ -182,7 +182,8 @@
p_rsp_msg->len = (uint16_t)(p_dst - p_rsp_start);
ce_t3t_send_to_lower(p_rsp_msg);
} else {
- CE_TRACE_ERROR0("CE: Unable to allocat buffer for response message");
+ LOG(ERROR) << StringPrintf(
+ "CE: Unable to allocat buffer for response message");
}
}
@@ -206,7 +207,6 @@
tCE_T3T_NDEF_INFO ndef_info;
tNFC_STATUS nfc_status = NFC_STATUS_OK;
uint8_t update_flags = 0;
- tCE_UPDATE_INFO update_info;
/* If in idle state, notify app that update is starting */
if (p_cb->state == CE_T3T_STATE_IDLE) {
@@ -230,7 +230,7 @@
/* Reject UPDATE command if service code=T3T_MSG_NDEF_SC_RO */
if (service_code == T3T_MSG_NDEF_SC_RO) {
/* Error: invalid block number to update */
- CE_TRACE_ERROR0("CE: UPDATE request using read-only service");
+ LOG(ERROR) << StringPrintf("CE: UPDATE request using read-only service");
nfc_status = NFC_STATUS_FAILED;
break;
}
@@ -238,18 +238,19 @@
/* Check for NDEF */
if (service_code == T3T_MSG_NDEF_SC_RW) {
if (p_cb->cur_cmd.num_blocks > p_cb->ndef_info.nbw) {
- CE_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"CE: Requested too many blocks to update (requested: %i, max: %i)",
p_cb->cur_cmd.num_blocks, p_cb->ndef_info.nbw);
nfc_status = NFC_STATUS_FAILED;
break;
} else if (p_cb->ndef_info.rwflag == T3T_MSG_NDEF_RWFLAG_RO) {
- CE_TRACE_ERROR0("CE: error: write-request to read-only NDEF message.");
+ LOG(ERROR) << StringPrintf(
+ "CE: error: write-request to read-only NDEF message.");
nfc_status = NFC_STATUS_FAILED;
break;
} else if (block_number == 0) {
- CE_TRACE_DEBUG2("CE: Update sc 0x%04x block %i.", service_code,
- block_number);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "CE: Update sc 0x%04x block %i.", service_code, block_number);
/* Special caes: NDEF block0 is the ndef attribute block */
p_temp = p_block_data;
@@ -271,7 +272,8 @@
/* Compare calcuated checksum with received checksum */
if (checksum != checksum_rx) {
- CE_TRACE_ERROR0("CE: Checksum failed for NDEF attribute block.");
+ LOG(ERROR) << StringPrintf(
+ "CE: Checksum failed for NDEF attribute block.");
nfc_status = NFC_STATUS_FAILED;
} else {
/* Update NDEF attribute block (only allowed to update current length
@@ -289,13 +291,13 @@
}
}
} else {
- CE_TRACE_DEBUG2("CE: Udpate sc 0x%04x block %i.", service_code,
- block_number);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "CE: Udpate sc 0x%04x block %i.", service_code, block_number);
/* Verify that block_number is within NDEF memory */
if (block_number > p_cb->ndef_info.nmaxb) {
/* Error: invalid block number to update */
- CE_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"CE: Requested invalid NDEF block number to update %i (max is "
"%i).",
block_number, p_cb->ndef_info.nmaxb);
@@ -314,8 +316,8 @@
}
} else {
/* Error: invalid service code */
- CE_TRACE_ERROR1("CE: Requested invalid service code: 0x%04x.",
- service_code);
+ LOG(ERROR) << StringPrintf("CE: Requested invalid service code: 0x%04x.",
+ service_code);
nfc_status = NFC_STATUS_FAILED;
break;
}
@@ -344,11 +346,12 @@
if (update_flags & CE_T3T_UPDATE_FL_NDEF_UPDATE_CPLT) {
/* NDEF attribute got updated with WriteF=FALSE */
- update_info.status = nfc_status;
- update_info.p_data = p_cb->ndef_info.p_scratch_buf;
- update_info.length = p_cb->ndef_info.scratch_ln;
+ tCE_DATA ce_data;
+ ce_data.update_info.status = nfc_status;
+ ce_data.update_info.p_data = p_cb->ndef_info.p_scratch_buf;
+ ce_data.update_info.length = p_cb->ndef_info.scratch_ln;
p_cb->state = CE_T3T_STATE_IDLE;
- p_ce_cb->p_cback(CE_T3T_NDEF_UPDATE_CPLT_EVT, (tCE_DATA*)&update_info);
+ p_ce_cb->p_cback(CE_T3T_NDEF_UPDATE_CPLT_EVT, &ce_data);
}
GKI_freebuf(p_cmd_msg);
@@ -412,7 +415,7 @@
/* Verify Nbr (NDEF only) */
if (p_cb->cur_cmd.num_blocks > p_cb->ndef_info.nbr) {
/* Error: invalid number of blocks to check */
- CE_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"CE: Requested too many blocks to check (requested: %i, max: %i)",
p_cb->cur_cmd.num_blocks, p_cb->ndef_info.nbr);
@@ -456,8 +459,8 @@
/* Invalid block number */
p_dst = p_status;
- CE_TRACE_ERROR1("CE: Requested block number to check %i.",
- block_number);
+ LOG(ERROR) << StringPrintf(
+ "CE: Requested block number to check %i.", block_number);
/* Error: invalid number of blocks to check */
UINT8_TO_STREAM(p_dst, T3T_MSG_RSP_STATUS_ERROR);
@@ -483,8 +486,8 @@
}
} else {
/* Error: invalid service code */
- CE_TRACE_ERROR1("CE: Requested invalid service code: 0x%04x.",
- service_code);
+ LOG(ERROR) << StringPrintf(
+ "CE: Requested invalid service code: 0x%04x.", service_code);
p_dst = p_status;
UINT8_TO_STREAM(p_dst, T3T_MSG_RSP_STATUS_ERROR);
@@ -496,7 +499,8 @@
p_rsp_msg->len = (uint16_t)(p_dst - p_rsp_start);
ce_t3t_send_to_lower(p_rsp_msg);
} else {
- CE_TRACE_ERROR0("CE: Unable to allocat buffer for response message");
+ LOG(ERROR) << StringPrintf(
+ "CE: Unable to allocat buffer for response message");
}
GKI_freebuf(p_cmd_msg);
@@ -583,7 +587,7 @@
case T3T_MSG_OPC_REQ_SERVICE_CMD:
default:
/* Unhandled command */
- CE_TRACE_ERROR1("Unhandled CE opcode: %02x", cmd_id);
+ LOG(ERROR) << StringPrintf("Unhandled CE opcode: %02x", cmd_id);
send_response = false;
break;
}
@@ -595,7 +599,8 @@
GKI_freebuf(p_rsp_msg);
}
} else {
- CE_TRACE_ERROR0("CE: Unable to allocat buffer for response message");
+ LOG(ERROR) << StringPrintf(
+ "CE: Unable to allocat buffer for response message");
}
GKI_freebuf(p_cmd_msg);
}
@@ -609,7 +614,7 @@
** Returns none
**
*******************************************************************************/
-void ce_t3t_data_cback(uint8_t conn_id, tNFC_DATA_CEVT* p_data) {
+void ce_t3t_data_cback(tNFC_DATA_CEVT* p_data) {
tCE_CB* p_ce_cb = &ce_cb;
tCE_T3T_MEM* p_cb = &p_ce_cb->mem.t3t;
NFC_HDR* p_msg = p_data->p_data;
@@ -624,10 +629,6 @@
uint8_t sod;
uint8_t cmd_type;
-#if (BT_TRACE_PROTOCOL == TRUE)
- DispT3TagMessage(p_msg, true);
-#endif
-
/* If activate system code is not NDEF, or if no local NDEF contents was set,
* then pass data up to the app */
if ((p_cb->system_code != T3T_SYSTEM_CODE_NDEF) ||
@@ -640,8 +641,8 @@
/* Verify that message contains at least Sod and cmd_id */
if (p_msg->len < 2) {
- CE_TRACE_ERROR1("CE: received invalid T3t message (invalid length: %i)",
- p_msg->len);
+ LOG(ERROR) << StringPrintf(
+ "CE: received invalid T3t message (invalid length: %i)", p_msg->len);
} else {
/* Get and validate command opcode */
STREAM_TO_UINT8(sod, p);
@@ -650,7 +651,7 @@
/* Valid command and message length */
cmd_type = ce_t3t_is_valid_opcode(cmd_id);
if (cmd_type == CE_T3T_COMMAND_INVALID) {
- CE_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"CE: received invalid T3t message (invalid command: 0x%02X)", cmd_id);
} else if (cmd_type == CE_T3T_COMMAND_FELICA) {
ce_t3t_handle_non_nfc_forum_cmd(p_ce_cb, cmd_id, p_msg);
@@ -658,8 +659,9 @@
} else {
/* Verify that message contains at least NFCID2 and NUM services */
if (p_msg->len < T3T_MSG_CMD_COMMON_HDR_LEN) {
- CE_TRACE_ERROR1("CE: received invalid T3t message (invalid length: %i)",
- p_msg->len);
+ LOG(ERROR) << StringPrintf(
+ "CE: received invalid T3t message (invalid length: %i)",
+ p_msg->len);
} else {
/* Handle NFC_FORUM command (UPDATE or CHECK) */
STREAM_TO_ARRAY(cmd_nfcid2, p, NCI_RF_F_UID_LEN);
@@ -670,17 +672,18 @@
T3T_MSG_CMD_COMMON_HDR_LEN + 2 * p_cb->cur_cmd.num_services + 1;
if (p_cb->state == CE_T3T_STATE_NOT_ACTIVATED) {
- CE_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"CE: received command 0x%02X while in bad state (%i))", cmd_id,
p_cb->state);
} else if (memcmp(cmd_nfcid2, p_cb->local_nfcid2, NCI_RF_F_UID_LEN) !=
0) {
- CE_TRACE_ERROR0("CE: received invalid T3t message (invalid NFCID2)");
+ LOG(ERROR) << StringPrintf(
+ "CE: received invalid T3t message (invalid NFCID2)");
p_nfcid2 = cmd_nfcid2; /* respond with ERROR using the NFCID2 from the
command message */
} else if (p_msg->len < block_list_start_offset) {
/* Does not have minimum (including number_of_blocks field) */
- CE_TRACE_ERROR0("CE: incomplete message");
+ LOG(ERROR) << StringPrintf("CE: incomplete message");
} else {
/* Parse service code list */
for (i = 0; i < p_cb->cur_cmd.num_services; i++) {
@@ -696,7 +699,7 @@
/* Each entry is at lease 2 bytes long */
if (remaining < 2) {
/* Unexpected end of message (while reading block-list) */
- CE_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"CE: received invalid T3t message (unexpected end of "
"block-list)");
block_list_ok = false;
@@ -710,7 +713,7 @@
if ((bl0 & T3T_MSG_SERVICE_LIST_MASK) >=
p_cb->cur_cmd.num_services) {
/* Invalid service code */
- CE_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"CE: received invalid T3t message (invalid service index: "
"%i)",
(bl0 & T3T_MSG_SERVICE_LIST_MASK));
@@ -719,7 +722,7 @@
} else if ((!(bl0 & T3T_MSG_MASK_TWO_BYTE_BLOCK_DESC_FORMAT)) &&
(remaining < 3)) {
/* Unexpected end of message (while reading 3-byte entry) */
- CE_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"CE: received invalid T3t message (unexpected end of "
"block-list)");
block_list_ok = false;
@@ -739,9 +742,9 @@
/* This is a CHECK command. Sanity check: there shouldn't be any
* more data remaining after reading block list */
if (remaining) {
- CE_TRACE_ERROR1(
- "CE: unexpected data after after CHECK command (#i bytes)",
- remaining);
+ LOG(ERROR) << StringPrintf(
+ "CE: unexpected data after after CHECK command (%u bytes)",
+ (unsigned int)remaining);
}
ce_t3t_handle_check_cmd(p_ce_cb, p_msg);
msg_processed = true;
@@ -749,7 +752,7 @@
/* This is an UPDATE command. See if message contains all the
* expected block data */
if (remaining < p_cb->cur_cmd.num_blocks * T3T_MSG_BLOCKSIZE) {
- CE_TRACE_ERROR0("CE: unexpected end of block-data");
+ LOG(ERROR) << StringPrintf("CE: unexpected end of block-data");
} else {
ce_t3t_handle_update_cmd(p_ce_cb, p_msg);
msg_processed = true;
@@ -782,7 +785,8 @@
tNFC_CONN* p_data) {
tCE_T3T_MEM* p_cb = &ce_cb.mem.t3t;
- CE_TRACE_DEBUG2("ce_t3t_conn_cback: conn_id=%i, evt=%i", conn_id, event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("ce_t3t_conn_cback: conn_id=%i, evt=%i", conn_id, event);
switch (event) {
case NFC_CONN_CREATE_CEVT:
@@ -794,7 +798,7 @@
case NFC_DATA_CEVT:
if (p_data->data.status == NFC_STATUS_OK) {
- ce_t3t_data_cback(conn_id, &p_data->data);
+ ce_t3t_data_cback(&p_data->data);
}
break;
@@ -821,7 +825,7 @@
uint8_t nfcid2[NCI_RF_F_UID_LEN]) {
tCE_T3T_MEM* p_cb = &ce_cb.mem.t3t;
- CE_TRACE_DEBUG0("ce_select_t3t ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cb->state = CE_T3T_STATE_IDLE;
p_cb->system_code = system_code;
@@ -845,13 +849,14 @@
uint8_t* p_scratch_buf) {
tCE_T3T_MEM* p_cb = &ce_cb.mem.t3t;
- CE_TRACE_API3("CE_T3tSetContent: ro=%i, size_max=%i, size_current=%i",
- read_only, size_max, size_current);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("CE_T3tSetContent: ro=%i, size_max=%i, size_current=%i",
+ read_only, size_max, size_current);
/* Verify scratch buffer was provided if NDEF message is read/write */
if ((!read_only) && (!p_scratch_buf)) {
- CE_TRACE_ERROR0(
- "CE_T3tSetLocalNDEFMsg (): p_scratch_buf cannot be NULL if not "
+ LOG(ERROR) << StringPrintf(
+ "p_scratch_buf cannot be NULL if not "
"read-only");
return NFC_STATUS_FAILED;
}
@@ -897,12 +902,13 @@
tNFC_STATUS CE_T3tSetLocalNDefParams(uint8_t nbr, uint8_t nbw) {
tCE_T3T_MEM* p_cb = &ce_cb.mem.t3t;
- CE_TRACE_API2("CE_T3tSetLocalNDefParams: nbr=%i, nbw=%i", nbr, nbw);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("CE_T3tSetLocalNDefParams: nbr=%i, nbw=%i", nbr, nbw);
/* Validate */
if ((nbr > T3T_MSG_NUM_BLOCKS_CHECK_MAX) ||
(nbw > T3T_MSG_NUM_BLOCKS_UPDATE_MAX) || (nbr < 1) || (nbw < 1)) {
- CE_TRACE_ERROR0("CE_T3tSetLocalNDefParams: invalid params");
+ LOG(ERROR) << StringPrintf("CE_T3tSetLocalNDefParams: invalid params");
return NFC_STATUS_FAILED;
}
@@ -928,13 +934,15 @@
NFC_HDR* p_rsp_msg;
uint8_t *p_dst, *p_rsp_start;
- CE_TRACE_API3("CE_T3tCheckRsp: status1=0x%02X, status2=0x%02X, num_blocks=%i",
- status1, status2, num_blocks);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "CE_T3tCheckRsp: status1=0x%02X, status2=0x%02X, num_blocks=%i", status1,
+ status2, num_blocks);
/* Validate num_blocks */
if (num_blocks > T3T_MSG_NUM_BLOCKS_CHECK_MAX) {
- CE_TRACE_ERROR2("CE_T3tCheckRsp num_blocks (%i) exceeds maximum (%i)",
- num_blocks, T3T_MSG_NUM_BLOCKS_CHECK_MAX);
+ LOG(ERROR) << StringPrintf(
+ "CE_T3tCheckRsp num_blocks (%i) exceeds maximum (%i)", num_blocks,
+ T3T_MSG_NUM_BLOCKS_CHECK_MAX);
return (NFC_STATUS_FAILED);
}
@@ -960,7 +968,8 @@
p_rsp_msg->len = (uint16_t)(p_dst - p_rsp_start);
ce_t3t_send_to_lower(p_rsp_msg);
} else {
- CE_TRACE_ERROR0("CE: Unable to allocate buffer for response message");
+ LOG(ERROR) << StringPrintf(
+ "CE: Unable to allocate buffer for response message");
}
return (retval);
@@ -979,8 +988,8 @@
tNFC_STATUS retval = NFC_STATUS_OK;
tCE_CB* p_ce_cb = &ce_cb;
- CE_TRACE_API2("CE_T3tUpdateRsp: status1=0x%02X, status2=0x%02X", status1,
- status2);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "CE_T3tUpdateRsp: status1=0x%02X, status2=0x%02X", status1, status2);
ce_t3t_send_rsp(p_ce_cb, NULL, T3T_MSG_OPC_UPDATE_RSP, status1, status2);
return (retval);
diff --git a/src/nfc/tags/ce_t4t.c b/src/nfc/tags/ce_t4t.cc
similarity index 77%
rename from src/nfc/tags/ce_t4t.c
rename to src/nfc/tags/ce_t4t.cc
index f204c8a..9b859e2 100644
--- a/src/nfc/tags/ce_t4t.c
+++ b/src/nfc/tags/ce_t4t.cc
@@ -24,16 +24,22 @@
******************************************************************************/
#include <log/log.h>
#include <string.h>
-#include "bt_types.h"
-#include "nfc_target.h"
-#include "trace_api.h"
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
+#include "nfc_target.h"
+
+#include "bt_types.h"
#include "ce_api.h"
#include "ce_int.h"
-#include "gki.h"
-#include "nfc_api.h"
#include "nfc_int.h"
#include "tags_int.h"
+#include "trace_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
#if (CE_TEST_INCLUDED == TRUE) /* test only */
bool mapping_aid_test_enabled = false;
@@ -51,12 +57,8 @@
**
*******************************************************************************/
static bool ce_t4t_send_to_lower(NFC_HDR* p_r_apdu) {
-#if (BT_TRACE_PROTOCOL == TRUE)
- DispCET4Tags(p_r_apdu, false);
-#endif
-
if (NFC_SendData(NFC_RF_CONN_ID, p_r_apdu) != NFC_STATUS_OK) {
- CE_TRACE_ERROR0("ce_t4t_send_to_lower (): NFC_SendData () failed");
+ LOG(ERROR) << StringPrintf("failed");
return false;
}
return true;
@@ -75,12 +77,12 @@
NFC_HDR* p_r_apdu;
uint8_t* p;
- CE_TRACE_DEBUG1("ce_t4t_send_status (): Status:0x%04X", status);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Status:0x%04X", status);
p_r_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_CE_POOL_ID);
if (!p_r_apdu) {
- CE_TRACE_ERROR0("ce_t4t_send_status (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -109,10 +111,10 @@
static bool ce_t4t_select_file(uint16_t file_id) {
tCE_T4T_MEM* p_t4t = &ce_cb.mem.t4t;
- CE_TRACE_DEBUG1("ce_t4t_select_file (): FileID:0x%04X", file_id);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("FileID:0x%04X", file_id);
if (file_id == T4T_CC_FILE_ID) {
- CE_TRACE_DEBUG0("ce_t4t_select_file (): Select CC file");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Select CC file");
p_t4t->status |= CE_T4T_STATUS_CC_FILE_SELECTED;
p_t4t->status &= ~(CE_T4T_STATUS_NDEF_SELECTED);
@@ -121,8 +123,8 @@
}
if (file_id == CE_T4T_MANDATORY_NDEF_FILE_ID) {
- CE_TRACE_DEBUG3(
- "ce_t4t_select_file (): NLEN:0x%04X, MaxFileSize:0x%04X, "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "NLEN:0x%04X, MaxFileSize:0x%04X, "
"WriteAccess:%s",
p_t4t->nlen, p_t4t->max_file_size,
(p_t4t->status & CE_T4T_STATUS_NDEF_FILE_READ_ONLY ? "RW" : "RO"));
@@ -132,8 +134,7 @@
return true;
} else {
- CE_TRACE_ERROR1("ce_t4t_select_file (): Cannot find file ID (0x%04X)",
- file_id);
+ LOG(ERROR) << StringPrintf("Cannot find file ID (0x%04X)", file_id);
p_t4t->status &= ~(CE_T4T_STATUS_CC_FILE_SELECTED);
p_t4t->status &= ~(CE_T4T_STATUS_NDEF_SELECTED);
@@ -156,8 +157,8 @@
uint8_t *p_src = NULL, *p_dst;
NFC_HDR* p_r_apdu;
- CE_TRACE_DEBUG3(
- "ce_t4t_read_binary (): Offset:0x%04X, Length:0x%04X, selected status = "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Offset:0x%04X, Length:0x%04X, selected status = "
"0x%02X",
offset, length, p_t4t->status);
@@ -174,7 +175,7 @@
p_r_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_CE_POOL_ID);
if (!p_r_apdu) {
- CE_TRACE_ERROR0("ce_t4t_read_binary (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -217,7 +218,7 @@
}
return true;
} else {
- CE_TRACE_ERROR0("ce_t4t_read_binary (): No selected file");
+ LOG(ERROR) << StringPrintf("No selected file");
if (!ce_t4t_send_status(T4T_RSP_CMD_NOT_ALLOWED)) {
return false;
@@ -243,8 +244,8 @@
uint16_t starting_offset;
tCE_DATA ce_data;
- CE_TRACE_DEBUG3(
- "ce_t4t_update_binary (): Offset:0x%04X, Length:0x%04X, selected status "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Offset:0x%04X, Length:0x%04X, selected status "
"= 0x%02X",
offset, length, p_t4t->status);
@@ -278,8 +279,8 @@
ce_data.update_info.p_data = p_t4t->p_scratch_buf;
(*ce_cb.p_cback)(CE_T4T_NDEF_UPDATE_CPLT_EVT, &ce_data);
- CE_TRACE_DEBUG0(
- "ce_t4t_update_binary (): Sent CE_T4T_NDEF_UPDATE_CPLT_EVT");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Sent CE_T4T_NDEF_UPDATE_CPLT_EVT");
}
p_t4t->status &= ~(CE_T4T_STATUS_NDEF_FILE_UPDATING);
@@ -318,7 +319,7 @@
tCE_T4T_MEM* p_t4t = &ce_cb.mem.t4t;
uint8_t* p;
- CE_TRACE_DEBUG1("ce_t4t_set_version_in_cc (): version = 0x%02X", version);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("version = 0x%02X", version);
p = p_t4t->cc_file + T4T_VERSION_OFFSET_IN_CC;
@@ -338,7 +339,7 @@
uint8_t data_len;
uint16_t file_id, status_words;
- CE_TRACE_DEBUG0("ce_t4t_process_select_file_cmd ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd++; /* skip P2 */
@@ -383,7 +384,7 @@
tCE_DATA ce_data;
uint8_t xx;
- CE_TRACE_DEBUG0("ce_t4t_process_select_app_cmd ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd++; /* skip P2 */
@@ -392,7 +393,7 @@
/*CLS+INS+P1+P2+Lc+Data*/
if (data_len > (p_c_apdu->len - T4T_CMD_MAX_HDR_SIZE)) {
- CE_TRACE_ERROR0("Wrong length in ce_t4t_process_select_app_cmd");
+ LOG(ERROR) << StringPrintf("Wrong length in ce_t4t_process_select_app_cmd");
android_errorWriteLog(0x534e4554, "115635871");
ce_t4t_send_status(T4T_RSP_WRONG_LENGTH);
GKI_freebuf(p_c_apdu);
@@ -433,8 +434,8 @@
ce_cb.mem.t4t.status &= ~(CE_T4T_STATUS_WILDCARD_AID_SELECTED);
ce_cb.mem.t4t.status |= CE_T4T_STATUS_REG_AID_SELECTED;
- CE_TRACE_DEBUG4(
- "ce_t4t_process_select_app_cmd (): Registered AID[%02X%02X%02X%02X...] "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Registered AID[%02X%02X%02X%02X...] "
"is selected",
ce_cb.mem.t4t.reg_aid[ce_cb.mem.t4t.selected_aid_idx].aid[0],
ce_cb.mem.t4t.reg_aid[ce_cb.mem.t4t.selected_aid_idx].aid[1],
@@ -462,8 +463,7 @@
ce_t4t_set_version_in_cc(T4T_VERSION_2_0);
status_words = T4T_RSP_CMD_CMPLTED;
} else {
- CE_TRACE_DEBUG0(
- "ce_t4t_process_select_app_cmd (): Not found matched AID");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("Not found matched AID");
status_words = T4T_RSP_NOT_FOUND;
}
} else if (ce_cb.mem.t4t.p_wildcard_aid_cback) {
@@ -478,12 +478,12 @@
ce_data.raw_frame.aid_handle = CE_T4T_WILDCARD_AID_HANDLE;
p_c_apdu = NULL;
- CE_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"CET4T: Forward raw frame (SELECT APP) to wildcard AID handler");
(*(ce_cb.mem.t4t.p_wildcard_aid_cback))(CE_T4T_RAW_FRAME_EVT, &ce_data);
} else {
- CE_TRACE_DEBUG0(
- "ce_t4t_process_select_app_cmd (): Not found matched AID or not "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Not found matched AID or not "
"listening T4T NDEF");
status_words = T4T_RSP_NOT_FOUND;
}
@@ -497,7 +497,7 @@
ce_cb.mem.t4t.status &= ~(CE_T4T_STATUS_WILDCARD_AID_SELECTED);
ce_cb.mem.t4t.status |= CE_T4T_STATUS_T4T_APP_SELECTED;
- CE_TRACE_DEBUG0("ce_t4t_process_select_app_cmd (): T4T CE App selected");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("T4T CE App selected");
}
ce_t4t_send_status(status_words);
@@ -521,7 +521,7 @@
tCE_T4T_MEM* p_t4t = &ce_cb.mem.t4t;
tCE_DATA ce_data;
- CE_TRACE_DEBUG1("ce_t4t_process_timeout () event=%d", p_tle->event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event=%d", p_tle->event);
if (p_tle->event == NFC_TTYPE_CE_T4T_UPDATE) {
if (p_t4t->status & CE_T4T_STATUS_NDEF_FILE_UPDATING) {
@@ -533,7 +533,7 @@
p_t4t->status &= ~(CE_T4T_STATUS_NDEF_FILE_UPDATING);
}
} else {
- CE_TRACE_ERROR1("ce_t4t_process_timeout () unknown event=%d", p_tle->event);
+ LOG(ERROR) << StringPrintf("unknown event=%d", p_tle->event);
}
}
@@ -564,16 +564,12 @@
p_c_apdu = (NFC_HDR*)p_data->data.p_data;
-#if (BT_TRACE_PROTOCOL == TRUE)
- DispCET4Tags(p_c_apdu, true);
-#endif
-
- CE_TRACE_DEBUG1("ce_t4t_data_cback (): conn_id = 0x%02X", conn_id);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("conn_id = 0x%02X", conn_id);
p_cmd = (uint8_t*)(p_c_apdu + 1) + p_c_apdu->offset;
if (p_c_apdu->len == 0) {
- CE_TRACE_ERROR0("Wrong length in ce_t4t_data_cback");
+ LOG(ERROR) << StringPrintf("Wrong length in ce_t4t_data_cback");
android_errorWriteLog(0x534e4554, "115635871");
ce_t4t_send_status(T4T_RSP_WRONG_LENGTH);
if (p_c_apdu) GKI_freebuf(p_c_apdu);
@@ -607,7 +603,7 @@
ce_t4t_process_select_app_cmd(p_cmd, p_c_apdu);
return;
} else {
- CE_TRACE_ERROR0("Wrong length in select app cmd");
+ LOG(ERROR) << StringPrintf("Wrong length in select app cmd");
android_errorWriteLog(0x534e4554, "115635871");
ce_t4t_send_status(T4T_RSP_NOT_FOUND);
if (p_c_apdu) GKI_freebuf(p_c_apdu);
@@ -619,7 +615,8 @@
/* if registered AID is selected */
if (ce_cb.mem.t4t.status & CE_T4T_STATUS_REG_AID_SELECTED) {
- CE_TRACE_DEBUG0("CET4T: Forward raw frame to registered AID");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("CET4T: Forward raw frame to registered AID");
/* forward raw frame to upper layer */
if (ce_cb.mem.t4t.selected_aid_idx < CE_T4T_MAX_REG_AID) {
@@ -635,7 +632,8 @@
ce_t4t_send_status(T4T_RSP_NOT_FOUND);
}
} else if (ce_cb.mem.t4t.status & CE_T4T_STATUS_WILDCARD_AID_SELECTED) {
- CE_TRACE_DEBUG0("CET4T: Forward raw frame to wildcard AID handler");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("CET4T: Forward raw frame to wildcard AID handler");
/* forward raw frame to upper layer */
ce_data.raw_frame.status = p_data->data.status;
@@ -650,7 +648,7 @@
if (select_type == T4T_CMD_P1_SELECT_BY_FILE_ID) {
ce_t4t_process_select_file_cmd(p_cmd);
} else {
- CE_TRACE_ERROR1("CET4T: Bad P1 byte (0x%02X)", select_type);
+ LOG(ERROR) << StringPrintf("CET4T: Bad P1 byte (0x%02X)", select_type);
ce_t4t_send_status(T4T_RSP_WRONG_PARAMS);
}
} else if (instruct == T4T_CMD_INS_READ_BINARY) {
@@ -673,19 +671,20 @@
if (offset < max_file_size) {
length = (uint8_t)(max_file_size - offset);
- CE_TRACE_DEBUG2(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"CET4T: length is reduced to %d by max_file_size (%d)",
length, max_file_size);
} else {
- CE_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"CET4T: offset (%d) must be less than max_file_size (%d)",
offset, max_file_size);
length = 0;
}
}
} else {
- CE_TRACE_ERROR2("CET4T: length (%d) must be less than MLe (%d)",
- length, CE_T4T_MAX_LE);
+ LOG(ERROR) << StringPrintf(
+ "CET4T: length (%d) must be less than MLe (%zu)", length,
+ CE_T4T_MAX_LE);
length = 0;
}
@@ -694,12 +693,12 @@
else
ce_t4t_send_status(T4T_RSP_WRONG_PARAMS);
} else {
- CE_TRACE_ERROR0("CET4T: File has not been selected");
+ LOG(ERROR) << StringPrintf("CET4T: File has not been selected");
ce_t4t_send_status(T4T_RSP_CMD_NOT_ALLOWED);
}
} else if (instruct == T4T_CMD_INS_UPDATE_BINARY) {
if (ce_cb.mem.t4t.status & CE_T4T_STATUS_NDEF_FILE_READ_ONLY) {
- CE_TRACE_ERROR0("CET4T: No access right");
+ LOG(ERROR) << StringPrintf("CET4T: No access right");
ce_t4t_send_status(T4T_RSP_CMD_NOT_ALLOWED);
} else if (ce_cb.mem.t4t.status & CE_T4T_STATUS_NDEF_SELECTED) {
BE_STREAM_TO_UINT16(offset, p_cmd); /* Offset */
@@ -708,15 +707,16 @@
/* check if valid parameters */
if ((uint32_t)length <= CE_T4T_MAX_LC) {
if (length + offset > ce_cb.mem.t4t.max_file_size) {
- CE_TRACE_ERROR3(
+ LOG(ERROR) << StringPrintf(
"CET4T: length (%d) + offset (%d) must be less than "
"max_file_size (%d)",
length, offset, ce_cb.mem.t4t.max_file_size);
length = 0;
}
} else {
- CE_TRACE_ERROR2("CET4T: length (%d) must be less than MLc (%d)",
- length, CE_T4T_MAX_LC);
+ LOG(ERROR) << StringPrintf(
+ "CET4T: length (%d) must be less than MLc (%zu)", length,
+ CE_T4T_MAX_LC);
length = 0;
}
@@ -725,15 +725,16 @@
else
ce_t4t_send_status(T4T_RSP_WRONG_PARAMS);
} else {
- CE_TRACE_ERROR0("CET4T: NDEF File has not been selected");
+ LOG(ERROR) << StringPrintf("CET4T: NDEF File has not been selected");
ce_t4t_send_status(T4T_RSP_CMD_NOT_ALLOWED);
}
} else {
- CE_TRACE_ERROR1("CET4T: Unsupported Instruction byte (0x%02X)", instruct);
+ LOG(ERROR) << StringPrintf("CET4T: Unsupported Instruction byte (0x%02X)",
+ instruct);
ce_t4t_send_status(T4T_RSP_INSTR_NOT_SUPPORTED);
}
} else {
- CE_TRACE_ERROR0("CET4T: Application has not been selected");
+ LOG(ERROR) << StringPrintf("CET4T: Application has not been selected");
ce_t4t_send_status(T4T_RSP_CMD_NOT_ALLOWED);
}
@@ -752,7 +753,7 @@
tNFC_STATUS ce_select_t4t(void) {
tCE_T4T_MEM* p_t4t = &ce_cb.mem.t4t;
- CE_TRACE_DEBUG0("ce_select_t4t ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
nfc_stop_quick_timer(&p_t4t->timer);
@@ -791,20 +792,20 @@
tCE_T4T_MEM* p_t4t = &ce_cb.mem.t4t;
uint8_t* p;
- CE_TRACE_API3(
- "CE_T4tSetLocalNDEFMsg () read_only=%d, ndef_msg_max=%d, ndef_msg_len=%d",
- read_only, ndef_msg_max, ndef_msg_len);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("read_only=%d, ndef_msg_max=%d, ndef_msg_len=%d",
+ read_only, ndef_msg_max, ndef_msg_len);
if (!p_ndef_msg) {
p_t4t->p_ndef_msg = NULL;
- CE_TRACE_DEBUG0("CE_T4tSetLocalNDEFMsg (): T4T is disabled");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("T4T is disabled");
return NFC_STATUS_OK;
}
if ((!read_only) && (!p_scratch_buf)) {
- CE_TRACE_ERROR0(
- "CE_T4tSetLocalNDEFMsg (): p_scratch_buf cannot be NULL if not "
+ LOG(ERROR) << StringPrintf(
+ "p_scratch_buf cannot be NULL if not "
"read-only");
return NFC_STATUS_FAILED;
}
@@ -873,43 +874,43 @@
/* Handle registering callback for wildcard AID (all AIDs) */
if (aid_len == 0) {
- CE_TRACE_API0(
- "CE_T4tRegisterAID (): registering callback for wildcard AID ");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("registering callback for wildcard AID ");
/* Check if a wildcard callback is already registered (only one is allowed)
*/
if (p_t4t->p_wildcard_aid_cback != NULL) {
- CE_TRACE_ERROR0(
- "CE_T4tRegisterAID (): only one wildcard AID can be registered at "
+ LOG(ERROR) << StringPrintf(
+ "only one wildcard AID can be registered at "
"time.");
return CE_T4T_AID_HANDLE_INVALID;
}
- CE_TRACE_DEBUG1(
- "CE_T4tRegisterAID (): handle 0x%02x registered (for wildcard AID)",
- CE_T4T_WILDCARD_AID_HANDLE);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("handle 0x%02x registered (for wildcard AID)",
+ CE_T4T_WILDCARD_AID_HANDLE);
p_t4t->p_wildcard_aid_cback = p_cback;
return CE_T4T_WILDCARD_AID_HANDLE;
}
- CE_TRACE_API5("CE_T4tRegisterAID () AID [%02X%02X%02X%02X...], %d bytes",
- *p_aid, *(p_aid + 1), *(p_aid + 2), *(p_aid + 3), aid_len);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("AID [%02X%02X%02X%02X...], %d bytes", *p_aid,
+ *(p_aid + 1), *(p_aid + 2), *(p_aid + 3), aid_len);
if (aid_len > NFC_MAX_AID_LEN) {
- CE_TRACE_ERROR1("CE_T4tRegisterAID (): AID is up to %d bytes",
- NFC_MAX_AID_LEN);
+ LOG(ERROR) << StringPrintf("AID is up to %d bytes", NFC_MAX_AID_LEN);
return CE_T4T_AID_HANDLE_INVALID;
}
if (p_cback == NULL) {
- CE_TRACE_ERROR0("CE_T4tRegisterAID (): callback must be provided");
+ LOG(ERROR) << StringPrintf("callback must be provided");
return CE_T4T_AID_HANDLE_INVALID;
}
for (xx = 0; xx < CE_T4T_MAX_REG_AID; xx++) {
if ((p_t4t->reg_aid[xx].aid_len == aid_len) &&
(!(memcmp(p_t4t->reg_aid[xx].aid, p_aid, aid_len)))) {
- CE_TRACE_ERROR0("CE_T4tRegisterAID (): already registered");
+ LOG(ERROR) << StringPrintf("already registered");
return CE_T4T_AID_HANDLE_INVALID;
}
}
@@ -924,10 +925,11 @@
}
if (xx >= CE_T4T_MAX_REG_AID) {
- CE_TRACE_ERROR0("CE_T4tRegisterAID (): No resource");
+ LOG(ERROR) << StringPrintf("No resource");
return CE_T4T_AID_HANDLE_INVALID;
} else {
- CE_TRACE_DEBUG1("CE_T4tRegisterAID (): handle 0x%02x registered", xx);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("handle 0x%02x registered", xx);
}
return (xx);
@@ -945,14 +947,14 @@
extern void CE_T4tDeregisterAID(tCE_T4T_AID_HANDLE aid_handle) {
tCE_T4T_MEM* p_t4t = &ce_cb.mem.t4t;
- CE_TRACE_API1("CE_T4tDeregisterAID () handle 0x%02x", aid_handle);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("handle 0x%02x", aid_handle);
/* Check if deregistering wildcard AID */
if (aid_handle == CE_T4T_WILDCARD_AID_HANDLE) {
if (p_t4t->p_wildcard_aid_cback != NULL) {
p_t4t->p_wildcard_aid_cback = NULL;
} else {
- CE_TRACE_ERROR0("CE_T4tDeregisterAID (): Invalid handle");
+ LOG(ERROR) << StringPrintf("Invalid handle");
}
return;
}
@@ -960,129 +962,9 @@
/* Deregister AID */
if ((aid_handle >= CE_T4T_MAX_REG_AID) ||
(p_t4t->reg_aid[aid_handle].aid_len == 0)) {
- CE_TRACE_ERROR0("CE_T4tDeregisterAID (): Invalid handle");
+ LOG(ERROR) << StringPrintf("Invalid handle");
} else {
p_t4t->reg_aid[aid_handle].aid_len = 0;
p_t4t->reg_aid[aid_handle].p_cback = NULL;
}
}
-
-/*******************************************************************************
-**
-** Function CE_T4TTestSetCC
-**
-** Description Set fields in Capability Container File for testing
-**
-** Returns NFC_STATUS_OK if success
-**
-*******************************************************************************/
-tNFC_STATUS CE_T4TTestSetCC(uint16_t cc_len, uint8_t version, uint16_t max_le,
- uint16_t max_lc) {
-#if (CE_TEST_INCLUDED == TRUE)
- tCE_T4T_MEM* p_t4t = &ce_cb.mem.t4t;
- uint8_t* p;
-
- CE_TRACE_DEBUG4(
- "CE_T4TTestSetCC (): CCLen:0x%04X, Ver:0x%02X, MaxLe:0x%04X, "
- "MaxLc:0x%04X",
- cc_len, version, max_le, max_lc);
-
- /* CC file */
- p = p_t4t->cc_file;
-
- if (cc_len != 0xFFFF) {
- UINT16_TO_BE_STREAM(p, cc_len);
- } else
- p += 2;
-
- if (version != 0xFF) {
- mapping_aid_test_enabled = true;
- if (version == T4T_VERSION_1_0)
- ce_test_tag_app_id[T4T_V20_NDEF_TAG_AID_LEN - 1] = 0x00;
- else if (version == T4T_VERSION_2_0)
- ce_test_tag_app_id[T4T_V20_NDEF_TAG_AID_LEN - 1] = 0x01;
- else /* Undefined version */
- ce_test_tag_app_id[T4T_V20_NDEF_TAG_AID_LEN - 1] = 0xFF;
-
- UINT8_TO_BE_STREAM(p, version);
- } else {
- mapping_aid_test_enabled = false;
- p += 1;
- }
-
- if (max_le != 0xFFFF) {
- UINT16_TO_BE_STREAM(p, max_le);
- } else
- p += 2;
-
- if (max_lc != 0xFFFF) {
- UINT16_TO_BE_STREAM(p, max_lc);
- } else
- p += 2;
-
- return NFC_STATUS_OK;
-#else
- return NFC_STATUS_FAILED;
-#endif
-}
-
-/*******************************************************************************
-**
-** Function CE_T4TTestSetNDEFCtrlTLV
-**
-** Description Set fields in NDEF File Control TLV for testing
-**
-** Returns NFC_STATUS_OK if success
-**
-*******************************************************************************/
-tNFC_STATUS CE_T4TTestSetNDEFCtrlTLV(uint8_t type, uint8_t length,
- uint16_t file_id, uint16_t max_file_size,
- uint8_t read_access,
- uint8_t write_access) {
-#if (CE_TEST_INCLUDED == TRUE)
- tCE_T4T_MEM* p_t4t = &ce_cb.mem.t4t;
- uint8_t* p;
-
- CE_TRACE_DEBUG6(
- "CE_T4TTestSetNDEFCtrlTLV (): type:0x%02X, len:0x%02X, FileID:0x%04X, "
- "MaxFile:0x%04X, RdAcc:0x%02X, WrAcc:0x%02X",
- type, length, file_id, max_file_size, read_access, write_access);
-
- /* NDEF File control TLV */
- p = p_t4t->cc_file + T4T_FC_TLV_OFFSET_IN_CC;
-
- if (type != 0xFF) {
- UINT8_TO_BE_STREAM(p, type);
- } else
- p += 1;
-
- if (length != 0xFF) {
- UINT8_TO_BE_STREAM(p, length);
- } else
- p += 1;
-
- if (file_id != 0xFFFF) {
- UINT16_TO_BE_STREAM(p, file_id);
- } else
- p += 2;
-
- if (max_file_size != 0xFFFF) {
- UINT16_TO_BE_STREAM(p, max_file_size);
- } else
- p += 2;
-
- if (read_access != 0xFF) {
- UINT8_TO_BE_STREAM(p, read_access);
- } else
- p += 1;
-
- if (write_access != 0xFF) {
- UINT8_TO_BE_STREAM(p, write_access);
- } else
- p += 1;
-
- return NFC_STATUS_OK;
-#else
- return NFC_STATUS_FAILED;
-#endif
-}
diff --git a/src/nfc/tags/rw_i93.c b/src/nfc/tags/rw_i93.cc
similarity index 83%
rename from src/nfc/tags/rw_i93.c
rename to src/nfc/tags/rw_i93.cc
index 6c6f4bd..a8e095c 100644
--- a/src/nfc/tags/rw_i93.c
+++ b/src/nfc/tags/rw_i93.cc
@@ -24,14 +24,22 @@
******************************************************************************/
#include <log/log.h>
#include <string.h>
-#include "bt_types.h"
-#include "nfc_target.h"
-#include "trace_api.h"
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
+#include "nfc_target.h"
+
+#include "bt_types.h"
#include "nfc_api.h"
#include "nfc_int.h"
#include "rw_api.h"
#include "rw_int.h"
+#include "trace_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/* Response timeout */
#define RW_I93_TOUT_RESP 1000
@@ -81,16 +89,15 @@
RW_I93_SUBSTATE_WAIT_LOCK_CC /* lock block of CC */
};
-#if (BT_TRACE_VERBOSE == TRUE)
-static char* rw_i93_get_state_name(uint8_t state);
-static char* rw_i93_get_sub_state_name(uint8_t sub_state);
-static char* rw_i93_get_tag_name(uint8_t product_version);
-#endif
+static std::string rw_i93_get_state_name(uint8_t state);
+static std::string rw_i93_get_sub_state_name(uint8_t sub_state);
+static std::string rw_i93_get_tag_name(uint8_t product_version);
static void rw_i93_data_cback(uint8_t conn_id, tNFC_CONN_EVT event,
tNFC_CONN* p_data);
void rw_i93_handle_error(tNFC_STATUS status);
tNFC_STATUS rw_i93_send_cmd_get_sys_info(uint8_t* p_uid, uint8_t extra_flag);
+tNFC_STATUS rw_i93_send_cmd_get_ext_sys_info(uint8_t* p_uid);
/*******************************************************************************
**
@@ -108,7 +115,7 @@
return;
}
- RW_TRACE_DEBUG0("rw_i93_get_product_version ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
memcpy(p_i93->uid, p_uid, I93_UID_BYTE_LEN);
@@ -144,6 +151,10 @@
p_i93->product_version = RW_I93_STM_M24LR16E_R;
else if (p_i93->ic_reference == I93_IC_REF_STM_M24LR64E_R)
p_i93->product_version = RW_I93_STM_M24LR64E_R;
+ else if (p_i93->ic_reference == I93_IC_REF_STM_ST25DVHIK)
+ p_i93->product_version = RW_I93_STM_ST25DVHIK;
+ else if (p_i93->ic_reference == I93_IC_REF_STM_ST25DV04K)
+ p_i93->product_version = RW_I93_STM_ST25DV04K;
else {
switch (p_i93->ic_reference & I93_IC_REF_STM_MASK) {
case I93_IC_REF_STM_LRI1K:
@@ -170,12 +181,9 @@
p_i93->product_version = RW_I93_UNKNOWN_PRODUCT;
}
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG1("product_version = <%s>",
- rw_i93_get_tag_name(p_i93->product_version));
-#else
- RW_TRACE_DEBUG1("product_version = %d", p_i93->product_version);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("product_version = <%s>",
+ rw_i93_get_tag_name(p_i93->product_version).c_str());
switch (p_i93->product_version) {
case RW_I93_TAG_IT_HF_I_STD_CHIP_INLAY:
@@ -193,6 +201,90 @@
/*******************************************************************************
**
+** Function rw_i93_process_ext_sys_info
+**
+** Description Store extended system information of tag
+**
+** Returns FALSE if retrying with protocol extension flag
+**
+*******************************************************************************/
+bool rw_i93_process_ext_sys_info(uint8_t* p_data, uint16_t length) {
+ uint8_t* p = p_data;
+ tRW_I93_CB* p_i93 = &rw_cb.tcb.i93;
+ uint8_t uid[I93_UID_BYTE_LEN], *p_uid;
+
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
+
+ if (length < (I93_UID_BYTE_LEN + 1)) {
+ android_errorWriteLog(0x534e4554, "122316913");
+ return false;
+ }
+
+ STREAM_TO_UINT8(p_i93->info_flags, p);
+ length--;
+
+ p_uid = uid;
+ STREAM_TO_ARRAY8(p_uid, p);
+ length -= I93_UID_BYTE_LEN;
+
+ if (p_i93->info_flags & I93_INFO_FLAG_DSFID) {
+ if (length < 1) {
+ android_errorWriteLog(0x534e4554, "122316913");
+ return false;
+ }
+ STREAM_TO_UINT8(p_i93->dsfid, p);
+ length--;
+ }
+ if (p_i93->info_flags & I93_INFO_FLAG_AFI) {
+ if (length < 1) {
+ android_errorWriteLog(0x534e4554, "122316913");
+ return false;
+ }
+ STREAM_TO_UINT8(p_i93->afi, p);
+ length--;
+ }
+ if (p_i93->info_flags & I93_INFO_FLAG_MEM_SIZE) {
+ if (length < 3) {
+ android_errorWriteLog(0x534e4554, "122316913");
+ return false;
+ }
+ STREAM_TO_UINT16(p_i93->num_block, p);
+ length -= I93_INFO_16BIT_NUM_BLOCK_LEN;
+
+ /* it is one less than actual number of bytes */
+ p_i93->num_block += 1;
+
+ STREAM_TO_UINT8(p_i93->block_size, p);
+ length--;
+ /* it is one less than actual number of blocks */
+ p_i93->block_size = (p_i93->block_size & 0x1F) + 1;
+ }
+ if (p_i93->info_flags & I93_INFO_FLAG_IC_REF) {
+ if (length < 1) {
+ android_errorWriteLog(0x534e4554, "122316913");
+ return false;
+ }
+ STREAM_TO_UINT8(p_i93->ic_reference, p);
+ length--;
+
+ /* clear existing UID to set product version */
+ p_i93->uid[0] = 0x00;
+
+ /* store UID and get product version */
+ rw_i93_get_product_version(p_uid);
+
+ if (p_i93->uid[0] == I93_UID_FIRST_BYTE) {
+ if (p_i93->uid[1] == I93_UID_IC_MFG_CODE_STM) {
+ /* STM supports more than 2040 bytes */
+ p_i93->intl_flags |= RW_I93_FLAG_EXT_COMMANDS;
+ }
+ }
+ }
+ return true;
+}
+
+/*******************************************************************************
+**
** Function rw_i93_process_sys_info
**
** Description Store system information of tag
@@ -205,7 +297,7 @@
tRW_I93_CB* p_i93 = &rw_cb.tcb.i93;
uint8_t uid[I93_UID_BYTE_LEN], *p_uid;
- RW_TRACE_DEBUG0("rw_i93_process_sys_info ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (length < (I93_UID_BYTE_LEN + 1)) {
android_errorWriteLog(0x534e4554, "121259048");
@@ -301,12 +393,20 @@
return false;
}
}
- return true;
} else if ((p_i93->product_version == RW_I93_STM_LRI2K) &&
(p_i93->ic_reference == 0x21)) {
/* workaround of byte order in memory size information */
p_i93->num_block = 64;
p_i93->block_size = 4;
+ } else if (!(p_i93->info_flags & I93_INFO_FLAG_MEM_SIZE)) {
+ if (!(p_i93->intl_flags & RW_I93_FLAG_EXT_COMMANDS)) {
+ if (rw_i93_send_cmd_get_ext_sys_info(NULL) == NFC_STATUS_OK) {
+ /* STM supports more than 2040 bytes */
+ p_i93->intl_flags |= RW_I93_FLAG_EXT_COMMANDS;
+
+ return false;
+ }
+ }
}
}
}
@@ -328,7 +428,7 @@
bool rw_i93_check_sys_info_prot_ext(uint8_t error_code) {
tRW_I93_CB* p_i93 = &rw_cb.tcb.i93;
- RW_TRACE_DEBUG0("rw_i93_check_sys_info_prot_ext ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if ((p_i93->uid[1] == I93_UID_IC_MFG_CODE_STM) &&
(p_i93->sent_cmd == I93_CMD_GET_SYS_INFO) &&
@@ -351,7 +451,7 @@
**
*******************************************************************************/
void rw_i93_send_to_upper(NFC_HDR* p_resp) {
- uint8_t *p = (uint8_t *)(p_resp + 1) + p_resp->offset, *p_uid;
+ uint8_t *p = (uint8_t*)(p_resp + 1) + p_resp->offset, *p_uid;
uint16_t length = p_resp->len;
tRW_I93_CB* p_i93 = &rw_cb.tcb.i93;
tRW_DATA rw_data;
@@ -359,7 +459,7 @@
uint8_t flags;
NFC_HDR* p_buff;
- RW_TRACE_DEBUG0("rw_i93_send_to_upper ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
STREAM_TO_UINT8(flags, p);
length--;
@@ -399,8 +499,11 @@
break;
case I93_CMD_READ_SINGLE_BLOCK:
+ case I93_CMD_EXT_READ_SINGLE_BLOCK:
case I93_CMD_READ_MULTI_BLOCK:
+ case I93_CMD_EXT_READ_MULTI_BLOCK:
case I93_CMD_GET_MULTI_BLK_SEC:
+ case I93_CMD_EXT_GET_MULTI_BLK_SEC:
/* forward tag data or security status */
p_buff = (NFC_HDR*)GKI_getbuf((uint16_t)(length + NFC_HDR_SIZE));
@@ -426,8 +529,11 @@
break;
case I93_CMD_WRITE_SINGLE_BLOCK:
+ case I93_CMD_EXT_WRITE_SINGLE_BLOCK:
case I93_CMD_LOCK_BLOCK:
+ case I93_CMD_EXT_LOCK_BLOCK:
case I93_CMD_WRITE_MULTI_BLOCK:
+ case I93_CMD_EXT_WRITE_MULTI_BLOCK:
case I93_CMD_SELECT:
case I93_CMD_RESET_TO_READY:
case I93_CMD_WRITE_AFI:
@@ -464,6 +570,28 @@
}
break;
+ case I93_CMD_EXT_GET_SYS_INFO:
+
+ if (rw_i93_process_ext_sys_info(p, length)) {
+ rw_data.i93_sys_info.status = NFC_STATUS_OK;
+ rw_data.i93_sys_info.info_flags = p_i93->info_flags;
+ rw_data.i93_sys_info.dsfid = p_i93->dsfid;
+ rw_data.i93_sys_info.afi = p_i93->afi;
+ rw_data.i93_sys_info.num_block = p_i93->num_block;
+ rw_data.i93_sys_info.block_size = p_i93->block_size;
+ rw_data.i93_sys_info.IC_reference = p_i93->ic_reference;
+
+ memcpy(rw_data.i93_sys_info.uid, p_i93->uid, I93_UID_BYTE_LEN);
+
+ event = RW_I93_SYS_INFO_EVT;
+ } else {
+ /* retrying with protocol extension flag or with extended sys info
+ * command */
+ p_i93->state = RW_I93_STATE_BUSY;
+ return;
+ }
+ break;
+
default:
break;
}
@@ -472,7 +600,7 @@
if (event != RW_I93_MAX_EVT) {
(*(rw_cb.p_cback))(event, &rw_data);
} else {
- RW_TRACE_ERROR0("rw_i93_send_to_upper (): Invalid response");
+ LOG(ERROR) << StringPrintf("Invalid response");
}
}
@@ -486,10 +614,6 @@
**
*******************************************************************************/
bool rw_i93_send_to_lower(NFC_HDR* p_msg) {
-#if (BT_TRACE_PROTOCOL == TRUE)
- DispRWI93Tag(p_msg, false, 0x00);
-#endif
-
/* store command for retransmitting */
if (rw_cb.tcb.i93.p_retry_cmd) {
GKI_freebuf(rw_cb.tcb.i93.p_retry_cmd);
@@ -504,7 +628,7 @@
}
if (NFC_SendData(NFC_RF_CONN_ID, p_msg) != NFC_STATUS_OK) {
- RW_TRACE_ERROR0("rw_i93_send_to_lower (): NFC_SendData () failed");
+ LOG(ERROR) << StringPrintf("failed");
return false;
}
@@ -528,13 +652,13 @@
NFC_HDR* p_cmd;
uint8_t *p, flags;
- RW_TRACE_DEBUG2("rw_i93_send_cmd_inventory () including_afi:%d, AFI:0x%02X",
- including_afi, afi);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("including_afi:%d, AFI:0x%02X", including_afi, afi);
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0("rw_i93_send_cmd_inventory (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -589,12 +713,12 @@
NFC_HDR* p_cmd;
uint8_t* p;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_stay_quiet ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0("rw_i93_send_cmd_stay_quiet (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -639,13 +763,12 @@
NFC_HDR* p_cmd;
uint8_t *p, flags;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_read_single_block ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0(
- "rw_i93_send_cmd_read_single_block (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -665,12 +788,17 @@
UINT8_TO_STREAM(p, flags);
/* Command Code */
- UINT8_TO_STREAM(p, I93_CMD_READ_SINGLE_BLOCK);
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
+ UINT8_TO_STREAM(p, I93_CMD_EXT_READ_SINGLE_BLOCK);
+ } else {
+ UINT8_TO_STREAM(p, I93_CMD_READ_SINGLE_BLOCK);
+ }
/* Parameters */
ARRAY8_TO_STREAM(p, rw_cb.tcb.i93.uid); /* UID */
- if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_16BIT_NUM_BLOCK) {
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_16BIT_NUM_BLOCK ||
+ rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
UINT16_TO_STREAM(p, block_number); /* Block number */
p_cmd->len++;
} else {
@@ -678,7 +806,10 @@
}
if (rw_i93_send_to_lower(p_cmd)) {
- rw_cb.tcb.i93.sent_cmd = I93_CMD_READ_SINGLE_BLOCK;
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS)
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_EXT_READ_SINGLE_BLOCK;
+ else
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_READ_SINGLE_BLOCK;
return NFC_STATUS_OK;
} else {
return NFC_STATUS_FAILED;
@@ -699,13 +830,12 @@
NFC_HDR* p_cmd;
uint8_t *p, flags;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_write_single_block ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0(
- "rw_i93_send_cmd_write_single_block (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -732,12 +862,17 @@
UINT8_TO_STREAM(p, flags);
/* Command Code */
- UINT8_TO_STREAM(p, I93_CMD_WRITE_SINGLE_BLOCK);
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
+ UINT8_TO_STREAM(p, I93_CMD_EXT_WRITE_SINGLE_BLOCK);
+ } else {
+ UINT8_TO_STREAM(p, I93_CMD_WRITE_SINGLE_BLOCK);
+ }
/* Parameters */
ARRAY8_TO_STREAM(p, rw_cb.tcb.i93.uid); /* UID */
- if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_16BIT_NUM_BLOCK) {
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_16BIT_NUM_BLOCK ||
+ rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
UINT16_TO_STREAM(p, block_number); /* Block number */
p_cmd->len++;
} else {
@@ -748,7 +883,10 @@
ARRAY_TO_STREAM(p, p_data, rw_cb.tcb.i93.block_size);
if (rw_i93_send_to_lower(p_cmd)) {
- rw_cb.tcb.i93.sent_cmd = I93_CMD_WRITE_SINGLE_BLOCK;
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS)
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_EXT_WRITE_SINGLE_BLOCK;
+ else
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_WRITE_SINGLE_BLOCK;
return NFC_STATUS_OK;
} else {
return NFC_STATUS_FAILED;
@@ -771,12 +909,12 @@
NFC_HDR* p_cmd;
uint8_t* p;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_lock_block ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0("rw_i93_send_cmd_lock_block (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -798,14 +936,27 @@
}
/* Command Code */
- UINT8_TO_STREAM(p, I93_CMD_LOCK_BLOCK);
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
+ UINT8_TO_STREAM(p, I93_CMD_EXT_LOCK_BLOCK);
+ } else {
+ UINT8_TO_STREAM(p, I93_CMD_LOCK_BLOCK);
+ }
/* Parameters */
ARRAY8_TO_STREAM(p, rw_cb.tcb.i93.uid); /* UID */
- UINT8_TO_STREAM(p, block_number); /* Block number */
+
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
+ UINT16_TO_STREAM(p, block_number); /* Block number */
+ p_cmd->len++;
+ } else {
+ UINT8_TO_STREAM(p, block_number); /* Block number */
+ }
if (rw_i93_send_to_lower(p_cmd)) {
- rw_cb.tcb.i93.sent_cmd = I93_CMD_LOCK_BLOCK;
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS)
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_EXT_LOCK_BLOCK;
+ else
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_LOCK_BLOCK;
return NFC_STATUS_OK;
} else {
return NFC_STATUS_FAILED;
@@ -826,13 +977,12 @@
NFC_HDR* p_cmd;
uint8_t *p, flags;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_read_multi_blocks ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0(
- "rw_i93_send_cmd_read_multi_blocks (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -844,29 +994,44 @@
flags =
(I93_FLAG_ADDRESS_SET | RW_I93_FLAG_SUB_CARRIER | RW_I93_FLAG_DATA_RATE);
- if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_16BIT_NUM_BLOCK)
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_16BIT_NUM_BLOCK) {
flags |= I93_FLAG_PROT_EXT_YES;
+ }
UINT8_TO_STREAM(p, flags);
/* Command Code */
- UINT8_TO_STREAM(p, I93_CMD_READ_MULTI_BLOCK);
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
+ UINT8_TO_STREAM(p, I93_CMD_EXT_READ_MULTI_BLOCK);
+ } else {
+ UINT8_TO_STREAM(p, I93_CMD_READ_MULTI_BLOCK);
+ }
/* Parameters */
ARRAY8_TO_STREAM(p, rw_cb.tcb.i93.uid); /* UID */
- if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_16BIT_NUM_BLOCK) {
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_16BIT_NUM_BLOCK ||
+ rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
UINT16_TO_STREAM(p, first_block_number); /* First block number */
p_cmd->len++;
} else {
UINT8_TO_STREAM(p, first_block_number); /* First block number */
}
- UINT8_TO_STREAM(
- p, number_blocks - 1); /* Number of blocks, 0x00 to read one block */
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
+ UINT16_TO_STREAM(
+ p, number_blocks - 1); /* Number of blocks, 0x00 to read one block */
+ p_cmd->len++;
+ } else {
+ UINT8_TO_STREAM(
+ p, number_blocks - 1); /* Number of blocks, 0x00 to read one block */
+ }
if (rw_i93_send_to_lower(p_cmd)) {
- rw_cb.tcb.i93.sent_cmd = I93_CMD_READ_MULTI_BLOCK;
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS)
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_EXT_READ_MULTI_BLOCK;
+ else
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_READ_MULTI_BLOCK;
return NFC_STATUS_OK;
} else {
return NFC_STATUS_FAILED;
@@ -882,19 +1047,18 @@
** Returns tNFC_STATUS
**
*******************************************************************************/
-tNFC_STATUS rw_i93_send_cmd_write_multi_blocks(uint8_t first_block_number,
+tNFC_STATUS rw_i93_send_cmd_write_multi_blocks(uint16_t first_block_number,
uint16_t number_blocks,
uint8_t* p_data) {
NFC_HDR* p_cmd;
uint8_t* p;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_write_multi_blocks ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0(
- "rw_i93_send_cmd_write_multi_blocks (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -907,11 +1071,25 @@
RW_I93_FLAG_DATA_RATE));
/* Command Code */
- UINT8_TO_STREAM(p, I93_CMD_WRITE_MULTI_BLOCK);
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
+ INT8_TO_STREAM(p, I93_CMD_EXT_WRITE_MULTI_BLOCK);
+ } else {
+ UINT8_TO_STREAM(p, I93_CMD_WRITE_MULTI_BLOCK);
+ }
/* Parameters */
ARRAY8_TO_STREAM(p, rw_cb.tcb.i93.uid); /* UID */
- UINT8_TO_STREAM(p, first_block_number); /* First block number */
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
+ UINT16_TO_STREAM(p, first_block_number); /* Block number */
+ UINT16_TO_STREAM(
+ p, number_blocks - 1); /* Number of blocks, 0x00 to read one block */
+ p_cmd->len += 2;
+ } else {
+ UINT8_TO_STREAM(p, first_block_number); /* Block number */
+ UINT8_TO_STREAM(
+ p, number_blocks - 1); /* Number of blocks, 0x00 to read one block */
+ }
+
UINT8_TO_STREAM(
p, number_blocks - 1); /* Number of blocks, 0x00 to read one block */
@@ -919,7 +1097,10 @@
ARRAY_TO_STREAM(p, p_data, number_blocks * rw_cb.tcb.i93.block_size);
if (rw_i93_send_to_lower(p_cmd)) {
- rw_cb.tcb.i93.sent_cmd = I93_CMD_WRITE_MULTI_BLOCK;
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS)
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_EXT_WRITE_MULTI_BLOCK;
+ else
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_WRITE_MULTI_BLOCK;
return NFC_STATUS_OK;
} else {
return NFC_STATUS_FAILED;
@@ -939,12 +1120,12 @@
NFC_HDR* p_cmd;
uint8_t* p;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_select ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0("rw_i93_send_cmd_select (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -983,13 +1164,12 @@
NFC_HDR* p_cmd;
uint8_t* p;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_reset_to_ready ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0(
- "rw_i93_send_cmd_reset_to_ready (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -1028,12 +1208,12 @@
NFC_HDR* p_cmd;
uint8_t* p;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_write_afi ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0("rw_i93_send_cmd_write_afi (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -1073,12 +1253,12 @@
NFC_HDR* p_cmd;
uint8_t* p;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_lock_afi ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0("rw_i93_send_cmd_lock_afi (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -1117,12 +1297,12 @@
NFC_HDR* p_cmd;
uint8_t* p;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_write_dsfid ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0("rw_i93_send_cmd_write_dsfid (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -1162,12 +1342,12 @@
NFC_HDR* p_cmd;
uint8_t* p;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_lock_dsfid ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0("rw_i93_send_cmd_lock_dsfid (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -1195,6 +1375,59 @@
/*******************************************************************************
**
+** Function rw_i93_send_cmd_get_ext_sys_info
+**
+** Description Send Get Extended System Information Request to VICC
+**
+** Returns tNFC_STATUS
+**
+*******************************************************************************/
+tNFC_STATUS rw_i93_send_cmd_get_ext_sys_info(uint8_t* p_uid) {
+ NFC_HDR* p_cmd;
+ uint8_t* p;
+
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
+
+ p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
+
+ if (!p_cmd) {
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__ << "Cannot allocate buffer";
+ return NFC_STATUS_NO_BUFFERS;
+ }
+
+ p_cmd->offset = NCI_MSG_OFFSET_SIZE + NCI_DATA_HDR_SIZE;
+ p_cmd->len = 11;
+ p = (uint8_t*)(p_cmd + 1) + p_cmd->offset;
+
+ /* Flags */
+ UINT8_TO_STREAM(p, (I93_FLAG_ADDRESS_SET | RW_I93_FLAG_SUB_CARRIER |
+ RW_I93_FLAG_DATA_RATE));
+
+ /* Command Code */
+ UINT8_TO_STREAM(p, I93_CMD_EXT_GET_SYS_INFO);
+
+ /* Parameters request field */
+ UINT8_TO_STREAM(p,
+ (I93_INFO_FLAG_MOI | I93_INFO_FLAG_DSFID | I93_INFO_FLAG_AFI |
+ I93_INFO_FLAG_MEM_SIZE | I93_INFO_FLAG_IC_REF));
+
+ /* Parameters */
+ if (p_uid) {
+ ARRAY8_TO_STREAM(p, p_uid); /* UID */
+ } else {
+ ARRAY8_TO_STREAM(p, rw_cb.tcb.i93.uid); /* UID */
+ }
+
+ if (rw_i93_send_to_lower(p_cmd)) {
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_EXT_GET_SYS_INFO;
+ return NFC_STATUS_OK;
+ } else {
+ return NFC_STATUS_FAILED;
+ }
+}
+
+/*******************************************************************************
+**
** Function rw_i93_send_cmd_get_sys_info
**
** Description Send Get System Information Request to VICC
@@ -1206,12 +1439,12 @@
NFC_HDR* p_cmd;
uint8_t* p;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_get_sys_info ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0("rw_i93_send_cmd_get_sys_info (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -1255,13 +1488,12 @@
NFC_HDR* p_cmd;
uint8_t *p, flags;
- RW_TRACE_DEBUG0("rw_i93_send_cmd_get_multi_block_sec ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
p_cmd = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_cmd) {
- RW_TRACE_ERROR0(
- "rw_i93_send_cmd_get_multi_block_sec (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return NFC_STATUS_NO_BUFFERS;
}
@@ -1279,12 +1511,17 @@
UINT8_TO_STREAM(p, flags);
/* Command Code */
- UINT8_TO_STREAM(p, I93_CMD_GET_MULTI_BLK_SEC);
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
+ UINT8_TO_STREAM(p, I93_CMD_EXT_GET_MULTI_BLK_SEC);
+ } else {
+ UINT8_TO_STREAM(p, I93_CMD_GET_MULTI_BLK_SEC);
+ }
/* Parameters */
ARRAY8_TO_STREAM(p, rw_cb.tcb.i93.uid); /* UID */
- if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_16BIT_NUM_BLOCK) {
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_16BIT_NUM_BLOCK ||
+ rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS) {
UINT16_TO_STREAM(p, first_block_number); /* First block number */
UINT16_TO_STREAM(
p, number_blocks - 1); /* Number of blocks, 0x00 to read one block */
@@ -1296,7 +1533,10 @@
}
if (rw_i93_send_to_lower(p_cmd)) {
- rw_cb.tcb.i93.sent_cmd = I93_CMD_GET_MULTI_BLK_SEC;
+ if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_EXT_COMMANDS)
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_EXT_GET_MULTI_BLK_SEC;
+ else
+ rw_cb.tcb.i93.sent_cmd = I93_CMD_GET_MULTI_BLK_SEC;
return NFC_STATUS_OK;
} else {
return NFC_STATUS_FAILED;
@@ -1318,7 +1558,7 @@
uint16_t first_block;
uint16_t num_block;
- RW_TRACE_DEBUG0("rw_i93_get_next_blocks ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
first_block = offset / p_i93->block_size;
@@ -1372,11 +1612,12 @@
tRW_I93_CB* p_i93 = &rw_cb.tcb.i93;
uint16_t num_blocks;
- RW_TRACE_DEBUG0("rw_i93_get_next_block_sec ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (p_i93->num_block <= p_i93->rw_offset) {
- RW_TRACE_ERROR2("rw_offset(0x%x) must be less than num_block(0x%x)",
- p_i93->rw_offset, p_i93->num_block);
+ LOG(ERROR) << StringPrintf(
+ "rw_offset(0x%x) must be less than num_block(0x%x)", p_i93->rw_offset,
+ p_i93->num_block);
return NFC_STATUS_FAILED;
}
@@ -1385,6 +1626,8 @@
if (num_blocks > RW_I93_GET_MULTI_BLOCK_SEC_SIZE)
num_blocks = RW_I93_GET_MULTI_BLOCK_SEC_SIZE;
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << __func__ << std::hex << rw_cb.tcb.i93.intl_flags;
return rw_i93_send_cmd_get_multi_block_sec(p_i93->rw_offset, num_blocks);
}
@@ -1405,20 +1648,16 @@
**
*******************************************************************************/
void rw_i93_sm_detect_ndef(NFC_HDR* p_resp) {
- uint8_t *p = (uint8_t *)(p_resp + 1) + p_resp->offset, *p_uid;
+ uint8_t *p = (uint8_t*)(p_resp + 1) + p_resp->offset, *p_uid;
uint8_t flags, u8 = 0, cc[4];
uint16_t length = p_resp->len, xx, block, first_block, last_block, num_blocks;
tRW_I93_CB* p_i93 = &rw_cb.tcb.i93;
tRW_DATA rw_data;
tNFC_STATUS status = NFC_STATUS_FAILED;
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("rw_i93_sm_detect_ndef () sub_state:%s (0x%x)",
- rw_i93_get_sub_state_name(p_i93->sub_state),
- p_i93->sub_state);
-#else
- RW_TRACE_DEBUG1("rw_i93_sm_detect_ndef () sub_state:0x%x", p_i93->sub_state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "sub_state:%s (0x%x)",
+ rw_i93_get_sub_state_name(p_i93->sub_state).c_str(), p_i93->sub_state);
if (length == 0) {
android_errorWriteLog(0x534e4554, "121260197");
@@ -1434,7 +1673,8 @@
/* This STM tag supports more than 2040 bytes */
p_i93->intl_flags |= RW_I93_FLAG_16BIT_NUM_BLOCK;
} else {
- RW_TRACE_DEBUG1("Got error flags (0x%02x)", flags);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Got error flags (0x%02x)", flags);
rw_i93_handle_error(NFC_STATUS_FAILED);
}
return;
@@ -1454,7 +1694,8 @@
if (u8 != I93_DFS_UNSUPPORTED) {
/* if Data Storage Format is unknown */
- RW_TRACE_DEBUG1("Got unknown DSFID (0x%02x)", u8);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Got unknown DSFID (0x%02x)", u8);
rw_i93_handle_error(NFC_STATUS_FAILED);
} else {
/* get system information to get memory size */
@@ -1478,7 +1719,8 @@
}
if ((p_i93->block_size == 0) || (p_i93->num_block == 0)) {
- RW_TRACE_DEBUG0("Unable to get tag memory size");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Unable to get tag memory size");
rw_i93_handle_error(status);
} else {
/* read CC in the first block */
@@ -1514,16 +1756,14 @@
** : Bit 2:More than 2040 bytes are supported [STM]
*/
- RW_TRACE_DEBUG4(
- "rw_i93_sm_detect_ndef (): cc: 0x%02X 0x%02X 0x%02X 0x%02X", cc[0],
- cc[1], cc[2], cc[3]);
- RW_TRACE_DEBUG2(
- "rw_i93_sm_detect_ndef (): Total blocks:0x%04X, Block size:0x%02X",
- p_i93->num_block, p_i93->block_size);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "cc: 0x%02X 0x%02X 0x%02X 0x%02X", cc[0], cc[1], cc[2], cc[3]);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Total blocks:0x%04X, Block size:0x%02X",
+ p_i93->num_block, p_i93->block_size);
- if ((cc[0] == I93_ICODE_CC_MAGIC_NUMER) &&
- ((cc[3] & I93_STM_CC_OVERFLOW_MASK) ||
- (cc[2] * 8) == (p_i93->num_block * p_i93->block_size))) {
+ if ((cc[0] == I93_ICODE_CC_MAGIC_NUMER_E1) ||
+ (cc[0] == I93_ICODE_CC_MAGIC_NUMER_E2)) {
if ((cc[1] & I93_ICODE_CC_READ_ACCESS_MASK) ==
I93_ICODE_CC_READ_ACCESS_GRANTED) {
if ((cc[1] & I93_ICODE_CC_WRITE_ACCESS_MASK) !=
@@ -1535,6 +1775,9 @@
/* tag supports read multi blocks command */
p_i93->intl_flags |= RW_I93_FLAG_READ_MULTI_BLOCK;
}
+ if (cc[0] == I93_ICODE_CC_MAGIC_NUMER_E2) {
+ p_i93->intl_flags |= RW_I93_FLAG_EXT_COMMANDS;
+ }
status = NFC_STATUS_OK;
}
}
@@ -1578,7 +1821,8 @@
p_i93->tlv_type = I93_ICODE_TLV_TYPE_TERM;
break;
} else {
- RW_TRACE_DEBUG1("Invalid type: 0x%02x", *(p + xx));
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Invalid type: 0x%02x", *(p + xx));
rw_i93_handle_error(NFC_STATUS_FAILED);
return;
}
@@ -1773,9 +2017,9 @@
p_i93->state = RW_I93_STATE_IDLE;
p_i93->sent_cmd = 0;
- RW_TRACE_DEBUG3("NDEF cur_size(%d),max_size (%d), flags (0x%x)",
- rw_data.ndef.cur_size, rw_data.ndef.max_size,
- rw_data.ndef.flags);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "NDEF cur_size(%d),max_size (%d), flags (0x%x)",
+ rw_data.ndef.cur_size, rw_data.ndef.max_size, rw_data.ndef.flags);
(*(rw_cb.p_cback))(RW_I93_NDEF_DETECT_EVT, &rw_data);
break;
@@ -1801,7 +2045,7 @@
tRW_I93_CB* p_i93 = &rw_cb.tcb.i93;
tRW_DATA rw_data;
- RW_TRACE_DEBUG0("rw_i93_sm_read_ndef ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (length == 0) {
android_errorWriteLog(0x534e4554, "122035770");
@@ -1813,7 +2057,8 @@
length--;
if (flags & I93_FLAG_ERROR_DETECTED) {
- RW_TRACE_DEBUG1("Got error flags (0x%02x)", flags);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Got error flags (0x%02x)", flags);
rw_i93_handle_error(NFC_STATUS_FAILED);
return;
}
@@ -1859,13 +2104,15 @@
p_i93->state = RW_I93_STATE_IDLE;
p_i93->sent_cmd = 0;
- RW_TRACE_DEBUG2("NDEF read complete read (%d)/total (%d)", p_resp->len,
- p_i93->ndef_length);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NDEF read complete read (%d)/total (%d)", p_resp->len,
+ p_i93->ndef_length);
(*(rw_cb.p_cback))(RW_I93_NDEF_READ_CPLT_EVT, &rw_data);
} else {
- RW_TRACE_DEBUG2("NDEF read segment read (%d)/total (%d)", p_resp->len,
- p_i93->ndef_length);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NDEF read segment read (%d)/total (%d)", p_resp->len,
+ p_i93->ndef_length);
if (p_resp->len > 0) {
(*(rw_cb.p_cback))(RW_I93_NDEF_READ_EVT, &rw_data);
@@ -1900,13 +2147,9 @@
tRW_I93_CB* p_i93 = &rw_cb.tcb.i93;
tRW_DATA rw_data;
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("rw_i93_sm_update_ndef () sub_state:%s (0x%x)",
- rw_i93_get_sub_state_name(p_i93->sub_state),
- p_i93->sub_state);
-#else
- RW_TRACE_DEBUG1("rw_i93_sm_update_ndef () sub_state:0x%x", p_i93->sub_state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "sub_state:%s (0x%x)",
+ rw_i93_get_sub_state_name(p_i93->sub_state).c_str(), p_i93->sub_state);
if (length == 0 || p_i93->block_size > I93_MAX_BLOCK_LENGH) {
android_errorWriteLog(0x534e4554, "122320256");
@@ -1925,7 +2168,8 @@
(*p == I93_ERROR_CODE_BLOCK_FAIL_TO_WRITE)) {
/* ignore error */
} else {
- RW_TRACE_DEBUG1("Got error flags (0x%02x)", flags);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Got error flags (0x%02x)", flags);
rw_i93_handle_error(NFC_STATUS_FAILED);
return;
}
@@ -2136,9 +2380,9 @@
}
}
} else {
- RW_TRACE_DEBUG3("NDEF update complete, %d bytes, (%d-%d)",
- p_i93->ndef_length, p_i93->ndef_tlv_start_offset,
- p_i93->ndef_tlv_last_offset);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "NDEF update complete, %d bytes, (%d-%d)", p_i93->ndef_length,
+ p_i93->ndef_tlv_start_offset, p_i93->ndef_tlv_last_offset);
p_i93->state = RW_I93_STATE_IDLE;
p_i93->sent_cmd = 0;
@@ -2169,20 +2413,16 @@
**
*******************************************************************************/
void rw_i93_sm_format(NFC_HDR* p_resp) {
- uint8_t *p = (uint8_t *)(p_resp + 1) + p_resp->offset, *p_uid;
+ uint8_t *p = (uint8_t*)(p_resp + 1) + p_resp->offset, *p_uid;
uint8_t flags;
uint16_t length = p_resp->len, xx, block_number;
tRW_I93_CB* p_i93 = &rw_cb.tcb.i93;
tRW_DATA rw_data;
tNFC_STATUS status = NFC_STATUS_FAILED;
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("rw_i93_sm_format () sub_state:%s (0x%x)",
- rw_i93_get_sub_state_name(p_i93->sub_state),
- p_i93->sub_state);
-#else
- RW_TRACE_DEBUG1("rw_i93_sm_format () sub_state:0x%x", p_i93->sub_state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "sub_state:%s (0x%x)",
+ rw_i93_get_sub_state_name(p_i93->sub_state).c_str(), p_i93->sub_state);
STREAM_TO_UINT8(flags, p);
length--;
@@ -2200,7 +2440,8 @@
p_i93->intl_flags |= RW_I93_FLAG_16BIT_NUM_BLOCK;
return;
} else {
- RW_TRACE_DEBUG1("Got error flags (0x%02x)", flags);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Got error flags (0x%02x)", flags);
rw_i93_handle_error(NFC_STATUS_FAILED);
return;
}
@@ -2246,7 +2487,8 @@
}
if ((p_i93->block_size == 0) || (p_i93->num_block == 0)) {
- RW_TRACE_DEBUG0("Unable to get tag memory size");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Unable to get tag memory size");
rw_i93_handle_error(status);
} else if (p_i93->intl_flags & RW_I93_FLAG_RESET_DSFID) {
if (rw_i93_send_cmd_write_dsfid(I93_DFS_UNSUPPORTED) == NFC_STATUS_OK) {
@@ -2392,7 +2634,7 @@
p_i93->p_update_data = (uint8_t*)GKI_getbuf(RW_I93_FORMAT_DATA_LEN);
if (!p_i93->p_update_data) {
- RW_TRACE_ERROR0("rw_i93_sm_format (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
rw_i93_handle_error(NFC_STATUS_FAILED);
break;
}
@@ -2400,7 +2642,7 @@
p = p_i93->p_update_data;
/* Capability Container */
- *(p++) = I93_ICODE_CC_MAGIC_NUMER; /* magic number */
+ *(p++) = I93_ICODE_CC_MAGIC_NUMER_E1; /* magic number */
*(p++) = 0x40; /* version 1.0, read/write */
/* if memory size is less than 2048 bytes */
@@ -2508,14 +2750,9 @@
tRW_I93_CB* p_i93 = &rw_cb.tcb.i93;
tRW_DATA rw_data;
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("rw_i93_sm_set_read_only () sub_state:%s (0x%x)",
- rw_i93_get_sub_state_name(p_i93->sub_state),
- p_i93->sub_state);
-#else
- RW_TRACE_DEBUG1("rw_i93_sm_set_read_only () sub_state:0x%x",
- p_i93->sub_state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "sub_state:%s (0x%x)",
+ rw_i93_get_sub_state_name(p_i93->sub_state).c_str(), p_i93->sub_state);
STREAM_TO_UINT8(flags, p);
length--;
@@ -2528,7 +2765,8 @@
(*p == I93_ERROR_CODE_BLOCK_FAIL_TO_WRITE)) {
/* ignore error */
} else {
- RW_TRACE_DEBUG1("Got error flags (0x%02x)", flags);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Got error flags (0x%02x)", flags);
rw_i93_handle_error(NFC_STATUS_FAILED);
return;
}
@@ -2621,8 +2859,8 @@
tRW_DATA rw_data;
tRW_EVENT event;
- RW_TRACE_DEBUG2("rw_i93_handle_error (): status:0x%02X, state:0x%X", status,
- p_i93->state);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("status:0x%02X, state:0x%X", status, p_i93->state);
nfc_stop_quick_timer(&p_i93->timer);
@@ -2709,15 +2947,14 @@
void rw_i93_process_timeout(TIMER_LIST_ENT* p_tle) {
NFC_HDR* p_buf;
- RW_TRACE_DEBUG1("rw_i93_process_timeout () event=%d", p_tle->event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event=%d", p_tle->event);
if (p_tle->event == NFC_TTYPE_RW_I93_RESPONSE) {
if ((rw_cb.tcb.i93.retry_count < RW_MAX_RETRIES) &&
(rw_cb.tcb.i93.p_retry_cmd) &&
(rw_cb.tcb.i93.sent_cmd != I93_CMD_STAY_QUIET)) {
rw_cb.tcb.i93.retry_count++;
- RW_TRACE_ERROR1("rw_i93_process_timeout (): retry_count = %d",
- rw_cb.tcb.i93.retry_count);
+ LOG(ERROR) << StringPrintf("retry_count = %d", rw_cb.tcb.i93.retry_count);
p_buf = rw_cb.tcb.i93.p_retry_cmd;
rw_cb.tcb.i93.p_retry_cmd = NULL;
@@ -2735,7 +2972,7 @@
}
rw_i93_handle_error(NFC_STATUS_TIMEOUT);
} else {
- RW_TRACE_ERROR1("rw_i93_process_timeout () unknown event=%d", p_tle->event);
+ LOG(ERROR) << StringPrintf("unknown event=%d", p_tle->event);
}
}
@@ -2748,17 +2985,15 @@
** Returns none
**
*******************************************************************************/
-static void rw_i93_data_cback(uint8_t conn_id, tNFC_CONN_EVT event,
- tNFC_CONN* p_data) {
+static void rw_i93_data_cback(__attribute__((unused)) uint8_t conn_id,
+ tNFC_CONN_EVT event, tNFC_CONN* p_data) {
tRW_I93_CB* p_i93 = &rw_cb.tcb.i93;
NFC_HDR* p_resp;
tRW_DATA rw_data;
-#if (BT_TRACE_VERBOSE == TRUE)
uint8_t begin_state = p_i93->state;
-#endif
- RW_TRACE_DEBUG1("rw_i93_data_cback () event = 0x%X", event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event = 0x%X", event);
if ((event == NFC_DEACTIVATE_CEVT) || (event == NFC_ERROR_CEVT) ||
((event == NFC_DATA_CEVT) && (p_data->status != NFC_STATUS_OK))) {
@@ -2768,8 +3003,7 @@
if ((p_i93->retry_count < RW_MAX_RETRIES) && (p_i93->p_retry_cmd)) {
p_i93->retry_count++;
- RW_TRACE_ERROR1("rw_i93_data_cback (): retry_count = %d",
- p_i93->retry_count);
+ LOG(ERROR) << StringPrintf("retry_count = %d", p_i93->retry_count);
p_resp = p_i93->p_retry_cmd;
p_i93->p_retry_cmd = NULL;
@@ -2814,16 +3048,9 @@
p_i93->retry_count = 0;
}
-#if (BT_TRACE_PROTOCOL == TRUE)
- DispRWI93Tag(p_resp, true, p_i93->sent_cmd);
-#endif
-
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("RW I93 state: <%s (%d)>",
- rw_i93_get_state_name(p_i93->state), p_i93->state);
-#else
- RW_TRACE_DEBUG1("RW I93 state: %d", p_i93->state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "RW I93 state: <%s (%d)>", rw_i93_get_state_name(p_i93->state).c_str(),
+ p_i93->state);
switch (p_i93->state) {
case RW_I93_STATE_IDLE:
@@ -2881,18 +3108,17 @@
break;
default:
- RW_TRACE_ERROR1("rw_i93_data_cback (): invalid state=%d", p_i93->state);
+ LOG(ERROR) << StringPrintf("invalid state=%d", p_i93->state);
GKI_freebuf(p_resp);
break;
}
-#if (BT_TRACE_VERBOSE == TRUE)
if (begin_state != p_i93->state) {
- RW_TRACE_DEBUG2("RW I93 state changed:<%s> -> <%s>",
- rw_i93_get_state_name(begin_state),
- rw_i93_get_state_name(p_i93->state));
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW I93 state changed:<%s> -> <%s>",
+ rw_i93_get_state_name(begin_state).c_str(),
+ rw_i93_get_state_name(p_i93->state).c_str());
}
-#endif
}
/*******************************************************************************
@@ -2908,7 +3134,7 @@
tRW_I93_CB* p_i93 = &rw_cb.tcb.i93;
uint8_t uid[I93_UID_BYTE_LEN], *p;
- RW_TRACE_DEBUG0("rw_i93_select ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
NFC_SetStaticRfCback(rw_i93_data_cback);
@@ -2941,13 +3167,12 @@
tNFC_STATUS RW_I93Inventory(bool including_afi, uint8_t afi, uint8_t* p_uid) {
tNFC_STATUS status;
- RW_TRACE_API2("RW_I93Inventory (), including_afi:%d, AFI:0x%02X",
- including_afi, afi);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(", including_afi:%d, AFI:0x%02X", including_afi, afi);
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93Inventory ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
@@ -2977,12 +3202,11 @@
tNFC_STATUS RW_I93StayQuiet(void) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93StayQuiet ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93StayQuiet ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
@@ -3011,12 +3235,12 @@
tNFC_STATUS RW_I93ReadSingleBlock(uint16_t block_number) {
tNFC_STATUS status;
- RW_TRACE_API1("RW_I93ReadSingleBlock () block_number:0x%02X", block_number);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("block_number:0x%02X", block_number);
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93ReadSingleBlock ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
@@ -3047,17 +3271,16 @@
tNFC_STATUS RW_I93WriteSingleBlock(uint16_t block_number, uint8_t* p_data) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93WriteSingleBlock ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93WriteSingleBlock ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
if (rw_cb.tcb.i93.block_size == 0) {
- RW_TRACE_ERROR0("RW_I93WriteSingleBlock ():Block size is unknown");
+ LOG(ERROR) << StringPrintf("Block size is unknown");
return NFC_STATUS_FAILED;
}
@@ -3086,12 +3309,11 @@
tNFC_STATUS RW_I93LockBlock(uint8_t block_number) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93LockBlock ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93LockBlock ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
@@ -3121,12 +3343,11 @@
uint16_t number_blocks) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93ReadMultipleBlocks ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93ReadMultipleBlocks ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
@@ -3152,21 +3373,20 @@
** NFC_STATUS_FAILED if other error
**
*******************************************************************************/
-tNFC_STATUS RW_I93WriteMultipleBlocks(uint8_t first_block_number,
+tNFC_STATUS RW_I93WriteMultipleBlocks(uint16_t first_block_number,
uint16_t number_blocks, uint8_t* p_data) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93WriteMultipleBlocks ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93WriteMultipleBlocks ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
if (rw_cb.tcb.i93.block_size == 0) {
- RW_TRACE_ERROR0("RW_I93WriteSingleBlock ():Block size is unknown");
+ LOG(ERROR) << StringPrintf("Block size is unknown");
return NFC_STATUS_FAILED;
}
@@ -3201,11 +3421,11 @@
tNFC_STATUS RW_I93Select(uint8_t* p_uid) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93Select ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1("RW_I93Select ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
@@ -3215,7 +3435,7 @@
rw_cb.tcb.i93.state = RW_I93_STATE_BUSY;
}
} else {
- RW_TRACE_ERROR0("RW_I93Select ():UID shall be provided");
+ LOG(ERROR) << StringPrintf("UID shall be provided");
status = NFC_STATUS_FAILED;
}
@@ -3239,12 +3459,11 @@
tNFC_STATUS RW_I93ResetToReady(void) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93ResetToReady ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93ResetToReady ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
@@ -3273,11 +3492,11 @@
tNFC_STATUS RW_I93WriteAFI(uint8_t afi) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93WriteAFI ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1("RW_I93WriteAFI ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
@@ -3306,11 +3525,11 @@
tNFC_STATUS RW_I93LockAFI(void) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93LockAFI ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1("RW_I93LockAFI ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
@@ -3339,12 +3558,11 @@
tNFC_STATUS RW_I93WriteDSFID(uint8_t dsfid) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93WriteDSFID ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93WriteDSFID ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
@@ -3373,12 +3591,11 @@
tNFC_STATUS RW_I93LockDSFID(void) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93LockDSFID ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93LockDSFID ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
@@ -3407,12 +3624,11 @@
tNFC_STATUS RW_I93GetSysInfo(uint8_t* p_uid) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93GetSysInfo ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93GetSysInfo ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
}
@@ -3448,11 +3664,11 @@
uint16_t number_blocks) {
tNFC_STATUS status;
- RW_TRACE_API0("RW_I93GetMultiBlockSecurityStatus ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93GetMultiBlockSecurityStatus ():Unable to start command at state "
+ LOG(ERROR) << StringPrintf(
+ "Unable to start command at state "
"(0x%X)",
rw_cb.tcb.i93.state);
return NFC_STATUS_BUSY;
@@ -3483,12 +3699,11 @@
tNFC_STATUS status;
tRW_I93_RW_SUBSTATE sub_state;
- RW_TRACE_API0("RW_I93DetectNDef ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93DetectNDef ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_FAILED;
}
@@ -3538,11 +3753,11 @@
**
*******************************************************************************/
tNFC_STATUS RW_I93ReadNDef(void) {
- RW_TRACE_API0("RW_I93ReadNDef ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1("RW_I93ReadNDef ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_FAILED;
}
@@ -3557,7 +3772,7 @@
return NFC_STATUS_FAILED;
}
} else {
- RW_TRACE_ERROR0("RW_I93ReadNDef ():No NDEF detected");
+ LOG(ERROR) << StringPrintf("No NDEF detected");
return NFC_STATUS_FAILED;
}
@@ -3584,23 +3799,22 @@
tNFC_STATUS RW_I93UpdateNDef(uint16_t length, uint8_t* p_data) {
uint16_t block_number;
- RW_TRACE_API1("RW_I93UpdateNDef () length:%d", length);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("length:%d", length);
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93UpdateNDef ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_FAILED;
}
if (rw_cb.tcb.i93.tlv_type == I93_ICODE_TLV_TYPE_NDEF) {
if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_READ_ONLY) {
- RW_TRACE_ERROR0("RW_I93UpdateNDef ():NDEF is read-only");
+ LOG(ERROR) << StringPrintf("NDEF is read-only");
return NFC_STATUS_FAILED;
}
if (rw_cb.tcb.i93.max_ndef_length < length) {
- RW_TRACE_ERROR2(
- "RW_I93UpdateNDef ():data (%d bytes) is more than max NDEF length "
+ LOG(ERROR) << StringPrintf(
+ "data (%d bytes) is more than max NDEF length "
"(%d)",
length, rw_cb.tcb.i93.max_ndef_length);
return NFC_STATUS_FAILED;
@@ -3623,7 +3837,7 @@
return NFC_STATUS_FAILED;
}
} else {
- RW_TRACE_ERROR0("RW_I93ReadNDef ():No NDEF detected");
+ LOG(ERROR) << StringPrintf("No NDEF detected");
return NFC_STATUS_FAILED;
}
@@ -3646,12 +3860,11 @@
tNFC_STATUS status;
tRW_I93_RW_SUBSTATE sub_state;
- RW_TRACE_API0("RW_I93FormatNDef ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93FormatNDef ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_FAILED;
}
@@ -3694,18 +3907,17 @@
**
*******************************************************************************/
tNFC_STATUS RW_I93SetTagReadOnly(void) {
- RW_TRACE_API0("RW_I93SetTagReadOnly ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.i93.state != RW_I93_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_I93SetTagReadOnly ():Unable to start command at state (0x%X)",
- rw_cb.tcb.i93.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.i93.state);
return NFC_STATUS_FAILED;
}
if (rw_cb.tcb.i93.tlv_type == I93_ICODE_TLV_TYPE_NDEF) {
if (rw_cb.tcb.i93.intl_flags & RW_I93_FLAG_READ_ONLY) {
- RW_TRACE_ERROR0("RW_I93SetTagReadOnly ():NDEF is already read-only");
+ LOG(ERROR) << StringPrintf("NDEF is already read-only");
return NFC_STATUS_FAILED;
}
@@ -3717,7 +3929,7 @@
return NFC_STATUS_FAILED;
}
} else {
- RW_TRACE_ERROR0("RW_I93SetTagReadOnly ():No NDEF detected");
+ LOG(ERROR) << StringPrintf("No NDEF detected");
return NFC_STATUS_FAILED;
}
@@ -3743,7 +3955,7 @@
tNFC_STATUS status;
tRW_DATA evt_data;
- RW_TRACE_API0("RW_I93PresenceCheck ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (!rw_cb.p_cback) {
return NFC_STATUS_FAILED;
@@ -3768,7 +3980,6 @@
return (status);
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function rw_i93_get_state_name
@@ -3780,30 +3991,28 @@
** Returns pointer to the name
**
*******************************************************************************/
-static char* rw_i93_get_state_name(uint8_t state) {
+static std::string rw_i93_get_state_name(uint8_t state) {
switch (state) {
case RW_I93_STATE_NOT_ACTIVATED:
- return ("NOT_ACTIVATED");
+ return "NOT_ACTIVATED";
case RW_I93_STATE_IDLE:
- return ("IDLE");
+ return "IDLE";
case RW_I93_STATE_BUSY:
- return ("BUSY");
-
+ return "BUSY";
case RW_I93_STATE_DETECT_NDEF:
- return ("NDEF_DETECTION");
+ return "NDEF_DETECTION";
case RW_I93_STATE_READ_NDEF:
- return ("READ_NDEF");
+ return "READ_NDEF";
case RW_I93_STATE_UPDATE_NDEF:
- return ("UPDATE_NDEF");
+ return "UPDATE_NDEF";
case RW_I93_STATE_FORMAT:
- return ("FORMAT");
+ return "FORMAT";
case RW_I93_STATE_SET_READ_ONLY:
- return ("SET_READ_ONLY");
-
+ return "SET_READ_ONLY";
case RW_I93_STATE_PRESENCE_CHECK:
- return ("PRESENCE_CHECK");
+ return "PRESENCE_CHECK";
default:
- return ("???? UNKNOWN STATE");
+ return "???? UNKNOWN STATE";
}
}
@@ -3818,38 +4027,38 @@
** Returns pointer to the name
**
*******************************************************************************/
-static char* rw_i93_get_sub_state_name(uint8_t sub_state) {
+static std::string rw_i93_get_sub_state_name(uint8_t sub_state) {
switch (sub_state) {
case RW_I93_SUBSTATE_WAIT_UID:
- return ("WAIT_UID");
+ return "WAIT_UID";
case RW_I93_SUBSTATE_WAIT_SYS_INFO:
- return ("WAIT_SYS_INFO");
+ return "WAIT_SYS_INFO";
case RW_I93_SUBSTATE_WAIT_CC:
- return ("WAIT_CC");
+ return "WAIT_CC";
case RW_I93_SUBSTATE_SEARCH_NDEF_TLV:
- return ("SEARCH_NDEF_TLV");
+ return "SEARCH_NDEF_TLV";
case RW_I93_SUBSTATE_CHECK_LOCK_STATUS:
- return ("CHECK_LOCK_STATUS");
+ return "CHECK_LOCK_STATUS";
case RW_I93_SUBSTATE_RESET_LEN:
- return ("RESET_LEN");
+ return "RESET_LEN";
case RW_I93_SUBSTATE_WRITE_NDEF:
- return ("WRITE_NDEF");
+ return "WRITE_NDEF";
case RW_I93_SUBSTATE_UPDATE_LEN:
- return ("UPDATE_LEN");
+ return "UPDATE_LEN";
case RW_I93_SUBSTATE_WAIT_RESET_DSFID_AFI:
- return ("WAIT_RESET_DSFID_AFI");
+ return "WAIT_RESET_DSFID_AFI";
case RW_I93_SUBSTATE_CHECK_READ_ONLY:
- return ("CHECK_READ_ONLY");
+ return "CHECK_READ_ONLY";
case RW_I93_SUBSTATE_WRITE_CC_NDEF_TLV:
- return ("WRITE_CC_NDEF_TLV");
+ return "WRITE_CC_NDEF_TLV";
case RW_I93_SUBSTATE_WAIT_UPDATE_CC:
- return ("WAIT_UPDATE_CC");
+ return "WAIT_UPDATE_CC";
case RW_I93_SUBSTATE_LOCK_NDEF_TLV:
- return ("LOCK_NDEF_TLV");
+ return "LOCK_NDEF_TLV";
case RW_I93_SUBSTATE_WAIT_LOCK_CC:
- return ("WAIT_LOCK_CC");
+ return "WAIT_LOCK_CC";
default:
- return ("???? UNKNOWN SUBSTATE");
+ return "???? UNKNOWN SUBSTATE";
}
}
@@ -3864,42 +4073,44 @@
** Returns pointer to the name
**
*******************************************************************************/
-static char* rw_i93_get_tag_name(uint8_t product_version) {
+static std::string rw_i93_get_tag_name(uint8_t product_version) {
switch (product_version) {
case RW_I93_ICODE_SLI:
- return ("SLI/SLIX");
+ return "SLI/SLIX";
case RW_I93_ICODE_SLI_S:
- return ("SLI-S/SLIX-S");
+ return "SLI-S/SLIX-S";
case RW_I93_ICODE_SLI_L:
- return ("SLI-L/SLIX-L");
+ return "SLI-L/SLIX-L";
case RW_I93_TAG_IT_HF_I_PLUS_INLAY:
- return ("Tag-it HF-I Plus Inlay");
+ return "Tag-it HF-I Plus Inlay";
case RW_I93_TAG_IT_HF_I_PLUS_CHIP:
- return ("Tag-it HF-I Plus Chip");
+ return "Tag-it HF-I Plus Chip";
case RW_I93_TAG_IT_HF_I_STD_CHIP_INLAY:
- return ("Tag-it HF-I Standard Chip/Inlyas");
+ return "Tag-it HF-I Standard Chip/Inlyas";
case RW_I93_TAG_IT_HF_I_PRO_CHIP_INLAY:
- return ("Tag-it HF-I Pro Chip/Inlays");
+ return "Tag-it HF-I Pro Chip/Inlays";
case RW_I93_STM_LRI1K:
- return ("LRi1K");
+ return "LRi1K";
case RW_I93_STM_LRI2K:
- return ("LRi2K");
+ return "LRi2K";
case RW_I93_STM_LRIS2K:
- return ("LRiS2K");
+ return "LRiS2K";
case RW_I93_STM_LRIS64K:
- return ("LRiS64K");
+ return "LRiS64K";
case RW_I93_STM_M24LR64_R:
- return ("M24LR64");
+ return "M24LR64";
case RW_I93_STM_M24LR04E_R:
- return ("M24LR04E");
+ return "M24LR04E";
case RW_I93_STM_M24LR16E_R:
- return ("M24LR16E");
+ return "M24LR16E";
case RW_I93_STM_M24LR64E_R:
- return ("M24LR64E");
+ return "M24LR64E";
+ case RW_I93_STM_ST25DV04K:
+ return "ST25DV04";
+ case RW_I93_STM_ST25DVHIK:
+ return "ST25DV";
case RW_I93_UNKNOWN_PRODUCT:
default:
- return ("UNKNOWN");
+ return "UNKNOWN";
}
}
-
-#endif
diff --git a/src/nfc/tags/rw_main.c b/src/nfc/tags/rw_main.cc
similarity index 86%
rename from src/nfc/tags/rw_main.c
rename to src/nfc/tags/rw_main.cc
index 9ff1d14..34dadae 100644
--- a/src/nfc/tags/rw_main.c
+++ b/src/nfc/tags/rw_main.cc
@@ -24,20 +24,28 @@
*
******************************************************************************/
#include <string.h>
-#include "bt_types.h"
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfc_target.h"
+#include "bt_types.h"
#include "nci_hmsgs.h"
#include "nfc_api.h"
#include "rw_api.h"
#include "rw_int.h"
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
tRW_CB rw_cb;
+
/*******************************************************************************
*******************************************************************************/
void rw_init(void) {
memset(&rw_cb, 0, sizeof(tRW_CB));
- rw_cb.trace_level = NFC_INITIAL_TRACE_LEVEL;
}
#if (RW_STATS_INCLUDED == TRUE)
@@ -137,14 +145,16 @@
ticks = GKI_get_tick_count() - rw_cb.stats.start_tick;
elapsed_ms = GKI_TICKS_TO_MS(ticks);
- RW_TRACE_DEBUG5(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"NFC tx stats: cmds:%i, retries:%i, aborted: %i, tx_errs: %i, bytes "
"sent:%i",
rw_cb.stats.num_ops, rw_cb.stats.num_retries, rw_cb.stats.num_fail,
rw_cb.stats.num_trans_err, rw_cb.stats.bytes_sent);
- RW_TRACE_DEBUG2(" rx stats: rx-crc errors %i, bytes received: %i",
- rw_cb.stats.num_crc, rw_cb.stats.bytes_received);
- RW_TRACE_DEBUG1(" time activated %i ms", elapsed_ms);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(" rx stats: rx-crc errors %i, bytes received: %i",
+ rw_cb.stats.num_crc, rw_cb.stats.bytes_received);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(" time activated %i ms", elapsed_ms);
}
#endif /* RW_STATS_INCLUDED */
@@ -171,7 +181,8 @@
memcpy(p, p_raw_data, data_len);
p_data->len = data_len;
- RW_TRACE_EVENT1("RW SENT raw frame (0x%x)", data_len);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW SENT raw frame (0x%x)", data_len);
status = NFC_SendData(NFC_RF_CONN_ID, p_data);
}
}
@@ -192,13 +203,14 @@
tNFC_STATUS status = NFC_STATUS_FAILED;
/* check for null cback here / remove checks from rw_t?t */
- RW_TRACE_DEBUG3("RW_SetActivatedTagType protocol:%d, technology:%d, SAK:%d",
- p_activate_params->protocol,
- p_activate_params->rf_tech_param.mode,
- p_activate_params->rf_tech_param.param.pa.sel_rsp);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "RW_SetActivatedTagType protocol:%d, technology:%d, SAK:%d",
+ p_activate_params->protocol, p_activate_params->rf_tech_param.mode,
+ p_activate_params->rf_tech_param.param.pa.sel_rsp);
if (p_cback == NULL) {
- RW_TRACE_ERROR0("RW_SetActivatedTagType called with NULL callback");
+ LOG(ERROR) << StringPrintf(
+ "RW_SetActivatedTagType called with NULL callback");
return (NFC_STATUS_FAILED);
}
@@ -247,26 +259,9 @@
}
/* TODO set up callback for proprietary protocol */
else {
- RW_TRACE_ERROR0("RW_SetActivatedTagType Invalid protocol");
+ LOG(ERROR) << StringPrintf("RW_SetActivatedTagType Invalid protocol");
}
if (status != NFC_STATUS_OK) rw_cb.p_cback = NULL;
return status;
}
-
-/*******************************************************************************
-**
-** Function RW_SetTraceLevel
-**
-** Description This function sets the trace level for Reader/Writer mode.
-** If called with a value of 0xFF,
-** it simply returns the current trace level.
-**
-** Returns The new or current trace level
-**
-*******************************************************************************/
-uint8_t RW_SetTraceLevel(uint8_t new_level) {
- if (new_level != 0xFF) rw_cb.trace_level = new_level;
-
- return (rw_cb.trace_level);
-}
diff --git a/src/nfc/tags/rw_t1t.c b/src/nfc/tags/rw_t1t.cc
similarity index 83%
rename from src/nfc/tags/rw_t1t.c
rename to src/nfc/tags/rw_t1t.cc
index 2c7e02d..b7e8aa8 100644
--- a/src/nfc/tags/rw_t1t.c
+++ b/src/nfc/tags/rw_t1t.cc
@@ -22,7 +22,11 @@
* mode.
*
******************************************************************************/
-#include <string.h>
+#include <string>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfc_target.h"
#include "gki.h"
@@ -32,7 +36,11 @@
#include "rw_api.h"
#include "rw_int.h"
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
extern unsigned char appl_dta_mode_flag;
+
/* Local Functions */
static tRW_EVENT rw_t1t_handle_rid_rsp(NFC_HDR* p_pkt);
static void rw_t1t_data_cback(uint8_t conn_id, tNFC_CONN_EVT event,
@@ -40,11 +48,7 @@
static void rw_t1t_process_frame_error(void);
static void rw_t1t_process_error(void);
static void rw_t1t_handle_presence_check_rsp(tNFC_STATUS status);
-#if (BT_TRACE_VERBOSE == TRUE)
-static char* rw_t1t_get_state_name(uint8_t state);
-static char* rw_t1t_get_sub_state_name(uint8_t sub_state);
-static char* rw_t1t_get_event_name(uint8_t event);
-#endif
+static std::string rw_t1t_get_state_name(uint8_t state);
/*******************************************************************************
**
@@ -55,7 +59,8 @@
** Returns none
**
*******************************************************************************/
-static void rw_t1t_data_cback(uint8_t conn_id, tNFC_CONN_EVT event,
+static void rw_t1t_data_cback(__attribute__((unused)) uint8_t conn_id,
+ __attribute__((unused)) tNFC_CONN_EVT event,
tNFC_CONN* p_data) {
tRW_T1T_CB* p_t1t = &rw_cb.tcb.t1t;
tRW_EVENT rw_event = RW_RAW_FRAME_EVT;
@@ -65,21 +70,16 @@
uint8_t* p;
tT1T_CMD_RSP_INFO* p_cmd_rsp_info =
(tT1T_CMD_RSP_INFO*)rw_cb.tcb.t1t.p_cmd_rsp_info;
-#if (BT_TRACE_VERBOSE == TRUE)
uint8_t begin_state = p_t1t->state;
-#endif
p_pkt = (NFC_HDR*)(p_data->data.p_data);
if (p_pkt == NULL) return;
/* Assume the data is just the response byte sequence */
p = (uint8_t*)(p_pkt + 1) + p_pkt->offset;
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("rw_t1t_data_cback (): state:%s (%d)",
- rw_t1t_get_state_name(p_t1t->state), p_t1t->state);
-#else
- RW_TRACE_DEBUG1("rw_t1t_data_cback (): state=%d", p_t1t->state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "state:%s (%d)", rw_t1t_get_state_name(p_t1t->state).c_str(),
+ p_t1t->state);
evt_data.status = NFC_STATUS_OK;
@@ -97,7 +97,7 @@
(p_t1t->prev_cmd_rsp_info.op_code == T1T_CMD_RALL) ||
(p_t1t->prev_cmd_rsp_info.addr == *p))) {
/* Response to previous command retransmission */
- RW_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"T1T Response to previous command in Idle state. command=0x%02x, "
"Remaining max retx rsp:0x%02x ",
p_t1t->prev_cmd_rsp_info.op_code,
@@ -107,7 +107,7 @@
} else {
/* Raw frame event */
evt_data.data.p_data = p_pkt;
- (*rw_cb.p_cback)(RW_T1T_RAW_FRAME_EVT, (tRW_DATA*)&evt_data);
+ (*rw_cb.p_cback)(RW_T1T_RAW_FRAME_EVT, &evt_data);
}
return;
}
@@ -134,7 +134,7 @@
((p_t1t->prev_cmd_rsp_info.op_code == T1T_CMD_RID) ||
(p_t1t->prev_cmd_rsp_info.op_code == T1T_CMD_RALL) ||
(p_t1t->prev_cmd_rsp_info.addr == *p))) {
- RW_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"T1T Response to previous command. command=0x%02x, Remaining max "
"retx rsp:0x%02x",
p_t1t->prev_cmd_rsp_info.op_code,
@@ -144,14 +144,9 @@
/* Stop timer as some response to current command is received */
nfc_stop_quick_timer(&p_t1t->timer);
/* Retrasmit the last sent command if retry-count < max retry */
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_ERROR2("T1T Frame error. state=%s command (opcode) = 0x%02x",
- rw_t1t_get_state_name(p_t1t->state),
- p_cmd_rsp_info->opcode);
-#else
- RW_TRACE_ERROR2("T1T Frame error. state=0x%02x command = 0x%02x ",
- p_t1t->state, p_cmd_rsp_info->opcode);
-#endif
+ LOG(ERROR) << StringPrintf(
+ "T1T Frame error. state=%s command (opcode) = 0x%02x",
+ rw_t1t_get_state_name(p_t1t->state).c_str(), p_cmd_rsp_info->opcode);
rw_t1t_process_frame_error();
}
GKI_freebuf(p_pkt);
@@ -161,8 +156,9 @@
/* Stop timer as response to current command is received */
nfc_stop_quick_timer(&p_t1t->timer);
- RW_TRACE_EVENT2("RW RECV [%s]:0x%x RSP", t1t_info_to_str(p_cmd_rsp_info),
- p_cmd_rsp_info->opcode);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW RECV [%s]:0x%x RSP", t1t_info_to_str(p_cmd_rsp_info),
+ p_cmd_rsp_info->opcode);
/* If we did not receive response to all retransmitted previous command,
* dont expect that as response have come for the current command itself.
@@ -203,17 +199,16 @@
evt_data.data.p_data = p_pkt;
}
rw_t1t_handle_op_complete();
- (*rw_cb.p_cback)(rw_event, (tRW_DATA*)&evt_data);
+ (*rw_cb.p_cback)(rw_event, &evt_data);
} else
GKI_freebuf(p_pkt);
-#if (BT_TRACE_VERBOSE == TRUE)
if (begin_state != p_t1t->state) {
- RW_TRACE_DEBUG2("RW T1T state changed:<%s> -> <%s>",
- rw_t1t_get_state_name(begin_state),
- rw_t1t_get_state_name(p_t1t->state));
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW T1T state changed:<%s> -> <%s>",
+ rw_t1t_get_state_name(begin_state).c_str(),
+ rw_t1t_get_state_name(p_t1t->state).c_str());
}
-#endif
}
/*******************************************************************************
@@ -228,13 +223,13 @@
void rw_t1t_conn_cback(uint8_t conn_id, tNFC_CONN_EVT event,
tNFC_CONN* p_data) {
tRW_T1T_CB* p_t1t = &rw_cb.tcb.t1t;
- tRW_READ_DATA evt_data;
- RW_TRACE_DEBUG2("rw_t1t_conn_cback: conn_id=%i, evt=0x%x", conn_id, event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "rw_t1t_conn_cback: conn_id=%i, evt=0x%x", conn_id, event);
/* Only handle static conn_id */
if (conn_id != NFC_RF_CONN_ID) {
- RW_TRACE_WARNING1("rw_t1t_conn_cback - Not static connection id: =%i",
- conn_id);
+ LOG(WARNING) << StringPrintf(
+ "rw_t1t_conn_cback - Not static connection id: =%i", conn_id);
return;
}
@@ -282,6 +277,7 @@
rw_main_update_trans_error_stats();
#endif /* RW_STATS_INCLUDED */
+ tRW_READ_DATA evt_data;
if (event == NFC_ERROR_CEVT)
evt_data.status = (tNFC_STATUS)(*(uint8_t*)p_data);
else if (p_data)
@@ -290,7 +286,9 @@
evt_data.status = NFC_STATUS_FAILED;
evt_data.p_data = NULL;
- (*rw_cb.p_cback)(RW_T1T_INTF_ERROR_EVT, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*rw_cb.p_cback)(RW_T1T_INTF_ERROR_EVT, &rw_data);
break;
}
nfc_stop_quick_timer(&p_t1t->timer);
@@ -355,8 +353,9 @@
rw_main_update_tx_stats(p_data->len, false);
#endif /* RW_STATS_INCLUDED */
- RW_TRACE_EVENT2("RW SENT [%s]:0x%x CMD", t1t_info_to_str(p_cmd_rsp_info),
- p_cmd_rsp_info->opcode);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "RW SENT [%s]:0x%x CMD", t1t_info_to_str(p_cmd_rsp_info),
+ p_cmd_rsp_info->opcode);
status = NFC_SendData(NFC_RF_CONN_ID, p_data);
if (status == NFC_STATUS_OK) {
nfc_start_quick_timer(
@@ -419,8 +418,9 @@
rw_main_update_tx_stats(p_data->len, false);
#endif /* RW_STATS_INCLUDED */
- RW_TRACE_EVENT2("RW SENT [%s]:0x%x CMD", t1t_info_to_str(p_cmd_rsp_info),
- p_cmd_rsp_info->opcode);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "RW SENT [%s]:0x%x CMD", t1t_info_to_str(p_cmd_rsp_info),
+ p_cmd_rsp_info->opcode);
status = NFC_SendData(NFC_RF_CONN_ID, p_data);
if (status == NFC_STATUS_OK) {
@@ -465,13 +465,11 @@
/* Extract HR and UID from response */
STREAM_TO_ARRAY(p_t1t->hr, p_rid_rsp, T1T_HR_LEN);
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("hr0:0x%x, hr1:0x%x", p_t1t->hr[0], p_t1t->hr[1]);
- RW_TRACE_DEBUG4("rw_t1t_handle_rid_rsp (): UID0-3=%02x%02x%02x%02x",
- p_rid_rsp[0], p_rid_rsp[1], p_rid_rsp[2], p_rid_rsp[3]);
-#else
- RW_TRACE_DEBUG0("rw_t1t_handle_rid_rsp ()");
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("hr0:0x%x, hr1:0x%x", p_t1t->hr[0], p_t1t->hr[1]);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("UID0-3=%02x%02x%02x%02x", p_rid_rsp[0], p_rid_rsp[1],
+ p_rid_rsp[2], p_rid_rsp[3]);
/* Fetch UID0-3 from RID response message */
STREAM_TO_ARRAY(p_t1t->mem, p_rid_rsp, T1T_CMD_UID_LEN);
@@ -501,7 +499,7 @@
if (p_t1t->p_cur_cmd_buf == NULL) {
p_t1t->p_cur_cmd_buf = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (p_t1t->p_cur_cmd_buf == NULL) {
- RW_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"rw_t1t_select: unable to allocate buffer for retransmission");
return status;
}
@@ -526,17 +524,12 @@
** Returns none
**
*******************************************************************************/
-void rw_t1t_process_timeout(TIMER_LIST_ENT* p_tle) {
+void rw_t1t_process_timeout(__attribute__((unused)) TIMER_LIST_ENT* p_tle) {
tRW_T1T_CB* p_t1t = &rw_cb.tcb.t1t;
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_ERROR2("T1T timeout. state=%s command (opcode)=0x%02x ",
- rw_t1t_get_state_name(p_t1t->state),
- (rw_cb.tcb.t1t.p_cmd_rsp_info)->opcode);
-#else
- RW_TRACE_ERROR2("T1T timeout. state=0x%02x command=0x%02x ", p_t1t->state,
- (rw_cb.tcb.t1t.p_cmd_rsp_info)->opcode);
-#endif
+ LOG(ERROR) << StringPrintf("T1T timeout. state=%s command (opcode)=0x%02x ",
+ rw_t1t_get_state_name(p_t1t->state).c_str(),
+ (rw_cb.tcb.t1t.p_cmd_rsp_info)->opcode);
if (p_t1t->state == RW_T1T_STATE_CHECK_PRESENCE) {
/* Tag has moved from range */
@@ -575,30 +568,28 @@
**
*******************************************************************************/
static void rw_t1t_process_error(void) {
- tRW_READ_DATA evt_data;
tRW_EVENT rw_event;
NFC_HDR* p_cmd_buf;
tRW_T1T_CB* p_t1t = &rw_cb.tcb.t1t;
tT1T_CMD_RSP_INFO* p_cmd_rsp_info =
(tT1T_CMD_RSP_INFO*)rw_cb.tcb.t1t.p_cmd_rsp_info;
- tRW_DETECT_NDEF_DATA ndef_data;
- RW_TRACE_DEBUG1("rw_t1t_process_error () State: %u", p_t1t->state);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("State: %u", p_t1t->state);
/* Retry sending command if retry-count < max */
if (rw_cb.cur_retry < RW_MAX_RETRIES) {
/* retry sending the command */
rw_cb.cur_retry++;
- RW_TRACE_DEBUG2("T1T retransmission attempt %i of %i", rw_cb.cur_retry,
- RW_MAX_RETRIES);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "T1T retransmission attempt %i of %i", rw_cb.cur_retry, RW_MAX_RETRIES);
/* allocate a new buffer for message */
p_cmd_buf = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (p_cmd_buf != NULL) {
- memcpy(p_cmd_buf, p_t1t->p_cur_cmd_buf,
- sizeof(NFC_HDR) + p_t1t->p_cur_cmd_buf->offset +
- p_t1t->p_cur_cmd_buf->len);
+ memcpy(p_cmd_buf, p_t1t->p_cur_cmd_buf, sizeof(NFC_HDR) +
+ p_t1t->p_cur_cmd_buf->offset +
+ p_t1t->p_cur_cmd_buf->len);
#if (RW_STATS_INCLUDED == TRUE)
/* Update stats */
@@ -617,8 +608,8 @@
} else {
/* we might get response later to all or some of the retrasnmission
* of the current command, update previous command response information */
- RW_TRACE_DEBUG1("T1T maximum retransmission attempts reached (%i)",
- RW_MAX_RETRIES);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "T1T maximum retransmission attempts reached (%i)", RW_MAX_RETRIES);
p_t1t->prev_cmd_rsp_info.addr = ((p_cmd_rsp_info->opcode != T1T_CMD_RALL) &&
(p_cmd_rsp_info->opcode != T1T_CMD_RID))
? p_t1t->addr
@@ -636,17 +627,23 @@
rw_event = rw_t1t_info_to_event(p_cmd_rsp_info);
if (p_t1t->state != RW_T1T_STATE_NOT_ACTIVATED) rw_t1t_handle_op_complete();
- evt_data.status = NFC_STATUS_TIMEOUT;
if (rw_event == RW_T2T_NDEF_DETECT_EVT) {
- ndef_data.status = evt_data.status;
+ tRW_DETECT_NDEF_DATA ndef_data;
+ ndef_data.status = NFC_STATUS_TIMEOUT;
ndef_data.protocol = NFC_PROTOCOL_T1T;
ndef_data.flags = RW_NDEF_FL_UNKNOWN;
ndef_data.max_size = 0;
ndef_data.cur_size = 0;
- (*rw_cb.p_cback)(rw_event, (tRW_DATA*)&ndef_data);
+ tRW_DATA rw_data;
+ rw_data.ndef = ndef_data;
+ (*rw_cb.p_cback)(rw_event, &rw_data);
} else {
+ tRW_READ_DATA evt_data;
+ evt_data.status = NFC_STATUS_TIMEOUT;
evt_data.p_data = NULL;
- (*rw_cb.p_cback)(rw_event, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*rw_cb.p_cback)(rw_event, &rw_data);
}
}
@@ -660,13 +657,13 @@
**
*****************************************************************************/
void rw_t1t_handle_presence_check_rsp(tNFC_STATUS status) {
- tRW_READ_DATA evt_data;
+ tRW_DATA rw_data;
/* Notify, Tag is present or not */
- evt_data.status = status;
+ rw_data.data.status = status;
rw_t1t_handle_op_complete();
- (*(rw_cb.p_cback))(RW_T1T_PRESENCE_CHECK_EVT, (tRW_DATA*)&evt_data);
+ (*(rw_cb.p_cback))(RW_T1T_PRESENCE_CHECK_EVT, &rw_data);
}
/*****************************************************************************
@@ -713,7 +710,7 @@
tRW_DATA evt_data;
tRW_CB* p_rw_cb = &rw_cb;
- RW_TRACE_API0("RW_T1tPresenceCheck");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* If RW_SelectTagType was not called (no conn_callback) return failure */
if (!p_rw_cb->p_cback) {
@@ -756,10 +753,10 @@
tRW_T1T_CB* p_t1t = &rw_cb.tcb.t1t;
tNFC_STATUS status = NFC_STATUS_FAILED;
- RW_TRACE_API0("RW_T1tRid");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tRid - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tRid - Busy - State: %u", p_t1t->state);
return (NFC_STATUS_BUSY);
}
@@ -785,10 +782,11 @@
tRW_T1T_CB* p_t1t = &rw_cb.tcb.t1t;
tNFC_STATUS status = NFC_STATUS_FAILED;
- RW_TRACE_API0("RW_T1tReadAll");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tReadAll - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tReadAll - Busy - State: %u",
+ p_t1t->state);
return (NFC_STATUS_BUSY);
}
@@ -816,7 +814,7 @@
uint8_t addr;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tRead - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tRead - Busy - State: %u", p_t1t->state);
return (NFC_STATUS_BUSY);
}
@@ -845,22 +843,23 @@
uint8_t addr;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tWriteErase - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tWriteErase - Busy - State: %u",
+ p_t1t->state);
return (NFC_STATUS_BUSY);
}
if ((p_t1t->tag_attribute == RW_T1_TAG_ATTRB_READ_ONLY) &&
(block != T1T_CC_BLOCK) && (byte != T1T_CC_RWA_OFFSET)) {
- RW_TRACE_ERROR0("RW_T1tWriteErase - Tag is in Read only state");
+ LOG(ERROR) << StringPrintf("RW_T1tWriteErase - Tag is in Read only state");
return (NFC_STATUS_REFUSED);
}
if ((block >= T1T_STATIC_BLOCKS) || (byte >= T1T_BLOCK_SIZE)) {
- RW_TRACE_ERROR2("RW_T1tWriteErase - Invalid Block/byte: %u / %u", block,
- byte);
+ LOG(ERROR) << StringPrintf("RW_T1tWriteErase - Invalid Block/byte: %u / %u",
+ block, byte);
return (NFC_STATUS_REFUSED);
}
if ((block == T1T_UID_BLOCK) || (block == T1T_RES_BLOCK)) {
- RW_TRACE_WARNING1("RW_T1tWriteErase - Cannot write to Locked block: %u",
- block);
+ LOG(WARNING) << StringPrintf(
+ "RW_T1tWriteErase - Cannot write to Locked block: %u", block);
return (NFC_STATUS_REFUSED);
}
/* send WRITE-E command */
@@ -892,22 +891,23 @@
uint8_t addr;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tWriteNoErase - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tWriteNoErase - Busy - State: %u",
+ p_t1t->state);
return (NFC_STATUS_BUSY);
}
if ((p_t1t->tag_attribute == RW_T1_TAG_ATTRB_READ_ONLY) &&
(block != T1T_CC_BLOCK) && (byte != T1T_CC_RWA_OFFSET)) {
- RW_TRACE_ERROR0("RW_T1tWriteErase - Tag is in Read only state");
+ LOG(ERROR) << StringPrintf("RW_T1tWriteErase - Tag is in Read only state");
return (NFC_STATUS_REFUSED);
}
if ((block >= T1T_STATIC_BLOCKS) || (byte >= T1T_BLOCK_SIZE)) {
- RW_TRACE_ERROR2("RW_T1tWriteErase - Invalid Block/byte: %u / %u", block,
- byte);
+ LOG(ERROR) << StringPrintf("RW_T1tWriteErase - Invalid Block/byte: %u / %u",
+ block, byte);
return (NFC_STATUS_REFUSED);
}
if ((block == T1T_UID_BLOCK) || (block == T1T_RES_BLOCK)) {
- RW_TRACE_WARNING1("RW_T1tWriteNoErase - Cannot write to Locked block: %u",
- block);
+ LOG(WARNING) << StringPrintf(
+ "RW_T1tWriteNoErase - Cannot write to Locked block: %u", block);
return (NFC_STATUS_REFUSED);
}
/* send WRITE-NE command */
@@ -938,11 +938,12 @@
uint8_t adds;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tReadSeg - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tReadSeg - Busy - State: %u",
+ p_t1t->state);
return (NFC_STATUS_BUSY);
}
if (segment >= T1T_MAX_SEGMENTS) {
- RW_TRACE_ERROR1("RW_T1tReadSeg - Invalid Segment: %u", segment);
+ LOG(ERROR) << StringPrintf("RW_T1tReadSeg - Invalid Segment: %u", segment);
return (NFC_STATUS_REFUSED);
}
if (rw_cb.tcb.t1t.hr[0] != T1T_STATIC_HR0) {
@@ -970,7 +971,8 @@
tRW_T1T_CB* p_t1t = &rw_cb.tcb.t1t;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tRead8 - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tRead8 - Busy - State: %u",
+ p_t1t->state);
return (NFC_STATUS_BUSY);
}
@@ -1000,19 +1002,20 @@
tNFC_STATUS status = NFC_STATUS_FAILED;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tWriteErase8 - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tWriteErase8 - Busy - State: %u",
+ p_t1t->state);
return (NFC_STATUS_BUSY);
}
if ((p_t1t->tag_attribute == RW_T1_TAG_ATTRB_READ_ONLY) &&
(block != T1T_CC_BLOCK)) {
- RW_TRACE_ERROR0("RW_T1tWriteErase8 - Tag is in Read only state");
+ LOG(ERROR) << StringPrintf("RW_T1tWriteErase8 - Tag is in Read only state");
return (NFC_STATUS_REFUSED);
}
if ((block == T1T_UID_BLOCK) || (block == T1T_RES_BLOCK)) {
- RW_TRACE_WARNING1("RW_T1tWriteErase8 - Cannot write to Locked block: %u",
- block);
+ LOG(WARNING) << StringPrintf(
+ "RW_T1tWriteErase8 - Cannot write to Locked block: %u", block);
return (NFC_STATUS_REFUSED);
}
@@ -1046,19 +1049,21 @@
tRW_T1T_CB* p_t1t = &rw_cb.tcb.t1t;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tWriteNoErase8 - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tWriteNoErase8 - Busy - State: %u",
+ p_t1t->state);
return (NFC_STATUS_BUSY);
}
if ((p_t1t->tag_attribute == RW_T1_TAG_ATTRB_READ_ONLY) &&
(block != T1T_CC_BLOCK)) {
- RW_TRACE_ERROR0("RW_T1tWriteNoErase8 - Tag is in Read only state");
+ LOG(ERROR) << StringPrintf(
+ "RW_T1tWriteNoErase8 - Tag is in Read only state");
return (NFC_STATUS_REFUSED);
}
if ((block == T1T_UID_BLOCK) || (block == T1T_RES_BLOCK)) {
- RW_TRACE_WARNING1("RW_T1tWriteNoErase8 - Cannot write to Locked block: %u",
- block);
+ LOG(WARNING) << StringPrintf(
+ "RW_T1tWriteNoErase8 - Cannot write to Locked block: %u", block);
return (NFC_STATUS_REFUSED);
}
@@ -1077,7 +1082,6 @@
return status;
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function rw_t1t_get_state_name
@@ -1089,31 +1093,29 @@
** Returns pointer to the name
**
*******************************************************************************/
-static char* rw_t1t_get_state_name(uint8_t state) {
+static std::string rw_t1t_get_state_name(uint8_t state) {
switch (state) {
case RW_T1T_STATE_IDLE:
- return ("IDLE");
+ return "IDLE";
case RW_T1T_STATE_NOT_ACTIVATED:
- return ("NOT_ACTIVATED");
+ return "NOT_ACTIVATED";
case RW_T1T_STATE_READ:
- return ("APP_READ");
+ return "APP_READ";
case RW_T1T_STATE_WRITE:
- return ("APP_WRITE");
+ return "APP_WRITE";
case RW_T1T_STATE_TLV_DETECT:
- return ("TLV_DETECTION");
+ return "TLV_DETECTION";
case RW_T1T_STATE_READ_NDEF:
- return ("READING_NDEF");
+ return "READING_NDEF";
case RW_T1T_STATE_WRITE_NDEF:
- return ("WRITING_NDEF");
+ return "WRITING_NDEF";
case RW_T1T_STATE_SET_TAG_RO:
- return ("SET_TAG_RO");
+ return "SET_TAG_RO";
case RW_T1T_STATE_CHECK_PRESENCE:
- return ("CHECK_PRESENCE");
+ return "CHECK_PRESENCE";
case RW_T1T_STATE_FORMAT_TAG:
- return ("FORMAT_TAG");
+ return "FORMAT_TAG";
default:
- return ("???? UNKNOWN STATE");
+ return "???? UNKNOWN STATE";
}
}
-
-#endif /* (BT_TRACE_VERBOSE == TRUE) */
diff --git a/src/nfc/tags/rw_t1t_ndef.c b/src/nfc/tags/rw_t1t_ndef.cc
similarity index 95%
rename from src/nfc/tags/rw_t1t_ndef.c
rename to src/nfc/tags/rw_t1t_ndef.cc
index 915dade..9568327 100644
--- a/src/nfc/tags/rw_t1t_ndef.c
+++ b/src/nfc/tags/rw_t1t_ndef.cc
@@ -22,16 +22,22 @@
* Reader/Writer mode.
*
******************************************************************************/
-#include <string.h>
+#include <string>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfc_target.h"
-#include "gki.h"
#include "nci_hmsgs.h"
#include "nfc_api.h"
-#include "nfc_int.h"
#include "rw_api.h"
#include "rw_int.h"
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
#if (RW_NDEF_INCLUDED == TRUE)
/* Local Functions */
@@ -577,7 +583,6 @@
tRW_DETECT_NDEF_DATA ndef_data;
tRW_DETECT_TLV_DATA tlv_data;
uint8_t count;
- tRW_READ_DATA evt_data;
*p_notify = false;
/* Handle the response based on the current state */
@@ -589,10 +594,11 @@
case RW_T1T_STATE_READ_NDEF:
status = rw_t1t_handle_ndef_rall_rsp();
if (status != NFC_STATUS_CONTINUE) {
- evt_data.status = status;
- evt_data.p_data = NULL;
+ tRW_DATA rw_data;
+ rw_data.data.status = status;
+ rw_data.data.p_data = NULL;
rw_t1t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T1T_NDEF_READ_EVT, (tRW_DATA*)&evt_data);
+ (*rw_cb.p_cback)(RW_T1T_NDEF_READ_EVT, &rw_data);
}
break;
@@ -608,7 +614,9 @@
tlv_data.num_bytes = p_t1t->num_lockbytes;
tlv_data.status = status;
rw_t1t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T1T_TLV_DETECT_EVT, (tRW_DATA*)&tlv_data);
+ tRW_DATA rw_data;
+ rw_data.tlv = tlv_data;
+ (*rw_cb.p_cback)(RW_T1T_TLV_DETECT_EVT, &rw_data);
} else if (p_t1t->tlv_detect == TAG_NDEF_TLV) {
ndef_data.protocol = NFC_PROTOCOL_T1T;
ndef_data.flags = rw_t1t_get_ndef_flags();
@@ -628,7 +636,9 @@
}
ndef_data.status = status;
rw_t1t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T1T_NDEF_DETECT_EVT, (tRW_DATA*)&ndef_data);
+ tRW_DATA rw_data;
+ rw_data.ndef = ndef_data;
+ (*rw_cb.p_cback)(RW_T1T_NDEF_DETECT_EVT, &rw_data);
}
}
break;
@@ -646,7 +656,9 @@
}
rw_t1t_handle_op_complete();
/* Send response to upper layer */
- (*rw_cb.p_cback)(RW_T1T_TLV_DETECT_EVT, (tRW_DATA*)&tlv_data);
+ tRW_DATA rw_data;
+ rw_data.tlv = tlv_data;
+ (*rw_cb.p_cback)(RW_T1T_TLV_DETECT_EVT, &rw_data);
} else if (p_t1t->tlv_detect == TAG_LOCK_CTRL_TLV) {
tlv_data.status = rw_t1t_handle_tlv_detect_rsp(p_t1t->mem);
tlv_data.protocol = NFC_PROTOCOL_T1T;
@@ -656,7 +668,9 @@
rw_t1t_handle_op_complete();
/* Send Negative response to upper layer */
- (*rw_cb.p_cback)(RW_T1T_TLV_DETECT_EVT, (tRW_DATA*)&tlv_data);
+ tRW_DATA rw_data;
+ rw_data.tlv = tlv_data;
+ (*rw_cb.p_cback)(RW_T1T_TLV_DETECT_EVT, &rw_data);
} else {
rw_t1t_extract_lock_bytes(p_data);
status = rw_t1t_read_locks();
@@ -665,7 +679,9 @@
tlv_data.status = status;
rw_t1t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T1T_TLV_DETECT_EVT, (tRW_DATA*)&tlv_data);
+ tRW_DATA rw_data;
+ rw_data.tlv = tlv_data;
+ (*rw_cb.p_cback)(RW_T1T_TLV_DETECT_EVT, &rw_data);
}
}
} else if (p_t1t->tlv_detect == TAG_NDEF_TLV) {
@@ -688,7 +704,9 @@
/* Send Negative response to upper layer */
rw_t1t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T1T_NDEF_DETECT_EVT, (tRW_DATA*)&ndef_data);
+ tRW_DATA rw_data;
+ rw_data.ndef = ndef_data;
+ (*rw_cb.p_cback)(RW_T1T_NDEF_DETECT_EVT, &rw_data);
} else {
ndef_data.flags |= RW_NDEF_FL_FORMATED;
rw_t1t_extract_lock_bytes(p_data);
@@ -709,8 +727,9 @@
ndef_data.status = status;
rw_t1t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T1T_NDEF_DETECT_EVT,
- (tRW_DATA*)&ndef_data);
+ tRW_DATA rw_data;
+ rw_data.ndef = ndef_data;
+ (*rw_cb.p_cback)(RW_T1T_NDEF_DETECT_EVT, &rw_data);
}
}
} else {
@@ -728,7 +747,9 @@
}
rw_t1t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T1T_NDEF_DETECT_EVT, (tRW_DATA*)&ndef_data);
+ tRW_DATA rw_data;
+ rw_data.ndef = ndef_data;
+ (*rw_cb.p_cback)(RW_T1T_NDEF_DETECT_EVT, &rw_data);
}
}
break;
@@ -798,7 +819,7 @@
p_data +=
T1T_UID_LEN + T1T_RES_BYTE_LEN; /* skip Block 0, UID and Reserved byte */
- RW_TRACE_DEBUG0("rw_t1t_handle_rall_rsp ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
rw_t1t_update_tag_state();
rw_t1t_update_attributes();
@@ -1023,7 +1044,7 @@
p_t1t->lockbyte[p_t1t->num_lockbytes].b_lock_read = false;
p_t1t->num_lockbytes++;
} else
- RW_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"T1T Buffer overflow error. Max supported lock "
"bytes=0x%02X",
RW_T1T_MAX_LOCK_BYTES);
@@ -1032,7 +1053,7 @@
p_t1t->num_lock_tlvs++;
rw_t1t_update_attributes();
} else
- RW_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"T1T Buffer overflow error. Max supported lock "
"tlvs=0x%02X",
RW_T1T_MAX_LOCK_TLVS);
@@ -1053,7 +1074,7 @@
tlv_value[2 - bytes_count] = p_readbytes[offset];
if (bytes_count == 0) {
if (p_t1t->num_mem_tlvs >= RW_T1T_MAX_MEM_TLVS) {
- RW_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"rw_t1t_handle_tlv_detect_rsp - Maximum buffer allocated "
"for Memory tlv has reached");
failed = true;
@@ -1171,8 +1192,9 @@
}
}
} else {
- RW_TRACE_ERROR1("RW_T1tReadNDef - Invalid NDEF len: %u or NDEF corrupted",
- p_t1t->ndef_msg_len);
+ LOG(ERROR) << StringPrintf(
+ "RW_T1tReadNDef - Invalid NDEF len: %u or NDEF corrupted",
+ p_t1t->ndef_msg_len);
status = NFC_STATUS_FAILED;
}
} else {
@@ -2125,13 +2147,14 @@
uint8_t* p;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tFormatNDef - Tag not initialized/ Busy! State: %u",
- p_t1t->state);
+ LOG(WARNING) << StringPrintf(
+ "RW_T1tFormatNDef - Tag not initialized/ Busy! State: %u",
+ p_t1t->state);
return (NFC_STATUS_FAILED);
}
if ((p_t1t->hr[0] & 0xF0) != T1T_NDEF_SUPPORTED) {
- RW_TRACE_WARNING1(
+ LOG(WARNING) << StringPrintf(
"RW_T1tFormatNDef - Cannot format tag as NDEF not supported. HR0: %u",
p_t1t->hr[0]);
return (NFC_STATUS_REJECTED);
@@ -2139,8 +2162,9 @@
p_ret = t1t_tag_init_data(p_t1t->hr[0]);
if (p_ret == NULL) {
- RW_TRACE_WARNING2("RW_T1tFormatNDef - Invalid HR - HR0: %u, HR1: %u",
- p_t1t->hr[0], p_t1t->hr[1]);
+ LOG(WARNING) << StringPrintf(
+ "RW_T1tFormatNDef - Invalid HR - HR0: %u, HR1: %u", p_t1t->hr[0],
+ p_t1t->hr[1]);
return (NFC_STATUS_REJECTED);
}
@@ -2220,14 +2244,16 @@
uint8_t adds;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tLocateTlv - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tLocateTlv - Busy - State: %u",
+ p_t1t->state);
return (NFC_STATUS_FAILED);
}
p_t1t->tlv_detect = tlv_type;
if ((p_t1t->tlv_detect == TAG_NDEF_TLV) &&
(((p_t1t->hr[0]) & 0xF0) != T1T_NDEF_SUPPORTED)) {
- RW_TRACE_ERROR0("RW_T1tLocateTlv - Error: NDEF not supported by the tag");
+ LOG(ERROR) << StringPrintf(
+ "RW_T1tLocateTlv - Error: NDEF not supported by the tag");
return (NFC_STATUS_REFUSED);
}
@@ -2305,18 +2331,20 @@
t1t_cmd_to_rsp_info(T1T_CMD_RSEG);
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tReadNDef - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tReadNDef - Busy - State: %u",
+ p_t1t->state);
return (NFC_STATUS_FAILED);
}
/* Check HR0 if NDEF supported by the tag */
if (((p_t1t->hr[0]) & 0xF0) != T1T_NDEF_SUPPORTED) {
- RW_TRACE_ERROR0("RW_T1tReadNDef - Error: NDEF not supported by the tag");
+ LOG(ERROR) << StringPrintf(
+ "RW_T1tReadNDef - Error: NDEF not supported by the tag");
return (NFC_STATUS_REFUSED);
}
if (p_t1t->tag_attribute == RW_T1_TAG_ATTRB_INITIALIZED_NDEF) {
- RW_TRACE_WARNING1(
+ LOG(WARNING) << StringPrintf(
"RW_T1tReadNDef - NDEF Message length is zero, NDEF Length : %u ",
p_t1t->ndef_msg_len);
return (NFC_STATUS_NOT_INITIALIZED);
@@ -2324,14 +2352,14 @@
if ((p_t1t->tag_attribute != RW_T1_TAG_ATTRB_READ_WRITE) &&
(p_t1t->tag_attribute != RW_T1_TAG_ATTRB_READ_ONLY)) {
- RW_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"RW_T1tReadNDef - Error: NDEF detection not performed yet/ Tag is in "
"Initialized state");
return (NFC_STATUS_FAILED);
}
if (buf_len < p_t1t->ndef_msg_len) {
- RW_TRACE_WARNING2(
+ LOG(WARNING) << StringPrintf(
"RW_T1tReadNDef - buffer size: %u less than NDEF msg sise: %u",
buf_len, p_t1t->ndef_msg_len);
return (NFC_STATUS_FAILED);
@@ -2394,24 +2422,26 @@
uint16_t init_ndef_msg_offset;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tWriteNDef - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tWriteNDef - Busy - State: %u",
+ p_t1t->state);
return (NFC_STATUS_FAILED);
}
/* Check HR0 if NDEF supported by the tag */
if (((p_t1t->hr[0]) & 0xF0) != T1T_NDEF_SUPPORTED) {
- RW_TRACE_ERROR0("RW_T1tWriteNDef - Error: NDEF not supported by the tag");
+ LOG(ERROR) << StringPrintf(
+ "RW_T1tWriteNDef - Error: NDEF not supported by the tag");
return (NFC_STATUS_REFUSED);
}
if ((p_t1t->tag_attribute != RW_T1_TAG_ATTRB_READ_WRITE) &&
(p_t1t->tag_attribute != RW_T1_TAG_ATTRB_INITIALIZED_NDEF)) {
- RW_TRACE_ERROR0("RW_T1tWriteNDef - Tag cannot update NDEF");
+ LOG(ERROR) << StringPrintf("RW_T1tWriteNDef - Tag cannot update NDEF");
return (NFC_STATUS_REFUSED);
}
if (msg_len > p_t1t->max_ndef_msg_len) {
- RW_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"RW_T1tWriteNDef - Cannot write NDEF of size greater than %u bytes",
p_t1t->max_ndef_msg_len);
return (NFC_STATUS_REFUSED);
@@ -2499,7 +2529,8 @@
uint8_t num_locks;
if (p_t1t->state != RW_T1T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T1tSetTagReadOnly - Busy - State: %u", p_t1t->state);
+ LOG(WARNING) << StringPrintf("RW_T1tSetTagReadOnly - Busy - State: %u",
+ p_t1t->state);
return (NFC_STATUS_BUSY);
}
@@ -2530,47 +2561,4 @@
return status;
}
-#if (BT_TRACE_VERBOSE == TRUE)
-/*******************************************************************************
-**
-** Function rw_t1t_get_sub_state_name
-**
-** Description This function returns the sub_state name.
-**
-** NOTE conditionally compiled to save memory.
-**
-** Returns pointer to the name
-**
-*******************************************************************************/
-static char* rw_t1t_get_sub_state_name(uint8_t sub_state) {
- switch (sub_state) {
- case RW_T1T_SUBSTATE_NONE:
- return ("NONE");
- case RW_T1T_SUBSTATE_WAIT_READ_TLV_VALUE:
- return ("EXTRACT_TLV_VALUE");
- case RW_T1T_SUBSTATE_WAIT_READ_LOCKS:
- return ("READING_LOCKS");
- case RW_T1T_SUBSTATE_WAIT_READ_NDEF_BLOCK:
- return ("READ_NDEF_FINAL_BLOCK");
- case RW_T1T_SUBSTATE_WAIT_INVALIDATE_NDEF:
- return ("INVALIDATING_NDEF");
- case RW_T1T_SUBSTATE_WAIT_NDEF_WRITE:
- return ("WRITE_NDEF_TLV_MESSAGE");
- case RW_T1T_SUBSTATE_WAIT_NDEF_UPDATED:
- return ("WAITING_RSP_FOR_LAST_NDEF_WRITE");
- case RW_T1T_SUBSTATE_WAIT_VALIDATE_NDEF:
- return ("VALIDATING_NDEF");
- case RW_T1T_SUBSTATE_WAIT_SET_CC_RWA_RO:
- return ("SET_RWA_RO");
- case RW_T1T_SUBSTATE_WAIT_SET_ST_LOCK_BITS:
- return ("SET_STATIC_LOCK_BITS");
- case RW_T1T_SUBSTATE_WAIT_SET_DYN_LOCK_BITS:
- return ("SET_DYNAMIC_LOCK_BITS");
-
- default:
- return ("???? UNKNOWN SUBSTATE");
- }
-}
-#endif /* (BT_TRACE_VERBOSE == TRUE) */
-
#endif /* (RW_NDEF_INCLUDED == TRUE) */
diff --git a/src/nfc/tags/rw_t2t.c b/src/nfc/tags/rw_t2t.cc
similarity index 83%
rename from src/nfc/tags/rw_t2t.c
rename to src/nfc/tags/rw_t2t.cc
index c215340..a05c942 100644
--- a/src/nfc/tags/rw_t2t.c
+++ b/src/nfc/tags/rw_t2t.cc
@@ -22,10 +22,14 @@
* mode.
*
******************************************************************************/
-#include <string.h>
-#include "bt_types.h"
+#include <string>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
#include "nfc_target.h"
+#include "bt_types.h"
#include "gki.h"
#include "nci_hmsgs.h"
#include "nfc_api.h"
@@ -33,6 +37,10 @@
#include "rw_api.h"
#include "rw_int.h"
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
/* Static local functions */
static void rw_t2t_proc_data(uint8_t conn_id, tNFC_DATA_CEVT* p_data);
static tNFC_STATUS rw_t2t_send_cmd(uint8_t opcode, uint8_t* p_dat);
@@ -41,10 +49,8 @@
static void rw_t2t_handle_presence_check_rsp(tNFC_STATUS status);
static void rw_t2t_resume_op(void);
-#if (BT_TRACE_VERBOSE == TRUE)
-static char* rw_t2t_get_state_name(uint8_t state);
-static char* rw_t2t_get_substate_name(uint8_t substate);
-#endif
+static std::string rw_t2t_get_state_name(uint8_t state);
+static std::string rw_t2t_get_substate_name(uint8_t substate);
/*******************************************************************************
**
@@ -62,27 +68,21 @@
bool b_notify = true;
bool b_release = true;
uint8_t* p;
- tRW_READ_DATA evt_data = {
- 0,
- };
+ tRW_READ_DATA evt_data = {};
tT2T_CMD_RSP_INFO* p_cmd_rsp_info =
(tT2T_CMD_RSP_INFO*)rw_cb.tcb.t2t.p_cmd_rsp_info;
tRW_DETECT_NDEF_DATA ndef_data;
-#if (BT_TRACE_VERBOSE == TRUE)
uint8_t begin_state = p_t2t->state;
-#endif
if ((p_t2t->state == RW_T2T_STATE_IDLE) || (p_cmd_rsp_info == NULL)) {
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("RW T2T Raw Frame: Len [0x%X] Status [%s]", p_pkt->len,
- NFC_GetStatusName(p_data->status));
-#else
- RW_TRACE_DEBUG2("RW T2T Raw Frame: Len [0x%X] Status [0x%X]", p_pkt->len,
- p_data->status);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW T2T Raw Frame: Len [0x%X] Status [%s]", p_pkt->len,
+ NFC_GetStatusName(p_data->status).c_str());
evt_data.status = p_data->status;
evt_data.p_data = p_pkt;
- (*rw_cb.p_cback)(RW_T2T_RAW_FRAME_EVT, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*rw_cb.p_cback)(RW_T2T_RAW_FRAME_EVT, &rw_data);
return;
}
#if (RW_STATS_INCLUDED == TRUE)
@@ -92,20 +92,16 @@
/* Stop timer as response is received */
nfc_stop_quick_timer(&p_t2t->t2_timer);
- RW_TRACE_EVENT2("RW RECV [%s]:0x%x RSP", t2t_info_to_str(p_cmd_rsp_info),
- p_cmd_rsp_info->opcode);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW RECV [%s]:0x%x RSP", t2t_info_to_str(p_cmd_rsp_info),
+ p_cmd_rsp_info->opcode);
if (((p_pkt->len != p_cmd_rsp_info->rsp_len) &&
(p_pkt->len != p_cmd_rsp_info->nack_rsp_len) &&
(p_t2t->substate != RW_T2T_SUBSTATE_WAIT_SELECT_SECTOR)) ||
(p_t2t->state == RW_T2T_STATE_HALT)) {
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_ERROR1("T2T Frame error. state=%s ",
- rw_t2t_get_state_name(p_t2t->state));
-#else
- RW_TRACE_ERROR1("T2T Frame error. state=0x%02X command=0x%02X ",
- p_t2t->state);
-#endif
+ LOG(ERROR) << StringPrintf("T2T Frame error. state=%s ",
+ rw_t2t_get_state_name(p_t2t->state).c_str());
if (p_t2t->state != RW_T2T_STATE_HALT) {
/* Retrasmit the last sent command if retry-count < max retry */
rw_t2t_process_frame_error();
@@ -119,7 +115,7 @@
/* Assume the data is just the response byte sequence */
p = (uint8_t*)(p_pkt + 1) + p_pkt->offset;
- RW_TRACE_EVENT4(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"rw_t2t_proc_data State: %u conn_id: %u len: %u data[0]: 0x%02x",
p_t2t->state, conn_id, p_pkt->len, *p);
@@ -133,7 +129,7 @@
else
evt_data.status = NFC_STATUS_FAILED;
} else {
- RW_TRACE_EVENT1(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"rw_t2t_proc_data - Received NACK response(0x%x) to SEC-SELCT CMD",
(*p & 0x0f));
evt_data.status = NFC_STATUS_REJECTED;
@@ -147,8 +143,8 @@
evt_data.p_data = p_pkt;
if (p_t2t->state == RW_T2T_STATE_READ) b_release = false;
- RW_TRACE_EVENT1("rw_t2t_proc_data - Received NACK response(0x%x)",
- (*p & 0x0f));
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "rw_t2t_proc_data - Received NACK response(0x%x)", (*p & 0x0f));
if (!p_t2t->check_tag_halt) {
/* Just received first NACK. Retry just one time to find if tag went in to
@@ -210,23 +206,26 @@
ndef_data.cur_size = 0;
/* Move back to idle state */
rw_t2t_handle_op_complete();
- (*rw_cb.p_cback)(rw_event, (tRW_DATA*)&ndef_data);
+ tRW_DATA rw_data;
+ rw_data.ndef = ndef_data;
+ (*rw_cb.p_cback)(rw_event, &rw_data);
} else {
/* Move back to idle state */
rw_t2t_handle_op_complete();
- (*rw_cb.p_cback)(rw_event, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*rw_cb.p_cback)(rw_event, &rw_data);
}
}
if (b_release) GKI_freebuf(p_pkt);
-#if (BT_TRACE_VERBOSE == TRUE)
if (begin_state != p_t2t->state) {
- RW_TRACE_DEBUG2("RW T2T state changed:<%s> -> <%s>",
- rw_t2t_get_state_name(begin_state),
- rw_t2t_get_state_name(p_t2t->state));
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW T2T state changed:<%s> -> <%s>",
+ rw_t2t_get_state_name(begin_state).c_str(),
+ rw_t2t_get_state_name(p_t2t->state).c_str());
}
-#endif
}
/*******************************************************************************
@@ -243,7 +242,8 @@
tRW_T2T_CB* p_t2t = &rw_cb.tcb.t2t;
tRW_READ_DATA evt_data;
- RW_TRACE_DEBUG2("rw_t2t_conn_cback: conn_id=%i, evt=%i", conn_id, event);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("rw_t2t_conn_cback: conn_id=%i, evt=%i", conn_id, event);
/* Only handle static conn_id */
if (conn_id != NFC_RF_CONN_ID) {
return;
@@ -306,7 +306,9 @@
evt_data.status = NFC_STATUS_FAILED;
evt_data.p_data = NULL;
- (*rw_cb.p_cback)(RW_T2T_INTF_ERROR_EVT, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*rw_cb.p_cback)(RW_T2T_INTF_ERROR_EVT, &rw_data);
break;
}
nfc_stop_quick_timer(&p_t2t->t2_timer);
@@ -375,8 +377,9 @@
/* Update stats */
rw_main_update_tx_stats(p_data->len, false);
#endif
- RW_TRACE_EVENT2("RW SENT [%s]:0x%x CMD", t2t_info_to_str(p_cmd_rsp_info),
- p_cmd_rsp_info->opcode);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "RW SENT [%s]:0x%x CMD", t2t_info_to_str(p_cmd_rsp_info),
+ p_cmd_rsp_info->opcode);
status = NFC_SendData(NFC_RF_CONN_ID, p_data);
if (status == NFC_STATUS_OK) {
@@ -384,15 +387,10 @@
&p_t2t->t2_timer, NFC_TTYPE_RW_T2T_RESPONSE,
(RW_T2T_TOUT_RESP * QUICK_TIMER_TICKS_PER_SEC) / 1000);
} else {
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_ERROR2("T2T NFC Send data failed. state=%s substate=%s ",
- rw_t2t_get_state_name(p_t2t->state),
- rw_t2t_get_substate_name(p_t2t->substate));
-#else
- RW_TRACE_ERROR2(
- "T2T NFC Send data failed. state=0x%02X substate=0x%02X ",
- p_t2t->state, p_t2t->substate);
-#endif
+ LOG(ERROR) << StringPrintf(
+ "T2T NFC Send data failed. state=%s substate=%s ",
+ rw_t2t_get_state_name(p_t2t->state).c_str(),
+ rw_t2t_get_substate_name(p_t2t->substate).c_str());
}
} else {
status = NFC_STATUS_NO_BUFFERS;
@@ -410,7 +408,7 @@
** Returns none
**
*******************************************************************************/
-void rw_t2t_process_timeout(TIMER_LIST_ENT* p_tle) {
+void rw_t2t_process_timeout() {
tRW_READ_DATA evt_data;
tRW_T2T_CB* p_t2t = &rw_cb.tcb.t2t;
@@ -433,18 +431,16 @@
rw_t2t_handle_op_complete();
evt_data.status = NFC_STATUS_OK;
evt_data.p_data = NULL;
- (*rw_cb.p_cback)(RW_T2T_SELECT_CPLT_EVT, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*rw_cb.p_cback)(RW_T2T_SELECT_CPLT_EVT, &rw_data);
} else {
/* Resume operation from where we stopped before sector change */
rw_t2t_resume_op();
}
} else if (p_t2t->state != RW_T2T_STATE_IDLE) {
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_ERROR1("T2T timeout. state=%s ",
- rw_t2t_get_state_name(p_t2t->state));
-#else
- RW_TRACE_ERROR1("T2T timeout. state=0x%02X ", p_t2t->state);
-#endif
+ LOG(ERROR) << StringPrintf("T2T timeout. state=%s ",
+ rw_t2t_get_state_name(p_t2t->state).c_str());
/* Handle timeout error as no response to the command sent */
rw_t2t_process_error();
}
@@ -488,22 +484,22 @@
(tT2T_CMD_RSP_INFO*)rw_cb.tcb.t2t.p_cmd_rsp_info;
tRW_DETECT_NDEF_DATA ndef_data;
- RW_TRACE_DEBUG1("rw_t2t_process_error () State: %u", p_t2t->state);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("State: %u", p_t2t->state);
/* Retry sending command if retry-count < max */
if ((!p_t2t->check_tag_halt) && (rw_cb.cur_retry < RW_MAX_RETRIES)) {
/* retry sending the command */
rw_cb.cur_retry++;
- RW_TRACE_DEBUG2("T2T retransmission attempt %i of %i", rw_cb.cur_retry,
- RW_MAX_RETRIES);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "T2T retransmission attempt %i of %i", rw_cb.cur_retry, RW_MAX_RETRIES);
/* allocate a new buffer for message */
p_cmd_buf = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (p_cmd_buf != NULL) {
- memcpy(p_cmd_buf, p_t2t->p_cur_cmd_buf,
- sizeof(NFC_HDR) + p_t2t->p_cur_cmd_buf->offset +
- p_t2t->p_cur_cmd_buf->len);
+ memcpy(p_cmd_buf, p_t2t->p_cur_cmd_buf, sizeof(NFC_HDR) +
+ p_t2t->p_cur_cmd_buf->offset +
+ p_t2t->p_cur_cmd_buf->len);
#if (RW_STATS_INCLUDED == TRUE)
/* Update stats */
rw_main_update_tx_stats(p_cmd_buf->len, true);
@@ -519,10 +515,11 @@
}
} else {
if (p_t2t->check_tag_halt) {
- RW_TRACE_DEBUG0("T2T Went to HALT State!");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("T2T Went to HALT State!");
} else {
- RW_TRACE_DEBUG1("T2T maximum retransmission attempts reached (%i)",
- RW_MAX_RETRIES);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "T2T maximum retransmission attempts reached (%i)", RW_MAX_RETRIES);
}
}
rw_event = rw_t2t_info_to_event(p_cmd_rsp_info);
@@ -548,14 +545,18 @@
/* If not Halt move to idle state */
rw_t2t_handle_op_complete();
- (*rw_cb.p_cback)(rw_event, (tRW_DATA*)&ndef_data);
+ tRW_DATA rw_data;
+ rw_data.ndef = ndef_data;
+ (*rw_cb.p_cback)(rw_event, &rw_data);
} else {
evt_data.p_data = NULL;
/* If activated and not Halt move to idle state */
if (p_t2t->state != RW_T2T_STATE_NOT_ACTIVATED) rw_t2t_handle_op_complete();
p_t2t->substate = RW_T2T_SUBSTATE_NONE;
- (*rw_cb.p_cback)(rw_event, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*rw_cb.p_cback)(rw_event, &rw_data);
}
}
@@ -569,13 +570,13 @@
**
*****************************************************************************/
void rw_t2t_handle_presence_check_rsp(tNFC_STATUS status) {
- tRW_READ_DATA evt_data;
+ tRW_DATA rw_data;
/* Notify, Tag is present or not */
- evt_data.status = status;
+ rw_data.data.status = status;
rw_t2t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T2T_PRESENCE_CHECK_EVT, (tRW_DATA*)&evt_data);
+ (*rw_cb.p_cback)(RW_T2T_PRESENCE_CHECK_EVT, &rw_data);
}
/*******************************************************************************
@@ -607,9 +608,9 @@
/* allocate a new buffer for message */
p_cmd_buf = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (p_cmd_buf != NULL) {
- memcpy(p_cmd_buf, p_t2t->p_sec_cmd_buf,
- sizeof(NFC_HDR) + p_t2t->p_sec_cmd_buf->offset +
- p_t2t->p_sec_cmd_buf->len);
+ memcpy(p_cmd_buf, p_t2t->p_sec_cmd_buf, sizeof(NFC_HDR) +
+ p_t2t->p_sec_cmd_buf->offset +
+ p_t2t->p_sec_cmd_buf->len);
memcpy(p_t2t->p_cur_cmd_buf, p_t2t->p_sec_cmd_buf,
sizeof(NFC_HDR) + p_t2t->p_sec_cmd_buf->offset +
p_t2t->p_sec_cmd_buf->len);
@@ -629,7 +630,9 @@
evt_data.status = NFC_STATUS_FAILED;
event = rw_t2t_info_to_event(p_cmd_rsp_info);
rw_t2t_handle_op_complete();
- (*rw_cb.p_cback)(event, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*rw_cb.p_cback)(event, &rw_data);
}
}
}
@@ -652,7 +655,7 @@
p_data = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (p_data == NULL) {
- RW_TRACE_ERROR0("rw_t2t_sector_change - No buffer");
+ LOG(ERROR) << StringPrintf("rw_t2t_sector_change - No buffer");
return (NFC_STATUS_NO_BUFFERS);
}
@@ -672,12 +675,13 @@
p_t2t->p_cmd_rsp_info = NULL;
p_t2t->substate = RW_T2T_SUBSTATE_WAIT_SELECT_SECTOR;
- RW_TRACE_EVENT0("rw_t2t_sector_change Sent Second Command");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("rw_t2t_sector_change Sent Second Command");
nfc_start_quick_timer(
&p_t2t->t2_timer, NFC_TTYPE_RW_T2T_RESPONSE,
(RW_T2T_SEC_SEL_TOUT_RESP * QUICK_TIMER_TICKS_PER_SEC) / 1000);
} else {
- RW_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"rw_t2t_sector_change Send failed at rw_t2t_send_cmd, error: %u",
status);
}
@@ -735,7 +739,8 @@
status = rw_t2t_send_cmd(T2T_CMD_READ, (uint8_t*)read_cmd);
if (status == NFC_STATUS_OK) {
p_t2t->block_read = block;
- RW_TRACE_EVENT1("rw_t2t_read Sent Command for Block: %u", block);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("rw_t2t_read Sent Command for Block: %u", block);
}
return status;
@@ -792,7 +797,8 @@
/* Send Write command as sector change is not needed */
status = rw_t2t_send_cmd(T2T_CMD_WRITE, write_cmd);
if (status == NFC_STATUS_OK) {
- RW_TRACE_EVENT1("rw_t2t_write Sent Command for Block: %u", block);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("rw_t2t_write Sent Command for Block: %u", block);
}
return status;
@@ -817,7 +823,7 @@
if (p_t2t->p_cur_cmd_buf == NULL) {
p_t2t->p_cur_cmd_buf = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (p_t2t->p_cur_cmd_buf == NULL) {
- RW_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"rw_t2t_select: unable to allocate buffer for retransmission");
return (NFC_STATUS_FAILED);
}
@@ -826,7 +832,7 @@
if (p_t2t->p_sec_cmd_buf == NULL) {
p_t2t->p_sec_cmd_buf = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (p_t2t->p_sec_cmd_buf == NULL) {
- RW_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"rw_t2t_select: unable to allocate buffer used during sector change");
return (NFC_STATUS_FAILED);
}
@@ -883,7 +889,7 @@
tRW_CB* p_rw_cb = &rw_cb;
uint8_t sector_blk = 0; /* block 0 of current sector */
- RW_TRACE_API0("RW_T2tPresenceCheck");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* If RW_SelectTagType was not called (no conn_callback) return failure */
if (!p_rw_cb->p_cback) {
@@ -925,15 +931,16 @@
tNFC_STATUS status;
if (p_t2t->state != RW_T2T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: Type 2 tag not activated or Busy - State: %u",
- p_t2t->state);
+ LOG(ERROR) << StringPrintf(
+ "Error: Type 2 tag not activated or Busy - State: %u", p_t2t->state);
return (NFC_STATUS_FAILED);
}
status = rw_t2t_read(block);
if (status == NFC_STATUS_OK) {
p_t2t->state = RW_T2T_STATE_READ;
- RW_TRACE_EVENT0("RW_T2tRead Sent Read command");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW_T2tRead Sent Read command");
}
return status;
@@ -957,8 +964,8 @@
tNFC_STATUS status;
if (p_t2t->state != RW_T2T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: Type 2 tag not activated or Busy - State: %u",
- p_t2t->state);
+ LOG(ERROR) << StringPrintf(
+ "Error: Type 2 tag not activated or Busy - State: %u", p_t2t->state);
return (NFC_STATUS_FAILED);
}
@@ -969,7 +976,8 @@
p_t2t->b_read_hdr = false;
else if (block < (T2T_FIRST_DATA_BLOCK + T2T_READ_BLOCKS))
p_t2t->b_read_data = false;
- RW_TRACE_EVENT0("RW_T2tWrite Sent Write command");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW_T2tWrite Sent Write command");
}
return status;
@@ -999,13 +1007,13 @@
uint8_t sector_byte2[1];
if (p_t2t->state != RW_T2T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: Type 2 tag not activated or Busy - State: %u",
- p_t2t->state);
+ LOG(ERROR) << StringPrintf(
+ "Error: Type 2 tag not activated or Busy - State: %u", p_t2t->state);
return (NFC_STATUS_FAILED);
}
if (sector >= T2T_MAX_SECTOR) {
- RW_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"RW_T2tSectorSelect - Invalid sector: %u, T2 Max supported sector "
"value: %u",
sector, T2T_MAX_SECTOR - 1);
@@ -1020,13 +1028,13 @@
p_t2t->select_sector = sector;
p_t2t->substate = RW_T2T_SUBSTATE_WAIT_SELECT_SECTOR_SUPPORT;
- RW_TRACE_EVENT0("RW_T2tSectorSelect Sent Sector select first command");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW_T2tSectorSelect Sent Sector select first command");
}
return status;
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function rw_t2t_get_state_name
@@ -1035,33 +1043,33 @@
**
** NOTE conditionally compiled to save memory.
**
-** Returns pointer to the name
+** Returns string
**
*******************************************************************************/
-static char* rw_t2t_get_state_name(uint8_t state) {
+static std::string rw_t2t_get_state_name(uint8_t state) {
switch (state) {
case RW_T2T_STATE_NOT_ACTIVATED:
- return ("NOT_ACTIVATED");
+ return "NOT_ACTIVATED";
case RW_T2T_STATE_IDLE:
- return ("IDLE");
+ return "IDLE";
case RW_T2T_STATE_READ:
- return ("APP_READ");
+ return "APP_READ";
case RW_T2T_STATE_WRITE:
- return ("APP_WRITE");
+ return "APP_WRITE";
case RW_T2T_STATE_SELECT_SECTOR:
- return ("SECTOR_SELECT");
+ return "SECTOR_SELECT";
case RW_T2T_STATE_DETECT_TLV:
- return ("TLV_DETECT");
+ return "TLV_DETECT";
case RW_T2T_STATE_READ_NDEF:
- return ("READ_NDEF");
+ return "READ_NDEF";
case RW_T2T_STATE_WRITE_NDEF:
- return ("WRITE_NDEF");
+ return "WRITE_NDEF";
case RW_T2T_STATE_SET_TAG_RO:
- return ("SET_TAG_RO");
+ return "SET_TAG_RO";
case RW_T2T_STATE_CHECK_PRESENCE:
- return ("CHECK_PRESENCE");
+ return "CHECK_PRESENCE";
default:
- return ("???? UNKNOWN STATE");
+ return "???? UNKNOWN STATE";
}
}
@@ -1076,51 +1084,49 @@
** Returns pointer to the name
**
*******************************************************************************/
-static char* rw_t2t_get_substate_name(uint8_t substate) {
+static std::string rw_t2t_get_substate_name(uint8_t substate) {
switch (substate) {
case RW_T2T_SUBSTATE_NONE:
- return ("RW_T2T_SUBSTATE_NONE");
+ return "RW_T2T_SUBSTATE_NONE";
case RW_T2T_SUBSTATE_WAIT_SELECT_SECTOR_SUPPORT:
- return ("RW_T2T_SUBSTATE_WAIT_SELECT_SECTOR_SUPPORT");
+ return "RW_T2T_SUBSTATE_WAIT_SELECT_SECTOR_SUPPORT";
case RW_T2T_SUBSTATE_WAIT_SELECT_SECTOR:
- return ("RW_T2T_SUBSTATE_WAIT_SELECT_SECTOR");
+ return "RW_T2T_SUBSTATE_WAIT_SELECT_SECTOR";
case RW_T2T_SUBSTATE_WAIT_READ_CC:
- return ("RW_T2T_SUBSTATE_WAIT_READ_CC");
+ return "RW_T2T_SUBSTATE_WAIT_READ_CC";
case RW_T2T_SUBSTATE_WAIT_TLV_DETECT:
- return ("RW_T2T_SUBSTATE_WAIT_TLV_DETECT");
+ return "RW_T2T_SUBSTATE_WAIT_TLV_DETECT";
case RW_T2T_SUBSTATE_WAIT_FIND_LEN_FIELD_LEN:
- return ("RW_T2T_SUBSTATE_WAIT_FIND_LEN_FIELD_LEN");
+ return "RW_T2T_SUBSTATE_WAIT_FIND_LEN_FIELD_LEN";
case RW_T2T_SUBSTATE_WAIT_READ_TLV_LEN0:
- return ("RW_T2T_SUBSTATE_WAIT_READ_TLV_LEN0");
+ return "RW_T2T_SUBSTATE_WAIT_READ_TLV_LEN0";
case RW_T2T_SUBSTATE_WAIT_READ_TLV_LEN1:
- return ("RW_T2T_SUBSTATE_WAIT_READ_TLV_LEN1");
+ return "RW_T2T_SUBSTATE_WAIT_READ_TLV_LEN1";
case RW_T2T_SUBSTATE_WAIT_READ_TLV_VALUE:
- return ("RW_T2T_SUBSTATE_WAIT_READ_TLV_VALUE");
+ return "RW_T2T_SUBSTATE_WAIT_READ_TLV_VALUE";
case RW_T2T_SUBSTATE_WAIT_READ_LOCKS:
- return ("RW_T2T_SUBSTATE_WAIT_READ_LOCKS");
+ return "RW_T2T_SUBSTATE_WAIT_READ_LOCKS";
case RW_T2T_SUBSTATE_WAIT_READ_NDEF_FIRST_BLOCK:
- return ("RW_T2T_SUBSTATE_WAIT_READ_NDEF_FIRST_BLOCK");
+ return "RW_T2T_SUBSTATE_WAIT_READ_NDEF_FIRST_BLOCK";
case RW_T2T_SUBSTATE_WAIT_READ_NDEF_LAST_BLOCK:
- return ("RW_T2T_SUBSTATE_WAIT_READ_NDEF_LAST_BLOCK");
+ return "RW_T2T_SUBSTATE_WAIT_READ_NDEF_LAST_BLOCK";
case RW_T2T_SUBSTATE_WAIT_READ_TERM_TLV_BLOCK:
- return ("RW_T2T_SUBSTATE_WAIT_READ_TERM_TLV_BLOCK");
+ return "RW_T2T_SUBSTATE_WAIT_READ_TERM_TLV_BLOCK";
case RW_T2T_SUBSTATE_WAIT_READ_NDEF_NEXT_BLOCK:
- return ("RW_T2T_SUBSTATE_WAIT_READ_NDEF_NEXT_BLOCK");
+ return "RW_T2T_SUBSTATE_WAIT_READ_NDEF_NEXT_BLOCK";
case RW_T2T_SUBSTATE_WAIT_WRITE_NDEF_NEXT_BLOCK:
- return ("RW_T2T_SUBSTATE_WAIT_WRITE_NDEF_NEXT_BLOCK");
+ return "RW_T2T_SUBSTATE_WAIT_WRITE_NDEF_NEXT_BLOCK";
case RW_T2T_SUBSTATE_WAIT_WRITE_NDEF_LAST_BLOCK:
- return ("RW_T2T_SUBSTATE_WAIT_WRITE_NDEF_LAST_BLOCK");
+ return "RW_T2T_SUBSTATE_WAIT_WRITE_NDEF_LAST_BLOCK";
case RW_T2T_SUBSTATE_WAIT_READ_NDEF_LEN_BLOCK:
- return ("RW_T2T_SUBSTATE_WAIT_READ_NDEF_LEN_BLOCK");
+ return "RW_T2T_SUBSTATE_WAIT_READ_NDEF_LEN_BLOCK";
case RW_T2T_SUBSTATE_WAIT_WRITE_NDEF_LEN_BLOCK:
- return ("RW_T2T_SUBSTATE_WAIT_WRITE_NDEF_LEN_BLOCK");
+ return "RW_T2T_SUBSTATE_WAIT_WRITE_NDEF_LEN_BLOCK";
case RW_T2T_SUBSTATE_WAIT_WRITE_NDEF_LEN_NEXT_BLOCK:
- return ("RW_T2T_SUBSTATE_WAIT_WRITE_NDEF_LEN_NEXT_BLOCK");
+ return "RW_T2T_SUBSTATE_WAIT_WRITE_NDEF_LEN_NEXT_BLOCK";
case RW_T2T_SUBSTATE_WAIT_WRITE_TERM_TLV_CMPLT:
- return ("RW_T2T_SUBSTATE_WAIT_WRITE_TERM_TLV_CMPLT");
+ return "RW_T2T_SUBSTATE_WAIT_WRITE_TERM_TLV_CMPLT";
default:
- return ("???? UNKNOWN SUBSTATE");
+ return "???? UNKNOWN SUBSTATE";
}
}
-
-#endif /* (BT_TRACE_VERBOSE == TRUE) */
diff --git a/src/nfc/tags/rw_t2t_ndef.c b/src/nfc/tags/rw_t2t_ndef.cc
similarity index 97%
rename from src/nfc/tags/rw_t2t_ndef.c
rename to src/nfc/tags/rw_t2t_ndef.cc
index def45bb..c18c685 100644
--- a/src/nfc/tags/rw_t2t_ndef.c
+++ b/src/nfc/tags/rw_t2t_ndef.cc
@@ -22,17 +22,23 @@
* Reader/Writer mode.
*
******************************************************************************/
-#include <log/log.h>
#include <string.h>
+
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+#include <log/log.h>
+
#include "nfc_target.h"
-#include "gki.h"
#include "nci_hmsgs.h"
#include "nfc_api.h"
-#include "nfc_int.h"
#include "rw_api.h"
#include "rw_int.h"
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
+
#if (RW_NDEF_INCLUDED == TRUE)
/* Local static functions */
@@ -108,7 +114,7 @@
if (p_t2t->tag_hdr[T2T_CC0_NMN_BYTE] == T2T_CC0_NMN) {
rw_t2t_handle_cc_read_rsp();
} else {
- RW_TRACE_WARNING3(
+ LOG(WARNING) << StringPrintf(
"NDEF Detection failed!, CC[0]: 0x%02x, CC[1]: 0x%02x, CC[3]: "
"0x%02x",
p_t2t->tag_hdr[T2T_CC0_NMN_BYTE],
@@ -238,15 +244,11 @@
*******************************************************************************/
static void rw_t2t_ntf_tlv_detect_complete(tNFC_STATUS status) {
tRW_T2T_CB* p_t2t = &rw_cb.tcb.t2t;
- tRW_DETECT_NDEF_DATA ndef_data = {
- 0,
- };
- tRW_DETECT_TLV_DATA tlv_data;
- tRW_T2T_DETECT evt_data;
uint8_t xx;
if (p_t2t->tlv_detect == TAG_NDEF_TLV) {
/* Notify upper layer the result of NDEF detect op */
+ tRW_DETECT_NDEF_DATA ndef_data = {};
ndef_data.status = status;
ndef_data.protocol = NFC_PROTOCOL_T2T;
ndef_data.flags = rw_t2t_get_ndef_flags();
@@ -270,14 +272,19 @@
}
rw_t2t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T2T_NDEF_DETECT_EVT, (tRW_DATA*)&ndef_data);
+ tRW_DATA rw_data;
+ rw_data.ndef = ndef_data;
+ (*rw_cb.p_cback)(RW_T2T_NDEF_DETECT_EVT, &rw_data);
} else if (p_t2t->tlv_detect == TAG_PROPRIETARY_TLV) {
+ tRW_T2T_DETECT evt_data;
evt_data.msg_len = p_t2t->prop_msg_len;
evt_data.status = status;
rw_t2t_handle_op_complete();
+ /* FIXME: Unsafe cast */
(*rw_cb.p_cback)(RW_T2T_TLV_DETECT_EVT, (tRW_DATA*)&evt_data);
} else {
/* Notify upper layer the result of Lock/Mem TLV detect op */
+ tRW_DETECT_TLV_DATA tlv_data;
tlv_data.protocol = NFC_PROTOCOL_T2T;
if (p_t2t->tlv_detect == TAG_LOCK_CTRL_TLV) {
tlv_data.num_bytes = p_t2t->num_lockbytes;
@@ -289,7 +296,9 @@
}
tlv_data.status = status;
rw_t2t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T2T_TLV_DETECT_EVT, (tRW_DATA*)&tlv_data);
+ tRW_DATA rw_data;
+ rw_data.tlv = tlv_data;
+ (*rw_cb.p_cback)(RW_T2T_TLV_DETECT_EVT, &rw_data);
}
}
@@ -588,7 +597,7 @@
if (p_t2t->bytes_count > 0) {
p_t2t->bytes_count--;
} else {
- RW_TRACE_ERROR0("Underflow p_t2t->bytes_count!");
+ LOG(ERROR) << StringPrintf("Underflow p_t2t->bytes_count!");
android_errorWriteLog(0x534e4554, "120506143");
}
if ((tlvtype == TAG_LOCK_CTRL_TLV) || (tlvtype == TAG_NDEF_TLV)) {
@@ -641,14 +650,14 @@
if (p_t2t->bytes_count > 0) {
p_t2t->bytes_count--;
} else {
- RW_TRACE_ERROR0("bytes_count underflow!");
+ LOG(ERROR) << StringPrintf("bytes_count underflow!");
android_errorWriteLog(0x534e4554, "120506143");
}
if ((tlvtype == TAG_MEM_CTRL_TLV) || (tlvtype == TAG_NDEF_TLV)) {
p_t2t->tlv_value[2 - p_t2t->bytes_count] = p_data[offset];
if (p_t2t->bytes_count == 0) {
if (p_t2t->num_mem_tlvs >= RW_T2T_MAX_MEM_TLVS) {
- RW_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"rw_t2t_handle_tlv_detect_rsp - Maximum buffer allocated "
"for Memory tlv has reached");
failed = true;
@@ -678,7 +687,7 @@
if (p_t2t->bytes_count > 0) {
p_t2t->bytes_count--;
} else {
- RW_TRACE_ERROR0("bytes_count underflow!");
+ LOG(ERROR) << StringPrintf("bytes_count underflow!");
android_errorWriteLog(0x534e4554, "120506143");
}
if (tlvtype == TAG_PROPRIETARY_TLV) {
@@ -1500,7 +1509,9 @@
evt_data.status = failed ? NFC_STATUS_FAILED : NFC_STATUS_OK;
evt_data.p_data = NULL;
rw_t2t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T2T_NDEF_READ_EVT, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*rw_cb.p_cback)(RW_T2T_NDEF_READ_EVT, &rw_data);
}
}
@@ -1666,7 +1677,9 @@
p_t2t->ndef_msg_len = p_t2t->new_ndef_msg_len;
}
rw_t2t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T2T_NDEF_WRITE_EVT, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*rw_cb.p_cback)(RW_T2T_NDEF_WRITE_EVT, &rw_data);
}
}
@@ -1711,7 +1724,6 @@
tNFC_STATUS status = NFC_STATUS_FAILED;
bool b_notify = false;
uint8_t write_block[T2T_BLOCK_SIZE];
- tRW_DATA evt;
bool b_pending = false;
uint8_t read_lock = 0;
uint8_t num_locks = 0;
@@ -1795,9 +1807,10 @@
if (status != NFC_STATUS_OK || b_notify) {
/* Notify upper layer the result of Configuring Tag as Read only */
+ tRW_DATA evt;
evt.status = status;
rw_t2t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T2T_SET_TAG_RO_EVT, (tRW_DATA*)&evt);
+ (*rw_cb.p_cback)(RW_T2T_SET_TAG_RO_EVT, &evt);
}
}
@@ -1811,7 +1824,6 @@
**
*******************************************************************************/
static void rw_t2t_handle_format_tag_rsp(uint8_t* p_data) {
- tRW_DATA evt;
uint8_t* p;
tRW_T2T_CB* p_t2t = &rw_cb.tcb.t2t;
tNFC_STATUS status = NFC_STATUS_FAILED;
@@ -1913,9 +1925,10 @@
if (status != NFC_STATUS_OK || b_notify) {
/* Notify upper layer the result of Format op */
+ tRW_DATA evt;
evt.status = status;
rw_t2t_handle_op_complete();
- (*rw_cb.p_cback)(RW_T2T_FORMAT_CPLT_EVT, (tRW_DATA*)&evt);
+ (*rw_cb.p_cback)(RW_T2T_FORMAT_CPLT_EVT, &evt);
}
}
@@ -2565,7 +2578,7 @@
p_ret = t2t_tag_init_data(p_t2t->tag_hdr[0], false, 0);
if (p_ret == NULL) {
- RW_TRACE_WARNING1(
+ LOG(WARNING) << StringPrintf(
"rw_t2t_format_tag - Unknown Manufacturer ID: %u, Cannot Format the "
"tag!",
p_t2t->tag_hdr[0]);
@@ -2575,7 +2588,7 @@
if (p_t2t->tag_hdr[T2T_CC2_TMS_BYTE] != 0) {
/* If OTP tag has valid NDEF Message, cannot format the tag */
if ((p_t2t->ndef_msg_len > 0) && (p_ret->b_otp)) {
- RW_TRACE_WARNING0(
+ LOG(WARNING) << StringPrintf(
"rw_t2t_format_tag - Cannot Format a OTP tag with NDEF Message!");
return (NFC_STATUS_FAILED);
}
@@ -2586,7 +2599,8 @@
(p_t2t->tag_hdr[T2T_CC1_VNO_BYTE] != T2T_CC1_LEGACY_VNO) &&
(p_t2t->tag_hdr[T2T_CC1_VNO_BYTE] != T2T_CC1_VNO) &&
(p_t2t->tag_hdr[T2T_CC1_VNO_BYTE] != T2T_CC1_NEW_VNO))) {
- RW_TRACE_WARNING0("rw_t2t_format_tag - Tag not blank to Format!");
+ LOG(WARNING) << StringPrintf(
+ "rw_t2t_format_tag - Tag not blank to Format!");
return (NFC_STATUS_FAILED);
} else {
tms = p_t2t->tag_hdr[T2T_CC2_TMS_BYTE];
@@ -2637,7 +2651,7 @@
/* If CC block is read and cc3 is soft locked, reject the command */
if ((p_t2t->tag_hdr[T2T_CC3_RWA_BYTE] & T2T_CC3_RWA_RO) == T2T_CC3_RWA_RO) {
- RW_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"rw_t2t_soft_lock_tag: Error: Type 2 tag is in Read only state, CC3: "
"%u",
p_t2t->tag_hdr[T2T_CC3_RWA_BYTE]);
@@ -2652,7 +2666,7 @@
if ((p_t2t->tag_hdr[T2T_CC2_TMS_BYTE] != T2T_CC2_TMS_STATIC) &&
(p_t2t->num_lockbytes == 0)) {
- RW_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"rw_t2t_soft_lock_tag: Error: Lock TLV not detected! Cannot hard "
"lock the tag");
return (NFC_STATUS_FAILED);
@@ -2700,8 +2714,9 @@
tNFC_STATUS status = NFC_STATUS_FAILED;
if (p_t2t->state != RW_T2T_STATE_IDLE) {
- RW_TRACE_WARNING1("RW_T2tFormatNDef - Tag not initialized/ Busy! State: %u",
- p_t2t->state);
+ LOG(WARNING) << StringPrintf(
+ "RW_T2tFormatNDef - Tag not initialized/ Busy! State: %u",
+ p_t2t->state);
return (NFC_STATUS_FAILED);
}
@@ -2744,21 +2759,22 @@
uint16_t block;
if (p_t2t->state != RW_T2T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: Type 2 tag not activated or Busy - State: %u",
- p_t2t->state);
+ LOG(ERROR) << StringPrintf(
+ "Error: Type 2 tag not activated or Busy - State: %u", p_t2t->state);
return (NFC_STATUS_BUSY);
}
if ((tlv_type != TAG_LOCK_CTRL_TLV) && (tlv_type != TAG_MEM_CTRL_TLV) &&
(tlv_type != TAG_NDEF_TLV) && (tlv_type != TAG_PROPRIETARY_TLV)) {
- RW_TRACE_API1("RW_T2tLocateTlv - Cannot search TLV: 0x%02x", tlv_type);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "RW_T2tLocateTlv - Cannot search TLV: 0x%02x", tlv_type);
return (NFC_STATUS_FAILED);
}
if ((tlv_type == TAG_LOCK_CTRL_TLV) && (p_t2t->b_read_hdr) &&
(p_t2t->tag_hdr[T2T_CC2_TMS_BYTE] == T2T_CC2_TMS_STATIC)) {
p_t2t->b_read_hdr = false;
- RW_TRACE_API1(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"RW_T2tLocateTlv - No Lock tlv in static structure tag, CC[0]: 0x%02x",
p_t2t->tag_hdr[T2T_CC2_TMS_BYTE]);
return (NFC_STATUS_FAILED);
@@ -2767,7 +2783,7 @@
if ((tlv_type == TAG_NDEF_TLV) && (p_t2t->b_read_hdr) &&
(p_t2t->tag_hdr[T2T_CC0_NMN_BYTE] != T2T_CC0_NMN)) {
p_t2t->b_read_hdr = false;
- RW_TRACE_WARNING3(
+ LOG(WARNING) << StringPrintf(
"RW_T2tLocateTlv - Invalid NDEF Magic Number!, CC[0]: 0x%02x, CC[1]: "
"0x%02x, CC[3]: 0x%02x",
p_t2t->tag_hdr[T2T_CC0_NMN_BYTE], p_t2t->tag_hdr[T2T_CC1_VNO_BYTE],
@@ -2868,26 +2884,27 @@
uint16_t block;
if (p_t2t->state != RW_T2T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: Type 2 tag not activated or Busy - State: %u",
- p_t2t->state);
+ LOG(ERROR) << StringPrintf(
+ "Error: Type 2 tag not activated or Busy - State: %u", p_t2t->state);
return (NFC_STATUS_FAILED);
}
if (p_t2t->ndef_status == T2T_NDEF_NOT_DETECTED) {
- RW_TRACE_ERROR0("RW_T2tReadNDef - Error: NDEF detection not performed yet");
+ LOG(ERROR) << StringPrintf(
+ "RW_T2tReadNDef - Error: NDEF detection not performed yet");
return (NFC_STATUS_FAILED);
}
if (buf_len < p_t2t->ndef_msg_len) {
- RW_TRACE_WARNING2(
+ LOG(WARNING) << StringPrintf(
"RW_T2tReadNDef - buffer size: %u less than NDEF msg sise: %u",
buf_len, p_t2t->ndef_msg_len);
return (NFC_STATUS_FAILED);
}
if (!p_t2t->ndef_msg_len) {
- RW_TRACE_WARNING1("RW_T2tReadNDef - NDEF Message length is zero ",
- p_t2t->ndef_msg_len);
+ LOG(WARNING) << StringPrintf(
+ "RW_T2tReadNDef - NDEF Message length is zero");
return (NFC_STATUS_NOT_INITIALIZED);
}
@@ -2945,25 +2962,27 @@
tNFC_STATUS status = NFC_STATUS_OK;
if (p_t2t->state != RW_T2T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: Type 2 tag not activated or Busy - State: %u",
- p_t2t->state);
+ LOG(ERROR) << StringPrintf(
+ "Error: Type 2 tag not activated or Busy - State: %u", p_t2t->state);
return (NFC_STATUS_FAILED);
}
if (p_t2t->ndef_status == T2T_NDEF_NOT_DETECTED) {
- RW_TRACE_ERROR0("RW_T2tWriteNDef - Error: NDEF detection not performed!");
+ LOG(ERROR) << StringPrintf(
+ "RW_T2tWriteNDef - Error: NDEF detection not performed!");
return (NFC_STATUS_FAILED);
}
if (p_t2t->tag_hdr[T2T_CC3_RWA_BYTE] != T2T_CC3_RWA_RW) {
- RW_TRACE_ERROR1("RW_T2tWriteNDef - Write access not granted - CC3: %u",
- p_t2t->tag_hdr[T2T_CC3_RWA_BYTE]);
+ LOG(ERROR) << StringPrintf(
+ "RW_T2tWriteNDef - Write access not granted - CC3: %u",
+ p_t2t->tag_hdr[T2T_CC3_RWA_BYTE]);
return (NFC_STATUS_REFUSED);
}
/* Check if there is enough memory on the tag */
if (msg_len > p_t2t->max_ndef_msg_len) {
- RW_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"RW_T2tWriteNDef - Cannot write NDEF of size greater than %u bytes",
p_t2t->max_ndef_msg_len);
return (NFC_STATUS_FAILED);
@@ -2974,7 +2993,7 @@
if ((p_t2t->ndef_msg_len > 0) &&
((p_ret = t2t_tag_init_data(p_t2t->tag_hdr[0], false, 0)) != NULL) &&
(p_ret->b_otp)) {
- RW_TRACE_WARNING0(
+ LOG(WARNING) << StringPrintf(
"RW_T2tWriteNDef - Cannot Overwrite NDEF Message on a OTP tag!");
return (NFC_STATUS_FAILED);
}
@@ -3021,7 +3040,7 @@
tRW_T2T_CB* p_t2t = &rw_cb.tcb.t2t;
if (p_t2t->state != RW_T2T_STATE_IDLE) {
- RW_TRACE_ERROR1(
+ LOG(ERROR) << StringPrintf(
"RW_T2tSetTagReadOnly: Error: Type 2 tag not activated or Busy - "
"State: %u",
p_t2t->state);
diff --git a/src/nfc/tags/rw_t3t.c b/src/nfc/tags/rw_t3t.cc
similarity index 90%
rename from src/nfc/tags/rw_t3t.c
rename to src/nfc/tags/rw_t3t.cc
index c5df1b7..ea88fc9 100644
--- a/src/nfc/tags/rw_t3t.c
+++ b/src/nfc/tags/rw_t3t.cc
@@ -22,20 +22,25 @@
* mode.
*
******************************************************************************/
-#include <log/log.h>
#include <string.h>
-#include "bt_types.h"
-#include "nfc_target.h"
-#include "trace_api.h"
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+#include <log/log.h>
-#include "gki.h"
+#include "nfc_target.h"
+
+#include "bt_types.h"
#include "nci_hmsgs.h"
#include "nfc_api.h"
#include "nfc_int.h"
#include "rw_api.h"
#include "rw_int.h"
-#include "tags_int.h"
+#include "trace_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/* Definitions for constructing t3t command messages */
#define RW_T3T_FL_PADDING 0x01 /* Padding needed for last NDEF block */
@@ -62,7 +67,7 @@
#define RW_T3T_MIN_TIMEOUT_TICKS 10
/* Macro to extract major version from NDEF version byte */
-#define T3T_GET_MAJOR_VERSION(ver) (ver >> 4)
+#define T3T_GET_MAJOR_VERSION(ver) ((ver) >> 4)
/* Enumeration of API commands */
enum {
@@ -123,14 +128,12 @@
block-write to complete */
};
-#if (BT_TRACE_VERBOSE == TRUE)
-static char* rw_t3t_cmd_str(uint8_t cmd_id);
-static char* rw_t3t_state_str(uint8_t state_id);
-#endif
+static std::string rw_t3t_cmd_str(uint8_t cmd_id);
+static std::string rw_t3t_state_str(uint8_t state_id);
/* Local static functions */
static void rw_t3t_update_ndef_flag(uint8_t* p_flag);
-static tNFC_STATUS rw_t3t_unselect(uint8_t peer_nfcid2[]);
+static tNFC_STATUS rw_t3t_unselect();
static NFC_HDR* rw_t3t_get_cmd_buf(void);
static tNFC_STATUS rw_t3t_send_to_lower(NFC_HDR* p_msg);
static void rw_t3t_handle_get_system_codes_cplt(void);
@@ -140,17 +143,11 @@
uint8_t* p_sensf_res_buf);
static void rw_t3t_handle_ndef_detect_poll_rsp(tRW_T3T_CB* p_cb,
uint8_t nci_status,
- uint8_t num_responses,
- uint8_t sensf_res_buf_size,
- uint8_t* p_sensf_res_buf);
+ uint8_t num_responses);
static void rw_t3t_handle_fmt_poll_rsp(tRW_T3T_CB* p_cb, uint8_t nci_status,
- uint8_t num_responses,
- uint8_t sensf_res_buf_size,
- uint8_t* p_sensf_res_buf);
+ uint8_t num_responses);
static void rw_t3t_handle_sro_poll_rsp(tRW_T3T_CB* p_cb, uint8_t nci_status,
- uint8_t num_responses,
- uint8_t sensf_res_buf_size,
- uint8_t* p_sensf_res_buf);
+ uint8_t num_responses);
/* Default NDEF attribute information block (used when formatting Felica-Lite
* tags) */
@@ -258,15 +255,16 @@
/* retry sending the command */
rw_cb.cur_retry++;
- RW_TRACE_DEBUG2("T3T retransmission attempt %i of %i", rw_cb.cur_retry,
- RW_MAX_RETRIES);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("T3T retransmission attempt %i of %i",
+ rw_cb.cur_retry, RW_MAX_RETRIES);
/* allocate a new buffer for message */
p_cmd_buf = rw_t3t_get_cmd_buf();
if (p_cmd_buf != NULL) {
- memcpy(p_cmd_buf, p_cb->p_cur_cmd_buf,
- sizeof(NFC_HDR) + p_cb->p_cur_cmd_buf->offset +
- p_cb->p_cur_cmd_buf->len);
+ memcpy(p_cmd_buf, p_cb->p_cur_cmd_buf, sizeof(NFC_HDR) +
+ p_cb->p_cur_cmd_buf->offset +
+ p_cb->p_cur_cmd_buf->len);
if (rw_t3t_send_to_lower(p_cmd_buf) == NFC_STATUS_OK) {
/* Start timer for waiting for response */
@@ -279,8 +277,8 @@
}
}
} else {
- RW_TRACE_DEBUG1("T3T maximum retransmission attempts reached (%i)",
- RW_MAX_RETRIES);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "T3T maximum retransmission attempts reached (%i)", RW_MAX_RETRIES);
}
#if (RW_STATS_INCLUDED == TRUE)
@@ -348,7 +346,7 @@
p_cb->flags &= ~RW_T3T_FL_W4_PRESENCE_CHECK_POLL_RSP;
evt_data.status = nci_status;
p_cb->rw_state = RW_T3T_STATE_IDLE;
- (*(rw_cb.p_cback))(RW_T3T_PRESENCE_CHECK_EVT, (tRW_DATA*)&evt_data);
+ (*(rw_cb.p_cback))(RW_T3T_PRESENCE_CHECK_EVT, &evt_data);
} else if (p_cb->flags & RW_T3T_FL_W4_GET_SC_POLL_RSP) {
/* Handle POLL ntf in response to get system codes */
p_cb->flags &= ~RW_T3T_FL_W4_GET_SC_POLL_RSP;
@@ -357,18 +355,15 @@
} else if (p_cb->flags & RW_T3T_FL_W4_FMT_FELICA_LITE_POLL_RSP) {
/* Handle POLL ntf in response to get system codes */
p_cb->flags &= ~RW_T3T_FL_W4_FMT_FELICA_LITE_POLL_RSP;
- rw_t3t_handle_fmt_poll_rsp(p_cb, nci_status, num_responses,
- sensf_res_buf_size, p_sensf_res_buf);
+ rw_t3t_handle_fmt_poll_rsp(p_cb, nci_status, num_responses);
} else if (p_cb->flags & RW_T3T_FL_W4_SRO_FELICA_LITE_POLL_RSP) {
/* Handle POLL ntf in response to get system codes */
p_cb->flags &= ~RW_T3T_FL_W4_SRO_FELICA_LITE_POLL_RSP;
- rw_t3t_handle_sro_poll_rsp(p_cb, nci_status, num_responses,
- sensf_res_buf_size, p_sensf_res_buf);
+ rw_t3t_handle_sro_poll_rsp(p_cb, nci_status, num_responses);
} else if (p_cb->flags & RW_T3T_FL_W4_NDEF_DETECT_POLL_RSP) {
/* Handle POLL ntf in response to ndef detection */
p_cb->flags &= ~RW_T3T_FL_W4_NDEF_DETECT_POLL_RSP;
- rw_t3t_handle_ndef_detect_poll_rsp(p_cb, nci_status, num_responses,
- sensf_res_buf_size, p_sensf_res_buf);
+ rw_t3t_handle_ndef_detect_poll_rsp(p_cb, nci_status, num_responses);
} else {
/* Handle POLL ntf in response to RW_T3tPoll */
evt_data.t3t_poll.status = nci_status;
@@ -402,10 +397,11 @@
evt_data.t3t_sc.num_system_codes = p_cb->num_system_codes;
evt_data.t3t_sc.p_system_codes = p_cb->system_codes;
- RW_TRACE_DEBUG1("rw_t3t_handle_get_system_codes_cplt, number of systems: %i",
- evt_data.t3t_sc.num_system_codes);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "number of systems: %i", evt_data.t3t_sc.num_system_codes);
for (i = 0; i < evt_data.t3t_sc.num_system_codes; i++) {
- RW_TRACE_DEBUG2(" system %i: %04X", i, evt_data.t3t_sc.p_system_codes[i]);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "system %i: %04X", i, evt_data.t3t_sc.p_system_codes[i]);
}
p_cb->rw_state = RW_T3T_STATE_IDLE;
@@ -480,19 +476,14 @@
/* Check which timer timed out */
if (p_tle == &p_cb->timer) {
/* UPDATE/CHECK response timeout */
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_ERROR3("T3T timeout. state=%s cur_cmd=0x%02X (%s)",
- rw_t3t_state_str(rw_cb.tcb.t3t.rw_state),
- rw_cb.tcb.t3t.cur_cmd,
- rw_t3t_cmd_str(rw_cb.tcb.t3t.cur_cmd));
-#else
- RW_TRACE_ERROR2("T3T timeout. state=0x%02X cur_cmd=0x%02X",
- rw_cb.tcb.t3t.rw_state, rw_cb.tcb.t3t.cur_cmd);
-#endif
+LOG(ERROR) << StringPrintf("T3T timeout. state=%s cur_cmd=0x%02X (%s)",
+ rw_t3t_state_str(rw_cb.tcb.t3t.rw_state).c_str(),
+ rw_cb.tcb.t3t.cur_cmd,
+ rw_t3t_cmd_str(rw_cb.tcb.t3t.cur_cmd).c_str());
- rw_t3t_process_error(NFC_STATUS_TIMEOUT);
+rw_t3t_process_error(NFC_STATUS_TIMEOUT);
} else {
- RW_TRACE_ERROR0("T3T POLL timeout.");
+ LOG(ERROR) << StringPrintf("T3T POLL timeout.");
/* POLL response timeout */
if (p_cb->flags & RW_T3T_FL_W4_PRESENCE_CHECK_POLL_RSP) {
@@ -500,7 +491,7 @@
p_cb->flags &= ~RW_T3T_FL_W4_PRESENCE_CHECK_POLL_RSP;
evt_data.status = NFC_STATUS_FAILED;
p_cb->rw_state = RW_T3T_STATE_IDLE;
- (*(rw_cb.p_cback))(RW_T3T_PRESENCE_CHECK_EVT, (tRW_DATA*)&evt_data);
+ (*(rw_cb.p_cback))(RW_T3T_PRESENCE_CHECK_EVT, &evt_data);
} else if (p_cb->flags & RW_T3T_FL_W4_GET_SC_POLL_RSP) {
/* POLL timeout for getting system codes */
p_cb->flags &= ~RW_T3T_FL_W4_GET_SC_POLL_RSP;
@@ -508,22 +499,22 @@
} else if (p_cb->flags & RW_T3T_FL_W4_FMT_FELICA_LITE_POLL_RSP) {
/* POLL timeout for formatting Felica Lite */
p_cb->flags &= ~RW_T3T_FL_W4_FMT_FELICA_LITE_POLL_RSP;
- RW_TRACE_ERROR0("Felica-Lite tag not detected");
+ LOG(ERROR) << StringPrintf("Felica-Lite tag not detected");
rw_t3t_format_cplt(NFC_STATUS_FAILED);
} else if (p_cb->flags & RW_T3T_FL_W4_SRO_FELICA_LITE_POLL_RSP) {
/* POLL timeout for configuring Felica Lite read only */
p_cb->flags &= ~RW_T3T_FL_W4_SRO_FELICA_LITE_POLL_RSP;
- RW_TRACE_ERROR0("Felica-Lite tag not detected");
+ LOG(ERROR) << StringPrintf("Felica-Lite tag not detected");
rw_t3t_set_readonly_cplt(NFC_STATUS_FAILED);
} else if (p_cb->flags & RW_T3T_FL_W4_NDEF_DETECT_POLL_RSP) {
/* POLL timeout for ndef detection */
p_cb->flags &= ~RW_T3T_FL_W4_NDEF_DETECT_POLL_RSP;
- rw_t3t_handle_ndef_detect_poll_rsp(p_cb, NFC_STATUS_TIMEOUT, 0, 0, NULL);
+ rw_t3t_handle_ndef_detect_poll_rsp(p_cb, NFC_STATUS_TIMEOUT, 0);
} else {
/* Timeout waiting for response for RW_T3tPoll */
evt_data.t3t_poll.status = NFC_STATUS_FAILED;
p_cb->rw_state = RW_T3T_STATE_IDLE;
- (*(rw_cb.p_cback))(RW_T3T_POLL_EVT, (tRW_DATA*)&evt_data);
+ (*(rw_cb.p_cback))(RW_T3T_POLL_EVT, &evt_data);
}
}
}
@@ -538,14 +529,10 @@
**
*******************************************************************************/
void rw_t3t_process_frame_error(void) {
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_ERROR3("T3T frame error. state=%s cur_cmd=0x%02X (%s)",
- rw_t3t_state_str(rw_cb.tcb.t3t.rw_state),
- rw_cb.tcb.t3t.cur_cmd, rw_t3t_cmd_str(rw_cb.tcb.t3t.cur_cmd));
-#else
- RW_TRACE_ERROR2("T3T frame error. state=0x%02X cur_cmd=0x%02X",
- rw_cb.tcb.t3t.rw_state, rw_cb.tcb.t3t.cur_cmd);
-#endif
+ LOG(ERROR) << StringPrintf("T3T frame error. state=%s cur_cmd=0x%02X (%s)",
+ rw_t3t_state_str(rw_cb.tcb.t3t.rw_state).c_str(),
+ rw_cb.tcb.t3t.cur_cmd,
+ rw_t3t_cmd_str(rw_cb.tcb.t3t.cur_cmd).c_str());
#if (RW_STATS_INCLUDED == TRUE)
/* Update stats */
@@ -580,10 +567,6 @@
UINT8_TO_STREAM(p, (p_msg->len + 1));
p_msg->len += 1; /* Increment len to include SoD */
-#if (BT_TRACE_PROTOCOL == TRUE)
- DispT3TagMessage(p_msg, false);
-#endif
-
return (NFC_SendData(NFC_RF_CONN_ID, p_msg));
}
@@ -642,8 +625,9 @@
p_cb->rw_state = RW_T3T_STATE_IDLE;
}
- RW_TRACE_DEBUG3("rw_t3t_send_cmd: cur_tout: %d, timeout_ticks: %d ret:%d",
- p_cb->cur_tout, timeout_ticks, retval);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("cur_tout: %d, timeout_ticks: %d ret:%d", p_cb->cur_tout,
+ timeout_ticks, retval);
return (retval);
}
@@ -927,9 +911,8 @@
p_cb->ndef_rx_readlen = ((uint32_t)p_cb->ndef_attrib.nbr * 16);
}
- RW_TRACE_DEBUG3(
- "rw_t3t_send_next_ndef_check_cmd: bytes_remaining: %i, "
- "cur_blocks_to_read: %i, is_final: %i",
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "bytes_remaining: %i, cur_blocks_to_read: %i, is_final: %i",
ndef_bytes_remaining, cur_blocks_to_read,
(p_cb->flags & RW_T3T_FL_IS_FINAL_NDEF_SEGMENT));
@@ -1186,7 +1169,7 @@
return rw_t3t_send_cmd(p_cb, p_cb->cur_cmd, p_cmd_buf,
rw_t3t_check_timeout(1));
} else {
- RW_TRACE_ERROR0("Unable to allocate buffer to read MC block");
+ LOG(ERROR) << StringPrintf("Unable to allocate buffer to read MC block");
return (NFC_STATUS_NO_BUFFERS);
}
}
@@ -1253,9 +1236,9 @@
/* Check if response code is CHECK resp (for reading NDEF attribute block) */
if (p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE] != T3T_MSG_OPC_CHECK_RSP) {
- RW_TRACE_ERROR2("Response error: expecting rsp_code %02X, but got %02X",
- T3T_MSG_OPC_CHECK_RSP,
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
+ LOG(ERROR) << StringPrintf(
+ "Response error: expecting rsp_code %02X, but got %02X",
+ T3T_MSG_OPC_CHECK_RSP, p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
evt_data.status = NFC_STATUS_FAILED;
}
/* Validate status code and NFCID2 response from tag */
@@ -1287,7 +1270,7 @@
NFC_STATUS_FAILED; /* only ok or failed passed to the app. can be
boolean*/
- RW_TRACE_ERROR0("RW_T3tDetectNDEF checksum failed");
+ LOG(ERROR) << StringPrintf("RW_T3tDetectNDEF checksum failed");
} else {
p_cb->ndef_attrib.status = NFC_STATUS_OK;
@@ -1298,7 +1281,7 @@
T3T_GET_MAJOR_VERSION(p_cb->ndef_attrib.version)) {
/* Remote tag's MajorVer is newer than our's. Reject NDEF as per T3TOP
* RQ_T3T_NDA_024 */
- RW_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"RW_T3tDetectNDEF: incompatible NDEF version. Local=0x%02x, "
"Remote=0x%02x",
T3T_MSG_NDEF_VERSION, p_cb->ndef_attrib.version);
@@ -1332,8 +1315,9 @@
BE_STREAM_TO_UINT16(p_cb->ndef_attrib.ln, p); /* Ln: lo-word */
p_cb->ndef_attrib.ln += (temp << 16);
- RW_TRACE_DEBUG1("Detected NDEF Ver: 0x%02x", p_cb->ndef_attrib.version);
- RW_TRACE_DEBUG6(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Detected NDEF Ver: 0x%02x", p_cb->ndef_attrib.version);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"Detected NDEF Attributes: Nbr=%i, Nbw=%i, Nmaxb=%i, WriteF=%i, "
"RWFlag=%i, Ln=%i",
p_cb->ndef_attrib.nbr, p_cb->ndef_attrib.nbw,
@@ -1352,12 +1336,15 @@
}
}
- RW_TRACE_DEBUG1("RW_T3tDetectNDEF response: %i", evt_data.status);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW_T3tDetectNDEF response: %i", evt_data.status);
p_cb->rw_state = RW_T3T_STATE_IDLE;
rw_t3t_update_ndef_flag(&evt_data.flags);
/* Notify app of NDEF detection result */
- (*(rw_cb.p_cback))(RW_T3T_NDEF_DETECT_EVT, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.ndef = evt_data;
+ (*(rw_cb.p_cback))(RW_T3T_NDEF_DETECT_EVT, &rw_data);
GKI_freebuf(p_msg_rsp);
}
@@ -1385,9 +1372,9 @@
nfc_status = NFC_STATUS_FAILED;
GKI_freebuf(p_msg_rsp);
} else if (p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE] != T3T_MSG_OPC_CHECK_RSP) {
- RW_TRACE_ERROR2("Response error: expecting rsp_code %02X, but got %02X",
- T3T_MSG_OPC_CHECK_RSP,
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
+ LOG(ERROR) << StringPrintf(
+ "Response error: expecting rsp_code %02X, but got %02X",
+ T3T_MSG_OPC_CHECK_RSP, p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
nfc_status = NFC_STATUS_FAILED;
GKI_freebuf(p_msg_rsp);
} else if (p_msg_rsp->len >= T3T_MSG_RSP_OFFSET_CHECK_DATA) {
@@ -1397,7 +1384,9 @@
p_msg_rsp->len -= T3T_MSG_RSP_OFFSET_CHECK_DATA;
evt_data.status = NFC_STATUS_OK;
evt_data.p_data = p_msg_rsp;
- (*(rw_cb.p_cback))(RW_T3T_CHECK_EVT, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*(rw_cb.p_cback))(RW_T3T_CHECK_EVT, &rw_data);
} else {
android_errorWriteLog(0x534e4554, "120503926");
nfc_status = NFC_STATUS_FAILED;
@@ -1406,7 +1395,9 @@
p_cb->rw_state = RW_T3T_STATE_IDLE;
- (*(rw_cb.p_cback))(RW_T3T_CHECK_CPLT_EVT, (tRW_DATA*)&nfc_status);
+ tRW_DATA rw_data;
+ rw_data.status = nfc_status;
+ (*(rw_cb.p_cback))(RW_T3T_CHECK_CPLT_EVT, &rw_data);
}
/*****************************************************************************
@@ -1430,9 +1421,9 @@
{
evt_data.status = NFC_STATUS_FAILED;
} else if (p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE] != T3T_MSG_OPC_UPDATE_RSP) {
- RW_TRACE_ERROR2("Response error: expecting rsp_code %02X, but got %02X",
- T3T_MSG_OPC_UPDATE_RSP,
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
+ LOG(ERROR) << StringPrintf(
+ "Response error: expecting rsp_code %02X, but got %02X",
+ T3T_MSG_OPC_UPDATE_RSP, p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
evt_data.status = NFC_STATUS_FAILED;
} else {
/* Copy incoming data into buffer */
@@ -1441,7 +1432,9 @@
p_cb->rw_state = RW_T3T_STATE_IDLE;
- (*(rw_cb.p_cback))(RW_T3T_UPDATE_CPLT_EVT, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*(rw_cb.p_cback))(RW_T3T_UPDATE_CPLT_EVT, &rw_data);
GKI_freebuf(p_msg_rsp);
}
@@ -1460,13 +1453,9 @@
tRW_READ_DATA evt_data;
NFC_HDR* p_pkt = p_data->p_data;
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("RW T3T Raw Frame: Len [0x%X] Status [%s]", p_pkt->len,
- NFC_GetStatusName(p_data->status));
-#else
- RW_TRACE_DEBUG2("RW T3T Raw Frame: Len [0x%X] Status [0x%X]", p_pkt->len,
- p_data->status);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW T3T Raw Frame: Len [0x%X] Status [%s]", p_pkt->len,
+ NFC_GetStatusName(p_data->status).c_str());
/* Copy incoming data into buffer */
evt_data.status = p_data->status;
@@ -1474,7 +1463,9 @@
p_cb->rw_state = RW_T3T_STATE_IDLE;
- (*(rw_cb.p_cback))(RW_T3T_RAW_FRAME_EVT, (tRW_DATA*)&evt_data);
+ tRW_DATA rw_data;
+ rw_data.data = evt_data;
+ (*(rw_cb.p_cback))(RW_T3T_RAW_FRAME_EVT, &rw_data);
}
/*****************************************************************************
@@ -1489,8 +1480,6 @@
void rw_t3t_act_handle_check_ndef_rsp(tRW_T3T_CB* p_cb, NFC_HDR* p_msg_rsp) {
bool check_complete = true;
tNFC_STATUS nfc_status = NFC_STATUS_OK;
- tRW_READ_DATA read_data;
- tRW_DATA evt_data;
uint8_t* p_t3t_rsp = (uint8_t*)(p_msg_rsp + 1) + p_msg_rsp->offset;
uint8_t rsp_num_bytes_rx;
@@ -1502,15 +1491,16 @@
|| (p_t3t_rsp[T3T_MSG_RSP_OFFSET_NUMBLOCKS] !=
((p_cb->ndef_rx_readlen + 15) >> 4))) /* verify length of response */
{
- RW_TRACE_ERROR2("Response error: bad status, nfcid2, or invalid len: %i %i",
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_NUMBLOCKS],
- ((p_cb->ndef_rx_readlen + 15) >> 4));
+ LOG(ERROR) << StringPrintf(
+ "Response error: bad status, nfcid2, or invalid len: %i %i",
+ p_t3t_rsp[T3T_MSG_RSP_OFFSET_NUMBLOCKS],
+ ((p_cb->ndef_rx_readlen + 15) >> 4));
nfc_status = NFC_STATUS_FAILED;
GKI_freebuf(p_msg_rsp);
} else if (p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE] != T3T_MSG_OPC_CHECK_RSP) {
- RW_TRACE_ERROR2("Response error: expecting rsp_code %02X, but got %02X",
- T3T_MSG_OPC_CHECK_RSP,
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
+ LOG(ERROR) << StringPrintf(
+ "Response error: expecting rsp_code %02X, but got %02X",
+ T3T_MSG_OPC_CHECK_RSP, p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
nfc_status = NFC_STATUS_FAILED;
GKI_freebuf(p_msg_rsp);
} else if (p_msg_rsp->len >= T3T_MSG_RSP_OFFSET_CHECK_DATA &&
@@ -1519,7 +1509,6 @@
/* Number of bytes received, according to header */
rsp_num_bytes_rx = p_t3t_rsp[T3T_MSG_RSP_OFFSET_NUMBLOCKS] * 16;
p_cb->ndef_rx_offset += p_cb->ndef_rx_readlen;
- read_data.status = NFC_STATUS_OK;
p_msg_rsp->offset +=
T3T_MSG_RSP_OFFSET_CHECK_DATA; /* Skip over t3t header (point to block
data) */
@@ -1528,7 +1517,7 @@
/* Verify that the bytes received is really the amount indicated in the
* check-response header */
if (rsp_num_bytes_rx > p_msg_rsp->len) {
- RW_TRACE_ERROR2(
+ LOG(ERROR) << StringPrintf(
"Response error: CHECK rsp header indicates %i bytes, but only "
"received %i bytes",
rsp_num_bytes_rx, p_msg_rsp->len);
@@ -1543,8 +1532,10 @@
}
p_msg_rsp->len = rsp_num_bytes_rx;
- read_data.p_data = p_msg_rsp;
- (*(rw_cb.p_cback))(RW_T3T_CHECK_EVT, (tRW_DATA*)&read_data);
+ tRW_DATA rw_data;
+ rw_data.data.status = NFC_STATUS_OK;
+ rw_data.data.p_data = p_msg_rsp;
+ (*(rw_cb.p_cback))(RW_T3T_CHECK_EVT, &rw_data);
/* Send CHECK cmd for next NDEF segment, if needed */
if (!(p_cb->flags & RW_T3T_FL_IS_FINAL_NDEF_SEGMENT)) {
@@ -1560,15 +1551,16 @@
android_errorWriteLog(0x534e4554, "120502559");
GKI_freebuf(p_msg_rsp);
nfc_status = NFC_STATUS_FAILED;
- RW_TRACE_ERROR0("Underflow in p_msg_rsp->len!");
+ LOG(ERROR) << StringPrintf("Underflow in p_msg_rsp->len!");
}
/* Notify app of RW_T3T_CHECK_CPLT_EVT if entire NDEF has been read, or if
* failure */
if (check_complete) {
p_cb->rw_state = RW_T3T_STATE_IDLE;
+ tRW_DATA evt_data;
evt_data.status = nfc_status;
- (*(rw_cb.p_cback))(RW_T3T_CHECK_CPLT_EVT, (tRW_DATA*)&evt_data);
+ (*(rw_cb.p_cback))(RW_T3T_CHECK_CPLT_EVT, &evt_data);
}
}
@@ -1584,7 +1576,6 @@
void rw_t3t_act_handle_update_ndef_rsp(tRW_T3T_CB* p_cb, NFC_HDR* p_msg_rsp) {
bool update_complete = true;
tNFC_STATUS nfc_status = NFC_STATUS_OK;
- tRW_DATA evt_data;
uint8_t* p_t3t_rsp = (uint8_t*)(p_msg_rsp + 1) + p_msg_rsp->offset;
/* Check nfcid2 and status of response */
@@ -1597,9 +1588,9 @@
}
/* Validate response opcode */
else if (p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE] != T3T_MSG_OPC_UPDATE_RSP) {
- RW_TRACE_ERROR2("Response error: expecting rsp_code %02X, but got %02X",
- T3T_MSG_OPC_UPDATE_RSP,
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
+ LOG(ERROR) << StringPrintf(
+ "Response error: expecting rsp_code %02X, but got %02X",
+ T3T_MSG_OPC_UPDATE_RSP, p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
nfc_status = NFC_STATUS_FAILED;
}
/* If this is response to final UPDATE, then update NDEF local size */
@@ -1630,8 +1621,9 @@
/* If update is completed, then notify app */
if (update_complete) {
p_cb->rw_state = RW_T3T_STATE_IDLE;
+ tRW_DATA evt_data;
evt_data.status = nfc_status;
- (*(rw_cb.p_cback))(RW_T3T_UPDATE_CPLT_EVT, (tRW_DATA*)&evt_data);
+ (*(rw_cb.p_cback))(RW_T3T_UPDATE_CPLT_EVT, &evt_data);
}
GKI_freebuf(p_msg_rsp);
@@ -1662,11 +1654,12 @@
p = &p_sensf_res_buf[RW_T3T_SENSF_RES_RD_OFFSET];
BE_STREAM_TO_UINT16(sc, p);
- RW_TRACE_DEBUG1("FeliCa detected (RD, system code %04X)", sc);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("FeliCa detected (RD, system code %04X)", sc);
if (p_cb->num_system_codes < T3T_MAX_SYSTEM_CODES) {
p_cb->system_codes[p_cb->num_system_codes++] = sc;
} else {
- RW_TRACE_ERROR0("Exceed T3T_MAX_SYSTEM_CODES!");
+ LOG(ERROR) << StringPrintf("Exceed T3T_MAX_SYSTEM_CODES!");
android_errorWriteLog(0x534e4554, "120499324");
}
}
@@ -1685,9 +1678,7 @@
*****************************************************************************/
static void rw_t3t_handle_ndef_detect_poll_rsp(tRW_T3T_CB* p_cb,
uint8_t nci_status,
- uint8_t num_responses,
- uint8_t sensf_res_buf_size,
- uint8_t* p_sensf_res_buf) {
+ uint8_t num_responses) {
NFC_HDR* p_cmd_buf;
uint8_t *p, *p_cmd_start;
tRW_DATA evt_data;
@@ -1809,9 +1800,7 @@
**
*****************************************************************************/
static void rw_t3t_handle_fmt_poll_rsp(tRW_T3T_CB* p_cb, uint8_t nci_status,
- uint8_t num_responses,
- uint8_t sensf_res_buf_size,
- uint8_t* p_sensf_res_buf) {
+ uint8_t num_responses) {
tRW_DATA evt_data;
evt_data.status = NFC_STATUS_OK;
@@ -1820,14 +1809,15 @@
if ((nci_status == NCI_STATUS_OK) && (num_responses > 0)) {
/* Tag responded for Felica-Lite poll */
/* Get MemoryControl block */
- RW_TRACE_DEBUG0("Felica-Lite tag detected...getting Memory Control block.");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "Felica-Lite tag detected...getting Memory Control block.");
p_cb->rw_substate = RW_T3T_FMT_SST_CHECK_MC_BLK;
/* Send command to check Memory Configuration block */
evt_data.status = rw_t3t_check_mc_block(p_cb);
} else {
- RW_TRACE_ERROR0("Felica-Lite tag not detected");
+ LOG(ERROR) << StringPrintf("Felica-Lite tag not detected");
evt_data.status = NFC_STATUS_FAILED;
}
@@ -1857,9 +1847,9 @@
if (p_cb->rw_substate == RW_T3T_FMT_SST_CHECK_MC_BLK) {
/* Validate response opcode */
if (p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE] != T3T_MSG_OPC_CHECK_RSP) {
- RW_TRACE_ERROR2("Response error: expecting rsp_code %02X, but got %02X",
- T3T_MSG_OPC_CHECK_RSP,
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
+ LOG(ERROR) << StringPrintf(
+ "Response error: expecting rsp_code %02X, but got %02X",
+ T3T_MSG_OPC_CHECK_RSP, p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
evt_data.status = NFC_STATUS_FAILED;
}
/* Validate status code and NFCID2 response from tag */
@@ -1912,9 +1902,9 @@
(p_t3t_rsp[T3T_MSG_RSP_OFFSET_STATUS1] != T3T_MSG_RSP_STATUS_OK))
{
- RW_TRACE_ERROR2("Response error: rsp_code=%02X, status=%02X",
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE],
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_STATUS1]);
+ LOG(ERROR) << StringPrintf("Response error: rsp_code=%02X, status=%02X",
+ p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE],
+ p_t3t_rsp[T3T_MSG_RSP_OFFSET_STATUS1]);
evt_data.status = NFC_STATUS_FAILED;
} else {
/* SYS_OP=1: ndef already enabled. Just need to update attribute
@@ -1934,9 +1924,9 @@
(p_t3t_rsp[T3T_MSG_RSP_OFFSET_STATUS1] != T3T_MSG_RSP_STATUS_OK))
{
- RW_TRACE_ERROR2("Response error: rsp_code=%02X, status=%02X",
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE],
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_STATUS1]);
+ LOG(ERROR) << StringPrintf("Response error: rsp_code=%02X, status=%02X",
+ p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE],
+ p_t3t_rsp[T3T_MSG_RSP_OFFSET_STATUS1]);
evt_data.status = NFC_STATUS_FAILED;
}
@@ -1956,9 +1946,7 @@
**
*****************************************************************************/
static void rw_t3t_handle_sro_poll_rsp(tRW_T3T_CB* p_cb, uint8_t nci_status,
- uint8_t num_responses,
- uint8_t sensf_res_buf_size,
- uint8_t* p_sensf_res_buf) {
+ uint8_t num_responses) {
tRW_DATA evt_data;
uint8_t rw_t3t_ndef_attrib_info[T3T_MSG_BLOCKSIZE];
uint8_t* p;
@@ -1973,7 +1961,7 @@
/* Tag responded for Felica-Lite poll */
if (p_cb->ndef_attrib.rwflag != T3T_MSG_NDEF_RWFLAG_RO) {
/* First update attribute information block */
- RW_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"Felica-Lite tag detected...update NDef attribution block.");
p_cb->rw_substate = RW_T3T_SRO_SST_UPDATE_NDEF_ATTRIB;
@@ -2015,7 +2003,7 @@
rw_t3t_update_block(p_cb, 0, (uint8_t*)rw_t3t_ndef_attrib_info);
} else if (p_cb->cur_cmd == RW_T3T_CMD_SET_READ_ONLY_HARD) {
/* NDEF is already read only, Read and update MemoryControl block */
- RW_TRACE_DEBUG0(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"Felica-Lite tag detected...getting Memory Control block.");
p_cb->rw_substate = RW_T3T_SRO_SST_CHECK_MC_BLK;
@@ -2023,7 +2011,7 @@
evt_data.status = rw_t3t_check_mc_block(p_cb);
}
} else {
- RW_TRACE_ERROR0("Felica-Lite tag not detected");
+ LOG(ERROR) << StringPrintf("Felica-Lite tag not detected");
evt_data.status = NFC_STATUS_FAILED;
}
@@ -2055,9 +2043,9 @@
(p_t3t_rsp[T3T_MSG_RSP_OFFSET_STATUS1] != T3T_MSG_RSP_STATUS_OK))
{
- RW_TRACE_ERROR2("Response error: rsp_code=%02X, status=%02X",
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE],
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_STATUS1]);
+ LOG(ERROR) << StringPrintf("Response error: rsp_code=%02X, status=%02X",
+ p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE],
+ p_t3t_rsp[T3T_MSG_RSP_OFFSET_STATUS1]);
evt_data.status = NFC_STATUS_FAILED;
} else {
p_cb->ndef_attrib.rwflag = T3T_MSG_NDEF_RWFLAG_RO;
@@ -2074,9 +2062,9 @@
/* Check tags's response for reading MemoryControl block, Validate response
* opcode */
if (p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE] != T3T_MSG_OPC_CHECK_RSP) {
- RW_TRACE_ERROR2("Response error: expecting rsp_code %02X, but got %02X",
- T3T_MSG_OPC_CHECK_RSP,
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
+ LOG(ERROR) << StringPrintf(
+ "Response error: expecting rsp_code %02X, but got %02X",
+ T3T_MSG_OPC_CHECK_RSP, p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE]);
evt_data.status = NFC_STATUS_FAILED;
}
/* Validate status code and NFCID2 response from tag */
@@ -2120,9 +2108,9 @@
(p_t3t_rsp[T3T_MSG_RSP_OFFSET_STATUS1] != T3T_MSG_RSP_STATUS_OK))
{
- RW_TRACE_ERROR2("Response error: rsp_code=%02X, status=%02X",
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE],
- p_t3t_rsp[T3T_MSG_RSP_OFFSET_STATUS1]);
+ LOG(ERROR) << StringPrintf("Response error: rsp_code=%02X, status=%02X",
+ p_t3t_rsp[T3T_MSG_RSP_OFFSET_RSPCODE],
+ p_t3t_rsp[T3T_MSG_RSP_OFFSET_STATUS1]);
evt_data.status = NFC_STATUS_FAILED;
} else {
rw_t3t_set_readonly_cplt(evt_data.status);
@@ -2146,7 +2134,8 @@
** Returns none
**
*******************************************************************************/
-void rw_t3t_data_cback(uint8_t conn_id, tNFC_DATA_CEVT* p_data) {
+void rw_t3t_data_cback(__attribute__((unused)) uint8_t conn_id,
+ tNFC_DATA_CEVT* p_data) {
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
NFC_HDR* p_msg = p_data->p_data;
bool free_msg = false; /* if TRUE, free msg buffer before returning */
@@ -2170,8 +2159,8 @@
}
/* Sanity check: verify msg len is big enough to contain t3t header */
else if (p_msg->len < T3T_MSG_RSP_COMMON_HDR_LEN) {
- RW_TRACE_ERROR1("T3T: invalid Type3 Tag Message (invalid len: %i)",
- p_msg->len);
+ LOG(ERROR) << StringPrintf(
+ "T3T: invalid Type3 Tag Message (invalid len: %i)", p_msg->len);
free_msg = true;
rw_t3t_process_frame_error();
@@ -2180,17 +2169,13 @@
p = (uint8_t*)(p_msg + 1) + p_msg->offset;
sod = p[0];
if (p[sod] != NCI_STATUS_OK) {
- RW_TRACE_ERROR1("T3T: rf frame error (crc status=%i)", p[sod]);
+ LOG(ERROR) << StringPrintf("T3T: rf frame error (crc status=%i)", p[sod]);
GKI_freebuf(p_msg);
rw_t3t_process_frame_error();
return;
}
-#if (BT_TRACE_PROTOCOL == TRUE)
- DispT3TagMessage(p_msg, true);
-#endif
-
/* Skip over SoD */
p_msg->offset++;
p_msg->len--;
@@ -2253,7 +2238,8 @@
void rw_t3t_conn_cback(uint8_t conn_id, tNFC_CONN_EVT event,
tNFC_CONN* p_data) {
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
- RW_TRACE_DEBUG2("rw_t3t_conn_cback: conn_id=%i, evt=0x%02x", conn_id, event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "rw_t3t_conn_cback: conn_id=%i, evt=0x%02x", conn_id, event);
/* Only handle NFC_RF_CONN_ID conn_id */
if (conn_id != NFC_RF_CONN_ID) {
@@ -2262,7 +2248,7 @@
switch (event) {
case NFC_DEACTIVATE_CEVT:
- rw_t3t_unselect(NULL);
+ rw_t3t_unselect();
break;
case NFC_DATA_CEVT: /* check for status in tNFC_CONN */
@@ -2331,7 +2317,7 @@
uint8_t mrti_check, uint8_t mrti_update) {
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
- RW_TRACE_API0("rw_t3t_select");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
memcpy(p_cb->peer_nfcid2, peer_nfcid2,
NCI_NFCID2_LEN); /* Store tag's NFCID2 */
@@ -2347,7 +2333,7 @@
if (p_cb->p_cur_cmd_buf == NULL) {
p_cb->p_cur_cmd_buf = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (p_cb->p_cur_cmd_buf == NULL) {
- RW_TRACE_ERROR0(
+ LOG(ERROR) << StringPrintf(
"rw_t3t_select: unable to allocate buffer for retransmission");
p_cb->rw_state = RW_T3T_STATE_NOT_ACTIVATED;
return (NFC_STATUS_FAILED);
@@ -2368,7 +2354,7 @@
** Returns NFC_STATUS_OK
**
*******************************************************************************/
-static tNFC_STATUS rw_t3t_unselect(uint8_t peer_nfcid2[]) {
+static tNFC_STATUS rw_t3t_unselect() {
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
#if (RW_STATS_INCLUDED == TRUE)
@@ -2413,7 +2399,6 @@
}
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function rw_t3t_cmd_str
@@ -2423,29 +2408,22 @@
** Returns command string
**
*******************************************************************************/
-static char* rw_t3t_cmd_str(uint8_t cmd_id) {
+static std::string rw_t3t_cmd_str(uint8_t cmd_id) {
switch (cmd_id) {
case RW_T3T_CMD_DETECT_NDEF:
return "RW_T3T_CMD_DETECT_NDEF";
-
case RW_T3T_CMD_CHECK_NDEF:
return "RW_T3T_CMD_CHECK_NDEF";
-
case RW_T3T_CMD_UPDATE_NDEF:
return "RW_T3T_CMD_UPDATE_NDEF";
-
case RW_T3T_CMD_CHECK:
return "RW_T3T_CMD_CHECK";
-
case RW_T3T_CMD_UPDATE:
return "RW_T3T_CMD_UPDATE";
-
case RW_T3T_CMD_SEND_RAW_FRAME:
return "RW_T3T_CMD_SEND_RAW_FRAME";
-
case RW_T3T_CMD_GET_SYSTEM_CODES:
return "RW_T3T_CMD_GET_SYSTEM_CODES";
-
default:
return "Unknown";
}
@@ -2460,22 +2438,18 @@
** Returns command string
**
*******************************************************************************/
-static char* rw_t3t_state_str(uint8_t state_id) {
+static std::string rw_t3t_state_str(uint8_t state_id) {
switch (state_id) {
case RW_T3T_STATE_NOT_ACTIVATED:
return "RW_T3T_STATE_NOT_ACTIVATED";
-
case RW_T3T_STATE_IDLE:
return "RW_T3T_STATE_IDLE";
-
case RW_T3T_STATE_COMMAND_PENDING:
return "RW_T3T_STATE_COMMAND_PENDING";
-
default:
return "Unknown";
}
}
-#endif
/*****************************************************************************
** Type3 Tag API Functions
@@ -2503,12 +2477,12 @@
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
tNFC_STATUS retval = NFC_STATUS_OK;
- RW_TRACE_API0("RW_T3tDetectNDef");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Check if we are in valid state to handle this API */
if (p_cb->rw_state != RW_T3T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: invalid state to handle API (0x%x)",
- p_cb->rw_state);
+ LOG(ERROR) << StringPrintf("Error: invalid state to handle API (0x%x)",
+ p_cb->rw_state);
return (NFC_STATUS_FAILED);
}
@@ -2556,20 +2530,20 @@
tNFC_STATUS retval = NFC_STATUS_OK;
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
- RW_TRACE_API0("RW_T3tCheckNDef");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Check if we are in valid state to handle this API */
if (p_cb->rw_state != RW_T3T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: invalid state to handle API (0x%x)",
- p_cb->rw_state);
+ LOG(ERROR) << StringPrintf("Error: invalid state to handle API (0x%x)",
+ p_cb->rw_state);
return (NFC_STATUS_FAILED);
} else if (p_cb->ndef_attrib.status !=
NFC_STATUS_OK) /* NDEF detection not performed yet? */
{
- RW_TRACE_ERROR0("Error: NDEF detection not performed yet");
+ LOG(ERROR) << StringPrintf("Error: NDEF detection not performed yet");
return (NFC_STATUS_NOT_INITIALIZED);
} else if (p_cb->ndef_attrib.ln == 0) {
- RW_TRACE_ERROR0("Type 3 tag contains empty NDEF message");
+ LOG(ERROR) << StringPrintf("Type 3 tag contains empty NDEF message");
return (NFC_STATUS_FAILED);
}
@@ -2611,17 +2585,18 @@
tNFC_STATUS retval = NFC_STATUS_OK;
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
- RW_TRACE_API1("RW_T3tUpdateNDef (len=%i)", len);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW_T3tUpdateNDef (len=%i)", len);
/* Check if we are in valid state to handle this API */
if (p_cb->rw_state != RW_T3T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: invalid state to handle API (0x%x)",
- p_cb->rw_state);
+ LOG(ERROR) << StringPrintf("Error: invalid state to handle API (0x%x)",
+ p_cb->rw_state);
return (NFC_STATUS_FAILED);
} else if (p_cb->ndef_attrib.status !=
NFC_STATUS_OK) /* NDEF detection not performed yet? */
{
- RW_TRACE_ERROR0("Error: NDEF detection not performed yet");
+ LOG(ERROR) << StringPrintf("Error: NDEF detection not performed yet");
return (NFC_STATUS_NOT_INITIALIZED);
} else if (len > (((uint32_t)p_cb->ndef_attrib.nmaxb) *
16)) /* Len exceed's tag's NDEF memory? */
@@ -2670,12 +2645,13 @@
tNFC_STATUS retval = NFC_STATUS_OK;
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
- RW_TRACE_API1("RW_T3tCheck (num_blocks = %i)", num_blocks);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW_T3tCheck (num_blocks = %i)", num_blocks);
/* Check if we are in valid state to handle this API */
if (p_cb->rw_state != RW_T3T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: invalid state to handle API (0x%x)",
- p_cb->rw_state);
+ LOG(ERROR) << StringPrintf("Error: invalid state to handle API (0x%x)",
+ p_cb->rw_state);
return (NFC_STATUS_FAILED);
}
@@ -2710,12 +2686,13 @@
tNFC_STATUS retval = NFC_STATUS_OK;
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
- RW_TRACE_API1("RW_T3tUpdate (num_blocks = %i)", num_blocks);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW_T3tUpdate (num_blocks = %i)", num_blocks);
/* Check if we are in valid state to handle this API */
if (p_cb->rw_state != RW_T3T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: invalid state to handle API (0x%x)",
- p_cb->rw_state);
+ LOG(ERROR) << StringPrintf("Error: invalid state to handle API (0x%x)",
+ p_cb->rw_state);
return (NFC_STATUS_FAILED);
}
@@ -2746,7 +2723,7 @@
tRW_DATA evt_data;
tRW_CB* p_rw_cb = &rw_cb;
- RW_TRACE_API0("RW_T3tPresenceCheck");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* If RW_SelectTagType was not called (no conn_callback) return failure */
if (!(p_rw_cb->p_cback)) {
@@ -2761,7 +2738,8 @@
else if (p_rw_cb->tcb.t3t.rw_state == RW_T3T_STATE_COMMAND_PENDING) {
/* If already performing presence check, return error */
if (p_rw_cb->tcb.t3t.flags & RW_T3T_FL_W4_PRESENCE_CHECK_POLL_RSP) {
- RW_TRACE_DEBUG0("RW_T3tPresenceCheck already in progress");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW_T3tPresenceCheck already in progress");
retval = NFC_STATUS_FAILED;
}
/* If busy with any other command, assume that the tag is present */
@@ -2780,7 +2758,7 @@
/* start timer for waiting for responses */
rw_t3t_start_poll_timer(&p_rw_cb->tcb.t3t);
} else {
- RW_TRACE_DEBUG1(
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
"RW_T3tPresenceCheck error sending NCI_RF_T3T_POLLING cmd (status = "
"0x%0x)",
retval);
@@ -2807,12 +2785,12 @@
tNFC_STATUS retval = NFC_STATUS_OK;
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
- RW_TRACE_API0("RW_T3tPoll");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Check if we are in valid state to handle this API */
if (p_cb->rw_state != RW_T3T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: invalid state to handle API (0x%x)",
- p_cb->rw_state);
+ LOG(ERROR) << StringPrintf("Error: invalid state to handle API (0x%x)",
+ p_cb->rw_state);
return (NFC_STATUS_FAILED);
}
@@ -2851,12 +2829,13 @@
tNFC_STATUS retval = NFC_STATUS_OK;
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
- RW_TRACE_API1("RW_T3tSendRawFrame (len = %i)", len);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW_T3tSendRawFrame (len = %i)", len);
/* Check if we are in valid state to handle this API */
if (p_cb->rw_state != RW_T3T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: invalid state to handle API (0x%x)",
- p_cb->rw_state);
+ LOG(ERROR) << StringPrintf("Error: invalid state to handle API (0x%x)",
+ p_cb->rw_state);
return (NFC_STATUS_FAILED);
}
@@ -2887,12 +2866,12 @@
tNFC_STATUS retval = NFC_STATUS_OK;
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
- RW_TRACE_API0("RW_T3tGetSystemCodes");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Check if we are in valid state to handle this API */
if (p_cb->rw_state != RW_T3T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: invalid state to handle API (0x%x)",
- p_cb->rw_state);
+ LOG(ERROR) << StringPrintf("Error: invalid state to handle API (0x%x)",
+ p_cb->rw_state);
return (NFC_STATUS_FAILED);
} else {
retval = (tNFC_STATUS)nci_snd_t3t_polling(0xFFFF, T3T_POLL_RC_SC, 0);
@@ -2932,12 +2911,12 @@
tNFC_STATUS retval = NFC_STATUS_OK;
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
- RW_TRACE_API0("RW_T3tFormatNDef");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
/* Check if we are in valid state to handle this API */
if (p_cb->rw_state != RW_T3T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: invalid state to handle API (0x%x)",
- p_cb->rw_state);
+ LOG(ERROR) << StringPrintf("Error: invalid state to handle API (0x%x)",
+ p_cb->rw_state);
return (NFC_STATUS_FAILED);
} else {
/* Poll tag, to see if Felica-Lite system is supported */
@@ -2978,19 +2957,20 @@
tRW_T3T_CB* p_cb = &rw_cb.tcb.t3t;
tRW_DATA evt_data;
- RW_TRACE_API1("RW_T3tSetReadOnly (): b_hard_lock=%d", b_hard_lock);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("b_hard_lock=%d", b_hard_lock);
/* Check if we are in valid state to handle this API */
if (p_cb->rw_state != RW_T3T_STATE_IDLE) {
- RW_TRACE_ERROR1("Error: invalid state to handle API (0x%x)",
- p_cb->rw_state);
+ LOG(ERROR) << StringPrintf("Error: invalid state to handle API (0x%x)",
+ p_cb->rw_state);
return (NFC_STATUS_FAILED);
}
if (p_cb->ndef_attrib.status !=
NFC_STATUS_OK) /* NDEF detection not performed yet? */
{
- RW_TRACE_ERROR0("Error: NDEF detection not performed yet");
+ LOG(ERROR) << StringPrintf("Error: NDEF detection not performed yet");
return (NFC_STATUS_NOT_INITIALIZED);
}
diff --git a/src/nfc/tags/rw_t4t.c b/src/nfc/tags/rw_t4t.cc
similarity index 84%
rename from src/nfc/tags/rw_t4t.c
rename to src/nfc/tags/rw_t4t.cc
index e7b3c96..fd0bbdf 100644
--- a/src/nfc/tags/rw_t4t.c
+++ b/src/nfc/tags/rw_t4t.cc
@@ -23,16 +23,22 @@
*
******************************************************************************/
#include <string.h>
-#include "bt_types.h"
-#include "nfc_target.h"
-#include "trace_api.h"
-#include "gki.h"
+#include <android-base/stringprintf.h>
+#include <base/logging.h>
+
+#include "nfc_target.h"
+
+#include "bt_types.h"
#include "nfc_api.h"
#include "nfc_int.h"
#include "rw_api.h"
#include "rw_int.h"
-#include "tags_int.h"
+#include "trace_api.h"
+
+using android::base::StringPrintf;
+
+extern bool nfc_debug_enabled;
/* main state */
/* T4T is not activated */
@@ -82,10 +88,8 @@
#define RW_T4T_SUBSTATE_WAIT_WRITE_CC 0x0F
#define RW_T4T_SUBSTATE_WAIT_WRITE_NDEF 0x10
-#if (BT_TRACE_VERBOSE == TRUE)
-static char* rw_t4t_get_state_name(uint8_t state);
-static char* rw_t4t_get_sub_state_name(uint8_t sub_state);
-#endif
+static std::string rw_t4t_get_state_name(uint8_t state);
+static std::string rw_t4t_get_sub_state_name(uint8_t sub_state);
static bool rw_t4t_send_to_lower(NFC_HDR* p_c_apdu);
static bool rw_t4t_select_file(uint16_t file_id);
@@ -124,12 +128,8 @@
**
*******************************************************************************/
static bool rw_t4t_send_to_lower(NFC_HDR* p_c_apdu) {
-#if (BT_TRACE_PROTOCOL == TRUE)
- DispRWT4Tags(p_c_apdu, false);
-#endif
-
if (NFC_SendData(NFC_RF_CONN_ID, p_c_apdu) != NFC_STATUS_OK) {
- RW_TRACE_ERROR0("rw_t4t_send_to_lower (): NFC_SendData () failed");
+ LOG(ERROR) << StringPrintf("failed");
return false;
}
@@ -155,7 +155,7 @@
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_get_hw_version (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -192,7 +192,7 @@
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_get_sw_version (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -272,7 +272,7 @@
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_get_uid_details (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -311,7 +311,7 @@
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_create_app (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -361,7 +361,7 @@
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_select_app (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -406,7 +406,7 @@
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_create_ccfile (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -456,7 +456,7 @@
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_create_ndef (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -509,7 +509,7 @@
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_write_cc (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -560,7 +560,7 @@
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_write_ndef (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -604,12 +604,12 @@
NFC_HDR* p_c_apdu;
uint8_t* p;
- RW_TRACE_DEBUG1("rw_t4t_select_file (): File ID:0x%04X", file_id);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("File ID:0x%04X", file_id);
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_select_file (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -655,13 +655,13 @@
NFC_HDR* p_c_apdu;
uint8_t* p;
- RW_TRACE_DEBUG3("rw_t4t_read_file () offset:%d, length:%d, is_continue:%d, ",
- offset, length, is_continue);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "offset:%d, length:%d, is_continue:%d, ", offset, length, is_continue);
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_read_file (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -709,12 +709,12 @@
NFC_HDR* p_c_apdu;
uint8_t* p;
- RW_TRACE_DEBUG1("rw_t4t_update_nlen () NLEN:%d", ndef_len);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("NLEN:%d", ndef_len);
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_update_nlen (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -751,13 +751,13 @@
uint8_t* p;
uint16_t length;
- RW_TRACE_DEBUG2("rw_t4t_update_file () rw_offset:%d, rw_length:%d",
- p_t4t->rw_offset, p_t4t->rw_length);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "rw_offset:%d, rw_length:%d", p_t4t->rw_offset, p_t4t->rw_length);
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_write_file (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -807,13 +807,13 @@
NFC_HDR* p_c_apdu;
uint8_t* p;
- RW_TRACE_DEBUG0(
- "rw_t4t_update_cc_to_readonly (): Remove Write access from CC");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Remove Write access from CC");
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_update_cc_to_readonly (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -861,12 +861,12 @@
NFC_HDR* p_c_apdu;
uint8_t* p;
- RW_TRACE_DEBUG1("rw_t4t_select_application () version:0x%X", version);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("version:0x%X", version);
p_c_apdu = (NFC_HDR*)GKI_getpoolbuf(NFC_RW_POOL_ID);
if (!p_c_apdu) {
- RW_TRACE_ERROR0("rw_t4t_select_application (): Cannot allocate buffer");
+ LOG(ERROR) << StringPrintf("Cannot allocate buffer");
return false;
}
@@ -918,32 +918,31 @@
static bool rw_t4t_validate_cc_file(void) {
tRW_T4T_CB* p_t4t = &rw_cb.tcb.t4t;
- RW_TRACE_DEBUG0("rw_t4t_validate_cc_file ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (p_t4t->cc_file.cclen < T4T_CC_FILE_MIN_LEN) {
- RW_TRACE_ERROR1("rw_t4t_validate_cc_file (): CCLEN (%d) is too short",
- p_t4t->cc_file.cclen);
+ LOG(ERROR) << StringPrintf("CCLEN (%d) is too short", p_t4t->cc_file.cclen);
return false;
}
if (T4T_GET_MAJOR_VERSION(p_t4t->cc_file.version) !=
T4T_GET_MAJOR_VERSION(p_t4t->version)) {
- RW_TRACE_ERROR2(
- "rw_t4t_validate_cc_file (): Peer version (0x%02X) is matched to ours "
+ LOG(ERROR) << StringPrintf(
+ "Peer version (0x%02X) is matched to ours "
"(0x%02X)",
p_t4t->cc_file.version, p_t4t->version);
return false;
}
if (p_t4t->cc_file.max_le < 0x000F) {
- RW_TRACE_ERROR1("rw_t4t_validate_cc_file (): MaxLe (%d) is too small",
- p_t4t->cc_file.max_le);
+ LOG(ERROR) << StringPrintf("MaxLe (%d) is too small",
+ p_t4t->cc_file.max_le);
return false;
}
if (p_t4t->cc_file.max_lc < 0x0001) {
- RW_TRACE_ERROR1("rw_t4t_validate_cc_file (): MaxLc (%d) is too small",
- p_t4t->cc_file.max_lc);
+ LOG(ERROR) << StringPrintf("MaxLc (%d) is too small",
+ p_t4t->cc_file.max_lc);
return false;
}
@@ -955,31 +954,28 @@
(p_t4t->cc_file.ndef_fc.file_id == 0x3F00) ||
(p_t4t->cc_file.ndef_fc.file_id == 0x3FFF) ||
(p_t4t->cc_file.ndef_fc.file_id == 0xFFFF)) {
- RW_TRACE_ERROR1("rw_t4t_validate_cc_file (): File ID (0x%04X) is invalid",
- p_t4t->cc_file.ndef_fc.file_id);
+ LOG(ERROR) << StringPrintf("File ID (0x%04X) is invalid",
+ p_t4t->cc_file.ndef_fc.file_id);
return false;
}
if ((p_t4t->cc_file.ndef_fc.max_file_size < 0x0005) ||
(p_t4t->cc_file.ndef_fc.max_file_size == 0xFFFF)) {
- RW_TRACE_ERROR1(
- "rw_t4t_validate_cc_file (): max_file_size (%d) is reserved",
- p_t4t->cc_file.ndef_fc.max_file_size);
+ LOG(ERROR) << StringPrintf("max_file_size (%d) is reserved",
+ p_t4t->cc_file.ndef_fc.max_file_size);
return false;
}
if (p_t4t->cc_file.ndef_fc.read_access != T4T_FC_READ_ACCESS) {
- RW_TRACE_ERROR1(
- "rw_t4t_validate_cc_file (): Read Access (0x%02X) is invalid",
- p_t4t->cc_file.ndef_fc.read_access);
+ LOG(ERROR) << StringPrintf("Read Access (0x%02X) is invalid",
+ p_t4t->cc_file.ndef_fc.read_access);
return false;
}
if ((p_t4t->cc_file.ndef_fc.write_access != T4T_FC_WRITE_ACCESS) &&
(p_t4t->cc_file.ndef_fc.write_access < T4T_FC_WRITE_ACCESS_PROP_START)) {
- RW_TRACE_ERROR1(
- "rw_t4t_validate_cc_file (): Write Access (0x%02X) is invalid",
- p_t4t->cc_file.ndef_fc.write_access);
+ LOG(ERROR) << StringPrintf("Write Access (0x%02X) is invalid",
+ p_t4t->cc_file.ndef_fc.write_access);
return false;
}
@@ -1000,8 +996,8 @@
tRW_DATA rw_data;
tRW_EVENT event;
- RW_TRACE_DEBUG4(
- "rw_t4t_handle_error (): status:0x%02X, sw1:0x%02X, sw2:0x%02X, "
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "status:0x%02X, sw1:0x%02X, sw2:0x%02X, "
"state:0x%X",
status, sw1, sw2, p_t4t->state);
@@ -1067,17 +1063,13 @@
*******************************************************************************/
static void rw_t4t_sm_ndef_format(NFC_HDR* p_r_apdu) {
tRW_T4T_CB* p_t4t = &rw_cb.tcb.t4t;
- uint8_t *p, type, length;
- uint16_t status_words, nlen;
+ uint8_t* p;
+ uint16_t status_words;
tRW_DATA rw_data;
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("rw_t4t_sm_ndef_format (): sub_state:%s (%d)",
- rw_t4t_get_sub_state_name(p_t4t->sub_state),
- p_t4t->sub_state);
-#else
- RW_TRACE_DEBUG1("rw_t4t_sm_ndef_format (): sub_state=%d", p_t4t->sub_state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "sub_state:%s (%d)", rw_t4t_get_sub_state_name(p_t4t->sub_state).c_str(),
+ p_t4t->sub_state);
/* get status words */
p = (uint8_t*)(p_r_apdu + 1) + p_r_apdu->offset;
@@ -1227,15 +1219,14 @@
(*(rw_cb.p_cback))(RW_T4T_NDEF_FORMAT_CPLT_EVT, &rw_data);
- RW_TRACE_DEBUG0(
- "rw_t4t_ndef_format (): Sent RW_T4T_NDEF_FORMAT_CPLT_EVT");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Sent RW_T4T_NDEF_FORMAT_CPLT_EVT");
}
}
break;
default:
- RW_TRACE_ERROR1("rw_t4t_sm_ndef_format (): unknown sub_state=%d",
- p_t4t->sub_state);
+ LOG(ERROR) << StringPrintf("unknown sub_state=%d", p_t4t->sub_state);
rw_t4t_handle_error(NFC_STATUS_FAILED, 0, 0);
break;
}
@@ -1256,13 +1247,9 @@
uint16_t status_words, nlen;
tRW_DATA rw_data;
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("rw_t4t_sm_detect_ndef (): sub_state:%s (%d)",
- rw_t4t_get_sub_state_name(p_t4t->sub_state),
- p_t4t->sub_state);
-#else
- RW_TRACE_DEBUG1("rw_t4t_sm_detect_ndef (): sub_state=%d", p_t4t->sub_state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "sub_state:%s (%d)", rw_t4t_get_sub_state_name(p_t4t->sub_state).c_str(),
+ p_t4t->sub_state);
/* get status words */
p = (uint8_t*)(p_r_apdu + 1) + p_r_apdu->offset;
@@ -1275,8 +1262,8 @@
(p_t4t->version == T4T_VERSION_2_0)) {
p_t4t->version = T4T_VERSION_1_0;
- RW_TRACE_DEBUG1("rw_t4t_sm_detect_ndef (): retry with version=0x%02X",
- p_t4t->version);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("retry with version=0x%02X", p_t4t->version);
if (!rw_t4t_select_application(T4T_VERSION_1_0)) {
rw_t4t_handle_error(NFC_STATUS_FAILED, 0, 0);
@@ -1331,22 +1318,26 @@
BE_STREAM_TO_UINT8(p_t4t->cc_file.ndef_fc.read_access, p);
BE_STREAM_TO_UINT8(p_t4t->cc_file.ndef_fc.write_access, p);
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG0("Capability Container (CC) file");
- RW_TRACE_DEBUG1(" CCLEN: 0x%04X", p_t4t->cc_file.cclen);
- RW_TRACE_DEBUG1(" Version:0x%02X", p_t4t->cc_file.version);
- RW_TRACE_DEBUG1(" MaxLe: 0x%04X", p_t4t->cc_file.max_le);
- RW_TRACE_DEBUG1(" MaxLc: 0x%04X", p_t4t->cc_file.max_lc);
- RW_TRACE_DEBUG0(" NDEF File Control TLV");
- RW_TRACE_DEBUG1(" FileID: 0x%04X",
- p_t4t->cc_file.ndef_fc.file_id);
- RW_TRACE_DEBUG1(" MaxFileSize: 0x%04X",
- p_t4t->cc_file.ndef_fc.max_file_size);
- RW_TRACE_DEBUG1(" ReadAccess: 0x%02X",
- p_t4t->cc_file.ndef_fc.read_access);
- RW_TRACE_DEBUG1(" WriteAccess: 0x%02X",
- p_t4t->cc_file.ndef_fc.write_access);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Capability Container (CC) file");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(" CCLEN: 0x%04X", p_t4t->cc_file.cclen);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(" Version:0x%02X", p_t4t->cc_file.version);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(" MaxLe: 0x%04X", p_t4t->cc_file.max_le);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(" MaxLc: 0x%04X", p_t4t->cc_file.max_lc);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf(" NDEF File Control TLV");
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ " FileID: 0x%04X", p_t4t->cc_file.ndef_fc.file_id);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ " MaxFileSize: 0x%04X", p_t4t->cc_file.ndef_fc.max_file_size);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ " ReadAccess: 0x%02X", p_t4t->cc_file.ndef_fc.read_access);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ " WriteAccess: 0x%02X", p_t4t->cc_file.ndef_fc.write_access);
if (rw_t4t_validate_cc_file()) {
if (!rw_t4t_select_file(p_t4t->cc_file.ndef_fc.file_id)) {
@@ -1431,13 +1422,13 @@
(*(rw_cb.p_cback))(RW_T4T_NDEF_DETECT_EVT, &rw_data);
- RW_TRACE_DEBUG0(
- "rw_t4t_sm_detect_ndef (): Sent RW_T4T_NDEF_DETECT_EVT");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Sent RW_T4T_NDEF_DETECT_EVT");
}
} else {
/* NLEN should be less than max file size */
- RW_TRACE_ERROR2(
- "rw_t4t_sm_detect_ndef (): NLEN (%d) + 2 must be <= max file "
+ LOG(ERROR) << StringPrintf(
+ "NLEN (%d) + 2 must be <= max file "
"size (%d)",
nlen, p_t4t->cc_file.ndef_fc.max_file_size);
@@ -1446,9 +1437,9 @@
}
} else {
/* response payload size should be T4T_FILE_LENGTH_SIZE */
- RW_TRACE_ERROR2(
- "rw_t4t_sm_detect_ndef (): Length (%d) of R-APDU must be %d",
- p_r_apdu->len, T4T_FILE_LENGTH_SIZE + T4T_RSP_STATUS_WORDS_SIZE);
+ LOG(ERROR) << StringPrintf(
+ "Length (%d) of R-APDU must be %d", p_r_apdu->len,
+ T4T_FILE_LENGTH_SIZE + T4T_RSP_STATUS_WORDS_SIZE);
p_t4t->ndef_status &= ~(RW_T4T_NDEF_STATUS_NDEF_DETECTED);
rw_t4t_handle_error(NFC_STATUS_BAD_RESP, 0, 0);
@@ -1456,8 +1447,7 @@
break;
default:
- RW_TRACE_ERROR1("rw_t4t_sm_detect_ndef (): unknown sub_state=%d",
- p_t4t->sub_state);
+ LOG(ERROR) << StringPrintf("unknown sub_state=%d", p_t4t->sub_state);
rw_t4t_handle_error(NFC_STATUS_FAILED, 0, 0);
break;
}
@@ -1478,13 +1468,9 @@
uint16_t status_words;
tRW_DATA rw_data;
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("rw_t4t_sm_read_ndef (): sub_state:%s (%d)",
- rw_t4t_get_sub_state_name(p_t4t->sub_state),
- p_t4t->sub_state);
-#else
- RW_TRACE_DEBUG1("rw_t4t_sm_read_ndef (): sub_state=%d", p_t4t->sub_state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "sub_state:%s (%d)", rw_t4t_get_sub_state_name(p_t4t->sub_state).c_str(),
+ p_t4t->sub_state);
/* get status words */
p = (uint8_t*)(p_r_apdu + 1) + p_r_apdu->offset;
@@ -1523,8 +1509,8 @@
(*(rw_cb.p_cback))(RW_T4T_NDEF_READ_CPLT_EVT, &rw_data);
- RW_TRACE_DEBUG0(
- "rw_t4t_sm_read_ndef (): Sent RW_T4T_NDEF_READ_CPLT_EVT");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Sent RW_T4T_NDEF_READ_CPLT_EVT");
}
p_r_apdu = NULL;
@@ -1533,8 +1519,8 @@
p_t4t->state = RW_T4T_STATE_IDLE;
}
} else {
- RW_TRACE_ERROR2(
- "rw_t4t_sm_read_ndef (): invalid payload length (%d), rw_length "
+ LOG(ERROR) << StringPrintf(
+ "invalid payload length (%d), rw_length "
"(%d)",
p_r_apdu->len, p_t4t->rw_length);
rw_t4t_handle_error(NFC_STATUS_BAD_RESP, 0, 0);
@@ -1542,8 +1528,7 @@
break;
default:
- RW_TRACE_ERROR1("rw_t4t_sm_read_ndef (): unknown sub_state = %d",
- p_t4t->sub_state);
+ LOG(ERROR) << StringPrintf("unknown sub_state = %d", p_t4t->sub_state);
rw_t4t_handle_error(NFC_STATUS_FAILED, 0, 0);
break;
}
@@ -1566,13 +1551,9 @@
uint16_t status_words;
tRW_DATA rw_data;
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("rw_t4t_sm_update_ndef (): sub_state:%s (%d)",
- rw_t4t_get_sub_state_name(p_t4t->sub_state),
- p_t4t->sub_state);
-#else
- RW_TRACE_DEBUG1("rw_t4t_sm_update_ndef (): sub_state=%d", p_t4t->sub_state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "sub_state:%s (%d)", rw_t4t_get_sub_state_name(p_t4t->sub_state).c_str(),
+ p_t4t->sub_state);
/* Get status words */
p = (uint8_t*)(p_r_apdu + 1) + p_r_apdu->offset;
@@ -1604,8 +1585,8 @@
rw_data.status = NFC_STATUS_OK;
(*(rw_cb.p_cback))(RW_T4T_NDEF_UPDATE_CPLT_EVT, &rw_data);
- RW_TRACE_DEBUG0(
- "rw_t4t_sm_update_ndef (): Sent RW_T4T_NDEF_UPDATE_CPLT_EVT");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Sent RW_T4T_NDEF_UPDATE_CPLT_EVT");
}
}
break;
@@ -1631,8 +1612,7 @@
break;
default:
- RW_TRACE_ERROR1("rw_t4t_sm_update_ndef (): unknown sub_state = %d",
- p_t4t->sub_state);
+ LOG(ERROR) << StringPrintf("unknown sub_state = %d", p_t4t->sub_state);
rw_t4t_handle_error(NFC_STATUS_FAILED, 0, 0);
break;
}
@@ -1653,13 +1633,9 @@
uint16_t status_words;
tRW_DATA rw_data;
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("rw_t4t_sm_set_readonly (): sub_state:%s (%d)",
- rw_t4t_get_sub_state_name(p_t4t->sub_state),
- p_t4t->sub_state);
-#else
- RW_TRACE_DEBUG1("rw_t4t_sm_set_readonly (): sub_state=%d", p_t4t->sub_state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "sub_state:%s (%d)", rw_t4t_get_sub_state_name(p_t4t->sub_state).c_str(),
+ p_t4t->sub_state);
/* Get status words */
p = (uint8_t*)(p_r_apdu + 1) + p_r_apdu->offset;
@@ -1702,14 +1678,14 @@
if (rw_cb.p_cback) {
rw_data.status = NFC_STATUS_OK;
- RW_TRACE_DEBUG0("rw_t4t_sm_set_readonly (): Sent RW_T4T_SET_TO_RO_EVT");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("Sent RW_T4T_SET_TO_RO_EVT");
(*(rw_cb.p_cback))(RW_T4T_SET_TO_RO_EVT, &rw_data);
}
break;
default:
- RW_TRACE_ERROR1("rw_t4t_sm_set_readonly (): unknown sub_state = %d",
- p_t4t->sub_state);
+ LOG(ERROR) << StringPrintf("unknown sub_state = %d", p_t4t->sub_state);
rw_t4t_handle_error(NFC_STATUS_FAILED, 0, 0);
break;
}
@@ -1725,12 +1701,12 @@
**
*******************************************************************************/
void rw_t4t_process_timeout(TIMER_LIST_ENT* p_tle) {
- RW_TRACE_DEBUG1("rw_t4t_process_timeout () event=%d", p_tle->event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event=%d", p_tle->event);
if (p_tle->event == NFC_TTYPE_RW_T4T_RESPONSE) {
rw_t4t_handle_error(NFC_STATUS_TIMEOUT, 0, 0);
} else {
- RW_TRACE_ERROR1("rw_t4t_process_timeout () unknown event=%d", p_tle->event);
+ LOG(ERROR) << StringPrintf("unknown event=%d", p_tle->event);
}
}
@@ -1746,7 +1722,8 @@
void rw_t4t_handle_isodep_nak_rsp(uint8_t status, bool is_ntf) {
tRW_DATA rw_data;
tRW_T4T_CB* p_t4t = &rw_cb.tcb.t4t;
- RW_TRACE_DEBUG1("rw_t4t_handle_isodep_nak_rsp %d", status);
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("rw_t4t_handle_isodep_nak_rsp %d", status);
if (is_ntf || (status != NFC_STATUS_OK)) {
rw_data.status = status;
nfc_stop_quick_timer(&p_t4t->timer);
@@ -1764,17 +1741,15 @@
** Returns none
**
*******************************************************************************/
-static void rw_t4t_data_cback(uint8_t conn_id, tNFC_CONN_EVT event,
- tNFC_CONN* p_data) {
+static void rw_t4t_data_cback(__attribute__((unused)) uint8_t conn_id,
+ tNFC_CONN_EVT event, tNFC_CONN* p_data) {
tRW_T4T_CB* p_t4t = &rw_cb.tcb.t4t;
NFC_HDR* p_r_apdu;
tRW_DATA rw_data;
-#if (BT_TRACE_VERBOSE == TRUE)
uint8_t begin_state = p_t4t->state;
-#endif
- RW_TRACE_DEBUG1("rw_t4t_data_cback () event = 0x%X", event);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("event = 0x%X", event);
nfc_stop_quick_timer(&p_t4t->timer);
switch (event) {
@@ -1810,33 +1785,22 @@
return;
}
-#if (BT_TRACE_PROTOCOL == TRUE)
- if (p_t4t->state != RW_T4T_STATE_IDLE) DispRWT4Tags(p_r_apdu, true);
-#endif
-
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("RW T4T state: <%s (%d)>",
- rw_t4t_get_state_name(p_t4t->state), p_t4t->state);
-#else
- RW_TRACE_DEBUG1("RW T4T state: %d", p_t4t->state);
-#endif
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+ "RW T4T state: <%s (%d)>", rw_t4t_get_state_name(p_t4t->state).c_str(),
+ p_t4t->state);
switch (p_t4t->state) {
case RW_T4T_STATE_IDLE:
/* Unexpected R-APDU, it should be raw frame response */
/* forward to upper layer without parsing */
-#if (BT_TRACE_VERBOSE == TRUE)
- RW_TRACE_DEBUG2("RW T4T Raw Frame: Len [0x%X] Status [%s]", p_r_apdu->len,
- NFC_GetStatusName(p_data->data.status));
-#else
- RW_TRACE_DEBUG2("RW T4T Raw Frame: Len [0x%X] Status [0x%X]",
- p_r_apdu->len, p_data->data.status);
-#endif
- if (rw_cb.p_cback) {
- rw_data.raw_frame.status = p_data->data.status;
- rw_data.raw_frame.p_data = p_r_apdu;
- (*(rw_cb.p_cback))(RW_T4T_RAW_FRAME_EVT, &rw_data);
- p_r_apdu = NULL;
+DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW T4T Raw Frame: Len [0x%X] Status [%s]", p_r_apdu->len,
+ NFC_GetStatusName(p_data->data.status).c_str());
+if (rw_cb.p_cback) {
+ rw_data.raw_frame.status = p_data->data.status;
+ rw_data.raw_frame.p_data = p_r_apdu;
+ (*(rw_cb.p_cback))(RW_T4T_RAW_FRAME_EVT, &rw_data);
+ p_r_apdu = NULL;
} else {
GKI_freebuf(p_r_apdu);
}
@@ -1869,18 +1833,17 @@
GKI_freebuf(p_r_apdu);
break;
default:
- RW_TRACE_ERROR1("rw_t4t_data_cback (): invalid state=%d", p_t4t->state);
+ LOG(ERROR) << StringPrintf("invalid state=%d", p_t4t->state);
GKI_freebuf(p_r_apdu);
break;
}
-#if (BT_TRACE_VERBOSE == TRUE)
if (begin_state != p_t4t->state) {
- RW_TRACE_DEBUG2("RW T4T state changed:<%s> -> <%s>",
- rw_t4t_get_state_name(begin_state),
- rw_t4t_get_state_name(p_t4t->state));
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("RW T4T state changed:<%s> -> <%s>",
+ rw_t4t_get_state_name(begin_state).c_str(),
+ rw_t4t_get_state_name(p_t4t->state).c_str());
}
-#endif
}
/*******************************************************************************
@@ -1893,12 +1856,11 @@
**
*******************************************************************************/
tNFC_STATUS RW_T4tFormatNDef(void) {
- RW_TRACE_API0("RW_T4tFormatNDef ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.t4t.state != RW_T4T_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_T4tFormatNDef ():Unable to start command at state (0x%X)",
- rw_cb.tcb.t4t.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.t4t.state);
return NFC_STATUS_FAILED;
}
@@ -1926,7 +1888,7 @@
tNFC_STATUS rw_t4t_select(void) {
tRW_T4T_CB* p_t4t = &rw_cb.tcb.t4t;
- RW_TRACE_DEBUG0("rw_t4t_select ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
NFC_SetStaticRfCback(rw_t4t_data_cback);
@@ -1956,12 +1918,11 @@
**
*******************************************************************************/
tNFC_STATUS RW_T4tDetectNDef(void) {
- RW_TRACE_API0("RW_T4tDetectNDef ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.t4t.state != RW_T4T_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_T4tDetectNDef ():Unable to start command at state (0x%X)",
- rw_cb.tcb.t4t.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.t4t.state);
return NFC_STATUS_FAILED;
}
@@ -2002,11 +1963,11 @@
**
*******************************************************************************/
tNFC_STATUS RW_T4tReadNDef(void) {
- RW_TRACE_API0("RW_T4tReadNDef ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.t4t.state != RW_T4T_STATE_IDLE) {
- RW_TRACE_ERROR1("RW_T4tReadNDef ():Unable to start command at state (0x%X)",
- rw_cb.tcb.t4t.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.t4t.state);
return NFC_STATUS_FAILED;
}
@@ -2023,7 +1984,7 @@
return NFC_STATUS_OK;
} else {
- RW_TRACE_ERROR0("RW_T4tReadNDef ():No NDEF detected");
+ LOG(ERROR) << StringPrintf("No NDEF detected");
return NFC_STATUS_FAILED;
}
}
@@ -2046,12 +2007,11 @@
**
*******************************************************************************/
tNFC_STATUS RW_T4tUpdateNDef(uint16_t length, uint8_t* p_data) {
- RW_TRACE_API1("RW_T4tUpdateNDef () length:%d", length);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("length:%d", length);
if (rw_cb.tcb.t4t.state != RW_T4T_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_T4tUpdateNDef ():Unable to start command at state (0x%X)",
- rw_cb.tcb.t4t.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.t4t.state);
return NFC_STATUS_FAILED;
}
@@ -2059,14 +2019,14 @@
if (rw_cb.tcb.t4t.ndef_status & RW_T4T_NDEF_STATUS_NDEF_DETECTED) {
/* if read-only */
if (rw_cb.tcb.t4t.ndef_status & RW_T4T_NDEF_STATUS_NDEF_READ_ONLY) {
- RW_TRACE_ERROR0("RW_T4tUpdateNDef ():NDEF is read-only");
+ LOG(ERROR) << StringPrintf("NDEF is read-only");
return NFC_STATUS_FAILED;
}
if (rw_cb.tcb.t4t.cc_file.ndef_fc.max_file_size <
length + T4T_FILE_LENGTH_SIZE) {
- RW_TRACE_ERROR2(
- "RW_T4tUpdateNDef ():data (%d bytes) plus NLEN is more than max file "
+ LOG(ERROR) << StringPrintf(
+ "data (%d bytes) plus NLEN is more than max file "
"size (%d)",
length, rw_cb.tcb.t4t.cc_file.ndef_fc.max_file_size);
return NFC_STATUS_FAILED;
@@ -2089,7 +2049,7 @@
return NFC_STATUS_OK;
} else {
- RW_TRACE_ERROR0("RW_T4tUpdateNDef ():No NDEF detected");
+ LOG(ERROR) << StringPrintf("No NDEF detected");
return NFC_STATUS_FAILED;
}
}
@@ -2118,7 +2078,7 @@
bool status;
NFC_HDR* p_data;
- RW_TRACE_API1("RW_T4tPresenceCheck () %d", option);
+ DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%d", option);
/* If RW_SelectTagType was not called (no conn_callback) return failure */
if (!rw_cb.p_cback) {
@@ -2147,12 +2107,6 @@
}
} else if (option == RW_T4T_CHK_ISO_DEP_NAK_PRES_CHK) {
if (NFC_ISODEPNakPresCheck() == NFC_STATUS_OK) status = true;
- } else {
- /* use read binary on the given channel */
- rw_cb.tcb.t4t.channel = 0;
- if (option <= RW_T4T_CHK_READ_BINARY_CH3) rw_cb.tcb.t4t.channel = option;
- status = rw_t4t_read_file(0, 1, false);
- rw_cb.tcb.t4t.channel = 0;
}
if (status == true) {
@@ -2182,12 +2136,11 @@
tNFC_STATUS retval = NFC_STATUS_OK;
tRW_DATA evt_data;
- RW_TRACE_API0("RW_T4tSetNDefReadOnly ()");
+ DLOG_IF(INFO, nfc_debug_enabled) << __func__;
if (rw_cb.tcb.t4t.state != RW_T4T_STATE_IDLE) {
- RW_TRACE_ERROR1(
- "RW_T4tSetNDefReadOnly ():Unable to start command at state (0x%X)",
- rw_cb.tcb.t4t.state);
+ LOG(ERROR) << StringPrintf("Unable to start command at state (0x%X)",
+ rw_cb.tcb.t4t.state);
return NFC_STATUS_FAILED;
}
@@ -2195,7 +2148,8 @@
if (rw_cb.tcb.t4t.ndef_status & RW_T4T_NDEF_STATUS_NDEF_DETECTED) {
/* if read-only */
if (rw_cb.tcb.t4t.ndef_status & RW_T4T_NDEF_STATUS_NDEF_READ_ONLY) {
- RW_TRACE_API0("RW_T4tSetNDefReadOnly (): NDEF is already read-only");
+ DLOG_IF(INFO, nfc_debug_enabled)
+ << StringPrintf("NDEF is already read-only");
evt_data.status = NFC_STATUS_OK;
(*rw_cb.p_cback)(RW_T4T_SET_TO_RO_EVT, &evt_data);
@@ -2212,13 +2166,12 @@
return NFC_STATUS_OK;
} else {
- RW_TRACE_ERROR0("RW_T4tSetNDefReadOnly ():No NDEF detected");
+ LOG(ERROR) << StringPrintf("No NDEF detected");
return NFC_STATUS_FAILED;
}
return (retval);
}
-#if (BT_TRACE_VERBOSE == TRUE)
/*******************************************************************************
**
** Function rw_t4t_get_state_name
@@ -2230,25 +2183,24 @@
** Returns pointer to the name
**
*******************************************************************************/
-static char* rw_t4t_get_state_name(uint8_t state) {
+static std::string rw_t4t_get_state_name(uint8_t state) {
switch (state) {
case RW_T4T_STATE_NOT_ACTIVATED:
- return ("NOT_ACTIVATED");
+ return "NOT_ACTIVATED";
case RW_T4T_STATE_IDLE:
- return ("IDLE");
+ return "IDLE";
case RW_T4T_STATE_DETECT_NDEF:
- return ("NDEF_DETECTION");
+ return "NDEF_DETECTION";
case RW_T4T_STATE_READ_NDEF:
- return ("READ_NDEF");
+ return "READ_NDEF";
case RW_T4T_STATE_UPDATE_NDEF:
- return ("UPDATE_NDEF");
+ return "UPDATE_NDEF";
case RW_T4T_STATE_PRESENCE_CHECK:
- return ("PRESENCE_CHECK");
+ return "PRESENCE_CHECK";
case RW_T4T_STATE_SET_READ_ONLY:
- return ("SET_READ_ONLY");
-
+ return "SET_READ_ONLY";
default:
- return ("???? UNKNOWN STATE");
+ return "???? UNKNOWN STATE";
}
}
@@ -2263,43 +2215,41 @@
** Returns pointer to the name
**
*******************************************************************************/
-static char* rw_t4t_get_sub_state_name(uint8_t sub_state) {
+static std::string rw_t4t_get_sub_state_name(uint8_t sub_state) {
switch (sub_state) {
case RW_T4T_SUBSTATE_WAIT_SELECT_APP:
- return ("WAIT_SELECT_APP");
+ return "WAIT_SELECT_APP";
case RW_T4T_SUBSTATE_WAIT_SELECT_CC:
- return ("WAIT_SELECT_CC");
+ return "WAIT_SELECT_CC";
case RW_T4T_SUBSTATE_WAIT_CC_FILE:
- return ("WAIT_CC_FILE");
+ return "WAIT_CC_FILE";
case RW_T4T_SUBSTATE_WAIT_SELECT_NDEF_FILE:
- return ("WAIT_SELECT_NDEF_FILE");
+ return "WAIT_SELECT_NDEF_FILE";
case RW_T4T_SUBSTATE_WAIT_READ_NLEN:
- return ("WAIT_READ_NLEN");
-
+ return "WAIT_READ_NLEN";
case RW_T4T_SUBSTATE_WAIT_READ_RESP:
- return ("WAIT_READ_RESP");
+ return "WAIT_READ_RESP";
case RW_T4T_SUBSTATE_WAIT_UPDATE_RESP:
- return ("WAIT_UPDATE_RESP");
+ return "WAIT_UPDATE_RESP";
case RW_T4T_SUBSTATE_WAIT_UPDATE_NLEN:
- return ("WAIT_UPDATE_NLEN");
+ return "WAIT_UPDATE_NLEN";
case RW_T4T_SUBSTATE_WAIT_GET_HW_VERSION:
- return ("WAIT_GET_HW_VERSION");
+ return "WAIT_GET_HW_VERSION";
case RW_T4T_SUBSTATE_WAIT_GET_SW_VERSION:
- return ("WAIT_GET_SW_VERSION");
+ return "WAIT_GET_SW_VERSION";
case RW_T4T_SUBSTATE_WAIT_GET_UID:
- return ("WAIT_GET_UID");
+ return "WAIT_GET_UID";
case RW_T4T_SUBSTATE_WAIT_CREATE_APP:
- return ("WAIT_CREATE_APP");
+ return "WAIT_CREATE_APP";
case RW_T4T_SUBSTATE_WAIT_CREATE_CC:
- return ("WAIT_CREATE_CC");
+ return "WAIT_CREATE_CC";
case RW_T4T_SUBSTATE_WAIT_CREATE_NDEF:
- return ("WAIT_CREATE_NDEF");
+ return "WAIT_CREATE_NDEF";
case RW_T4T_SUBSTATE_WAIT_WRITE_CC:
- return ("WAIT_WRITE_CC");
+ return "WAIT_WRITE_CC";
case RW_T4T_SUBSTATE_WAIT_WRITE_NDEF:
- return ("WAIT_WRITE_NDEF");
+ return "WAIT_WRITE_NDEF";
default:
- return ("???? UNKNOWN SUBSTATE");
+ return "???? UNKNOWN SUBSTATE";
}
}
-#endif
diff --git a/src/nfc/tags/tags_int.c b/src/nfc/tags/tags_int.cc
similarity index 98%
rename from src/nfc/tags/tags_int.c
rename to src/nfc/tags/tags_int.cc
index b99d63d..71d9c42 100644
--- a/src/nfc/tags/tags_int.c
+++ b/src/nfc/tags/tags_int.cc
@@ -25,10 +25,8 @@
#include "bt_types.h"
#include "nfc_target.h"
-#include "nfc_api.h"
#include "rw_api.h"
#include "rw_int.h"
-#include "tags_int.h"
#define T1T_MAX_NUM_OPCODES 9
#define T1T_STATIC_OPCODES 5
@@ -88,14 +86,12 @@
const uint8_t t4t_v20_ndef_tag_aid[T4T_V20_NDEF_TAG_AID_LEN] = {
0xD2, 0x76, 0x00, 0x00, 0x85, 0x01, 0x01};
-#if (BT_TRACE_PROTOCOL == TRUE)
const char* const t1t_cmd_str[] = {
"T1T_RID", "T1T_RALL", "T1T_READ", "T1T_WRITE_E", "T1T_WRITE_NE",
"T1T_RSEG", "T1T_READ8", "T1T_WRITE_E8", "T1T_WRITE_NE8"};
const char* const t2t_cmd_str[] = {"T2T_CMD_READ", "T2T_CMD_WRITE",
"T2T_CMD_SEC_SEL"};
-#endif
static unsigned int tags_ones32(register unsigned int x);
@@ -225,7 +221,6 @@
return ((uint8_t)(p_info - t2t_cmd_rsp_infos) + RW_T2T_FIRST_EVT);
}
-#if (BT_TRACE_PROTOCOL == TRUE)
/*******************************************************************************
**
** Function t1t_info_to_str
@@ -261,7 +256,6 @@
else
return "";
}
-#endif
/*******************************************************************************
**
diff --git a/src/nfca_version.c b/src/nfca_version.c
deleted file mode 100644
index 6c83d7d..0000000
--- a/src/nfca_version.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/******************************************************************************
- *
- * 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.
- *
- ******************************************************************************/
-#include "bt_types.h"
-
-const uint8_t nfca_version_string[] = "NFCDROID-AOSP_M_00.01";
-
-/*
-// The following string should be manually updated to contain the
-// label of the NFA version being used (see stack-info.txt).
-//
-// NOTE: IF additional branches are used add a "+" at the end of the string
-*/
-const uint8_t nfa_version_string[] = "NFA_PI_1.03.66+";
diff --git a/src/static-lib-adapt/ProtoDispBluetoothHci.c b/src/static-lib-adapt/ProtoDispBluetoothHci.c
deleted file mode 100644
index 363f59d..0000000
--- a/src/static-lib-adapt/ProtoDispBluetoothHci.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2011-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.
- *
- ******************************************************************************/
-#include "ProtoDispBluetoothHci.h"
-#include <cutils/log.h>
-#include "_OverrideLog.h"
-#include "nfc_target.h"
-
-extern uint8_t* HCIDisp1(char* p_descr, uint8_t* p_data);
-extern uint32_t ScrProtocolTraceFlag;
-#define HCI_GEN_TRACE \
- (TRACE_CTRL_GENERAL | TRACE_LAYER_HCI | TRACE_ORG_PROTO_DISP | hci_trace_type)
-static uint8_t hci_trace_type = 0;
-static char* modes_str[] = {"No sleep mode",
- "UART",
- "UART with messaging",
- "USB",
- "H4IBSS",
- "USB with host wake",
- "SDIO",
- "UART CS-N",
- "SPI",
- "H5",
- "H4DS",
- "",
- "UART with BREAK"};
-static uint8_t* p_end_hci = NULL;
-static uint8_t* HCIDisp1Ext(char* p_descr, uint8_t* p_data, char* p_ext);
-static void disp_sleepmode(uint8_t* p);
-static void disp_sleepmode_evt(uint8_t* p);
-
-///////////////////////////////////////////
-///////////////////////////////////////////
-
-uint8_t* HCIDisp1Ext(char* p_descr, uint8_t* p_data, char* p_ext) {
- if (p_data == p_end_hci) return p_data;
-
- char buff[200];
-
- sprintf(buff, "%40s : %u (0x%02x): %s", p_descr, *p_data, *p_data, p_ext);
-
- ScrLog(HCI_GEN_TRACE, "%s", buff);
- return (p_data + 1);
-}
-
-/*******************************************************************************
-**
-** Function disp_sleepmode
-**
-** Description Displays VSC sleep mode
-**
-** Returns none.
-**
-*******************************************************************************/
-void disp_sleepmode(uint8_t* p) {
- hci_trace_type = TRACE_TYPE_CMD_TX;
- ScrLog(HCI_GEN_TRACE, "--");
- int len = p[2];
- ScrLog(HCI_GEN_TRACE,
- "SEND Command to HCI. Name: Set_Sleepmode_Param (Hex Code: 0xfc27 "
- "Param Len: %d)",
- len);
- p += 3;
- p_end_hci = p + len;
- p = HCIDisp1Ext("Sleep_Mode", p, (*p <= 12) ? modes_str[*p] : "");
- p = HCIDisp1("Idle_Threshold_Host", p);
- p = HCIDisp1("Idle_Threshold_HC", p);
- p = HCIDisp1Ext("BT_WAKE_Active_Mode", p,
- (*p == 0) ? "Active Low" : ((*p == 1) ? "Active High" : ""));
- p = HCIDisp1Ext("HOST_WAKE_Active_Mode", p,
- (*p == 0) ? "Active Low" : ((*p == 1) ? "Active High" : ""));
- p = HCIDisp1("Allow_Host_Sleep_During_SCO", p);
- p = HCIDisp1("Combine_Sleep_Mode_And_LPM", p);
- p = HCIDisp1("Enable_Tristate_Control_Of_UART_Tx_Line", p);
- p = HCIDisp1Ext("Active_Connection_Handling_On_Suspend", p,
- (*p == 0)
- ? "Maintain connections; sleep when timed activity allows"
- : ((*p == 1) ? "Sleep until resume is detected" : ""));
- p = HCIDisp1("Resume_Timeout", p);
- p = HCIDisp1("Enable_BREAK_To_Host", p);
- p = HCIDisp1("Pulsed_HOST_WAKE", p);
-
- ScrLog(HCI_GEN_TRACE, "--");
-}
-
-/*******************************************************************************
-**
-** Function disp_sleepmode_evt
-**
-** Description Displays HCI comand complete event for VSC sleep mode.
-**
-** Returns none.
-**
-*******************************************************************************/
-void disp_sleepmode_evt(uint8_t* p) {
- uint8_t len = p[1], status = p[5];
-
- hci_trace_type = TRACE_TYPE_EVT_RX;
- ScrLog(HCI_GEN_TRACE, "--");
- ScrLog(HCI_GEN_TRACE,
- "RCVD Event from HCI. Name: HCI_Command_Complete (Hex Code: 0x0e "
- "Param Len: %d)",
- len);
-
- p = HCIDisp1("Num HCI Cmd Packets", p + 2);
- ScrLog(HCI_GEN_TRACE, "%40s : 0xfc27 (Set_Sleepmode_Param)", "Cmd Code");
- ScrLog(HCI_GEN_TRACE, "%40s : %d (0x%02x) %s", "Status", status, status,
- (status == 0) ? "Success" : "");
- ScrLog(HCI_GEN_TRACE, "--");
-}
-
-/*******************************************************************************
-**
-** Function ProtoDispBluetoothHciCmd
-**
-** Description Display a HCI command string
-**
-** Returns:
-** Nothing
-**
-*******************************************************************************/
-void ProtoDispBluetoothHciCmd(NFC_HDR* p_buf) {
- if (!(ScrProtocolTraceFlag & SCR_PROTO_TRACE_HCI_SUMMARY)) return;
- uint8_t* p = (uint8_t*)(p_buf + 1) + p_buf->offset;
- if (*(p) == 0x27 && *(p + 1) == 0xfc) // opcode sleep mode
- {
- disp_sleepmode(p);
- }
-}
-
-/*******************************************************************************
-**
-** Function ProtoDispBluetoothHciEvt
-**
-** Description display a NCI event
-**
-** Returns:
-** Nothing
-**
-*******************************************************************************/
-void ProtoDispBluetoothHciEvt(NFC_HDR* pBuffer) {
- if (!(ScrProtocolTraceFlag & SCR_PROTO_TRACE_HCI_SUMMARY)) return;
-
- uint8_t* p = (uint8_t*)(pBuffer + 1) + pBuffer->offset;
- if (*p == 0x0e) // command complete
- {
- if (*(p + 1) == 4) // length
- {
- if (*(p + 3) == 0x27 && *(p + 4) == 0xfc) // opcode 0x27fc (sleep mode)
- {
- disp_sleepmode_evt(p);
- }
- }
- }
-}
diff --git a/src/udrv/include/upio.h b/src/udrv/include/upio.h
deleted file mode 100644
index 56ff81b..0000000
--- a/src/udrv/include/upio.h
+++ /dev/null
@@ -1,342 +0,0 @@
-/******************************************************************************
- *
- * Copyright (C) 2001-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.
- *
- ******************************************************************************/
-#ifndef UPIO_H
-#define UPIO_H
-
-/* Enumeration of UPIO features */
-/* Not all features enumerated here are supported by the hardware. */
-/* Use UPIO_Feature() to determine support of a particular feature. */
-enum {
- /* LEDs */
- UPIO_FEAT_LED1,
- UPIO_FEAT_LED2,
- UPIO_FEAT_LED3,
- UPIO_FEAT_LED4,
- UPIO_FEAT_LED5,
- UPIO_FEAT_LED6,
- UPIO_FEAT_LED7,
- UPIO_FEAT_LED8,
-
- /* Switches */
- UPIO_FEAT_SWITCH1,
- UPIO_FEAT_SWITCH2,
- UPIO_FEAT_SWITCH3,
- UPIO_FEAT_SWITCH4,
- UPIO_FEAT_SWITCH5,
- UPIO_FEAT_SWITCH6,
- UPIO_FEAT_SWITCH7,
- UPIO_FEAT_SWITCH8,
- UPIO_FEAT_SWITCH9,
- UPIO_FEAT_SWITCH10,
- UPIO_FEAT_SWITCH11,
- UPIO_FEAT_SWITCH12,
- UPIO_FEAT_SWITCH13,
- UPIO_FEAT_SWITCH14,
- UPIO_FEAT_SWITCH15,
- UPIO_FEAT_SWITCH16,
-
- /* Jumpers */
- UPIO_FEAT_JUMPER1,
- UPIO_FEAT_JUMPER2,
- UPIO_FEAT_JUMPER3,
- UPIO_FEAT_JUMPER4,
- UPIO_FEAT_JUMPER5,
- UPIO_FEAT_JUMPER6,
- UPIO_FEAT_JUMPER7,
- UPIO_FEAT_JUMPER8,
-
- /* Push buttons */
- UPIO_FEAT_BUTTON1,
- UPIO_FEAT_BUTTON2,
- UPIO_FEAT_BUTTON3,
- UPIO_FEAT_BUTTON4,
- UPIO_FEAT_BUTTON5,
- UPIO_FEAT_BUTTON6,
- UPIO_FEAT_BUTTON7,
- UPIO_FEAT_BUTTON8,
-
- /* General purpose */
- UPIO_FEAT_GENERAL1,
- UPIO_FEAT_GENERAL2,
- UPIO_FEAT_GENERAL3,
- UPIO_FEAT_GENERAL4,
- UPIO_FEAT_GENERAL5,
- UPIO_FEAT_GENERAL6,
- UPIO_FEAT_GENERAL7,
- UPIO_FEAT_GENERAL8,
- UPIO_FEAT_GENERAL9,
- UPIO_FEAT_GENERAL10,
- UPIO_FEAT_GENERAL11,
- UPIO_FEAT_GENERAL12,
- UPIO_FEAT_GENERAL13,
- UPIO_FEAT_GENERAL14,
- UPIO_FEAT_GENERAL15,
- UPIO_FEAT_GENERAL16,
- UPIO_FEAT_GENERAL17,
- UPIO_FEAT_GENERAL18,
- UPIO_FEAT_GENERAL19,
- UPIO_FEAT_GENERAL20,
- UPIO_FEAT_GENERAL21,
- UPIO_FEAT_GENERAL22,
- UPIO_FEAT_GENERAL23,
- UPIO_FEAT_GENERAL24,
- UPIO_FEAT_GENERAL25,
- UPIO_FEAT_GENERAL26,
- UPIO_FEAT_GENERAL27,
- UPIO_FEAT_GENERAL28,
- UPIO_FEAT_GENERAL29,
- UPIO_FEAT_GENERAL30,
- UPIO_FEAT_GENERAL31,
- UPIO_FEAT_GENERAL32,
-
- UPIO_FEAT_IN_HIGH, /* Support for input with interrupt on high signal level.
- */
- UPIO_FEAT_IN_LOW, /* Support for input with interrupt on low signal level. */
- UPIO_FEAT_IN_RISE, /* Support for input with interrupt on rising edge. */
- UPIO_FEAT_IN_FALL /* Support for input with interrupt on falling. */
-
-};
-typedef uint8_t tUPIO_FEATURE;
-
-/* Enumeration of UPIO configurations */
-enum { UPIO_OUT, UPIO_IN, UPIO_IN_EDGE, UPIO_IN_LEVEL, UPIO_NONE };
-typedef uint8_t tUPIO_CONFIG;
-
-/* Enumeration of UPIO types */
-enum {
- UPIO_LED, /* LED */
- UPIO_SWITCH, /* Switch */
- UPIO_JUMPER, /* Jumper */
- UPIO_BUTTON, /* Push-button switch */
- UPIO_GENERAL, /* General purpose I/O */
-
- UPIO_NUMBER_OF_TYPES
-};
-typedef uint8_t tUPIO_TYPE;
-
-/* Enumeration of UPIO states */
-enum { UPIO_OFF, UPIO_ON, UPIO_TOGGLE };
-typedef uint8_t tUPIO_STATE;
-
-enum { UPIO_SW_BANK2, UPIO_SW_BANK3 };
-typedef uint8_t tUPIO_SW_BANK;
-
-/* Jumper masks */
-#define UPIO_JUMPER1 0x00000001
-#define UPIO_JUMPER2 0x00000002
-#define UPIO_JUMPER3 0x00000004
-#define UPIO_JUMPER4 0x00000008
-#define UPIO_JUMPER5 0x00000010
-#define UPIO_JUMPER6 0x00000020
-#define UPIO_JUMPER7 0x00000040
-#define UPIO_JUMPER8 0x00000080
-
-/* General purpose i/o masks */
-#define UPIO_GENERAL1 0x00000001
-#define UPIO_GENERAL2 0x00000002
-#define UPIO_GENERAL3 0x00000004
-#define UPIO_GENERAL4 0x00000008
-#define UPIO_GENERAL5 0x00000010
-#define UPIO_GENERAL6 0x00000020
-#define UPIO_GENERAL7 0x00000040
-#define UPIO_GENERAL8 0x00000080
-#define UPIO_GENERAL9 0x00000100
-#define UPIO_GENERAL10 0x00000200
-#define UPIO_GENERAL11 0x00000400
-#define UPIO_GENERAL12 0x00000800
-#define UPIO_GENERAL13 0x00001000
-#define UPIO_GENERAL14 0x00002000
-#define UPIO_GENERAL15 0x00004000
-#define UPIO_GENERAL16 0x00008000
-#define UPIO_GENERAL17 0x00010000
-#define UPIO_GENERAL18 0x00020000
-#define UPIO_GENERAL19 0x00040000
-#define UPIO_GENERAL20 0x00080000
-#define UPIO_GENERAL21 0x00100000
-#define UPIO_GENERAL22 0x00200000
-#define UPIO_GENERAL23 0x00400000
-#define UPIO_GENERAL24 0x00800000
-#define UPIO_GENERAL25 0x01000000
-#define UPIO_GENERAL26 0x02000000
-#define UPIO_GENERAL27 0x04000000
-#define UPIO_GENERAL28 0x08000000
-#define UPIO_GENERAL29 0x10000000
-#define UPIO_GENERAL30 0x20000000
-#define UPIO_GENERAL31 0x40000000
-#define UPIO_GENERAL32 0x80000000
-
-typedef uint32_t tUPIO;
-
-/* LED masks */
-#define UPIO_LED1 0x00000001
-#define UPIO_LED2 0x00000002
-#define UPIO_LED3 0x00000004
-#define UPIO_LED4 0x00000008
-#define UPIO_LED5 0x00000010
-#define UPIO_LED6 0x00000020
-#define UPIO_LED7 0x00000040
-#define UPIO_LED8 0x00000080
-
-#define UPIO_LED_ALL \
- (UPIO_LED1 | UPIO_LED2 | UPIO_LED3 | UPIO_LED4 | UPIO_LED5 | UPIO_LED6 | \
- UPIO_LED7 | UPIO_LED8)
-
-/* Switch masks */
-#define UPIO_SWITCH1 0x00000001
-#define UPIO_SWITCH2 0x00000002
-#define UPIO_SWITCH3 0x00000004
-#define UPIO_SWITCH4 0x00000008
-#define UPIO_SWITCH5 0x00000010
-#define UPIO_SWITCH6 0x00000020
-#define UPIO_SWITCH7 0x00000040
-#define UPIO_SWITCH8 0x00000080
-#define UPIO_SWITCH9 0x00000100
-#define UPIO_SWITCH10 0x00000200
-#define UPIO_SWITCH11 0x00000400
-#define UPIO_SWITCH12 0x00000800
-#define UPIO_SWITCH13 0x00001000
-#define UPIO_SWITCH14 0x00002000
-#define UPIO_SWITCH15 0x00004000
-#define UPIO_SWITCH16 0x00008000
-
-/* Push button masks */
-#define UPIO_BUTTON1 0x00000001
-#define UPIO_BUTTON2 0x00000002
-#define UPIO_BUTTON3 0x00000004
-#define UPIO_BUTTON4 0x00000008
-#define UPIO_BUTTON5 0x00000010
-#define UPIO_BUTTON6 0x00000020
-#define UPIO_BUTTON7 0x00000040
-#define UPIO_BUTTON8 0x00000080
-
-typedef void(tUPIO_CBACK)(tUPIO_TYPE type, tUPIO pio, tUPIO_STATE state);
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* API functions for UPIO driver */
-
-/*****************************************************************************
-**
-** Function UPIO_Init
-**
-** Description
-** Initialize the GPIO service.
-** This function is typically called once upon system startup.
-**
-** Returns nothing
-**
-*****************************************************************************/
-void UPIO_Init(void* p_cfg);
-
-/*****************************************************************************
-**
-** Function UPIO_Set
-**
-** Description
-** This function sets one or more GPIO devices to the given state.
-** Multiple GPIOs of the same type can be masked together to set more
-** than one GPIO. This function can only be used on types UPIO_LED and
-** UPIO_GENERAL.
-**
-** Input Parameters:
-** type The type of device.
-** pio Indicates the particular GPIOs.
-** state The desired state.
-**
-** Output Parameter:
-** None.
-**
-** Returns:
-** None.
-**
-*****************************************************************************/
-void UPIO_Set(tUPIO_TYPE type, tUPIO pio, tUPIO_STATE state);
-
-/*****************************************************************************
-**
-** Function UPIO_Read
-**
-** Description
-** Read the state of a GPIO. This function can be used for any type of
-** device. Parameter pio can only indicate a single GPIO; multiple GPIOs
-** cannot be masked together.
-**
-** Input Parameters:
-** Type: The type of device.
-** pio: Indicates the particular GUPIO.
-**
-** Output Parameter:
-** None.
-**
-** Returns:
-** State of GPIO (UPIO_ON or UPIO_OFF).
-**
-*****************************************************************************/
-tUPIO_STATE UPIO_Read(tUPIO_TYPE type, tUPIO pio);
-
-/*****************************************************************************
-**
-** Function UPIO_Config
-**
-** Description - Configure GPIOs of type UPIO_GENERAL as inputs or outputs
-** - Configure GPIOs to be polled or interrupt driven
-**
-** Currently only support polled GPIOs.
-**
-** Input Parameters:
-** type The type of device.
-** pio Indicates the particular GPIOs.
-** config
-** cback
-**
-** Output Parameter:
-** None.
-**
-** Returns:
-** None.
-**
-*****************************************************************************/
-void UPIO_Config(tUPIO_TYPE type, tUPIO pio, tUPIO_CONFIG config,
- tUPIO_CBACK* cback);
-
-/*****************************************************************************
-**
-** Function UPIO_Feature
-**
-** Description
-** Checks whether a feature of the pio API is supported
-**
-** Input Parameter:
-** feature The feature to check
-**
-** Output Parameter:
-** None.
-**
-** Returns:
-** TRUE if feature is supported, FALSE if it is not.
-**
-*****************************************************************************/
-bool UPIO_Feature(tUPIO_FEATURE feature);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ifdef UPIO_H */
diff --git a/utils/Android.bp b/utils/Android.bp
new file mode 100644
index 0000000..04053a4
--- /dev/null
+++ b/utils/Android.bp
@@ -0,0 +1,50 @@
+cc_defaults {
+ name: "nfc_utils_defaults",
+ include_dirs: [
+ "system/nfc",
+ ],
+ cflags: [
+ "-Wall",
+ "-Werror",
+ ],
+ target: {
+ linux_glibc: {
+ cflags: ["-D_GNU_SOURCE"],
+ },
+ darwin: {
+ enabled: false,
+ },
+ },
+}
+
+cc_library_static {
+ name: "libnfcutils",
+ defaults: ["nfc_utils_defaults"],
+ export_include_dirs: ["include"],
+ host_supported: true,
+ srcs: [
+ "config.cc",
+ "ringbuffer.cc",
+ ],
+ shared_libs: [
+ "libbase",
+ ],
+}
+
+cc_test {
+ name: "nfc_test_utils",
+ defaults: ["nfc_utils_defaults"],
+ test_suites: ["device-tests"],
+ host_supported: true,
+ srcs: [
+ "test/config_test.cc",
+ "test/ringbuffer_test.cc",
+ ],
+ static_libs: [
+ "libnfcutils",
+ "libgmock",
+ ],
+ shared_libs: [
+ "libbase",
+ ],
+}
diff --git a/utils/config.cc b/utils/config.cc
new file mode 100644
index 0000000..8850c95
--- /dev/null
+++ b/utils/config.cc
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2017 The Android Open Source Project
+ *
+ * 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.
+ */
+#include "config.h"
+
+#include <android-base/file.h>
+#include <android-base/logging.h>
+#include <android-base/parseint.h>
+#include <android-base/strings.h>
+
+using namespace ::std;
+using namespace ::android::base;
+
+namespace {
+
+bool parseBytesString(std::string in, std::vector<uint8_t>& out) {
+ vector<string> values = Split(in, ":");
+ if (values.size() == 0) return false;
+ for (string value : values) {
+ if (value.length() != 2) return false;
+ uint8_t tmp = 0;
+ string hexified = "0x";
+ hexified.append(value);
+ if (!ParseUint(hexified.c_str(), &tmp)) return false;
+ out.push_back(tmp);
+ }
+ return true;
+}
+
+} // namespace
+
+ConfigValue::ConfigValue() {}
+
+ConfigValue::ConfigValue(std::string value) {
+ // Don't allow empty strings
+ CHECK(!(value.empty()));
+ type_ = STRING;
+ value_string_ = value;
+}
+
+ConfigValue::ConfigValue(unsigned value) {
+ type_ = UNSIGNED;
+ value_unsigned_ = value;
+}
+
+ConfigValue::ConfigValue(std::vector<uint8_t> value) {
+ CHECK(!(value.empty()));
+ type_ = BYTES;
+ value_bytes_ = value;
+}
+
+ConfigValue::Type ConfigValue::getType() const { return type_; }
+
+std::string ConfigValue::getString() const {
+ CHECK(type_ == STRING);
+ return value_string_;
+};
+
+unsigned ConfigValue::getUnsigned() const {
+ CHECK(type_ == UNSIGNED);
+ return value_unsigned_;
+};
+
+std::vector<uint8_t> ConfigValue::getBytes() const {
+ CHECK(type_ == BYTES);
+ return value_bytes_;
+};
+
+bool ConfigValue::parseFromString(std::string in) {
+ if (in.length() > 1 && in[0] == '"' && in[in.length() - 1] == '"') {
+ CHECK(in.length() > 2); // Don't allow empty strings
+ type_ = STRING;
+ value_string_ = in.substr(1, in.length() - 2);
+ return true;
+ }
+
+ if (in.length() > 1 && in[0] == '{' && in[in.length() - 1] == '}') {
+ CHECK(in.length() >= 4); // Needs at least one byte
+ type_ = BYTES;
+ return parseBytesString(in.substr(1, in.length() - 2), value_bytes_);
+ }
+
+ unsigned tmp = 0;
+ if (ParseUint(in.c_str(), &tmp)) {
+ type_ = UNSIGNED;
+ value_unsigned_ = tmp;
+ return true;
+ }
+
+ return false;
+}
+
+void ConfigFile::addConfig(const std::string& key, ConfigValue& value) {
+ CHECK(!hasKey(key));
+ values_.emplace(key, value);
+}
+
+void ConfigFile::parseFromFile(const std::string& file_name) {
+ string config;
+ bool config_read = ReadFileToString(file_name, &config);
+ CHECK(config_read);
+ LOG(INFO) << "ConfigFile - Parsing file '" << file_name << "'";
+ parseFromString(config);
+}
+
+void ConfigFile::parseFromString(const std::string& config) {
+ stringstream ss(config);
+ string line;
+ while (getline(ss, line)) {
+ line = Trim(line);
+ if (line.empty()) continue;
+ if (line.at(0) == '#') continue;
+ if (line.at(0) == 0) continue;
+
+ auto search = line.find('=');
+ CHECK(search != string::npos);
+
+ string key(Trim(line.substr(0, search)));
+ string value_string(Trim(line.substr(search + 1, string::npos)));
+
+ ConfigValue value;
+ bool value_parsed = value.parseFromString(value_string);
+ CHECK(value_parsed);
+ addConfig(key, value);
+
+ LOG(INFO) << "ConfigFile - [" << key << "] = " << value_string;
+ }
+}
+
+bool ConfigFile::hasKey(const std::string& key) {
+ return values_.count(key) != 0;
+}
+
+ConfigValue& ConfigFile::getValue(const std::string& key) {
+ auto search = values_.find(key);
+ CHECK(search != values_.end());
+ return search->second;
+}
+
+std::string ConfigFile::getString(const std::string& key) {
+ return getValue(key).getString();
+}
+
+unsigned ConfigFile::getUnsigned(const std::string& key) {
+ return getValue(key).getUnsigned();
+}
+
+std::vector<uint8_t> ConfigFile::getBytes(const std::string& key) {
+ return getValue(key).getBytes();
+}
+
+bool ConfigFile::isEmpty() { return values_.empty(); }
+void ConfigFile::clear() { values_.clear(); }
diff --git a/utils/include/config.h b/utils/include/config.h
new file mode 100644
index 0000000..bb3e0dc
--- /dev/null
+++ b/utils/include/config.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2017 The Android Open Source Project
+ *
+ * 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.
+ */
+#pragma once
+
+#include <map>
+#include <string>
+#include <vector>
+
+class ConfigValue {
+ public:
+ enum Type { UNSIGNED, STRING, BYTES };
+
+ ConfigValue();
+ ConfigValue(std::string);
+ ConfigValue(unsigned);
+ ConfigValue(std::vector<uint8_t>);
+ Type getType() const;
+ std::string getString() const;
+ unsigned getUnsigned() const;
+ std::vector<uint8_t> getBytes() const;
+
+ bool parseFromString(std::string in);
+
+ private:
+ Type type_;
+ std::string value_string_;
+ unsigned value_unsigned_;
+ std::vector<uint8_t> value_bytes_;
+};
+
+class ConfigFile {
+ public:
+ void parseFromFile(const std::string& file_name);
+ void parseFromString(const std::string& config);
+ void addConfig(const std::string& config, ConfigValue& value);
+
+ bool hasKey(const std::string& key);
+ std::string getString(const std::string& key);
+ unsigned getUnsigned(const std::string& key);
+ std::vector<uint8_t> getBytes(const std::string& key);
+
+ bool isEmpty();
+ void clear();
+
+ private:
+ ConfigValue& getValue(const std::string& key);
+
+ std::map<std::string, ConfigValue> values_;
+};
diff --git a/src/include/ringbuffer.h b/utils/include/ringbuffer.h
similarity index 100%
rename from src/include/ringbuffer.h
rename to utils/include/ringbuffer.h
diff --git a/src/adaptation/ringbuffer.cc b/utils/ringbuffer.cc
similarity index 100%
rename from src/adaptation/ringbuffer.cc
rename to utils/ringbuffer.cc
diff --git a/utils/test/config_test.cc b/utils/test/config_test.cc
new file mode 100644
index 0000000..b2fde71
--- /dev/null
+++ b/utils/test/config_test.cc
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2017 The Android Open Source Project
+ *
+ * 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.
+ */
+#include <gtest/gtest.h>
+
+#include <config.h>
+
+namespace {
+const char SIMPLE_CONFIG_FILE[] = "/data/local/tmp/test_config.conf";
+const char SIMPLE_CONFIG[] =
+ "# Simple config file test\n\
+STRING_VALUE=\"Hello World!\"\n\
+#COMMENTED_OUT_VALUE=1\n\
+NUM_VALUE=42\n\
+BYTES_VALUE={0A:0b:0C:fF:00}\n";
+
+const char INVALID_CONFIG1[] =
+ "# This is an invalid config\n\
+# Config values must contain an = sign\n\
+TEST:1";
+
+const char INVALID_CONFIG2[] =
+ "# This is an invalid config\n\
+# Byte arrays must contain at least one value\n\
+TEST={}";
+
+const char INVALID_CONFIG3[] =
+ "# This is an invalid config\n\
+# String values cannot be empty\n\
+TEST=\"\"";
+
+const char INVALID_CONFIG4[] =
+ "# This is an invalid config\n\
+# Multiple config entries with the same key\n\
+TEST=1\n\
+TEST=2";
+
+const char INVALID_CONFIG5[] =
+ "# This is an invalid config\n\
+# Byte value width incorrect\n\
+BYTES_VALUE={0A:0b:0C:1:00}\n";
+} // namespace
+
+class ConfigTestFromFile : public ::testing::Test {
+ protected:
+ void SetUp() override {
+ FILE* fp = fopen(SIMPLE_CONFIG_FILE, "wt");
+ fwrite(SIMPLE_CONFIG, 1, sizeof(SIMPLE_CONFIG), fp);
+ fclose(fp);
+ }
+};
+
+TEST(ConfigTestFromString, test_simple_config) {
+ ConfigFile config;
+ config.parseFromString(SIMPLE_CONFIG);
+ EXPECT_FALSE(config.hasKey("UNKNOWN_VALUE"));
+ EXPECT_FALSE(config.hasKey("COMMENTED_OUT_VALUE"));
+ EXPECT_TRUE(config.hasKey("NUM_VALUE"));
+ EXPECT_TRUE(config.hasKey("STRING_VALUE"));
+ EXPECT_TRUE(config.hasKey("BYTES_VALUE"));
+}
+
+TEST(ConfigTestFromString, test_simple_values) {
+ ConfigFile config;
+ config.parseFromString(SIMPLE_CONFIG);
+ EXPECT_EQ(config.getUnsigned("NUM_VALUE"), 42u);
+ EXPECT_EQ(config.getString("STRING_VALUE"), "Hello World!");
+ auto bytes = config.getBytes("BYTES_VALUE");
+ EXPECT_EQ(bytes.size(), 5u);
+ EXPECT_EQ(bytes[0], 10);
+ EXPECT_EQ(bytes[1], 11);
+ EXPECT_EQ(bytes[2], 12);
+ EXPECT_EQ(bytes[3], 255);
+ EXPECT_EQ(bytes[4], 0);
+}
+
+TEST(ConfigTestFromString, test_invalid_configs) {
+ ConfigFile config1;
+ EXPECT_DEATH(config1.parseFromString(INVALID_CONFIG1), "");
+ ConfigFile config2;
+ EXPECT_DEATH(config2.parseFromString(INVALID_CONFIG2), "");
+ ConfigFile config3;
+ EXPECT_DEATH(config3.parseFromString(INVALID_CONFIG3), "");
+ ConfigFile config4;
+ EXPECT_DEATH(config4.parseFromString(INVALID_CONFIG4), "");
+ ConfigFile config5;
+ EXPECT_DEATH(config5.parseFromString(INVALID_CONFIG5), "");
+}
+
+TEST(ConfigTestFromString, test_clear) {
+ ConfigFile config;
+ EXPECT_FALSE(config.hasKey("NUM_VALUE"));
+ config.parseFromString(SIMPLE_CONFIG);
+ EXPECT_TRUE(config.hasKey("NUM_VALUE"));
+ EXPECT_EQ(config.getUnsigned("NUM_VALUE"), 42u);
+ config.clear();
+ EXPECT_FALSE(config.hasKey("NUM_VALUE"));
+ EXPECT_DEATH(config.getUnsigned("NUM_VALUE"), "");
+}
+
+TEST(ConfigTestFromString, test_isEmpty) {
+ ConfigFile config;
+ EXPECT_TRUE(config.isEmpty());
+ config.parseFromString(SIMPLE_CONFIG);
+ EXPECT_FALSE(config.isEmpty());
+ config.clear();
+ EXPECT_TRUE(config.isEmpty());
+}
+
+TEST_F(ConfigTestFromFile, test_file_based_config) {
+ ConfigFile config;
+ config.parseFromFile(SIMPLE_CONFIG_FILE);
+ EXPECT_FALSE(config.hasKey("UNKNOWN_VALUE"));
+ EXPECT_EQ(config.getUnsigned("NUM_VALUE"), 42u);
+ EXPECT_EQ(config.getString("STRING_VALUE"), "Hello World!");
+ auto bytes = config.getBytes("BYTES_VALUE");
+ EXPECT_EQ(bytes.size(), 5u);
+ EXPECT_EQ(bytes[0], 10);
+ EXPECT_EQ(bytes[1], 11);
+ EXPECT_EQ(bytes[2], 12);
+ EXPECT_EQ(bytes[3], 255);
+ EXPECT_EQ(bytes[4], 0);
+}
diff --git a/utils/test/ringbuffer_test.cc b/utils/test/ringbuffer_test.cc
new file mode 100644
index 0000000..bebf8a2
--- /dev/null
+++ b/utils/test/ringbuffer_test.cc
@@ -0,0 +1,138 @@
+#include <gtest/gtest.h>
+
+#include <ringbuffer.h>
+
+TEST(RingbufferTest, test_new_simple) {
+ ringbuffer_t* rb = ringbuffer_init(4096);
+ ASSERT_TRUE(rb != NULL);
+ EXPECT_EQ((size_t)4096, ringbuffer_available(rb));
+ EXPECT_EQ((size_t)0, ringbuffer_size(rb));
+ ringbuffer_free(rb);
+}
+
+TEST(RingbufferTest, test_insert_basic) {
+ ringbuffer_t* rb = ringbuffer_init(16);
+
+ uint8_t buffer[10] = {0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0x0A};
+ ringbuffer_insert(rb, buffer, 10);
+ EXPECT_EQ((size_t)10, ringbuffer_size(rb));
+ EXPECT_EQ((size_t)6, ringbuffer_available(rb));
+
+ uint8_t peek[10] = {0};
+ size_t peeked = ringbuffer_peek(rb, 0, peek, 10);
+ EXPECT_EQ((size_t)10, ringbuffer_size(rb)); // Ensure size doesn't change
+ EXPECT_EQ((size_t)6, ringbuffer_available(rb));
+ EXPECT_EQ((size_t)10, peeked);
+ ASSERT_TRUE(0 == memcmp(buffer, peek, peeked));
+
+ ringbuffer_free(rb);
+}
+
+TEST(RingbufferTest, test_insert_full) {
+ ringbuffer_t* rb = ringbuffer_init(5);
+
+ uint8_t aa[] = {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA};
+ uint8_t bb[] = {0xBB, 0xBB, 0xBB, 0xBB, 0xBB};
+ uint8_t peek[5] = {0};
+
+ size_t added = ringbuffer_insert(rb, aa, 7);
+ EXPECT_EQ((size_t)5, added);
+ EXPECT_EQ((size_t)0, ringbuffer_available(rb));
+ EXPECT_EQ((size_t)5, ringbuffer_size(rb));
+
+ added = ringbuffer_insert(rb, bb, 5);
+ EXPECT_EQ((size_t)0, added);
+ EXPECT_EQ((size_t)0, ringbuffer_available(rb));
+ EXPECT_EQ((size_t)5, ringbuffer_size(rb));
+
+ size_t peeked = ringbuffer_peek(rb, 0, peek, 5);
+ EXPECT_EQ((size_t)5, peeked);
+ EXPECT_EQ((size_t)0, ringbuffer_available(rb));
+ EXPECT_EQ((size_t)5, ringbuffer_size(rb));
+
+ ASSERT_TRUE(0 == memcmp(aa, peek, peeked));
+
+ ringbuffer_free(rb);
+}
+
+TEST(RingbufferTest, test_multi_insert_delete) {
+ ringbuffer_t* rb = ringbuffer_init(16);
+ EXPECT_EQ((size_t)16, ringbuffer_available(rb));
+ EXPECT_EQ((size_t)0, ringbuffer_size(rb));
+
+ // Insert some bytes
+
+ uint8_t aa[] = {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA};
+ size_t added = ringbuffer_insert(rb, aa, sizeof(aa));
+ EXPECT_EQ((size_t)8, added);
+ EXPECT_EQ((size_t)8, ringbuffer_available(rb));
+ EXPECT_EQ((size_t)8, ringbuffer_size(rb));
+
+ uint8_t bb[] = {0xBB, 0xBB, 0xBB, 0xBB, 0xBB};
+ ringbuffer_insert(rb, bb, sizeof(bb));
+ EXPECT_EQ((size_t)3, ringbuffer_available(rb));
+ EXPECT_EQ((size_t)13, ringbuffer_size(rb));
+
+ uint8_t content[] = {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB};
+ uint8_t peek[16] = {0};
+ size_t peeked = ringbuffer_peek(rb, 0, peek, 16);
+ EXPECT_EQ((size_t)13, peeked);
+ ASSERT_TRUE(0 == memcmp(content, peek, peeked));
+
+ // Delete some bytes
+
+ ringbuffer_delete(rb, sizeof(aa));
+ EXPECT_EQ((size_t)11, ringbuffer_available(rb));
+ EXPECT_EQ((size_t)5, ringbuffer_size(rb));
+
+ // Add some more to wrap buffer
+
+ uint8_t cc[] = {0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC};
+ ringbuffer_insert(rb, cc, sizeof(cc));
+ EXPECT_EQ((size_t)2, ringbuffer_available(rb));
+ EXPECT_EQ((size_t)14, ringbuffer_size(rb));
+
+ uint8_t content2[] = {0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xCC, 0xCC};
+ peeked = ringbuffer_peek(rb, 0, peek, 7);
+ EXPECT_EQ((size_t)7, peeked);
+ ASSERT_TRUE(0 == memcmp(content2, peek, peeked));
+
+ // Pop buffer
+
+ memset(peek, 0, 16);
+ size_t popped = ringbuffer_pop(rb, peek, 7);
+ EXPECT_EQ((size_t)7, popped);
+ EXPECT_EQ((size_t)9, ringbuffer_available(rb));
+ ASSERT_TRUE(0 == memcmp(content2, peek, peeked));
+
+ // Add more again to check head motion
+
+ uint8_t dd[] = {0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD};
+ added = ringbuffer_insert(rb, dd, sizeof(dd));
+ EXPECT_EQ((size_t)8, added);
+ EXPECT_EQ((size_t)1, ringbuffer_available(rb));
+
+ // Delete everything
+
+ ringbuffer_delete(rb, 16);
+ EXPECT_EQ((size_t)16, ringbuffer_available(rb));
+ EXPECT_EQ((size_t)0, ringbuffer_size(rb));
+
+ // Add small token
+
+ uint8_t ae[] = {0xAE, 0xAE, 0xAE};
+ added = ringbuffer_insert(rb, ae, sizeof(ae));
+ EXPECT_EQ((size_t)13, ringbuffer_available(rb));
+
+ // Get everything
+
+ popped = ringbuffer_pop(rb, peek, 16);
+ EXPECT_EQ(added, popped);
+ EXPECT_EQ((size_t)16, ringbuffer_available(rb));
+ EXPECT_EQ((size_t)0, ringbuffer_size(rb));
+ ASSERT_TRUE(0 == memcmp(ae, peek, popped));
+
+ ringbuffer_free(rb);
+}