static pphDal4Nfc_SContext_t pgDalContext;
static phHal_sHwReference_t * pgDalHwContext;
static sem_t nfc_read_sem;
+static int low_level_traces;
#ifdef USE_MQ_MESSAGE_QUEUE
static phDal4Nfc_DeferredCall_Msg_t nDeferedMessage;
static mqd_t nDeferedCallMessageQueueId;
DAL API IMPLEMENTATION
------------------------------------------------------------------------------------*/
+static void refresh_low_level_traces() {
+#ifdef LOW_LEVEL_TRACES
+ low_level_traces = 1;
+ return;
+#else
+
+#ifdef ANDROID
+ char value[PROPERTY_VALUE_MAX];
+
+ property_get("ro.debuggable", value, "");
+ if (!value[0] || !atoi(value)) {
+ low_level_traces = 0; // user build, do not allow debug
+ return;
+ }
+
+ property_get("debug.nfc.LOW_LEVEL_TRACES", value, "0");
+ if (value[0]) {
+ low_level_traces = atoi(value);
+ return;
+ }
+#endif
+ low_level_traces = 0;
+#endif
+}
+
/*-----------------------------------------------------------------------------
FUNCTION: phDal4Nfc_Register
{
NFCSTATUS result = NFCSTATUS_SUCCESS;
+ // refresh_low_level_traces();
+
if ((NULL != pContext) && (NULL != pHwRef))
{
pContext = pgDalContext;
else
{
static phDal4Nfc_sConfig_t hw_config;
- hw_config.deviceNode = NULL;\r
+ hw_config.deviceNode = NULL;
result = phDal4Nfc_Config(&hw_config, pHwRef );
}
}
return result;
}
-NFCSTATUS phDal4Nfc_ConfigRelease( void *pHwRef)
+NFCSTATUS phDal4Nfc_ConfigRelease(void *pHwRef)
{
NFCSTATUS result = NFCSTATUS_SUCCESS;
/* Register the link callbacks */
memset(&gLinkFunc, 0, sizeof(phDal4Nfc_link_cbk_interface_t));
- switch(PN544_LINK_TYPE_I2C)
+#if 0
+ switch(PN544_LINK_TYPE_I2C)
{
case PN544_LINK_TYPE_UART:
case PN544_LINK_TYPE_USB:
break;
case PN544_LINK_TYPE_I2C:
- {
+ {
+#endif
+
DAL_PRINT("I2C link Config");
/* i2c link interface */
gLinkFunc.init = phDal4Nfc_i2c_initialize;
gLinkFunc.read = phDal4Nfc_i2c_read;
gLinkFunc.write = phDal4Nfc_i2c_write;
gLinkFunc.reset = phDal4Nfc_i2c_reset;
+#if 0
break;
}
-
default:
{
/* Shound not happen : Bad parameter */
return PHNFCSTVAL(CID_NFC_DAL, NFCSTATUS_INVALID_PARAMETER);
}
- }
+}
+#endif
gLinkFunc.init(); /* So that link interface can initialize its internal state */
retstatus = gLinkFunc.open_and_configure(config, phwref);
nDeferedCallMessageQueueId = config->nClientId;
#endif
- usleep(50000);
-
- if(phDal4Nfc_Reset(0) != 0)
- {
- perror("power off is failed !!");
- }
-
- usleep(50000);
-
- if(phDal4Nfc_Reset(1) != 0)
- {
- perror("power on is failed !!");
- }
+// gDalContext.pDev = pn544_dev;
/* Start Read and Write Threads */
if(NFCSTATUS_SUCCESS != phDal4Nfc_StartThreads())
}
gDalContext.hw_valid = TRUE;
+ phDal4Nfc_Reset(1);
+ phDal4Nfc_Reset(0);
+ phDal4Nfc_Reset(1);
return NFCSTATUS_SUCCESS;
}
{
NFCSTATUS retstatus = NFCSTATUS_SUCCESS;
- DAL_DEBUG("phDal4Nfc_Reset: VEN to %d",(int)level);
+ DAL_DEBUG("phDal4Nfc_Reset: VEN to %ld",level);
retstatus = gLinkFunc.reset(level);
PURPOSE: Put the PN544 in download mode, using the GPIO4 pin
-----------------------------------------------------------------------------*/
-NFCSTATUS phDal4Nfc_Download()\r
+NFCSTATUS phDal4Nfc_Download()
{
- NFCSTATUS retstatus = NFCSTATUS_SUCCESS;\r
+ NFCSTATUS retstatus = NFCSTATUS_SUCCESS;
- DAL_DEBUG("phDal4Nfc_Download: GPIO4 to %d",1);\r
+ DAL_DEBUG("phDal4Nfc_Download: GPIO4 to %d",1);
- usleep(10000);\r
- retstatus = phDal4Nfc_Reset(2);\r
-\r
- return retstatus;\r
+ usleep(10000);
+ retstatus = phDal4Nfc_Reset(2);
+
+ return retstatus;
}
-\r
-\r
+
+
/*-----------------------------------------------------------------------------------
DAL INTERNAL IMPLEMENTATION
break;
case PHDAL4NFC_WRITE_MESSAGE:
DAL_PRINT(" Dal deferred write called \n");
-
+#if 0
+ if(low_level_traces)
+ {
+ phOsalNfc_PrintData("SEND", (uint16_t)gReadWriteContext.nNbOfBytesToWrite,
+ gReadWriteContext.pWriteBuffer, low_level_traces);
+ }
+#endif
/* DAL_DEBUG("dalMsg->transactInfo.length : %d\n", dalMsg->transactInfo.length); */
/* Make a Physical WRITE */
/* NOTE: need to usleep(3000) here if the write is for SWP */
usleep(500); /* NXP advise 500us sleep required between I2C writes */
- gReadWriteContext.nNbOfBytesWritten = gLinkFunc.write(gReadWriteContext.pWriteBuffer, gReadWriteContext.nNbOfBytesToWrite);
+ gReadWriteContext.nNbOfBytesWritten = gLinkFunc.write(gReadWriteContext.pWriteBuffer, gReadWriteContext.nNbOfBytesToWrite);
if (gReadWriteContext.nNbOfBytesWritten != gReadWriteContext.nNbOfBytesToWrite)
{
/* controller may be in standby. do it again! */
*/
void phDal4Nfc_DeferredCall(pphDal4Nfc_DeferFuncPointer_t func, void *param)
{
-// int retvalue = 0;
+ int retvalue = 0;
phDal4Nfc_Message_Wrapper_t nDeferedMessageWrapper;
phDal4Nfc_DeferredCall_Msg_t *pDeferedMessage;
static phDal4Nfc_DeferredCall_Msg_t nDeferedMessageRead;