summaryrefslogtreecommitdiffstats
path: root/src/phLlcNfc.c
diff options
context:
space:
mode:
authorDaniel Tomas <dtomas.nxp@gmail.com>2011-05-26 15:52:17 +0200
committerNick Pelly <npelly@google.com>2011-06-28 14:30:24 -0700
commitb313c3d09c64c31439332e88e0aca676ae1858b5 (patch)
tree0529b38fd67f61dfae286e968a9e81fa57f4da1d /src/phLlcNfc.c
parent8d4d6a13c4c3bf4e966d12297cc9a9f6cf9d42a8 (diff)
downloadexternal_libnfc-nxp-b313c3d09c64c31439332e88e0aca676ae1858b5.zip
external_libnfc-nxp-b313c3d09c64c31439332e88e0aca676ae1858b5.tar.gz
external_libnfc-nxp-b313c3d09c64c31439332e88e0aca676ae1858b5.tar.bz2
Patch to add the windowing support in the libnfc
This patch enables windowing of LLC packets send from chipset to host. The host will now wait for up to 4 LLC packets from the chipset before sending an ACK (S-Frame RR). Change-Id: I6a70e1d780847a104e3ec8e403593a69e222aec9
Diffstat (limited to 'src/phLlcNfc.c')
-rw-r--r--src/phLlcNfc.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/src/phLlcNfc.c b/src/phLlcNfc.c
index af0a3a1..36b442b 100644
--- a/src/phLlcNfc.c
+++ b/src/phLlcNfc.c
@@ -228,7 +228,7 @@ phLlcNfc_Init (
{
NFCSTATUS result = NFCSTATUS_SUCCESS;
phLlcNfc_Context_t *ps_llc_ctxt = (phLlcNfc_Context_t*)pContext;
- phLlcNfc_LlcPacket_t *ps_packet_info = NULL;
+ phLlcNfc_LlcPacket_t s_packet_info;
PH_LLCNFC_PRINT("Llc Init called\n");
if ((NULL == ps_llc_ctxt) || (NULL == pLinkInfo))
@@ -239,8 +239,6 @@ phLlcNfc_Init (
else
{
/* Initialisation */
- ps_packet_info = &(ps_llc_ctxt->s_frameinfo.s_llcpacket);
-
ps_llc_ctxt->phwinfo = pLinkInfo;
/* Call the internal frame initialise */
phLlcNfc_H_Frame_Init(ps_llc_ctxt);
@@ -258,17 +256,17 @@ phLlcNfc_Init (
phLlcNfc_CreateTimers();
/* Create a U frame */
- result = phLlcNfc_H_CreateUFramePayload(ps_llc_ctxt,
- ps_packet_info,
- &(ps_packet_info->llcbuf_len),
+ result = phLlcNfc_H_CreateUFramePayload(ps_llc_ctxt,
+ &s_packet_info,
+ &(s_packet_info.llcbuf_len),
phLlcNfc_e_rset);
}
if (NFCSTATUS_SUCCESS == result)
{
/* Call DAL write */
result = phLlcNfc_Interface_Write(ps_llc_ctxt,
- (uint8_t*)&(ps_packet_info->s_llcbuf),
- (uint32_t)ps_packet_info->llcbuf_len);
+ (uint8_t*)&(s_packet_info.s_llcbuf),
+ (uint32_t)s_packet_info.llcbuf_len);
}
if (NFCSTATUS_PENDING == result)
{
@@ -364,8 +362,7 @@ phLlcNfc_Send (
NFCSTATUS result = NFCSTATUS_SUCCESS;
phLlcNfc_Context_t *ps_llc_ctxt = (phLlcNfc_Context_t*)pContext;
phLlcNfc_Frame_t *ps_frame_info = NULL;
- phLlcNfc_LlcPacket_t *ps_packet_info = NULL,
- s_packet_info;
+ phLlcNfc_LlcPacket_t s_packet_info;
phLlcNfc_StoreIFrame_t *ps_store_frame = NULL;
#if 0
uint8_t count = 1;
@@ -404,7 +401,6 @@ phLlcNfc_Send (
&s_packet_info,
pLlcBuf, (uint8_t)llcBufLength);
- ps_packet_info = &(ps_frame_info->s_llcpacket);
/* Store the I frame in the send list */
(void)phLlcNfc_H_StoreIFrame (ps_store_frame, s_packet_info);
@@ -423,13 +419,11 @@ phLlcNfc_Send (
#endif /* #ifdef CTRL_WIN_SIZE_COUNT */
{
- (void)memcpy ((void *)ps_packet_info, (void *)&s_packet_info,
- sizeof(phLlcNfc_LlcPacket_t));
/* Call write to the below layer, only if previous write
is completed */
result = phLlcNfc_Interface_Write (ps_llc_ctxt,
- (uint8_t *)&(ps_packet_info->s_llcbuf),
- (uint32_t)ps_packet_info->llcbuf_len);
+ (uint8_t *)&(s_packet_info.s_llcbuf),
+ (uint32_t)s_packet_info.llcbuf_len);
if ((NFCSTATUS_PENDING == result) ||
(NFCSTATUS_BUSY == PHNFCSTATUS (result)))