blob: f653aa9ce01add15c74c46e0f0155b0846cb7d5b [file] [log] [blame]
/*
* Copyright (C) 2012 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.
*/
/*
* Manage listen-mode AID routing to the host.
*/
#pragma once
#include "SyncEvent.h"
#include "NfcJniUtil.h"
#include "RouteDataSet.h"
#include <vector>
extern "C"
{
#include "nfa_api.h"
}
class HostAidRouter
{
public:
/*******************************************************************************
**
** Function: getInstance
**
** Description: Obtain a reference to the singleton object of HostAidRouter
**
** Returns: Reference to HostAidRouter object.
**
*******************************************************************************/
static HostAidRouter& getInstance ();
/*******************************************************************************
**
** Function: initialize
**
** Description: Initialize all resources.
**
** Returns: True if ok.
**
*******************************************************************************/
bool initialize ();
/*******************************************************************************
**
** Function: addPpseRoute
**
** Description: Route Proximity Payment System Environment request
** to the host. This function is called when there is no
** route data.
**
** Returns: True if ok.
**
*******************************************************************************/
bool addPpseRoute ();
/*******************************************************************************
**
** Function: deleteAllRoutes
**
** Description: Delete all AID routes to the host.
**
** Returns: True if ok.
**
*******************************************************************************/
bool deleteAllRoutes ();
/*******************************************************************************
**
** Function: isFeatureEnabled
**
** Description: Is AID-routing-to-host feature enabled?
**
** Returns: True if enabled.
**
*******************************************************************************/
bool isFeatureEnabled () {return mIsFeatureEnabled;};
/*******************************************************************************
**
** Function: startRoute
**
** Description: Begin to route AID request to the host.
** aid: Buffer that contains Application ID
** aidLen: Actual length of the buffer.
**
** Returns: True if ok.
**
*******************************************************************************/
bool startRoute (const UINT8* aid, UINT8 aidLen);
private:
typedef std::vector<tNFA_HANDLE> AidHandleDatabase;
tNFA_HANDLE mTempHandle;
bool mIsFeatureEnabled;
static HostAidRouter sHostAidRouter; //singleton object
RouteDataSet mRouteDataSet; //route data from xml file
SyncEvent mRegisterEvent;
SyncEvent mDeregisterEvent;
AidHandleDatabase mHandleDatabase; //store all AID handles that are registered with the stack
/*******************************************************************************
**
** Function: HostAidRouter
**
** Description: Private constructor to prevent public call.
**
** Returns: None.
**
*******************************************************************************/
HostAidRouter ();
/*******************************************************************************
**
** Function: ~HostAidRouter
**
** Description: Private destructor to prevent public call.
**
** Returns: None.
**
*******************************************************************************/
~HostAidRouter ();
/*******************************************************************************
**
** Function: stackCallback
**
** Description: Receive events from the NFC stack.
**
** Returns: None.
**
*******************************************************************************/
static void stackCallback (UINT8 event, tNFA_CONN_EVT_DATA* eventdata);
};