15d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*
25d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Copyright (C) 2010 NXP Semiconductors
35d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
45d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Licensed under the Apache License, Version 2.0 (the "License");
55d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * you may not use this file except in compliance with the License.
65d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * You may obtain a copy of the License at
75d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
85d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *      http://www.apache.org/licenses/LICENSE-2.0
95d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
105d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Unless required by applicable law or agreed to in writing, software
115d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * distributed under the License is distributed on an "AS IS" BASIS,
125d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * See the License for the specific language governing permissions and
145d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * limitations under the License.
155d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
165d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
175d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*
185d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \file  phOsalNfc.h
195d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \brief OSAL Implementation.
205d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
215d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Project: NFC-FRI 1.1
225d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * $Date: Fri Jun 26 14:41:31 2009 $
235d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * $Author: ing04880 $
245d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * $Revision: 1.21 $
255d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * $Aliases: NFC_FRI1.1_WK926_R28_1,NFC_FRI1.1_WK928_R29_1,NFC_FRI1.1_WK930_R30_1,NFC_FRI1.1_WK934_PREP_1,NFC_FRI1.1_WK934_R31_1,NFC_FRI1.1_WK941_PREP1,NFC_FRI1.1_WK941_PREP2,NFC_FRI1.1_WK941_1,NFC_FRI1.1_WK943_R32_1,NFC_FRI1.1_WK949_PREP1,NFC_FRI1.1_WK943_R32_10,NFC_FRI1.1_WK943_R32_13,NFC_FRI1.1_WK943_R32_14,NFC_FRI1.1_WK1007_R33_1,NFC_FRI1.1_WK1007_R33_4,NFC_FRI1.1_WK1017_PREP1,NFC_FRI1.1_WK1017_R34_1,NFC_FRI1.1_WK1017_R34_2,NFC_FRI1.1_WK1023_R35_1 $
265d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
275d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
285d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#ifndef PHOSALNFC_H
295d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#define PHOSALNFC_H
305d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
315d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
325d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/** \defgroup grp_osal_nfc OSAL Component
335d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
345d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *\note: API listed here encompasses Operating System Abstraction Layer interfaces required to be mapped to underlying OS platforms.
355d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
365d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
375d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phNfcTypes.h>
385d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
395d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#ifdef PH_NFC_CUSTOMINTEGRATION
405d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <phNfcCustomInt.h>
415d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#else
425d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#include <memory.h>
435d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
445d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/**< OSAL Message Type */
455d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#ifdef WIN32
465d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly//#define PH_OSALNFC_MESSAGE_BASE  (WM_USER+0x3FF)
475d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#define PH_OSALNFC_MESSAGE_BASE  PH_LIBNFC_MESSAGE_BASE
485d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#endif
495d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
505d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*!
515d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \ingroup grp_osal_nfc
525d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
535d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * OSAL Message structure contains message specific details like
545d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * message type, message specific data block details, etc.
555d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
565d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly//typedef struct phOsalNfc_Message
575d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly//{
585d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly//    uint32_t eMsgType;/**< Type of the message to be posted*/
595d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly//    void   * pMsgData;/**< Pointer to message specific data block in case any*/
605d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly//    uint16_t Size;/**< Size of the datablock*/
615d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly//} phOsalNfc_Message_t,*pphOsalNfc_Message_t;
625d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellytypedef phLibNfc_Message_t phOsalNfc_Message_t;
635d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellytypedef pphLibNfc_Message_t pphOsalNfc_Message_t;
645d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
655d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*!
665d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \ingroup grp_osal_nfc
675d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
685d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Enum definition contains  supported exception types
695d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly  */
705d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellytypedef enum
715d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly{
725d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phOsalNfc_e_NoMemory,						/**<Memory allocation failed */
735d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phOsalNfc_e_PrecondFailed,					/**<precondition wasn't met */
745d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phOsalNfc_e_InternalErr,					/**<Unrecoverable error */
755d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phOsalNfc_e_UnrecovFirmwareErr,				/**<Unrecoverable firmware error */
765d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phOsalNfc_e_DALerror,						/**<Unrecoverable DAL error */
775d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    phOsalNfc_e_Noerror							/**<No errortype */
785d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly} phOsalNfc_ExceptionType_t ;
795d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
805d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*!
815d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \ingroup grp_osal_nfc
825d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
835d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * OSAL Exception structure containing exception type and reason.
845d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
855d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellytypedef struct phOsalNfc_Exception
865d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly{
875d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   phOsalNfc_ExceptionType_t eExceptionType;
885d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly   uint16_t reason;
895d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly} phOsalNfc_Exception_t;
905d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
915d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#ifdef ANDROID
925d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellyextern phOsalNfc_Exception_t phOsalNfc_Exception;
935d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#endif
945d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
955d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/* OsalNfc Status Type */
965d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
975d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/** \ingroup grp_retval1
985d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    A new semaphore could not be created due to
995d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    a system error. */
1005d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#define NFCSTATUS_SEMAPHORE_CREATION_ERROR                      (0x1010)
1015d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1025d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/** \ingroup grp_retval1
1035d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    The given semaphore could not be released due to
1045d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    a system error or invalid handle. */
1055d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#define NFCSTATUS_SEMAPHORE_PRODUCE_ERROR                       (0x1011)
1065d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1075d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/** \ingroup grp_retval11
1085d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    The given semaphore could not be consumed due to a
1095d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly    system error or invalid handle. */
1105d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#define NFCSTATUS_SEMAPHORE_CONSUME_ERROR                       (0x1012)
1115d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1125d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1135d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*!
1145d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \ingroup grp_osal_nfc
1155d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \brief Raises exception
1165d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1175d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * The program jumps out of the current execution flow, i.e. this function
1185d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * doesn't return.  The given exception contains information on what has
1195d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * happened and how severe the error is.  @warning This function should only be
1205d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * used for exceptional error situations where there is no means to recover.
1215d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1225d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \param[in] eExceptiontype exception type.
1235d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \param[in] reason additional reason value that gives a vendor specific reason
1245d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * code.
1255d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1265d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \retval  None
1275d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
1285d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellyvoid phOsalNfc_RaiseException(phOsalNfc_ExceptionType_t  eExceptiontype,
1295d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                              uint16_t                   reason);
1305d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1315d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*!
1325d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \ingroup grp_osal_nfc
1335d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \brief Output debug trace
1345d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1355d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Outputs trace log of requested size as string
1365d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1375d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \param[in] data Data block.
1385d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \param[in] size buffer size of the data block.
1395d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1405d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \retval None
1415d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
1425d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellyvoid phOsalNfc_DbgTrace(uint8_t data[], uint32_t size);
1435d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1445d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1455d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*!
1465d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \ingroup grp_osal_nfc
1475d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \brief Print string
1485d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1495d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * Outputs given string to debug port.
1505d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1515d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \param[in] pString pointer to buffer content to be displayed.
1525d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1535d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \retval None
1545d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
1555d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellyvoid phOsalNfc_DbgString(const char *pString);
1565d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
157c1f33130d9d2100e6232f8f3c782949c75205be6Daniel Tomas/*!
158c1f33130d9d2100e6232f8f3c782949c75205be6Daniel Tomas * \ingroup grp_osal_nfc
159c1f33130d9d2100e6232f8f3c782949c75205be6Daniel Tomas * \brief Print data buffer
160c1f33130d9d2100e6232f8f3c782949c75205be6Daniel Tomas *
161c1f33130d9d2100e6232f8f3c782949c75205be6Daniel Tomas * Outputs given string to debug port.
162c1f33130d9d2100e6232f8f3c782949c75205be6Daniel Tomas *
163c1f33130d9d2100e6232f8f3c782949c75205be6Daniel Tomas * \param[in] pString pointer to string to be displayed.
164c1f33130d9d2100e6232f8f3c782949c75205be6Daniel Tomas * \param[in] length number of bytes to be displayed.
165c1f33130d9d2100e6232f8f3c782949c75205be6Daniel Tomas * \param[in] pBuffer pointer to data bytes to be displayed.
166c1f33130d9d2100e6232f8f3c782949c75205be6Daniel Tomas *
167c1f33130d9d2100e6232f8f3c782949c75205be6Daniel Tomas * \retval None
168c1f33130d9d2100e6232f8f3c782949c75205be6Daniel Tomas */
1695ea62ad25e2050f543d8e2104f5ffc1bb2c1ef28Nick Pellyvoid phOsalNfc_PrintData(const char *pString, uint32_t length, uint8_t *pBuffer,
1705ea62ad25e2050f543d8e2104f5ffc1bb2c1ef28Nick Pelly        int verbosity);
1715d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1725d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*!
1735d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \ingroup grp_osal_nfc
1745d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \brief Allocates some memory
1755d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1765d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \param[in] Size   Size, in uint8_t, to be allocated
1775d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1785d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \retval NON-NULL value:  The memory was successfully allocated ; the return value points to the allocated memory location
1795d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \retval NULL:            The operation was not successful, certainly because of insufficient resources.
1805d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1815d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
1825d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellyextern void * phOsalNfc_GetMemory(uint32_t Size);
1835d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1845d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1855d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*!
1865d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \ingroup grp_osal_nfc
1875d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \brief This API allows to free already allocated memory.
1885d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \param[in] pMem  Pointer to the memory block to deallocated
1895d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \retval None
1905d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
1915d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellyvoid   phOsalNfc_FreeMemory(void * pMem);
1925d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
1935d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly/*!
1945d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \ingroup grp_osal_nfc
1955d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \brief Compares the values stored in the source memory with the
1965d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * values stored in the destination memory.
1975d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
1985d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \param[in] src   Pointer to the Source Memory
1995d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \param[in] dest  Pointer to the Destination Memory
2005d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \param[in] n     Number of bytes to be compared.
2015d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
2025d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \retval Zero value:        The comparison was successful,
2035d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly                    Both the memory areas contain the identical values.
2045d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly * \retval Non-Zero Value:    The comparison failed, both the memory
2055d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *                  areas are non-identical.
2065d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly *
2075d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly */
2085d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pellyint phOsalNfc_MemCompare(void *src, void *dest, unsigned int n);
2095d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly
2105d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#endif
2115d9927ba30ba449badb9f6df0fbeb4d6aedc6e2aNick Pelly#endif /*  PHOSALNFC_H  */
212