1/*
2 * Copyright (C) 2010-2014 NXP Semiconductors
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17/*
18 *  OSAL header files related to memory, debug, random, semaphore and mutex functions.
19 */
20
21#ifndef PHNFCCOMMON_H
22#define PHNFCCOMMON_H
23
24/*
25************************* Include Files ****************************************
26*/
27
28#include <phNfcStatus.h>
29#include <semaphore.h>
30#include <phOsalNfc_Timer.h>
31#include <pthread.h>
32#include <phDal4Nfc_messageQueueLib.h>
33#include <phNfcCompId.h>
34
35
36#   define FW_DLL_ROOT_DIR "/system/vendor/firmware/"
37#   define FW_DLL_EXTENSION ".so"
38
39#if(NFC_NXP_CHIP_TYPE != PN547C2)
40
41/* Actual FW library name*/
42#define FW_LIB_PATH       FW_DLL_ROOT_DIR "libpn548ad_fw"          FW_DLL_EXTENSION
43/* Restore Currupted PLL Setttings/etc */
44#define PLATFORM_LIB_PATH FW_DLL_ROOT_DIR "libpn548ad_fw_platform" FW_DLL_EXTENSION
45/* Upgrade the public Key */
46#define PKU_LIB_PATH      FW_DLL_ROOT_DIR "libpn548ad_fw_pku"      FW_DLL_EXTENSION
47#else
48/* Actual FW library name*/
49#define FW_LIB_PATH       FW_DLL_ROOT_DIR "libpn547_fw"          FW_DLL_EXTENSION
50/* Restore Currupted PLL Setttings/etc */
51#define PLATFORM_LIB_PATH FW_DLL_ROOT_DIR "libpn547_fw_platform" FW_DLL_EXTENSION
52/* Upgrade the public Key */
53#define PKU_LIB_PATH      FW_DLL_ROOT_DIR "libpn547_fw_pku"      FW_DLL_EXTENSION
54#endif
55
56/* HAL Version number (Updated as per release) */
57#define NXP_MW_VERSION_MAJ  (1U)
58#define NXP_MW_VERSION_MIN  (0U)
59
60/*
61 *****************************************************************
62 ***********  System clock source selection configuration ********
63 *****************************************************************
64 */
65
66#define CLK_SRC_UNDEF      0
67#define CLK_SRC_XTAL       1
68#define CLK_SRC_PLL        2
69#define CLK_SRC_PADDIRECT  3
70
71/*Extern crystal clock source*/
72#define NXP_SYS_CLK_SRC_SEL         CLK_SRC_PLL  /* Use one of CLK_SRC_<value> */
73/*Direct clock*/
74
75/*
76 *****************************************************************
77 ***********  System clock frequency selection configuration ****************
78 * If Clk_Src is set to PLL, make sure to set the Clk_Freq also*
79 *****************************************************************
80 */
81#define CLK_FREQ_UNDEF         0
82#define CLK_FREQ_13MHZ         1
83#define CLK_FREQ_19_2MHZ       2
84#define CLK_FREQ_24MHZ         3
85#define CLK_FREQ_26MHZ         4
86#define CLK_FREQ_38_4MHZ       5
87#define CLK_FREQ_52MHZ         6
88
89#define NXP_SYS_CLK_FREQ_SEL  CLK_FREQ_19_2MHZ /* Set to one of CLK_FREQ_<value> */
90
91#define CLK_TO_CFG_DEF         1
92#define CLK_TO_CFG_MAX         26
93/*
94 *  information to configure OSAL
95 */
96typedef struct phOsalNfc_Config
97{
98    uint8_t *pLogFile; /* Log File Name*/
99    uintptr_t dwCallbackThreadId; /* Client ID to which message is posted */
100}phOsalNfc_Config_t, *pphOsalNfc_Config_t /* Pointer to #phOsalNfc_Config_t */;
101
102
103/*
104 * Deferred call declaration.
105 * This type of API is called from ClientApplication (main thread) to notify
106 * specific callback.
107 */
108typedef  void (*pphOsalNfc_DeferFuncPointer_t) (void*);
109
110
111/*
112 * Deferred message specific info declaration.
113 */
114typedef struct phOsalNfc_DeferedCallInfo
115{
116        pphOsalNfc_DeferFuncPointer_t   pDeferedCall;/* pointer to Deferred callback */
117        void                            *pParam;    /* contains timer message specific details*/
118}phOsalNfc_DeferedCallInfo_t;
119
120
121/*
122 * States in which a OSAL timer exist.
123 */
124typedef enum
125{
126    eTimerIdle = 0,         /* Indicates Initial state of timer */
127    eTimerRunning = 1,      /* Indicate timer state when started */
128    eTimerStopped = 2       /* Indicates timer state when stopped */
129}phOsalNfc_TimerStates_t;   /* Variable representing State of timer */
130
131/*
132 **Timer Handle structure containing details of a timer.
133 */
134typedef struct phOsalNfc_TimerHandle
135{
136    uint32_t TimerId;                                   /* ID of the timer */
137    timer_t hTimerHandle;                               /* Handle of the timer */
138    pphOsalNfc_TimerCallbck_t   Application_callback;   /* Timer callback function to be invoked */
139    void *pContext;                                     /* Parameter to be passed to the callback function */
140    phOsalNfc_TimerStates_t eState;                     /* Timer states */
141    phLibNfc_Message_t tOsalMessage;                    /* Osal Timer message posted on User Thread */
142    phOsalNfc_DeferedCallInfo_t tDeferedCallInfo;       /* Deferred Call structure to Invoke Callback function */
143}phOsalNfc_TimerHandle_t,*pphOsalNfc_TimerHandle_t;     /* Variables for Structure Instance and Structure Ptr */
144
145#endif /*  PHOSALNFC_H  */
146